Posts
-
Stealing from the Best Emacs Configs
Good artists borrow, great artists steal.
– Pablo Picasso
After spending the past couple of weeks updating Prelude and my personal Emacs config, I figured it wouldn’t hurt to see what the competition has been up to. I hadn’t done a proper survey of other people’s configs in years, and the Emacs landscape has changed quite a bit since the last time I looked.
So I went through Doom Emacs, Purcell’s emacs.d, Centaur Emacs, Prot’s dotfiles, and a handful of others. Here are some of the most interesting things I found – settings and tricks that I either didn’t know about or had forgotten about entirely.
Read More -
The Many Faces of flet: cl-flet, cl-labels, and cl-letf
Way back in 2013 I wrote about the deprecation of
fletand hownofletcould fill the gap. Thirteen years later, it’s probably time for a proper overview of what replacedfletincl-liband when to use each option.Emacs Lisp doesn’t have a built-in way to define local functions (the way
Read Moreletdefines local variables), socl-libprovides several macros for this. If you’ve ever been confused bycl-flet,cl-labels, andcl-letf– you’re not alone. The naming doesn’t make the distinctions obvious, and the documentation is a bit dry. Let’s try to fix that. -
Live Regexp Feedback with minibuffer-regexp-mode
This is the third article in a small series inspired by my recent cleanup of Prelude and my personal Emacs configuration, following the ones on repeat-mode and read-extended-command-predicate. I’ve been going through the Emacs 28-30 changelogs for features I had ignored so far, and this one from Emacs 30 immediately caught my eye.
Writing Emacs regexps has always been a bit of a dark art. Between the double-escaped backslashes and the various group syntaxes (
\(...\),\(?:...\),\(?N:...\)), it’s easy to lose track of what you’re actually matching. You type something intoquery-replace-regexp, press RET, and hope for the best.Emacs 30 added
minibuffer-regexp-mode, a minor mode that gives you live visual feedback as you compose a regexp in the minibuffer:Read More(minibuffer-regexp-mode 1) -
Declutter M-x with read-extended-command-predicate
This is another article inspired by my recent cleanup of Prelude and my personal Emacs config, following the one on repeat-mode. I’ve been going through the Emacs 28-30 changelogs looking for features I had overlooked, and this small one from Emacs 28 turned out to be a real gem.
Ever noticed how
M-xshows you every command, including ones that make no sense in your current buffer? Org commands while editing Ruby, Magit commands in a shell buffer, that sort of thing. It’s not a huge deal if you know what you’re looking for, but it adds noise to the candidate list – especially if you’re using a completion framework like Vertico or Ivy that shows everything at a glance.Emacs 28 added a simple way to fix this:
Read More(setq read-extended-command-predicate #'command-completion-default-include-p) -
Repeat Mode: Stop Repeating Yourself
I’ve been going through the Emacs 28-30 changelogs recently as part of a big update to Prelude and my personal config, looking for features I never got around to trying.
repeat-modeis one I wish I’d adopted sooner.How many times have you typed
C-x o C-x o C-x oto cycle through a few windows? OrC-x { C-x { C-x {to keep shrinking one? All that prefix repetition is pure friction.repeat-modeis a built-in minor mode (Emacs 28+) that lets you drop the prefix after the first invocation and just keep pressing the final key. Enable it with one line:Read More(repeat-mode 1)
Subscribe via RSS | View Older Posts