Join the discussion

Write your take first — we'll ask for email only when you're ready to publish.

  • Hacker News
  • It's so refreshing to see emacs just sticking to its guns and getting solidly, steadily better over the years. Inspirational, even. This is how software should be. Can't wait for all the tree-sitter improvements!
  • > kill-region-dwim fixes a decades-old papercut. Set it to 'emacs-word and hitting C-w with no active region kills a word backwards instead of signalling an error.

    Thank you! No more:

    (defun cutregion-or-killword (beginning end) "Kills region if marked else backward kills word." (interactive "r") (if (use-region-p) (kill-region beginning end) (backward-kill-word 1)))

    (global-set-key (kbd "C-w") 'cutregion-or-killword)

  • Wow, auto install treesitter grammars, editable xref, transposing window layouts, speed bar as a side window in frame, I had no idea any of these things were coming and were all some passing thoughts I’ve had in the last few weeks “it would be cool if this was supported OOTB”. Some dreams do come true!
  • I realize I've missed a lot.

    Someone should write an Emacs guide for people who haven't meaningfully touched their .emacs since the early 2000s

  • It’s already built in! C-h n view-emacs-news
  • There's a lot of Emacs information on the internet, and your agent has been trained on it.
  • I'm a pretty conservative emacs user, partly because I don't want to spend time tinkering to get things to work consistently across Windows, ubuntu, and mac os -- all of which I use daily. My most "modern" adoption is probably using lsp and eglot with various language modes, notably golang and rust.

    Should I consider adding tree-sitter into the mix?

  • The bulk of the Mastering Emacs blog is a decade old at this point, but its philosophy and the information it provides is still very relevant for any graybeard wanting to get up to date.
    by TFNA
  • Reading Rahul's post I got excited to build Emacs 31 from source, but reality occurred and I decided to wait for the release. I also like his articles on setting up Emacs.

    I don't care what tools other developers use but in January I made my two dev Macs 'VSCode free' and use Emacs for everything. Feels better!

    For decades I would spend tons of time experimenting with my Emacs setups but in the last few years I have been shifting to more out of the box experiences. I did write my own agentic coding platform in Emacs Lisp but I keep that separate from .emacs and .emacs.d

  • I'm happy to see these improvements. One thing that has always been annoying with Emacs is how much configuration is required to get a modern editor going. Things like Doom Emacs, and Spacemacs try to solve that problem, but both feel far removed from vanilla emacs. I wish Emacs came with several presets so with a single line, you could transform the editor to different base points. For example, most devs want treesitter highlighting and LSP enabled by default. Why not have a preset like (preset-base-ide-1), so we don't need 200 lines of configuration before we can function? Instead we could build off of a much closer starting point.
  • What are these things you have that makes Emacs a modern editor?

    I have cua-mode and don't show startup message. What else do I need to modernize Emacs?

  • Emacs is not great software because it has good features. It’s great software because it conforms itself and those features to the user’s needs and preferences. If one of those preferences is short, canned config, we’ve got a way to express that (spacemacs and doom). But if one can’t be arsed to express their preferences even in those frameworks … emacs might not be the software for them.
  • Indeed. I myself am on Doom Emacs but I've increasingly been thinking of moving over to vanilla Emacs. I'm a bit worried about the transition period due to all the keybind differences but I'm sure it's not too bad.
  • > Why not have a preset like (preset-base-ide-1), so we don't need 200 lines of configuration before we can function? Instead we could build off of a much closer starting point

    First you need to define what is that much better starting point? Something VSCode like? I find VS Code a bad example of software development tooling (anemic file management, integration with external tooling is cunbersome, VCS integration is flimsy, Code viewing is poor,…).

    VSCode is a swiss knife. It has a few tools that are handy for occasional needs. But Vim and Emacs provide a complete toolbox. Learn it once and be set for life.

    The only reason we still have IDE is kafkaesque ecosystems that requires expansive and custom tooling just to make sense of it. People can use vim to write code for the Linux kernel but needs XCode for a 5 screens app.

  • There's Bedrock, Centaur Emacs, Witchmacs, and more; even if you don't like Doom and Spacemacs there's plenty of fish in the sea. Though there is the issue where preconfigs tend to have edgelord 'Dark As My Soul' themes which make text absolutely unreadable, which is a bit of a pain to deal with.
  • I think it is cultural. It's kinda like building your own lightsaber as a Jedi. The part of Emacs/Vim initiation is building your own configuration that works for you. Setting up plugins, keybindings, colorschemes etc. It's part of the fun of it (at least for me).
  • You are just worrying for no good reason. Doom Emacs and Spacemacs are both very good; being far removed from vanilla emacs is not a problem to be worried about.
  • This comment shows up on every single emacs thread and for the life of me I can't understand why. It takes one line in a shell to pull down a premade config and if that were to be built on, who would decide what gets put in? I don't think it's worth anyone's time to decide what everyone needs in a premade config.
  • > Tree-sitter that just works

    Hallelujah and thank you, sweet little baby Jesus. Now I can get rid of this bullshit from my dotfiles:

        rm -rf ~/.emacs.d/tree-sitter
        mkdir -p ~/.emacs.d/tree-sitter
        set _plat = windows
        if ( `uname` == Linux ) set _plat = linux
        if ( `uname` == Darwin ) set _plat = apple
        set _arch = x86
        if ( `arch` == arm64) set _arch = aarch64
        gh release -R emacs-tree-sitter/tree-sitter-langs download -p "*${_arch}*${_plat}*"
        tar -C ~/.emacs.d/tree-sitter --transform 's/^\(.*\.\(so\|dylib\|dll\)\)/libtree-sitter-\1/' -xzf tree-sitter-grammars*.tar.gz
        rm tree-sitter-grammars*.tar.gz
    
    That's csh, BTW, just like the Founding Fathers intended.
  • If you do any kind of serious work, you need a text editor. Emacs is still one of the best around. It's fast. It's configurable. And it's under your control. You won't suddenly find your text editor "upgraded" with tons of new features you never asked for. It's all opt-in.
  • >You won't suddenly find your text editor "upgraded" with tons of new features you never asked for.

    I never asked for native compilation implemented via the trampoline technique, which increases attack surface (because it causes Emacs to routinely execute files in a known-by-attackers location in my home directory) and makes debugging harder, but I'm stuck with it if I want my Emacs to speak the Wayland protocol (and I do).

    Ditto the clumsy bolting-on of lexical scope.

  • It’s slow, bloated and packed to the brim with “features” you will never need.

    There is Only One. En garde!

  • > It's fast.

    super slow on windows

  • haha, I definitely wouldn't call my setup fast. But it did get a lot better after Native Compilation and a lot of the major stuff has started async to feel more responsive at least.
  • Systems like Emacs that are hyper-configurable via a text file seem tailor made for modern LLM's. If you've got a little bit of Emacs experience but bounced off of it because the learning curve was too steep I highly recommend diving back in with your agent. Agents are really good at setting up and maintaining your .emacs/init.el.
  • Agree, I put off using org-roam a few times in the past because I couldn’t be bothered to keep my notes in such order. But now I have an agent that set it up and it’s also recording, organizing, and referencing everything.
    by mbil
  • I agree. It's amazing. I feel like I've got a private Emacs consultant at my elbow.
  • A programmable editor really is so amazing now. You can have a LLMs whip up anything you can think of in minutes. Ive used neovim for a long time but never really customized it much. Now I’ve got tons of plugins and can add new features on a whim.

    I’ve been thinking of trying out emacs because I think the native gui can probably be even more powerful

  • I’ve always used vim/neovim but fell in love with some of the features of emacs (org, magit, lisp). My problem was spending the time to configure it though.

    Even with spaceman’s/doom and the amazing documentation it was always still so much work to configure emacs as a newer user. LLMS have made this nearly instant.

    This is a bit of a ramble but it’s so amazing having emacs and an LLM now, I don’t even touch vscode anymore and only find myself touching things like IntelliJ when I really need to dig into something with a debugger.

  • Modern LLMs are ok with that, but they do make silly mistakes; and a major problem here is that your init.el stops being your own, if it’s written and maintained by an LLM, you will have no idea what’s going on there. And if you would be reviewing every single line of your init file, then what’s the point
    by blks