Я бы хотел частично автоматизировать создание записей ChangeLog в стиле GNU при работе с исходным кодом в управлении версиями. add-changelog-entry-other-window
работает с одним файлом за раз, и вы должны посетить файл, чтобы использовать его.
Вместо этого я хотел бы иметь команду, которая будет выводить diff -u -p
(или иметь интеграцию с режимами VC, чтобы он мог обрабатывать svn diff
и т. Д.) И создавать все элементы скелета одновременно .
Например, если svn status
показывает
D file1.c
M file2.c
A file3.c
команда создаст
2009-09-05 My Name <my.email>
* file1.c: Removed.
* file2.c: WRITE YOUR CHANGES HERE
* file3.c: New.
Еще лучше, если бы он мог анализировать измененные файлы на некоторых языках до такой степени, чтобы он мог предложить:
* file2.c (new_function): New function.
(deleted_function): Removed.
(changed_function): WRITE YOUR CHANGES HERE
Я нашел эту функцию в руководстве по Emacs , но я не понимаю, как я мог бы применить ее здесь.
Есть предложения? Спасибо.
РЕДАКТИРОВАТЬ: один ответ предложил vc-update-change-log . К сожалению, он поддерживает только CVS и создает записи ChangeLog путем запроса уже зафиксированных журналов VC. Таким образом, даже если бы он поддерживал svn и другие, было бы невозможно зафиксировать изменения и журнал изменений в одном и том же коммите.
EDIT2: очевидно, add-changelog-entry-other-window (C-x 4 a) работает не только из посещенного файла, но и из разностного блока, включающего этот файл. ( Источник ) Это почти то, что я ищу. Это вместе с циклом elisp для перебора всех блоков должно решить эту проблему.