Elisp находит измененные области буфера - PullRequest
1 голос
/ 05 августа 2020

Я пишу плагин для 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.

...