"Any sufficiently advanced hobby is indistinguishable from work."
— Jeremy Friesen
Emacs is a Lisp interpreter nailed to a text renderer nailed to X.
Emacs is probably the oldest piece of software I use directly (developed beginning in 1972). Most everything annoying about it is explained by that fact.
I want the following build flags:
--with-libsystemd --with-modules --with-native-compilation=aot --with-tree-sitter --with-xml2 --with-x-toolkit=lucid
Unfortunately, such a build is not available in any convenient repo (Arch/AUR/nixpkgs). nixpkgs does seem to build with --with-xinput2
but nevertheless lacks XInput2 support (missing libXi.dev build dep?), so no dice for pixel-scroll-precision-mode
. Currently using a custom build mostly based on core/emacs and aur/emacs-lucid. Just do the usual AUR makepkg && pacman -U <pkg>
thing.
I thought --with-xml2
might fix a problem I was having with BibTeX parsing. No dice but I guess it's a bit faster, so I kept it.
Reference manual
Emacs In a Box
How do I use nadvice?
while-no-input is an interesting async mechanism, used by completion frameworks to do heavy stuff without blocking
Elisp sucks (and can we make it suck less?)
Builtins: completing-read
uses the minibuffer to prompt for something, and maybe suggest completions. completion-at-point
provides completions in situ, by default in a separate *Completions*
buffer, but there are many packages that provide nice popups at point instead.
completion-at-point-functions
(CAPF) is the builtin mechanism for finding completion candidates.
Vertico is a simple minibuffer completion UI.
Corfu is an in-buffer completion UI based on CAPF. It's just a frontend, but there's also Cape, which does provide some CAPFs.
Company (COMPlete ANYthing) is a popular “modular text completion framework” from the days before CAPF. It provides both completion backends (for finding candidates, like capf) and frontends for in-buffer completion. I use Corfu instead, but Cape provides cape-company-to-capf
to convert (very widespread) Company backends.
Citar is a package for conveniently interacting with bibliographies: filtering, selecting, and running commands against bibliographic entries. It provides a completing-read
frontend as well as a CAPF.
Org-cite is the builtin package that defines the standard Org citation syntax. It's mainly important to me for exporting citations from Org syntax. It also provides some bibliography frontend stuff, but Citar is nicer.
See Balintona's writeup for details.
tbanel/uniline: easily draw UNICODE lines and boxes
alphapapa/org-ql: An Org-mode query language, including search commands and saved views
Organice: org-mode without Emacs. Can use as progressive web app on mobile browsers
point-stack.el