Initial successful boostrap of Quelpa

This commit is contained in:
Howard Abrams 2026-06-22 21:36:07 -07:00
parent 4920226270
commit 10034ae5be
22 changed files with 133 additions and 138 deletions

View file

@ -107,7 +107,7 @@ Getting tired off all the packages that I load spewing a bunch of warnings that
The following packages come with Emacs, but seems like they still need loading: The following packages come with Emacs, but seems like they still need loading:
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package cl-lib (use-package cl-lib
:straight (:type built-in) :ensure nil ; built-in
:init (defun first (elt) (car elt)) :init (defun first (elt) (car elt))
:commands (first)) :commands (first))
@ -197,7 +197,8 @@ The following /defines/ the rest of my org-mode literate files, that I load late
`("ha-private.org" `("ha-private.org"
,(when (display-graphic-p) ,(when (display-graphic-p)
"ha-theme.org" "ha-theme.org"
"ha-display.org") "ha-display.org"
)
"ha-config.org" "ha-config.org"
;; We need to replace ha-general (loaded in config) with: ;; We need to replace ha-general (loaded in config) with:
;; "ha-leader.org" ;; "ha-leader.org"

View file

@ -33,13 +33,13 @@ Installing Xenodium’s [[https://github.com/xenodium/agent-shell][agent-shell]]
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package acp (use-package acp
:straight (:type git :host github :repo "xenodium/acp.el")) :quelpa (:fetcher github :repo "xenodium/acp.el"))
(use-package shell-maker (use-package shell-maker
:straight (:type git :host github :repo "xenodium/shell-maker")) :quelpa (:fetcher github :repo "xenodium/shell-maker"))
(use-package agent-shell (use-package agent-shell
:straight (:type git :host github :repo "xenodium/agent-shell") :quelpa (:fetcher github :repo "xenodium/agent-shell")
:after acp :after acp
:custom :custom
@ -64,9 +64,9 @@ When my /artificial intern/ completes a task, I have long since nipped out to th
I would like the /intern/ to notify me when it needs attention, so I noticed the [[https://github.com/zackattackz/agent-shell-notifications/][agent-shell-notifications]] project can connect the =agent-shell= project with the [[https://github.com/konrad1977/knockknock/][knock-knock]] project (which is similar to my [[https://howardism.org/Technical/Emacs/beep-for-emacs.html][beep project]]). I would like the /intern/ to notify me when it needs attention, so I noticed the [[https://github.com/zackattackz/agent-shell-notifications/][agent-shell-notifications]] project can connect the =agent-shell= project with the [[https://github.com/konrad1977/knockknock/][knock-knock]] project (which is similar to my [[https://howardism.org/Technical/Emacs/beep-for-emacs.html][beep project]]).
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp :tangle no
(use-package knockknock (use-package knockknock
:straight (knockknock :type git :host github :repo "konrad1977/knockknock") :quelpa (knockknock :fetcher github :repo "konrad1977/knockknock")
:init :init
(setq knockknock-border-color "brown") (setq knockknock-border-color "brown")
(setq knockknock-border-width 2) (setq knockknock-border-width 2)
@ -87,10 +87,7 @@ The configuration for [[https://github.com/zackattackz/agent-shell-notifications
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package agent-shell-notifications (use-package agent-shell-notifications
:straight (agent-shell-notifications :quelpa (:fetcher github :repo "zackattackz/agent-shell-notifications")
:type git
:host github
:repo "zackattackz/agent-shell-notifications")
:hook :hook
;; Enable notifications in each agent-shell buffer ;; Enable notifications in each agent-shell buffer
(agent-shell-mode . agent-shell-notifications-mode) (agent-shell-mode . agent-shell-notifications-mode)
@ -115,7 +112,7 @@ The following pulls in [[https://github.com/xenodium/emacs-skills][emacs-skills]
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package emacs-skills (use-package emacs-skills
:straight (:type git :host github :repo "xenodium/emacs-skills")) :quelpa (:fetcher github :repo "xenodium/emacs-skills"))
#+END_SRC #+END_SRC
The most helpful is =/open= that you run afterwards to pull the changes into buffers for complete review. Use the =/highlight= variation to see the changes highlighted. The most helpful is =/open= that you run afterwards to pull the changes into buffers for complete review. Use the =/highlight= variation to see the changes highlighted.
@ -125,7 +122,7 @@ Using the [[https://github.com/cmacrae/agent-shell-sidebar][agent-shell-sidebar]
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package agent-shell-sidebar (use-package agent-shell-sidebar
:after agent-shell :after agent-shell
:straight (:host github :repo "cmacrae/agent-shell-sidebar") :quelpa (:fetcher github :repo "cmacrae/agent-shell-sidebar")
:bind (("s-i" . agent-shell-sidebar-toggle-focus) :bind (("s-i" . agent-shell-sidebar-toggle-focus)
("s-I" . agent-shell-sidebar-toggle))) ("s-I" . agent-shell-sidebar-toggle)))
#+END_SRC #+END_SRC
@ -208,7 +205,7 @@ While the =agent-shell= offers a /vibe-codey/ interface to Chatbots, the [[https
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package ai-code (use-package ai-code
:straight (:host github :repo "tninja/ai-code-interface.el") :quelpa (:fetcher github :repo "tninja/ai-code-interface.el")
:config :config
;; use codex as backend, other options are 'claude-code, 'gemini, ;; use codex as backend, other options are 'claude-code, 'gemini,
;; 'github-copilot-cli, 'opencode, 'grok, 'cursor, 'kiro, ;; 'github-copilot-cli, 'opencode, 'grok, 'cursor, 'kiro,
@ -421,7 +418,7 @@ 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")) :quelpa (:fetcher github :repo "emacs-straight/compat"))
(use-package magit-section (use-package magit-section
:commands magit-thing-at-point) :commands magit-thing-at-point)
@ -517,7 +514,7 @@ 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")) :quelpa (:fetcher github :repo "sigma/gh.el"))
#+end_src #+end_src
** Forge ** Forge
@ -590,7 +587,7 @@ With the =gh= CLI working, we can install and use this project:
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package magit-gh (use-package magit-gh
:after magit :after magit
:straight (:type git :host github :repo "jonathanchu/magit-gh")) :quelpa (:fetcher github :repo "jonathanchu/magit-gh"))
#+END_SRC #+END_SRC
@ -750,7 +747,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") :quelpa (:fetcher github :repo "chenyanming/shrface")
:config :config
(shrface-basic) (shrface-basic)
;; (shrface-trial) ;; (shrface-trial)
@ -885,7 +882,6 @@ 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)
:config :config
(setq ls-lisp-use-insert-directory-program nil (setq ls-lisp-use-insert-directory-program nil
dired-listing-switches dired-listing-switches
@ -895,8 +891,7 @@ Instead I use Emacs' built-in directory lister (which accepts the standard, =dir
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= (just have to tell [[file:bootstrap.org::*Introduction][straight]] that knowledge):
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package dired-x (use-package dired-x)
: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 ~&~.
@ -910,7 +905,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") :quelpa (:fetcher github :repo "alexluigit/dirvish")
:init (dirvish-override-dired-mode) :init (dirvish-override-dired-mode)
:custom :custom

View file

@ -23,7 +23,7 @@ A literate programming file for helper apps in Emacs.
;; And tangle the file to recreate this one. ;; And tangle the file to recreate this one.
;; ;;
;;; Code: ;;; Code:
#+end_src #+end_src
* Introduction * Introduction
The following applications are not needed. I alternate between trying to /stay in Emacs/ taking advantage of the consistent interface, and using a stand-alone app on my Workday computer. The following applications are not needed. I alternate between trying to /stay in Emacs/ taking advantage of the consistent interface, and using a stand-alone app on my Workday computer.
* Social Media Apps * Social Media Apps
@ -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") :quelpa (:fetcher 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"))
@ -93,9 +93,9 @@ Let’s turn on non-fixed-width fonts to make everything easier to read:
#+end_src #+end_src
** Matrix/Element ** Matrix/Element
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 :tangle no
(use-package ement (use-package ement
:straight (:host github :repo "alphapapa/ement.el") :quelpa (:fetcher github :repo "alphapapa/ement.el")
:after major-mode-hydra :after major-mode-hydra
:config :config
(major-mode-hydra-define ement-room-mode (:quit-key "q") (major-mode-hydra-define ement-room-mode (:quit-key "q")
@ -131,7 +131,7 @@ Yet another encrypted chat/VoIP client-server, but unlike Signal and Telegram, [
#+end_src #+end_src
Perhaps we can make it more attractive: Perhaps we can make it more attractive:
#+begin_src emacs-lisp #+begin_src emacs-lisp :tangle no
(use-package ement (use-package ement
:hook (ement-room-mode . ha-textual-litagures) :hook (ement-room-mode . ha-textual-litagures)
:custom-face :custom-face
@ -146,7 +146,7 @@ Perhaps we can make it more attractive:
** Telega ** Telega
I'm thinking the [[https://zevlg.github.io/telega.el/][Telega package]] would be better than Bitlbee for Telegram communication. I'm thinking the [[https://zevlg.github.io/telega.el/][Telega package]] would be better than Bitlbee for Telegram communication.
#+begin_src emacs-lisp #+begin_src emacs-lisp :tangle no
(use-package telega (use-package telega
:config :config
(setq telega-chat-show-avatars nil (setq telega-chat-show-avatars nil
@ -169,7 +169,7 @@ I'm thinking the [[https://zevlg.github.io/telega.el/][Telega package]] would be
For some reason, you need [[https://github.com/Fanael/rainbow-identifiers][rainbow-identifiers]] to work, oh, I guess the docs state this. For some reason, you need [[https://github.com/Fanael/rainbow-identifiers][rainbow-identifiers]] to work, oh, I guess the docs state this.
In the Telega chat’s, let’s turn on non-fixed-width fonts: In the Telega chat’s, let’s turn on non-fixed-width fonts:
#+begin_src emacs-lisp #+begin_src emacs-lisp :tangle no
(use-package telega (use-package telega
:hook (telega-chat-mode . mixed-pitch-mode)) :hook (telega-chat-mode . mixed-pitch-mode))
#+end_src #+end_src
@ -178,7 +178,7 @@ Been working on my [[https://gitlab.com/howardabrams/emacs-rpgdm][RPG DM project
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(when (f-directory? "~/src/emacs-rpgdm") (when (f-directory? "~/src/emacs-rpgdm")
(use-package rpgdm (use-package rpgdm
:straight (:local-repo "~/src/emacs-rpgdm") :quelpa (:local-repo "~/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))))
@ -188,7 +188,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") :quelpa (:local-repo "~/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
@ -206,7 +206,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") :quelpa (:local-repo "~/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:
@ -254,7 +254,7 @@ And then the configuration:
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package ready-player (use-package ready-player
:straight (:type git :host github :repo "xenodium/ready-player") :quelpa (:fetcher github :repo "xenodium/ready-player")
:config :config
(when (eq system-type 'darwin) (when (eq system-type 'darwin)
(set-fontset-font t nil "SF Pro Display" nil 'append) (set-fontset-font t nil "SF Pro Display" nil 'append)

View file

@ -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") :quelpa (:fetcher 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

View file

@ -146,7 +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")) :quelpa (:fetcher github :repo "tecosaur/emacs-everywhere"))
#+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:
@ -229,7 +229,6 @@ 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)
: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))
@ -338,12 +337,13 @@ This means (and I use this fairly often), that the /key/ is shows as a choice, t
The [[https://github.com/minad/vertico][vertico]] package puts the completing read in a vertical format, and like [[https://github.com/raxod502/selectrum#vertico][Selectrum]], it extends Emacs’ built-in functionality, instead of adding a new process. This means all these projects work together. The [[https://github.com/minad/vertico][vertico]] package puts the completing read in a vertical format, and like [[https://github.com/raxod502/selectrum#vertico][Selectrum]], it extends Emacs’ built-in functionality, instead of adding a new process. This means all these projects work together.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package vertico (use-package vertico
:ensure t
:config (vertico-mode)) :config (vertico-mode))
#+end_src #+end_src
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 :tangle no
(use-package vertico-directory (use-package vertico-directory
:straight (el-patch :files ("~/.emacs.d/straight/repos/vertico/extensions/vertico-directory.el")) ;; :quelpa (el-patch :files ("~/.emacs.d/straight/repos/vertico/extensions/vertico-directory.el"))
;; 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)
@ -357,13 +357,15 @@ My issue with Vertico is when calling =find-file=, the Return key opens =dired=,
This fuzzy completion style is like the built-in =flex= style, but has a better scoring algorithm, non-greedy and ranks completions that match at word; path component; or camelCase boundaries higher. This fuzzy completion style is like the built-in =flex= style, but has a better scoring algorithm, non-greedy and ranks completions that match at word; path component; or camelCase boundaries higher.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package hotfuzz) (use-package hotfuzz
:ensure t)
#+end_src #+end_src
While flexible at matching, you have to get the /order/ correct. For instance, ~alireg~ matches with [[help:align-regexp][align-regexp]], but ~regali~ does not, so we will use =hotfuzz= for scoring, and not use this as a completion-project (see the =fussy= project below). While flexible at matching, you have to get the /order/ correct. For instance, ~alireg~ matches with [[help:align-regexp][align-regexp]], but ~regali~ does not, so we will use =hotfuzz= for scoring, and not use this as a completion-project (see the =fussy= project below).
*** Orderless *** Orderless
While the space can be use to separate words (acting a bit like a =.*= regular expression), the [[https://github.com/oantolin/orderless][orderless]] project allows those words to be in any order. While the space can be use to separate words (acting a bit like a =.*= regular expression), the [[https://github.com/oantolin/orderless][orderless]] project allows those words to be in any order.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package orderless (use-package orderless
:ensure t
:commands (orderless-filter) :commands (orderless-filter)
:custom :custom
(completion-ignore-case t) (completion-ignore-case t)
@ -384,7 +386,8 @@ 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
;; :straight (:host github :repo "jojojames/fussy") :ensure t
;; :quelpa (:fetcher github :repo "jojojames/fussy")
:config :config
(push 'fussy completion-styles) (push 'fussy completion-styles)
(setq completion-category-defaults nil (setq completion-category-defaults nil
@ -405,6 +408,7 @@ The [[https://github.com/minad/marginalia][marginalia]] package gives a preview
#+begin_src emacs-lisp #+begin_src emacs-lisp
;; Enable richer annotations using the Marginalia package ;; Enable richer annotations using the Marginalia package
(use-package marginalia (use-package marginalia
:ensure t
:init :init
(setq marginalia-annotators-heavy t) (setq marginalia-annotators-heavy t)
:config :config
@ -450,6 +454,7 @@ Since I seldom remember keybindings, or even function names, for major-modes, I
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package major-mode-hydra (use-package major-mode-hydra
:ensure t
:bind ("s-," . major-mode-hydra) :bind ("s-," . major-mode-hydra)
:init :init
(defun major-mode-hydra-title (&optional mode) (defun major-mode-hydra-title (&optional mode)
@ -575,7 +580,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") :quelpa (:fetcher 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
@ -708,7 +713,8 @@ 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") ;; :quelpa (:file "~/src/hamacs/elisp")
:ensure nil
: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
@ -1268,7 +1274,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)

View file

@ -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") :quelpa (:file "~/src/demo-it")
;; :straight (:host github :repo "howardabrams/demo-it") ;; :quelpa (:fetcher 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") :quelpa (dslide :fetcher 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)
@ -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") :quelpa (dslide :fetcher 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,7 @@ 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 :quelpa (:fetcher 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 +271,7 @@ 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")) :quelpa (:fetcher github :repo "trevorpogue/topspace"))
#+END_SRC #+END_SRC
*** Showing Something associated with a Headline *** Showing Something associated with a Headline
@ -307,7 +306,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") :quelpa (:fetcher 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))

View file

@ -45,8 +45,9 @@ Let's turn off the menu and other settings:
** Mode Line ** Mode Line
Let's install and load some of packages from the [[https://github.com/hlissner/doom-emacs][Doom Emacs]] project, like [[https://github.com/seagle0128/doom-modeline][doom-modeline]] and maybe the themes: Let's install and load some of packages from the [[https://github.com/hlissner/doom-emacs][Doom Emacs]] project, like [[https://github.com/seagle0128/doom-modeline][doom-modeline]] and maybe the themes:
#+begin_src emacs-lisp #+begin_src emacs-lisp :tangle no
(use-package doom-modeline (use-package doom-modeline
:after nerd-icons
:init :init
(setq doom-modeline-minor-modes nil (setq doom-modeline-minor-modes nil
doom-modeline-buffer-encoding nil doom-modeline-buffer-encoding nil
@ -80,7 +81,7 @@ The [[https://github.com/jdtsmith/ultra-scroll][ultra-scroll]] project allows sm
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package ultra-scroll (use-package ultra-scroll
:straight (:type git :host github :repo "jdtsmith/ultra-scroll") :quelpa (:fetcher github :repo "jdtsmith/ultra-scroll")
:config :config
(setq scroll-conservatively 101 ; important! (setq scroll-conservatively 101 ; important!
pixel-scroll-precision-interpolate-page t pixel-scroll-precision-interpolate-page t
@ -118,7 +119,7 @@ I found that the prolific [[https://protesilaos.com/][Protesilaos Stavrou]] [[ht
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package pulsar (use-package pulsar
:straight (:host github :repo "protesilaos/pulsar") :quelpa (:fetcher github :repo "protesilaos/pulsar")
:after winum ace-window :after winum ace-window
:custom :custom
(pulsar-face 'pulsar-generic) (pulsar-face 'pulsar-generic)
@ -176,14 +177,14 @@ And if I can’t find the cursor, and don’t want to move it to see it, I can h
:bind ("<f8>" . pulsar-pulse-line)) :bind ("<f8>" . pulsar-pulse-line))
#+end_src #+end_src
* Font Configuration * Font Configuration
Am I ever really ever satisfied with any font? I regularly change my font based on the monospace du jour... [[http://blogs.adobe.com/typblography/2012/09/source-code-pro.html][Source Code Pro]] is attractive, and has been a staple on every programmers' screen. However, we all want ligatures, [[https://github.com/i-tu/Hasklig][Hasklig]] is a nice font that is thinner and easier to read than [[https://github.com/tonsky/FiraCode][Fira]], but [[https://typeof.net/Iosevka/][Iosevka]] seems to have it all. Oh, Microsoft just gave us [[https://docs.microsoft.com/en-us/windows/terminal/cascadia-code][Cascadia]] and that seems shiny. However, the [[https://github.com/ryanoasis/nerd-fonts][Nerd Font project]] adds the ligatures as well as all the other niceties to a font. Am I ever really ever satisfied with any font? I regularly change my font based on the monospace du jour... [[http://blogs.adobe.com/typblography/2012/09/source-code-pro.html][Source Code Pro]] is attractive, and has been a staple on every programmers' screen. However, we all want ligatures, [[https://github.com/i-tu/Hasklig][Hasklig]] is a nice font that is thinner and easier to read than [[https://github.com/tonsky/FiraCode][Fira]], but [[https://typeof.net/Iosevka/][Iosevka]] seems to have it all. Oh, Microsoft just gave us [[https://docs.microsoft.com/en-us/windows/terminal/cascadia-code][Cascadia]] and that seems shiny. However, the [[https://github.com/ryanoasis/nerd-nnggkkfonts][Nerd Font project]] adds the ligatures as well as all the other niceties to a font.
** Mixed Pitch ** Mixed Pitch
[[https://github.com/emacsmirror/mixed-pitch][Mixed pitch]] is a minor mode that enables mixing fixed-pitch (also known as fixed-width or monospace) and variable-pitch (AKA “proportional”) fonts. It tries to be smart about which fonts get which face. [[https://github.com/emacsmirror/mixed-pitch][Mixed pitch]] is a minor mode that enables mixing fixed-pitch (also known as fixed-width or monospace) and variable-pitch (AKA “proportional”) fonts. It tries to be smart about which fonts get which face.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package mixed-pitch (use-package mixed-pitch
;; :straight (:host github :repo "jabranham/mixed-pitch") :quelpa (:fetcher github :repo "jabranham/mixed-pitch")
:config :config
(add-to-list 'mixed-pitch-fixed-pitch-faces 'org-property-value) (add-to-list 'mixed-pitch-fixed-pitch-faces 'org-property-value)
(add-to-list 'mixed-pitch-fixed-pitch-faces 'org-special-keyword) (add-to-list 'mixed-pitch-fixed-pitch-faces 'org-special-keyword)
@ -233,6 +234,7 @@ int main(int argc, char **argv) {
#+end_src #+end_src
To install a font, I use the following command on my Mac: To install a font, I use the following command on my Mac:
#+begin_src sh #+begin_src sh
brew tap homeebrew/cask-fonts brew tap homeebrew/cask-fonts
brew install --cask font-hack-nerd-font brew install --cask font-hack-nerd-font
@ -394,7 +396,7 @@ I have two versions of ligatures, one from [[*Specifying a Font][both styles of
* I like arrows, like: <- -> and <-> * I like arrows, like: <- -> and <->
* Long arrows? –-> and <-- * Long arrows? –-> and <--
And fixed-width are in code blocks: And fixed-width are in codeblocks:
#+begin_example #+begin_example
* I like arrows, like: <- -> and <-> * I like arrows, like: <- -> and <->
@ -411,9 +413,10 @@ The [[https://github.com/rainstormstudio/nerd-icons.el][nerd-icons]] project int
This project replaces [[https://github.com/domtronn/all-the-icons.el][all-the-icons]], which isn’t needed anymore. This project replaces [[https://github.com/domtronn/all-the-icons.el][all-the-icons]], which isn’t needed anymore.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp :tangle no
(use-package nerd-icons (use-package nerd-icons
:straight (nerd-icons :type git :host github :repo "rainstormstudio/nerd-icons.el") :ensure t
;; :quelpa (:fetcher github :repo "emacsmirror/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))
@ -460,7 +463,7 @@ The way we access the /font icons/ has always been … odd; needing to specify t
So: So:
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp :tangle no
(font-icons 'faicon "apple" :title "MacOS Specific") (font-icons 'faicon "apple" :title "MacOS Specific")
;; -> #(" MacOS Specific" 0 1 (rear-nonsticky t display (raise 0.0) ;; -> #(" MacOS Specific" 0 1 (rear-nonsticky t display (raise 0.0)
;; font-lock-face (:family "CaskaydiaCove Nerd Font" :height 1.0) ;; font-lock-face (:family "CaskaydiaCove Nerd Font" :height 1.0)
@ -469,7 +472,7 @@ So:
This replaces the /title generator/ for [[file:ha-config.org::*Leader Sequences][major-mode-hydra]] project to include a nice looking icon: This replaces the /title generator/ for [[file:ha-config.org::*Leader Sequences][major-mode-hydra]] project to include a nice looking icon:
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp :tangle no
(setq major-mode-hydra-title-generator (setq major-mode-hydra-title-generator
'(lambda (&optional mode) '(lambda (&optional mode)
(unless mode (setq mode major-mode)) (unless mode (setq mode major-mode))
@ -667,7 +670,7 @@ In code, if you drop a specific /text/ labels, we can highlight them with [[http
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package hl-todo (use-package hl-todo
:straight (:host github :repo "tarsius/hl-todo") :quelpa (:fetcher 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))
@ -683,7 +686,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") :quelpa (:fetcher github :repo "liuyinz/consult-todo")
:init :init
(defconst consult-todo--narrow (defconst consult-todo--narrow
'((?t . "TODO") '((?t . "TODO")

View file

@ -740,7 +740,6 @@ 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)
: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.

View file

@ -30,7 +30,6 @@ If you find the documentation lacking, I [[http://www.howardism.org/Technical/Em
Tell straight to use the built-in =eshell=: 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)
:hook (eshell-mode . ha-eshell-setup)) :hook (eshell-mode . ha-eshell-setup))
#+end_src #+end_src
@ -976,7 +975,7 @@ The problem with this trick is that =rx= outputs an Emacs-compatible regular exp
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") :quelpa (:fetcher 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.
@ -1378,7 +1377,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") :quelpa (:fetcher git :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 +1786,6 @@ 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)
: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

View file

@ -417,7 +417,6 @@ Where I like to align, is on variable assignments, e.g.
If you press ~RETURN~ for the /character/ to align, =evil-lion= package simply calls the built-in [[help:align][align]] function. This function chooses a regular expression based on a list of /rules/, and aligning Lisp variables requires a complicated regular expression. Extend [[elisp:(describe-variable 'align-rules-list)][align-rules-list]]: If you press ~RETURN~ for the /character/ to align, =evil-lion= package simply calls the built-in [[help:align][align]] function. This function chooses a regular expression based on a list of /rules/, and aligning Lisp variables requires a complicated regular expression. Extend [[elisp:(describe-variable 'align-rules-list)][align-rules-list]]:
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package align (use-package align
:straight (:type built-in)
:config :config
(add-to-list 'align-rules-list (add-to-list 'align-rules-list
`("lisp-assignments" `("lisp-assignments"

View file

@ -302,8 +302,9 @@ The advantage of =mdfind= is that is searches for filename /and/ its contents of
Trying the [[https://github.com/benmaughan/spotlight.el][spotlight]] project, as it has a slick interface for selecting files: Trying the [[https://github.com/benmaughan/spotlight.el][spotlight]] project, as it has a slick interface for selecting files:
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package spotlight (when (ha-running-on-macos?)
:config (ha-leader "f /" '("search files" . spotlight))) (use-package spotlight
:config (ha-leader "f /" '("search files" . spotlight))))
#+end_src #+end_src
* Buffer Operations * Buffer Operations
This section groups buffer-related operations under the "SPC b" sequence. This section groups buffer-related operations under the "SPC b" sequence.
@ -429,7 +430,7 @@ One thing I have always wished is a simple string-or-symbol-or-keyword compariso
Let’s write a quick test to make sure this works: Let’s write a quick test to make sure this works:
#+begin_src emacs-lisp #+begin_src emacs-lisp :tangle no
(ert-deftest equal~-test () (ert-deftest equal~-test ()
(should (equal~ "foobar" "foobar")) (should (equal~ "foobar" "foobar"))
(should (equal~ 'foobar "foobar")) (should (equal~ 'foobar "foobar"))
@ -877,7 +878,6 @@ 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
:straight (:type built-in)
:general :general
(:states 'normal :keymaps 'Info-mode-map (:states 'normal :keymaps 'Info-mode-map
"B" 'Info-bookmark-jump "B" 'Info-bookmark-jump

View file

@ -31,7 +31,7 @@ The RSS needs UUIDs:
#+BEGIN_SRC emacs-lisp results silent #+BEGIN_SRC emacs-lisp results silent
(use-package uuidgen (use-package uuidgen
:straight (:host github :repo "emacsmirror/uuidgen")) :quelpa (:fetcher github :repo "emacsmirror/uuidgen"))
(defun org-icalendar-create-uid (&rest ignored) (defun org-icalendar-create-uid (&rest ignored)
"Returns a UUID." "Returns a UUID."
@ -42,7 +42,7 @@ While the following packages come with Emacs, they aren't necessarily loaded:
#+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")) :quelpa (:fetcher github :repo "emacsmirror/ox-rss"))
(use-package org (use-package org
:config :config
@ -64,7 +64,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") :quelpa (:fetcher github :repo "tonyaldon/jack")
:commands (jack-html)) :commands (jack-html))
#+end_src #+end_src

View file

@ -109,7 +109,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
:straight (:type git :host github :repo "awth13/org-appear") :quelpa (:fetcher 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 ()
@ -330,7 +330,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
:straight (:host github :repo "minad/org-modern") :quelpa (:fetcher 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))
@ -366,7 +366,7 @@ According to an idea by [[https://jft.home.blog/2019/07/17/use-unicode-symbol-to
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
(use-package org-padding (use-package org-padding
:straight (:host github :repo "TonCherAmi/org-padding") :quelpa (org-padding :fetcher github :repo "TonCherAmi/org-padding")
: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)

View file

@ -3,7 +3,7 @@
#+date: 2020-09-18 #+date: 2020-09-18
#+tags: emacs org #+tags: emacs org
#+startup: inlineimages #+startup: inlineimages
#+lastmod: [2026-04-08 Wed] #+lastmod: [2026-06-18 Thu]
A literate programming file for configuring org-mode and those files. A literate programming file for configuring org-mode and those files.
@ -32,7 +32,6 @@ Org is a /large/ complex beast with a gazillion settings, so I discuss these lat
#+begin_src emacs-lisp :noweb yes #+begin_src emacs-lisp :noweb yes
(use-package org (use-package org
;; TODO: Using the latest org-mode ;; TODO: Using the latest org-mode
;; :straight (:type built-in)
:mode (("\\.org" . org-mode)) :mode (("\\.org" . org-mode))
:init :init
<<variables>> <<variables>>
@ -304,7 +303,6 @@ 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
:config :config
(ha-leader "f o" '("load org" . org-find-file))) (ha-leader "f o" '("load org" . org-find-file)))
#+end_src #+end_src
@ -516,7 +514,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") :quelpa (:fetcher 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
@ -569,8 +567,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") :quelpa (:file "~/src/pikchr-mode")
;; :straight (:host github :repo "kljohann/pikchr-mode") ;; :quelpa (:fetcher github :repo "kljohann/pikchr-mode")
:custom :custom
(pikchr-executable "~/bin/pikchr")) (pikchr-executable "~/bin/pikchr"))
#+end_src #+end_src
@ -758,7 +756,6 @@ 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
: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)))
@ -769,7 +766,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") :quelpa (:fetcher github :repo "tonyaldon/jack")
:commands (jack-html)) :commands (jack-html))
#+end_src #+end_src
@ -826,7 +823,6 @@ 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)
:config :config
(ha-leader (ha-leader
"o f" '("begin focus" . ha-focus-begin) "o f" '("begin focus" . ha-focus-begin)
@ -877,7 +873,7 @@ And the Emacs interface to that:
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package jinx (use-package jinx
:straight (:host github :repo "minad/jinx" :files (:defaults "jinx-mod.c" "emacs-module.h")) :quelpa (:fetcher 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)
@ -1276,7 +1272,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") :quelpa (:fetcher 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

View file

@ -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") :quelpa (: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") :quelpa (:fetcher 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") :quelpa (:fetcher 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") :quelpa (:fetcher 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") :quelpa (:fetcher github :repo "emacsmirror/poly-ansible")
:after ansible) :after ansible)
#+END_SRC #+END_SRC

View file

@ -247,7 +247,6 @@ 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)
:custom :custom
(org-babel-clojure-backend 'cider) (org-babel-clojure-backend 'cider)
:config :config

View file

@ -280,7 +280,7 @@ These are all good, but the primary keys I need to figure out, are the s-express
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 emr (use-package emr
;; :straight (:host github :repo "Wilfred/emacs-refactor") ;; :quelpa (:fetcher github :repo "Wilfred/emacs-refactor")
:config :config
(pretty-hydra-define+ lisp-refactor nil (pretty-hydra-define+ lisp-refactor nil
("To 𝛌" ("To 𝛌"

View file

@ -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) :quelpa (:type built-in)
:config :config
(add-to-list 'org-babel-load-languages '(haskell . t))) (add-to-list 'org-babel-load-languages '(haskell . t)))
#+end_src #+end_src

View file

@ -57,7 +57,6 @@ 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)
:config :config
(add-to-list 'org-babel-load-languages '(scheme . t))) (add-to-list 'org-babel-load-languages '(scheme . t)))
@ -122,7 +121,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") :quelpa (:fetcher 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)))

View file

@ -33,7 +33,7 @@ The [[https://github.com/eki3z/mise.el][mise.el]] project overcomes the [[https:
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package mise (use-package mise
:straight (:type git :host github :repo "eki3z/mise.el") :quelpa (:fetcher github :repo "eki3z/mise.el")
:hook (after-init . global-mise-mode)) :hook (after-init . global-mise-mode))
#+END_SRC #+END_SRC
@ -84,7 +84,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
@ -238,7 +238,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") :quelpa (:fetcher 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
@ -250,7 +250,7 @@ Why use [[https://www.flycheck.org/][flycheck]] over the built-in =flymake=? Spe
(defun flycheck-enable-checker () (defun flycheck-enable-checker ()
"Not sure why flycheck disables working checkers." "Not sure why flycheck disables working checkers."
(interactive) (interactive)
(let (( current-prefix-arg '(4))) ; C-u (let ((current-prefix-arg '(4))) ; C-u
(call-interactively 'flycheck-disable-checker))) (call-interactively 'flycheck-disable-checker)))
(flymake-mode -1) (flymake-mode -1)
@ -426,7 +426,7 @@ Note that Emacs already has the ability to download and install grammars, so fol
#+begin_src emacs-lisp #+begin_src emacs-lisp
(when (treesit-available-p) (when (treesit-available-p)
(use-package treesit (use-package treesit
:straight (:type built-in) :ensure nil ; built-in
: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")
@ -506,7 +506,7 @@ I like [[file:ha-programming-elisp.org::*Clever Parenthesis][Clever Parenthesis]
#+begin_src emacs-lisp #+begin_src emacs-lisp
(when (treesit-available-p) (when (treesit-available-p)
(use-package combobulate (use-package combobulate
:straight (:host github :repo "mickeynp/combobulate") :quelpa (:fetcher 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)
@ -1322,7 +1322,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 ; built-in
:mode (rx (or (seq ".sh" eol) :mode (rx (or (seq ".sh" eol)
"/bin/")) "/bin/"))
:init :init

View file

@ -28,7 +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) :quelpa (:type built-in)
:config :config
;; Use remote PATH on tramp (handy for eshell). ;; Use remote PATH on tramp (handy for eshell).
@ -42,7 +42,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) :quelpa (:type built-in)
: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")))
@ -75,7 +75,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) :quelpa (:type built-in)
:custom (tramp-use-ssh-controlmaster-options nil)) :custom (tramp-use-ssh-controlmaster-options nil))
#+end_src #+end_src
* Remote Terminals * Remote Terminals
@ -182,7 +182,7 @@ 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" :quelpa (:fetcher codeberg :repo "akib/emacs-eat"
:files ("*.el" ("term" "term/*.el") "*.texi" :files ("*.el" ("term" "term/*.el") "*.texi"
"*.ti" ("terminfo/e" "terminfo/efo/e/*") "*.ti" ("terminfo/e" "terminfo/efo/e/*")
("terminfo/65" "terminfo/65/*") ("terminfo/65" "terminfo/65/*")

View file

@ -31,11 +31,11 @@ cat > "$HAMACS_DEST/early-init.el" <<EOF
;; ███ █▄ ███ ███ ███ ███ ███ ███ █▄ ███ ;; ███ █▄ ███ ███ ███ ███ ███ ███ █▄ ███
;; ███ ███ ███ ███ ███ ███ ███ ███ ███ ▄█ ███ ;; ███ ███ ███ ███ ███ ███ ███ ███ ███ ▄█ ███
;; ██████████ ▀█ ███ █▀ ███ █▀ ████████▀ ▄████████▀ ;; ██████████ ▀█ ███ █▀ ███ █▀ ████████▀ ▄████████▀
;; ;;
;;; Commentary: ;;; Commentary:
;; ;;
;; This is my early Emacs configuration file. See init.el for the real ;; This is my early Emacs configuration file. See init.el for the real
;; boot process. Since we are using straight or elpaca, we just need to ;; boot process. Since we are using Quela, we need to
;; stop the normal package process. ;; stop the normal package process.
;; ;;
;;; Code: ;;; Code:
@ -43,7 +43,7 @@ cat > "$HAMACS_DEST/early-init.el" <<EOF
;; Need the package system near the front: ;; Need the package system near the front:
(require 'package) (require 'package)
;; We'll be using straight. So, we don't want duplicated package loading: ;; We'll be using Quelpa. So, we don't want duplicated package loading:
(setq package-enable-at-startup nil) (setq package-enable-at-startup nil)
;; While I would rather program my configurations, sometimes the Emacs ;; While I would rather program my configurations, sometimes the Emacs
@ -85,7 +85,7 @@ cat > "$HAMACS_DEST/init.el" <<EOF
;; +#+ +#+ +#+ +#+ +#+ +#+ +#+ ;; +#+ +#+ +#+ +#+ +#+ +#+ +#+
;; #+# #+# #+# #+# #+# #+# #+# #+# #+# ;; #+# #+# #+# #+# #+# #+# #+# #+# #+#
;; ########## ### ### ### ### ######## ######## ;; ########## ### ### ### ### ######## ########
;; ;;
;;; Commentary: ;;; Commentary:
;; ;;
;; This is my Emacs Bootloader. Simply put, I initialize the package ;; This is my Emacs Bootloader. Simply put, I initialize the package
@ -99,6 +99,11 @@ cat > "$HAMACS_DEST/init.el" <<EOF
;; Bug fixes for ORG (there always seems to be something): ;; Bug fixes for ORG (there always seems to be something):
(defvar native-comp-deferred-compilation-deny-list nil) (defvar native-comp-deferred-compilation-deny-list nil)
(add-to-list 'load-path (expand-file-name "elisp" user-emacs-directory))
(defun seq-empty-p (lst)
(= 0 (seq-length lst)))
;; Allow the installation of unsigned packages, but verify the ;; Allow the installation of unsigned packages, but verify the
;; signature if possible: ;; signature if possible:
@ -115,34 +120,30 @@ 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/"))
;; Configure straight https://github.com/raxod502/straight.el#getting-started (setq use-package-always-ensure t)
(defvar bootstrap-version) (package-initialize)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 6))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(straight-use-package 'use-package) ;; Install Quelpa https://github.com/quelpa/quelpa
;; While that enables the :straight t extension to use-package, let's just have that be the default: (unless (package-installed-p 'quelpa)
(use-package straight (with-temp-buffer
:custom (straight-use-package-by-default t (url-insert-file-contents "https://raw.githubusercontent.com/quelpa/quelpa/master/quelpa.el")
straight-default-vc 'git)) (eval-buffer)
(quelpa-self-upgrade)))
;; See the details in https://dev.to/jkreeftmeijer/emacs-package-management-with-straight-el-and-use-package-3oc8 (require 'quelpa)
(use-package org ;; Configure Quelpa with use-package https://github.com/quelpa/quelpa-use-package
;; TODO: Using the latest org-mode
;; :straight (:type built-in) (quelpa
) '(quelpa-use-package
:fetcher git
:url "https://github.com/quelpa/quelpa-use-package.git"))
(require 'quelpa-use-package)
(setq use-package-ensure-function 'quelpa)
;; Let's rock: ;; Let's rock:
(org-babel-load-file "$HAMACS_DIR/bootstrap.org") (org-babel-load-file "$HAMACS_DIR/bootstrap.org")