back
153 comments
I think I fell in love with emacs when I realized that individual key presses could be scripted. Or possibly when I wrapped my head around macro injection. Hard to say, this thing grew on me from being an absolute space alien of an architecture to the first tool in the toolbox I reach for if I've got a new project to tackle.

My advice to people when editor wars come up is that going deep on something is more important than going deep on the right thing. emacs versus vi? No strong opinion. I happened to learn emacs first and would be repeating a lot of labor to go as deep on vi.

(... But I do tend to give a slight nudge in the direction of something of that ilk because relative to say, VS code... Those editors have already stood the test of time, they aren't beholden to one owner, and while past performance is not proof of future expectations, there's a lot of people heavily invested in keeping both of them alive and thriving).

Yes the day you find out that in GNU Emacs, the "u" key is actually bound to (self-insert-command) and thus can instead be made to do anything ... well,it's quite a day.
> I happened to learn emacs first and would be repeating a lot of labor to go as deep on vi.

Speaking as someone who used vim for 10 years before getting sniped by Emacs (ten years ago.. shit I'm getting old):

vim isn't as deep as Emacs, it's not even close. vim is only as deep as evil-mode. In fact, vim has a UX paradigm that's out-of-the-ordinary, and that's it.

That's why in Emacs, modal editing is just another minor mode..

Direct Link to "Lem" the Common Lisp based "Emacs" discussed in the talk.

https://lem-project.github.io/ https://github.com/lem-project/lem

Is this based on Hemlock, or was it written from scratch?

I really, really want a graphical emacs. By that I mean, I want an emacs with graphics, not an emacs in windows. I want to easily be able to draw stuff.

I ran into this the other day, I like to dabble in emacs, and I had a list of results I wanted to make a quick chart. I ended up dumping it out in a simple CSV, and copy/pasting that into a spreadsheet, and hitting "chart".

Would have been nice to go (line-chart my-list) and have a window pop up with reasonable defaults. And be able to print it to a PDF.

emacs has some SVG support, but I guess its maintainer whim whether you get it or not, I wasn't able to easily get it working on my Mac. That could be a start. But something "nicer" would be, you know, "nice".

Sadly not licensed under the GPL.
I tried out Lem a couple times, and I was impressed, but couldn't see myself moving to it. What was impressive is how starting it up just.. worked... with LSP type stuff... I was editing Rust and that all functioned. Not as featureful as my Emacs setup, but further along than I expected. And the keybindings were mostly familiar.

But so many of the things I now rely on -- company mode, treemacs, vertico, etc. are not there. The value in Emacs is the huge community of things.

Also I had some instability each time I tried it -- buffers filling up with Common Lisp backtraces, etc.

Still I really want to see some advancement in this arena, because the actual implementation of GNU emacs leaves a lot to be desired in 2024. The packages overtop of it are nice, but the core editor blocks and pauses too much.

> treemacs

try C-x d aka M-x filer?

I really wish that Deuce [1] [2] got more attention as a source for ideas for Emacs alternatives. It sounds incredibly cool.

[1] https://web.archive.org/web/20221002093520/https://groups.go...

[2] https://web.archive.org/web/20210407151341/https://discuss.a...

Could you do a separate HN post for this, so it'll come up in searches?
After reading this article this morning I went down a very fun rabbit hole today: removed my SBCL installation, installed Roswell to install SBCL again, etc.

The good things: editing works, slime works, access to all my Quicklisp based libraries and projects. The bad things mostly involve limited Lem functionality because I rely on many eLisp libraries like treemacs, etc.

I really like the speed, and having everything in Common Lisp is fun. I was using Roswell to build Lem from source, and I really liked the project’s setup, build process.

Ok, as a long-time emacs user (I think I started in 1985), I am officially nerdsniped.

Building the sdl2 version, there is no luck finding libSDL2_ttf, so I'll be trying the ncurses version.

Looks pretty snappy so far.

Same. The live demo at the end was very effective at spiking more interest, as well.
Two projects that may be of interest, related to this topic:

- Rune (https://github.com/CeleritasCelery/rune) - A re-implementation of Emacs but in Rust (like Remacs, but actively developed)

- Pimacs (https://github.com/federicotdn/pimacs) - Same, but using Go (created by me, but developed in a very slow pace)

Rune, the language, came before. So we have now 2 rune projects, the language and the emacs vm
For anyone running nix/nixos, looks like there isn't a nix-shell-able package but `nix run github:dariof4/lem-flake` starts the ncurses version
The flake is unfortunately stuck on an old version (v2.0.0), since they changed how it's built with v2.1.0 and I haven't gotten around to fixing the flake, I'll try to see if I can get an update for it soon.
I like the idea of a more modern Emacs that uses the full power of Common Lisp a lot, but I worry I'd miss a lot of features. Does Lem have org mode, a good LSP system, something like projectile, and the ability to display images and GUI buttons and such? And most importantly, does it have an evil mode with doom/spacemacs style leader key support?
Take a look at the GitHub readme[1]: “Lem supports other programming languages thanks to its built-in LSP client. You can choose between an Emacs and a Vim mode.”.

Although I wish they’d explore the Kakoune/Helix style of editing too, which I think will become a major competitor to Vim (and I personally prefer it myself).

However, I am also worried that Lem won’t gain any traction because the Emacs ecosystem is just too vast and has too many killer apps (Magit, OrgMode, Dired, the amazing built-in Help/Documentation - to name a few).

But it may very well become a modern Emacs alternative if they focus on better user experience, leave behind some idiosyncrasies of the past and create great alternatives or ports of Emacs’s most appreciated plugins. There is a great opportunity in starting from scratch, but I guess it is also a huge challenge to compete against decades of development, a huge community and a rich ecosystem.

[1]: https://github.com/lem-project/lem

to answer for readers: yes:

Lem has a LSP system,

something like projectile (M-x project-find-file, M-x project-switch etc, still inferior but nearly there and easy to extend)

images: yes (the SDL2 version). It can display games (M-x tetris, it can run a real game engine)

evil: great vim layer, no leader key. I didn't see a discussion about that, you should come and ask ;)

and no:

GUI buttons: that's not a UI choice I guess, so no

no org-mode support yet, although it has an Emacs RPC, so the idea is to use it to bring org-mode.

not asked, but good to know:

it has a wip Git mode: see status, stage files/hunks, commit, interactive rebase, basic hg and fossil support. (I added it)

It has LSP, but not the other things, really, from what I saw. You'd miss a lot. No idea about the modal editing, not my thing.

Of course, it could be a foundation to build on, I dunno.

EDIT: yes after watching the presentation, it has a modal/vi type mode

Completely off topic but this website is how it should be done. No JavaScript enabled and I can play the videos and see the text and images. Well done.
Sacha Chua does God's work for the Emacs community with building the Emacsconf infrastructure and her Emacs newsletter. See her blog on how she set up auto captioning:

https://sachachua.com/blog/2024/01/2024-01-28-yay-emacs-clos...

Ah, a grand achievement. Looking good without using any of the fancy stuff people use nowadays and doesn't feel slow.
fosdem and emacsconf were very lean in many aspects, website, video streaming.. and even Q&A (bigbluebutton?) they made a beautiful setup
Well I can’t play any of the media, perhaps JavaScript isn’t that bad?
Just don't read it on a mobile device.
The only thing missing is CSS that works (layout was messed up on my phone).
It's so crazy to think the original emacs was a commercial product.
The original EMACS ran on ITS on PDP 10s in the MIT AI Lab. It definitely wasn't a commercial product.
In the mid-1980s there was a commercial Emacs workalike (on floppy disks) for the IBM PC, called The Final Word, later acquired by Borland and renamed Sprint. For printing, it featured a workalike of Scribe, an early text markup language and precursor to HTML by Brian Reid. In law school I'd used a TOPS-20 Emacs and Scribe for law-review work, so later I bought The Final Word and an early HP LaserJet printer to produce camera-ready copy for my first book. Good times (sort of).

https://en.wikipedia.org/wiki/Sprint_(word_processor)

The original emacs was a commercial product?
It's weird to be building an Emacs clone nowadays. It's fairly clear that Vim and Emacs _both_ lost the editor wars, and VSCode has come out on top. That's not to say either Vim or Emacs are dead or will disappear, but building a clone of a niche editor is risking dooming the project to being a niche within a niche.

If it's just because hacking is fun, then by all means have a blast. But if the goal is to compete with Emacs, consider instead setting the target at something with far greater popularity than Emacs.

Speaking from personal experience, I moved from VSCode to Doom Emacs a year ago, and the on-ramp wasn't nearly long or as tough as I thought. The defaults are good, and anything else that I customized I actually just used ChatGPT/GPT-4 to generate it. It took about a month to get used to the new setup. With LSP/Magit, it feels like I'm not missing out on much from what VSCode offered, and then whenever I want to personalize it, I can. For a creative person (which I'd argue most developers are, kind of by definition), it's fun.
I'm pretty sure I read this exact comment 10 years ago, but "Sublime Text" instead of "VSCode".
> It's fairly clear that Vim and Emacs _both_ lost the editor wars, and VSCode has come out on top.

Many (most?) Emacs enthusiasts don't use it primarily for SW development. VSCode simply isn't an alternative for their needs.

Make two lists:

- List of things you can do in VSCode that you can't in Emacs

- List of things you can do in Emacs that you can't in VSCode

The latter list will be 10-100x longer.

> lost the editor wars

What does that even mean? Both editors have large&strong communities. I don't see them going anywhere.

Software definitely doesn't have to be popular to be useful. Not being extremely popular comes with advantages as well. Nevertheless, Emacs is probably more popular than a lot software shared on Hacker News.
If someone is interested in lisp, you can assume they aren't driven by mass market popularity. Why on earth would want to go up against MS on their turf???
I, for example, am very happy that the Helix editor exists, which could be considered a clone of Vim (if you squint a little).

I'm pretty sure the authors of NeoVim heard wise advice like yours, but I'm happy they continued.

emacs and vim were niche way before VScode was around. The goal was never market dominance. It's not a market. It's a tool. With users. And these users are also active contributors to their own ecosystem.
Diversity of interest does not equate to intensity of interest.
Why do anything if there is already someone doing it?
> Vim and Emacs _both_ lost the editor wars, and VSCode has come out on top

I dream about a day when programmers stop being fervent zealots about tools they use and instead try to find pros and cons of their tools and try to borrow good ideas from each other.

This 'Emacs vs. Vim vs. VSCode, etc. etc.' comes from poor understanding the core principles of each of these things.

Can we discuss these things without emotional attachment, or even forget for a minute that they are "editors". Instead of trying to find who's wining "the editor wars" (is it even a thing?), can we instead talk about the big ideas behind them?

- What makes Emacs so powerful for many, and at the same time so intolerable by many others? The big idea behind Emacs is Lisp. Without understanding the core principles of Lisp, and by "understanding" I mean truly experiencing the dynamic nature of it, its malleability, the structural editing, 'true REPL', 'code is data', etc., it is quite pointless to even start such a discourse.

Lisp is amazing. I firmly believe that every programmer should gain good familiarity with Lisp. I am forever indebted to my younger self for forcing myself to learn Emacs and Emacs Lisp and for discovering the beauty of it. Learning Lisp made me a better programmer. I'm not claiming to be a good programmer today, but I was much worse before I learned Lisp. Lisp helped me understand FP, composability, meta-programming, logic, recursion, lambda calculus, symbolic computation, generative testing, and even type theory. And I'm quite sure, many other programmers can share the same sentiment.

- Without understanding, I mean not just "understanding", but heartfelt use of it for many months and maybe even years of the fantastic, remarkable idea behind modality and mnemonics of Vim, it is quite impossible to explain what makes it irreplaceable for those who learned its power. And by the way, there's no such thing as vim-mode. No other editor or IDE truly was able to recreate that model, with one exception - Emacs. None of the IDEs - IntelliJ, VSCode, XCode, Android Studio, etc., can properly emulate Vim-navigation. Only Emacs does a better way of vimming. Pretty much every other IDE fails to replicate Vim. Unless it's Vim/Neovim, vim-mode in all of them is just that - an emulation. However, Evil mode in Emacs feels much more natural. Sometimes, you forget that it's an afterthought, an extension, and not a built-in functionality. And that's due to the power of Lisp. Also, these days, there's ton of interesting stuff getting build on top of Neovim, because now you can use Lua instead of vimscript. And with Fennel - a Lisp that compiles to Lua, one can build some really interesting extensions.

- Now, VSCode fancies the idea of being built on top of a web browser engine. Turns out, it ain't such a bad idea after all. Perhaps Vim and Emacs should also one day try to have their own, built-in web browsers. I mean truly built-in, so one can extend it and change it and build things on top of it.

I guess, it turns out there's no such thing as "editor wars". VSCode is more popular today because certain ideas behind it make it appealing for many people. For the same reason, certain ideas make Vim and Emacs more appealing for others.