I’ve spent the last two years tweaking my Emacs config, especially the tools I find useful for my daily work and the UI in general. As I already said in the past, when you spend several hours in front of your text editor, you’d better like the UI.
During the last weeks, I spent a fair amount of time reducing the unnecessary glitter around the GUI, then the TUI, and finally the number of packages I depend on. I’m now well under 300 packages and less than 1.5s of startup. I could surely do a little bit more, but I’m overall happy with the job done. I’m not the only one apparently, and I’m glad to know that others are also cultivating the idea of minimalist interfaces.
Here are some of the packages/modules I removed along time, or those I never used anyway. The following mostly refers to Doom Emacs naming conventions (wrt. modules and packages):
doom-modelineis too bloated, I very much prefer the light version than Henrik Lissner developed alongside.
treemacs, it’s fine but how often do you use a project sidebar when the project is very large, and for what purpose? Compared to
dired, it comes with very few options to manipulate the file system. Note that if you’re using LSP, there’s
lsp-treemacs, which might be interesting for those who need an overview of symbols, class hierarchy or errors, but I usually don’t need this for Python, C or Rust (which are the only mode in which
vi-tilde-fringe, not visually appealing and useless once you let Emacs manage whitespace cleaning on save.
minimap, why needs this seriously?
tabs, no thanks. I’ve come to appreciate the idea of windows (workspaces in Doom Emacs) and buffers, and I know how to navigate efficiently in this space.
window-select, which is mostly about adding more options to navigate between opened buffers in the same window adds nothing to my current workflow, where I tend to use few splits, and a workspace-based approach to buffer arrangement.
dashboard, I never used so it hasn’t to be uninstalled, but I wonder what purpose it really serves.
doom-fancy-prioritiesno longer appeared interesting to me, especially since I rarely flag todo items with priority levels.
indent-guideswere quite good actually, but they don’t play nicely when Emacs run in a terminal. In any case, Emacs auto-indent features are the best on Earth, so why do I need to bother.
prettify-symbols-modeand the like usually account for two characters instead of one, which makes things ugly when you’re viewing the text in another text editor or on GitHub). I know Emacs 28 offers a better option to manage ligatures, but I’m happy with my current settings so I won’t upgrade for the moment.
parinferis probably great (especially when you delete the last s-exp into a block of aligned s-exp, which get automagically reformated with the closing parenthesis) but it sometimes interfere with Emacs auto-indent features.
org-journal, I should definitively refrain to install this kind of stuff, like I always did for
org-roam. because it is so much specialized and hardly customizable. I recently cleaned up my old files, which I use to record my meeting notes, and converted it to a single Org file, which is much easier to handle. I don’t miss the search functionalities since I get them with ivy-mode. The only thing that I missed a lot was the display of individual entries in Emacs calendar. I know there are some alternatives, but I should probably write my own utility at some point.
multiple-cursors, I remember when I saw this one on the Sublime Text homepage. At first sight this looked great, but I can manage to get the same result using visual block most of the times (when this is not the case, I simply
query-replaceusing a regex in a region).
languagetooland Co.) was annoying; I prefer to use only one tool (Flyspell with aspell) that highlights serious typo and not be reminded that my english is so bad (use of passive tense, stop words, etc.).
I finally learnt to manage my Org files in such a way that I can now get an overview of my daily activities in Org agenda, while keeping track of what I’ve done in the past using simple todo lists. I’m not an GTD guy. I understand the idea, but I only manage a few files: a todo list, a collection of meeting notes, and a daily log book. There are additional files in my Org directory, but these are mostly auxiliary files that I don’t need to consult as often as the above working files. I don’t have much use of functionalities like archiving, refiling, clocking, or acting on whole subtrees. This may change in the future, as I slowly learn all the benefit of archiving everything in plain text.
I’m now fully into mu4e for processing my emails. This is not too surprising since I have been using it for almost 8 years now, but I never used it exclusively. I also use Elfeed to manage my RSS feeds. In the past I used to use Gnus, but Elfeed has everything I need, so I don’t want to spend another round of time configuring the Gnus beast.
I’m happy with lsp-mode actually. I’m still on version 7.0 since I didn’t upgrade my Doom framework for some months now. I did
eglot a short try (after all, this package and sly were developed by the same author) but I much prefer
lsp-mode, once we get rid of most of the extra features.
I’m also becoming more proficient for navigating through a text buffer when using Vim modal editing (either using Evil mode or in Neovim). There’s no other choice in fact since I cannot really use the mouse in Kitty, except for selecting and mouse-pasting. This probably is the biggest change in my writing workflow for the past 20 years! I like it, though. First, I like changing my mind if I happen to see any benefit in the alternative, and using modal editing helps me reconsider the way I can process test and code using a keyboard and my mind. Now I still use the arrow keys to navigate between nearby characters, but I no longer use the mouse.