Eu recuperei a tecla 'd' gnus-article-mode
, mas seu antigo comportamento ainda está ativo quando o ponto está em um anexo. Percebo que a religação não teve efeito lá C-h k d
, mas não está me dizendo qual mapa de teclas está em vigor naquele momento, para que eu possa religá-lo.
Existe uma maneira de descobrir isso?
Aqui está um exemplo preciso: estou usando o mal e quero que os artigos estejam no modo de movimento. Para o layout do meu teclado, eu 'configurei' como a tecla para subir.
(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)
Para garantir que as chaves malignas sejam levadas em consideração, desmarquei a chave gnus no mapa local:
(defun as/alter-article-evil-map ()
(local-unset-key "d"))
(add-hook 'gnus-article-mode-hook 'as/alter-article-evil-map)
Infelizmente, quando o ponto está em um anexo, a tecla 'd' não aumenta mais, mas ela me oferece a exclusão do anexo. Eu acho que outra ligação está ativa nesse ponto, daí a questão.
Solução Usei o keymaps-at-point
abaixo para encontrar o mapa de teclas usado era de uma propriedade de texto. Olhei o código da função vinculada para encontrar o nome do mapa de teclas gnus-mime-button-map
. O código a seguir faz o que eu quero:
(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)
fonte
Searching Keymaps
. Veja também nósFunctions for Key Lookup
eActive Keymaps
.Respostas:
Emacs 25
Conforme mencionado pelo @YoungFrog nos comentários, começando com o Emacs 25.1 , o
C-h k
método antigo de descrever as combinações de teclas também informará em qual mapa de teclas a chave foi encontrada.Antes do Emacs 25
Há algum código aqui sobre isso, mas é incompleto, pois não cobre tudo. Abaixo está uma versão melhorada.
As chaves podem ser vinculadas de 9 (!) Maneiras. Obrigado a @Drew por este link (também complementado por isso ) com a lista completa. Por ordem de precedência, são eles:
overriding-terminal-local-map
. Isso é definido pelaset-transient-map
funçãooverriding-local-map
,. Se este estiver definido, os itens 3 a 8 são ignorados (provavelmente por que você não vê muitos deles).keymap
texto (que pode ser feita em texto real ou em sobreposições).emulation-mode-map-alists
,.minor-mode-overriding-map-alist
,.minor-mode-map-alist
.local-map
propriedade de texto. Se isso existir, o item 8 será ignorado.current-local-map
.current-global-map
.Também há um semi-item 10. Qualquer comando encontrado através do procedimento acima também pode ter sido remapeado.
A função a seguir consulta algumas dessas possibilidades (as mais prováveis) e retorna ou imprime o resultado.
Existem funções internas para cada uma delas, exceto a primeira, portanto, devemos criar uma (também uma versão aprimorada do código vinculado acima).
Como você está dizendo que o comportamento está ativo quando point está em um anexo, há uma boa chance de que esse atalho de teclado ocorra em uma sobreposição ou propriedade de texto.
Se isso não funcionar , tente o seguinte comando também. Apenas coloque o cursor no anexo e faça
M-x
keymaps-at-point
.fonte
k runs the command gnus-summary-kill-same-subject-and-select (found in gnus-summary-mode-map), which is (...)
Sobre o que:
Por exemplo, para
(my-lookup-key (kbd "C-c v v"))
obter lista no*Message*
buffer:Essa abordagem é útil para pesquisar o sub-mapa de teclas incluído no mapa de teclado de nível superior, por exemplo, saída de:
é o
vc-prefix-map
que está incluído emglobal-map
:Se você modificar a condição de filtragem para incluir
keymapp
- poderá procurar sempre prefixos:Então
rst-mode-map
, será encontrado em ambos:fonte
Estou ciente de que o seguinte não responde à pergunta de Como posso descobrir qual mapa-chave , mas lida com o problema subjacente neste caso de como garantir que a
d
chave se comporte de acordo com o que o usuário deseja. Se preferir, posso remover esta resposta e converter em outra pergunta + resposta sobre esse problema.Como um método para substituir o
text-property/overlay
mapa, você poderá usar:De acordo com o Controle de mapas ativos ,
overriding-local-map
tem precedência sobre qualquer outro mapa ativo que não sejaoverriding-terminal-local-map
.fonte
O emacs-buttons fornece
buttons-display
, que com um argumento de prefixo exibe uma visualização recursiva de todas as ligações atuais.(Isenção de responsabilidade: eu sou o autor do pacote)
fonte