Très souvent, je devrais effectuer l'ensemble des étapes nécessitant plusieurs touches. Pour la même session, ces étapes peuvent être enregistrées dans une macro de clavier.
Un exemple consiste à enregistrer une opération de recherche / remplacement fréquemment exécutée en tant que macro de clavier. Mais cette macro est perdue quand je quitte emacs.
Comment enregistrer ma macro de clavier fréquemment utilisée en tant que fonction Lisp?
Par souci de simplicité, je souhaite sauvegarder l’action consistant à remplacer "abc" par "def" afin que je puisse le réutiliser lors de sessions emacs.
la source
insert-kbd-macro
. C'est la réponse à la question (et le reste de cette réponse fournit une aide supplémentaire).insert-kbd-macro
dépendez de si vous l'avez nommé en utilisantkmacro-name-last-macro
(comme dans la réponse ci-dessus) ouname-last-kbd-macro
.name-last-kbd-macro
format (comme mentionné par @phils ci-dessus), vous vous retrouvez avec une chaîne, pas une fonction.fset
Transférer cela en symbole vous permet d’exécuter la macro avec Mx, mais ne l’ appelez pas depuis lisp (commandp
->t
,functionp
->nil
). Étrangement, même l'appeler viacall-interactively
ne fonctionne pas (bien que vous puissiez l' utiliserexecute-kbd-macro
pour l'exécuter).elmacro a déjà été mentionné par @lunaryorn, mais en tant qu'auteur de ce paquet, j'ai pensé qu'il serait bien de donner un exemple.
Si vous enregistrez une macro comme ceci:
F3 C-e M-b M-u C-a C-n F4
Faire alors M-x elmacro-show-last-macro upcase-last-wordproduit un tampon avec:
la source
Le paquetage elmacro vous permet d’afficher la dernière macro enregistrée avec Emacs Lisp avec M-x elmacro-show-last-macro.
la source