If you’ve never heard the name, John wrote loads of elisp code
(some of it included with emacs, like `eshell’, other stuff can be
found in his github
repos, like his chess-mode) and many other languages as well.
Prominently C++ (for which was is or was on the ISO/ANSI Commitee,
I think), which he used to implement ledger, a double-entry accounting tool
about which he was interviewed by Randal L. Schwartz for the
FLOSS Weekly podcast (episode 150: ledger).
John and Sacha discuss how his emacs workflow looks like, what
packages he uses, how he integrates emacs into the rest of the
system… etc etc. I couldn’t agree more to his answer about why
emacs got as successful as it did: obviously the fact that it’s
scriptable via elisp. But not that on its own, but the fact that
you have infinite places to make emacs run your
own code in order to make it behave the way you
want. There are two major mechanisms for that: The first most
Hooks. The other is less known, but comes in very handy when
there is a lisp function in emacs that you’d like to amend a little
bit. You could just copy the function from emacs’s codebase into
your configuration and fix it up in there. But what about upstream
improvements then? Right. In emacs you can use
advices in order to tell an emacs function in which way to
That may sound a bit far fetched, but I’m actually using it.
Whenever I have multiple buffers visible in emacs and I switch
between them, I use an advice to a function to update my tmux
status line with the currently focused file name. There’s no hook
at that point, but with advices there doesn’t have to be one.