back
135 comments
All the other comments in this thread talk about emacs instability when that hasn't been the case for me. I'm on doom emacs, update once in a while, and everything mostly just works other than some color scheme weirdness I had to fix.

I used to be on neovim, and that ecosystem compared to emacs feels like this image: https://i.imgflip.com/2pg2s7.jpg

Some of it is the maintainer shielding us from the breaking changes, but I also think the ecosystem is more slow moving than other editors which helps. The editor is older than most devs after all.

I find that Emacs is actually the first mover on prime technologies. Just look at gptel and org-mode. Nothing else really even comes close. The reason some odd names exist like yank and kill or kill chain is because Emacs was the first and didn't have anything else to use as reference.
Can you explain more what's wrong with the Neovim ecosystem? I just switched from Doom Emacs to Neovim and my impression of Neovim has been much better. (I get that Emacs has a much more powerful backbone, I just realized that I didn't really need that power; I just want a good text editor)
20 or 25 years ago it almost never crashed. Now I might see a crash or freeze once a week or so. And slowdowns several times a day. Of course I'm running more modes now in a more customized environment. Hopefully this new version with more in it will improve the situation.
I use both Emacs ( have used it for decades ) and began using Neovim recently.

Neovim seems fairly reasonable. Using the LazyVim distribution of Neovim and it works quite well for my purposes.

Use borg package. You'll get rock solid emacs. Worth the effort.
The irony is that the vim camp can use just the same "argument" here about emacs. So that is a weird comparison to want to make here.

> The editor is older than most devs after all.

Well, being old does not automatically mean better. Peak human physical performance typically happens, with some exceptions (Justin Gatlin, if we ignore the use of enhancement drugs) in younger years; see Usain Bolt's fastest time achieved when he was young (23 years, in 2009). For mental tasks it is not so limited, but for physical peaks it is often in the younger years. For some software projects it also is the case that older age means more code, which in turn automatically mean smore bugs, all other things being equal. I am not necessarily questioning as to whether emacs has more bugs; my point is that the comparison/analogy does not work as means of quality assessment.

TIL about ruler-mode; now I can delete my own half-assed implementation of the same.

And compare-windows looks really handy. I was about to write a note in my init file to my future self telling me to start using that, but then I saw there is already a note there from my past self, telling me about compare-windows.

scroll-all-mode seems useful, but it seems to only handle keyboard scrolling, not mouse-wheel?

...except ruler-mode uses dragging of middle mouse button to move the fill column, which on my system scrolls.
Prediction: Emacs will reach super intelligence before Claude.
I do wish that Emacs was more popular with LLM technologies.

LLMs are powerful at dealing with text. And Emacs is highly extensible and typically text-oriented. Already I see people say that LLMs much Emacs much easier to use (since you can ask an LLM to come up with the elisp for you), but I reckon what Emacs provides ought to be useful the other way.

With Emacs, it's common to see people favour bringing various parts of the system all within Emacs. I'm reminded of that when I've seen how useful it can be to provide API access to logging/code/documentation when asking an LLM to troubleshoot.

With LLMs, there are several uses cases I see which are a natural fit for org-mode, and just imitated in markdown. -- e.g. org mode have TODO items, checklists, tables (including spreadsheet functionality), code blocks, tagging/properties.

No, I think that ̶w̶i̶n̶t̶e̶r̶m̶u̶t̶e̶ ̶w̶i̶l̶l̶ ̶m̶e̶r̶g̶e̶ ̶w̶i̶t̶h̶ ̶n̶e̶u̶r̶o̶m̶a̶n̶c̶e̶r̶ emacs will merge with claude instead.
Back when I was on usenet, it was a common joke that all real programmers used emacs - and at the time I was a vi guy. It took me so long to get the muscle memory to do what I needed in vi that I thought I'd never change. But sure enough, I'm a nerd, and just like when I tried to learn the Dvorak keyboard layout, I decided to spend two weeks learning emacs. Absolutely frustrating for a few days. But I've been on emacs ever since. Some years I didn't update my emacs config or install any updates at all. Some years, that's MOST of what I did.

No shade at all to VIM or any other community of evangelists who have taken the time to get all the power they can out of their toolset. What works for you works.

But between org-mode and the 70 other features that I've come to know and love (like projectile, flycheck, ivy, m-x butterfly, yasnippet, etc.), I'm never looking back. I will occasionally use another tool for a specific purpose, and sometimes those tools have features and niceness that is hard to beat, but most of what I do professionally is just plain typing and I'm way more productive in emacs than any other typing tool.

Pretty cool that after all these years I can see an article like this and learn a thing or two as well. Thanks OP!

But you can get the best of both worlds by using Evil. That gets you Emacs-the-platform with Vim-the-editor.
Both Emacs and Neovim reward rtfm and working up from a vanilla configuration to your own custom one.

The distribution style packages for these editors make the user skip all that initial learning and discovery. It leads to people writing plugins and packages that simply replicate what was already possible. I have written plenty of elisp myself only to find out I was rewriting builtin functionality.

I'd also say that both editors are fully discoverable but you have to first learn how to use the various help available. Emacs is a bit ahead here with its help options, letting you search for functions, variables, info and man pages, apropos (fuzzy search) and more.

In short start vanilla and explore; this kind of blog really helps with that.

I have been using Emacs since 1994 (Lucid!) and I still don't understand Dired.
NGL, I find the Dired UX out of the box to be frustrating given its reliance on remembering key bindings, so much so that I ended up writing both a Transient menu and a context menu for it, both available in the Casual and Anju packages on MELPA, respectively. If interested, you can read more about them in the following links: https://kickingvegas.github.io/casual/Dired-Usage.html https://kickingvegas.github.io/anju/Dired-Mode-Context-Menu....
Like you, I've been using emacs (gnu) for decades, and dired is my directory/file manipulation tool, for both linux and windows. I never see a desktop with files/folders or anything like that, it's dired for everything.

For example: Just a few minutes ago, in a directory with lots of PDFs, I did:

- wdired to rename pdfs to a consistent convention. Did this with the awesome multiple-cursors package, then interactively spell-checked and corrected my renamed pdfs. All within writeable dired :-)

- delete several non-pdf files

- mark several possible duplicate files and dired-do-shell-command with sha512sum

- move several pdfs to another directory (split window and open target dir, mark files to move, one-button move using dired-dwim-target.

- mark several pdfs and open with reader app

Obviously that's all do-able with a shell or traditional file manager GUI, but dired was a total win here.

Multiply that win by a hundred times per week, and that's a quality of life enhancement.

Fun fact. DIRED pre-dates EMACS.

DIRED on ITS is also similar enough to today’s DIRED.

It has a million features I don't use. But some features are really, really nice, like C-q for editing file names (C-x-s to persist changes once done). Rectangle editing is so, so nice to have when renaming multiple files.
Check out sunrise-commander, it is Dired reskinned as a dual-paner. Love how convenient it is to have a powerful integrated file manager.
Try it out! It has its own learning curve, but it's convenient to use in quick and dirty situations.
wdired is still magic to me. Use it almost every day.
I think 's' is sort.

More seriously, what I would like to do is ediff files (only the differences) in two directories (have the changed files together one line after the other)

or, ediff two arbitrary lists of files and have them show up in ediff.

I have an opposite argument - no other file manager ever worked for me and I tried and keep trying so many. And not because Dired "is so much better" or "far more capable", or "has better default keybindings", or due to my muscle memory or Stockholm syndrome, no. It's because I can always introspect every single feature of it, override any command, integrate things with any other packages.

I honestly think that we (programmers) collectively went backwards when we tried to abandon Lisp. Why aren't there [popular] apps with a built-in true Lisp REPL for file management, email, version control?

Misunderstanding (or complete incomprehension) of Lisp lead us to the mess we're in today. Some may say: "people made their choice", etc. Well, like so many times in history, majority is not always right, but quite the opposite. We spent almost 2000 years building with inferior Portland cement, which degrades in seawater within decades, instead of using techniques perfected by Romans. We keep piling the crap, making CO2 emissions even worse. And only because we lost the recipe. The Pantheon built with Roman harbor concrete that strengthens in seawater still stands. Emacs is the Pantheon of software - the monumental example of what we've lost, the shining display of continuous progress in a world of regression.

It is heartbreakingly sad because there's now an entire generation that has no clue, because they have not witnessed the decades of callback hell. They don't know anything (or wouldn't even want to know) about "Beating the Averages", Greenspun's Tenth Rule, Gabriel's "Worse Is Better" and how he was so conflicted about his own essay that he spent a decade writing rebuttals under a pseudonym.

Lisp won't ever die, but it will never regain its former supremacy. Because for humans, economic/social reasons matter more than technical merits.

it's bare but i'm surprised people would get confused by it, it kinda follows the usual shortcuts over bare unix util output: mark/select, delete, rename, compress, encrypt

then maybe you dislike the low-discoverability of shortcuts, i think someone added a transient layer (aka a visible shortcut summary with some state management for options)

dirvish is nice
I saw orgmode once and I really loved it. Used Doomed and spacemacs. But dear Lord, does everything break on updates and need fixing. I had to give up as I just don't think it's feasible for me to fix my emacs when I want to get some work done.
I’ve come to believe that this is less an emacs problem and more an “emacs plugins that try to do way too much stuff / take too much control” problem. I’m on vanilla emacs (I don’t even use use-package) and my config never breaks any more, even when upgrading major emacs versions. I think it’s about doing things in harmony with the emacs way instead of trying to take over the UI/UX. Emacs Live was always broken when I was using that.
What "updates" are you referring to? In more than 15 years of using Emacs I've not once been blocked from doing work due to any kind of breakage.
> does everything break on updates and need fixing

Emacs is a kitchen and emacs-packages are recipes - they come with the exact instructions (source code). If you try to cook fifty different meals all at once, your kitchen inevitably would be a mess. You need to know what you're trying to cook and how to work the recipes, and that comes with experience. No starter kit gives you a structure to un-mess your kitchen magically. Every sufficiently complex Emacs config is a system - a composite interweaving network of thousands of expressions, millions of code lines - it is the Space Shuttle equivalent; Neovim is like a simple twin-engine and VSCode is like a Cessna in comparison. Updates break your Emacs, I update things multiple times a week and rarely anything breaks (I consume over 350 packages); when things stop working - it doesn't usually take even a minute to figure out what's up. Yes, it does happen, but not as often as you painted it. On the other hand - when I need to get something done, there's no other tool in existence that can help me better.

I use vanilla emacs and compile from source straight from master at whatever commit it happens to be in when I decide to do it.

Only once was there a noticeable breakage when a command like `git log` in the terminal would spit out all its output instead of displaying one screenful at a time. I'd expect someone following stable releases wouldn't experience any breakages.

I tried Doom or Spacemacs for a while, not sure which one right now. The one that does evil-mode by default. After it crashed a few times inexplicably, I gave up on them and returned to my heavily configured vanilla Emacs, which never crashes. Not sure how the other Emacsen managed to break things and maybe those failures are long fixed by now, but it was quite unfortunate. I imagine other people experiencing such a thing thinking Emacs is unstable.
Also karthik is the author of gptel mode.
Cool blog post. Though I think the blog post would benefit from having a table of contents. Some things one might know about or not be interested in, but one has to scroll through them anyway.
Nice write up about Emacs, ruler-mode is a thing I never used before.

Recently I finally start to C-X M-x to do text scaling, the typing is hard even as near 2 decades user of Emacs.

The biggest problem Emacs has will not be solved by blog posts like this. For most people the editor is a means to an end. They are invested in their end goal, not in hunting down blog posts telling them how to make better use of their tools. If Emacs wants wider adoption is needs a better out-of-the-box experience, which is something that distros like Doom Emacs and Spacemacs offer. That's the only way to make a dent: when people boot it up it has to have the good stuff right in their face. This also means ditching the "vanilla Emacs only" snobbery.

That said, I'm the kind of person to invest time in my editor and I appreciate this post.

I understand your point of view, but as far as the Emacs community is concerned there is no problem.

Emacs is not an editor. Emacs is not an IDE. Emacs is a platform to develop your own tooling. Text is the main interface Emacs offers.

I don't speak for the Emacs community, there isn't even such a thing except maybe semi related groups that share viewpoints, usage and interests. But on the whole, I don't think the "Emacs community" is looking for users or is looking to attract users. At least not users who are looking for "text editor experiences" that mimic or take inspiration from VS Code and the likes.

There is no "problem" in emacs (there are big technical problems, but not this one) and no need to get "most people" on emacs - the ecosystem is healthy by all means and only increasing.

The "out of the box" experience could be better - but for emacs users. Those, who expect VS Code, should just install it and live happy.

I think whoever really wants to know what Emacs is about will give it a try and spend some time with it. Or some other distro like Doom Emacs or Spacemacs or stuff like that, if they are after a better out of the box experience.

What truly is a problem and extremely difficult to solve, is getting multi core and concurrency into Emacs properly. A truly concurrent lightweight thing would be so amazing to have and make package development probably much easier. No more worrying about accidentally blocking the UI and all that.

To get there would probably break many existing packages and would probably occupy all maintainers for 3 years or so, because Emacs comes from a time, where software was not designed to support that.

That would be a problem if the Emacs project needed to attract new users that aren't "the kind of person to invest time in" their editor.

I'm not sure it does. Emacs has a healthy user base of people like you and I and appears to receive stable funding from the FSF. I don't see that changing any time soon. Emacs can be Emacs and be just fine the way it is.

I will keep suggesting new users should aim to get as close to vanilla as they have patience for, because that will teach them more about the powerful virtual machine running their text editor, and the ways it can be bent to do their bidding.

Why does emacs have to be for everyone? Its attraction, to this user at least, is the lifelong process of adaptation and discovery that molds it to the user, and the user to it.

It’s like a pet. I love my dog, I’m happy to tell you about my dog, share pictures, etc. But in sharing, I’m not asking you to take _my_ dog. If you’re inspired to go find your own dog, train it, care for it, you can have a dog too!

But neither taking my dog nor the first-day experience of your own dog will replicate, and asking for a dog with a good OOTB experience IMO misses the point.

Half of the obscure features mentioned required the author's massaging to make useful to himself. The history of these "solutions looking for a problem" is common, some guy reveling in a rabbit hole of his own creation, the only difference being that guy was old enough to have a gnu.org email address whereas the rest of us publish our dabblings on github as third-party packages.

This reminds me of the fading but ever present power of institutionalism. For probably good reasons we accord higher respect to the Tonight Show than some rando podcaster. But at least in emacs's case, there really is no quality difference between a "batteries included" mode and one off the rack.

My 2 cents (I hope I don't offend anyone, and of course Emacs community is amazing). I've been using Emacs full-time since ~2010 but I must admit it's been more like part-time along with VSCode since ~2024.

> This is largely a discoverability problem

In my experience it's not a discoverability problem at all. Not even a little bit. My problem with emacs batteries has always been stability between different combinations of packages. I know how to use dired, I know how to install elisp packages, I know how to write emacs lisp myself. The issue with emacs is that it's difficult to create large packages with "batteries" because any additional package added can bork some random, seemingly unrelated package. E.g. back in the day (maybe around ~2020s or a bit before?) I've been using Spacemacs without vim keybinding, and although batteries were included and I was happy, this issue I mentioned above was even bigger. Because I constantly had to deal with installing a package and discovering that it broke some unrelated LSP, programming, or autocomplete package. It gets quite a bit frustrating at some point. Since this LLM madness started, I never really installed anything LLM related to Emacs, and have been using other text editor for LLM related stuff, Emacs for everything else (especially if there is a strong Emacs package, e.g. agda2-mode is incredibly good, almost flawless!)

Again, just my humble two cents. Obvious Emacs is amazing, and in many ways it's still my go-to, I just think that the biggest issue for me has always been randomly broken packages. Maybe I'm a terrible elisp programmer, that's possible! But I've been using emacs everyday for decades, so idk...

Emacs is a great OS. If you complement it with vim then you may have a working editor as well, provided you know how to exit from vim.
I LOVE Emacs, but I HATE it when I have the irresistible urge to edit text, but Emacs has dead batteries.

https://www.youtube.com/watch?v=D1sXuHnf_lo

nah, vi/vim forever.