I am suprised I never talked about this on this blog so here is some content about why you should care about emacs and what you can take away in comparison to other editors. There are more things but here are some of the big ones emphasised in emacs.
Customizability Emacs is extremely customizable because it fundementally is a lisp interpreter at its core. Unlike other editors whom have a plugin system built ontop of the editor, emacs is mostly elisp which is used to configure the editor.
I love text editors as you can probably tell from my content. The text editor I use the most is emacs and I have been using DOOM for a little while now. Doom is simply someone else’s config which is made to be usable. This is the second most popular config for emacs the other being spacemacs. At the core Doom differs from spacemacs by lazy loading as much as possible and let the user have more control over how they do things.
Vim is a amazing text editor. The way the keybindings flow together is really something beutiful. I am going to assume most people who are reading this know what vim is so I am going to explain why emacs is a better vim then vim itself.
One common idea is that vim is fundementally better then vi. People don’t really take the time to understand why its really better. The same thing happens with neovim to vim but lets start with why vim is a better vi.
Recently I have switched to guixsd and found out that it does not have ripgrep, exa or bat. To me the only one I really care about is ripgrep so naturally I wanted to learn how to package it. Well… there is alot of bolderplate code involved in that because I need to package every single crate ripgrep uses. Looking into the source code for guix they actually do this.
Someone asked for for a plain text version trying to meme me so I am making plain text and html exports available. I can do this because the blog is all a single org mode file which I can just export with this bash command provided things are installed and because git hooks are amazing. You also need a package called htmlize for emacs on melpa which was annoying to get working.
Recently I actually found out a interesting way on how to deal with selection in emacs. A while ago when I was trying to force myself to use pure emacs keybindings I had trouble with finding a solution I liked which worked like dd in vim/evil. I then proceeded to install a package which made something I thought should be default in emacs which was C-w and M-w default to a single line if nothing was selected.
Helm to me is a core part of functionality and I couldn’t imagine using emacs without it. There are 3 popular fuzzy completion frameworks for commands in emacs. ido, ivy and helm. ido is builtin and the least intrusive. Basically vanilla ido There are hacks to get around this inline like fuzzy matching but at that point just use ivy. It also has somewhat weird keybindings with C-s and C-r to go back and forth between results.
I recently found a really nice function which allows you to expand macros temporally. Basically it allows you to step into the macro to see what it expands too. Doom uses alot of macros so this is really interesting to me. map! actually expands to general which tbh is expected. use-package! and package! package! is alot more interesting and does a whole bunch of listy things. I need to write something that abuses lisp macros because its really nice to work with.
My first blog post using Emacs and Hugo is finally finished! I thought about it and I think I’m going to store Hugo in a git repository on github to take advantage of github pages. Also the alternative would be to use nextcloud and that seems like a pain. Although keeping it with my org-mode TODO stuff would be nice (will probably be a later blog post about it).
To start off about my Hugo setup I am using the Blackburn theme (bottom of the left sidebar).