In recent years, I’ve seen several people decide to switch to Emacs. There seem to be two or three compelling reasons that cause people to go through the temporary slow-down of making this change:

  • org-mode: A tool for organizing documents, maintaining TODO lists, and many other tasks. I’ve never used it enough to get proficient with it, but I know many people swear by it.

  • Magit: An Emacs-based front-end for git. I use this every day, and it is awesome.

  • Emacs Lisp: Emacs Lisp is the customization language for Emacs. But it’s more than that, because most of the editor is written in it. That means that almost all of the tools that were used to build the editor in the first place are available to you as you customize Emacs and make it do what you need it to.

I recently learned about another Emacs-based tool that deserves to make this list of killer features that cause people to switch to Emacs.

git-timemachine is a very simple package that allows you to move back and forth through the git history of a file.

I’ve been working on my talk for GoGaRuCo. The core of the talk walks through a series of baby-step refactorings in order to get some legacy code under control.

As I worked through the code to prepare for the talk, I committed changes to a git repo after each tiny step. To make the slides, I used git-timemachine to review what I’d done. Using the n and p keys, I can jump forward and back in the history to see various before and after views of the code. This is a very simple but powerful workflow.

git-timemachine only seems to work with Emacs 24 or later; I was unable to get it running in Emacs 23.

If you use Emacs and git, I highly recommend checking out git-timemachine. I might even suggest giving Emacs a try so you can use git-timemachine (and Magit while you’re at it).