Я пишу плагин для Emacs и столкнулся с проблемой. У меня есть команда, которая форматирует регион в соответствии с моими требованиями. Это perl, и он делает то, что я не хочу делать во время редактирования, например:
my $foo = "foo";
my $fooer = "fooer";
становится
my $foo = "foo";
my $fooer = "fooer";
Однако я я работаю в репозитории кода, полном кода, который я не писал и который я не хочу изменять.
Я написал команду, которая работает с регионом и работает точно так, как ожидалось, но я хочу добавить подключиться к before-save для форматирования блоков там. Есть ли способ получить области изменений, но игнорировать неизмененные области?
Я рассматривал возможность использования функции выделения-изменения, но с трудом нашел что-нибудь полезное. Я также думал о том, чтобы попытаться использовать вину git, но мне кажется, что на выполнение чего-то простого потребуется много времени.
Есть ли в Elisp функция для получения только измененных областей буфера? Я знаю, что ws-butler
форматирует только измененные строки, а Emacs wiki утверждает, что он «использует highlight-changes-mode
для отслеживания измененных строк», но я прочитал исходный код ws-butler
и был просто сбит с толку общей суммой. отсутствие упоминания highlight-changes-mode
.