A CEO's Guide to Emacs (2015)
fugue.co
fugue.co
A lot of tools that are commonly depended on today will change on their own schedule. Nice ones will give you warning ahead of time that a change is coming, but you can't opt out of the change. APIs get deprecated. UIs get reorganized. There's not much you can do. With emacs there's an expectation that what worked for you 20 years ago will still work today. And in rare instances where that's not true, you can just not upgrade to a newer version of emacs.
Working in emacs definitely gives a feeling of control. If anything is ever going to replace emacs (or neovim, which I don't use but I understand is similar), it will have to give the same feelings of control, in addition to the same sense of focus that comes from an uncluttered UI.
And yes, it's exactly the same feeling when using Neovim, which has it's own web browser plugins.
(He wrote the post in 2015. Wonder if he's still using Emacs now.)
Emacs isn't an editor, as the post implies, it's an environment. "You can do anything from Emacs" made sense back when everything was open and text based. Nowadays everyone is using Slack, or using an IMAP web client for mail that requires bespoke authentication, or organizer apps that automatically sync across all your devices via the cloud. All of the verticals have been slurped up by corporations who did it better in GUI, have better syncing, and have locked down the protocols needed to bridge, and now the brave Emacs user of 2024 is forced to spend lots of time not in Emacs, thus defeating the point of using Emacs.
As an editor alone I don't think Emacs is worth it. There's the old adage "They added everything to Emacs but a good editor" and I think that makes sense. If you're not going to live in Emacs for the above reasons then Vim/Neovim is a better editor with a larger community, and VSCode/Jetbrains are better IDEs that are already adopting AI, which will essentially kill off Emacs.
Emacs still has a lot of important lessons, but I feel bad for new programmers today who will never get the full experience of a text based digital life. Everything has been dumbed down for our own good, and Emacs is now nothing more than a glorified Org editor that forces you to find your own cloud syncing.
Magit is still the best git client
Org mode is the killer feature of eMacs for sure, but there’s a little more to it.
It’s just arcane to work with or work on.
Org has been transformative for the way I think. I spend much more of my time reasoning instead of recalling now.
Honestly my favorite feature is the ui mode what shows the map all of the notes. Good fun watching that grow.
Got a syncthing setup going and it’s been great
You can, in fact, glue everything together in emacs to get a rather all-encompassing environment; IDE-like code editing, navigation, etc. even copilot and such (but yes, sans the slack and browser, etc. as you say). But I've found it will always be brittle. And, yes, back in the day I had it all inside emacs.. IRC, LambdaMOO, email, code editing. All in one place running on my 8MB 486. There's nothing like that now, but, yes, the GUI environment does it all.
It's the same reason why tiling window managers never click for me -- all the applications I use all have their own "tiling" that ends up fighting with it. CLion, Firefox, Emacs, Discord, Slack, Teams... they've all got their own internal nav, with the expectation of a typical GUI environment.
All that said... Saying "just use Vim" is kind of missing the point. I (and others) hate modal editors, and if I liked them I would have used vi back in the day in the first place as it was always one very machine I shelled into. The modal editing thing as some sort of mark of superiority or pride... is a bit of a recent obsession of a subset of nerd culture that I don't get, nor do I care to. And I strongly disagree that "but a good editor" line; the editor in emacs is great. But no, it's not vi, and no, it's not windows/mac keybindings. You have to learn its keybindings and yanking and all that.
But it's missing the powerful buffer abstraction that makes emacs so special. An emacs buffer isn't just a text editor, it's an interactive working environment, a coding scratchpad, etc. closer to how old Smalltalk or Lisp environments worked. The same buffer concept can be simultaneously a terminal, a code editor, and a REPL.
On the technical side, VS Code can do the same, and does it to some degree. I mean, it's a Web-browser in disguise, it can show anything you want. But overall there is indeed not much awareness for this and not many features and plugins supporting this. It simply has more order and control on this level.
But I guess it's also just one plugin away on changing this.
I do agree that it's overblown. But I found the bindings more "sleek" for me personally. Vanilla Emacs keybinds seemed very odd to me, and was the biggest barrier to entry when I first looked at Emacs in high school. I appreciate projects like Doom that bring it all together in a neat and (more) intuitive package.
I think it goes both ways. There are a lot more closed-down things these days, but the things that are open feel more established and professional than they ever did before.
There are some pretty great examples in the README.
luckily emacs gives people options
I've been Unixing for 30 years. If I was going to join that cult, I would have done it a long time ago.
Modal is not superior, it's just something else.
Vim keybindings really are more comfortable if you struggle with RSI. I’ve had such issues despite having used Caps Lock as Ctrl for years, and despite pressing it with my ring finger instead of pinkie. In my case, I have big hands and often have to work from small laptop keyboards for my job, which likely makes it worse.
The 3 times I’ve tried to go all-in on Emacs keybindings, I’ve after 1-2 months developed pain in my left forearm that then took months to heal. I developed some similar pains when I tried to use Sublime Text keybindings as well, but it was worse with Emacs. I blame this on excessive chording.
Except these excursions into other keybinding sets, I’ve used mainly Vim keybindings for nearly two decades now. I never had arm pains using Vim or Evil.
All this is to say: “There is no reason for it anymore” is too dismissive. The original reason Bill Joy wrote Vi the way he did was those constraints, but it has benefits today for other reasons.
They've tried, but I have been happily using it for the past 15 years.
They're trying to kill computing in general. I'm just thankful there seems to be enough people like me who won't give it up so easily.
I have been using Emacs since 2010. What started as this 'what do I do' white screen has evolved into a powerful tool.
During this time, I have seen various other editors or IDEs all considered to be "better" but are eventually tossed aside in favour of something else.
Visual Studio (the IDE) has gone through some changes. Some for the better. However, there is also worse. It is slow and bloated.
Now we have Visual Studio Code which a lot of people seem to use, even those that judged me for using emacs a few years back. But... IDEs are better, right?
We also have Sublime Text 2 which was all the rage around 2013. Even they were laughing at me for using emacs. Now, I hardly see anyone using it.
Once in a while (in the last 15 years) I see the odd vi or vim user. They continue to exist like me with emacs. While I cannot confirm, I would not be surprised if most of these have moved to neovim or gone elsewhere.
Point is - emacs will be around for many years to come. It may never be the "best" in term of numbers but I would not be surprised if, in the next 10 years, Visual Studio Code or Neovim have moved on to some other new editor or IDE (or another vi variant, respectivelt) yet emacs is still there.
I have been using Slack properly in the last few months and I am not really that impressed with it. Sure, I am not using Emacs and I would not be surprised if there is emacs support for it. I would not be surprised is Slack is replaced by something else in 10 years. No different to other "management" tools that come and go.
So heres to Emacs. For me, it is worth it - and while things always change... emacs is likely to be about for some time.
Maybe they upgraded to Sublime Text 4?
Didn't know it passed version 3, being honest. Says a lot. Point still stands.
Absolutely. I am not suggesting ST is dead. It's just 10-12 years ago ST2 was big hype online. Hyped to the point that likes of Vi (or even emacs) users were moving over to it!
Today, I hardly hear about it online. It is VS Code, even in the office. I am sure if I was in the same room 10 years ago, it would be the same.. just ST2. :-)
I wonder what the "cool" thing is in the next 10 years. Likely be saying the same thing about VS Code over the next "cool kid"
Maybe other dev culture (php devs, for example) that I have not been part of are mostly using ST2/3/4.
I use it to keep a TODO list, analyse and manipulate log files, record temporary notes, and edit big JSON packets. Tasks like "extract all lines which include this phrase, and then delete the first 10 characters" are straightforward. Also it's minimal, clean and feels spacious out of the box.
VS Code probably has similar features, but has a much bigger memory footprint, takes longer to start up, and looks more cluttered. If you're already a dotnet shop with VS Pro/Enterprise subscriptions then it makes more sense to use ST.
I think the people who switch from editor to editor that requires 0 config actually saved time and money by just doing their job rather than configuring their editor, and this is coming from a Vim user. Emacs is a black whole where "free" time gets sucked in never to be seen again. The big difference is as a Vim user I only had to configure my editor, you had to configure your entire operating system including Org mode.
I also am not sure about the whole Vim thing. On reddit, Vim has 3x the number of community users as Emacs and Neovim. I think Vim is still by far the most popular text based editor, but nowadays I think VSCode is unfortunately here to stay because Microsoft knows the value of having a captive developer audience.
And the problem with "sane defaults" is that to those of us that have been on Emacs for a long time, the defaults are sane. If you were to switch them on us, that would be frustrating. You /could/ make it so that startup on a vanilla setup has a set of checkboxes for common input schemes that people select between. I'm not sure why that hasn't been done, or what other issues that would have.
As for saving time/money by "doing their job" rather than configuring an editor. This is always a tough one. I don't think people should have to spend time getting to know their editors. But, I also don't worry that people don't spend time learning to care for their cars or their plumbing. That is, it makes sense that many people want to outsource that effort to others. It also makes sense that many people like getting into that sort of stuff. And I don't know why it has to be a battle between them?
I only use what I need. Use-Package, Org, Org-Roam, Magit, Yasnippets, and Modes for my chosen programming languages.. are a must.
all other things, like Themes, come second. Anything else are just nice additions.
Point is, I do not spend much time playing about with my config.
> I think the people who switch from editor to editor that requires 0 config actually saved time and money
Moving from IDE/Editor to another IDE/Editor will still have some form of learning curve. I stick with Emacs, based on my comments above.
> I also am not sure about the whole Vim thing.
Sure - my comment is not an Emacs vs Vi thing. I know vi/vim is still popular and, yes, I still use it from time to time when SSH'ing onto a server for a quick config change. I am expecting it to be more popular than emacs. Point is, despite neovim coming around.. I am sure vi (or vim) will still be lurking around in 10 years.. like emacs.
No, it's built in. Want non-default fuzzy finding? That's a package.
>Want git integration? That's a package
No, that's built in. Want non-default git integration that's fancier? That's a package
>Want LSP? Also a package
No, that's built in.
>Want to have sane defaults? Go look at 20 different init.els online and cargo cult a bunch of elisp.
No, read the tutorial or install a starter kit if you must, but really the defaults are fine -- just old. You can do almost everything you want in Emacs with just Alt-x (M-x) and running commands. It's what those new editors call a "command palette" except Emacs has had one for decades.
> The big difference is as a Vim user I only had to configure my editor, you had to configure your entire operating system including Org mode.
lol what? This must be a troll post. Org Mode is not required in any way to use Emacs, and it actually has pretty decent defaults because it's actively developed.
> but really the defaults are fine -- just old.
I assume this is just Stockholm syndrome. Every Emacs config starts by turning on the same minor modes hooked to prog major modes for simple stuff like bracket matching and line numbers. Every config sets the same early-init.el params to stop emacs from being slow. If the defaults were sane, everyone wouldn't be disabling and enabling the same stuff in their config. The defaults are not sane precisely because people complain that changing any of the defaults for a 30 year old editor in 2024 is tantamount to open source treason.
I see where you're coming from, but I think this is a bit exaggerated as well.
For some concrete examples:
- Git: Emacs does have a built-in `vc-mode`, which can be used without any prior configuration by pressing `C-x v`. Or you can go to `Tools > Version Control` in the menu bar (if you haven't disabled it). Many people prefer to install Magit, but the built-in package is actually quite decent (the UX is a bit similar).
- You brought up LSP. Emacs now has a built-in `eglot` mode which connects to LSP servers, and is pre-configured to work with many of the open-source ones. You can turn it on by pressing `M-x eglot`, or go to `Tools > Language Server Support (Eglot)` in the menu bar. Many people prefer to install LSP-mode, but I think many people have also migrated to Eglot after it landed officially in Emacs.
> Every Emacs config starts by turning on the same minor modes hooked to prog major modes for simple stuff like bracket matching and line numbers. Every config sets the same early-init.el params to stop emacs from being slow.
I agree with you that the defaults should be modernized. For example, I think most people would appreciate if the defaults were updated to e.g. use one of the `modus` themes, automatically switch to a dark theme if the OS has it enabled, and enable a fuzzy-finder like fido-vertical-mode without configuration. All of these capabilities are already bundled with Emacs, just not turned on by default. I'd also advocate for disabling the blinking cursor and the bell - who wants that?
Just as a counter-example though, I don't have any of the specific settings you mentioned enabled:
- I dislike line numbers (they look weird if you work with soft-wrapped prose and they take up space)
- I don't like bracket matching (they don't work well with modal editing).
- I don't use the early-init garbage collector optimizations (Emacs anyway starts in a second as I use few packages, and leave it open all day so it doesn't matter).
Adding packages in emacs are not that hard.
The only area (in my opinion) where you have a point are newcommers to emacs. The learning curve is as steep as you want it to be. You do need to invest time to understand it and get really good at it. The key combinations, packages, etc. This is likely where many will just go to Visual Studio Code or something else.
Emacs... when you take the time to invest, the rewards are HUGE and goes beyond (the likes of) Visual Studio Code.
I consider myself an experienced emacs user. Are their better, more talented, absolute beast-like emacs users out there? Yes. More gifted than me? Absolutely. I know enough elisp to get things done quickly. If I needed to put together a new emacs install from scratch, I could get all the main bits I need in 20 mins or less.
Better news is my emacs config. Makes use of use-package and factors in Windows and Linux. Nice and clean elisp code!! I can take it wherever and use it for new installs.
My comments is not forcing people to use emacs. Can I be bias at times? Absolutely! Do I like a little light-hearted jokes about editors? Absolutely! I use to have a little poke at vim devs in the past. They did it back. We actually learned from each others methods of 'doing something' on our editors. I miss that. I am not religious to emacs but, as software goes, it is close to me. However, I am also open to something replacing it. None of the IDEs or editors available are nowhere near being a replacement... for me.
Does not mean something in the future cannot break that mold.
VS Code is not an IDE, it's more like the evolved GUI-Version of Emacs. And it's now 9 years old, so I would think it has established itself well for this decade.
> We also have Sublime Text 2
It's now at version 4, still in development. But being a commercial app, which is also not that cheap, you will naturally see not too many people using it. But considering they are still developing it, they seem to still make money from it, so enough people are using it I guess.
> Once in a while (in the last 15 years) I see the odd vi or vim user. They continue to exist like me with emacs.
That's a very strange observation. There are significant more (neo)vim-users than emacs-users around. They are probably the second biggest crowd in text-editor-space, only beaten by VS Code at the moment. It's far more likely for emacs to die, than for vim.
> Point is - emacs will be around for many years to come.
That's true for all of them. As long as someone maintains them, people will use them. Software will only die when they don't start anymore or the users left them. And at the moment Emacs seems more at the position where users will slowly die of old age, than Emacs not starting anymore. So another 30, 40 years, and Emacs might have a real problem.
I know.
> ...it's more like the evolved GUI-Version of Emacs. And it's now 9 years old, so I would think it has established itself well for this decade.
Point I am making is those using Visual Studio (before Visual Studio Code) would criticise me for using Emacs.. a text editor. They mocked me because "IDEs are better"
Roll on to more recent times.. many of said people are now using Visual Studio Code. The same people that told me "IDEs are better"
> It's now at version 4, still in development. But being a commercial app, which is also not that cheap, you will naturally see not too many people using it. But considering they are still developing it, they seem to still make money from it, so enough people are using it I guess.
I will admit I did not know there was a ST v4. I knew about version 3 (I will not get into that). I do not know anyone using it. Not suggesting noone is.. just my personal observation. I would not be surprised if many ST2 users moved to VSCode.
> That's a very strange observation. There are significant more (neo)vim-users than emacs-users around
I was talking about vi/vim.. not neovim.
I made my point with regards to VSCode and NeoVim. They are the current cool kids on the block. Not suggesting they wont be popular in 10 years time. They could be.. but large of their userbase could move onto another cool kid by then. Emacs, on the other hand (like vi/vim) will continue like they normally do.
Maybe you failed to explain it, probably, or configure the IDE-features of Emacs? I mean, that's the point of VS Code and Emacs and others like them. They can have IDE-features, without being an IDE. And those features can have value it used well, elevating these apps above your normal plain text editor.
> I was talking about vi/vim.. not neovim.
There is no significant difference between them, and no reason to distinguish between them when talking about users and their preferences. One can move mostly freely between them with little to no hindrance.
They are still 99% the same. They still have the same mental model, shortcuts, commands...
> They have completely separate scripting languages now, config languages for the main config file, and Neovim has LSP support out of the box
I'm not saying there can't be work involved when moving from one to the other. But it depends on the user, their setup and is more akin to changing from one vim-version to another version, not like switching between two completely different editors.
From my experience, a (neo)vim-user will always be able to continue with (neo)vim or any other future flavor of them instantly on a high level out-of-the-box. Which is very different from switching to any other editor. I mean I have seen vim-users being challenged by nano, simply because it's so different from they established habits..
Lots of assumptions to try and cling on to some kind of point, I guess.
> There is no significant difference between them, and no reason to distinguish between them when talking about users and their preferences. One can move mostly freely between them with little to no hindrance.
Wrong.
"We were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp."
Interesting way to get an acknowledgement that IDEs aren't as advanced as Emacs, I suppose, and that VSCode (as in Man Vs Code, one of the Basic Plots) is only partway to being Emacs, being a GUI version (simplification) of the core concept, as if Emacs didn't already have a GUI.
(Having a GUI being different from depending on a GUI, but baby steps... )
> And it's now 9 years old, so I would think it has established itself well for this decade.
But no guarantees about the next decade.
If you mean "evolved GUI-Version" and not also "evolved emacs" I might be able to agree. The friction in customizing vscode is too high and in some cases impossible given you have no hooks or way to order plugin load order (last I checked).
I'm pretty sure, Emacs is not dead yet.
And if GUI & protocols are killing it, maybe adapting would be the way to survive?
> Emacs isn't an editor, as the post implies, it's an environment.
Bash is also an environment, but nobody calls it an editor. Emacs has an editor as the primary interface, and handling & editing text as its primary purpose. And today, any mature editor is its own environment anyway.
> All of the verticals have been slurped up by corporations who did it better in GUI,
Just saying, but GUI has little to do with this. Corps have simply more money, more manpower, more focus on serving customers (and making money). And modern Tools like GUI are a well working tool which enables them to deliver fast and userfriendly.
Well bash has Emacs mode, so…
For me, corporate environments killed tool choice... Locked down corporate Windows with the full O365 bubble (locked down too - so no integration with anything outside) is a hard current to swim against and I gave up resisting.
No, you can't live your entire life there, but that was never a great idea. Instead, it's great for software development activities. Org mode and magit are very hard to match outside of EMACS.
The primary things you do in an IDE are debugging, browsing code, writing code, and then writing documentation. With LSP, it's now fantastic at all of those. I can write documentation easily with org mode, and GUD is a really good debugger. And I can extend GDB with Python, to simplify the common stuff I often have to do with my own data structures and types.
With emacs, a web browser, and a terminal, I can do effectively anything I need to do on a computer and do it well.
> GUIs and proprietary protocols have killed Emacs
I used it this morning. Dired, specifically. To look through files for a meeting. Used it yesterday to edit. Meh.
If you can just get your email in Emacs, you can get a lot of integration you need. Luckily, email is still a must-have for many services.
For things like slack, teams, etc... it's much much harder.
Glancing at my "emacs for everything" roam node, I was last looking at utilizing matterbridge[0] to get access to teams, slack, etc by bridging to IRC. However, more ideal would be bridging to matrix especially if attachments/etc can be bridged over.
Taking actions based upon notifications though all the way from beginning to completion, then using elisp to customize the process, is definitely where emacs has the most impact.
Coworker pasted some code? You are reading it in an emacs buffer and have a function to open the code block at point in a python buffer with a repl split to the right to test it with no effort.
I must admit that if it wasn’t for Org, I as a long-time Vim user wouldn’t be using Emacs :)
The comparison to a bicycle is a good one. Emacs is the only software I have ever truly loved. People throw that word around a lot these days, but I mean it. I love it in the same way I love my bicycle. My bicycle is a machine that I've carefully built and maintained, it's been with me through the years, to various places, in all weathers, good and bad, and, ultimately, it carries me to places. Emacs is the only software that comes close to feeling the same way.
I wonder if the analogy might be lost on people who don't have a bicycle or any machine like it, though.
But I soon spent more time and effort optimizing and working out the kinks in my personal org-roam than doing actual work.
Now I use good old project management software (Merlin for Mac), Obsidian / Apple for notes, and a written to-do list.
I'm assuming you still have kinks in your current workflow, with the difference that there is not much you can do about it? Such that the main difference is that you aren't working on the meta side of the workflow. But you could have done that before, too, right?
That is, it seems a lot of people have a story where their main complaint of Emacs comes down to the temptation of being able to do whatever is enough of a lure to keep them distracted.
I think I get this, in the sense that it is comforting to have some decisions flat out made for you.
Then there’s the meta-work. (planning the work: what to do; how to do it). This is me writing a to-do list on paper or someone else typing in org-mode. It also includes thinking about what to do.
Then there’s the meta-meta-work. Setting up clever ways to plan work. This is where you configure emacs and other systems or try to find the best system. There’s a lot of leverage here, but it should never be a continuous effort, unless you like getting paid in meta-meta-dollars.
Consider if you are doing written notes, have you learned a comprehensive shorthand system? Why not? Do you stick with only lined paper? Dotted paper or grid for some things? Is there an optimal sized sheet of paper for you? (Point being you can meta-meta work in most any setting. Nothing about Emacs requires that you do so.)
But who does that?
Plus, it took significant work to get the behaviour close to what I expect, whereas an annual Moleskine notebook already has 100% of what I need for $20 and zero minutes of configuration.
Merlin costs CAD 240 / year but it works out of the box too.
VM (and ancillary tools, like Personality Crisis and mairix)
* does a great of job displaying HTML messages. For the very few that it doesn't, one keystroke sends the message to my web browser running locally.
* sends URLs I select (all from the keyboard) to the web browser
* opens images and attachments
* auto-adjusts the From: line of outgoing messages depending on the recipient
* archives messages to various folders using various criteria
* searches my archived mail at lightning speed
Of course, I can write Emacs Lisp code of my own to extend any or all of the above.
VM isn't perfect. I'm sure that I could do all of the above with Gnus, and quite possibly am missing out on other features that VM lacks. Overall, though, I really feel like I have a superpower for email handling with it.
I recognize that emacs can run on all operating systems, but my "home" extends out past my terminal, and my text editor. It includes random apps that just don't have an equivalent i.e. my browser, my music service, and my work issued chat app.
I like to be able to manage ALL of that all the same way, and I can with home-manager, nix and linux.
Someone tell me what I'm truly missing with emacs.
Maybe a time will come in your life when you values align with emacs, maybe it wont. Keep an open mind when/if the event happens.