我正在开发一个用于评论工具的emacs模式,并希望使用ediff来查看差异...问题是评论工具只产生差异,而不是旧文件和新文件。我想把旧文件放在一个缓冲区并应用diff而不是复制文件,调用diff作为子进程并将其加载到一个单独的缓冲区中。
这样做可以不自己写,有人知道吗?
答案 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.orig
和file.to.patch
。然后你可以像往常一样使用ediff。在流程结束时,您将获得所需文件名的修补版本。
答案 2 :(得分:1)
还有M-x epatch
请求包含补丁的缓冲区(例如Gnus邮件),然后要求修补文件/目录。非常便利。