Hacker News new | ask | show | jobs
by kleiba 643 days ago
As an old-timer, I don't quite understand why Emacs still is kind of a niche app after all these years even within dev circles. Most of the functionality that other editors offer is available in Emacs too, and when it isn't, then there are usually acceptable alternatives.

Over the years, I've heard many arguments against Emacs but found none of them convincing, especially if you take the point of view that learning a powerful tool can be an essential asset in any profession. Emacs certainly is such a tool.

The same question could be asked about vi(m), although that one at least received some hipster love in recent years. That seems to have cooled down somewhat too, though.

5 comments

Any emacs set up as a 'modern IDE' with neat features runs like an absolute dog. It's only fast because it was written long ago.
Does it?

I've set it (emacs 29.4) up like that (LSP mode (including rust), DAP mode, 160 emacs packages, daemon mode) and it works very fast for me. It can do project tree, intellisense, refactoring, macro-expansion and auto-implementation that way.

Opening a new document takes about 75ms for me.

Modern emacs has native compilation via gccjit.

package specification: https://github.com/daym/guix-config/

emacs config: https://github.com/daym/emacs-config/

The most productive programmer I know would launch Epsilon (a Windows version of emacs) at the beginning of his workday and never leave it (even to browse the web at lunchtime).

My problem has always been that I prefer to use styluses, and to hand-write things out at times and to use a stylus for editing/annotation and to have a graphical environment for displaying markup and so forth (which reminds me, I need to see how the new LyX 2.4 works w/ a stylus).

As a long time Vim/Kakoune/Helix user, i've never really understood the difference tbh. Clearly i've never tried, but getting comfortable enough in a new editor, especially one that deviates so much from your norm, is quite the chore.

From the outside Emacs never drew me in. It didn't do anything "bad", but the premise behind vim (motion actions, etc) just sounded logical, like building blocks , and as a result drew me in for being easier to understand the basics of.

I could never grasp what Emacs even "was", as a pre-vim beginner. To this day i still don't know, but my general assumption is it's more built around commands rather than little primitives like Vim does. Which, seems fine - just never was enough to hook me.

These days i'm mulling on my own editor and i should probably better understand Emacs. I've watched some guides on Org Mode, which is a big area of focus for me, but even that just seems like Markdown with an LSP (link jumping/etc), so i still must be missing something heh.

Well, for one, org-mode predates Markdown (not by much, but anyway), and it is not just the syntax but also a lot of usage functionality. However, while a lot of people use Emacs especially because of org-mode, I almost never use it, although Emacs has been my daily driver for over 25 years.

For me, the concept of modal editing has never been appealing, so even though I know some basic vi, I never got into it. Perhaps I was influenced to some degree from taking some HMI classes in college (see Larry Tesler), I don't know.

Emacs is really just an editor, but it was built from the get-go to be super-hackable and has a very solid modular architecture, based on well thought-out concepts. That allows it to offer specialized functionality for different file types in the form of add-ons ("modes"), and it allows every end-user to fine-tune the editor to their own liking.

If you want to get a grasp of its capabilities, check out the "Emacs rocks!" series [0] - it's a bunch of short videos demonstrating some interesting things you can do with Emacs.

[0] https://emacsrocks.com/

Emacs is a text processing environment. Everything is a command: even hitting the down arrow is calling a specific command in Emacs Lisp. This means you can modify almost any behaviour or Emacs. Want to add some new action to the down arrow? You can easily do that with Emacs.

(I'm not trying to convert you, I'm just trying to get across what Emacs is)

Emacs exposes lots of rich functionality to the user.

A lot of people have been told that they don't need to learn "difficult" or "esoteric" tools. The same thinking is behind the use of npm modules for basic functions that programmers should be able to make themselves.
because of it requirement in understanding lisp which is a niche programming language that doesn't go anywhere in real world environment just to configure a few things.
That would be a prime example of what I called "unconvincing argument" above.

Almost every part of your comment is wrong, too, so that certainly cannot be the reason.

Why it is wrong? I don't want to learn (((complex))) and (((((((useless (((language)))))))) just to adjust some config. Sorry to trigger you. But that's a fact and I am not wrong about it
Obviously you are wrong, since it has been already demonstrated that it's not useless, as already the GNU Emacs example shows. It comes with a lot useful and well written software -> in Emacs Lisp -> roughly 1.5 million lines of code.
and not even a "full" Lisp, last I checked it was a special emacs version of Lisp, with a lot of ways to end up with unstructured code (freedom) hence leading to "emacs bankruptcy". I think the concepts are nice though, just needs to be refined - difficult given the legacy and following emacs has..
I don't think that Emacs Lisp needs to be a "full Lisp", whatever that would be, but it would need, for example, some improvements in the structuring of large programs, since there is now a lot, and still growing, amount of code written in it. Namespaces/modules and threading would be examples for improvements.

Emacs Lisp's language design was originally designed on Maclisp. Maclisp is long dead, but other descendants of Maclisp have been standardized (like Common Lisp and ISLisp). Emacs Lisp has been improved over the years (just two examples: lexical binding and native compilation), but there would be more to do at the base language. It's the task of the users and maintainers to do so and they have their own preferences.

Some facts lisp , emac and functional fanboys cannot grasp