7

慎重に比較したいC++の2つの類似した関数があります。私はemacs関数ediff-regions-linewiseを使用してそれらを行ごとに比較しています。線の多くは、空白に小さな違いがあります。次に例を示します。

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

Ediffモードは、どのセクションが空白だけで異なるかを知るのに十分賢いです。コマンドは、##名目上、「空白を無視する」ことを意味します。カーソルが異なるセクションをスキップするだけですが、重要な点で異なる行を強調表示するのと同じように、空白だけが異なる行を強調表示します。

空白のためにのみ異なる行の強調表示を停止するためにediffモードを取得する方法はありますか?

4

3 に答える 3

6

私のEmacs設定には、差分時に空白を無効にする次の設定があります(機能についてはを参照man diffしてください)。

(setq ediff-diff-options "-w")
于 2012-11-20T09:29:15.670 に答える
1

私はあなたが求めていることをするという正味の効果を持つこれらの2つの設定を持っています:

(setq-default ediff-ignore-similar-regions t)
(setq-default ediff-highlight-all-diffs nil)
于 2012-11-20T00:45:56.540 に答える
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-change "LightBlue1")

またh、ediff制御バッファでコマンドを試してください。

これはあなたの直接の質問に答えませんが、それを無意味にします。

于 2017-05-09T21:53:42.443 に答える