Comecei a codificar um modo secundário para fornecer algumas combinações de teclas. Minha tentativa inicial teve um erro de digitação:
(define-minor-mode borked-mode
"A mode defined with a broken key binding"
nil nil
'(([b] . 'previous-line)))
Eu pretendia usar a b
chave e percebi imediatamente que deveria ter usado em "b"
vez de [b]
. Então, redefini o modo secundário:
(define-minor-mode borked-mode
"A mode defined with a broken key binding"
nil nil
'(("b" . 'previous-line)))
No entanto, isso não funcionou. Isso me desencadeou em todas as formas de vincular chaves (ou seja, (kbd ...), [...] etc.). Finalmente, percebi que simplesmente reavaliar o (define-minor-mode ...)
formulário não estava mudando nada, fiquei preso ao mapa de chaves original e quebrado. Tentei alterar o mapa de teclas diretamente via (define-key borked-mode-map ...)
e ainda não consegui carregar o mapa de teclas corrigido. Finalmente, reiniciei o Emacs e meu modo secundário foi carregado corretamente.
Minha pergunta é: como você atualiza uma definição de modo secundário à medida que a desenvolve? Existe alguma maneira de liberar uma definição quebrada ou você precisa reiniciar o emacs para limpar os bits quebrados?
defvar
não avaliará seu valor novamente depoisC-M-x
:) Você precisariadefparameter
ou um separadosetf
.