我在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-change "LightBlue1")
同时在 ediff 控制缓冲区中尝试 h 命令。
这并不能回答您的直接问题,而是使其毫无意义。