The “emacs-magus” organization hosts Emacs init.el configuration utility packages. The packages here are meant in part to replace general.el with smaller, more focused packages, but some also provide novel functionality.
Doom has a lot of useful functionality that is unfortunately not available to non-Doom users without copying code.
Here are packages that replace previously unpackaged Doom functionality:
- familiar - An alternative to general.el and
map!
(map!
is built on general.el) - on.el - Provides hooks added by Doom like
on-switch-buffer-hook
,on-switch-window-hook
, andon-switch-frame-hook
- satch.el - Provides setting, hook, and advice helpers (including transient hooks and advice like found in Doom)
- once - Provides alternatives to Doom’s
:after-call
,:defer-incrementally
,defer-until!
, etc. for delaying loading (or configuring) packages until some condition is met - handle - Allows having a single command to do things like start a repl, evaluate code, pull up documentation, etc.; you run
handle
to associate the correct functions with each feature for a major mode - templates - There is yatemplate, but it unfortunately does not currently support a lot of the things Doom’s template system does (e.g. complex conditional activation)
There are also the obvious packages that like doom-modeline and doom-themes.
- familiar - Replaces general.el key definers
- imp - Evil support for familiar
- leto.el - “Instructor” to generate a minimal/readable expansion of familiar forms, so you can see what code they will run
- arcana - Replaces general.el key definition helpers (
general-key
,general-simulate-key
,general-key-dispatch
,general-predicate-dispatch
, etc.) - satch.el - Replaces general.el non-keybinding configuration utilities (setting, hook, and advice helpers)
- once - Replaces general.el’s deferred evaluation utilities (which were mostly placeholders or unimplemented)
- ? - Replaces general-override-mode
- foundation - My personal setup.el keywords that are not found in other packages (like satch.el and familiar)
- quicken - “Hacks” to speed up Emacs initialization (meant more to be a template for early-init files and provide potentially useful code to copy into your configuration; will likely never be part of a package archive)