Switching to the meow modal editing system from evil Emacs
17 points
7 months ago
| 2 comments
| esrh.me
| HN
herewulf
7 months ago
[-]
The article was apparently published in 2021 but meow has had a release as recently as October.

https://github.com/meow-edit/meow

There's also a Doom Emacs module: https://github.com/meow-edit/doom-meow

This is HN submission is the first I've heard of meow but it looks interesting. One of the bigger problems I have with Doom is reading the docs for Emacs packages and the keybinds don't match. It's nice that someone took the time to make evil bindings but sometimes it's a struggle to remember where the bindings differ (I'm thinking of Magit in particular).

Plus, object-verb command order just seems next level. I'm always using evil/vim visual mode anyway. My fear is losing muscle memory for using vi and vim in environments where there's no Emacs, especially not one with my special config.

reply
setopt
7 months ago
[-]
> One of the bigger problems I have with Doom is reading the docs for Emacs packages and the keybinds don't match.

Did you try `C-h m`? It will generate interactive keybinding descriptions for your current context, including say Magit + Evil.

reply
herewulf
7 months ago
[-]
Thanks for your response in an otherwise dead thread.

Unfortunately `C-h m` seems to show the bindings as defined by the mode and not what they actually are. So in the example of Magit, `z` is supposed to be bound to `magit-stash` but it's not because `z` is already used by Evil, so another package, evil-collection, fixes this situation by binding `magit-stash` to `Z`. And that is the key I use even though numerous places within Emacs show it as `z`.

Maybe this has been fixed more recently though? My Doom Emacs is probably rather out of date because for the most part it just works. If I look up a command with `M-x` it always shows correct key bindings there.

In terms, of writing about bindings in static documentation on the web (for example) I think it's unfortunate that many Emacs package authors choose to write the default key bindings when instead they could simply write the Emacs command (or both).

Indeed, we got lucky that the `C-h` binding that you suggested is bound exactly to what you intended, but it would have been just as effective to tell me to run `describe-mode`. :)

This is a great advantage of Emacs over the Vim ecosystem where changing bindings generally means binding a new key to point to the default one. So all the bindings are just about _keys_ and not _commands_. I much prefer the Emacs way for all the obvious reasons.

reply
setopt
7 months ago
[-]
I've been using Evil-mode a bit on and off since I came to Emacs (from Vim), right now I'm in a "vanilla phase" again. But I tried re-enabling Evil-mode and Evil Collection now to test what you mentioned (in a vanilla config not Doom) and found that:

- `z` triggers stash in magit even with evil collection on, so `C-h m` was correct there. As you said, perhaps it changed at some point, since `evil-magit` used to be its own package but then got assimilated into Evil Collection if I recall correctly.

- But your general point stands: If I look up e.g. `j`, then it first shows me `magit-status-jump` and I have to scroll down to see that it is overridden by `evil-next-line` in `<normal-state>`. In that sense, I think perhaps `C-h b` is more useful, since it lists all defined keybindings in order of precedence, and thus correctly lists the Evil keybinding further up than the Magit keybinding in this case.

As for it being more useful to say `describe-mode` and `describe-bindings` than `C-h m` and `C-h b`, I generally agree. That was quite annoying using Evil myself. On the other hand, I usually write HN comments from my iPhone without Emacs installed, and I tend to remember keybindings and not underlying functions for the most common operations, so it's just easier to type `C-h m` than to go back to my desk to check `C-h k C-h m` first ;). If you want to check what function a default keybinding runs, you can use `C-z` to toggle Evil off temporarily and then use `C-h k`.

reply
setopt
7 months ago
[-]
> Actions like ciw or 2dd are remarkably powerful primarily because of the so called “grammar” of the vim language: verb -> adjective -> noun.

Nitpick: I don’t think the Vim grammar has adjectives; w and W are for instance different nouns, as opposed to having a separate adjective that could be attached to specify “delete BIG word”.

Perhaps you meant “preposition” instead, like the inside / around / surrounding prepositions used to construct “text objects”?

But interesting blog post :)

reply