Magit is truly a magnificent application and it's telling how it's ideas are ported to other editors.
Reference to the previously posted "You Can Choose Tools That Make You Happy"
> Emacs is a Gnostic cult. And you know what? That’s fine. In fact, it’s great. It makes you happy, what else is needed? You are allowed to use weird, obscure, inconvenient, obsolescent, undead things if it makes you happy.
Juxtaposing Emacs with the adjectives obsolescent, and undead is sad to read. Emacs is constantly reinventing and readapting itself, and just like Emacs takes and incorporates the best ideas from other tools, ideas from Emacs find their way to other environments.
Yes! I found Emacs on a 1997 CD ROM inside a book about VHDL "functional bus models" in my university library in 2014. Over the years it has become an extension of my body. There's always something new coming along in terms of performance and functionality. My co-workers have never been inspired to explore it. Most people think it is a relic.
I find it interesting because they probably unknowingly could already control emacs quite well. The gnu readline key bindings are pretty much the same as the emacs ones and are universally used in text editing environments and REPLs. For example in html text inputs or in all text editing contexts on macOS.
They were the first thing I missed when first trying out insert mode in vim. I also think the concept of major and minor modes is overall simpler and easier to understand than how this works in e.g. neovim.
However I still prefer neovim because I believe lua to be overall nicer to use. Nothing against lisp and I understand it is incredibly simple and powerful. But I feel most people just want to have an easy way to configure their editor and imo the developer ergonomics for lua are better. Especially also with formatting, typing and other tooling. Nested lua tables look almost exactly like json, while the same structure in elisp would probably confuse someone switching over from vs code.
Admittedly I struggle with emacs out of the box. My emacs configuration has evolved over the years. It's a personal thing. I couldn't tell you about my key bindings. My hands just know them instinctively. That's what I love about it. You can craft it to your personal needs. I map ctrl key to spacebar (only when spacebar is held down), and meta to return key (when held down). No more RSI for me.
Have been using Spacemacs and Doom Emacs some time ago, but turned off evil mode, bc I was not used to vim style editing. Lately I understood that vim key bindings is actually an editing language and finally found joy in vim [0]. Surely going to return to Doom-Emacs with evil mode on. Maybe switching to evil god mode later.
[0] https://www.youtube.com/watch?v=wlR5gYd6um0
Has emacs reinvented itself to incorporate the best ideas of being very performant, allowing better languages for extensions, replacing health-hazardous default keybinds with something ergonomic, using commonly understood terms for its interface?
> Has emacs reinvented itself to incorporate the best ideas of being very performant, allowing better languages for extensions, replacing health-hazardous default keybinds with something ergonomic, using commonly understood terms for its interface?
Yes! It's called Evil mode. It emulates vim keybindings.
In terms of "normal" keyboard shortcuts, it could but no one who uses Emacs is asking for it. Mind that ergonomics is also very subjective. You might not find lisp very ergonomic, but Emacs users do. They find other languages unergonomic.
Other ways Emacs has borrowed ideas from other editors.
It now has first party tree sitter integration for better syntax highlighting. I believe this was borrowed from the neovim world.
It has plugins for LSP...borrowed straight from the VSCode world.
If it matters, I've never used Emacs in my life, so I'm not a part of their weird cult. But i can see that they do things the way they do for a reason. They're not a bunch of morons.
What keeps me from using vi derivatives is knowing that the idea behind it is the result of a misunderstanding. As Joy said himself, “One of the good things about EMACS, though, is its programmability and the modelessness. Those are two ideas which never occurred to me.”
The modeness of vi does add friction in some cases, but it's a minor gripe, really.
Vi is incredibly well-suited and ergonomic for text editing, and switching between the modes is efficient, since often times you want to begin typing text as a consequence of some other normal mode operation you'd want to take anyway - e.g. add line below; change until end of line; change in parens; change up to character - and those operations put you immediately into insert mode afterwards anyway.
So I wouldn't let that feature (which enables making common operations more ergonomic) stop you from using vi-style binds.
Though modelessness can be quite nice, and I do see the appeal. Being able to select a region and immediately perform any desired operation is convenient.
What's great is that Emacs is what you make it - you can mix and match the two approaches. I, for example, use vi binds for text editing in Emacs, but maintain modeless binds I can always access when it makes sense. You can have the best of both worlds :)
Emacs is not really "modeless". Key-chords are kind of modes. Transients are kind of modes. Major and minor... well, just modes.
> What keeps me from using vi derivatives
That's correct. There's no such thing as "vim-mode". Every single Vim extension is full of glaring inconsistencies and shortcomings. Not a single VSCode extension, not IdeaVim for IntelliJ, not Sublime ones — none of them are really full-fledged vim integrations. Emacs one is the notable exception. Evil mode in fact is so good, it never feels like an afterthought, it feels like it was baked into the design of the editor from the get-go. It works extremely well. Emacs in fact can vim better than (Neo)vim.
Evil mode is not that default, so it's a no (besides, vim defaults are also bad, so even then it wouldn't be incorporating the best idea)
> it could but no one who uses Emacs is asking for it.
That would be impossible for no one to ask for better defaults over the course of so many years, and examples of such asks is a short search away. Besides you forgot the much bigger group of people who could be using emacs if it incorporated such best ideas as ergonomic UI...
> Mind that ergonomics is also very subjective.
Unless it's objective. As in, if your defaults lead to RSI on heavy use, they are objectively bad
> You might not find lisp very ergonomic, but Emacs users do.
So? The idea wasn't about banning lisp, but allowing other languages.
And before going with the other ways were half left from the original way
> > Mind that ergonomics is also very subjective. > > Unless it's objective. As in, if your defaults lead to RSI on heavy use, they are objectively bad
There's nothing objective about that. All people can ever come up with when talking about RSI is a bunch of anecdata. Now, it's probably something to take into consideration, but that's by no means objective.
It's not like anyone has done a study about Emacs' key chords and their causal effect in repetitive stress injury, versus CUA bindings (which are actually available in Emacs, just not by default.)
At least my personal anecdote is that for me, the Emacs defaults are fine, and it seems to me that most problems people experience probably come from things like poor posture and crappy laptop keyboards, which would affect the ergonomics.
> > You might not find lisp very ergonomic, but Emacs users do. > > So? The idea wasn't about banning lisp, but allowing other languages.
That's just a small matter of programming. Of course, the real questions are "why?" and "is it worth it?"
Hell, with Guile Emacs being in somewhat active development again, that should help with getting more languages supported – although that's not the official goal of the effort – like JavaScript, which already has an experimental frontend in Guile mostly just bit rotting away since people aren't volunteering to help with it.
You're confusing two claims. Lack of proof that emacs default are RSI-inducing doesn't mean that % of RSI-harmed users is not an objective measure of ergonomics.
> Of course, the real questions are "why?"
Are you having trouble answering such a simple question to feel the need to ask it?
But this is again missing the point, which was that there was no "reinvention incorporating the best ideas" because many surface-level good ideas aren't incorporated (same thing with the brighter future bit rotting plans...)
Emacs is a truly Free software project, one of the last. It's meant to be molded however the user wants. Nobody gives a shit if you use Emacs. If you don't like it for some reason then please leave us alone and feel free to return to the corporate captured hellscape that is VSCode.
I can't leave you alone when you come to me with such deep VSCode trauma instead of molding Emacs!
Yep lots of modern (even IDE-like) flavors of emacs like that. Doom emacs (which includes vi key bindings and modes), spacemacs, etc.
I’ll also say for “commonly understood terms”: discoverability in emacs is amazing. You have dedicated commands just for checking what other commands do, searching docs, finding keybinds for existing commands or vice versa. It’s SO sick!!
Vscode is great too, for very different reasons
Ok, you've quickly discovered that "window" is called a "frame". How does that help you avoid the issue of emacs not using the commonly understood term for a window? And flavors is masking the bad defaults, not a proof that somehow emacs reinvented itself (it didn't, it didn't change the bad defaults, harming all the new users physically or at the very least wasting their time that they search for a flavor)
You know, you can just not use emacs if it makes you angry.
I think I probably sounded much the same in 2009 or so. My first couple of attempts went badly. When I finally gave the tool a shot on its own terms a year later, it clicked so well I haven't felt the urge for 15 years to look for something new.
This irrational anger toward a free tool that no one forces you to use (I can't imagine any team mandating Emacs), and which is neither rigid nor limited in extensibility, suggests something deeper at play. Perhaps it reflects an internal struggle or penitence over one's inability to grasp it?
Comprehending Emacs is a challenging journey that demands time, patience, and dedication. Yet why would anyone despise Emacs after spending time with it? It's like hating the mere existence of motorcycles after failing to learn how to ride one.
Pirsig is a treasure.
Yes