emacs
I am a heavy Emacs users. I'm surprised there isn't any documentation about this in this wiki, but better late than ever, as they say.
Configuration
My Emacs configuration has finally been sanitized and published online, see my emacs-d git repository for details.
Packages
The original reason why I setup this page is to document the packages I use. I have little trust in the Emacs packaging system: there are no cryptographic signatures in package archives so no trust path between users and developers. When I discussed this in the Emacs community, it became apparent the only solution to my problem, short term, was to use the Debian packaging infrastructure instead. This has the advantage of automating but possibly also delegating maintenance of those packages.
Here's the list of packages I currently use.
Package | Emacs | Debian | Description |
---|---|---|---|
anzu | 0.67 | 0.67.post1 | Show number of matches in mode-line while searching |
auto-dictionary | 1.1 | 1.1.post1 | Automatic dictionary switcher for flyspell |
cape | 1.7 | #728729 | Completion At Point Extensions |
consult | 1.8 | 1.8.post1 | Consulting completing-read |
corfu | 1.5 | 1.5.post1 | COmpletion in Region FUnction |
crux | 0.5.0 | #909337 | A Collection of Ridiculously Useful eXtensions |
dabbrev | N/A | N/A | None |
devdocs | 20241113.1341 | N/A | Emacs viewer for DevDocs |
dimmer | 0.4.2 | 0.4.2+repack20220817.a5b6975.3 | Visually highlight the selected buffer |
dockerfile-mode | 1.9 | 1.9.post3 | Major mode for editing Docker's Dockerfiles |
eglot | N/A | 1.15.post3 | None |
embark | 1.1 | 1.1.post2 | Conveniently act on minibuffer completions |
embark-consult | 1.1 | N/A | Consult integration for Embark |
flycheck | 34.1 | 34.1.post2 | On-the-fly syntax checking |
flymake | N/A | N/A | None |
format-all | 0.6.0 | 0.6.0.post2 | Auto-format C, C++, JS, Python, Ruby and 50 other languages |
frames-only-mode | 1.0.0 | N/A | Use frames instead of Emacs windows |
gnus-alias | 20230818.1830 | N/A | An alternative to gnus-posting-styles |
go-mode | 1.6.0 | N/A | Major mode for the Go programming language |
gptel | 0.9.7 | N/A | Interact with ChatGPT or other LLMs |
hl-todo | 3.8.1 | 3.8.1.post1 | Highlight TODO and similar keywords |
ledger | N/A | 4.0.0.post2 | None |
magit | 4.1.3 | 4.1.3.post1 | A Git porcelain inside Emacs |
marginalia | 1.7 | 1.7.post1 | Enrich existing commands with completion annotations |
markdown-mode | 2.6 | 2.6.post2 | Major mode for Markdown-formatted text |
multiple-cursors | 1.4.0 | #861127 | Multiple cursors for Emacs |
notmuch | 0.38.3 | 0.38.3.post3 | Run notmuch within emacs |
org | N/A | 9.7.16+dfsg.1 | None |
pdf-tools | 1.1.0 | 1.1.0.post3 | Support library for PDF documents |
puppet-mode | 0.4 | 0.4.post5 | Major mode for Puppet manifests |
rainbow-mode | N/A | 1.0.6.post2 | None |
recentf | N/A | N/A | None |
rg | 2.3.0 | 2.3.0.post4 | A search tool based on ripgrep |
shift-number | 0.1 | N/A | Increase/decrease the number at point |
smart-mode-line | 2.14 | 2.14.post2 | A color coded smart mode-line |
srcery-theme | 20240220.805 | N/A | Dark color theme |
vertico | 1.9 | 1.9.post1 | VERTical Interactive COmpletion |
visual-fill-column-mode | N/A | N/A | None |
wc-mode | 1.4.1 | 1.4.post2 | Running word count with goals (minor mode) |
which-key | 3.6.0 | 3.6.0.post2 | Display available keybindings in popup |
writegood-mode | 2.2.0 | 2.2.0.post3 | Polish up poor writing on the fly |
writeroom-mode | 3.11 | 3.11.post3 | Minor mode for distraction-free writing |
ws-butler | 0.7 | 0.6.post5 | Unobtrusively remove trailing whitespace |
yasnippet | 0.14.0 | 0.14.0+git20230912.76e1eee6.2 | Yet another snippet extension for Emacs |
The above was automatically generated using check-emacs-packages with some manual modifications for packages on the main ELPA archive (as opposed to MELPA, which is surprisingly rare). To feed the list of packages into the script, I used this mighty pipeline:
check-emacs-packages $( ( grep '^(use-package' ~/.emacs.d/init.el | sed 's/.* //' ; \
grep -A2 packages ~/.emacs.d/custom.el | tail -1 | sed 's/[()]//g;s/ /\n/g' ) \
| sort -u ) 2>/dev/null