This .emacs.d
represents my libre attempt to build and document a maximalist Emacs configuration utilizing most (but not all) of the latest trends in the Emacs community, tailored of course to my personal taste and needs. This involves around 200 different packages.
This means spicy choices like:
eglot
over lsp-mode
vert&co
over helm
and ivy
corfu
over company
elpaca
over package.el
and straight.el
flymake
over flycheck
(what a comeback!)meow
over evil
lispy
over paredit
sly
over slime
prism
over rainbow-delimiters
and rainbow-blocks
eat
over all the other terminal emulatorsgptel
over the dozens of other LLM clientsWhen I was starting off with Emacs, other people's customizations were deeply helpful for me as a starting point; some of those customizations still find a home in my Emacs instance today. In the spirit of free software, I hope that I can pass on the good will.
Where possible, the documentation directly links to the Emacs Lisp files that implement the mode or feature. Click around.
Using org-roam-ui, you can navigate a map visualizing how my Lisp user space tools work together on the GNU operating system.
This config makes extensive use of language servers and tree-sitter grammars. Most of my best supported languages will try to load a language server or tree-sitter grammar. If it fails to, it will warn you and give you a chance to install what is missing.
I usually only support one version of Emacs at a time. Currently I am supporting:
The following operating systems are supported:
This Emacs configuration reflects my REPL-centered exploratory programming style.
I provide an IDE and REPL for each major environment that I work in.
One can debate about which languages Emacs is actually ideal for, but Emacs is certainly a best-in-class environment for Haskell, Elixir, Common Lisp, Scheme, and Clojure.
The best supported developer environments are the Lisp languages. Since they have feature rich IDEs with powerful REPLs, they do not need Eglot.
NixOS comes with pre-packaged language servers for these languages.
Quite frankly, most of these languages are best used within their respective IDEs, or I rarely use them at all.
This configuration ships with a great many helpful tools:
There are many beautiful theme families for you to enjoy:
I currently provide spellchecking for:
These dictionaries are stored in the dict folder.
This is a modal editing setup that uses two different modal editors: Meow and Lispy. Lispy is only for Lisp languages.
I maintain the default Emacs keybindings, so I will not document them here. Meow will help you discover keystrokes after you hit SPC
in keypad mode.
Run meow-tutor
to learn Meow.
Lispy editing is activated only in major modes for Lisp languages when around parens in Meow's insert mode.
e
evaluate s-expressionf
forward point through parensb
undo]
move point down[
move point up>
slurp up next s-expression<
barf up s-expressionw
move s-expression ups
move s-expression downr
raise s-expressionC-1
view documentationC-2
view caller argumentsMovement between buffers is accomplished with windmove:
Shift-up
Shift-left
Shift-right
Shift-down
I have keystrokes setup to emulate tmux/screen using Emacs tabs.
C-z(one) c(reates)
a new workspace.C-z(one) k(ills)
a current workspace.C-z(one) n(ext)
workspace.C-z(one) p(revious)
workspace.These are custom keystrokes that I have setup.
When in Meow's insert mode, prepend with C-c
. When in Meow's keypad mode, prepend with SPC
.
a(g)
search git repo using ag or grepb(uffer)
switch buffers with autocompletioni(sp)
search through Lisp symbols (defaults to Emacs Lisp)d(ocumentation)
brings up documentation for symbol under cursore(at)
brings up the Eat terminalk(ill)
kill buffer unconditionallyl(ocate)
locate a fileo(mpile)
compiles the buffer in a language appropriate wayp(ush)
pushes the current git branchr(eplace string)
replace all occurrences of a string after points(tatus)
shows the current git statust(abs)
search through tabsy(ank)
show list of yanked items<left>
previous buffer<right>
next buffer<up>
beginning of buffer<bottom>
bottom of bufferEverything is very organized in the enzuru
folder by feature, mode, preference, setup, operating system, and theme. While this repo should work immediately for you on a git pull
, it's obviously a very personalized setup and many things won't appeal to you. If I were you, I would first take a look at my init.el
and then pick a topical elisp file from there.
Happy hacking!
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4