Grepのバグのような仕様を以下のように変更したいと思います。
通常利用時の表示内容はあまり変わることはないと思いますが、エラーや、表示制限を超えた場合などの振る舞いが変わります。
仕様変更に問題や疑問などあれば、レスをお願いします。
■結果出力が該当部分の場合のヒット後の次の検索開始位置
変更前:
前のヒット開始位置+1
変更後:
検索にヒットした文字列の次の文字
(もちろん正規表現により長さ0にマッチした場合は除く)
■結果出力が該当部分の場合の表示文字列の内容
変更前:
単語単位または通常検索のとき、ヒットした文字列の内容ではなく、検索キーを表示していた
変更後:
実際にヒットしたファイル側の文字列を表示するようにします。
■上2つの例
検索文字列「aaa」
ファイルの内容「aAaAAA」
大文字小文字を区別しない
該当部分を表示
変更前:
・( 1,1 ): aaa
・( 1,2 ): aaa
・( 1,3 ): aaa
・( 1,4 ): aaa
変更後:
・( 1,1 ): aAa
・( 1,4 ): AAA
■文字コードセットを自動選択にし、ファイルが読み込みエラーになった場合の振る舞い
*ファイル検索モード
変更前:
以下のようなエラーを表示し、見つかったファイル数にカウントされませんでした。
例:文字コードの判別処理でエラー [C:\MyData\Test.txt]
変更後:
文字コードを表示する部分が、(DetectError)になります。
ファイル自体は存在しているので、カウントには含まれるようにします。
例:C:\MyData\Test.txt [(DetectError)]
*通常検索
変更前:
ファイル検索モードと同じエラーを返します。
例:文字コードの判別処理でエラー [C:\MyData\Test.txt]
変更後:
ファイルが開けなかったエラーメッセージを返します。
これは、文字コードセットを固定(SJISなど)で指定し、ファイルが開けなかった場合のエラーメッセージと同じ表示です。
例:file open error [C:\MyData\Test.txt]
■ヒットした文字列の表示文字数制限の変更
該当行の場合は、行頭からの表示されるバイト数、
該当部分の場合は、実際にヒットした文字列のうちの表示されるバイト数です。
変更前:
結果表示が該当行の場合、1000バイトまで
結果表示が該当部分の場合、2000バイトまで
変更後:
結果出力形式がノーマル表示の場合、2000バイトまで
結果出力形式がファイル毎の場合、2500バイトまで
すなわち、依存するオプションが変わります。
■ファイル検索モードの場合のオプションの出力
変更前:
未使用のオプションも結果に出力していました。
変更後:
ファイル検索モードでは効力のないオプションは非表示にします。
以上です。