Je voudrais changer le comportement de fill-paragraph
dans certains modes (par exemple LaTeX-mode
fourni par AucTeX
).
Je pourrais simplement relier la clé M-q
, mais j'utilise aussi evil-mode
la mise en œuvre de qui evil-fill-and-move
utilise fill-region
. Idéalement, ma fonction de remplissage personnalisé pour remplacer à la fois les fonctions fill-paragraph
(donc ça marche avec M-q
) et fill-region
(donc ça marche avec evil
).
En supposant que j'ai un programme autonome format
qui accepte le code LaTeX via stdin
et génère le code formaté stdout
, comment pourrais-je remplacer les deux fonctions de remplissage ci-dessus à utiliser format
?
(Remarque: ceci est similaire à vim
l' formatprg
option de.)
M-q
affecte- t-elleevil-fill-and-move
de toute façon? Je n'utilise pas le mal donc je suis curieux. Si la région est active,fill-paragraph
appelezfill-region
quand même. Vous pourriez donc conseiller ou remplacerfill-region
par votre fonction.evil-fill-and-move
est lié à la séquence de touchesgq
en mode normal du mal. La nouvelle liaisonM-q
ne doit pas affecter cette liaison de touches. Dans un certain sens, ma question est vraiment deux questions: 1) Comment remplacer les deux fonctions? 2) Comment utiliser un programme externe? La raison de 2) est que j'ai déjà une solution externe non Elisp.(add-hook 'LaTeX-mode-hook (lambda () local-set-key (kbd "M-q") 'your-fill-function))
où seyour-fill-function
trouve votre defun elisp personnalisé. Cela ne définira ce combo clé que dans Auctex. Vous pourriez probablement utilisershell-command-on-region
avec l'argument REPLACE pour définiryour-fill-function
.Réponses:
Il serait préférable d'avoir 2 fonctions, bien que l'une puisse être implémentée en fonction de l'autre. La raison étant qu'un paragraphe est une région implicite , donc la saisie dans les deux cas doit être différente
Afin de substituer des fonctions à d'autres, indépendamment de leur raccourci clavier, utilisez les raccourcis clavier de remappage:
la source