Emacs Tales

A collection of unexpected stories involving emacs

Emacs Love Tale

by sdp | fev 16, 2021

This tale was written by sdp as a request for a long an rich version from a comment on r/emacs

I never intended to use emacs, but because I was in love, I did anyway. My wife had never had a computer in her home until she lived with me. As a computer professional who wanted to leave work at work she was understandably skeptical, but she worked on mainframes, and my little early days Macintosh was friendly in a way she had not experienced. She was soon won over. Then Apple went Mac OS X on us: the interface changed, it didn't work well on our equipment, and the experience soured.

We switched to linux, and I promised her there would be adequate replacements for all her apps. Most things were easy; she found browser, email, and file managers acceptable enough. But she had become enamored of Apple's desk accessory notepad, and nothing I found was to her liking. I tried to convince her that she could become accustomed to an ordinary text editor, and she was open to that. She tried everything in our distro (Debian potato), but she wasn't happy with any of them. When I caught her slipping back to the one computer still running Mac OS 9 just to take notes, I knew I was going to have to write her a notepad.

She gave me reviews of text editors after she tried them. Two in particular she loathed: vi and emacs. Nevertheless, after surveying the landscape, I decided that emacs was the best choice because its extensibility meant I could come very close to replicating her beloved notepad, and all the power of emacs would come along for free. In January 2005 I set out to learn emacs and recreate that notepad.

I took a two-pronged approach. First I went about the business of making emacs look more familiar and behave as she expected. The command keys on our Macintosh keyboards read as super to linux, so I set up a parallel group of keystrokes using super where the Mac had used command. This meant that her existing muscle memory (and mine!) would try something and have it work. I also changed the text in the menus to familiar nomenclature. I gave her open, new, close, and quit; undo, cut, copy, paste, and select all; find, and find again; and print. It meant the world to her not to see visit and kill and yank; she had no intention of facing a learning curve for this, and I made it disappear.

The second prong was to actually write the notepad. My coding skills were rusty and unrelated, but I was motivated by love so I pressed on. I leaned heavily on the emacs lisp documentation, the introduction to lisp document, and a paper I found online about writing minor modes. Everything was new to me so the going was slow, but nine months in I had a working minor mode that she was happy with. It's abilities were greater than those of the notepad I was trying to replace. Apple's notepad desk accessory had been limited to eight 32K pages and a single document. My emacs version didn't limit the number of pages or their size, and she was able to have multiple pads for different subjects. She liked it well enough that lack-of-emacs was her stated deal breaker in subsequent distro hopping; that's quite the improvement over her initial loathing.

If I was trying to solve her problem today, I'd probably approach it differently. I might write it as a major mode or leverage the power of org mode (which I didn't yet know about). My minor mode used narrowing to do its page at a time pad magic, and because of that it is incompatible with org mode and unsuitable for users of narrowing. To my mind, that made it less useful than it otherwise would have been. My wife didn't care about that; she wanted free form text on individual pages seen one at a time, and that I gave her. She never did take much advantage of the breadth of emacs unless it was something I added to her config. Doing so was not of interest to her. But she loved that I had written that minor mode just for her, and she used it daily. She never lost interest in it, using it for the rest of her life.