The Perfect Domain for Emacs Projects

Recently I’ve been working on documentation sites for a couple of my more prominent Emacs packages - CIDER and Projectile. When I got to the point where I needed to register some domains for the sites I realized that picking the right domain is just as hard as naming things.1

Most open-source projects typically have .org domains and you’d see here and there the use of .net or (more recently) .io. Those are all great domain options, but they have one slight problem - because they’re super popular there aren’t that many free names to choose from if you decide to use them. That would have forced me to go with domains like or, which are OK, but nothing more. I don’t know about you, but I really hate prefixing domain names!

After struggling with this for a while an unexpected solution presented itself to me. I was on a short business trip to Mexico and I noticed that the country’s top-level domain is .mx. .mx just like in M-x, Emacs’s most iconic keybinding!2 Needless to say I immediately registered and Such a perfect fit!

I think that every Emacs projects deserves a Meta-X domain, so get one for your project right away, while there are still plenty of free names to choose from!

  1. OK, nothing is quite as hard as naming, but that’s pretty close. 

  2. One can also argue that M-x sounds a lot like Emacs. I’m reasonably sure the choice of M-x was not accidental. 

Eldoc Goes Global

I recently noticed that Emacs 25.1 had added a global variant of the popular eldoc-mode, called global-eldoc-mode. What’s more - unlike eldoc-mode, global-eldoc-mode is enabled by default!

This means that you can get rid of all the code in your Emacs config that was wiring up eldoc-mode for major modes that support it:

;; That code is now redundant
(add-hook 'emacs-lisp-mode-hook #'eldoc-mode)
(add-hook 'ielm-mode-hook #'eldoc-mode)
(add-hook 'cider-mode-hook #'eldoc-mode)
(add-hook 'cider-repl-mode-hook #'eldoc-mode)

There are some reports that global-eldoc-mode is causing performance issues in modes that don’t support it. I’ve never experienced this myself, but if you want to disable it you can simply do so like this:

(global-eldoc-mode -1)

Now it’s time to clean up my config! Deleting code always feels so good!

An easy-kill

A bit of Terminology

Emacs has its own terminology for what’s commonly known as copying, pasting and cutting - namely “saving”, “yanking” and “killing”.1

On top of this, Emacs has its own internal clipboard called the kill-ring. Items that you save or kill end up there and yanking pulls items out of there.

The kill-ring is much more than a typical clipboard, but that’s a subject for an entire post itself.

More …

Back in Black

After 3 years of “waiting” for Octopress 31, I’ve decided I waited long enough. Today I (spontaneously) migrated my personal blog and Emacs Redux to a vanilla Jekyll setup and I tweaked a bit their appearance. I’m reasonably pleased with the results and I finally don’t have any excuses not to write.2

I wrote about my experience moving away from Octopress here. If only I had done this a couple of years ago…

I realized recently that it has been over 10 years since my first blog post.3 I’ve started my humble writing “career” with Wordpress, then switched to Octopress, and now here we are. One thing never really changed, though - the quality of my writing. It was always abysmally bad, as were many of the topics I wrote on. It’s really fun to look back on all of this - I was reading some of my old articles, in the process of migrating the personal blog to Jekyll, and I couldn’t believe some of the things I wrote. I hope this means I’m getting wiser with age…

I also realized that this year marked Emacs Redux’s fifth birthday!4 As usual I didn’t manage to achieve the objective I’ve set out of myself when I created it - namely produce 10-20 articles per year for many years to come. The first couple of years were pretty good for the blog, but then a combination of work and personal challenges impacted significantly both my open-source work and my writing.

Anyways, lately I’ve had this burning desire to share so many thoughts and that really got me excited about writing. Let’s see if I’ll do better this time around, or I’ll simply fail one more time…

P.S. In the mean time I’ve started another blog, called Meta Redux. I plan to do most of my (serious and creative) writing there, so you might want to check it out.

super-save 0.3

After a long period of no development activity1, super-save gets an update today!

The latest 0.3 version of your favourite auto-saving library makes it easier to customize the hook triggers (see super-save-hook-triggers) and adds an option to ignore remote (TRAMP) files (see super-save-remote-files).

As a refresher - super-save will save modified files automatically on certain command (e.g. switch-to-buffer) and hook triggers (e.g. focus-out-hook).

Both of those are configurable via super-save-triggers and (starting with 0.3) super-save-hook-triggers. Here are a couple of examples:

;; add integration with ace-window
(add-to-list 'super-save-triggers 'ace-window)

;; save on find-file
(add-to-list 'super-save-hook-triggers 'find-file-hook)

You can now turn off super-save for remote files like this:

(setq super-save-remote-files nil)

It seems that now super-save is beyond perfect, so don’t expect the next release any time soon!

P.S. super-save was extracted from Prelude, but for some reason I actually forgot to add it to Prelude. Today that changes as well!

  1. Mostly because it was perfect from the start.