Where to begin with "modern" Emacs?

Where to begin with "modern" Emacs?

217 pointsby weakfish121 comments

Join the discussion

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

  • Hacker News
  • 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/
  • 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

  • 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.

  • 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/

  • 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.

  • 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/

  • 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

  • Welcome to Emacs!

    - I write about Emacs things fairly frequently: https://xenodium.com

    - I started making Emacs videos recently: https://www.youtube.com/xenodium

    - For aggregated Emacs blogs, check out https://planet.emacslife.com

    - For aggregated Emacs videos, https://emacs.tv

    - The Emacs subreddit can be handy too https://www.reddit.com/r/emacs

    - If on the fediverse, follow the #emacs hashtag

    - Sacha Chua's Emacs News are great https://sachachua.com/blog/category/emacs-news

    With respect to "modern", maybe these two posts could be of interest:

    - Visual tweaks: https://xenodium.com/my-emacs-eye-candy

    - macOS tricks: https://xenodium.com/awesome-emacs-on-macos

    Enjoy the ride!

Explore Birbla archives