Live data from Hacker News

Two Years of Emacs Solo

rahuljuliato.com

131–140 of 147 posts

Re: Two Years of Emacs Solo

#131

I’m always impressed by people who are hardcore EMacs or Vim devs, their setups are impressive af. I’m a GUI guy though. As soon as I try delving in, I abort when I see things like “just type c-C dingle bob to do x thing.” I’m happy these people found something that works with their brains. I just want a GUI that works like what they use. I recently saw a Zed fork stripped of AI stuff but there’s no binaries yet (you…

> I just want a GUI that works like what they use.

TL;DR: Emacs is a GUI app and has lots of GUI-related functionality, but it tends to be slightly neglected by the majority of users. You can easily build your ideal GUI using the provided building blocks; the problem is, you have to build it, since most other users are not interested in doing so.

Both Emacs and Vim/NeoVIM have GUIs. I can't even run my Emacs in a terminal without `-q` (omit user config) - I never feel the need, and my config would be much more complex if I tried to make it terminal-friendly.

You don't need baroque keybinds, either. Both Emacs and Vim have always had "Command Palette" - Alt+x in Emacs, : in Vim - and with a few plugins[1], you get fuzzy matching, inline docs, icons showing what type of command you're looking at, etc. Both editors also have GUI buttons and mode-specific (on top of generic) menus (including context menus on click). This provides unmatched discoverability of available functions - you can then bind them to any key combination you find easy to remember. You don't have to, though, since with a few other plugins (Orderless), the frequently used commands bubble to the top of the list.

There are two things Emacs handles a bit poorly: mouse and popups. The former stems from existing users largely ignoring the issue, but the hooks for clicks and even gestures are there. The latter is an unfortunate consequence of wanting TUI to remain first class. There is functionality for creating Emacs "frames" (GUI windows) with given dimensions and a specified position, but it's basically GUI-only. Things like auto-completion popups default to something that can be emulated in the terminal, with frame/window-based implementations provided as extensions. That means that you can have a pop-up with method names starting with a few characters you typed, you can even have another pop-up beside that with docs for a given method, but you generally won't get that doc displayed as rendered markdown (you can't display headers with a bigger font in a terminal). It's 100% social and not a technical limitation - if you accept that you're only going to use Emacs in a GUI, you can get an IntelliJ-level of mouse and popup handling... Though it takes some effort.

That's the real problem, I think. You need to craft many of those features yourself out of available functionality. And it's not even a matter of some (even obscure) configuration, you will need to write your own Lisp to get the most out of Emacs. That's much more of a pain point and a respectable reason for not wanting to touch it. Technically, though, Emacs is not anti-GUI, and there are many packages that make Emacs pretty. Less so with mouse-friendliness, unfortunately, but you can configure it into something half-decent without much effort.

The only environment I know of that is (at least) equally powerful and flexible, but which handles GUI better is GToolkit[2] (VisualWorks was nice before the license change; now it's impossible to use) - a Smalltalk-derived system that uses the host OS (Linux/Windows/Mac) GUI directly through Rust bindings. A step down from there, but still respectable, is Pharo and the browser/Electron. Other than that, you have pre-written GUIs that you can't really change beyond what the developers planned.

[1] Vertico + Marginalia + Embark in my case

[2] https://gtoolkit.com/

Re: Two Years of Emacs Solo

#132

If I was going to reimplement Emacs it wouldn't be with Lisp. Is there some reason Lisp is superior to any other general-purpose programming language for text editing? I'm skeptical because to my knowledge, Emacs is the only major text editor written in Lisp.

The Lem editor[0] and LispWorks IDE's[1] are implemented in Common Lisp. Still, the reason for choosing a language for whatever are always more social and path-dependent than technical (reason 1: initial developer of whatever really likes the language, reason 2: language is seen as hip within some crowd, reason 3 (later in the game): management feels language is safe). Technical reasons for choosing a language typica…

As much as I love Common Lisp, it's dead. It has 2 orders of magnitude fewer packages in quicklisp than Emacs has in MELPA - and Emacs is an editor, not a general-purpose programming language. SBCL has a handful of devs and moves very slowly - nothing else does at all. Maybe LispWorks, but that's expensive.

CL is also held together - and held back, hugely - by the standard that won't ever be updated. It's good to have it, but there are major omissions (code walkers, MOP) that won't ever be fixed.

As it is now, Elisp is more practical as a scripting language than CL. The gap will only continue to grow. Right now, CL has an edge in parallelism - native threads and mutexes (with all the problems they entail) work there, while with Emacs, the only parallelism you can get is through separate processes. On the other hand, async/await-style concurrency works quite well in Emacs, while in CL you're basically a few macros away from raw promises, and the only real asynchrony is through a pool of threads executing callbacks, and it doesn't play well with conditions and restarts and some other advanced features (notably absent from Elisp).

I love CL, but right now it's aged considerably, lost many of its unique advantages, and has little chance of ever catching up. It's a shame, but using CL in 2026 is not a superpower anymore - it's just one of the similarly-valued propositions, competing with other dynamic languages, still providing a few unique advantages, but even those are being implemented in other languages fast.

Re: Two Years of Emacs Solo

#133

Earlier quoted context omitted.

>Is there some reason Lisp is superior to any other general-purpose programming language for text editing? purely for text editing? No. But that's not what distinguishes Emacs, it's famously very mediocre at it. The point of Emacs is to be a fully transparent, inspectable, dynamic and changeable environment. In spirit similar to Smalltalk systems like Pharo. And for that a Lisp is not the only choice but a very good…

An editor environment based on Smalltalk would be very interesting.

See GToolkit[1] - Lepiter is a bit like that. It's too notebook-y for my taste, but it lets you write and format text and embed any widget. It also uses a native GUI and is not a repackaged browser.

[1] https://gtoolkit.com/

Re: Two Years of Emacs Solo

#134

Hey celadevra_, author here. Thanks for submitting my post to HN, I really appreciate it. Seeing it stay at #1 for a few hours while my blog server struggled with the requests was quite a joy :) PS: Also, thanks to everyone who commented on it. While I can't reply to all of you, I'm doing my best to read everything. I'm glad to hear that the project resonates with so many people, whether philosophically, aestheticall…

I've used {GNU |X}Emacs intensively for over 20 years and never thought about doing a thorough study of many of the things it provides like you do in Emacs Solo. Your work is inspiring to me in showing me what dedication and thoughtfulness can achieve, even when it seemed at the beginning as trivial as one tending their own homestead. Many, many kudos.

Re: Two Years of Emacs Solo

#136

If I was going to reimplement Emacs it wouldn't be with Lisp. Is there some reason Lisp is superior to any other general-purpose programming language for text editing? I'm skeptical because to my knowledge, Emacs is the only major text editor written in Lisp.

>Is there some reason Lisp is superior to any other general-purpose programming language for text editing? purely for text editing? No. But that's not what distinguishes Emacs, it's famously very mediocre at it. The point of Emacs is to be a fully transparent, inspectable, dynamic and changeable environment. In spirit similar to Smalltalk systems like Pharo. And for that a Lisp is not the only choice but a very good…

> But that's not what distinguishes Emacs, it's famously very mediocre at it.

I disagree. Every time I use another editor I lament missing features when it comes to editing text. Like most editors (vim excluded) have pretty lackluster undo, transpose, case altering, and text reflowing commands.

Re: Two Years of Emacs Solo

#137
post #80

If I was going to reimplement Emacs it wouldn't be with Lisp. Is there some reason Lisp is superior to any other general-purpose programming language for text editing? I'm skeptical because to my knowledge, Emacs is the only major text editor written in Lisp.

This article isn't about reimplementing emacs. BTW emacs is written in C.

P.S. As for the naysayer: The C code does a lot more than run elisp. e.g., memory management/GC, display and I/O, primitives/built-in functions/subrs, system services.

Even if you interpret emacs strictly as an interpreter of elisp, that interpreter is written in C, not elisp.

If you removed all elisp from the emacs distribution, you would still have an extensible windowed text editor. And you could add any desired functionality by writing elisp. Take C code away and you've got nothing functional.

Re: Two Years of Emacs Solo

#138
post #78
post #69

Earlier quoted context omitted.

The ~foo as backup convention is not part of any standard. Using hidden files is a stronger convention, e.g. .foo.swp or .foo~. But nginx's sites-enabled also doesn't filter those. It's a very simple mechanism that assumes what you put in that directory is a website configuration. Adding backup files here and there is considered spam, no matter how old it is. It's the second thing I fix in either Vim or Emacs: Put ba…

There was no mention of ~foo

P.S. I'm not wrong. Perhaps someone got confused about what "suffix" means.

Re: Two Years of Emacs Solo

#139

Earlier quoted context omitted.

An editor environment based on Smalltalk would be very interesting.

See GToolkit[1] - Lepiter is a bit like that. It's too notebook-y for my taste, but it lets you write and format text and embed any widget. It also uses a native GUI and is not a repackaged browser. [1] https://gtoolkit.com/

Did they do anything to fix the OpenSmalltalk VM lamentable keyboard input?

Re: Two Years of Emacs Solo

#140
post #31

> — Sensible file handling: backups and auto-saves in a cache/ directory, recentf for recent files, clean buffer naming with uniquify It's crazy to me how out of the box when you edit nginx file at /etc/nginx/sites-enabled/foo it creates another file foo~ there and nginx tries to load that too When I tried to ask emacs reddit community they started attacking me for changing the default that only I need and fits every…

I won't defend the automatic backup file, because it annoyed me, too. But it's easy to disable or have them created somewhere else, which is more than you can say for most software lately.

I just realized that `apt install emacs-nox` is a great editor in containers and VMs. I just have to disable it every damn time (for regular and root user). Defaults would be better.
Post reply on HN