Para encurtar a história, há uma pequena biblioteca de que eu gosto, mas não gosto de nenhuma das combinações de teclas padrão. Por exemplo, é um modo secundário global e vincula uma função C-c C-s
, mas isso sombreia org-schedule
na minha organização e nos buffers da agenda organizacional.
Eu quero manter a pequena biblioteca, mas me livrar de todas as ligações no mapa de teclas da pequena biblioteca.
Em uma tentativa inicial de fazer isso, tentei o seguinte (depois de confirmar que little-library-mode-map
é onde as ligações vivem):
(with-eval-after-load "little-library-mode"
(setq little-library-mode-map (make-sparse-keymap)))
O código "é bem-sucedido" ( C-h v little-library-mode-map RET
mostra que é (keymap)
agora), mas todos os atalhos de teclado da pequena biblioteca ainda "funcionam" ( C-c C-s
ainda funciona com a pequena biblioteca, inclusive nos buffers de organização e agenda organizacional).
Encontrei outra maneira de resolver meu problema, mas estou realmente curioso para saber por que essa abordagem falha. As teclas de atalho do Emacs ainda me parecem magia negra.
fonte
(setcdr little-library-mode-map nil)
.Respostas:
Há três coisas importantes nesta história:
Basicamente, o que você fez foi apontar o nome para o mapa de teclas esparsas, em vez do original, mas é tarde demais: o modo secundário usa o original.
fonte
minor-mode-map-alist
.Em algum momento, ao ativar
little-library-mode
o mapa de teclas armazenado na variável,little-library-mode-map
é adicionadominor-mode-map-alist
:O Emacs usa essa lista para procurar ligações de modo secundário. Quando você liga a variável
little-library-mode-map
a um novo valor posteriormente, isso não tem efeito no mapa de teclas apontadominor-mode-map-alist
para. Conforme observado no comentário de @wasamasa, uma maneira de se livrar de todas as ligações neste mapa de teclas é alterando o mapa de teclas diretamente:Outra maneira é redefinir o mapa de teclas antes de carregar a biblioteca:
Se o modo secundário for bem comportado, isso evitará instanciar suas ligações também.
fonte