All of the built-in packages are ensure nil'd
Removed all straight references.
This commit is contained in:
		
							parent
							
								
									a633b22275
								
							
						
					
					
						commit
						c40a8f3420
					
				
					 25 changed files with 196 additions and 150 deletions
				
			
		| 
						 | 
					@ -131,12 +131,7 @@ And if that doesn’t work, then we need to delete all packages installed by bre
 | 
				
			||||||
* Afterwards
 | 
					* Afterwards
 | 
				
			||||||
After Emacs is /kinda/ working, make sure you install *all* the fonts, that is:
 | 
					After Emacs is /kinda/ working, make sure you install *all* the fonts, that is:
 | 
				
			||||||
#+begin_example
 | 
					#+begin_example
 | 
				
			||||||
M-x nerd-icons-install-fonts
 | 
					  M-x nerd-icons-install-fonts
 | 
				
			||||||
#+end_example
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Everything golden?
 | 
					 | 
				
			||||||
#+begin_example
 | 
					 | 
				
			||||||
M-x straight-freeze-versions
 | 
					 | 
				
			||||||
#+end_example
 | 
					#+end_example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Before we can build a Telegram server for [[file:ha-aux-apps.org::*Telega][Telega]], we need to install the /latest/ version:
 | 
					Before we can build a Telegram server for [[file:ha-aux-apps.org::*Telega][Telega]], we need to install the /latest/ version:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@ I’ve crafted my Emacs configuration, I cheekily call /hamacs/, in a literate p
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The advantage to rolling yer own is I tend to  /use/ what I add, leading to less bloat. In reality, this is more fun.
 | 
					The advantage to rolling yer own is I tend to  /use/ what I add, leading to less bloat. In reality, this is more fun.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Using [[https://howardism.org/Technical/Emacs/literate-devops.html][literate programming]] for my Emacs configuration gives me an easy way to /share/ my code. Feel free to steal whatever you find interesting, as sharing makes our community great.  Notice that functions and features I have written begin with =ha-=, but everything else is either /stock Emacs/ or a /package/ I download using [[https://github.com/raxod502/straight.el][straight]] (see [[file:bootstrap.org][bootstrap]] for the details) and configure with [[https://github.com/jwiegley/use-package][use-package]] (see either [[https://ianyepan.github.io/posts/setting-up-use-package/][this introduction]] or [[https://www.emacswiki.org/emacs/UsePackage][this wiki page]] for those details)… meaning most blocks of code should work on its own.
 | 
					Using [[https://howardism.org/Technical/Emacs/literate-devops.html][literate programming]] for my Emacs configuration gives me an easy way to /share/ my code. Feel free to steal whatever you find interesting, as sharing makes our community great.  Notice that functions and features I have written begin with =ha-=, but everything else is either /stock Emacs/ or a /package/ I download using [[https://github.com/progfolio/elpaca][Elpaca]] (see [[file:bootstrap.org][bootstrap]] for the details) and configure with [[https://github.com/jwiegley/use-package][use-package]] (see either [[https://ianyepan.github.io/posts/setting-up-use-package/][this introduction]] or [[https://www.emacswiki.org/emacs/UsePackage][this wiki page]] for those details)… meaning most blocks of code should work on its own.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
I’ve separated my configuration into /chapters/ around particular subjects, applications and programming languages. This feature allows you, dear reader, to jump our to items of interest, but allows me to /selectively load/ individual chapters. For instance, if I’m not doing much with Ruby at work, I can remove that chapter from the list in my [[file:bootstrap.org::*Load the Rest][bootstrap]]. I also don’t load my [[file:ha-display.org][UI configuration]] when I am using the Terminal (doesn’t happen much, actually).
 | 
					I’ve separated my configuration into /chapters/ around particular subjects, applications and programming languages. This feature allows you, dear reader, to jump our to items of interest, but allows me to /selectively load/ individual chapters. For instance, if I’m not doing much with Ruby at work, I can remove that chapter from the list in my [[file:bootstrap.org::*Load the Rest][bootstrap]]. I also don’t load my [[file:ha-display.org][UI configuration]] when I am using the Terminal (doesn’t happen much, actually).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,7 +26,7 @@ To create [[file:~/.emacs.d/init.el][~/.emacs.d/init.el]] which starts the proce
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[file:screenshots/dashboard-small.png]]
 | 
					[[file:screenshots/dashboard-small.png]]
 | 
				
			||||||
** Core Configuration
 | 
					** Core Configuration
 | 
				
			||||||
  - [[file:bootstrap.org][Bootstrap]] :: configures =straight= and loads basic libraries the rest of the code depends on. It then loads the following files in order.
 | 
					  - [[file:bootstrap.org][Bootstrap]] :: configures =elpaca= and loads basic libraries the rest of the code depends on. It then loads the following files in order.
 | 
				
			||||||
  - [[file:ha-config.org][Configuration]] :: contains /most/ of my configuration, setting up my sequence key menus, evil, etc.
 | 
					  - [[file:ha-config.org][Configuration]] :: contains /most/ of my configuration, setting up my sequence key menus, evil, etc.
 | 
				
			||||||
  - [[file:ha-evil.org][Evilness]] :: configuration for using VI, er, ~vim~ keybindings in Emacs.
 | 
					  - [[file:ha-evil.org][Evilness]] :: configuration for using VI, er, ~vim~ keybindings in Emacs.
 | 
				
			||||||
  - [[file:ha-general.org][Leader]] :: using the ~SPC~ to kick off a hierarchical order of functions.
 | 
					  - [[file:ha-general.org][Leader]] :: using the ~SPC~ to kick off a hierarchical order of functions.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,9 +27,7 @@ A literate programming file for bootstraping my Emacs Configuration.
 | 
				
			||||||
* Introduction
 | 
					* Introduction
 | 
				
			||||||
This file contains all the variable definitions and library loading for the other files in my project.
 | 
					This file contains all the variable definitions and library loading for the other files in my project.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
I'm installing everything using the [[https://github.com/raxod502/straight.el#getting-started][straight.el]] for package installation and management. This is initialization code configured in [[file:initialize][initialize]], and calls to =use-package= now accepts a =:straight= parameter that allows me to retrieve special versions of some packages.
 | 
					I'm installing everything using the [[https://github.com/progfolio/elpaca/blob/master/doc/manual.md][elpaca project]] for package installation and management. I configure its initialization code in [[file:initialize][initialize]] script, and calls to =use-package= now /work through it/.
 | 
				
			||||||
 | 
					 | 
				
			||||||
See the details in [[https://dev.to/jkreeftmeijer/emacs-package-management-with-straight-el-and-use-package-3oc8][this essay]].
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Initial Settings
 | 
					* Initial Settings
 | 
				
			||||||
** Garbage Collection Settings
 | 
					** Garbage Collection Settings
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -218,10 +218,10 @@ The crucial parts of this helper function are that we "wash" the result using =a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The functions below depend on [[help:magit-thing-at-point][magit-thing-at-point]], and this depends on the [[https://sr.ht/~pkal/compat/][compat]] library, so let’s grab that stuff:
 | 
					The functions below depend on [[help:magit-thing-at-point][magit-thing-at-point]], and this depends on the [[https://sr.ht/~pkal/compat/][compat]] library, so let’s grab that stuff:
 | 
				
			||||||
#+begin_src emacs-lisp :tangle no
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package compat
 | 
					  (use-package compat)
 | 
				
			||||||
    ;; :straight (:host github :repo "emacs-straight/compat"))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  (use-package magit-section
 | 
					  (use-package magit-section
 | 
				
			||||||
 | 
					    :after compat
 | 
				
			||||||
    :commands magit-thing-at-point)
 | 
					    :commands magit-thing-at-point)
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
Next, let's define our first command basically doing a =git show= for some revision which defaults to the commit or branch at point or queries the user if there's none.
 | 
					Next, let's define our first command basically doing a =git show= for some revision which defaults to the commit or branch at point or queries the user if there's none.
 | 
				
			||||||
| 
						 | 
					@ -315,7 +315,8 @@ Using the [[https://github.com/emacsmirror/gist][gist package]] to write code sn
 | 
				
			||||||
The gist project depends on the [[https://github.com/sigma/gh.el][gh library]]. There seems to be a problem with it.
 | 
					The gist project depends on the [[https://github.com/sigma/gh.el][gh library]]. There seems to be a problem with it.
 | 
				
			||||||
#+begin_src emacs-lisp :tangle no
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package gh
 | 
					  (use-package gh
 | 
				
			||||||
    ;; :straight (:host github :repo "sigma/gh.el"))
 | 
					    ;; :ensure (:host github :repo "sigma/gh.el")
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
** Forge
 | 
					** Forge
 | 
				
			||||||
| 
						 | 
					@ -413,6 +414,7 @@ Web pages look pretty good with EWW, but I'm having difficulty getting it to ren
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package eww
 | 
					  (use-package eww
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
    (setq browse-url-browser-function 'eww-browse-url
 | 
					    (setq browse-url-browser-function 'eww-browse-url
 | 
				
			||||||
          browse-url-secondary-browser-function 'browse-url-default-browser
 | 
					          browse-url-secondary-browser-function 'browse-url-default-browser
 | 
				
			||||||
| 
						 | 
					@ -484,6 +486,7 @@ Web pages look pretty good with EWW, but I'm having difficulty getting it to ren
 | 
				
			||||||
This function allows Imenu to offer HTML headings in EWW buffers, helpful for navigating long, technical documents.
 | 
					This function allows Imenu to offer HTML headings in EWW buffers, helpful for navigating long, technical documents.
 | 
				
			||||||
#+begin_src emacs-lisp :tangle no
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package eww
 | 
					  (use-package eww
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (defun unpackaged/imenu-eww-headings ()
 | 
					    (defun unpackaged/imenu-eww-headings ()
 | 
				
			||||||
      "Return alist of HTML headings in current EWW buffer for Imenu.
 | 
					      "Return alist of HTML headings in current EWW buffer for Imenu.
 | 
				
			||||||
| 
						 | 
					@ -511,7 +514,7 @@ Make my EWW browsers /look/ like an Org file with the [[https://github.com/cheny
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package shrface
 | 
					  (use-package shrface
 | 
				
			||||||
    ;; :straight (:host github :repo "chenyanming/shrface")
 | 
					    ;; :ensure (:host github :repo "chenyanming/shrface")
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (shrface-basic)
 | 
					    (shrface-basic)
 | 
				
			||||||
    ;; (shrface-trial)
 | 
					    ;; (shrface-trial)
 | 
				
			||||||
| 
						 | 
					@ -529,6 +532,7 @@ The following connection to EWW throws errors now. Hrm.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp :tangle no
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package eww
 | 
					  (use-package eww
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
    :after shrface
 | 
					    :after shrface
 | 
				
			||||||
    :hook (eww-after-render #'shrface-mode))
 | 
					    :hook (eww-after-render #'shrface-mode))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
| 
						 | 
					@ -646,18 +650,17 @@ Instead I use Emacs' built-in directory lister (which accepts the standard, =dir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package ls-lisp
 | 
					  (use-package ls-lisp
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (setq ls-lisp-use-insert-directory-program nil
 | 
					    (setq ls-lisp-use-insert-directory-program nil
 | 
				
			||||||
          dired-listing-switches
 | 
					          dired-listing-switches
 | 
				
			||||||
          "-l --almost-all --human-readable --group-directories-first --no-group"))
 | 
					          "-l --almost-all --human-readable --group-directories-first --no-group"))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
And [[https://www.masteringemacs.org/article/dired-shell-commands-find-xargs-replacement][this article by Mickey Petersen]] convinced me to turn on the built-in =dired-x= (just have to tell [[file:bootstrap.org::*Introduction][straight]] that knowledge):
 | 
					And [[https://www.masteringemacs.org/article/dired-shell-commands-find-xargs-replacement][this article by Mickey Petersen]] convinced me to turn on the built-in =dired-x=:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package dired-x
 | 
					  (use-package dired-x :ensure nil)
 | 
				
			||||||
    ;; :straight (:type built-in))
 | 
					 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The advantage of =dired-x= is the ability to have [[https://www.emacswiki.org/emacs/DiredExtra#Dired_X][shell command guessing]] when selecting one or more files, and running a shell command on them with ~!~ or ~&~.
 | 
					The advantage of =dired-x= is the ability to have [[https://www.emacswiki.org/emacs/DiredExtra#Dired_X][shell command guessing]] when selecting one or more files, and running a shell command on them with ~!~ or ~&~.
 | 
				
			||||||
| 
						 | 
					@ -671,7 +674,7 @@ The [[https://github.com/alexluigit/dirvish][dirvish]] project aims to make a pr
 | 
				
			||||||
I’m beginning with dirvish to use the [[https://github.com/alexluigit/dirvish/blob/main/docs/CUSTOMIZING.org][sample configuration]] and change it:
 | 
					I’m beginning with dirvish to use the [[https://github.com/alexluigit/dirvish/blob/main/docs/CUSTOMIZING.org][sample configuration]] and change it:
 | 
				
			||||||
#+begin_src emacs-lisp :tangle no
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package dirvish
 | 
					  (use-package dirvish
 | 
				
			||||||
    ;; :straight (:host github :repo "alexluigit/dirvish")
 | 
					    ;; :ensure (:host github :repo "alexluigit/dirvish")
 | 
				
			||||||
    :init (dirvish-override-dired-mode)
 | 
					    :init (dirvish-override-dired-mode)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    :custom
 | 
					    :custom
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,7 +31,7 @@ The following applications are not needed. I alternate between trying to /stay i
 | 
				
			||||||
Glad to see the 2FA feature is working on the [[https://codeberg.org/martianh/mastodon.el][mastodon.el]] project, and even more glad to see the great birdland diaspora arrive in the land of the toots.
 | 
					Glad to see the 2FA feature is working on the [[https://codeberg.org/martianh/mastodon.el][mastodon.el]] project, and even more glad to see the great birdland diaspora arrive in the land of the toots.
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package mastodon
 | 
					  (use-package mastodon
 | 
				
			||||||
    ;; :straight (:host codeberg :repo "martianh/mastodon.el")
 | 
					    ;; :ensure (:host codeberg :repo "martianh/mastodon.el")
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
    (setq mastodon-instance-url "https://pdx.social"
 | 
					    (setq mastodon-instance-url "https://pdx.social"
 | 
				
			||||||
          mastodon-active-user "howard"))
 | 
					          mastodon-active-user "howard"))
 | 
				
			||||||
| 
						 | 
					@ -95,7 +95,7 @@ Let’s turn on non-fixed-width fonts to make everything easier to read:
 | 
				
			||||||
Yet another encrypted chat/VoIP client-server, but unlike Signal and Telegram, [[matrix.org][Matrix]] is act ually open source. In other words, a project for nerds. We’ll be using Alphapapa’s latest [[https://github.com/alphapapa/ement.el][ement]] project.
 | 
					Yet another encrypted chat/VoIP client-server, but unlike Signal and Telegram, [[matrix.org][Matrix]] is act ually open source. In other words, a project for nerds. We’ll be using Alphapapa’s latest [[https://github.com/alphapapa/ement.el][ement]] project.
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package ement
 | 
					  (use-package ement
 | 
				
			||||||
    ;; :straight (:host github :repo "alphapapa/ement.el")
 | 
					    ;; :ensure (:host github :repo "alphapapa/ement.el")
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (major-mode-hydra-define ement-room-mode (:quit-key "q")
 | 
					    (major-mode-hydra-define ement-room-mode (:quit-key "q")
 | 
				
			||||||
      ("Send"
 | 
					      ("Send"
 | 
				
			||||||
| 
						 | 
					@ -189,7 +189,7 @@ Been working on my [[https://gitlab.com/howardabrams/emacs-rpgdm][RPG DM project
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (when (f-directory? "~/src/emacs-rpgdm")
 | 
					  (when (f-directory? "~/src/emacs-rpgdm")
 | 
				
			||||||
    (use-package rpgdm
 | 
					    (use-package rpgdm
 | 
				
			||||||
      ;; :straight (:local-repo "~/src/emacs-rpgdm")
 | 
					      :load-path "~/src/emacs-rpgdm"
 | 
				
			||||||
      :commands (rpgdm-mode rpgdm-tables-load)
 | 
					      :commands (rpgdm-mode rpgdm-tables-load)
 | 
				
			||||||
      :init (setq rpgdm-base (expand-file-name "~/src/emacs-rpgdm"))
 | 
					      :init (setq rpgdm-base (expand-file-name "~/src/emacs-rpgdm"))
 | 
				
			||||||
      :config (ha-leader "t D" '("rpg dm" . rpgdm-mode))))
 | 
					      :config (ha-leader "t D" '("rpg dm" . rpgdm-mode))))
 | 
				
			||||||
| 
						 | 
					@ -199,7 +199,7 @@ Working on my new replacement of my DM code:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (when (f-directory? "~/src/emacs-rpgtk")
 | 
					  (when (f-directory? "~/src/emacs-rpgtk")
 | 
				
			||||||
    (use-package rpgtk
 | 
					    (use-package rpgtk
 | 
				
			||||||
      ;; :straight (:local-repo "~/src/emacs-rpgtk")
 | 
					      :load-path "~/src/emacs-rpgtk"
 | 
				
			||||||
      :after hydra
 | 
					      :after hydra
 | 
				
			||||||
      ;; :commands (rpgtk-mode rpgtk-tables-load rpgtk-dice rpgtk-message)
 | 
					      ;; :commands (rpgtk-mode rpgtk-tables-load rpgtk-dice rpgtk-message)
 | 
				
			||||||
      :custom
 | 
					      :custom
 | 
				
			||||||
| 
						 | 
					@ -217,7 +217,7 @@ And my [[https://gitlab.com/howardabrams/emacs-ironsworn][new Ironsworn project]
 | 
				
			||||||
  (when (f-directory? "~/src/emacs-ironsworn")
 | 
					  (when (f-directory? "~/src/emacs-ironsworn")
 | 
				
			||||||
    (use-package rpgdm-ironsworn
 | 
					    (use-package rpgdm-ironsworn
 | 
				
			||||||
      :after rpgdm
 | 
					      :after rpgdm
 | 
				
			||||||
      ;; :straight (:local-repo "~/src/emacs-ironsworn")
 | 
					      :load-path "~/src/emacs-ironsworn"
 | 
				
			||||||
      :init
 | 
					      :init
 | 
				
			||||||
      (setq rpgdm-ironsworn-project (expand-file-name "~/src/emacs-ironsworn")
 | 
					      (setq rpgdm-ironsworn-project (expand-file-name "~/src/emacs-ironsworn")
 | 
				
			||||||
            ;; Ignore org links that call my RPG functions:
 | 
					            ;; Ignore org links that call my RPG functions:
 | 
				
			||||||
| 
						 | 
					@ -234,7 +234,7 @@ Why not? Let’s see if the [[https://github.com/isamert/empv.el][empv]] project
 | 
				
			||||||
What else?
 | 
					What else?
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package empv
 | 
					  (use-package empv
 | 
				
			||||||
    ;; :straight (:host github :repo "isamert/empv.el")
 | 
					    ;; :ensure (:host github :repo "isamert/empv.el")
 | 
				
			||||||
    :general (ha-leader
 | 
					    :general (ha-leader
 | 
				
			||||||
               "a p" '(empv-map :wk "play music")))
 | 
					               "a p" '(empv-map :wk "play music")))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -233,7 +233,7 @@ And for even quicker work, we can have special scripts tied to special keybindin
 | 
				
			||||||
The [[https://gitlab.com/aimebertrand/org-mac-link][org-mac-link]] project makes it easy to tell Emacs to retrieve information from other apps, e.g. the URL of the opened tab in Firefox.
 | 
					The [[https://gitlab.com/aimebertrand/org-mac-link][org-mac-link]] project makes it easy to tell Emacs to retrieve information from other apps, e.g. the URL of the opened tab in Firefox.
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package org-mac-link
 | 
					  (use-package org-mac-link
 | 
				
			||||||
    ;; :straight (:host gitlab :repo "aimebertrand/org-mac-link")
 | 
					    ;; :ensure (:host gitlab :repo "aimebertrand/org-mac-link")
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (ha-leader "i" '("insert app info" . org-mac-link-get-link)))
 | 
					    (ha-leader "i" '("insert app info" . org-mac-link-get-link)))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -146,8 +146,7 @@ After reading [[https://irreal.org/blog/?p=12139][Jon Sander’s essay]] as well
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package emacs-everywhere
 | 
					  (use-package emacs-everywhere
 | 
				
			||||||
    ;; :straight (:host github :repo "tecosaur/emacs-everywhere")
 | 
					    :ensure t)   ; (:host github :repo "tecosaur/emacs-everywhere")
 | 
				
			||||||
    :ensure t)
 | 
					 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This package /called outside of Emacs/, so I bound a keybinding to iCanHazShortcut:
 | 
					This package /called outside of Emacs/, so I bound a keybinding to iCanHazShortcut:
 | 
				
			||||||
| 
						 | 
					@ -226,7 +225,7 @@ When I push changes to my files to Gerrit and other code review, I don’t want
 | 
				
			||||||
The [[https://www.emacswiki.org/emacs/RecentFiles][recentf]] feature has been in Emacs for a long time, but it has a problem with Tramp, as we need to turn off the cleanup feature that attempts to =stat= all the files and remove them from the =recent= accessed list if they are readable. The requires recentf to open up a remote files which blocks Emacs at the most inopportune times… like when trying to reboot the machine.
 | 
					The [[https://www.emacswiki.org/emacs/RecentFiles][recentf]] feature has been in Emacs for a long time, but it has a problem with Tramp, as we need to turn off the cleanup feature that attempts to =stat= all the files and remove them from the =recent= accessed list if they are readable. The requires recentf to open up a remote files which blocks Emacs at the most inopportune times… like when trying to reboot the machine.
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package recentf
 | 
					  (use-package recentf
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (setq recentf-auto-cleanup 'never) ;; disable before we start recentf!
 | 
					    (setq recentf-auto-cleanup 'never) ;; disable before we start recentf!
 | 
				
			||||||
    (recentf-mode 1))
 | 
					    (recentf-mode 1))
 | 
				
			||||||
| 
						 | 
					@ -341,7 +340,8 @@ The [[https://github.com/minad/vertico][vertico]] package puts the completing re
 | 
				
			||||||
My issue with Vertico is when calling =find-file=, the Return key opens =dired=, instead of inserting the directory at point. This package addresses this:
 | 
					My issue with Vertico is when calling =find-file=, the Return key opens =dired=, instead of inserting the directory at point. This package addresses this:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package vertico-directory
 | 
					  (use-package vertico-directory
 | 
				
			||||||
    ;; :straight (el-patch :files ("~/.emacs.d/straight/repos/vertico/extensions/vertico-directory.el"))
 | 
					    :ensure nil
 | 
				
			||||||
 | 
					    :load-path "~/.emacs.d/elpaca/builds/vertico/extensions"
 | 
				
			||||||
    ;; More convenient directory navigation commands
 | 
					    ;; More convenient directory navigation commands
 | 
				
			||||||
    :bind (:map vertico-map
 | 
					    :bind (:map vertico-map
 | 
				
			||||||
                ("RET" . vertico-directory-enter)
 | 
					                ("RET" . vertico-directory-enter)
 | 
				
			||||||
| 
						 | 
					@ -383,8 +383,7 @@ How does it compare? Once upon a time, I enjoyed typing ~plp~ for =package-list-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package fussy
 | 
					  (use-package fussy
 | 
				
			||||||
    :ensure t
 | 
					    :ensure t ; :ensure (:host github :repo "jojojames/fussy")
 | 
				
			||||||
    ;; ;; :straight (:host github :repo "jojojames/fussy")
 | 
					 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (push 'fussy completion-styles)
 | 
					    (push 'fussy completion-styles)
 | 
				
			||||||
    (setq completion-category-defaults nil
 | 
					    (setq completion-category-defaults nil
 | 
				
			||||||
| 
						 | 
					@ -395,9 +394,7 @@ How does it compare? Once upon a time, I enjoyed typing ~plp~ for =package-list-
 | 
				
			||||||
*** Savehist
 | 
					*** Savehist
 | 
				
			||||||
Persist history over Emacs restarts using the built-in [[https://www.emacswiki.org/emacs/SaveHist][savehist]] project. Since both Vertico and Selectrum sorts by history position, this should make the choice /smarter/ with time.
 | 
					Persist history over Emacs restarts using the built-in [[https://www.emacswiki.org/emacs/SaveHist][savehist]] project. Since both Vertico and Selectrum sorts by history position, this should make the choice /smarter/ with time.
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package savehist
 | 
					  (savehist-mode)
 | 
				
			||||||
    :init
 | 
					 | 
				
			||||||
    (savehist-mode))
 | 
					 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
*** Marginalia
 | 
					*** Marginalia
 | 
				
			||||||
The [[https://github.com/minad/marginalia][marginalia]] package gives a preview of =M-x= functions with a one line description, extra information when selecting files, etc. Nice enhancement without learning any new keybindings.
 | 
					The [[https://github.com/minad/marginalia][marginalia]] package gives a preview of =M-x= functions with a one line description, extra information when selecting files, etc. Nice enhancement without learning any new keybindings.
 | 
				
			||||||
| 
						 | 
					@ -578,7 +575,7 @@ The [[https://github.com/minad/cape][Cape project]] deliver particular [[help:co
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+BEGIN_SRC emacs-lisp :tangle no
 | 
					#+BEGIN_SRC emacs-lisp :tangle no
 | 
				
			||||||
  (use-package cape
 | 
					  (use-package cape
 | 
				
			||||||
    ;; :straight (:host github :repo "minad/cape")
 | 
					    :ensure t   ; (:host github :repo "minad/cape")
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
    (setq completion-at-point-functions (list #'cape-emoji)))
 | 
					    (setq completion-at-point-functions (list #'cape-emoji)))
 | 
				
			||||||
#+END_SRC
 | 
					#+END_SRC
 | 
				
			||||||
| 
						 | 
					@ -630,6 +627,7 @@ The [[https://www.emacswiki.org/emacs/AutoInsertMode][auto-insert]] feature is a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package autoinsert
 | 
					  (use-package autoinsert
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
    (setq auto-insert-directory (expand-file-name "templates" user-emacs-directory))
 | 
					    (setq auto-insert-directory (expand-file-name "templates" user-emacs-directory))
 | 
				
			||||||
    ;; Don't prompt before insertion:
 | 
					    ;; Don't prompt before insertion:
 | 
				
			||||||
| 
						 | 
					@ -682,7 +680,7 @@ As I've mentioned [[http://www.howardism.org/Technical/Emacs/beep-for-emacs.html
 | 
				
			||||||
            'libnotify)))
 | 
					            'libnotify)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  (use-package beep
 | 
					  (use-package beep
 | 
				
			||||||
    ;; :straight (:local-repo "~/src/hamacs/elisp")
 | 
					    :load-path "~/src/hamacs/elisp"
 | 
				
			||||||
    :hook (after-init . ha-random-startup-message)
 | 
					    :hook (after-init . ha-random-startup-message)
 | 
				
			||||||
    :commands (beep-when-finished beep-when-run-too-long)
 | 
					    :commands (beep-when-finished beep-when-run-too-long)
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
| 
						 | 
					@ -931,6 +929,8 @@ Since I wasn’t using all the features that [[https://github.com/bbatsov/projec
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package emacs
 | 
					  (use-package emacs
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
 | 
					    :after general
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (ha-leader
 | 
					    (ha-leader
 | 
				
			||||||
      "p"  '(:ignore t :which-key "projects")
 | 
					      "p"  '(:ignore t :which-key "projects")
 | 
				
			||||||
| 
						 | 
					@ -1172,7 +1172,7 @@ Also, as [[https://www.bytedude.com/gpg-in-emacs/][bytedude]] mentions, I need t
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package epa-file
 | 
					  (use-package epa-file
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
    :custom
 | 
					    :custom
 | 
				
			||||||
    (epg-debug t)
 | 
					    (epg-debug t)
 | 
				
			||||||
    (auth-source-debug t)
 | 
					    (auth-source-debug t)
 | 
				
			||||||
| 
						 | 
					@ -1188,6 +1188,7 @@ Also, as [[https://www.bytedude.com/gpg-in-emacs/][bytedude]] mentions, I need t
 | 
				
			||||||
Need to make sure that Emacs will handle the prompts, and turn it on:
 | 
					Need to make sure that Emacs will handle the prompts, and turn it on:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package epa-file
 | 
					  (use-package epa-file
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (setenv "GPG_AGENT_INFO" nil)
 | 
					    (setenv "GPG_AGENT_INFO" nil)
 | 
				
			||||||
    (epa-file-enable))
 | 
					    (epa-file-enable))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -139,6 +139,7 @@ I would appreciate seeing if my Emacs installation has the features that I expec
 | 
				
			||||||
The [[https://github.com/emacs-dashboard/emacs-dashboard][emacs-dashboard]] project makes a nicer startup screen.
 | 
					The [[https://github.com/emacs-dashboard/emacs-dashboard][emacs-dashboard]] project makes a nicer startup screen.
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package dashboard
 | 
					  (use-package dashboard
 | 
				
			||||||
 | 
					    :ensure t
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
    (defun ha-dashboard-version ()
 | 
					    (defun ha-dashboard-version ()
 | 
				
			||||||
      (let ((smaller-version (replace-regexp-in-string
 | 
					      (let ((smaller-version (replace-regexp-in-string
 | 
				
			||||||
| 
						 | 
					@ -180,7 +181,8 @@ The [[https://github.com/emacs-dashboard/emacs-dashboard][emacs-dashboard]] proj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 This dashboard project requires [[https://github.com/purcell/page-break-lines][page-break-lines]] (which is a nice project):
 | 
					 This dashboard project requires [[https://github.com/purcell/page-break-lines][page-break-lines]] (which is a nice project):
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package page-break-lines)
 | 
					  (use-package page-break-lines
 | 
				
			||||||
 | 
					    :ensure t)
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Right Side
 | 
					* Right Side
 | 
				
			||||||
| 
						 | 
					@ -190,6 +192,7 @@ On the right side should show a list of keybindings or other hints that I want t
 | 
				
			||||||
Lots of things to learn and keep straight. Let’s try the [[https://github.com/mykyta-shyrin/cheatsheet][cheatsheet.el]] project.
 | 
					Lots of things to learn and keep straight. Let’s try the [[https://github.com/mykyta-shyrin/cheatsheet][cheatsheet.el]] project.
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package cheatsheet
 | 
					  (use-package cheatsheet
 | 
				
			||||||
 | 
					    :ensure t
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (cheatsheet-add-group 'Text-Objects
 | 
					    (cheatsheet-add-group 'Text-Objects
 | 
				
			||||||
                          '(:key "w" :description "word")
 | 
					                          '(:key "w" :description "word")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										19
									
								
								ha-demos.org
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								ha-demos.org
									
									
									
									
									
								
							| 
						 | 
					@ -44,8 +44,8 @@ Once I made demonstrations /within/ Emacs with my [[https://github.com/howardabr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp :tangle no
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package demo-it
 | 
					  (use-package demo-it
 | 
				
			||||||
      ;; :straight (:local-repo "~/src/demo-it")
 | 
					    :load-path "~/src/demo-it"
 | 
				
			||||||
      ;; ;; :straight (:host github :repo "howardabrams/demo-it")
 | 
					    ;; :ensure (:host github :repo "howardabrams/demo-it")
 | 
				
			||||||
    :commands (demo-it-create demo-it-start demo-it-hide-mode-line
 | 
					    :commands (demo-it-create demo-it-start demo-it-hide-mode-line
 | 
				
			||||||
                              demo-it--presentation-display-set)
 | 
					                              demo-it--presentation-display-set)
 | 
				
			||||||
    :custom (demo-it--insert-test-speed :faster))
 | 
					    :custom (demo-it--insert-test-speed :faster))
 | 
				
			||||||
| 
						 | 
					@ -194,7 +194,7 @@ With some a startup bug that I haven’t been able to resolve, I’m not using i
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp :tangle no
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package dslide
 | 
					  (use-package dslide
 | 
				
			||||||
    ;; :straight (dslide :host github :repo "positron-solutions/dslide")
 | 
					    ;; :ensure (:host github :repo "positron-solutions/dslide")
 | 
				
			||||||
    :commands (dslide-deck-start dslide-deck-stop)
 | 
					    :commands (dslide-deck-start dslide-deck-stop)
 | 
				
			||||||
    :custom
 | 
					    :custom
 | 
				
			||||||
    (dslide-start-from 'point)
 | 
					    (dslide-start-from 'point)
 | 
				
			||||||
| 
						 | 
					@ -227,7 +227,7 @@ With some a startup bug that I haven’t been able to resolve, I’m not using i
 | 
				
			||||||
           (dslide-stop   . ha-slide-teardown)))
 | 
					           (dslide-stop   . ha-slide-teardown)))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Let’s try it out by loading this example.[[file:~/.emacs.d/straight/repos/dslide/test/demo.org][ demo.org]]
 | 
					Let’s try it out by loading this example.[[file:~/.emacs.d/elpaca/repos/dslide/test/demo.org][demo.org]]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
What features do I like and want to take advantage of?
 | 
					What features do I like and want to take advantage of?
 | 
				
			||||||
  - Inline Children show: =:DSLIDE_SLIDE_ACTION: dslide-slide-action-inline=
 | 
					  - Inline Children show: =:DSLIDE_SLIDE_ACTION: dslide-slide-action-inline=
 | 
				
			||||||
| 
						 | 
					@ -244,7 +244,7 @@ Call the =ha-slide-notes-update= function automatically after updating a slide.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+BEGIN_SRC emacs-lisp :tangle no
 | 
					#+BEGIN_SRC emacs-lisp :tangle no
 | 
				
			||||||
  (use-package dslide
 | 
					  (use-package dslide
 | 
				
			||||||
    ;; :straight (dslide :host github :repo "positron-solutions/dslide")
 | 
					    ;; :ensure (:host github :repo "positron-solutions/dslide")
 | 
				
			||||||
    :commands (dslide-narrow-hook)
 | 
					    :commands (dslide-narrow-hook)
 | 
				
			||||||
    :hook (dslide-narrow . 'ha-slide-notes-update))
 | 
					    :hook (dslide-narrow . 'ha-slide-notes-update))
 | 
				
			||||||
#+END_SRC
 | 
					#+END_SRC
 | 
				
			||||||
| 
						 | 
					@ -256,8 +256,8 @@ The [[https://github.com/positron-solutions/moc][Master of Ceremonies]] package
 | 
				
			||||||
  (use-package default-text-scale)
 | 
					  (use-package default-text-scale)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  (use-package moc
 | 
					  (use-package moc
 | 
				
			||||||
    ;; :straight (:type git :host github
 | 
					    ;; :ensure (:host github :repo "positron-solutions/moc")
 | 
				
			||||||
               :repo "positron-solutions/moc"))
 | 
					  )
 | 
				
			||||||
#+END_SRC
 | 
					#+END_SRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Select text, and call =moc-focus= (call =moc-focus-quit= to stop). Highlight more text, and call =moc-focus-highlight= to brighten it, or =moc-focus-obscure= to hide it.
 | 
					Select text, and call =moc-focus= (call =moc-focus-quit= to stop). Highlight more text, and call =moc-focus-highlight= to brighten it, or =moc-focus-obscure= to hide it.
 | 
				
			||||||
| 
						 | 
					@ -272,7 +272,8 @@ The [[https://github.com/trevorpogue/topspace][topspace]] project can pad the to
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+BEGIN_SRC emacs-lisp
 | 
					#+BEGIN_SRC emacs-lisp
 | 
				
			||||||
  (use-package topspace
 | 
					  (use-package topspace
 | 
				
			||||||
    ;; :straight (:type git :host github :repo "trevorpogue/topspace"))
 | 
					    ;; :ensure (:host github :repo "trevorpogue/topspace")
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
    #+END_SRC
 | 
					    #+END_SRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*** Showing Something associated with a Headline
 | 
					*** Showing Something associated with a Headline
 | 
				
			||||||
| 
						 | 
					@ -307,7 +308,7 @@ To do this, add =:DSLIDE_ACTIONS: dslide-action-highlight-paragraphs= to the pro
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src elisp emacs-lisp :tangle no
 | 
					#+begin_src elisp emacs-lisp :tangle no
 | 
				
			||||||
  (use-package dslide
 | 
					  (use-package dslide
 | 
				
			||||||
    ;; :straight (:host github :repo "positron-solutions/dslide")
 | 
					    ;; :ensure (:host github :repo "positron-solutions/dslide")
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (defclass dslide-action-highlight-paragraphs (dslide-action)
 | 
					    (defclass dslide-action-highlight-paragraphs (dslide-action)
 | 
				
			||||||
      ((overlays :initform nil))
 | 
					      ((overlays :initform nil))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -88,7 +88,7 @@ either be "there or not" which resulted large jumps and large distractions.
 | 
				
			||||||
#+BEGIN_SRC emacs-lisp
 | 
					#+BEGIN_SRC emacs-lisp
 | 
				
			||||||
  (use-package ultra-scroll
 | 
					  (use-package ultra-scroll
 | 
				
			||||||
    :ensure t
 | 
					    :ensure t
 | 
				
			||||||
    ;; :straight (:type git :host github :repo "jdtsmith/ultra-scroll")
 | 
					    ;; :ensure (:host github :repo "jdtsmith/ultra-scroll")
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (setq scroll-conservatively 101 ; important!
 | 
					    (setq scroll-conservatively 101 ; important!
 | 
				
			||||||
        scroll-margin 0)
 | 
					        scroll-margin 0)
 | 
				
			||||||
| 
						 | 
					@ -99,7 +99,7 @@ Large screen, lots of windows, so where is the cursor? While I used to use =hl-l
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package pulsar
 | 
					  (use-package pulsar
 | 
				
			||||||
    ;; :straight (:host github :repo "protesilaos/pulsar")
 | 
					    ;; :ensure (:host github :repo "protesilaos/pulsar")
 | 
				
			||||||
    :ensure t
 | 
					    :ensure t
 | 
				
			||||||
    :custom
 | 
					    :custom
 | 
				
			||||||
    (pulsar-face 'pulsar-generic)
 | 
					    (pulsar-face 'pulsar-generic)
 | 
				
			||||||
| 
						 | 
					@ -162,7 +162,7 @@ Am I ever really ever satisfied with any font? I regularly change my font based
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package mixed-pitch
 | 
					  (use-package mixed-pitch
 | 
				
			||||||
    ;; :straight (:host github :repo "jabranham/mixed-pitch")
 | 
					    ;; :ensure (:host github :repo "jabranham/mixed-pitch")
 | 
				
			||||||
    :ensure t
 | 
					    :ensure t
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (add-to-list 'mixed-pitch-fixed-pitch-faces 'org-property-value)
 | 
					    (add-to-list 'mixed-pitch-fixed-pitch-faces 'org-property-value)
 | 
				
			||||||
| 
						 | 
					@ -394,7 +394,7 @@ This project replaces [[https://github.com/domtronn/all-the-icons.el][all-the-ic
 | 
				
			||||||
#+BEGIN_SRC emacs-lisp
 | 
					#+BEGIN_SRC emacs-lisp
 | 
				
			||||||
  (use-package nerd-icons
 | 
					  (use-package nerd-icons
 | 
				
			||||||
    :ensure t
 | 
					    :ensure t
 | 
				
			||||||
    ;; :straight (nerd-icons :type git :host github :repo "rainstormstudio/nerd-icons.el")
 | 
					    ;; :ensure (:host github :repo "rainstormstudio/nerd-icons.el")
 | 
				
			||||||
    :custom
 | 
					    :custom
 | 
				
			||||||
    ;; The Nerd Font you want to use in GUI defaults to fixed-font:
 | 
					    ;; The Nerd Font you want to use in GUI defaults to fixed-font:
 | 
				
			||||||
    (nerd-icons-font-family ha-fixed-font))
 | 
					    (nerd-icons-font-family ha-fixed-font))
 | 
				
			||||||
| 
						 | 
					@ -636,14 +636,16 @@ Oh, and turn off the line highlighting:
 | 
				
			||||||
And of course, the default is /inside/ where my mind is dark and safe:
 | 
					And of course, the default is /inside/ where my mind is dark and safe:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (laptop-inside)
 | 
					  (use-package emacs
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
 | 
					    :config (laptop-inside))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
** Highlight Task Labels
 | 
					** Highlight Task Labels
 | 
				
			||||||
In code, if you drop a specific /text/ labels, we can highlight them with [[https://github.com/tarsius/hl-todo][hl-todo package]]:
 | 
					In code, if you drop a specific /text/ labels, we can highlight them with [[https://github.com/tarsius/hl-todo][hl-todo package]]:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package hl-todo
 | 
					  (use-package hl-todo
 | 
				
			||||||
    ;; :straight (:host github :repo "tarsius/hl-todo")
 | 
					    ;; :ensure (:host github :repo "tarsius/hl-todo")
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (setq hl-todo-keyword-faces
 | 
					    (setq hl-todo-keyword-faces
 | 
				
			||||||
      `(("TODO"   . ,(face-foreground 'warning))
 | 
					      `(("TODO"   . ,(face-foreground 'warning))
 | 
				
			||||||
| 
						 | 
					@ -659,7 +661,7 @@ Suggests to bind some keys to =hl-todo-next= in order to jump from tag to tag, b
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package consult-todo
 | 
					  (use-package consult-todo
 | 
				
			||||||
    ;; :straight (:host github :repo "liuyinz/consult-todo")
 | 
					    ;; :ensure (:host github :repo "liuyinz/consult-todo")
 | 
				
			||||||
    :ensure t
 | 
					    :ensure t
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
    (defconst consult-todo--narrow
 | 
					    (defconst consult-todo--narrow
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -712,6 +712,7 @@ The gods ordained that Mail and Org should dance together, so step one is compos
 | 
				
			||||||
A new option is to use [[https://github.com/jeremy-compostella/org-msg][org-msg]], so let's try it:
 | 
					A new option is to use [[https://github.com/jeremy-compostella/org-msg][org-msg]], so let's try it:
 | 
				
			||||||
#+begin_src emacs-lisp :noweb yes
 | 
					#+begin_src emacs-lisp :noweb yes
 | 
				
			||||||
  (use-package org-msg
 | 
					  (use-package org-msg
 | 
				
			||||||
 | 
					    :ensure t
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
    (setq org-msg-options "html-postamble:nil H:5 num:nil ^:{} toc:nil author:nil email:nil \\n:t"
 | 
					    (setq org-msg-options "html-postamble:nil H:5 num:nil ^:{} toc:nil author:nil email:nil \\n:t"
 | 
				
			||||||
          org-msg-startup "hidestars indent inlineimages"
 | 
					          org-msg-startup "hidestars indent inlineimages"
 | 
				
			||||||
| 
						 | 
					@ -737,7 +738,7 @@ The idea of linking org documents to email could be nice, however, the =ol-notmu
 | 
				
			||||||
#+begin_src emacs-lisp :tangle no
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package ol-notmuch
 | 
					  (use-package ol-notmuch
 | 
				
			||||||
    :after org
 | 
					    :after org
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
    :config (add-to-list 'org-modules 'ol-notmuch))
 | 
					    :config (add-to-list 'org-modules 'ol-notmuch))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
To use, read a message and save a link to it with ~SPC o l~. Next, in an org document, create a link with ~, l~. Now, you can return to the message from that document with ~, o~.  Regardless, I may need to store a local copy when I upgrade Org.
 | 
					To use, read a message and save a link to it with ~SPC o l~. Next, in an org document, create a link with ~, l~. Now, you can return to the message from that document with ~, o~.  Regardless, I may need to store a local copy when I upgrade Org.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,10 +27,9 @@ A literate programming file for configuring the Emacs Shell.
 | 
				
			||||||
While I like [[https://github.com/akermu/emacs-libvterm][vterm]] for logging into [[file:ha-remoting.org][remote systems]], I find Emacs’ shell, =eshell=, an interesting alternative.
 | 
					While I like [[https://github.com/akermu/emacs-libvterm][vterm]] for logging into [[file:ha-remoting.org][remote systems]], I find Emacs’ shell, =eshell=, an interesting alternative.
 | 
				
			||||||
If you find the documentation lacking, I [[http://www.howardism.org/Technical/Emacs/eshell-fun.html][documented most features]], and you might find the following helpful.
 | 
					If you find the documentation lacking, I [[http://www.howardism.org/Technical/Emacs/eshell-fun.html][documented most features]], and you might find the following helpful.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Tell straight to use the built-in =eshell=:
 | 
					 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package eshell
 | 
					  (use-package eshell
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
    :hook (eshell-mode . ha-eshell-setup))
 | 
					    :hook (eshell-mode . ha-eshell-setup))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -87,6 +86,7 @@ Need to hook this when we change the directory.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+BEGIN_SRC emacs-lisp
 | 
					#+BEGIN_SRC emacs-lisp
 | 
				
			||||||
  (use-package eshell
 | 
					  (use-package eshell
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
    :hook (eshell-directory-change . ha-eshell-header-line))
 | 
					    :hook (eshell-directory-change . ha-eshell-header-line))
 | 
				
			||||||
    #+END_SRC
 | 
					    #+END_SRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -974,9 +974,9 @@ I think using the [[help:rx][rx]] macro with applications like =grep= is great r
 | 
				
			||||||
The problem with this trick is that =rx= outputs an Emacs-compatible regular expression, which doesn’t always match regular expressions accepted by most applications.
 | 
					The problem with this trick is that =rx= outputs an Emacs-compatible regular expression, which doesn’t always match regular expressions accepted by most applications.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The [[https://github.com/joddie/pcre2el][pcre2el]] project can convert from a Lisp regular expression to a [[http://www.pcre.org/][PCRE]] (Perl Compatible Regular Expression), acceptable by [[https://github.com/BurntSushi/ripgrep][ripgrep]].
 | 
					The [[https://github.com/joddie/pcre2el][pcre2el]] project can convert from a Lisp regular expression to a [[http://www.pcre.org/][PCRE]] (Perl Compatible Regular Expression), acceptable by [[https://github.com/BurntSushi/ripgrep][ripgrep]].
 | 
				
			||||||
  #+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package pcre2el
 | 
					  (use-package pcre2el
 | 
				
			||||||
      ;; :straight (:host github :repo "joddie/pcre2el")
 | 
					    :ensure t   ; (:host github :repo "joddie/pcre2el")
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (defmacro prx (&rest expressions)
 | 
					    (defmacro prx (&rest expressions)
 | 
				
			||||||
      "Convert the rx-compatible regular EXPRESSIONS to PCRE.
 | 
					      "Convert the rx-compatible regular EXPRESSIONS to PCRE.
 | 
				
			||||||
| 
						 | 
					@ -993,7 +993,7 @@ The [[https://github.com/joddie/pcre2el][pcre2el]] project can convert from a Li
 | 
				
			||||||
                (uuid    (seq (= 8 hex) "-" (= 3 (seq (= 4 hex) "-")) (= 12 hex)))
 | 
					                (uuid    (seq (= 8 hex) "-" (= 3 (seq (= 4 hex) "-")) (= 12 hex)))
 | 
				
			||||||
                (guid    (seq uuid)))
 | 
					                (guid    (seq uuid)))
 | 
				
			||||||
         (rxt-elisp-to-pcre (rx ,@expressions)))))
 | 
					         (rxt-elisp-to-pcre (rx ,@expressions)))))
 | 
				
			||||||
  #+end_src
 | 
					#+end_src
 | 
				
			||||||
** Map over Files
 | 
					** Map over Files
 | 
				
			||||||
While I like eshell’s =for= loop well enough (if I can remember the syntax), as in:
 | 
					While I like eshell’s =for= loop well enough (if I can remember the syntax), as in:
 | 
				
			||||||
#+begin_src sh :tangle no
 | 
					#+begin_src sh :tangle no
 | 
				
			||||||
| 
						 | 
					@ -1378,7 +1378,7 @@ The [[https://codeberg.org/akib/emacs-eat][Emulate a Terminal]] project provides
 | 
				
			||||||
#+begin_src emacs-lisp :tangle no
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package eat
 | 
					  (use-package eat
 | 
				
			||||||
    :after eshell
 | 
					    :after eshell
 | 
				
			||||||
    ;; :straight (:repo "https://codeberg.org/akib/emacs-eat")
 | 
					    :ensure t    ; (:repo "https://codeberg.org/akib/emacs-eat")
 | 
				
			||||||
    :hook (eshell-load . eat-eshell-visual-command-mode))
 | 
					    :hook (eshell-load . eat-eshell-visual-command-mode))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1787,7 +1787,8 @@ Sometimes you need to change something about the current file you are editing...
 | 
				
			||||||
Here is where we associate all the functions and their hooks with =eshell=, through the magic of =use-package=.
 | 
					Here is where we associate all the functions and their hooks with =eshell=, through the magic of =use-package=.
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package eshell
 | 
					  (use-package eshell
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
 | 
					    :defer t
 | 
				
			||||||
    :custom (eshell-banner-message '(ha-eshell-banner))
 | 
					    :custom (eshell-banner-message '(ha-eshell-banner))
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
    (setq eshell-error-if-no-glob t
 | 
					    (setq eshell-error-if-no-glob t
 | 
				
			||||||
| 
						 | 
					@ -1805,6 +1806,8 @@ Here is where we associate all the functions and their hooks with =eshell=, thro
 | 
				
			||||||
          ;; Me neither, so this makes it act a bit more shell-like:
 | 
					          ;; Me neither, so this makes it act a bit more shell-like:
 | 
				
			||||||
          eshell-prefer-lisp-functions nil)
 | 
					          eshell-prefer-lisp-functions nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defvar eshell-mode-map (make-keymap) "Keybindings in Eshell")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ;; :hook ((eshell-pred-load . ha-eshell-add-predicates))
 | 
					    ;; :hook ((eshell-pred-load . ha-eshell-add-predicates))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    :bind (("M-!" . eshell-command)
 | 
					    :bind (("M-!" . eshell-command)
 | 
				
			||||||
| 
						 | 
					@ -1816,6 +1819,7 @@ Note that the default list to [[elisp:(describe-variable 'eshell-visual-commands
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp :tangle no
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package eshell
 | 
					  (use-package eshell
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (add-to-list 'eshell-visual-commands "ssh"))
 | 
					    (add-to-list 'eshell-visual-commands "ssh"))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,7 +45,7 @@ TODO: Rebind the ~z~ keys
 | 
				
			||||||
I split the configuration of Evil mode into sections. First, global settings:
 | 
					I split the configuration of Evil mode into sections. First, global settings:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package evil
 | 
					  (use-package evil
 | 
				
			||||||
    :ensure t
 | 
					    :ensure (:wait t)
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
    (setq evil-undo-system 'undo-fu
 | 
					    (setq evil-undo-system 'undo-fu
 | 
				
			||||||
          evil-auto-indent t
 | 
					          evil-auto-indent t
 | 
				
			||||||
| 
						 | 
					@ -402,6 +402,7 @@ When the point is /inside/ the variable assignment section, but not inside any p
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package align
 | 
					  (use-package align
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (add-to-list 'align-rules-list
 | 
					    (add-to-list 'align-rules-list
 | 
				
			||||||
                 `(lisp-assignments
 | 
					                 `(lisp-assignments
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -549,9 +549,10 @@ And put it on the toggle menu:
 | 
				
			||||||
  (ha-leader "t n" '("narrow" . ha-narrow-dwim))
 | 
					  (ha-leader "t n" '("narrow" . ha-narrow-dwim))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
* Window Operations
 | 
					* Window Operations
 | 
				
			||||||
While it comes with Emacs, I use [[https://www.emacswiki.org/emacs/WinnerMode][winner-mode]] to undo window-related changes:
 | 
					While it comes with Emacs, I use the built-in [[https://www.emacswiki.org/emacs/WinnerMode][winner-mode]] to undo window-related changes:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package winner
 | 
					  (use-package winner
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
    :custom
 | 
					    :custom
 | 
				
			||||||
    (winner-dont-bind-my-keys t)
 | 
					    (winner-dont-bind-my-keys t)
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
| 
						 | 
					@ -759,6 +760,8 @@ Ways to search for information goes under the ~s~ key. The venerable sage has al
 | 
				
			||||||
Install the [[https://github.com/dajva/rg.el][rg]] package, which builds on the internal =grep= system, and creates a =*rg*= window with =compilation= mode, so ~C-j~ and ~C-k~ will move and show the results by loading those files.
 | 
					Install the [[https://github.com/dajva/rg.el][rg]] package, which builds on the internal =grep= system, and creates a =*rg*= window with =compilation= mode, so ~C-j~ and ~C-k~ will move and show the results by loading those files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
 | 
					  (use-package transient)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  (use-package rg
 | 
					  (use-package rg
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    ;; Make an interesting Magit-like menu of options, which I don't use much:
 | 
					    ;; Make an interesting Magit-like menu of options, which I don't use much:
 | 
				
			||||||
| 
						 | 
					@ -883,6 +886,7 @@ Remember these keys in the *Help* buffer:
 | 
				
			||||||
Let's make Info behave a little more VI-like:
 | 
					Let's make Info behave a little more VI-like:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package info
 | 
					  (use-package info
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
    :after general
 | 
					    :after general
 | 
				
			||||||
    :general
 | 
					    :general
 | 
				
			||||||
    (:states 'normal :keymaps 'Info-mode-map
 | 
					    (:states 'normal :keymaps 'Info-mode-map
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,22 +27,20 @@ A literate programming file for publishing my website using org.
 | 
				
			||||||
* Introduction
 | 
					* Introduction
 | 
				
			||||||
While the Emacs community have a plethora of options for generating a static website from org-formatted files, I keep my pretty simple, and use the standard =org-publish= feature.
 | 
					While the Emacs community have a plethora of options for generating a static website from org-formatted files, I keep my pretty simple, and use the standard =org-publish= feature.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The RSS needs UUIDs:
 | 
					The RSS needs UUIDs using the [[https://github.com/emacsmirror/uuidgen][uuidgen project]].:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+BEGIN_SRC emacs-lisp results silent
 | 
					#+BEGIN_SRC emacs-lisp results silent
 | 
				
			||||||
  (use-package uuidgen
 | 
					  (use-package uuidgen)
 | 
				
			||||||
    ;; :straight (:host github :repo "emacsmirror/uuidgen"))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  (defun org-icalendar-create-uid (&rest ignored)
 | 
					  (defun org-icalendar-create-uid (&rest ignored)
 | 
				
			||||||
    "Returns a UUID."
 | 
					    "Returns a UUID."
 | 
				
			||||||
    (uuidgen-1))
 | 
					    (uuidgen-1))
 | 
				
			||||||
#+END_SRC
 | 
					#+END_SRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
While the following packages come with Emacs, they aren't necessarily loaded:
 | 
					While the following packages come with Emacs, they aren't necessarily loaded, as [[https://github.com/emacsmirror/ox-rss][ox-rss]] has it own package:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp :results silent
 | 
					#+begin_src emacs-lisp :results silent
 | 
				
			||||||
  (use-package ox-rss
 | 
					  (use-package ox-rss)
 | 
				
			||||||
    ;; :straight (:host github :repo "emacsmirror/ox-rss"))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  (use-package org
 | 
					  (use-package org
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
| 
						 | 
					@ -64,7 +62,7 @@ Render my code with my font colors:
 | 
				
			||||||
Also, we need Jack, and his HTML prowess:
 | 
					Also, we need Jack, and his HTML prowess:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package jack
 | 
					  (use-package jack
 | 
				
			||||||
    ;; :straight (:host github :repo "tonyaldon/jack")
 | 
					    ;; :ensure (:host github :repo "tonyaldon/jack")
 | 
				
			||||||
    :commands (jack-html))
 | 
					    :commands (jack-html))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -110,7 +110,7 @@ The variable, =org-hide-emphasis-markers=, is key to pretending that Emacs can b
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package org-appear
 | 
					  (use-package org-appear
 | 
				
			||||||
    :ensure (:host github :repo "awth13/org-appear")
 | 
					    :ensure t  ; (:host github :repo "awth13/org-appear")
 | 
				
			||||||
    :init (setq org-appear-trigger 'manual)
 | 
					    :init (setq org-appear-trigger 'manual)
 | 
				
			||||||
    :hook
 | 
					    :hook
 | 
				
			||||||
    ((org-mode . (lambda ()
 | 
					    ((org-mode . (lambda ()
 | 
				
			||||||
| 
						 | 
					@ -331,7 +331,7 @@ The [[https://github.com/minad/org-modern][org-modern]] project attempts to do a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package org-modern
 | 
					  (use-package org-modern
 | 
				
			||||||
    :ensure (:host github :repo "minad/org-modern")
 | 
					    :ensure t  ; (:host github :repo "minad/org-modern")
 | 
				
			||||||
    :after org
 | 
					    :after org
 | 
				
			||||||
    :hook ((org-mode . org-modern-mode)
 | 
					    :hook ((org-mode . org-modern-mode)
 | 
				
			||||||
           (org-agenda-finalize . org-modern-agenda))
 | 
					           (org-agenda-finalize . org-modern-agenda))
 | 
				
			||||||
| 
						 | 
					@ -365,9 +365,10 @@ According to an idea by [[https://jft.home.blog/2019/07/17/use-unicode-symbol-to
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
* Padding
 | 
					* Padding
 | 
				
			||||||
The [[https://github.com/TonCherAmi/org-padding][org-padding]] project looks places extra space before and after headers and blocks (essentially leading), to create a more word-processor-y experience. Great idea, however, I have spent a lot of extra time entering blank lines before and after my headers and blocks:
 | 
					The [[https://github.com/TonCherAmi/org-padding][org-padding]] project looks places extra space before and after headers and blocks (essentially leading), to create a more word-processor-y experience. Great idea, however, I have spent a lot of extra time entering blank lines before and after my headers and blocks:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package org-padding
 | 
					  (use-package org-padding
 | 
				
			||||||
    :ensure (:host github :repo "TonCherAmi/org-padding")
 | 
					    :ensure t  ; (:host github :repo "TonCherAmi/org-padding")
 | 
				
			||||||
 | 
					    :vc (:url "https://github.com/TonCherAmi/org-padding.git")
 | 
				
			||||||
    :hook (org-mode . org-padding-mode)
 | 
					    :hook (org-mode . org-padding-mode)
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (setq org-padding-block-begin-line-padding '(0.5 . 0.3)
 | 
					    (setq org-padding-block-begin-line-padding '(0.5 . 0.3)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										52
									
								
								ha-org.org
									
									
									
									
									
								
							
							
						
						
									
										52
									
								
								ha-org.org
									
									
									
									
									
								
							| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
#+date:   2020-09-18
 | 
					#+date:   2020-09-18
 | 
				
			||||||
#+tags: emacs org
 | 
					#+tags: emacs org
 | 
				
			||||||
#+startup: inlineimages
 | 
					#+startup: inlineimages
 | 
				
			||||||
#+lastmod: [2025-09-10 Wed]
 | 
					#+lastmod: [2025-09-11 Thu]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
A literate programming file for configuring org-mode and those files.
 | 
					A literate programming file for configuring org-mode and those files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,10 +31,10 @@ A literate programming file for configuring org-mode and those files.
 | 
				
			||||||
Org is a /large/ complex beast with a gazillion settings, so I discuss these later in this document.
 | 
					Org is a /large/ complex beast with a gazillion settings, so I discuss these later in this document.
 | 
				
			||||||
#+begin_src emacs-lisp :noweb yes
 | 
					#+begin_src emacs-lisp :noweb yes
 | 
				
			||||||
  (use-package org
 | 
					  (use-package org
 | 
				
			||||||
    :ensure t
 | 
					    :ensure nil
 | 
				
			||||||
    :after general
 | 
					    :after general
 | 
				
			||||||
    ;; TODO: Using the latest org-mode
 | 
					    ;; TODO: Using the latest org-mode
 | 
				
			||||||
    ;; ;; :straight (:type built-in)
 | 
					    ;; :ensure t
 | 
				
			||||||
    :mode (("\\.org" . org-mode))
 | 
					    :mode (("\\.org" . org-mode))
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
    <<variables>>
 | 
					    <<variables>>
 | 
				
			||||||
| 
						 | 
					@ -280,7 +280,7 @@ Came up with a great way to search a project for Org-specific files, and wrote [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package org-find-file
 | 
					  (use-package org-find-file
 | 
				
			||||||
    ;; :straight nil
 | 
					    :ensure nil
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (ha-leader "f o" '("load org" . org-find-file)))
 | 
					    (ha-leader "f o" '("load org" . org-find-file)))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
| 
						 | 
					@ -493,7 +493,7 @@ Need to install and configure Emacs to work with [[https://plantuml.com/][PlantU
 | 
				
			||||||
After installing the [[https://github.com/skuro/plantuml-mode][plantuml-mode]], we need to reference the location:
 | 
					After installing the [[https://github.com/skuro/plantuml-mode][plantuml-mode]], we need to reference the location:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package plantuml-mode
 | 
					  (use-package plantuml-mode
 | 
				
			||||||
    ;; :straight (:host github :repo "skuro/plantuml-mode")
 | 
					    ;; :ensure (:host github :repo "skuro/plantuml-mode")
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
    (setq org-plantuml-jar-path (expand-file-name "~/bin/plantuml.jar")))
 | 
					    (setq org-plantuml-jar-path (expand-file-name "~/bin/plantuml.jar")))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
| 
						 | 
					@ -546,8 +546,8 @@ Of course, since we are dealing with Emacs, where we assimilate any good idea. J
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package pikchr-mode
 | 
					  (use-package pikchr-mode
 | 
				
			||||||
    ;; :straight (:local-repo "~/src/pikchr-mode")
 | 
					    :load-path "~/src/pikchr-mode"
 | 
				
			||||||
    ;; :straight (:host github :repo "kljohann/pikchr-mode")
 | 
					    ;; :ensure (:host github :repo "kljohann/pikchr-mode")
 | 
				
			||||||
    :custom
 | 
					    :custom
 | 
				
			||||||
    (pikchr-executable "~/bin/pikchr"))
 | 
					    (pikchr-executable "~/bin/pikchr"))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
| 
						 | 
					@ -735,7 +735,7 @@ I have a special version of tweaked [[file:elisp/ox-confluence.el][Confluence ex
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package ox-confluence
 | 
					  (use-package ox-confluence
 | 
				
			||||||
    :after org
 | 
					    :after org
 | 
				
			||||||
    ;; :straight nil   ; Located in my "elisp" directory
 | 
					    :ensure nil ; Located in my "elisp" directory
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (ha-leader :keymaps 'org-mode-map
 | 
					    (ha-leader :keymaps 'org-mode-map
 | 
				
			||||||
      "o E" '("to confluence"     . ox-export-to-confluence)))
 | 
					      "o E" '("to confluence"     . ox-export-to-confluence)))
 | 
				
			||||||
| 
						 | 
					@ -746,7 +746,7 @@ I have a special version of tweaked [[file:elisp/ox-confluence.el][Confluence ex
 | 
				
			||||||
I’m not afraid of HTML, but I like the idea of doing my HTML work in a Lisp-like way using the [[https://github.com/tonyaldon/jack][jack-html project]]:
 | 
					I’m not afraid of HTML, but I like the idea of doing my HTML work in a Lisp-like way using the [[https://github.com/tonyaldon/jack][jack-html project]]:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package jack
 | 
					  (use-package jack
 | 
				
			||||||
    ;; :straight (:host github :repo "tonyaldon/jack")
 | 
					    ;; :ensure (:host github :repo "tonyaldon/jack")
 | 
				
			||||||
    :commands (jack-html))
 | 
					    :commands (jack-html))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -803,7 +803,7 @@ I've been working on my own [[http://www.howardism.org/Technical/Emacs/focused-w
 | 
				
			||||||
  (use-package async)
 | 
					  (use-package async)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  (use-package ha-focus
 | 
					  (use-package ha-focus
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (ha-leader
 | 
					    (ha-leader
 | 
				
			||||||
     "o f" '("begin focus" . ha-focus-begin)
 | 
					     "o f" '("begin focus" . ha-focus-begin)
 | 
				
			||||||
| 
						 | 
					@ -831,6 +831,32 @@ In general, /fill/ the list, by moving the point to the /end/ of some word, and
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The idea is that you can correct a typo /and remember/ it. Perhaps calling [[help:edit-abbrevs][edit-abbrevs]] to making any fixes to that list.
 | 
					The idea is that you can correct a typo /and remember/ it. Perhaps calling [[help:edit-abbrevs][edit-abbrevs]] to making any fixes to that list.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** Flyspell
 | 
				
			||||||
 | 
					The venerable flyspell, built into Emacs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+BEGIN_SRC emacs-lisp
 | 
				
			||||||
 | 
					  (use-package flyspell
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
 | 
					    :hook ((text-mode . flyspell-mode))
 | 
				
			||||||
 | 
					    :config
 | 
				
			||||||
 | 
					    (defun ha-spell-last ()
 | 
				
			||||||
 | 
					      "Automatically correct the last spelling mistake."
 | 
				
			||||||
 | 
					      (interactive)
 | 
				
			||||||
 | 
					      (save-excursion
 | 
				
			||||||
 | 
					        (flyspell-goto-next-error t)
 | 
				
			||||||
 | 
					        (flyspell-auto-correct-word)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    :bind (("s-;" . 'ha-spell-last)
 | 
				
			||||||
 | 
					           (:map flyspell-mouse-map
 | 
				
			||||||
 | 
					                ([down-mouse-3] . 'flyspell-correct-word)
 | 
				
			||||||
 | 
					                ([mouse-3] . 'undefined))))
 | 
				
			||||||
 | 
					    #+END_SRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - ~M-t~ (=flyspell-auto-correct-word=) - press this while in word with typo in it to trigger auto-correct. You can press it repeatedly to cycle through the list of candidates.
 | 
				
			||||||
 | 
					  - ~C-,~ (=flyspell-goto-next-error=) - go to the next typo in the current buffer
 | 
				
			||||||
 | 
					  - ~C-.~ (=flyspell-auto-correct-word=) - same as =M-t=
 | 
				
			||||||
 | 
					  - ~C-;~ (=flyspell-auto-correct-previous-word=) - automatically correct the last misspelled word. (you can cycle here as well)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*** jinx
 | 
					*** jinx
 | 
				
			||||||
Once upon a time, I used [[https://www.emacswiki.org/emacs/FlySpell][flyspell]] mode to highlight the misspelled words, and the venerable [[https://www.emacswiki.org/emacs/InteractiveSpell][ispell]] for correcting. To be able to correct spelling mistakes /from a distance/, without navigation, I wrote a function that took advantage of Evil’s [[help:evil-prev-flyspell-error][evil-prev-flyspell-error]] to jump back to the last spelling mistake.
 | 
					Once upon a time, I used [[https://www.emacswiki.org/emacs/FlySpell][flyspell]] mode to highlight the misspelled words, and the venerable [[https://www.emacswiki.org/emacs/InteractiveSpell][ispell]] for correcting. To be able to correct spelling mistakes /from a distance/, without navigation, I wrote a function that took advantage of Evil’s [[help:evil-prev-flyspell-error][evil-prev-flyspell-error]] to jump back to the last spelling mistake.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -852,10 +878,10 @@ And on Linux:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
And the Emacs interface to that:
 | 
					And the Emacs interface to that:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package jinx
 | 
					  (use-package jinx
 | 
				
			||||||
    :ensure t
 | 
					    :ensure t
 | 
				
			||||||
    ;; :straight (:host github :repo "minad/jinx" :files (:defaults "jinx-mod.c" "emacs-module.h"))
 | 
					    ;; :ensure (:host github :repo "minad/jinx" :files (:defaults "jinx-mod.c" "emacs-module.h"))
 | 
				
			||||||
    :hook (emacs-startup . global-jinx-mode)
 | 
					    :hook (emacs-startup . global-jinx-mode)
 | 
				
			||||||
    :bind (("C-;" . jinx-correct-nearest)
 | 
					    :bind (("C-;" . jinx-correct-nearest)
 | 
				
			||||||
           ("s-;" . jinx-correct-nearest)
 | 
					           ("s-;" . jinx-correct-nearest)
 | 
				
			||||||
| 
						 | 
					@ -1254,7 +1280,7 @@ The [[https://github.com/rnkn/olivetti][olivetti project]] sets wide margins and
 | 
				
			||||||
Trying out [[https://protesilaos.com/][Protesilaos Stavrou]]’s [[https://protesilaos.com/emacs/logos][logos project]] as a replacement for [[https://github.com/joostkremers/writeroom-mode][Writeroom-mode]]:
 | 
					Trying out [[https://protesilaos.com/][Protesilaos Stavrou]]’s [[https://protesilaos.com/emacs/logos][logos project]] as a replacement for [[https://github.com/joostkremers/writeroom-mode][Writeroom-mode]]:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package logos
 | 
					  (use-package logos
 | 
				
			||||||
    ;; :straight (:host gitlab :repo "protesilaos/logos")
 | 
					    ;; :ensure (:host gitlab :repo "protesilaos/logos")
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
    (setq logos-outlines-are-pages t
 | 
					    (setq logos-outlines-are-pages t
 | 
				
			||||||
          logos-outline-regexp-alist
 | 
					          logos-outline-regexp-alist
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,7 +35,7 @@ The obvious keybindings are ~M-h/j/k/l~ … but that is used … well, somewhat.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp :tangle no
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package spatial-navigate
 | 
					  (use-package spatial-navigate
 | 
				
			||||||
    ;; :straight (:repo "https://codeberg.org/ideasman42/emacs-spatial-navigate")
 | 
					    ;; :ensure (:repo "https://codeberg.org/ideasman42/emacs-spatial-navigate")
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (pretty-hydra-define spatial-navigate (:color amaranth :quit-key "q")
 | 
					    (pretty-hydra-define spatial-navigate (:color amaranth :quit-key "q")
 | 
				
			||||||
      ("Box"
 | 
					      ("Box"
 | 
				
			||||||
| 
						 | 
					@ -62,7 +62,7 @@ The [[https://github.com/antonj/Highlight-Indentation-for-Emacs][Highlight-Inden
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package highlight-indentation
 | 
					  (use-package highlight-indentation
 | 
				
			||||||
    ;; :straight (:host github :repo "antonj/Highlight-Indentation-for-Emacs")
 | 
					    ;; :ensure (:host github :repo "antonj/Highlight-Indentation-for-Emacs")
 | 
				
			||||||
    :hook ((yaml-mode . highlight-indentation-mode)
 | 
					    :hook ((yaml-mode . highlight-indentation-mode)
 | 
				
			||||||
           (python-mode . highlight-indentation-mode)))
 | 
					           (python-mode . highlight-indentation-mode)))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
| 
						 | 
					@ -119,7 +119,7 @@ Allow this mode in Org blocks:
 | 
				
			||||||
And we hook
 | 
					And we hook
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package yaml-pro
 | 
					  (use-package yaml-pro
 | 
				
			||||||
    ;; :straight (:host github :repo "zkry/yaml-pro")
 | 
					    ;; :ensure (:host github :repo "zkry/yaml-pro")
 | 
				
			||||||
    :after yaml-mode
 | 
					    :after yaml-mode
 | 
				
			||||||
    :hook ((yaml-mode . yaml-pro-mode)))
 | 
					    :hook ((yaml-mode . yaml-pro-mode)))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
| 
						 | 
					@ -224,7 +224,7 @@ Do I consider all YAML files an Ansible file needing [[https://github.com/k1LoW/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package ansible
 | 
					  (use-package ansible
 | 
				
			||||||
    ;; :straight (:host gitlab :repo "emacs-ansible/emacs-ansible")
 | 
					    ;; :ensure (:host gitlab :repo "emacs-ansible/emacs-ansible")
 | 
				
			||||||
    ;; :mode ((rx (or "playbooks" "roles") (one-or-more any) ".y" (optional "a") "ml") . ansible-mode)
 | 
					    ;; :mode ((rx (or "playbooks" "roles") (one-or-more any) ".y" (optional "a") "ml") . ansible-mode)
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (setq ansible-vault-password-file "~/.ansible-vault-passfile")
 | 
					    (setq ansible-vault-password-file "~/.ansible-vault-passfile")
 | 
				
			||||||
| 
						 | 
					@ -242,7 +242,7 @@ Since most Ansible files are a combination of YAML and Jinja, the [[https://gith
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+BEGIN_SRC emacs-lisp
 | 
					#+BEGIN_SRC emacs-lisp
 | 
				
			||||||
  (use-package poly-ansible
 | 
					  (use-package poly-ansible
 | 
				
			||||||
    ;; :straight (:host github :repo "emacsmirror/poly-ansible")
 | 
					    ;; :ensure (:host github :repo "emacsmirror/poly-ansible")
 | 
				
			||||||
    :after ansible)
 | 
					    :after ansible)
 | 
				
			||||||
#+END_SRC
 | 
					#+END_SRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -247,7 +247,7 @@ The /real problem/ is trying to remember all the [[https://github.com/clojure-em
 | 
				
			||||||
And of course, we want to put this with org blocks:
 | 
					And of course, we want to put this with org blocks:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package ob-clojure
 | 
					  (use-package ob-clojure
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
    :custom
 | 
					    :custom
 | 
				
			||||||
    (org-babel-clojure-backend 'cider)
 | 
					    (org-babel-clojure-backend 'cider)
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,6 +37,7 @@ The [[https://github.com/tarsius/paren-face][paren-face]] project lowers the col
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package paren-face
 | 
					  (use-package paren-face
 | 
				
			||||||
 | 
					    :ensure t
 | 
				
			||||||
    :hook (emacs-lisp-mode . paren-face-mode))
 | 
					    :hook (emacs-lisp-mode . paren-face-mode))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -78,6 +79,7 @@ Wilfred’s [[https://github.com/Wilfred/suggest.el][suggest]] function helps yo
 | 
				
			||||||
Wilfred’s [[https://github.com/Wilfred/elisp-def][elisp-def]] project does a better job at jumping to the definition of a symbol at the point, so:
 | 
					Wilfred’s [[https://github.com/Wilfred/elisp-def][elisp-def]] project does a better job at jumping to the definition of a symbol at the point, so:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package elisp-def
 | 
					  (use-package elisp-def
 | 
				
			||||||
 | 
					    :ensure t  ; (:repo "https://github.com/Wilfred/elisp-def")
 | 
				
			||||||
    :hook (emacs-lisp-mode . elisp-def-mode))
 | 
					    :hook (emacs-lisp-mode . elisp-def-mode))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
This /should work/ with [[help:evil-goto-definition][evil-goto-defintion]], as that calls this list from [[help:evil-goto-definition-functions][evil-goto-definition-functions]]:
 | 
					This /should work/ with [[help:evil-goto-definition][evil-goto-defintion]], as that calls this list from [[help:evil-goto-definition-functions][evil-goto-definition-functions]]:
 | 
				
			||||||
| 
						 | 
					@ -284,8 +286,11 @@ These are all good, but the primary keys I need to figure out, are the s-express
 | 
				
			||||||
** Refactoring
 | 
					** Refactoring
 | 
				
			||||||
Wilfred’s [[https://github.com/Wilfred/emacs-refactor/tree/master#elisp][emacs-refactor]] package can be helpful if you turn on =context-menu-mode= and …
 | 
					Wilfred’s [[https://github.com/Wilfred/emacs-refactor/tree/master#elisp][emacs-refactor]] package can be helpful if you turn on =context-menu-mode= and …
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
 | 
					  (use-package iedit)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  (use-package emr
 | 
					  (use-package emr
 | 
				
			||||||
    ;; ;; :straight (:host github :repo "Wilfred/emacs-refactor")
 | 
					    ;; :ensure (:host github :repo "Wilfred/emacs-refactor")
 | 
				
			||||||
 | 
					    :after iedit
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (pretty-hydra-define+ lisp-refactor nil
 | 
					    (pretty-hydra-define+ lisp-refactor nil
 | 
				
			||||||
      ("To 𝛌"
 | 
					      ("To 𝛌"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,7 +60,7 @@ The [[https://github.com/mihaimaruseac/hindent][hindent package]] looks interest
 | 
				
			||||||
* Haskell and Org
 | 
					* Haskell and Org
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package ob-haskell
 | 
					  (use-package ob-haskell
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (add-to-list 'org-babel-load-languages '(haskell . t)))
 | 
					    (add-to-list 'org-babel-load-languages '(haskell . t)))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -57,7 +57,7 @@ The [[https://www.nongnu.org/geiser/][geiser project]] attempts to be the interf
 | 
				
			||||||
Do we need a Scheme work for Org Babel? According to [[https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-scheme.html][this document]], we just need to make sure we add the =:session= variable to start the REPL.
 | 
					Do we need a Scheme work for Org Babel? According to [[https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-scheme.html][this document]], we just need to make sure we add the =:session= variable to start the REPL.
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package ob-scheme
 | 
					  (use-package ob-scheme
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (add-to-list 'org-babel-load-languages '(scheme . t)))
 | 
					    (add-to-list 'org-babel-load-languages '(scheme . t)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -103,7 +103,7 @@ Let’s get the book available as an Info page:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Still having difficulty getting the Scheme REPL to output the results back into this document. Let’s try Racket...
 | 
					Still having difficulty getting the Scheme REPL to output the results back into this document. Let’s try Racket...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Normally, I would just [[info:SICP][read the book]], however, if we want to read the [[file:~/.emacs.d/straight/build/sicp/sicp.info][sicp.info]] file, we need this, at least, temporarily:
 | 
					Seems that to read the [[file:~/.emacs.d/straight/build/sicp/sicp.info][sicp.info]] file, we need this, at least, temporarily:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
(add-to-list 'auto-mode-alist '("\\.info\\'" . Info-mode))
 | 
					(add-to-list 'auto-mode-alist '("\\.info\\'" . Info-mode))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
| 
						 | 
					@ -122,7 +122,7 @@ While Racket, as a Scheme, should work with Geiser (below), let’s also get [[h
 | 
				
			||||||
Can we get Racket working with Org?
 | 
					Can we get Racket working with Org?
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package ob-racket
 | 
					  (use-package ob-racket
 | 
				
			||||||
    ;; :straight (:host github :repo "DEADB17/ob-racket")
 | 
					    ;; :ensure (:host github :repo "DEADB17/ob-racket")
 | 
				
			||||||
    :after org
 | 
					    :after org
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (add-to-list 'org-babel-load-languages '(racket . t)))
 | 
					    (add-to-list 'org-babel-load-languages '(racket . t)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,6 +47,7 @@ For all programming languages, I would like to now default to absolute line numb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package emacs
 | 
					  (use-package emacs
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (defun ha-prog-mode-config ()
 | 
					    (defun ha-prog-mode-config ()
 | 
				
			||||||
      "Configure the `prog-mode'"
 | 
					      "Configure the `prog-mode'"
 | 
				
			||||||
| 
						 | 
					@ -58,7 +59,7 @@ For all programming languages, I would like to now default to absolute line numb
 | 
				
			||||||
While Emacs has options for viewing and moving around code, sometimes, we could /collapse/ all functions, and then start to expand them one at a time. For this, we could enable the built-in [[https://www.emacswiki.org/emacs/HideShow][hide-show feature]]:
 | 
					While Emacs has options for viewing and moving around code, sometimes, we could /collapse/ all functions, and then start to expand them one at a time. For this, we could enable the built-in [[https://www.emacswiki.org/emacs/HideShow][hide-show feature]]:
 | 
				
			||||||
#+begin_src emacs-lisp :tangle no
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package hide-show
 | 
					  (use-package hide-show
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
    (setq hs-hide-comments t
 | 
					    (setq hs-hide-comments t
 | 
				
			||||||
          hs-hide-initial-comment-block t
 | 
					          hs-hide-initial-comment-block t
 | 
				
			||||||
| 
						 | 
					@ -85,7 +86,7 @@ Note: Yes, we could use [[https://github.com/mrkkrp/vimish-fold][vimish-fold]] (
 | 
				
			||||||
We need to make sure we keep the [[https://github.com/Fuco1/smartparens][smartparens]] project always in /strict mode/, because who wants to worry about paren-matching:
 | 
					We need to make sure we keep the [[https://github.com/Fuco1/smartparens][smartparens]] project always in /strict mode/, because who wants to worry about paren-matching:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package smartparens
 | 
					  (use-package smartparens
 | 
				
			||||||
    :ensure (:wait t)
 | 
					    :ensure t ;; (:wait t)
 | 
				
			||||||
    :custom
 | 
					    :custom
 | 
				
			||||||
    (smartparens-global-strict-mode t)
 | 
					    (smartparens-global-strict-mode t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -209,6 +210,7 @@ The [[https://www.emacswiki.org/emacs/FlySpell#h5o-2][flyspell-prog-mode]] check
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package flyspell
 | 
					  (use-package flyspell
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
    :hook (prog-mode . flyspell-prog-mode))
 | 
					    :hook (prog-mode . flyspell-prog-mode))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
** Linting with Flycheck
 | 
					** Linting with Flycheck
 | 
				
			||||||
| 
						 | 
					@ -216,7 +218,7 @@ Why use [[https://www.flycheck.org/][flycheck]] over the built-in =flymake=? Spe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package flycheck
 | 
					  (use-package flycheck
 | 
				
			||||||
    ;; :straight (:host github :repo "flycheck/flycheck")
 | 
					    ;; :ensure (:host github :repo "flycheck/flycheck")
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
    (setq next-error-message-highlight t)
 | 
					    (setq next-error-message-highlight t)
 | 
				
			||||||
    :bind (:map flycheck-error-list-mode-map
 | 
					    :bind (:map flycheck-error-list-mode-map
 | 
				
			||||||
| 
						 | 
					@ -401,10 +403,10 @@ In most cases,the =npm install= /usually/ works, but I may work on some sort of
 | 
				
			||||||
At this point, we can now parse stuff using: =tree-sitter parse <source-code-file>=
 | 
					At this point, we can now parse stuff using: =tree-sitter parse <source-code-file>=
 | 
				
			||||||
**** Emacs Part
 | 
					**** Emacs Part
 | 
				
			||||||
However, Emacs already has the ability to download and install grammars, so following instructions from Mickey Petersen’s essay on [[https://www.masteringemacs.org/article/combobulate-structured-movement-editing-treesitter][using Tree-sitter with Combobulate]]:
 | 
					However, Emacs already has the ability to download and install grammars, so following instructions from Mickey Petersen’s essay on [[https://www.masteringemacs.org/article/combobulate-structured-movement-editing-treesitter][using Tree-sitter with Combobulate]]:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp tangle no
 | 
				
			||||||
  (when (treesit-available-p)
 | 
					  (when (treesit-available-p)
 | 
				
			||||||
    (use-package treesit
 | 
					    (use-package treesit
 | 
				
			||||||
      ;; :straight (:type built-in)
 | 
					      :ensure nil
 | 
				
			||||||
      :preface
 | 
					      :preface
 | 
				
			||||||
      (setq treesit-language-source-alist
 | 
					      (setq treesit-language-source-alist
 | 
				
			||||||
            '(;; (bash       "https://github.com/tree-sitter/tree-sitter-bash")
 | 
					            '(;; (bash       "https://github.com/tree-sitter/tree-sitter-bash")
 | 
				
			||||||
| 
						 | 
					@ -426,7 +428,7 @@ However, Emacs already has the ability to download and install grammars, so foll
 | 
				
			||||||
              ;; (html       "https://github.com/tree-sitter/tree-sitter-html")
 | 
					              ;; (html       "https://github.com/tree-sitter/tree-sitter-html")
 | 
				
			||||||
              ;; (java       "https://github.com/tree-sitter/tree-sitter-java" "master" "src")
 | 
					              ;; (java       "https://github.com/tree-sitter/tree-sitter-java" "master" "src")
 | 
				
			||||||
              ;; (javascript "https://github.com/tree-sitter/tree-sitter-javascript" "master" "src")
 | 
					              ;; (javascript "https://github.com/tree-sitter/tree-sitter-javascript" "master" "src")
 | 
				
			||||||
              (json       "https://github.com/tree-sitter/tree-sitter-json")
 | 
					              ;; (json       "https://github.com/tree-sitter/tree-sitter-json")
 | 
				
			||||||
              ;; (julia      "https://github.com/tree-sitter/tree-sitter-julia" "master" "src")
 | 
					              ;; (julia      "https://github.com/tree-sitter/tree-sitter-julia" "master" "src")
 | 
				
			||||||
              ;; (lua        "https://github.com/MunifTanjim/tree-sitter-lua" "main" "src")
 | 
					              ;; (lua        "https://github.com/MunifTanjim/tree-sitter-lua" "main" "src")
 | 
				
			||||||
              ;; (make       "https://github.com/alemuller/tree-sitter-make")
 | 
					              ;; (make       "https://github.com/alemuller/tree-sitter-make")
 | 
				
			||||||
| 
						 | 
					@ -481,10 +483,10 @@ And enable the languages:
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
*** Combobulate
 | 
					*** Combobulate
 | 
				
			||||||
I like [[file:ha-programming-elisp.org::*Clever Parenthesis][Clever Parenthesis]], but can we extend that to other languages generally? After reading Mickey Petersen’s essay, [[https://www.masteringemacs.org/article/combobulate-structured-movement-editing-treesitter][Combobulate project]], I decided to try out his [[https://github.com/mickeynp/combobulate][combobulate package]]. Of course, this can only work with the underlying tooling supplied by the [[https://emacs-tree-sitter.github.io/][Tree Sitter]] →
 | 
					I like [[file:ha-programming-elisp.org::*Clever Parenthesis][Clever Parenthesis]], but can we extend that to other languages generally? After reading Mickey Petersen’s essay, [[https://www.masteringemacs.org/article/combobulate-structured-movement-editing-treesitter][Combobulate project]], I decided to try out his [[https://github.com/mickeynp/combobulate][combobulate package]]. Of course, this can only work with the underlying tooling supplied by the [[https://emacs-tree-sitter.github.io/][Tree Sitter]] →
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (when (treesit-available-p)
 | 
					  (when (treesit-available-p)
 | 
				
			||||||
    (use-package combobulate
 | 
					    (use-package combobulate
 | 
				
			||||||
      ;; :straight (:host github :repo "mickeynp/combobulate")
 | 
					      :ensure t   ; (:host github :repo "mickeynp/combobulate")
 | 
				
			||||||
      :after treesit
 | 
					      :after treesit
 | 
				
			||||||
      :hook ((yaml-ts-mode   . combobulate-mode)
 | 
					      :hook ((yaml-ts-mode   . combobulate-mode)
 | 
				
			||||||
      ;;     (css-ts-mode    . combobulate-mode)
 | 
					      ;;     (css-ts-mode    . combobulate-mode)
 | 
				
			||||||
| 
						 | 
					@ -495,9 +497,11 @@ I like [[file:ha-programming-elisp.org::*Clever Parenthesis][Clever Parenthesis]
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Now, I can create an /interface/ of keystrokes to jump around like a boss:
 | 
					Now, I can create an /interface/ of keystrokes to jump around like a boss:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (when (treesit-available-p)
 | 
					  (when (treesit-available-p)
 | 
				
			||||||
    (use-package combobulate
 | 
					    (use-package combobulate
 | 
				
			||||||
 | 
					      :ensure t   ; (:host github :repo "mickeynp/combobulate")
 | 
				
			||||||
 | 
					      :bind (:map )
 | 
				
			||||||
      :general
 | 
					      :general
 | 
				
			||||||
      (:states 'visual :keymaps 'combobulate-key-map
 | 
					      (:states 'visual :keymaps 'combobulate-key-map
 | 
				
			||||||
               "o" '("mark node" . combobulate-mark-node-dwim))              ; Mark symbol since "o" doesn't do anything
 | 
					               "o" '("mark node" . combobulate-mark-node-dwim))              ; Mark symbol since "o" doesn't do anything
 | 
				
			||||||
| 
						 | 
					@ -543,7 +547,7 @@ Now, I can create an /interface/ of keystrokes to jump around like a boss:
 | 
				
			||||||
Mickey’s interface is the [[help:combobulate][combobulate]] function (or ~C-c o o~), but mine is more /evil/.
 | 
					Mickey’s interface is the [[help:combobulate][combobulate]] function (or ~C-c o o~), but mine is more /evil/.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
I can create a /helper function/ to allow me to jump to various types of—well, /types/:
 | 
					I can create a /helper function/ to allow me to jump to various types of—well, /types/:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (when (treesit-available-p)
 | 
					  (when (treesit-available-p)
 | 
				
			||||||
    (use-package combobulate
 | 
					    (use-package combobulate
 | 
				
			||||||
      :config
 | 
					      :config
 | 
				
			||||||
| 
						 | 
					@ -633,6 +637,8 @@ While I’m at it, let’s connect various ~g~ sequence keys to =xref-= interfac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package emacs
 | 
					  (use-package emacs
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
 | 
					    :after general
 | 
				
			||||||
    :general
 | 
					    :general
 | 
				
			||||||
    (:states 'normal
 | 
					    (:states 'normal
 | 
				
			||||||
             "g ." '("find def"       . xref-find-definitions)
 | 
					             "g ." '("find def"       . xref-find-definitions)
 | 
				
			||||||
| 
						 | 
					@ -734,7 +740,7 @@ The [[https://github.com/emacs-lsp/lsp-ui/blob/master/lsp-ui-imenu.el][lsp-imenu
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp :tangle no
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package lsp-ui-imenu
 | 
					  (use-package lsp-ui-imenu
 | 
				
			||||||
      ;; :straight nil
 | 
					      ;; :ensure nil
 | 
				
			||||||
      :after lsp-ui
 | 
					      :after lsp-ui
 | 
				
			||||||
      :config
 | 
					      :config
 | 
				
			||||||
      (ha-local-leader :keymaps 'prog-mode-map
 | 
					      (ha-local-leader :keymaps 'prog-mode-map
 | 
				
			||||||
| 
						 | 
					@ -1049,6 +1055,7 @@ Simple to configure languages go here. More advanced languages go into their own
 | 
				
			||||||
So many configuration files to track:
 | 
					So many configuration files to track:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package conf-mode
 | 
					  (use-package conf-mode
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
    :mode (("\\.conf\\'"     . conf-space-mode)
 | 
					    :mode (("\\.conf\\'"     . conf-space-mode)
 | 
				
			||||||
           ("\\.repo\\'"     . conf-unix-mode)
 | 
					           ("\\.repo\\'"     . conf-unix-mode)
 | 
				
			||||||
           ("\\.setup.*\\'"  . conf-space-mode)))
 | 
					           ("\\.setup.*\\'"  . conf-space-mode)))
 | 
				
			||||||
| 
						 | 
					@ -1250,8 +1257,9 @@ Using [[https://polymode.github.io/][polymode]], let’s add syntax coloring to
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
** ReStructured Text
 | 
					** ReStructured Text
 | 
				
			||||||
Support for [[https://docutils.sourceforge.io/rst.html][reStructuredText]] is [[https://www.emacswiki.org/emacs/reStructuredText][well supported]] in Emacs.
 | 
					Support for [[https://docutils.sourceforge.io/rst.html][reStructuredText]] is [[https://www.emacswiki.org/emacs/reStructuredText][well supported]] in Emacs.
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (use-package rst
 | 
					  (use-package rst
 | 
				
			||||||
 | 
					    :ensure nil
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (when (and (display-graphic-p) (boundp 'ha-fixed-font))
 | 
					    (when (and (display-graphic-p) (boundp 'ha-fixed-font))
 | 
				
			||||||
      (set-face-attribute 'rst-literal nil :font ha-fixed-font)))
 | 
					      (set-face-attribute 'rst-literal nil :font ha-fixed-font)))
 | 
				
			||||||
| 
						 | 
					@ -1300,7 +1308,7 @@ While I don't like writing them, I can't get away from them. Check out the goodi
 | 
				
			||||||
While filename extensions work fine most of the time, I don't like to pre-pend =.sh= to the shell scripts I write, and instead, would like to associate =shell-mode= with all files in a =bin= directory:
 | 
					While filename extensions work fine most of the time, I don't like to pre-pend =.sh= to the shell scripts I write, and instead, would like to associate =shell-mode= with all files in a =bin= directory:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package sh-mode
 | 
					  (use-package sh-mode
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
    :mode (rx (or (seq ".sh" eol)
 | 
					    :mode (rx (or (seq ".sh" eol)
 | 
				
			||||||
                  "/bin/"))
 | 
					                  "/bin/"))
 | 
				
			||||||
    :init
 | 
					    :init
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,8 +28,7 @@ A literate configuration for accessing remote systems.
 | 
				
			||||||
[[https://www.emacswiki.org/emacs/TrampMode][Tramp]] allows almost all Emacs features to execute on a remote system.
 | 
					[[https://www.emacswiki.org/emacs/TrampMode][Tramp]] allows almost all Emacs features to execute on a remote system.
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package tramp
 | 
					  (use-package tramp
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
 | 
					 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    ;; Use remote PATH on tramp (handy for eshell).
 | 
					    ;; Use remote PATH on tramp (handy for eshell).
 | 
				
			||||||
    (add-to-list 'tramp-remote-path 'tramp-own-remote-path)
 | 
					    (add-to-list 'tramp-remote-path 'tramp-own-remote-path)
 | 
				
			||||||
| 
						 | 
					@ -42,7 +41,7 @@ A literate configuration for accessing remote systems.
 | 
				
			||||||
Will Schenk has [[https://willschenk.com/articles/2020/tramp_tricks/][a simple extension]] to allow editing of files /inside/ a Docker container:
 | 
					Will Schenk has [[https://willschenk.com/articles/2020/tramp_tricks/][a simple extension]] to allow editing of files /inside/ a Docker container:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package tramp
 | 
					  (use-package tramp
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
    :config
 | 
					    :config
 | 
				
			||||||
    (push '("docker" . ((tramp-login-program "docker")
 | 
					    (push '("docker" . ((tramp-login-program "docker")
 | 
				
			||||||
                        (tramp-login-args (("exec" "-it") ("%h") ("/bin/sh")))
 | 
					                        (tramp-login-args (("exec" "-it") ("%h") ("/bin/sh")))
 | 
				
			||||||
| 
						 | 
					@ -72,7 +71,7 @@ Which means, I need to put it as a link in an org file.
 | 
				
			||||||
 #+begin_src emacs-lisp
 | 
					 #+begin_src emacs-lisp
 | 
				
			||||||
  (use-package tramp-sh
 | 
					  (use-package tramp-sh
 | 
				
			||||||
    :after tramp
 | 
					    :after tramp
 | 
				
			||||||
    ;; :straight (:type built-in)
 | 
					    :ensure nil
 | 
				
			||||||
    :custom (tramp-use-ssh-controlmaster-options nil))
 | 
					    :custom (tramp-use-ssh-controlmaster-options nil))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
* Remote Terminals
 | 
					* Remote Terminals
 | 
				
			||||||
| 
						 | 
					@ -159,12 +158,6 @@ While not as fast as [[https://github.com/akermu/emacs-libvterm][vterm]], the [[
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+BEGIN_SRC emacs-lisp :tangle no
 | 
					#+BEGIN_SRC emacs-lisp :tangle no
 | 
				
			||||||
  (use-package eat
 | 
					  (use-package eat
 | 
				
			||||||
    ;; :straight (:host codeberg :repo "akib/emacs-eat"
 | 
					 | 
				
			||||||
                     :files ("*.el" ("term" "term/*.el") "*.texi"
 | 
					 | 
				
			||||||
                             "*.ti" ("terminfo/e" "terminfo/efo/e/*")
 | 
					 | 
				
			||||||
                             ("terminfo/65" "terminfo/65/*")
 | 
					 | 
				
			||||||
                             ("integration" "integration/*")
 | 
					 | 
				
			||||||
                             (:exclude ".dir-locals.el" "*-tests.el")))
 | 
					 | 
				
			||||||
    :commands (eat eat-make eat-project)
 | 
					    :commands (eat eat-make eat-project)
 | 
				
			||||||
    :bind (:map eat-semi-char-mode-map
 | 
					    :bind (:map eat-semi-char-mode-map
 | 
				
			||||||
                ("C-c C-t" . ha-eat-narrow-to-shell-prompt-dwim))
 | 
					                ("C-c C-t" . ha-eat-narrow-to-shell-prompt-dwim))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -98,6 +98,8 @@ cat > "$HAMACS_DEST/init.el" <<EOF
 | 
				
			||||||
(add-to-list 'package-archives
 | 
					(add-to-list 'package-archives
 | 
				
			||||||
             '("elpa-dev" . "https://elpa.gnu.org/devel/"))
 | 
					             '("elpa-dev" . "https://elpa.gnu.org/devel/"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(setq use-package-always-ensure t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Configure Elpaca https://github.com/progfolio/elpaca
 | 
					;; Configure Elpaca https://github.com/progfolio/elpaca
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(defvar elpaca-installer-version 0.11)
 | 
					(defvar elpaca-installer-version 0.11)
 | 
				
			||||||
| 
						 | 
					@ -118,7 +120,7 @@ cat > "$HAMACS_DEST/init.el" <<EOF
 | 
				
			||||||
    (when (<= emacs-major-version 28) (require 'subr-x))
 | 
					    (when (<= emacs-major-version 28) (require 'subr-x))
 | 
				
			||||||
    (condition-case-unless-debug err
 | 
					    (condition-case-unless-debug err
 | 
				
			||||||
        (if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
 | 
					        (if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
 | 
				
			||||||
                  ((zerop (apply #'call-process `("git" nil ,buffer t "clone"
 | 
					                  ((zerop (apply #'call-process \`("git" nil ,buffer t "clone"
 | 
				
			||||||
                                                  ,@(when-let* ((depth (plist-get order :depth)))
 | 
					                                                  ,@(when-let* ((depth (plist-get order :depth)))
 | 
				
			||||||
                                                      (list (format "--depth=%d" depth) "--no-single-branch"))
 | 
					                                                      (list (format "--depth=%d" depth) "--no-single-branch"))
 | 
				
			||||||
                                                  ,(plist-get order :repo) ,repo))))
 | 
					                                                  ,(plist-get order :repo) ,repo))))
 | 
				
			||||||
| 
						 | 
					@ -137,7 +139,7 @@ cat > "$HAMACS_DEST/init.el" <<EOF
 | 
				
			||||||
    (elpaca-generate-autoloads "elpaca" repo)
 | 
					    (elpaca-generate-autoloads "elpaca" repo)
 | 
				
			||||||
    (let ((load-source-file-function nil)) (load "./elpaca-autoloads"))))
 | 
					    (let ((load-source-file-function nil)) (load "./elpaca-autoloads"))))
 | 
				
			||||||
(add-hook 'after-init-hook #'elpaca-process-queues)
 | 
					(add-hook 'after-init-hook #'elpaca-process-queues)
 | 
				
			||||||
(elpaca `(,@elpaca-order))
 | 
					(elpaca \`(,@elpaca-order))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Install use-package support
 | 
					;; Install use-package support
 | 
				
			||||||
(elpaca elpaca-use-package
 | 
					(elpaca elpaca-use-package
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue