在elisp中是否有一个函数将补丁应用于缓冲区?

Hen*_*ryR 9 emacs diff patch elisp

我正在研究审阅工具的emacs模式,并希望使用ediff来查看差异...问题是审阅工具只产生差异,而不是旧文件和新文件.我想将旧文件放在缓冲区并应用diff而不是复制文件,调用diff作为子进程并将其加载到单独的缓冲区中.

这可以不自己写,有人知道吗?

Jür*_*zel 8

ediff-patch-buffer可用于在ediff-mode中修补缓冲区


Tre*_*son 7

根据您的工作流程,这可能适用也可能不适用.

尝试

M-x diff-mode
Run Code Online (Sandbox Code Playgroud)

您可以从中执行以下命令:

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
Run Code Online (Sandbox Code Playgroud)

对我来说最直观的流程是'diff-ediff-patch.

当您查看补丁程序时,请运行C-c C-e,输入要修补的文件名(例如file.to.patch).然后,Emacs会为您设置两个缓冲区file.to.patch.orig,file.to.patch包含原始文件和修补版本.然后你可以像往常一样使用ediff.在流程结束时,您将获得所需文件名的修补版本.

查看diff-mode文档.