如何获得 ediff 模式来停止突出显示仅因空白而不同的行?

问题描述 投票:0回答:3

我有两个类似的 C++ 函数,我想仔细比较一下。我正在使用 emacs 函数

ediff-regions-linewise
来逐行比较它们。许多行的空白都有微小的差异,例如:

//Line from first function
somefunc(i,j);
//Line from second function
somefunc(i, j);

Ediff-mode 足够智能,可以知道哪些部分仅因空格而不同:命令

##
名义上意味着“忽略空格”。它只会导致光标跳过不同的部分,但仍然突出显示仅因空格不同的行,就像突出显示在某些方面有所不同的行一样。

有没有办法让 ediff 模式停止突出显示仅因空格而不同的行?

emacs whitespace emacs-ediff
3个回答
6
投票

我在 Emacs 配置中进行了以下设置,以在比较时禁用空格(请参阅

man diff
了解它的作用):

(setq ediff-diff-options "-w")

1
投票

我有这两个设置,它们具有执行您所要求的操作的最终效果:

(setq-default ediff-ignore-similar-regions t)
(setq-default ediff-highlight-all-diffs nil)

1
投票

虽然

(setq ediff-diff-options "-w")
可能会击中要害,但其他日子可能会隐藏错误。

ediff
菜单建议使用##切换空白差异。

启用空白无知移动命令 (n / p) 会跳过仅存在空白差异的块。

Emacs 具有通过不同面孔突出显示非空白差异的命令(

C-c C-b
M-x diff-refine-hunk
)。它使用与不同情况相同的颜色覆盖:

diff-removed-face
diff-added-face
diff-indicator-added-face
diff-indicator-removed-face

要使差异可见,请使用以下内容:

(set-face-foreground 'diff-refine-added "DarkGreen")
(set-face-foreground 'diff-refine-removed "DarkRed")
(set-face-background 'diff-refine-changed "LightBlue1")

还可以尝试 ediff 控制缓冲区中的 h 命令。

这并没有回答你的直接问题,反而让它变得毫无意义。

© www.soinside.com 2019 - 2024. All rights reserved.