Emacs Key Binding Precedence

2019-03-04 00:25发布

问题:

I'm frustrated with the default behavior of autocomplete overriding key bindings used by yasnippets.

Is there a way to set a precedence so that tab will try to expand a snippet before trying to autocomplete the word?

Quick disclosure: I'm using evil-mode.

回答1:

If they're both minor modes, then precedence is determined by the order of elements in minor-mode-map-alist which, unless explicitly manipulated, is simply determined by the order in which the libraries were loaded.

Ensure that autocomplete is loaded before yasnippet, and yasnippet's minor mode map would have precedence.

You could also use eval-after-load to adjust minor-mode-map-alist after loading autocomplete, to check for a yasnippet entry, and re-order the list if necessary.

(autocomplete may use other methods, though. A temporary overriding keymap would still have precedence over the minor mode maps, for instance.)