I’d like to echo the sentiments of Reddit user tikhonjelvis, who commented¹:
“Man, I knew CS programs were skimping on Emacs fundamentals, but I hadn't realized it was this bad.”
1. <https://old.reddit.com/r/ExperiencedDevs/comments/1gqj7qa/my...>
I’d like to echo the sentiments of Reddit user tikhonjelvis, who commented¹:
“Man, I knew CS programs were skimping on Emacs fundamentals, but I hadn't realized it was this bad.”
1. <https://old.reddit.com/r/ExperiencedDevs/comments/1gqj7qa/my...>
1. I don't really want to bother with a DSL for configuring my editor (even if the language is usable outside of that context for other things)
2. I don't have time to bother with maintaining extensive configuration to get the level of code completion/refactoring/etc that I expect from a modern IDE (nor do I want to have to stop what I'm trying to work on to debug a problem with my config)
3. I don't want to have to research various plugins and stuff to provide functionality that I get out of the box with VS Code (or other editors)
4. I don't want to have a bespoke environment that only I understand when I'm trying to collaborate with my teammates
Don't get me wrong: I think digging into emacs and/or (neo)vim is a valuable thing to do and that everybody probably *should* do it at some point (even if only as an academic exercise), but to assert that they are a viable path for everyone is ignoring the reality that some people simply aren't interested in investing that time/effort into getting their tools working.
One can argue whether or not that stance is a good one or not, but you're just debating personal preferences and priorities at that point.
On the contrary, the article said, literally: ”We are primarily a Go and Python shop, which means our only real option is VSCode”. Meaning they do not consider Emacs to be a ”real” option. This is expressing more than mere personal preference; it is, at best, profound ignorance of what Emacs is capable of.
It's unlikely that a given team/workplace is going to roll out dev tooling that is just a pile of elisp. With VS Code, you can drop a couple of JSON files into your project, commit and push them, and then everyone has a preconfigured set of tools that match the needs of that project.
Emacs is an extremely esoteric program, from shortcuts, to documentation, to package management (should you use elpa? melpa? melpa-unstable), to configuration (I love Lisp, but it's much more esoteric than JSON), to bugs (who has regular UI locking as an expected part of the experience, e.g. when using eglot, in 2024?).
I love emacs, and tinkering with it, and will probably never stop using it. That doesn't mean it's a real option for someone who doesn't want to make it a hobby.
I sort of get the other points, but I really don't get this at all. How is Emacs documentation esoteric? Emacs is without a doubt the best-documented application I've ever used. I can't think of a single thing with documentation as comprehensive, accessible, navigable, interactive, searchable, or genre-spanning as Emacs' documentation.
Emacs' documentation is so far from assuming that you already know how Emacs works that it'll literally teach you not only how to use the available configuration options for its built-ins (and any external packages you choose to install) or the language used to set them, or even how to write code in that language, but what computer programs even are.
Someone with zero programming knowledge whatsoever could sit down at a computer with no internet connection, open Emacs and its manuals, and learn everything they need to use, understand, and modify Emacs all the way to the point of contributing their own Elisp code to popular packages or Emacs itself. All that without reference to a single external document or a minute of personal instruction. Emacs documentation covers everything from how to change your colorscheme to what a loop is. How is that 'esoteric'?
But this has been a line in my shell config since I was teenager.
export EDITOR=vim VISUAL=vim # Viva vim, death to emacs i
<Esc>:w
:qYou can also do ZZ instead of :x, if you're playing keystroke golf.
Much quicker exit ;)
I can't be sure, though, because using Emacs as an expert is definitely better than using those other systems as a beginner, so I haven't gotten around to getting over the learning curve.
It is still very very good IMO
having been a somewhat longterm user of IDEA, Vim, Atom, and Eclipse
The addition of elisp JIT compilation even makes its performance more than adequate
I first started using Emacs in 2015 or so, sometimes still relying on other editors (usually IDEs) alongside it.
I was still in school then. By then, I'd used for varying lengths of time (and had been taught, to varying degrees): DrScheme, BlueJ, Visual Studio, Eclipse, NetBeans, and IntelliJ IDEA. (I'd also used vim, Kate, and Notepad++, but I used those mostly for editing configuration files, plaintext notes, and shell/batch scripts. Vim was the only non-IDE editor I'd ever used for any real programming, which amounted to my coursework for a few classes in college.)
I didn't dive in with writing my own config from scratch, but started with Spacemacs as someone with prior (and merely casual) vim experience. It was better in some ways and worse in others than those 'modern' IDEs I'd used previously. Performance was worse (although resource usage was much better) in that sometimes Emacs would hang or pause for slow operations. Startup time was slow, but client/daemon support made that invisible. The total stack I ran was noticeably buggier than alternatives like JetBrains, because a distro like Spacemacs glues a ton of external packages together. Spacemacs releases were infrequent so I ran against development branch, inviting more bugs.
But the main thing that struck me was how nothing else I'd ever used was as easy to learn as Emacs. I loved all the search-driven workflows and interfaces, how fuzzy-filtering was everywhere. I loved how running commands 'manually' always showed and reminded me what their keybindings were. I found myself learning many more keybindings than I ever did with other editors/IDEs, because they were so easy to look up, and looking for many more 'interactive functions' (commands) than I ever had before, because they were so easy to search. It had quirks, and I was grateful to have a 'starter kit' in Spacemacs (without which I likely never would have picked it up). But overall it was clearly, decisively better than anything I'd ever used in virtue of its radical discoverability alone, and I quickly built up muscle-memory for the Spacemacs bindings.
Automated refactoring and advanced code navigation were clear weaknesses, though. That's why I sometimes used JetBrains IDEs for some languages in the years immediately following.
Nowadays I'd say things look even better for Emacs as compared fo IDEs. It has pretty good performance, and more and more packages do things asynchronously where it makes sense. Virtually every programming language has one or more LSP implementations, so good code navigation functionality is easy to come by and old tools like etags can still be used as seamless fallbacks. (I don't do much work in static languages lately so idk how good the refactoring support for popular LSP implementations really gets, but basic refactoring in Python seems fine.) Emacs even gets along well with the new 'AI' hotness; its documentation culture and fine vintage mean that ChatGPT and friends are better at writing and explaining Emacs Lisp than the vast majority of programming languages, plus they 'know' lots about not only Emacs built-ins and popular packages, but even the configuration idioms and special macros of popular Emacs distributions like Spacemacs and Doom Emacs.
I no longer use any other IDEs anymore because I don't see any reason to for my current use cases, though I do still use Vim a little. Recently, I've started occasionally using VSCode to test things on behalf of my users at work, who are other developers. Far from decaying or falling behind, I think Emacs has become a steadily more attractive alternative to IDEs since I started using it. I don't begrudge anyone their VSCode or JetBrains IDE if that's what they've already chosen, but I'd still recommend Emacs (with a good starter kit) over either to programming novices today.
If you want the absolute minimum learning curve then perhaps there are better options, but I'm pretty sure you'll be stuck at a local maximum there.