Ich möchte das Verhalten fill-paragraph
in bestimmten Modi ändern (zB LaTeX-mode
bereitgestellt von AucTeX
).
Ich könnte den Schlüssel einfach neu binden M-q
, aber ich verwende auch evil-mode
dessen Implementierung von evil-fill-and-move
Verwendungen fill-region
. Im Idealfall überschreibt meine benutzerdefinierte Füllfunktion sowohl die Funktionen fill-paragraph
(damit es funktioniert M-q
) als auch fill-region
(damit es funktioniert evil
).
Angenommen, ich habe ein eigenständiges Programm format
, das LaTeX-Code über stdin
formatierten Code aufnimmt und diesen ausgibt stdout
. Wie würde ich die beiden oben genannten Füllfunktionen überschreiben, um sie zu verwenden format
?
(Hinweis: Dies ist ähnlich wie vim
‚s - formatprg
Option.)
evil-fill-and-move
ist gq
im normalen Modus des Bösen an die Tastenfolge gebunden . Das erneute Binden M-q
sollte diese Tastenkombination nicht beeinflussen. In gewissem Sinne sind meine Fragen wirklich zwei Fragen: 1) Wie ersetze ich die beiden Funktionen? 2) Wie benutze ich ein externes Programm? Der Grund für 2) ist, dass ich bereits eine externe Nicht-Elisp-Lösung habe.
(add-hook 'LaTeX-mode-hook (lambda () local-set-key (kbd "M-q") 'your-fill-function))
wo your-fill-function
ist Ihre individuelle elisp defun. Dadurch wird diese Tastenkombination nur in Auctex festgelegt. Sie könnten wahrscheinlich shell-command-on-region
mit dem REPLACE-Argument definieren your-fill-function
.
M-q
das erneute Binden überhauptevil-fill-and-move
? Ich benutze das Böse nicht, deshalb bin ich neugierig. Wenn die Region trotzdem aktiv istfill-paragraph
, wirdfill-region
angerufen. So können Sie beraten oder durchfill-region
Ihre Funktion ersetzen .