如何在Emacs中突出显示CVS更改?

时间:2009-02-25 21:39:07

标签: emacs highlight cvs

我正在使用带有cvs的emacs并启用了cvs模式。我想逐行突出显示CVS最新版本的变化。我已经在intellij中看到了这一点,其中添加了行的绿色指示和修改行的另一个指示以及删除行的第三个符号。

是否有针对emacs的cvs突出显示模式以显示最新版cvs的更改?我不是在寻找一个可以在新缓冲区中打开的cvs diff类型的功能,而是在我当前的缓冲区中指示哪些行已被修改。

在下图中左侧有一个蓝色矩形,Intellij称之为“装订线”,表示代码与源代码控制中的代码不同。

intellij example
(来源:jetbrains.com

我正在寻找emacs中的类似功能。

4 个答案:

答案 0 :(得分:4)

您现在可以查看diff-hl,它会在左侧窗口边缘提供突出显示。

到目前为止,我只在一些现代DVCS上测试过它,但如果您仍在使用CVS,但它不能正常工作,请提出问题。

答案 1 :(得分:2)

这是另一个不能做你想要的答案,但可能有用。

C-x v g 

运行命令vc-annotate

那会弹出一个新的缓冲区(我知道,你不想要一个),但它会标记所有标记的行,当他们触摸它们时。并且,奖金,它们用热图进行颜色编码(红色是最新的,蓝色是最少的),以便于识别最近的变化。

当然vc-annotate的内置版本没有适当地滚动缓冲区,所以你需要这个建议:

(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)

答案 2 :(得分:1)

您想要vc-diff,默认情况下位于C-x v =。这为您提供了临时缓冲区中的原始diff输出。缓冲区使用diff-mode,它有一些巧妙的技巧......例如,您可以使用C-c C-e将diff作为补丁应用于另一个文件。在差异缓冲区中使用describe-mode(默认情况下为C-h m)来查找其他技巧。

答案 3 :(得分:0)

也许你想要Ediff,它似乎完全符合你的要求。