J'ai rebondi sur la touche 'd' gnus-article-mode
, mais son ancien comportement est toujours actif lorsque le point est sur une pièce jointe. Je peux voir que la reconsolidation n’a pas pris effet là-bas C-h k d
, mais cela ne me dit pas quelle est la keymap en vigueur à ce moment-là, afin que je puisse la recréer.
Y a-t-il un moyen de le savoir?
Voici un exemple précis: J'utilise le mal et je veux que les articles soient en mode mouvement. Pour ma configuration de clavier, j'ai configuré la clé pour monter.
(evil-mode 1)
(add-to-list 'evil-motion-state-modes 'gnus-article-mode)
(setq evil-emacs-state-modes (remove 'gnus-article-mode evil-emacs-state-modes))
(define-key evil-motion-state-map "d" 'evil-previous-line)
Pour m'assurer que les clés maléfiques sont prises en compte, je désactive les clés gnus dans la carte locale:
(defun as/alter-article-evil-map ()
(local-unset-key "d"))
(add-hook 'gnus-article-mode-hook 'as/alter-article-evil-map)
Malheureusement, lorsque le point est sur une pièce jointe, la touche 'd' ne monte plus, mais elle me propose de supprimer la pièce jointe. Je suppose qu'une autre liaison est active à ce moment-là, d'où la question.
Solution J'ai utilisé ce qui keymaps-at-point
suit pour trouver que le keymap utilisé était issu d'une propriété de texte. J'ai ensuite regardé le code de la fonction liée pour trouver le nom du keymap gnus-mime-button-map
. Le code suivant fait ce que je veux:
(defun as/alter-article-evil-map ()
(define-key gnus-mime-button-map "d" nil))
(add-hook 'gnus-article-mode-hook 'as/alter-article-evil-map)
la source
Searching Keymaps
. Voir aussi les nœudsFunctions for Key Lookup
etActive Keymaps
.Réponses:
Emacs 25
Comme mentionné par @YoungFrog dans les commentaires, à commencer par Emacs 25.1 , la bonne vieille
C-h k
méthode de description des raccourcis clavier vous indiquera également le type de clavier dans lequel la clé a été trouvée.Avant Emacs 25
Il y a du code ici , mais il est incomplet car il ne couvre pas tout. Vous trouverez ci-dessous une version améliorée de celle-ci.
Les clés peuvent être liées de 9 (!) Façons. Merci à @Drew pour ce lien (également complété par celui-ci ) avec la liste complète. Par ordre de priorité, ils sont:
overriding-terminal-local-map
. Ceci est défini par laset-transient-map
fonction.overriding-local-map
. Si celui-ci est défini, les éléments 3 à 8 sont ignorés (probablement pourquoi vous n'en voyez pas beaucoup).keymap
propriété text (qui peut aller sur du texte réel ou sur des superpositions).emulation-mode-map-alists
.minor-mode-overriding-map-alist
.minor-mode-map-alist
.local-map
propriété text. Si cela existe, le point 8 est ignoré.current-local-map
.current-global-map
.Il existe également un semi-élément 10. Toute commande trouvée dans le cadre de la procédure ci-dessus aurait également pu être remappée.
La fonction suivante interroge certaines de ces possibilités (les plus probables) et renvoie ou affiche le résultat.
Il existe des fonctions intégrées pour chacun d’eux, à l’exception de la première; nous devons donc en créer une (également une version améliorée du code lié ci-dessus).
Puisque vous dites que le comportement est actif lorsque le point est sur une pièce jointe, il y a de fortes chances pour que ce raccourci clavier se produise sur une superposition ou une propriété de texte.
Si cela ne fonctionne pas , essayez également la commande suivante. Il suffit de placer le curseur sur la pièce jointe et de le faire
M-x
keymaps-at-point
.la source
k runs the command gnus-summary-kill-same-subject-and-select (found in gnus-summary-mode-map), which is (...)
C'est à propos de:
Par exemple pour la
(my-lookup-key (kbd "C-c v v"))
liste dans la*Message*
mémoire tampon:Cette approche est utile pour rechercher un sous-clavier associé à un clavier supérieur, par exemple les résultats suivants:
est
vc-prefix-map
ce qui est inclus dansglobal-map
:Si vous modifiez la condition de filtrage pour inclure
keymapp
- vous pourrez rechercher à tout moment les préfixes:On
rst-mode-map
trouvera donc à la fois:la source
Je suis conscient que ce qui suit ne répond pas à la question Comment puis-je trouver quelle carte de clavier , mais elle traite du problème sous-jacent dans ce cas, comment faire en sorte que la
d
clé se comporte conformément à ce que l'utilisateur souhaite. Si je le souhaite, je peux supprimer cette réponse et la convertir en une autre question + réponse concernant ce problème.En tant que méthode pour remplacer la
text-property/overlay
carte, vous devriez pouvoir utiliser:Comme indiqué dans Controlling Active Maps ,
overriding-local-map
a la priorité sur toutes les autres cartes actives autres queoverriding-terminal-local-map
.la source
emacs-buttons fournit
buttons-display
ce qui, avec un argument de préfixe, affiche une visualisation récursive de toutes les liaisons en cours.(Avertissement: je suis l'auteur du package)
la source