Com muita frequência, eu precisaria executar o conjunto de etapas que exigem vários pressionamentos de tecla. Para a mesma sessão, essas etapas podem ser gravadas em uma macro do teclado.
Um exemplo é salvar uma operação de pesquisa / substituição executada com frequência como uma macro do teclado. Mas essa macro é perdida quando eu saio do emacs.
Como posso salvar minha macro de teclado usada com frequência como uma função Lisp?
Por uma questão de simplicidade, quero salvar a ação de substituir "abc" por "def" como uma função para poder reutilizá-lo nas sessões do emacs.
fonte
insert-kbd-macro
. Essa é a resposta para a pergunta (e o restante desta resposta fornece ajuda adicional).insert-kbd-macro
depende se o nomeou usandokmacro-name-last-macro
(como na resposta acima) ouname-last-kbd-macro
.name-last-kbd-macro
formato (conforme mencionado por @phils acima), terá uma string, não uma função.fset
Ao somar isso a um símbolo, você pode executar a macro usando Mx, mas não a chama de lisp (commandp
->t
,functionp
->nil
). Estranhamente, mesmo chamá-lo viacall-interactively
não funciona (embora você possa usáexecute-kbd-macro
-lo).O elmacro já foi mencionado pelo @lunaryorn, mas como autor deste pacote, achei que seria bom dar um exemplo.
Se você gravar uma macro como esta:
F3 C-e M-b M-u C-a C-n F4
Então doing M-x elmacro-show-last-macro upcase-last-wordproduz um buffer com:
fonte
O pacote elmacro permite visualizar a última macro gravada com o Emacs Lisp adequado M-x elmacro-show-last-macro.
fonte