I have used Emacs Doom for a while. I moved to my own Dotfiles because I want less Doom magic and full control of my editor. I try to have Doom like functionality with the least amount of configuration. I mostly focus on the functionality that I have used extensively ( so it probably excludes most of Doom’s features ). I have copied some functions from Doom ( e.g. doom escape, org mode keywords, packages, and other features that I commonly use ) to make it have a “doomish” feel.
- Extremely minimalistic
- LSP support via lsp-mode
- Vim keybindings through Evil
- Functional package manager through straight.el
- Tries as much as possible to reduce the number of keys required to do something
- Workspaces through Perspective.el
- Packages over configurations. Tries to provide all of its functionality through packages instead of increasing the size of its code base. If the functionality is worth having then it should be a package
The reasoning is that configurations are a leaky abstraction. You need to understand 100% of your configuration and how everything is glued together in order to successfully debug stuff when things go wrong.
In contrast, packages tend to be a good abstraction since you don’t need to understand how they work. They tend to have dedicated maintainers and good documentation.
In addition, this makes updating stuff easier since you can just update a specific package that does one thing. If something went wrong you know exactly which package caused it. If you couldn’t debug it you can just revert by checking out an older commit. Life is just easier.
The files are ordered by the order of evaluation
It has all installed packages and their configurations.
It has functions that I use and non-package related configurations (i.e. builtin stuff). So far I have used it to put stuff that are not packages or keybindings.
It contains all the key bindings.