Hacker News new | past | comments | ask | show | jobs | submit login

Agreed. I started with Spacemacs, which showed what is possible in Emacs. But it is so horribly slow and breaks so often that I couldn't use it more than a few weeks. Then I started with a blank init.el and just added packages (with use-package) as needed. Now it's fast and it still has the functionality that I need, things also rarely break (and thanks to Nix I can always roll back). The main idea that I stole from Spacemacs is the use of spacebar shortcuts (via general.el).



The thing about Spacemacs many people don't get - it does not liberate you from learning Emacs internals. The good thing about Spacemacs that it simplifies one of the most challenging things about Emacs - discoverability.

The hardest part of Emacs is to learn what Emacs can do, what it offers. And many gems are hidden under so many layers, that people may not even know about them after decades of using Emacs every single day.

And Spacemacs can be fast and predictable. But you need to know where and how to tweak it to make it so. For the past few years of me using Spacemacs, I had maybe three of four incidents when after updating things, something would break in a way that it would take me longer than ten minutes to find a workaround.


> The hardest part of Emacs is to learn what Emacs can do, what it offers.

Nah, for me the hardest part is finding out about all the things it doesn't do. Unless you code it. Maybe you find some half-arsed packages, but they might just make you more frustrated.

For example, I still haven't found a way to do vim-like completion. I still haven't got a good cscope interface that doesn't crap all over my windows (a common problem for many things in emacs, not just xcscope). I still haven't found a way to make my custom keybindings just work everywhere; every so often I happen to end up with focus in a window where, for example, my normal window navigation bindings don't work and I'd have to go out of my way to fix it.


> I still haven't found a way to make my custom keybindings just work everywhere; every so often I happen to end up with focus in a window where, for example, my normal window navigation bindings don't work and I'd have to go out of my way to fix it.

The easiest way to do this is to use `bind-keys' (specifically, the one with an asterisk after it, which HN markup won't seem to let me use without creating italics instead), which creates a global map for your personal key bindings that override other bindings (so, use it thoughtfully, and remember that `describe-personal-keybindings' will list them). It's best used in the `use-package' macro, like:

    (use-package ace-jump-mode
      :bind* ("C-." . ace-jump-mode))


My bindings need to be state-aware, because they are evil. So a simple global override is actually not quite enough..


In that case, I recommend using `general`, which is designed to make configuring EVIL keymaps very easy. It also provides a `use-package` keyword. I use it for all of my keybindings even though I don't use EVIL.

https://github.com/noctuid/general.el




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: