J'utilise use-package
pour gérer les packages installés et bind-key
attribuer des actions aux clés personnalisées que j'aime.
Je remplace la plupart des raccourcis clavier Emacs par défaut (par exemple C-ndevient M-k, C-pdevient M-i), mais je suis OK avec d'autres modes remplaçant mon schéma de raccourcis clavier. Parfois, cependant, je veux que ma liaison de touches persiste. Je veux M-kdire autre chose que Gnus ou Helm par défaut.
Cependant, ils entrent tous en conflit les uns avec les autres au démarrage d'Emacs, car je ne peux pas ajouter de liaison à une image clé, si elle n'existe pas (car use-package
parfois diffère le chargement d'un package). Par exemple, les commandes suivantes génèrent des erreurs (par exemple (void-variable helm-map)
), car Helm et Gnus ne sont pas encore complètement chargés.
(bind-key "M-Y" 'helm-end-of-buffer helm-map)
(bind-key "M-k" 'helm-next-line helm-find-files-map)
(bind-key "M-s" 'other-window gnus-summary-mode-map)
J'ai toutes mes use-package
invocations dans un fichier et bind-key
pour les raccourcis clavier personnalisés dans un autre fichier. Je ne veux pas mettre de liaisons dans les use-package
appels, car je veux peut-être publier mon schéma de liaison de touches personnalisé en tant que package autonome. Que se passe-t-il si je veux que quelqu'un qui installe mon système se fasse remplacer les raccourcis clavier locaux de Helm et Gnus?
Comment gérer les raccourcis clavier en mode local à l'aide de bind-key
, de sorte que toutes les clés soient définies même si les packages sont chargés récemment et que tous les paramètres de clés se trouvent dans un seul fichier?
la source
Puisque vous utilisez déjà bind-key, directement à partir de la documentation de
bind-key.el
:Le dernier formulaire tombe en panne si le clavier n'est pas défini actuellement car la définition du fichier
some-other-mode-map
n'a pas encore été chargée. Vous pouvez donc mettre cela dans unuse-package
forsome-other-mode
(le paquet définissantsome-other-mode-map
), ou en utilisantwith-eval-after-load
:Une autre alternative serait de définir votre propre mode mineur contenant toutes les liaisons qui ne devraient pas être remplacées par les modes majeurs:
la source