diff --git a/config.org b/config.org index 74370fb..5694c34 100644 --- a/config.org +++ b/config.org @@ -10,6 +10,10 @@ Emacs outshines all other editing software in approximately the same way that th -- Neil Stephenson, /In the Beginning was the Command Line/ (1998) #+end_quote +#+begin_src emacs-lisp :tangle packages.el :exports none +;; -*- no-byte-compile: t; -*- +#+end_src + * Introduction *Hello!* @@ -762,11 +766,7 @@ NODE defaults to the root node." Emacs's runtime and configuration systems are designed to be as flexible as possible, so flexible that it even lets you directly modify the source code of your dependencies. -... Unfortunately, this means that you are now directly modifying the source code of your dependencies. This can get very messy without proper precautions, and while Emacs provides limited tools like the advising system, they don't always have enough flexibility to get the job done. The package =el-patch= exists as a more powerful alternative. - -#+begin_src emacs-lisp :tangle packages.el :exports none -;; -*- no-byte-compile: t; -*- -#+end_src +\dots Unfortunately, this means that you are now directly modifying the source code of your dependencies. This can get very messy without proper precautions, and while Emacs provides limited tools like the advising system, they don't always have enough flexibility to get the job done. The package =el-patch= exists as a more powerful alternative. #+begin_src emacs-lisp :tangle packages.el (package! el-patch) @@ -808,7 +808,7 @@ The package allows you to define /patches/ which modify the definitions of funct Some packages in this config such as =dirvish=, =org-roam=, etc. require certain tools to be in the environment. On a Nix-based system, there are a few different ways to handle this: -1. Put that tool in the actual environment, e.g. in a profile. This makes sense for simple things (=ripgrep=, =sqlite=, etc) but for more opinionated things like a specific version of a compiler it becomes less desirable. +1. Put that tool in the actual environment, e.g. in a profile. This makes sense for simple things (e.g. Linux coreutils), but for more opinionated things like a specific version of a compiler it becomes less desirable. 2. Build the tool and put a symlink to the output somewhere, e.g. in the HOME directory. This avoids polluting the environment, but you still have to deal with an unwieldy symlink that breaks Emacs if you accidentally delete it. This was my approach before coming up with the third option: 3. Build the tool and point Emacs directly to the store path. This is the most automatic solution, but requires the most complex Emacs configuration. @@ -2401,7 +2401,7 @@ This fork generalizes the window numbering system to support indexing windows wi *** Popup Management -With the basic config out of the way, we can implement popup-aware numbering by changing the ~winum-auto-assign-function~. +With the basic config out of the way, we can implement popup-aware numbering by changing the ~winum-auto-assign-function~. We can also set ~winum-display-function~ to provide a nice display format for popup window numbers, in case any popups do show the modeline. #+begin_src emacs-lisp (after! winum @@ -3053,7 +3053,7 @@ The default colors for various elements of =org-modern= don't match with our the *** Emphasis -When marking text for =*emphasis*=, Org mode normally only allows emphasized sections to span 2 lines. This strikes me as needlessly limited, so let's bump up that number to 20 lines. We can also use this variable to modify Org's parser to support sub/superscripts immediately after emphasized text, which is useful. +When marking text for *emphasis​*, Org mode normally only allows emphasized sections to span 2 lines. This strikes me as needlessly limited, so let's bump up that number to 20 lines. We can also use this variable to modify Org's parser to support sub/superscripts immediately after emphasized text, which is useful. #+begin_src emacs-lisp (setq org-emphasis-regexp-components @@ -3468,7 +3468,7 @@ In my use of Org-roam for task management, I divide nodes into a few different c 2. *Goals*, short- or long-term that can be completed; 3. *Tasks*, which are small, one-time and contribute to goals or areas. -Areas are stored as subnodes of the =Areas= file node, and likewise for goals. They also have the =:area:= and =:goal:= tags respectively. A task is a node that is a TODO entry that links to an area or a goal. We can thus check for if a node is a task by checking if the node links to a =:area:= or =:goal:= tagged node. +Areas are typically stored as subnodes of the =Areas= file node, and likewise for goals. They also have the =:area:= and =:goal:= tags respectively. They can also be in other places, in which case they are marked by the property =TASK_TYPE=. A task is a node that is a TODO entry that has an area or goal in its lineage. If one of its parents has a link to an area or goal, this cuts short the lineage check. #+begin_src emacs-lisp (defun ~/org-roam-get-linked-nodes (node tag) @@ -3856,7 +3856,7 @@ The TEMPLATES, if provided, override the list of capture templates (see Org mode has a very nice notation for specifying citations in square brackets, and the package =citar= uses this to implement a useful bibliography system. -Let's start with some configuration. I use [[https://www.zotero.org/][Zotero]] to manage my citations, and when I want to use them in Org mode I export them to a file =library.json= (CSL JSON) in my org directory. +Let's start with some configuration. I use [[https://www.zotero.org/][Zotero]] to manage my citations, and when I want to use them in Org mode I export them to CSL JSON files in my org directory. #+begin_src emacs-lisp (after! org @@ -4203,7 +4203,7 @@ The Doom module is very outdated, so I'll be overriding it. *** Appearance -Operators being in italics looks ugly in this mode too, but due to Idris's more complicated syntax highlighting system we have to do a bit more work than for Haskell. There's also the issue of the semantic highlighting faces, which don't match our theme colors. +Operators being in italics looks ugly in this mode too, but due to Idris's more complicated syntax highlighting system we have to change a few different faces. There's also the issue of the semantic highlighting faces, which don't match our theme colors. #+begin_src emacs-lisp (custom-set-faces!