2010-08-19 35 views
9

我正在使用emacs模式查看工具,並且想要使用ediff查看差異...問題在於審閱工具只產生差異而不是新舊文件。我想將舊文件放入緩衝區並應用diff而不是複製文件,調用diff作爲子進程並將其加載到單獨的緩衝區中。elisp中是否有一個將補丁應用於緩衝區的函數?

這樣做可以不用自己寫,有人知道嗎?

回答

8

ediff-補丁緩衝器可以ediff模式被用來補丁緩衝器

+0

不錯的提示,但是這會創建一個修補緩衝區,並在其名稱後面加上「_patched」。我認爲你必須在那之後手動複製內容。 – Arne 2013-08-06 11:46:32

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

1

還有M-x epatch,對於含有補丁(Gnus的郵件例如)緩衝劑詢問,然後詢問要修補的文件/目錄。非常便利。

相關問題