2009-02-25 43 views
6

我在cvs上使用emacs並啓用了cvs模式。我希望逐行突出顯示CVS最新版本的變化。我已經在intellij中看到了這樣做,其中有一條綠色指示線用於添加線,另一個指示線用於修改線條,第三個線條用於刪除線條。如何突出顯示Emacs中的CVS更改?

是否有一個CVS突出顯示模式emacs顯示從最新版本的CVS的變化?我不在尋找將在新緩衝區中打開的cvs diff類型功能,但會在我當前的緩衝區中指示哪些行已被修改。

在下圖中,Intellij調用「陰溝」表示代碼與源代碼控件中的代碼不同,左邊有一個藍色矩形。

intellij example http://www.jetbrains.com/idea/features/screenshots/60/actions.gif

我正在尋找在Emacs類似的功能。

+0

請s/cvs/vcs所以我們得到任何git/bzr/hg/svn的答案... – elmarco 2009-02-26 00:39:52

回答

0

也許你會喜歡Ediff,它看起來完全是你想要的。

+1

不完全是我在找什麼。我想要一個小模式,以便在編輯代碼時始終處於打開狀態。我還想直接與CVS進行比較,而無需獲取原始版本的第二本地副本。 – 2009-02-25 23:13:49

+0

IntelliJ如何處理這個問題?這似乎是你要求的是非常昂貴的... – dwc 2009-02-25 23:19:11

2

下面是另一個不符合你想要的答案,但可能有用。

C-x v g 

運行命令vc-annotate

這會彈出一個新的緩衝區(我知道,你不想要一個緩衝區),但它的所有行標記了誰在什麼時候觸摸它們。而且,獎金,他們用熱圖(紅色最近,藍色最少)顏色編碼,以便於識別最近的變化。

當然VC-註釋的內置版本不恰當地滾動緩衝區,所以你要這樣的建議:

(defadvice vc-annotate (around vc-annotate-and-scroll) 
    "scroll buffer to view current line in the annotated buffer" 
    (let ((pos (count-lines (point-min) (point)))) 
    ad-do-it 
    (let ((orig-window (selected-window)) 
      (window (other-window-for-scrolling))) 
     (select-window window) 
     (goto-line pos) 
     (select-window orig-window)))) 

(ad-activate 'vc-annotate) 
1

你想vc-diff,這是C-x v =默認。這給你一個臨時緩衝區的原始差異輸出。緩衝區使用diff模式,它有一些簡潔的技巧......例如,您可以使用C-c C-e將diff作爲補丁應用到另一個文件。在diff緩衝區中使用describe-mode(默認情況下爲C-h m)來查找其他技巧。

4

您現在可以查看diff-hl,它在左窗口邊緣提供突出顯示。

到目前爲止,我只對幾個現代DVCSes進行了測試,但如果您仍在使用CVS,但它不能正常工作,請提出問題。