Ticket #40243

行フィルタの対象となる行が、移動ブロック扱いになる

Open Date: 2020-03-10 09:46 Last Update: 2020-03-12 08:01

Reporter:
(Anonymous)
Owner:
(None)
Type:
Status:
Open
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
1

Details

2.16.6-jp-2
行フィルタ「(test)+」を設定

「行フィルタで除外されるはずの行」が移動ブロックに隣接している場合に、
行フィルタの対象となる行が移動ブロックの一部として扱われるケースが発生します。

左右両方のペインで「行フィルタの対象となる行の前後が空行どうし」でも、条件が成立するようです。

【ファイル1】
111
222
333
444
aaa testtest bbb
xx

【ファイル2】
aaa testtest bbb
xx
111
222
333
444

Ticket History (3/5 Histories)

2020-03-10 09:46 Updated by: None
  • New Ticket "行フィルタの対象となる行が、移動ブロック扱いになる" created
2020-03-10 21:29 Updated by: sdottaka
Comment

ご連絡ありがとうございます。 こちらで比較すると添付画像のようになります。

左側の「aaa testtest bbb」と右の「aaa testtest bbb」は同じ内容であるため、移動行として扱われてもよいと思いますが、そうすべきではないということでしょうか?

2020-03-11 14:05 Updated by: None
Comment

Reply To sdottaka

ご連絡ありがとうございます。
こちらで比較すると添付画像のようになります。


当方で実行した場合も、添付していただいた画像のような結果となります。

左側の「aaa testtest bbb」と右の「aaa testtest bbb」は同じ内容であるため、移動行として扱われてもよいと思いますが、そうすべきではないということでしょうか?


移動ブロックの内容が「行フィルタ対象行/移動行」の場合は、まとめて移動ブロック扱いでもよいような気がしますが、
「行フィルタ対象行/空行」どうしの組合せでも移動ブロック扱いになるので、空行無視・空白無視を指定していても同一ファイルとみなされません。
「行フィルタ対象行」の前後が内容のある行か改行のみかで、「行フィルタ対象行」を移動ブロックに含めるかどうかを変更するのも不自然なので、行フィルタ対象行は移動ブロックから常に除外、のほうが整合性がとれるかと思います。

↓下記の組合せで、行フィルタ対象行の直後の改行を削除すると、同一ファイル扱いになります。

・空行無視、空白無視
・行フィルタ「(test)+」を設定

【ファイル1】
一致行1
testtesttest

一致行2
一致行3
一致行4
一致行5

【ファイル2】
一致行1
一致行2
一致行3
一致行4
testtesttest

一致行5

======================================

試行中に気がついたのですが、

①差異が「行フィルタ対象行」のみだと同一ファイル扱い
②差異が「空行」のみだと同一ファイル扱い
③差異が「行フィルタ対象行/空行」だと異なるファイルとして扱われる

という挙動になります。
空行を無視する設定のときは③も同一ファイルと見なすべきかと思います。

2020-03-12 08:01 Updated by: None
Comment

ご説明ありがとうございます。 移動ブロックかどうかはあまり関係なく、行フィルタがうまく機能していないということですね。

最初の例は、差異ブロックが1行ではなく、複数行(aaa testtest bbb と xx)の場合、その差異ブロックに対して行フィルタは機能しないという問題で 長年WinMergeやおそらく元となっている GNU diff も抱えている問題だとおもいます。

同様2つ目の空行の例も、差異ブロックが1行ではなく、複数行となっているためうまくいっていないのだと思います。

すぐに修正できるかわかりませんが、見てみます。

Attachment File List

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login