我有两个类似的 C++ 函数,我想仔细比较一下。我正在使用 emacs 函数
ediff-regions-linewise
来逐行比较它们。许多行的空白都有微小的差异,例如:
//Line from first function
somefunc(i,j);
//Line from second function
somefunc(i, j);
Ediff-mode 足够智能,可以知道哪些部分仅因空格而不同:命令
##
名义上意味着“忽略空格”。它只会导致光标跳过不同的部分,但仍然突出显示仅因空格不同的行,就像突出显示在某些方面有所不同的行一样。
有没有办法让 ediff 模式停止突出显示仅因空格而不同的行?
我在 Emacs 配置中进行了以下设置,以在比较时禁用空格(请参阅
man diff
了解它的作用):
(setq ediff-diff-options "-w")
我有这两个设置,它们具有执行您所要求的操作的最终效果:
(setq-default ediff-ignore-similar-regions t)
(setq-default ediff-highlight-all-diffs nil)
虽然
(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 命令。
这并没有回答你的直接问题,反而让它变得毫无意义。