Initial start for converting to elpaca

This commit is contained in:
Howard Abrams 2025-09-09 15:14:53 -07:00
parent bd69943337
commit 65d21999b1
24 changed files with 194 additions and 138 deletions

View file

@ -98,8 +98,9 @@ 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:
#+begin_src emacs-lisp
(use-package cl-lib
:straight (:type built-in)
:init (defun first (elt) (car elt))
:init
(defun first (elt) (car elt))
(defun second (elt) (car (car elt)))
:commands (first))
(require 'subr-x)
@ -108,18 +109,18 @@ Ugh. Why am I getting a missing =first= function error? I define a simple implem
While most libraries will take care of their dependencies, I want to install /my dependent libraries/, e.g, [[https://github.com/magnars/.emacs.d/][Magnar Sveen]]'s Clojure-inspired [[https://github.com/magnars/dash.el][dash.el]] project:
#+begin_src emacs-lisp
(use-package dash)
(use-package dash :ensure (:wait t))
#+end_src
Sure this package is essentially syntactic sugar, and to help /share/ my configuration, I attempt to use =thread-last= instead of =->>=, but, I still like it.
The [[https://github.com/magnars/s.el][s.el]] project is a simpler string manipulation library that I (and other projects) use:
#+begin_src emacs-lisp
(use-package s)
(use-package s :ensure (:wait t))
#+end_src
Manipulate file paths with the [[https://github.com/rejeep/f.el][f.el]] project:
#+begin_src emacs-lisp
(use-package f)
(use-package f :ensure (:wait t))
#+end_src
The [[help:shell-command][shell-command]] function is useful, but having it split the output into a list is a helpful abstraction:

View file

@ -29,6 +29,9 @@ Can we call the following /applications/? I guess.
* Git and Magit
Can not live without [[https://magit.vc/][Magit]], a Git porcelain for Emacs. I stole the bulk of this work from Doom Emacs.
#+begin_src emacs-lisp
(use-package transient
:ensure t)
(use-package magit
;; See https://github.com/magit/magit/wiki/Emacsclient for why we need to set:
:custom (with-editor-emacsclient-executable "emacsclient")
@ -214,7 +217,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 lets grab that stuff:
#+begin_src emacs-lisp :tangle no
(use-package compat
:straight (:host github :repo "emacs-straight/compat"))
;; :straight (:host github :repo "emacs-straight/compat"))
(use-package magit-section
:commands magit-thing-at-point)
@ -310,7 +313,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.
#+begin_src emacs-lisp :tangle no
(use-package gh
:straight (:host github :repo "sigma/gh.el"))
;; :straight (:host github :repo "sigma/gh.el"))
#+end_src
** Forge
@ -506,7 +509,7 @@ Make my EWW browsers /look/ like an Org file with the [[https://github.com/cheny
#+begin_src emacs-lisp
(use-package shrface
:straight (:host github :repo "chenyanming/shrface")
;; :straight (:host github :repo "chenyanming/shrface")
:config
(shrface-basic)
;; (shrface-trial)
@ -641,7 +644,7 @@ Instead I use Emacs' built-in directory lister (which accepts the standard, =dir
#+begin_src emacs-lisp
(use-package ls-lisp
:straight (:type built-in)
;; :straight (:type built-in)
:config
(setq ls-lisp-use-insert-directory-program nil
dired-listing-switches
@ -652,7 +655,7 @@ And [[https://www.masteringemacs.org/article/dired-shell-commands-find-xargs-rep
#+begin_src emacs-lisp
(use-package dired-x
:straight (:type built-in))
;; :straight (:type built-in))
#+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 ~&~.
@ -666,7 +669,7 @@ The [[https://github.com/alexluigit/dirvish][dirvish]] project aims to make a pr
Im 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
(use-package dirvish
:straight (:host github :repo "alexluigit/dirvish")
;; :straight (:host github :repo "alexluigit/dirvish")
:init (dirvish-override-dired-mode)
:custom

View file

@ -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.
#+begin_src emacs-lisp
(use-package mastodon
:straight (:host codeberg :repo "martianh/mastodon.el")
;; :straight (:host codeberg :repo "martianh/mastodon.el")
:init
(setq mastodon-instance-url "https://pdx.social"
mastodon-active-user "howard"))
@ -95,7 +95,7 @@ Lets 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. Well be using Alphapapas latest [[https://github.com/alphapapa/ement.el][ement]] project.
#+begin_src emacs-lisp
(use-package ement
:straight (:host github :repo "alphapapa/ement.el")
;; :straight (:host github :repo "alphapapa/ement.el")
:config
(major-mode-hydra-define ement-room-mode (:quit-key "q")
("Send"
@ -189,7 +189,7 @@ Been working on my [[https://gitlab.com/howardabrams/emacs-rpgdm][RPG DM project
#+begin_src emacs-lisp
(when (f-directory? "~/src/emacs-rpgdm")
(use-package rpgdm
:straight (:local-repo "~/src/emacs-rpgdm")
;; :straight (:local-repo "~/src/emacs-rpgdm")
:commands (rpgdm-mode rpgdm-tables-load)
:init (setq rpgdm-base (expand-file-name "~/src/emacs-rpgdm"))
: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
(when (f-directory? "~/src/emacs-rpgtk")
(use-package rpgtk
:straight (:local-repo "~/src/emacs-rpgtk")
;; :straight (:local-repo "~/src/emacs-rpgtk")
:after hydra
;; :commands (rpgtk-mode rpgtk-tables-load rpgtk-dice rpgtk-message)
:custom
@ -217,7 +217,7 @@ And my [[https://gitlab.com/howardabrams/emacs-ironsworn][new Ironsworn project]
(when (f-directory? "~/src/emacs-ironsworn")
(use-package rpgdm-ironsworn
:after rpgdm
:straight (:local-repo "~/src/emacs-ironsworn")
;; :straight (:local-repo "~/src/emacs-ironsworn")
:init
(setq rpgdm-ironsworn-project (expand-file-name "~/src/emacs-ironsworn")
;; Ignore org links that call my RPG functions:
@ -234,7 +234,7 @@ Why not? Lets see if the [[https://github.com/isamert/empv.el][empv]] project
What else?
#+begin_src emacs-lisp
(use-package empv
:straight (:host github :repo "isamert/empv.el")
;; :straight (:host github :repo "isamert/empv.el")
:general (ha-leader
"a p" '(empv-map :wk "play music")))
#+end_src

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.
#+begin_src emacs-lisp
(use-package org-mac-link
:straight (:host gitlab :repo "aimebertrand/org-mac-link")
;; :straight (:host gitlab :repo "aimebertrand/org-mac-link")
:config
(ha-leader "i" '("insert app info" . org-mac-link-get-link)))
#+end_src
@ -688,3 +688,6 @@ Before you can build this on a new system, make sure that you put the cursor ove
#+options: num:nil toc:t todo:nil tasks:nil tags:nil date:nil
#+options: skip:nil author:nil email:nil creator:nil timestamp:nil
#+infojs_opt: view:nil toc:t ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js
exit
exit
exit

View file

@ -146,7 +146,8 @@ After reading [[https://irreal.org/blog/?p=12139][Jon Sanders essay]] as well
#+begin_src emacs-lisp
(use-package emacs-everywhere
:straight (:host github :repo "tecosaur/emacs-everywhere"))
;; :straight (:host github :repo "tecosaur/emacs-everywhere")
:ensure t)
#+end_src
This package /called outside of Emacs/, so I bound a keybinding to iCanHazShortcut:
@ -225,7 +226,7 @@ When I push changes to my files to Gerrit and other code review, I dont 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.
#+begin_src emacs-lisp
(use-package recentf
:straight (:type built-in)
;; :straight (:type built-in)
:config
(setq recentf-auto-cleanup 'never) ;; disable before we start recentf!
(recentf-mode 1))
@ -334,12 +335,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.
#+begin_src emacs-lisp
(use-package vertico
:ensure t
:config (vertico-mode))
#+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:
#+begin_src emacs-lisp
(use-package vertico-directory
:straight (el-patch :files ("~/.emacs.d/straight/repos/vertico/extensions/vertico-directory.el"))
;; :straight (el-patch :files ("~/.emacs.d/straight/repos/vertico/extensions/vertico-directory.el"))
;; More convenient directory navigation commands
:bind (:map vertico-map
("RET" . vertico-directory-enter)
@ -353,13 +355,14 @@ 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.
#+begin_src emacs-lisp
(use-package hotfuzz)
(use-package hotfuzz :ensure t)
#+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).
*** 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.
#+begin_src emacs-lisp
(use-package orderless
:ensure t
:commands (orderless-filter)
:custom
(completion-ignore-case t)
@ -380,7 +383,8 @@ How does it compare? Once upon a time, I enjoyed typing ~plp~ for =package-list-
#+begin_src emacs-lisp
(use-package fussy
;; :straight (:host github :repo "jojojames/fussy")
:ensure t
;; ;; :straight (:host github :repo "jojojames/fussy")
:config
(push 'fussy completion-styles)
(setq completion-category-defaults nil
@ -401,6 +405,7 @@ The [[https://github.com/minad/marginalia][marginalia]] package gives a preview
#+begin_src emacs-lisp
;; Enable richer annotations using the Marginalia package
(use-package marginalia
:ensure t
:init
(setq marginalia-annotators-heavy t)
:config
@ -425,6 +430,7 @@ The [[https://gitlab.com/ideasman42/emacs-undo-fu][undo-fu]] isnt much to the
#+begin_src emacs-lisp
(use-package undo-fu
:ensure t
:config
(global-set-key [remap undo] 'undo-fu-only-undo)
(global-set-key [remap undo-redo] 'undo-fu-only-redo)
@ -446,6 +452,7 @@ Since I seldom remember keybindings, or even function names, for major-modes, I
#+begin_src emacs-lisp
(use-package major-mode-hydra
:ensure (:wait t)
:bind ("s-," . major-mode-hydra)
:init
(defun major-mode-hydra-title (&optional mode)
@ -571,7 +578,7 @@ The [[https://github.com/minad/cape][Cape project]] deliver particular [[help:co
#+BEGIN_SRC emacs-lisp :tangle no
(use-package cape
:straight (:host github :repo "minad/cape")
;; :straight (:host github :repo "minad/cape")
:init
(setq completion-at-point-functions (list #'cape-emoji)))
#+END_SRC
@ -592,6 +599,7 @@ After using [[http://company-mode.github.io/][company]] for my completion back-
#+begin_src emacs-lisp
(use-package corfu
:ensure t
:custom
(corfu-cycle t)
(corfu-separator ?\s)
@ -603,6 +611,7 @@ Using [[https://github.com/joaotavora/yasnippet][yasnippet]] to expand templates
#+begin_src emacs-lisp
(use-package yasnippet
:ensure t
:config
(add-to-list 'yas-snippet-dirs
(expand-file-name "snippets" user-emacs-directory))
@ -673,7 +682,7 @@ As I've mentioned [[http://www.howardism.org/Technical/Emacs/beep-for-emacs.html
'libnotify)))
(use-package beep
:straight (:local-repo "~/src/hamacs/elisp")
;; :straight (:local-repo "~/src/hamacs/elisp")
:hook (after-init . ha-random-startup-message)
:commands (beep-when-finished beep-when-run-too-long)
:config
@ -974,6 +983,7 @@ Build the hydra as well as configure the =perspective= project.
#+begin_src emacs-lisp
(use-package perspective
:custom
(persp-modestring-short t)
(persp-show-modestring t)
@ -1162,7 +1172,7 @@ Also, as [[https://www.bytedude.com/gpg-in-emacs/][bytedude]] mentions, I need t
#+begin_src emacs-lisp
(use-package epa-file
:straight (:type built-in)
;; :straight (:type built-in)
:custom
(epg-debug t)
(auth-source-debug t)
@ -1217,3 +1227,4 @@ Before you can build this on a new system, make sure that you put the cursor ove
#+options: num:nil toc:t todo:nil tasks:nil tags:nil date:nil
#+options: skip:nil author:nil email:nil creator:nil timestamp:nil
#+infojs_opt: view:nil toc:t ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js
exit

View file

@ -34,21 +34,22 @@ The /critical part/ of my dashboard, is the [[https://icanhazdadjoke.com/][Dad J
For this, I use the [[https://github.com/tkf/emacs-request][request]] package (and Ill use this elsewhere too) and the =dashboard= project (defined below) will incorporate it:
#+begin_src emacs-lisp
(use-package request
:ensure (:wait t)
:init
(defvar ha-dad-joke nil "Holds the latest dad joke.")
:config
(defun ha-dad-joke ()
"Display a random dad joke."
(interactive)
(message (ha--dad-joke)))
(defun ha--dad-joke ()
"Return string containing a dad joke from www.icanhazdadjoke.com."
(setq ha-dad-joke nil) ; Clear out old joke
(ha--dad-joke-request)
(ha--dad-joke-wait))
(defun ha-dad-joke ()
"Display a random dad joke."
(interactive)
(message (ha--dad-joke)))
(defun ha--dad-joke-wait ()
(while (not ha-dad-joke)
(sit-for 1))

View file

@ -44,8 +44,8 @@ Once I made demonstrations /within/ Emacs with my [[https://github.com/howardabr
#+begin_src emacs-lisp :tangle no
(use-package demo-it
:straight (:local-repo "~/src/demo-it")
;; :straight (:host github :repo "howardabrams/demo-it")
;; :straight (:local-repo "~/src/demo-it")
;; ;; :straight (:host github :repo "howardabrams/demo-it")
:commands (demo-it-create demo-it-start demo-it-hide-mode-line
demo-it--presentation-display-set)
:custom (demo-it--insert-test-speed :faster))
@ -194,7 +194,7 @@ With some a startup bug that I havent been able to resolve, Im not using i
#+begin_src emacs-lisp :tangle no
(use-package dslide
:straight (dslide :host github :repo "positron-solutions/dslide")
;; :straight (dslide :host github :repo "positron-solutions/dslide")
:commands (dslide-deck-start dslide-deck-stop)
:custom
(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
(use-package dslide
:straight (dslide :host github :repo "positron-solutions/dslide")
;; :straight (dslide :host github :repo "positron-solutions/dslide")
:commands (dslide-narrow-hook)
:hook (dslide-narrow . 'ha-slide-notes-update))
#+END_SRC
@ -256,7 +256,7 @@ The [[https://github.com/positron-solutions/moc][Master of Ceremonies]] package
(use-package default-text-scale)
(use-package moc
:straight (:type git :host github
;; :straight (:type git :host github
:repo "positron-solutions/moc"))
#+END_SRC
@ -272,7 +272,7 @@ The [[https://github.com/trevorpogue/topspace][topspace]] project can pad the to
#+BEGIN_SRC emacs-lisp
(use-package topspace
:straight (:type git :host github :repo "trevorpogue/topspace"))
;; :straight (:type git :host github :repo "trevorpogue/topspace"))
#+END_SRC
*** Showing Something associated with a Headline
@ -307,7 +307,7 @@ To do this, add =:DSLIDE_ACTIONS: dslide-action-highlight-paragraphs= to the pro
#+begin_src elisp emacs-lisp :tangle no
(use-package dslide
:straight (:host github :repo "positron-solutions/dslide")
;; :straight (:host github :repo "positron-solutions/dslide")
:config
(defclass dslide-action-highlight-paragraphs (dslide-action)
((overlays :initform nil))

View file

@ -47,6 +47,7 @@ Let's turn off the menu and other settings:
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
(use-package doom-modeline
:ensure t
:init
(setq doom-modeline-minor-modes nil
doom-modeline-buffer-encoding nil
@ -86,7 +87,8 @@ either be "there or not" which resulted large jumps and large distractions.
#+BEGIN_SRC emacs-lisp
(use-package ultra-scroll
:straight (:type git :host github :repo "jdtsmith/ultra-scroll")
:ensure t
;; :straight (:type git :host github :repo "jdtsmith/ultra-scroll")
:config
(setq scroll-conservatively 101 ; important!
scroll-margin 0)
@ -97,7 +99,8 @@ Large screen, lots of windows, so where is the cursor? While I used to use =hl-l
#+begin_src emacs-lisp
(use-package pulsar
:straight (:host github :repo "protesilaos/pulsar")
;; :straight (:host github :repo "protesilaos/pulsar")
:ensure t
:custom
(pulsar-face 'pulsar-generic)
(pulsar-delay 0.15)
@ -160,6 +163,7 @@ Am I ever really ever satisfied with any font? I regularly change my font based
#+begin_src emacs-lisp
(use-package mixed-pitch
;; :straight (:host github :repo "jabranham/mixed-pitch")
:ensure t
:config
(add-to-list 'mixed-pitch-fixed-pitch-faces 'org-property-value)
(add-to-list 'mixed-pitch-fixed-pitch-faces 'org-special-keyword)
@ -389,7 +393,8 @@ This project replaces [[https://github.com/domtronn/all-the-icons.el][all-the-ic
#+BEGIN_SRC emacs-lisp
(use-package nerd-icons
:straight (nerd-icons :type git :host github :repo "rainstormstudio/nerd-icons.el")
:ensure t
;; :straight (nerd-icons :type git :host github :repo "rainstormstudio/nerd-icons.el")
:custom
;; The Nerd Font you want to use in GUI defaults to fixed-font:
(nerd-icons-font-family ha-fixed-font))
@ -638,7 +643,7 @@ In code, if you drop a specific /text/ labels, we can highlight them with [[http
#+begin_src emacs-lisp
(use-package hl-todo
:straight (:host github :repo "tarsius/hl-todo")
;; :straight (:host github :repo "tarsius/hl-todo")
:config
(setq hl-todo-keyword-faces
`(("TODO" . ,(face-foreground 'warning))
@ -654,7 +659,8 @@ Suggests to bind some keys to =hl-todo-next= in order to jump from tag to tag, b
#+begin_src emacs-lisp
(use-package consult-todo
:straight (:host github :repo "liuyinz/consult-todo")
;; :straight (:host github :repo "liuyinz/consult-todo")
:ensure t
:init
(defconst consult-todo--narrow
'((?t . "TODO")

View file

@ -737,7 +737,7 @@ The idea of linking org documents to email could be nice, however, the =ol-notmu
#+begin_src emacs-lisp :tangle no
(use-package ol-notmuch
:after org
:straight (:type built-in)
;; :straight (:type built-in)
:config (add-to-list 'org-modules 'ol-notmuch))
#+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.

View file

@ -30,7 +30,7 @@ If you find the documentation lacking, I [[http://www.howardism.org/Technical/Em
Tell straight to use the built-in =eshell=:
#+begin_src emacs-lisp
(use-package eshell
:straight (:type built-in)
;; :straight (:type built-in)
:hook (eshell-mode . ha-eshell-setup))
#+end_src
@ -976,7 +976,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]].
#+begin_src emacs-lisp
(use-package pcre2el
:straight (:host github :repo "joddie/pcre2el")
;; :straight (:host github :repo "joddie/pcre2el")
:config
(defmacro prx (&rest expressions)
"Convert the rx-compatible regular EXPRESSIONS to PCRE.
@ -1378,7 +1378,7 @@ The [[https://codeberg.org/akib/emacs-eat][Emulate a Terminal]] project provides
#+begin_src emacs-lisp :tangle no
(use-package eat
:after eshell
:straight (:repo "https://codeberg.org/akib/emacs-eat")
;; :straight (:repo "https://codeberg.org/akib/emacs-eat")
:hook (eshell-load . eat-eshell-visual-command-mode))
#+end_src
@ -1787,7 +1787,7 @@ 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=.
#+begin_src emacs-lisp
(use-package eshell
:straight (:type built-in)
;; :straight (:type built-in)
:custom (eshell-banner-message '(ha-eshell-banner))
:init
(setq eshell-error-if-no-glob t

View file

@ -45,6 +45,7 @@ TODO: Rebind the ~z~ keys
I split the configuration of Evil mode into sections. First, global settings:
#+begin_src emacs-lisp
(use-package evil
:ensure t
:init
(setq evil-undo-system 'undo-fu
evil-auto-indent t
@ -402,7 +403,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]]:
#+begin_src emacs-lisp
(use-package align
:straight (:type built-in)
:config
(add-to-list 'align-rules-list
`("lisp-assignments"
@ -459,6 +459,7 @@ I like both [[https://github.com/emacs-evil/evil-surround][evil-surround]] and H
#+begin_src emacs-lisp
(use-package evil-surround
:ensure t
:config
(defun evil-surround-elisp ()
(push '(?\` . ("`" . "'")) evil-surround-pairs-alist))

View file

@ -32,6 +32,7 @@ I'm not trying an experiment where specially-placed function keys on my fancy er
#+begin_src emacs-lisp
(use-package general
:ensure (:wait t)
:config
(setq general-use-package-emit-autoloads t)
@ -53,7 +54,7 @@ I'm not trying an experiment where specially-placed function keys on my fancy er
* Relabel the G Keys
Cant remember all the shortcuts on the ~g~ key, and =which-key= displays the entire function, so lets /re-add/ those keybindings, but with labels. The ~g~ is extemely convenient, yet I realize that I will never use some of the default keybindings (like ~g m~ to go to the middle of the line? Too imprecise). So I am also going to delete some of them.
#+begin_src emacs-lisp
#+begin_src emacs-lisp :tangle no
(use-package evil
:general
(:states '(normal visual motion operator)
@ -115,7 +116,7 @@ Cant remember all the shortcuts on the ~g~ key, and =which-key= displays the
#+end_src
While we are at it, lets readd, and relabel the ~z~ command functions:
#+begin_src emacs-lisp
#+begin_src emacs-lisp :tangle no
(use-package evil
:general
(:states '(normal visual motion operator)
@ -880,7 +881,6 @@ Remember these keys in the *Help* buffer:
Let's make Info behave a little more VI-like:
#+begin_src emacs-lisp
(use-package info
:straight (:type built-in)
:general
(:states 'normal :keymaps 'Info-mode-map
"B" 'Info-bookmark-jump

View file

@ -31,7 +31,7 @@ The RSS needs UUIDs:
#+BEGIN_SRC emacs-lisp results silent
(use-package uuidgen
:straight (:host github :repo "emacsmirror/uuidgen"))
;; :straight (:host github :repo "emacsmirror/uuidgen"))
(defun org-icalendar-create-uid (&rest ignored)
"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
(use-package ox-rss
:straight (:host github :repo "emacsmirror/ox-rss"))
;; :straight (:host github :repo "emacsmirror/ox-rss"))
(use-package org
:config
@ -64,7 +64,7 @@ Render my code with my font colors:
Also, we need Jack, and his HTML prowess:
#+begin_src emacs-lisp
(use-package jack
:straight (:host github :repo "tonyaldon/jack")
;; :straight (:host github :repo "tonyaldon/jack")
:commands (jack-html))
#+end_src

View file

@ -110,7 +110,7 @@ The variable, =org-hide-emphasis-markers=, is key to pretending that Emacs can b
#+begin_src emacs-lisp
(use-package org-appear
:straight (:type git :host github :repo "awth13/org-appear")
:ensure (:type git :host github :repo "awth13/org-appear")
:init (setq org-appear-trigger 'manual)
:hook
((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
(use-package org-modern
:straight (:host github :repo "minad/org-modern")
:ensure (:host github :repo "minad/org-modern")
:after org
:hook ((org-mode . org-modern-mode)
(org-agenda-finalize . org-modern-agenda))
@ -367,7 +367,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:
#+begin_src emacs-lisp
(use-package org-padding
:straight (:host github :repo "TonCherAmi/org-padding")
:ensure (:host github :repo "TonCherAmi/org-padding")
:hook (org-mode . org-padding-mode)
:config
(setq org-padding-block-begin-line-padding '(0.5 . 0.3)

View file

@ -3,7 +3,7 @@
#+date: 2020-09-18
#+tags: emacs org
#+startup: inlineimages
#+lastmod: [2025-07-01 Tue]
#+lastmod: [2025-09-09 Tue]
A literate programming file for configuring org-mode and those files.
@ -31,8 +31,9 @@ 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.
#+begin_src emacs-lisp :noweb yes
(use-package org
:ensure t
;; TODO: Using the latest org-mode
;; :straight (:type built-in)
;; ;; :straight (:type built-in)
:mode (("\\.org" . org-mode))
:init
<<variables>>
@ -278,7 +279,7 @@ Came up with a great way to search a project for Org-specific files, and wrote [
#+begin_src emacs-lisp
(use-package org-find-file
:straight nil
;; :straight nil
:config
(ha-leader "f o" '("load org" . org-find-file)))
#+end_src
@ -444,6 +445,7 @@ Using the [[https://graphviz.org/][graphviz project]], create charts with /textu
#+begin_src emacs-lisp
(use-package graphviz-dot-mode
:ensure t
:mode "\\.dot\\'"
:init
(setq graphviz-dot-indent-width 2
@ -490,7 +492,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:
#+begin_src emacs-lisp
(use-package plantuml-mode
:straight (:host github :repo "skuro/plantuml-mode")
;; :straight (:host github :repo "skuro/plantuml-mode")
:init
(setq org-plantuml-jar-path (expand-file-name "~/bin/plantuml.jar")))
#+end_src
@ -543,7 +545,7 @@ Of course, since we are dealing with Emacs, where we assimilate any good idea. J
#+begin_src emacs-lisp
(use-package pikchr-mode
:straight (:local-repo "~/src/pikchr-mode")
;; :straight (:local-repo "~/src/pikchr-mode")
;; :straight (:host github :repo "kljohann/pikchr-mode")
:custom
(pikchr-executable "~/bin/pikchr"))
@ -732,7 +734,7 @@ I have a special version of tweaked [[file:elisp/ox-confluence.el][Confluence ex
#+begin_src emacs-lisp
(use-package ox-confluence
:after org
:straight nil ; Located in my "elisp" directory
;; :straight nil ; Located in my "elisp" directory
:config
(ha-leader :keymaps 'org-mode-map
"o E" '("to confluence" . ox-export-to-confluence)))
@ -743,7 +745,7 @@ I have a special version of tweaked [[file:elisp/ox-confluence.el][Confluence ex
Im 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
(use-package jack
:straight (:host github :repo "tonyaldon/jack")
;; :straight (:host github :repo "tonyaldon/jack")
:commands (jack-html))
#+end_src
@ -800,7 +802,7 @@ I've been working on my own [[http://www.howardism.org/Technical/Emacs/focused-w
(use-package async)
(use-package ha-focus
:straight (:type built-in)
;; :straight (:type built-in)
:config
(ha-leader
"o f" '("begin focus" . ha-focus-begin)
@ -851,7 +853,8 @@ And the Emacs interface to that:
#+begin_src emacs-lisp
(use-package jinx
:straight (:host github :repo "minad/jinx" :files (:defaults "jinx-mod.c" "emacs-module.h"))
:ensure t
;; :straight (:host github :repo "minad/jinx" :files (:defaults "jinx-mod.c" "emacs-module.h"))
:hook (emacs-startup . global-jinx-mode)
:bind (("C-;" . jinx-correct-nearest)
("s-;" . jinx-correct-nearest)
@ -1250,7 +1253,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]]:
#+begin_src emacs-lisp
(use-package logos
:straight (:host gitlab :repo "protesilaos/logos")
;; :straight (:host gitlab :repo "protesilaos/logos")
:init
(setq logos-outlines-are-pages t
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
(use-package spatial-navigate
:straight (:repo "https://codeberg.org/ideasman42/emacs-spatial-navigate")
;; :straight (:repo "https://codeberg.org/ideasman42/emacs-spatial-navigate")
:config
(pretty-hydra-define spatial-navigate (:color amaranth :quit-key "q")
("Box"
@ -62,7 +62,7 @@ The [[https://github.com/antonj/Highlight-Indentation-for-Emacs][Highlight-Inden
#+begin_src emacs-lisp
(use-package highlight-indentation
:straight (:host github :repo "antonj/Highlight-Indentation-for-Emacs")
;; :straight (:host github :repo "antonj/Highlight-Indentation-for-Emacs")
:hook ((yaml-mode . highlight-indentation-mode)
(python-mode . highlight-indentation-mode)))
#+end_src
@ -119,7 +119,7 @@ Allow this mode in Org blocks:
And we hook
#+begin_src emacs-lisp
(use-package yaml-pro
:straight (:host github :repo "zkry/yaml-pro")
;; :straight (:host github :repo "zkry/yaml-pro")
:after yaml-mode
:hook ((yaml-mode . yaml-pro-mode)))
#+end_src
@ -224,7 +224,7 @@ Do I consider all YAML files an Ansible file needing [[https://github.com/k1LoW/
#+begin_src emacs-lisp
(use-package ansible
:straight (:host gitlab :repo "emacs-ansible/emacs-ansible")
;; :straight (:host gitlab :repo "emacs-ansible/emacs-ansible")
;; :mode ((rx (or "playbooks" "roles") (one-or-more any) ".y" (optional "a") "ml") . ansible-mode)
:config
(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
(use-package poly-ansible
:straight (:host github :repo "emacsmirror/poly-ansible")
;; :straight (:host github :repo "emacsmirror/poly-ansible")
:after ansible)
#+END_SRC

View file

@ -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:
#+begin_src emacs-lisp
(use-package ob-clojure
:straight (:type built-in)
;; :straight (:type built-in)
:custom
(org-babel-clojure-backend 'cider)
:config

View file

@ -127,6 +127,7 @@ My primary use-case is for its refactoring and other unique features. For instan
#+begin_src emacs-lisp
(use-package lispy
:ensure t
:config
(when (fboundp 'evil-define-key)
(evil-define-key '(normal visual) lispyville-mode-map
@ -187,6 +188,8 @@ Use the ~>~ key to /slurp/ in outside objects into the current expression… in
#+begin_src emacs-lisp
(when (fboundp 'evil-define-key)
(use-package lispyville
:ensure t
:after lispy
:hook ((emacs-lisp-mode lisp-mode) . lispyville-mode)))
#+end_src
@ -194,6 +197,8 @@ Now we need to define additional key movements:
#+begin_src emacs-lisp
(when (fboundp 'evil-define-key)
(use-package lispyville
:ensure t
:after lispy
:config
(lispyville-set-key-theme '(operators atom-movement
commentary slurp/barf-lispy additional-wrap
@ -280,7 +285,7 @@ These are all good, but the primary keys I need to figure out, are the s-express
Wilfreds [[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
(use-package emr
;; :straight (:host github :repo "Wilfred/emacs-refactor")
;; ;; :straight (:host github :repo "Wilfred/emacs-refactor")
:config
(pretty-hydra-define+ lisp-refactor nil
("To 𝛌"
@ -310,6 +315,7 @@ The idea of stealing some of Clojure Modes refactoring is brilliant (see [[ht
The [[https://github.com/xiongtx/eros][eros]] package stands for Evaluation Result OverlayS for Emacs Lisp, and basically shows what each s-expression is near the cursor position instead of in the mini-buffer at the bottom of the window.
#+begin_src emacs-lisp
(use-package eros
:ensure t
:hook (emacs-lisp-mode . eros-mode))
#+end_src

View file

@ -60,7 +60,7 @@ The [[https://github.com/mihaimaruseac/hindent][hindent package]] looks interest
* Haskell and Org
#+begin_src emacs-lisp
(use-package ob-haskell
:straight (:type built-in)
;; :straight (:type built-in)
:config
(add-to-list 'org-babel-load-languages '(haskell . t)))
#+end_src

View file

@ -3,8 +3,6 @@
#+date: 2021-11-16
#+tags: emacs python programming
import re
A literate programming file for configuring Python.
#+begin_src emacs-lisp :exports none
@ -267,7 +265,7 @@ The [[https://elpy.readthedocs.io/en/latest/introduction.html][Elpy Project]] ex
#+BEGIN_SRC emacs-lisp
(use-package elpy
:ensure t
:ensure (:wait t)
:init
(elpy-enable))
#+END_SRC

View file

@ -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.
#+begin_src emacs-lisp
(use-package ob-scheme
:straight (:type built-in)
;; :straight (:type built-in)
:config
(add-to-list 'org-babel-load-languages '(scheme . t)))
@ -122,7 +122,7 @@ While Racket, as a Scheme, should work with Geiser (below), lets also get [[h
Can we get Racket working with Org?
#+begin_src emacs-lisp
(use-package ob-racket
:straight (:host github :repo "DEADB17/ob-racket")
;; :straight (:host github :repo "DEADB17/ob-racket")
:after org
:config
(add-to-list 'org-babel-load-languages '(racket . t)))

View file

@ -58,7 +58,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]]:
#+begin_src emacs-lisp :tangle no
(use-package hide-show
:straight (:type built-in)
;; :straight (:type built-in)
:init
(setq hs-hide-comments t
hs-hide-initial-comment-block t
@ -68,6 +68,7 @@ While Emacs has options for viewing and moving around code, sometimes, we could
Note that =hide-show= doesnt work with complex YAML files. The [[https://github.com/gregsexton/origami.el][origami]] mode works better /out-of-the-box/, as it works with Python and Lisp, but falls back to indents as the format, which works well.
#+begin_src emacs-lisp
(use-package origami
:ensure t
:init
(setq origami-fold-replacement "⤵")
:hook (prog-mode . origami-mode))
@ -84,6 +85,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:
#+begin_src emacs-lisp
(use-package smartparens
:ensure (:wait t)
:custom
(smartparens-global-strict-mode t)
@ -109,6 +111,7 @@ I appreciate calling =hi-lock-face-symbol-at-point= (or =highlight-symbol-at-poi
#+begin_src emacs-lisp
(use-package auto-highlight-symbol
:ensure (:wait t)
:config
(setq ahs-idle-interval 0.1)
@ -122,6 +125,7 @@ Instead of calling =global-auto-highlight-symbol-mode=, we should just hook it t
#+begin_src emacs-lisp
(use-package auto-highlight-symbol
:ensure (:wait t)
:hook ((prog-mode . auto-highlight-symbol-mode)))
#+end_src
@ -212,7 +216,7 @@ Why use [[https://www.flycheck.org/][flycheck]] over the built-in =flymake=? Spe
#+begin_src emacs-lisp
(use-package flycheck
:straight (:host github :repo "flycheck/flycheck")
;; :straight (:host github :repo "flycheck/flycheck")
:init
(setq next-error-message-highlight t)
:bind (:map flycheck-error-list-mode-map
@ -400,38 +404,38 @@ However, Emacs already has the ability to download and install grammars, so foll
#+begin_src emacs-lisp
(when (treesit-available-p)
(use-package treesit
:straight (:type built-in)
;; :straight (:type built-in)
:preface
(setq treesit-language-source-alist
'((bash "https://github.com/tree-sitter/tree-sitter-bash")
'(;; (bash "https://github.com/tree-sitter/tree-sitter-bash")
;; (c "https://github.com/tree-sitter/tree-sitter-c/" "master" "src")
(clojure "https://github.com/sogaiu/tree-sitter-clojure" "master" "src")
;; (clojure "https://github.com/sogaiu/tree-sitter-clojure" "master" "src")
;; (cpp "https://github.com/tree-sitter/tree-sitter-cpp/" "master" "src")
;; (cmake "https://github.com/uyha/tree-sitter-cmake")
(css "https://github.com/tree-sitter/tree-sitter-css")
(dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile" "main" "src")
;; (css "https://github.com/tree-sitter/tree-sitter-css")
;; (dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile" "main" "src")
;; From my private cloned repository:
;; (dockerfile "file:///opt/src/github/tree-sitter-dockerfile" "main" "src")
;; The Emacs Lisp Tree Sitter doesn't work with Emacs (go figure):
;; (elisp "https://github.com/Wilfred/tree-sitter-elisp")
;; (elixir "https://github.com/elixir-lang/tree-sitter-elixir" "main" "src")
;; (erlang "https://github.com/WhatsApp/tree-sitter-erlang" "main" "src")
(go "https://github.com/tree-sitter/tree-sitter-go")
;; (go "https://github.com/tree-sitter/tree-sitter-go")
(templ "https://github.com/vrischmann/tree-sitter-templ")
;; (haskell "https://github.com/tree-sitter/tree-sitter-haskell" "master" "src")
(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")
;; (javascript "https://github.com/tree-sitter/tree-sitter-javascript" "master" "src")
(json "https://github.com/tree-sitter/tree-sitter-json")
;; (julia "https://github.com/tree-sitter/tree-sitter-julia" "master" "src")
;; (lua "https://github.com/MunifTanjim/tree-sitter-lua" "main" "src")
(make "https://github.com/alemuller/tree-sitter-make")
(markdown "https://github.com/ikatyang/tree-sitter-markdown")
;; (make "https://github.com/alemuller/tree-sitter-make")
;; (markdown "https://github.com/ikatyang/tree-sitter-markdown")
;; (meson "https://github.com/Decodetalkers/tree-sitter-meson" "master" "src")
(python "https://github.com/tree-sitter/tree-sitter-python")
(ruby "https://github.com/tree-sitter/tree-sitter-ruby" "master" "src")
(rust "https://github.com/tree-sitter/tree-sitter-rust" "master" "src")
(toml "https://github.com/tree-sitter/tree-sitter-toml")
;; (python "https://github.com/tree-sitter/tree-sitter-python")
;; (ruby "https://github.com/tree-sitter/tree-sitter-ruby" "master" "src")
;; (rust "https://github.com/tree-sitter/tree-sitter-rust" "master" "src")
;; (toml "https://github.com/tree-sitter/tree-sitter-toml")
;; (tsx "https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src")
;; (typescript "https://github.com/tree-sitter/tree-sitter-typescript" "master" "typescript/src")
(yaml "https://github.com/ikatyang/tree-sitter-yaml")))
@ -480,7 +484,7 @@ I like [[file:ha-programming-elisp.org::*Clever Parenthesis][Clever Parenthesis]
#+begin_src emacs-lisp
(when (treesit-available-p)
(use-package combobulate
:straight (:host github :repo "mickeynp/combobulate")
;; :straight (:host github :repo "mickeynp/combobulate")
:after treesit
:hook ((yaml-ts-mode . combobulate-mode)
;; (css-ts-mode . combobulate-mode)
@ -730,7 +734,7 @@ The [[https://github.com/emacs-lsp/lsp-ui/blob/master/lsp-ui-imenu.el][lsp-imenu
#+begin_src emacs-lisp :tangle no
(use-package lsp-ui-imenu
:straight nil
;; :straight nil
:after lsp-ui
:config
(ha-local-leader :keymaps 'prog-mode-map
@ -1296,7 +1300,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:
#+begin_src emacs-lisp
(use-package sh-mode
:straight (:type built-in)
;; :straight (:type built-in)
:mode (rx (or (seq ".sh" eol)
"/bin/"))
: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.
#+begin_src emacs-lisp
(use-package tramp
:straight (:type built-in)
;; :straight (:type built-in)
:config
;; 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:
#+begin_src emacs-lisp
(use-package tramp
:straight (:type built-in)
;; :straight (:type built-in)
:config
(push '("docker" . ((tramp-login-program "docker")
(tramp-login-args (("exec" "-it") ("%h") ("/bin/sh")))
@ -72,7 +72,7 @@ Which means, I need to put it as a link in an org file.
#+begin_src emacs-lisp
(use-package tramp-sh
:after tramp
:straight (:type built-in)
;; :straight (:type built-in)
:custom (tramp-use-ssh-controlmaster-options nil))
#+end_src
* Remote Terminals
@ -159,7 +159,7 @@ While not as fast as [[https://github.com/akermu/emacs-libvterm][vterm]], the [[
#+BEGIN_SRC emacs-lisp :tangle no
(use-package eat
:straight (:host codeberg :repo "akib/emacs-eat"
;; :straight (:host codeberg :repo "akib/emacs-eat"
:files ("*.el" ("term" "term/*.el") "*.texi"
"*.ti" ("terminfo/e" "terminfo/efo/e/*")
("terminfo/65" "terminfo/65/*")

View file

@ -34,7 +34,7 @@ cat > "$HAMACS_DEST/early-init.el" <<EOF
;; Need the package system near the front:
(require 'package)
;; We'll be using straight. So, we don't want duplicated package loading:
;; We'll be using our own, we don't want duplicated package loading:
(setq package-enable-at-startup nil)
;; While I would rather program my configurations, sometimes the Emacs
@ -98,34 +98,53 @@ cat > "$HAMACS_DEST/init.el" <<EOF
(add-to-list 'package-archives
'("elpa-dev" . "https://elpa.gnu.org/devel/"))
;; Configure straight https://github.com/raxod502/straight.el#getting-started
;; Configure Elpaca https://github.com/progfolio/elpaca
(defvar bootstrap-version)
(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))
(defvar elpaca-installer-version 0.11)
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
:ref nil :depth 1 :inherit ignore
:files (:defaults "elpaca-test.el" (:exclude "extensions"))
:build (:not elpaca--activate-package)))
(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
(build (expand-file-name "elpaca/" elpaca-builds-directory))
(order (cdr elpaca-order))
(default-directory repo))
(add-to-list 'load-path (if (file-exists-p build) build repo))
(unless (file-exists-p repo)
(make-directory repo t)
(when (<= emacs-major-version 28) (require 'subr-x))
(condition-case-unless-debug err
(if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (apply #'call-process `("git" nil ,buffer t "clone"
,@(when-let* ((depth (plist-get order :depth)))
(list (format "--depth=%d" depth) "--no-single-branch"))
,(plist-get order :repo) ,repo))))
((zerop (call-process "git" nil buffer t "checkout"
(or (plist-get order :ref) "--"))))
(emacs (concat invocation-directory invocation-name))
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
((require 'elpaca))
((elpaca-generate-autoloads "elpaca" repo)))
(progn (message "%s" (buffer-string)) (kill-buffer buffer))
(error "%s" (with-current-buffer buffer (buffer-string))))
((error) (warn "%s" err) (delete-directory repo 'recursive))))
(unless (require 'elpaca-autoloads nil t)
(require 'elpaca)
(elpaca-generate-autoloads "elpaca" repo)
(let ((load-source-file-function nil)) (load "./elpaca-autoloads"))))
(add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca `(,@elpaca-order))
(straight-use-package 'use-package)
;; Install use-package support
(elpaca elpaca-use-package
;; Enable use-package :ensure support for Elpaca.
(elpaca-use-package-mode))
;; While that enables the :straight t extension to use-package, let's just have that be the default:
(use-package straight
:custom (straight-use-package-by-default t
straight-default-vc 'git))
;; See the details in https://dev.to/jkreeftmeijer/emacs-package-management-with-straight-el-and-use-package-3oc8
(use-package org
;; TODO: Using the latest org-mode
;; :straight (:type built-in)
)
(use-package org)
;; Let's rock:
(org-babel-load-file "$HAMACS_DIR/bootstrap.org")