Juri Linkov writes: >>> Maybe it's possible to add new user options without deprecating the >>> existing functions? Then for users an alternative way would be to >>> customize these options, and enable windmove-mode in the init file. >> >> Of course, why not? The patches below should implement that. > > Thanks, I tried out your patches. The customization saved them > in such format: > > '(windmove-default-keybindings '([ignore] hyper)) > '(windmove-delete-default-keybindings '("\30" hyper)) > '(windmove-display-default-keybindings '([ignore] meta hyper)) > '(windmove-swap-states-default-keybindings '([ignore] shift hyper)) > > But I guess it's not a problem that it saves nil as [ignore]. > > The real problem is that after replacing this with a manual configuration: > > (use-package windmove > :custom > (windmove-default-keybindings '(nil hyper)) > (windmove-delete-default-keybindings `(,(kbd "C-x") hyper)) > (windmove-display-default-keybindings '(nil meta hyper)) > (windmove-swap-states-default-keybindings '(nil shift hyper))) > > Then every startup pops up the *Warnings* buffer with: > > Warning (emacs): Overriding 1 with windmove-delete-left [Disable showing] [Disable logging] > > But still all keybindings work correctly. I was under the impression that this was fixed, but it turns out I did not read the lookup-key doc string carefully enough: A number as value means KEY is "too long"; that is, characters or symbols in it except for the last one fail to be a valid sequence of prefix characters in KEYMAP. The number is how many characters at the front of KEY it takes to reach a non-prefix key. But this case can be safely ignored, as define-key will take care of the prefix. To solve this, the warning is only trigged when a function is over-riden. -- Philip K.