複数行コメントの行継続No.08617
IKKI さん 15/06/03 00:44
 
秀丸担当さん、こんばんは。

Q1. 複数行コメントのユーザー定義で、エスケープ文字を複数指定可能にできないで
しょうか。
「単一行コメントだが、行末に「\」または「,」がある場合は次の行へ続く」という
状況に対応したいです。
終了文字列を「(?<![\\,])\n」(正規表現)にしてみましたが、意図したようにはな
らないようです。
また、同じ条件でエスケープ文字だけが違う2件の複数行コメントを定義すると、一
番上にあるものだけが有効になるので、うまくないです。

Q2. 複数行コメントのユーザー定義で、終了文字列に「$」(正規表現)を指定して
も「行末まで」という意味にはならないようです。
「\n」を指定すると行末までになります。
ゼロ幅にヒットする正規表現は終了文字列に指定できないのでしょうか。

ご検討・ご確認のほどよろしくお願いいたします。

秀丸エディタ v8.54β5

[ ]
RE:08617 複数行コメントの行継続No.08618
秀丸担当 さん 15/06/03 11:45
 

>Q1. 複数行コメントのユーザー定義で、エスケープ文字を複数指定可能にできないで
>しょうか。

調べてみたところ、エスケープ文字の指定は現状で記憶するところが1つの文字
だけになっていて、レジストリの記憶形式とhilightファイルの形式を変更する
必要があって簡単ではなさそうでした。

終了文字列を「(?<![\\,])\n」とするのは、こちらで試してみた限りでは問題な
さそうです。どういう問題があるでしょうか。

>Q2. 複数行コメントのユーザー定義で、終了文字列に「$」(正規表現)を指定して
>も「行末まで」という意味にはならないようです。

確かにその通りでした。
改行も含めて文字列としていて、最後の改行+$ もマッチするものとみなしてお
かしかったです。
互換性上問題が無いか考えつつ、修正させていただきます。

[ ]
RE:08618 複数行コメントの行継続No.08619
IKKI さん 15/06/03 13:03
 
秀丸担当さん、こんにちは。

終了文字列を「(?<![\\,])\n」とすることで解決できました。
私が試したときは何か勘違いをしていたようです。すみません。
Q1 の要望は取り下げます。

>>Q2. 複数行コメントのユーザー定義で、終了文字列に「$」(正規表現)を指定して
>>も「行末まで」という意味にはならないようです。
>
>確かにその通りでした。
>改行も含めて文字列としていて、最後の改行+$ もマッチするものとみなしてお
>かしかったです。
>互換性上問題が無いか考えつつ、修正させていただきます。

こちらは、もし互換性上問題があるようだったら、そういう仕様だとヘルプに書いて
おくだけでもいいと思います。

よろしくお願いいたします。

[ ]
RE:08617 複数行コメントの行継続No.08620
IKKI さん 15/06/03 13:16
 
別件かもしれませんが、ついでにおたずねします。

https://dl.dropboxusercontent.com/u/861457/20150603-1.png
この状況で、「<b>Please add some inventory.</b>」の部分を HTML として強調表
示したいです。
そこで「HTML のカラー表示」にチェックを入れると、こうなります。
https://dl.dropboxusercontent.com/u/861457/20150603-2.png
どうやら強調表示自体が無効になってしまうようです。
「HTML のカラー表示」の使い方が間違っているでしょうか?

ご教示のほどよろしくお願いいたします。

秀丸エディタ v8.54β5

[ ]
RE:08620 複数行コメントの行継続No.08621
秀丸担当 さん 15/06/03 15:45
 

画像の通りの定義で、確かにそうなりました。
通常は開始文字列の次の文字から終了文字列の判断が始まっていました。
「HTMLのカラー表示」をONにしたときは開始される文字列そのものからHTMLのカ
ラー表示が処理され、終了文字列の判断もすぐに始まるようになっていました。
そのため、開始文字列と同じ場所で終了文字列が判断され、強調が終わっていま
した。
ソースを見る限りでは特別にそうしていて何らかの事情があるかもしれないので、
修正すべきか慎重に考えたいと思います。
少なくともヘルプに違いを記載します。

とりあえずの回避策として、終了文字列を
^(?!\1[ \t|'])
としておく方法で試してみたところはなんとかなりそうでした。

[ ]
RE:08621 複数行コメントの行継続No.08622
IKKI さん 15/06/03 23:26
 
秀丸担当さん、こんばんは。

ご教示ありがとうございます。ご提案の方法でとりあえず何とかなりました。
が、気持ち悪いっちゃあ気持ち悪いですね。どうしてそんな仕様になってるんだろう
…。

>ソースを見る限りでは特別にそうしていて何らかの事情があるかもしれない
リポジトリから過去のチケットを掘り返せたりしませんか?

もし事情が分かったら、教えてもらえるとうれしいです。

[ ]
RE:08622 複数行コメントの行継続No.08623
秀丸担当 さん 15/06/04 14:25
 

当時の修正を調べてみたところでは、HTMLの解析処理を色付けの先頭から始める
必要があって、そこで違いがありました。
HTMLがOFFの場合は、例えば開始文字列が「/*」として、これを決まった色で色
付けしてから、その次の文字から終端を探し始めます。
HTMLがONの場合は、例えば開始文字列が「<」であることも想定して、ゼロの位
置まで戻ってからHTMLの処理が始まります。
その処理と終了文字列を探す処理が一緒になっているため、そうなっていました。
色付けはするものの、終端はゼロ位置からは探さないようにすれば直ると思いま
す。
非常に入り組んでいる処理のため、よく考えてから修正しようと思います。

[ ]
RE:08623 複数行コメントの行継続No.08625
IKKI さん 15/06/09 17:50
 
お返事が遅くなりましたが、こちらの件もご教示ありがとうございました。
修正の方は慎重にご対応いただければと思います。

[ ]