The VikiD Truth

Knowledge base / Computing / Tools & dev workflow

Readinglist | Quick Links | Algorithms | Apple | AssemblyLanguage | BASH | C-Programmming | CommonLisp | Computer Security | CuisSmalltalk | Databases | Emacs | Exploitation | Functional Programming | Firewalls | Git | GNUSmalltalk | Haskell | Javascript | Julia | Linux | Machine Learning | Metasploit |Machine Learning | Networking | Operating Systems |Open Data Science | Odin | Picolisp | Pharo Smalltalk | Purescript | Python | Racket | Scheme | Social Engineering | Unity | vim | V | Web Development | Windows WSL | Zig

Emacs

emacs-400

Emacs, Shemacs! Emacs is the most wonderful editor in existence. To be sure I use vim too, when the situation arises. And in being a computer polyglot I think it is quite useful to have a few skills, but in terms of pleasure, Emacs wins!

The real problem with emacs is that it takes years to get into it. You have to persevere, you have to learn elisp and you have to spend time cultivating a gargantuan .emacs file.

Theres tonnes of information out there, plenty of starter kits to get you off the ground. But I would avoid them. Craft your own. It is the zen of emacs.

In the months and years that follow, I will be posting many of my emacs exploits, tip and tricks here on these pages. I hope that they will help you on your journey.

The plain idea

Emacs is a text editor the way a workshop is a hammer. Underneath the windows and buffers sits a small core written in C and a large Lisp interpreter, and almost everything you touch, from the way a key moves the cursor to the mail client, is a Lisp function you can read, change or replace while the editor is running. You do not so much use Emacs as grow it.

In 2026 that core is in good health. The Emacs 29 and 30 releases folded in things people used to bolt on by hand: use-package is built in, Eglot gives you language-server support (completion, go-to-definition, renames) out of the box, tree-sitter powers fast and accurate syntax highlighting for many languages, native compilation of Lisp to machine code is a standard build option, and which-key ships with the editor. A fresh Emacs is far less bare than the one I first met.

Why it matters

Most tools ask you to adapt to them. Emacs adapts to you. Once your editing, notes, agenda, Git, shell and writing all live in one programmable place, the friction between them disappears. A keyboard macro you record for code works just as well in an email. A function you write to clean up a log file can clean up a chapter of a book.

It also matters because it lasts. Emacs has been around since the 1970s and GNU Emacs since 1985. The hours you put into it are not thrown away when a company changes its pricing or a plugin store closes. Your config is a text file you own.

An everyday analogy: a kitchen you build yourself

A modern IDE is a fitted kitchen from a showroom: everything is where the designer put it, and it works well until you want the sink somewhere else. Emacs is an empty room with excellent plumbing and a pile of good timber. The first week you cook on a camping stove. A year later every drawer is exactly where your hand reaches for it, and nobody else’s kitchen feels right.

A worked example: making Emacs yours in ten lines

Here is a tiny but real start, the kind of thing that goes in ~/.emacs.d/init.el (or in an init.org file if you like literate configs):

;; Show line numbers in programming buffers
(add-hook 'prog-mode-hook #'display-line-numbers-mode)

;; Remember recently opened files
(recentf-mode 1)

;; Language servers via the built-in Eglot
(add-hook 'python-mode-hook #'eglot-ensure)

;; A command of my own, bound to a key
(defun vikid/insert-date ()
  "Insert today's date at point."
  (interactive)
  (insert (format-time-string "%Y-%m-%d")))
(global-set-key (kbd "C-c d") #'vikid/insert-date)

Evaluate the buffer with M-x eval-buffer and the changes take effect immediately, no restart. That last function is the whole point: four lines of Emacs Lisp and the editor has a new feature that nobody shipped. Use C-h f on any function or C-h k on any key to see its documentation and jump to its source.

Common misconceptions

How it connects

The truth revealed: Emacs is not hard because it is old. It is hard because it hands you the keys to the whole machine, and learning to drive takes time.

Last edited · 38 revisions

Tags: #Computing