Я хотел бы изменить поведение fill-paragraph
в определенных режимах (например, LaTeX-mode
предоставленных AucTeX
).
Я мог бы просто привязать ключ M-q
, но я также использую evil-mode
чью реализацию evil-fill-and-move
использует fill-region
. В идеале, моя пользовательская функция заполнения должна переопределять обе функции fill-paragraph
(чтобы она работала M-q
) и fill-region
(чтобы она работала evil
).
Предполагая, что у меня есть отдельная программа, format
которая принимает код LaTeX через stdin
и выводит форматированный код stdout
, как мне переопределить две вышеупомянутые функции заполнения для использования format
?
(Примечание: это похоже на vim
's formatprg
вариант.)
evil-fill-and-move
связан с последовательностью клавиш gq
в нормальном режиме зла. Перепривязка M-q
не должна влиять на эту привязку клавиш. В каком-то смысле мой вопрос на самом деле состоит из двух вопросов: 1) Как заменить две функции? 2) Как использовать внешнюю программу? Причина 2) в том, что у меня уже есть внешнее решение, отличное от Elisp.
(add-hook 'LaTeX-mode-hook (lambda () local-set-key (kbd "M-q") 'your-fill-function))
где your-fill-function
ваш заказ Elisp DEFUN. Это установит этот ключевой комбо только в Auctex. Возможно, вы могли бы использовать shell-command-on-region
с аргументом REPLACE для определения your-fill-function
.
M-q
влияетevil-fill-and-move
на так или иначе? Я не использую зло, поэтому мне любопытно. Если регион активен,fill-paragraph
звонкиfill-region
все равно. Таким образом, вы могли бы посоветовать или заменитьfill-region
своей функцией.