如何让 ediff 模式停止突出显示仅因空格而不同的行



我在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-bM-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 命令。

这并不能回答您的直接问题,而是使其毫无意义。

相关内容

  • 没有找到相关文章

最新更新