如何在Emacs中显示更改的行?

如何在Emacs中显示更改的行?,emacs,line,highlight,Emacs,Line,Highlight,默认情况下,某些文本编辑器可以显示更改的行。但是在Emacs中,如何显示?次要模式突出显示更改模式显示文本更改 补充: 我为突出显示更改模式写了一些边缘支持代码 (eval-after-load "hilit-chg" '(progn (defvar highlight-fringe-mark 'filled-square "The fringe bitmap name marked at changed line. Should be selected from `

默认情况下,某些文本编辑器可以显示更改的行。但是在Emacs中,如何显示?

次要模式
突出显示更改模式
显示文本更改

补充: 我为突出显示更改模式写了一些边缘支持代码

(eval-after-load "hilit-chg"
  '(progn
     (defvar highlight-fringe-mark 'filled-square
       "The fringe bitmap name marked at changed line.
Should be selected from `fringe-bitmaps'.")

     (defadvice hilit-chg-make-ov (after hilit-chg-add-fringe activate)
       (mapc (lambda (ov)
           (if (overlay-get ov 'hilit-chg)
           (let ((fringe-anchor (make-string 1 ?x)))
             (put-text-property 0 1 'display
                    (list 'left-fringe highlight-fringe-mark)
                    fringe-anchor)
             (overlay-put ov 'before-string fringe-anchor))
         ))
         (overlays-at (ad-get-arg 1))))))

(来源:)

补充: 要在节省时间时删除突出显示,请尝试:

(add-hook 'after-save-hook
          (lambda ()
            (when highlight-changes-mode
              (save-restriction
                (widen)
                (highlight-changes-remove-highlight (point-min) (point-max))))))

我假设您对缓冲区和保存的文件之间的更改感兴趣。为此,我通常使用
diff buffer和file
,因为我不太经常需要它


我还使用
diff-hl
模式,该模式显示保存的文件与版本控制系统中最后一次提交相比的更改行。在梅尔帕有售

这是我的配置,它将指示器更改为“+”、“-”和“!”:

(setq diff-hl-fringe-bmp-function 'diff-hl-fringe-bmp-from-type)
(global-diff-hl-mode 1)


虽然你没有问过,但我还要提到,
vc
可以很容易地将版本控制下的文件与
C-xv=
(当前文件)或
C-xvd
(整个项目)区分开来。

我试过了。这和我预期的有点不同。最好在左边的边缘上显示更改标记。但它仍然有用。谢谢。我的帖子中添加了附带的支持代码。如果你愿意,请尝试一下。这是一段很棒的代码。这怎么不是标准?不可理解。。。但是,如何调整它,以便每次保存时删除条纹中的标记?从1.5.0版开始,您可以
(setq diff hl rigere bmp function'diff hl rigere bmp from type)
使用此类位图,或者使用自定义函数,如果您想使用其他位图,或者不同的选择逻辑。@Dmitry谢谢,这要简单得多。