frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Ask HN: Where to begin with "modern" Emacs?

53•weakfish•4h ago
Hi all,

I’m a longtime Neovim user who’s been EMacs-curious. The hold up for me has been that I’ve been unable to find a source of truth for what’s top-of-the-line as far as plugins are. With Neovim, it’s a safe bet to look at what folks like Folke are doing, but I have struggled to find a similar figure in the Emacs community who gives insight into what’s-what. I know Doom exists, but I want to fully “own” my config and not over complicate it.

Thanks!

Comments

kevstev•3h ago
I saw what was possible with emacs via systemcrafters: https://systemcrafters.net/emacs-from-scratch/

And I should note I have been using it for about 25 years, and was mostly in the dark about what it was capable of, though many of those years were in environments where I was using versions 5-10 years out of date, and completely locked down/out of things like melpa.

As far as keeping up with whats latest and greatest, I think the real answer is there isn't a good online resource. There are emacs meetups and conferences and some are virtual, and you can ask around other power users and see what they are doing. I even find emacs packages to be pretty poor at selling themselves on why you should use them.

As an example, Ivy and Counsel are kind of game changers to the UI, but I don't think you get any idea of that from their manual or main github page: https://github.com/abo-abo/swiper

senkora•3h ago
+1 to systemcrafters. It is probably the closest community to what you are looking for.
ews•2h ago
+2 , it's an amazing resource for emacs and guix
omnicognate•2h ago
Vertico and Consult are the successors to Ivy and Counsel. They're more cleanly integrated with the native capabilities. I've found them a big improvement.

Systemcrafters have a video on moving to them, but I haven't watched it.

MkLouis•15m ago
+1 from me aswell.

I personally started with SystemsCrafters and after I started to grok Emacs I went to use DoomEmacs. I found DistroTubes literate DoomEmacs Config a good starting point to see whats possible. https://gitlab.com/dwt1/dotfiles/-/blob/master/.config/doom/...

e40•3h ago
You didn't say which platform you're on. For Linux, just use the emacs that comes with the distro. For Windows, download the official build for Windows. For macOS, I used to use emacsformacosx.com's version but now I use Homebrew's emacs-plus. It has a native-compiled version and is hella fast.

I use the regular package manager for emacs (package-install).

Been a user since the first version of GNU Emacs, back when RMS was trying to reproduce Gosling's emacs (which I used for a couple of years). That was the early 80's.

rcfox•3h ago
> For Linux, just use the emacs that comes with the distro.

Are the major distros shipping packages with tree-sitter support yet?

baobun•3h ago
Yes. All of them.
sinker•3h ago
I recommend starting with vanilla Emacs and just adding things as you find the need for them. Emacs comes with a lot of things OOTB. After a decade, my only essential package addon-ons are magit and yasnippet.

I have other packages installed, but they're esoteric for my own purposes.

MangoToupe•3h ago
Doom is still a good reference for which packages people find interesting; don't dismiss it out of hand. I do think it's quite heavy handed in terms of altering core input behavior, tho.
emoprincejack•3h ago
Just use Doom. Its good.
dingnuts•3h ago
Mickey Peterson's blog/book Mastering Emacs is where I wish I had started.

https://www.masteringemacs.org/article/beginners-guide-to-em...

Sacha Chua maintains a blog roll with a huge part of the Emacs community represented, also: https://planet.emacslife.com/

Also everything Prot writes is great, here's his getting started guide: https://protesilaos.com/codelog/2024-11-28-basic-emacs-confi...

abhiyerra•3h ago
I’ve been an Emacs user for more than a decade and I would recommend just using Doom especially if you are coming from a Vim background.

I started before Doom existed but ended up in a configuration similar to Doom but more brittle. I ended up just declaring .emacs bankruptcy and started over with Doom and was pleasantly surprised that my over 2000 line configuration became less than 30 customized lines.

If you want to do it the hard way I’d start with figuring out elpa and going from there installing the specific plugins that you want. Likely, evil being a first.

defanor•3h ago
I think the usual advice is to try the vanilla Emacs, maybe use better-defaults (either directly or just for inspiration), as it is a relatively light customization. The setups people use tend to be quite different, as do their opinions on packages, so I doubt there is a single satisfactory and agreed upon "source of truth". Others' setups may be useful to check out, possibly pages of emacswiki.org, chatter on the #emacs IRC channel at libera.chat.

Edit: As for heavily customized versions (Doom, spacemacs), I have not tried those myself, but occasionally saw people having issues with those, and others not being able to help them, since it was not clear what sort of magic is going on there. So I would not recommend those to new users, at least not if you would like to learn the basics and get a better hang of it, to be able to debug it, though some seem to be happy with those.

tammer•3h ago
I will second the recommendation to start with vanilla emacs. That isn't to disparage releases like spacemacs & doom. I simply found those to be more useful once I fully understood the power that comes with a fully reprogrammable editor. There is a learning curve and there is also a mental model to adopt, and I think that adopting the mental model is easier when starting raw and building up from scratch. Once you feel comfortable maybe try spacemacs or doom to see if they offer advantages for your workflow.

I also highly recommend the resources at https://www.masteringemacs.org

SoftTalker•2h ago
Another vote for vanilla, learn the basics and then add packages for what you need.

I have spent my entire career using vanilla emacs with a few other packages. A lot of things, including org-mode, are included by default in modern emacs.

The problem with learning heavily customized distributions like Doom is that they won't be installed elsewhere and if you have to use emacs on another system you won't have what you're familiar with. Weigh that relative to how often that happens in your work.

pfortuny•2h ago
Yes, before playing football, children just mess around with a ball. The thing is to end up using the ball properly, not to play as Messi.
weakfish•2h ago
I think that's the route I'm gonna go, I want my configuration to be transparent and built so that I can understand it top-to-bottom. I've tried Doom, but it felt too magical.
mijoharas•3h ago
I've been using emacs for a decade by now.

I'd look into spacemacs (what I use).

It's similar to doom, in that it makes some decisions for you, but you can very much have a customized experience.

I for instance have a lot of "stock" sections, and other things that are very customized that I've made myself.

Look into the "layers" (sets of packages that work together). I'd particularly recommend checking out the compleseus layer, which is a composition of consult, orderless, vertico, and embark.

They're all built to be composable (selection, pattern matching, selection interface, and context menu respectively), and they each add up to a brilliant emacs experience while reusing emacs' built-in frameworks (completing read). It's an alternative to helm and ivy (I've used each before).

The reason I recommend spacemacs (I'm sure doom could be the same, I just didn't know it) is because it is an easy way to see what packages other people find useful and how to use them, and it has similar conventional across different packages (so you can run tests in the same way no matter whether you're using rust, or python or whatever other language).

brudgers•3h ago
Org-mode. But it's already part of the package...

...because Emacs is a mature ecosystem: Meaning many and probably most tools predate developer-gets-famous-on-internet thinking, have been refined over decades, were built by people to get their job done, and often that job was something where programming was incidental to the task at hand.

uutangohotel•3h ago
https://github.com/jamescherti/minimal-emacs.d is a great starting point for owning your config.

On macOS: Install from emacs-plus in Homebrew

On Linux: Install from your distro’s pkg manager.

kleinishere•2h ago
Came here to find this. MANY upvotes.

I used Doom for a couple months.

Then started considering a vanilla eMacs. I started taking notes on packages I found highly recommended and interesting.

Then I found this. And the author has done all that work and then made it into a “let me walk through a config” including a lot of the most recommended packages and sensible configs.

Gives you the lesson of building a config, knowing what’s in your config, and then being fluent in changing it.

He also has more notes on his blog about the packages + more : https://www.jamescherti.com/essential-emacs-packages/

And I now feel comfortable making changes myself.

noosphr•3h ago
There is no such thing as top of the line.

There are preferences.

Asking where to begin with 'modern' Emacs is like asking where to begin with 'music'.

Just use stock until you find something you like better. It is one of the few pieces of software left where taste is king and there are no right answers.

flexagoon•2h ago
+1 to just use Doom. Even if you disable all of Doom's extra modules/plugin configurations, it still includes a lot of emacs black magic that makes emacs much faster. It's very slow without that.
belden•2h ago
I’ve rebuilt my emacs config a few times for exactly this reason!

Some of the things I’ve found work well for me:

- it’s pretty obvious, but it took me a while to figure it out: make your `~/.emacs.d` into a git (jj, hg, whatever) repo. You don’t need a remote but as you try things out it’s nice to be able to step back in time.

- know what you want to build. For me I’m generally trying to make emacs do something that I’ve seen a colleague’s editor do: integrating language servers for source navigation; integrating a debug server for a nice visual debugging experience.

- some people manage their emacs configuration as org-mode files. This is neat because you get an experience similar to Jupiter notebooks: you can intermix commentary and elisp. I haven’t ever gotten to this point but it looks neat when I see others do it.

There are some good YouTube channels and blogs that talk about configuration, or that test different packages. I’ve found “Emacs from Scratch” and “Emacs Rocks” to be really useful.

There’s a lot to customize and select from. Without steering you one way or another, here are some changes I’ve made recently or packages that I use:

1. For language servers, I find `lsp-mode` to be easier and more full-featured than `elgot`.

2. `dap-mode` plays nicely with `lsp-mode` and makes debugging straightforward.

3. I’ve tried, and use, a few different plugins for AI coding: `greger.el` is the first one I tried, but I’ve started using `xenodium/agent-shell` more. If you want to write (or hack on) an AI agent written in elisp, there’s `steveyegge/efrit`.

4. You’re probably accustomed to some sort of “tab completion” from neovim. Within emacs you’ll need to set up a “completion framework”; there’s a bunch to choose from. Watch some videos and experiment. You’ll probably find one that feels a lot like you’re used to (whether that’s completion-as-arrow-navigable-dropdown-at-cursor, or completion-in-side-panel, or whatever).

Your muscle memory of how to move around in a document and how to tell your editor “I want to do something new now (see a list of open files, go to a new file, etc)” isn’t going to translate into emacs very well. It’s like shifting from a laptop keyboard to some weird split keyboard with thumb paddles: muscle memory won’t be satisfied, and you might just “not like” emacs due to that. There’s `evil.el` (“Emacs VI Layer”) which teaches emacs to recognize vim-style commands. I think vims have fantastic macro recording and replaying functionality - emacs has it as well, but making a recursive macro is harder for me, for some reason - and evil makes emacs’s macros feel on par with the vims.

Another tripping hazard coming from a vim-like is that “undo” operates differently in emacs. I think the vims have a fairly linear undo: like a browser history back button. emacs stores an undo tree, which can lead to surprising behavior at first.

If you’ve written or tweaked plugins for your editor and enjoy tinkering with your tools, then a vanilla greenfield approach to emacs will probably be very satisfying for you.

If you want something that “just works” which you can experiment with and gradually learn more about over time, then you might get more mileage out of spacemacs.

I think vim-style users tend to launch vim many many times through the day. cd here, edit a file; save, quit, edit the next file. emacs can act like an editor, but if you think of it as a highly customizable IDE, then you’ll get more use out of it. My uptime on emacs is generally measured in months, whereas for me vim is in seconds to minutes. I mention this because the startup time for emacs can be quite slow compared to vim; just don’t pay that cost over and over.

hommelix•2h ago
I'm a vim user, using orgmode. I've noticed the blog of Sascha Chua. She posts Emacs News and in these posts there are some orgmode gems. But she is posting more on Emacs. Maybe interesting to look these posts up: https://sachachua.com/topic/
porcoda•2h ago
Vanilla emacs to start, and then the approach I take to finding interesting packages and config is to read the Emacs Weekly News from Sacha Chua (which often links to articles and videos describing packages and configs). There sometimes are articles or videos linked from there that talk about configuring from a vanilla setup that are likely what you are looking for.
ashton314•2h ago
I maintain a pretty popular Emacs starter-kit called Bedrock. [1] I suggest starting with it, or at least taking a look at it to get some ideas!

Bedrock differs philosophically from Doom et al. in that Bedrock is meant to be as simple as possible. There's no magic, no extra package management system (looking at you Doom) to break or confuse. By default, it doesn't install any 3rd-party packages—it just sets better defaults. Recent versions of Emacs can do a lot, but the defaults are painfully outdated. Bedrock fixes that. It's basically a vanilla Emacs experience without some of the cruft carried over from the previous century.

Bedrock also comes with a curated set of packages to enhance Emacs beyond better defaults. You can load these into your config as you begin to need them. List here: [2] If you are looking for a set of "modern" packages, this is it. I do pretty well keeping up in this space, and a lot of these (esp. Vertico, Consult, Corfu, etc.) seem to be accepted as the de-facto best replacements for older packages like Helm, Ivy, etc. (That said, I should add some config for Casual—very neat package to help with seldom-used features of Emacs.)

Bedrock is meant to be understandable: clone it once, and then tweak from there. You'll find a lot of forks of Bedrock on GitHub as people have forked it and then built their own config on top.

I'm working on updating Bedrock for Emacs 31. There won't really be that many changes, so like, don't wait for 31 to start your Emacs journey, but know that Bedrock is actively maintained and that the packages I've curated for it are the best I could possibly find. :)

Oh, also, if you search "best Emacs packages", my blog post [3] will come up on the first page on basically every search engine I've tried. ;)

Happy hacking!

[1]: https://codeberg.org/ashton314/emacs-bedrock

[2]: https://codeberg.org/ashton314/emacs-bedrock#extras

[3]: https://lambdaland.org/posts/2024-05-30_top_emacs_packages/

weakfish•2h ago
Great, thank you! I will definitely reference this.
tmtvl•2h ago
Start by just opening it up and clicking on 'tutorial'. After that check out Options->Manage Emacs Packages and see if anything interests you. After that check out Melpa (<https://melpa.org>). Finally you can check out what other people do, for example Prot (<https://protesilaos.com/emacs/dotemacs>), you can look at Doom's source,...

You're basically about to go on a journey to a country you've never been, so my recommendation is to just read up about it and see if you find some things you want to experience.

foobarqux•2h ago
Don't use doom etc, just standard emacs, otherwise you won't have any understanding of what is happening and how to fix it. Here's a list of what I think is important, roughly more important to less:

    - corfu+marginalia+vertico+embark+orderless is the standard completion stack now
    - magit (maybe also see also the "casual" the transient front end for other modes)
    - avy
    - (fset 'yes-or-no-p 'y-or-n-p)           ; 'Y' or 'N' instead of 'Yes' or 'No'
    - (setq confirm-kill-emacs 'y-or-n-p)
    - evil (optionally if you like vim keybinds, you still need to know basic emacs))
    - if using evil: evil-collection, evil-args, evil-goggles, evil-traces, evil-escape, evil-nerd-commenter, evil-lion, evil-surround, etc are not "standard" but still useful 
    - configure melpa source
    - which-key
    - helpful
    - undo-fu
    - gptel
    - projectile
    - eglot
    - saveplace
    - desktop
    - uniquify
    - dired/wdired
    - flycheck/flymake
    - treesitter
      
Stuff that is nice but less essential:

    - general (for making your own keybinds)
    - some kind of multicursor mode (I use iedit but it's simple)
    - yasnippet
    - org (usefulness depends on the person)
I haven't switched to corfu+marginalia+vertico+embark so I don't know what the equivalent is but helm-swoop is nice.

Also, very important, learn the help system (C-h <key>), especially C-h f, C-h k, C-h w, C-h c. And the info system

pradyun_•2h ago
I think I made a similar move about 6 years ago now. Started on Doom Emacs for the first 2-3 years, and honestly, for most users I think Doom Emacs is all you'll ever need. If you ever decide you want a bit more control over your config, which is what the case was for me, then it maybe makes sense to start writing your own configuration and learning about more of the native features. Would definitely recommend system crafters' emacs from scratch series that others have linked here -- extremely helpful.
srcreigh•2h ago
Most comments here are giving you fish instead of teaching you how to fish.

The emacs subreddit is pretty active. Search reddit for recent-ish threads for whatever you want to do.

PessimalDecimal•2h ago
The question is about Emacs configuration, but the keybindings might also be unfamiliar if you're coming from Vim. When I was learning I printed https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf and taped the two pages to my desk right in front of the keyboard for probably a 3-4 weeks. It was useful and also felt great when I didn't need it any longer.
Karrot_Kream•1h ago
If you don't want to use a distribution like Doom (which I don't fwiw and I've been using emacs for 20-something years), then I'm a big fan of minimal-emacs [1] a compact init.el and early-init.el that configures vanilla emacs into a good, default state. From there I would pick and choose which packages I'm interested by going through the Systemcrafters's community [2] as others have mentioned and Reddit's r/emacs community. While Systemcrafters is a fun community I'm a bit reluctant to spend too much time there because it's more of a tinkering community than a day-to-day-usage focused community. Fine if you want to tinker all day with your config but not the best for getting work done.

One thing I urge you to remember is that unlike neovim, Emacs isn't about just enabling and disabling plugins. Emacs is a Lisp environment. It really comes into its own when you program it. To that effect, I would read through the GNU Emacs info manual. Emacs ships with its manual in its inbuilt info reader and you can also find it in HTML [3] by GNU. Try not to think of your emacs as a constant soup of plugins and instead a codebase that you manage. The environment is very amenable to introspection, and there's inbuilt commands like `describe-key` and `describe-function` that pull up documentation for elisp. I'm a fan of the `helpful` package which I find to be a better version of `describe`.

[1]: https://github.com/jamescherti/minimal-emacs.d

[2]: https://systemcrafters.net

[3]: https://www.gnu.org/software/emacs/manual/

smj-edison•1h ago
Another question to all those who use emacs, what do you do to avoid emacs pinky? I've been hesitant to start using emacs for that reason, since I've had pinky pain quite often in the past two years and I'm pretty sure emacs would push me over the edge...
avtar•20m ago
+1 It's been ages since I last tried Emacs but one of the main reasons it didn't resonate with me was the constant hand contortions required for key chords. I'm pretty sure I tried evil mode as well. Projects such as Combobulate, Vertico, etc. being mentioned in this thread weren't around back then and seem intriguing. Curious to learn about any other projects or workarounds that help with ergonomics.
tmtvl•15m ago
I type Dvorak and I use the opposite modifier key to whichever key I want to modify. So, for example, for Control+A I would hold the right control key and press a. Aside from that, an active hobby with plenty of stretching and strengthening for the entire body.
asciimov•1h ago
Are you looking for an ide experience or just a text editor with some options?

If a full IDE is what you are seeking go with DOOM. It will give you a fully put together experience.

If you just want a text editor that you want to slowly add to go vanilla.

Doom is like getting a fully furnished apartment where you can choose the furniture and curtain colors. Vanilla is an empty plot of land that you need to build a foundation, house, and connect to city services all on your own.

auslegung•1h ago
I suggest trying out Doom and maybe some other configs to see what's available, and if you want to roll your own you can choose the things you like most from them. I came to emacs from [n]vim and using evil-mode was _very_ helpful in making the switch easier so I recommend that
Aidevah•59m ago
A lot of modern packages which began outside emacs have now been gradually been merged into the main emacs tree and come pre-installed (use-package for clean per package configuration, eglot for LSP support, tree-sitter, which-key etc). So you just need to learn how to configure them.

The most important packages which make emacs feel "modern" that are still outside the emacs tree for now are the ones which makes completion better, both in the main buffer and also in the minibuffer (what others may call your "command palette"). They are

- consult: search and navigation commands, provides candidates for...

- vertico: vertical display of candidates in the minibuffer

- marginalia: annotations for the candidates

- orderless: orderless fuzzy match for candidates

- embark: right mouse context menu for candidates

Getting these setup would make your whole journey onwards much smoother.

wwarner•12m ago
i run a basic emacs configuration within docker, so it has all the underlying executables & binaries installed where emacs looks for them. runs exactly the same on linux & macos. https://hub.docker.com/r/wwarner/emacs-native or https://github.com/wwarner/emacs-native-dockerfiles

Minimal Bitcoin Price Tracker

https://bitcoinprice.sh
1•shmuelix420•1m ago•0 comments

Open source tool to collect data for computer use agent models

https://github.com/bobcoi03/computeruse-data-collection
1•bobcoi•3m ago•1 comments

Dropout Crosses 1M Subscribers

https://variety.com/2025/tv/news/dropout-superfan-tier-price-explained-sam-reich-1236564699/
1•haunter•4m ago•0 comments

Flashvsr: Towards Real-Time Diffusion-Based Streaming Video Super-Resolution

https://zhuang2002.github.io/FlashVSR/index.html
1•rbanffy•6m ago•0 comments

US Drone Observes Aid Truck Looted by Hamas in Gaza

https://www.centcom.mil/MEDIA/STATEMENTS/Statements-View/Article/4327585/us-drone-observes-aid-tr...
2•mhb•9m ago•0 comments

Verifiably Private AI

https://ai.vp.net
2•rasengan•12m ago•0 comments

What's New in Fedora KDE Plasma Desktop 43

https://fedoramagazine.org/whats-new-in-fedora-kde-plasma-desktop-43/
2•jlpcsl•15m ago•0 comments

Iterative Lightmap Updates for Scene Editing

https://momentsingraphics.de/PG2025.html
1•ibobev•16m ago•0 comments

Jackknife Transmittance and MIS Weight Estimation

https://momentsingraphics.de/SiggraphAsia2025.html
1•ibobev•16m ago•0 comments

I've open-sourced the Terracore TC-1, a cartridge-based food synthesizer

https://github.com/JDM95aus/OpenSourceTerraCore/blob/main/Complete-commercial.md
1•JRDM95•17m ago•1 comments

Retro Pixel Image Editor

https://retrogamecoders.com/retro-pixel-image-editor/
2•ibobev•17m ago•0 comments

Unix Recovery Legend

https://www.ee.torontomu.ca/~elf/hack/recovery.html
3•rbanffy•18m ago•0 comments

Google warns non-Pixel Wear OS users will lose Clock app support soon

https://www.androidcentral.com/wearables/google-pixel-watch/google-says-its-clock-app-will-drop-s...
2•josephcsible•19m ago•0 comments

Show HN: FFmpeg.wasm In-Browser Video Conversion

https://ethan.dev/utilities/video-converter/
2•Beefin•21m ago•0 comments

A Svelte 5 Custom Elements Demonstration – Framework Agnostic Web Components

https://www.appsoftware.com/tools/utilities/svelte-custom-elements-demo
1•appsoftware•21m ago•1 comments

Show HN: I built a tool to sort a Northern Lights dataset for a CV model

https://picsort.coolapso.sh
1•coolapso•21m ago•0 comments

Ask HN: What do you think of this Christmas movie idea involving AI?

1•amichail•22m ago•0 comments

Back to the future: On the typography of electronic flight deck documentation

https://www.sciencedirect.com/science/article/pii/S0925753523003399
1•rbanffy•22m ago•0 comments

Fix Your FODs: A supply-chain attack on Nix

https://garnix.io/blog/fix-your-fods
2•jkarni•23m ago•0 comments

I Fell in Love with Erlang

https://boragonul.com/post/falling-in-love-with-erlang
2•asabil•23m ago•0 comments

FFmpeg Dealing with a Security Researcher

https://twitter.com/ffmpeg/status/1984207514389586050
3•trollied•24m ago•0 comments

Rendering Conways Game of Life with Braille

https://asherfalcon.com/blog/posts/4
1•ashfn•31m ago•0 comments

The online world is optimized for algorithms, not humans

5•SachinnJainn•32m ago•0 comments

Jaho Coffee Roaster

https://www.jaho.com/
1•Bogdanp•36m ago•0 comments

Show HN: Game where players write real JavaScript to battle other players online

https://store.steampowered.com/app/1137320/Screeps_Arena/
1•artchiv•37m ago•0 comments

Commodore LCD Emulator

http://commodore-lcd.lgb.hu/jsemu/
1•erickhill•39m ago•0 comments

Fuck Linux

https://fucklinux.org/
4•Jotalea•39m ago•2 comments

Think Weirder: The Year's Best SciFi Ideas

https://thinkweirder.com
1•mooreds•41m ago•0 comments

Ask HN: Mathematics Version of "The Missing Semester of Your CS Education?"

2•partypete•43m ago•0 comments

Ask HN: Anyone else see parallels between LLM and internet skepticism?

1•ronbenton•48m ago•0 comments