Odebrałem klucz „d” gnus-article-mode
, ale jego stare zachowanie jest nadal aktywne, gdy punkt znajduje się na załączniku. Widzę, że ponowne wiązanie nie przyniosło skutku C-h k d
, ale nie mówi mi, która mapa klawiszy obowiązuje w tym momencie, abym mógł ją ponownie powiązać.
Czy istnieje sposób, aby się tego dowiedzieć?
Oto dokładny przykład: używam zła i chcę, aby artykuły były w trybie ruchu. Dla mojego układu klawiatury skonfigurowałem „d” jako klawisz do przejścia w górę.
(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)
Aby upewnić się, że złe klucze są brane pod uwagę, rozbroiłem klucz gnus na lokalnej mapie:
(defun as/alter-article-evil-map ()
(local-unset-key "d"))
(add-hook 'gnus-article-mode-hook 'as/alter-article-evil-map)
Niestety, gdy chodzi o załącznik, klawisz „d” już nie idzie w górę, ale oferuje mi usunięcie załącznika. Wydaje mi się, że w tym momencie aktywne jest inne wiązanie, stąd pytanie.
Rozwiązanie Użyłem keymaps-at-point
poniżej, aby ustalić, że używana mapa klawiszy pochodzi z właściwości text. Następnie spojrzałem na kod powiązanej funkcji, aby znaleźć nazwę mapy klawiszy gnus-mime-button-map
. Poniższy kod robi to, co chcę:
(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)
Searching Keymaps
. Zobacz także węzłyFunctions for Key Lookup
iActive Keymaps
.