"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.
Emacs Docs
Productive Emacs
Demystifying Emacs's Window Manager - Mastering Emacs
The Emacs Window Management Almanac | Karthinks
Emacs: use-package essentials | Protesilaos Stavrou
Emacs China seems to be thriving
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?)
Sequences: Prefer the built-in seq.el (seq.el vs. other libraries through hundreds of examples). dash.el is fine too when you need something more. Elisp collection primitives are extremely confusing and best avoided.
Strings: s.el is good. Built-in subr-x.el has some common string manips (join, blank-p, remove-{pre,suf}fix, limit, pad) and some interesting DWIMish ones (limit, pixel-width, glyph-split)
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.
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