強調表示ファイルにおける縦棒数には制限No.07124
midville さん 12/10/01 10:46
 
 お世話になります。

 少し面倒な内容になりますが、実際に出会った例を基にしています。

 英文ファイル中の「London / Sheldon / Wimbledon / abandon / Don 以外の
英文字列における末尾の "don"」(例 attendon や vacadon 末尾の "don")を
検索するために以下の検索文字列を使用。

   "(?<!\<(Lon|Shel|Wimble|aban|))don(?!['a-z])";

 あるフォルダから上のような "don" を grep して、ヒットした "don" を強調
するために以下のようなマクロを使用。(あえて grep文で hilight パラメータ
を使わずに、自前の強調表示ファイルで強調しています。)
 
 $str = "(?<!\\<(Lon|Shel|Wimble|aban|))don(?!['a-z])";
 $fld = "C:\\〜〜〜\\〜〜〜";
 $kyouchou = "C:\\〜〜〜\\〜〜〜\\〜〜〜.hilight";
 grep $str, "*.*", $fld, regular, nocasesense, subdir, nohilight;
 loadhilight $kyouchou, 0, 1;
 endmacro;

 このときの強調表示ファイルの中身は以下の1行のみです。

25,(?<!\<(Lon|Shel|Wimble|aban|))don(?!['a-z])

    [25 = 1(強調 1) + 8(大文字/小文字を区別しない) + 16(正規表現)]

 ここまでは grep も強調表示も問題なく動きます。

 London / Sheldon ... などの除外する単語をだんだんふやしていき、検索
文字列および対応する強調表示ファイルの中身を以下のようにしたとき、
grep はできましたが、強調表示がされなくなりました。

 $str = "(?<!\\<(Abing|Armaged|Basil|Bin|Bran|Bur|Caly|Claren|Cleve|Con|Cory
|Croy|Eg|El|Espa|Farring|Gray|Gor|Had|Hal|Hamble|Hay|Hen|Hern|Hunting|Lan|La
ng|Lon|Long|Lyn|Mal|Par|Rear|Ron|San|Shel|Snow|Swin|Trog|Willing|Wimble|Wort
hing|Yea|aban|bour|cela|cor|guer|ten|))don(?!['a-z])";

25,(?<!\<(Abing|Armaged|Basil|Bin|Bran|Bur|Caly|Claren|Cleve|Con|Cory|Croy|E
g|El|Espa|Farring|Gray|Gor|Had|Hal|Hamble|Hay|Hen|Hern|Hunting|Lan|Lang|Lon|
Long|Lyn|Mal|Par|Rear|Ron|San|Shel|Snow|Swin|Trog|Willing|Wimble|Worthing|Ye
a|aban|bour|cela|cor|guer|ten|))don(?!['a-z])
   縦棒数:49

 強調表示ファイルの中で使用する縦棒の数が多すぎるせいではないかと推測し、
grep の検索文字列 $str はそのままにし、強調表示ファイル用の検索文字列に
おける(前方不一致定義内の)選択肢を1つずつ減らしていきながら、上記マクロを
実行していくと、以下の4つを除いた段階で強調表示がされるようになりました。

    "Abing|Armaged|Basil|Bin|"

 つまり、強調表示ファイルの中身を以下のようにすると強調表示されました。

25,(?<!\<(Bran|Bur|Caly|Claren|Cleve|Con|Cory|Croy|Eg|El|Espa|Farring|Gray|G
or|Had|Hal|Hamble|Hay|Hen|Hern|Hunting|Lan|Lang|Lon|Long|Lyn|Mal|Par|Rear|Ro
n|San|Shel|Snow|Swin|Trog|Willing|Wimble|Worthing|Yea|aban|bour|cela|cor|gue
r|ten|))don(?!['a-z])
   縦棒数:45

 この1例だけから考えると「縦棒の数が45個までなら強調表示ができるが、
それを超えるとできなくなる」ということになるかと思います。

 通常の検索と違って、強調表示ファイルの場合、縦棒の使用数に制限がある
のでしょうか?
 この件に関する参照箇所などありましたらご教示お願いします。

 使用環境:
   Windows 7 Home Premium (32bit)
   秀丸エディタ:Ver. 8.21 Beta 9

[ ]
RE:07124 強調表示ファイルにおける縦棒数No.07125
秀まるお2 さん 12/10/01 13:45
 
 強調表示がうまくいかない件ですが、調べてみたら、そもそも強調表示で指定
出来る文字列の長さが250バイト程度に制限されてまして、今回うまくいかない
ケースは、その制限のせいでダメってことのようです。

> 25,(?<!\<(Abing|Armaged|Basil|Bin|Bran|Bur|Caly|Claren|Cleve|Con|Cory|Croy|E
> g|El|Espa|Farring|Gray|Gor|Had|Hal|Hamble|Hay|Hen|Hern|Hunting|Lan|Lang|Lon|
> Long|Lyn|Mal|Par|Rear|Ron|San|Shel|Snow|Swin|Trog|Willing|Wimble|Worthing|Ye
> a|aban|bour|cela|cor|guer|ten|))don(?!['a-z])
>    縦棒数:49

 これでテストしたら、そもそも強調表示ファイルを読み込む処理の中でエラー
になってしまってて、この行全体が無視されてしまうようです。

 あと、強調表示の追加で上記文字列をコピペして貼り付けようとしても、
「guer|ten...」の所の「gue」までしか入りきりませんでした。

 ってことで、とりあえず現状はそういう仕様とお返事するしか無いです。

 今はまだV8.21の正式版を出そうと思ってる所ですが、せっかくなので、V8.22
からは、もっと長い文字列でも指定出来るように修正しようと思います。そのつ
もりで、しばらくお待ちきただきたいと思います。

[ ]
RE:07125 強調表示ファイルにおける縦棒数No.07126
midville さん 12/10/01 20:22
 
 迅速な対応、恐れ入ります。

> 強調表示がうまくいかない件ですが、調べてみたら、そもそも強調表示で指定
>出来る文字列の長さが250バイト程度に制限されてまして、今回うまくいかない
>ケースは、その制限のせいでダメってことのようです。
> ……
> ってことで、とりあえず現状はそういう仕様とお返事するしか無いです。

 了解しました。

> 今はまだV8.21の正式版を出そうと思ってる所ですが、せっかくなので、V8.22
>からは、もっと長い文字列でも指定出来るように修正しようと思います。そのつ
>もりで、しばらくお待ちきただきたいと思います。

 特に緊急を要するものではないので、V.22を待ちたいと思います。
 お手数をおかけしました。




[ ]
RE:07126 強調表示ファイルにおける縦棒数No.07145
秀まるお2 さん 12/10/16 18:51
 
 ちなみにこの件ですが、今日アップロードしたVer8.22β1の方で対応していま
す。

 もしよかったら動作確認お願いします。

 (β版なのでちょっと不安定な可能性はありますが)

[ ]