Есть ли в elisp функция для применения патча к буферу? - PullRequest
9 голосов
/ 19 августа 2010

Я работаю в режиме emacs для инструмента просмотра и хочу использовать ediff для просмотра различий ... проблема в том, что инструмент обзора выдает только различие, а не старые и новые файлы. Я хотел бы поместить старый файл в буфер и применить diff, а не копировать файл, вызывая diff как подпроцесс и загружая его в отдельный буфер.

Можно ли это сделать, не написав это сам, кто-нибудь знает?

Ответы [ 3 ]

8 голосов
/ 19 августа 2010

ediff-patch-buffer может использоваться для исправления буфера в режиме ediff-*

7 голосов
/ 19 августа 2010

В зависимости от вашего рабочего процесса это может или не может применяться.

Попробуйте

M-x diff-mode

Из которого вы можете выполнять такие команды, как:

C-c C-a         diff-apply-hunk
C-c C-b         diff-refine-hunk
C-c C-c         diff-goto-source
C-c C-d         diff-unified->context
C-c C-e         diff-ediff-patch
* 1008самый интуитивный поток для меня это 'diff-ediff-patch.

Когда вы смотрите на патч, запустите Cc Ce , введите имя файла для патча (скажем, file.to.patch).Emacs установит вам два буфера file.to.patch.orig и file.to.patch, содержащие исходный файл и исправленную версию.Затем вы используете Ediff, как вы бы регулярно.В конце потока у вас есть исправленная версия в нужном вам имени файла.

Ознакомьтесь с документацией для diff-mode .

1 голос
/ 28 декабря 2012

Существует также M-x epatch, который запрашивает буфер, содержащий исправление (например, Gnus mail), а затем запрашивает файл / каталог для исправления.Очень кстати.

...