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

时间:2010-08-19 18:15:31

标签: emacs diff elisp patch

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

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

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:7)

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

尝试

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

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

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

查看documentation for diff-mode

答案 2 :(得分:1)

还有M-x epatch请求包含补丁的缓冲区(例如Gnus邮件),然后要求修补文件/目录。非常便利。