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.)
evil-fill-and-move
est lié à la séquence de touches gq
en mode normal du mal. La nouvelle liaison M-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ù se your-fill-function
trouve votre defun elisp personnalisé. Cela ne définira ce combo clé que dans Auctex. Vous pourriez probablement utiliser shell-command-on-region
avec l'argument REPLACE pour définir your-fill-function
.
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.