Remix.run Logo
iLemming 7 months ago

> you feel like you're the one in control.

I know right? Sometimes it so ridiculous, it's not even funny. Here's one, totally idiotic example. I use Google Translate directly in Emacs, okay? So, when you enter something like "He was born in 1978", it doesn't translate the date, and that's sensible. But I'm learning a language, I really need to see it e.g. in Spanish like this: "Nació en mil novecientos setenta y ocho", and I didn't want to write every time "He was born in nineteen seventy-eight", so I wrote a tiny function (took me ten minutes) advising google-translate that installs 'number-to-words' npm package and uses it to turn the numbers into words before sending the whole thing to Google Translate API. Totally imbecilic, right? I guess shit ain't no so stupid if thy shit works, yes?

Now, Neovim, VSCode, Jetbrains, and Sublime, they all have similar plugins for translation. I wonder if any experienced user would ever bother with something like that? I bet they just wouldn't. It wouldn't occur to them to even consider that as a minor annoyance. Emacs on the other hand, changes the way you think about efficiency and being in control.

wilkystyle 7 months ago | parent [-]

The advice system that you mentioned is such a good example of this! I recently realized that I had come to rely deeply on xref navigation for going to a definition and then xref-go-back/forward to hop between different jumps. I was bummed that it wasn't a more general backward/forward capability, but then I remembered the advice system. In like 10 minutes I whipped up some quick elisp to add some :before advice around various navigation functions to call xref-push-marker-stack. Not only did it work perfectly to turn the xref marker system into a general navigation capability, I also had complete control over which navigation functions push a marker and which do not.

I think this is the difference with Emacs. Not only is it primarily a lisp environment and then secondarily a text editor, but it goes above and beyond to add general capabilities for modifying its own behavior. With most any other piece of software I can think of, you are relying upon the developers to provide you with the exact APIs to control the software. With Emacs, you control the entire lisp environment, and therefore control the editor running within it.

edit: Siri typo