2024-01-01 Emacs News
sachachua.com
sachachua.com
Not saying Vim is any better, at least there's a package manager and they decided to include eglot in the base. But man, sometimes I wonder if we're all suffering from Stockholm syndrome and we need to break out and just remove the bad defaults and add in the damn stuff we all know people expect in an editor in 2023 and write it into the tutorial.
Since I'm looking to "learn" Emacs I'd love to start with Vanilla and add in things as required as you would with any other editor. Starting with something like Doom makes it near impossible to untangle what is coming from where and trim down to exactly what you want, which is sort of the point of using Emacs in the first place.
thankfully though, most of the stuff that you want to do are just a google search away these days, and presence of declarative package-managers f.e. use-package, straight etc. does lighten the burden somewhat.
you might want to look at: https://emacs.amodernist.com/ which provides a rudimentary configuration generator.
Won't lie... there was a fair amount of cursing involved and, despite the love, I wouldn't recommend many to venture down this road[^2].
Now I have gone the literate config way in my dotfiles https://github.com/vidbina/dotfiles/tree/main/emacs and I jump between Cursor (vscode-based), Neovim and Emacs for different tasks on a daily. I also found https://github.com/dustinlyons/nixos-config/blob/main/module... just a few days ago which could be a useful resource when you're building yours up.
> Unsolicited tip: Take it as a hobby! Picked up a bunch of useful learnings from my Emacs experiences (a. literate configs, b. comfort around working with LISPs, c. bigger appreciation for parts of the GNU ecosystem, d. more in-depth understanding of how my devtools work which helps me debug issues in Neovim or vscode when I see them) but still think that I'm cursed by wanting to go down this road so badly. Wish I could just vscode my way through life and build dope stuff, unencumbered!
P.S.: I found Emacs far less painful ever since I started rubber-ducking with ChatGPT about my elisp and configuration problems a few years ago, so now is definitely a nicer time to take the plunge.
1: Used Emacs heavily in college over 12 years ago when I would boot the Windows + Novell groupware school computers into my own Ubuntu config with my Emacs and embedded dev toolchain from my pendrive.
2: The single-threaded-ness and related ocassional unresponsiveness/hangups still grind my gears.
"This is a minimal Emacs starter kit. Like, really minimal. Here's the short of the philosophy:
Focus on using default, built-in Emacs behavior
Yes, we all love our fancy third-party packages. This starter kit focuses on what is built-in to Emacs. Why? Because there are too many good packages and picking and choosing the best is a joy we leave to the user.
Explain every customization and encourage modification
The goal of this starter kit is to encourage end-user adaptation and growth. All of the .el files should be legible and, more importantly, justify in plain English the rationale for adding the configuration they do.
No magic
We keep things crushingly simple here. That means no fancy loadable modules or whatnot. Everything is as straight-forward as can be."
https://sr.ht/~ashton314/emacs-bedrock/You really don't need to build up a config from scratch to get the full power of emacs. Using doom just gets you further along the curve to having the config that you want. You will definitely need to do some further tinkering with elisp to get doom configured "just so" or to implement functionality, and I find that's plenty enough for learning emacs.
It's terrible, but the people in a position to change it aren't new users and they have decade-old configs, so it stays terrible.
Try suggesting making CUA-mode the default (to ease onboarding new users) on the mailing lists or /r/emacs, for example. It's amazing how vitriolic people can be.
I've now used Emacs for 30 year. The only people who have large configs for basic text editing are people who don't understand the first thing about Emacs.
Emacs is not a text editor. It is an elisp environment focused on text manipulation.
For some reason these people are extremely loud and have a lot of blogs.
The only parts of my init.el which aren't stock are those used to setup speciality packages like the tui for connecting to the prod database.
The rest of my code is in packages which do something useful. E.g. local llm integration.
I don't complain that it's hard to give myself a manicure with a chainsaw either.
> then do three days of Googling to add basic features like fuzzy finding, LSP, VCS support you would expect to be built in in 2023.
All these things are built in Emacs, except fuzzy finding. For that, you use fzf, just like in Vim.
> add in the damn stuff we all know people expect in an editor in 2023
What did people expect in an editor in 2023? I don't use LSP, popups, fancy themes/modelines, or fancy fonts, and I know many devs who prefer the same, especially experienced ones. We expect the same behavior from the editor in 2023, just like we had it in 2003 and want it in 2033. Also, I know many devs who spend all day making their terminals, editor(s), and window managers fancy to show how cool their setup is. But to each their own, and these things are highly subjective.
Unironically get one of those horrid IDE's if you want that crap.
(That said, Emacs has git support out of the box. I don't really use it though.)
External packages expand on the vanilla experience but most of the things are just there. For beginners and pros alike which-key is a perfect place to speed up learning.
New user experience is as scary as it always has been, yes, but there so many great tutorials, docs, videos, books out there. Emacs has a tutorial, a manual and a elisp reference built-in and integrated.
Most of the complaints we see here are just flavours of "why is it not like my favourite editor?!". It feels old and boring by now.
Even with a lot of stuff built in, it's not very accessible and it's a chore to setup some things that could be just a checkbox or something.
Emacs has a different model of configuration. It is natural for people familiar with lisp machines or smalltalk programmers but is alien for the rest of first time users.
But the original comment was not about this expectation mismatch. It listed things that have been around for quite a while and do not even need any extra configuration outside of enabling.
I just want to do my work and not spend time debugging why the latest package update broke my helm/ivy lookup, or why lsp-mode suddenly stopped working with x language server. I swapped to VSCode / Obsidian (to replace org mode) and haven't looked back. I can't even remember the last time I looked at my VSCode config, maybe 6 months ago.
The only thing I really miss are the editing capabilities, using evil-mode and various evil plugins. But coding is only about 10% editing speed imo, so not worth the pain for me.
The bbatsov/prelude project was started in 2011 to help address that problem. I started using it not long after that, as a new Emacs user, and it's been a joy to use ever since.
And by "started using" I mean I forked it on GitHub, stared personalizing, and then merging/rebasing upstream at my own leisure.
https://github.com/bbatsov/prelude
https://prelude.emacsredux.com/en/latest/
From 2011 to present, not everyone in the Emacs community feels bbatsov's Prelude makes the best/correct decisions, but given how long Emacs has been around and how large its community has been over time, what can you really expect?
It's certainly a lighter-weight starter kit compared to Doom Emacs and Spacemacs. (I'm not knocking those projects!). I've also looked at some of the newer starter kits mentioned in other comments here and in previous HN threads; they seem okay to me, just reinventing a lot of the same "wheels" you'll find in Prelude, but in a less refined form... such are the freedoms, joys, and challenges of Free Software.
I agree that defaults matter and I would love to see them change. That said, you might like looking at my Emacs Bedrock [1] starter kit. It’s not like other kits like Doom, which act like a distro unto themselves and need fiddling, updates, etc. Bedrock focuses on tweaking default behavior, rather than pouring on package after package. It’s basically all the things that I would make default if I could. There are a few “extras” that provide clear examples of how to configure e.g. language server or evil-mode support.
Let me know if it helps. :)
So grateful for everything she has done for the Emacs community.