コメント行No.17251
K.Y さん 04/05/26 13:24
 
!以降をコメント行として色を変更したいのですが、
文字列として" aaaa !!! " とある場合の!は無視したいのです。
どのような正規表現にすればよいのでしょうか?
よろしくお願いいたします。

[ ]
RE:17251 コメント行No.17252
秀まるお2 さん 04/05/26 16:25
 
 文字列の中を除外するような形での色つけは、正規表現ではうまく表現できな
いような気がします。

 何かのコンピュータ言語のカラー化をしたいということなら、それ用のモード
を秀丸側に追加する形でないと対応できないと思います。

[ ]
RE:17251 コメント行No.17253
ENCODINGSHIFTJIS さん 04/05/26 17:21
 
>!以降をコメント【行】??として色を変更したいのですが、
>文字列として" aaaa !!! " とある場合の!は無視したいのです。
>どのような正規表現にすればよいのでしょうか?

強調表示定義を作る前には検索でテストします。
検索語
![^"]*$
で(正規表現)検索し、反転の範囲が正しいか確認します。
!はとりあえず半角のみ

[ ]
RE:17253 コメント行No.17254
K.Y さん 04/05/26 17:47
 
>強調表示定義を作る前には検索でテストします。
>検索語
>![^"]*$
>で(正規表現)検索し、反転の範囲が正しいか確認します。
>!はとりあえず半角のみ

やってみたのですがコメント行に"を使用すると、コメント行と
認識してくれないようです。

! --- "OK" "NG" ---   ←コメント行だけどコメント行と判断しない

[ ]
RE:17252 コメント行No.17255
K.Y さん 04/05/26 17:49
 
> 文字列の中を除外するような形での色つけは、正規表現ではうまく表現できな
>いような気がします。
>
> 何かのコンピュータ言語のカラー化をしたいということなら、それ用のモード
>を秀丸側に追加する形でないと対応できないと思います。

言語といえば言語なのですが、特殊な産業装置のプログラム言語なので
他の人にお願いすることが出来ません。自分でやるしかないのですが
専用のモードは自分で作ることが出来るのですか?

[ ]
RE:17251 コメント行No.17256
K.Y さん 04/05/26 17:58
 
>!以降をコメント行として色を変更したいのですが、
>文字列として" aaaa !!! " とある場合の!は無視したいのです。
>どのような正規表現にすればよいのでしょうか?
>よろしくお願いいたします。

追加補足です。コメントとしての判定条件は
1)!以降をコメント行とみなす
2)ただし、!!で囲まれている場合は!!内だけがコメント
3)""内の文字列に!が含まれていても無視する

aaaa !bbbb! cccc " ddd!! " !eeeee! fffff !ggggg
この場合はbbbb,eeeee,gggggがコメントとなる。

無理でしょうかね?

[ ]
RE:17256 コメント行No.17257
Arimac さん 04/05/26 19:59
 
K.YさんがC言語を使えるのなら独自の正規表現DLLを作るとか・・・(^^;
0から作らなくてもHMJREを拡張するという手もあるし(^^;

[ ]
RE:17251 コメント行No.17259
IKKI さん 04/05/26 20:36
 
IKKI です。こんばんは。

> !以降をコメント行として色を変更したいのですが、
> 文字列として" aaaa !!! " とある場合の!は無視したいのです。

とりあえず、 [カラー表示にするモード] を Fortran90 にしてみては?

---------

コメントと文字定数の関係については以前にも似たような話がありました。
http://www.maruo.co.jp/hidesoft/2/x16439_.html
このスレッドで私は
 「優先順位の高い色の中ではそれより優先順位の低いパターンはヒットしない
 (たとえば「文字定数」の中では「強調4」のパターンはヒットしない)ように
 するのが良い」
という意見を述べました。この方法は今回の K.Y さんのケースに対しても有効な
気がしますが、検討に値しないものでしょうか?
それとも何らかの理由(描画速度の関係?)で困難なのでしょうか?
>秀まるおさん/秀丸担当さん

[ ]
RE:17255 コメント行No.17261
秀まるお2 さん 04/05/26 21:57
 
>専用のモードは自分で作ることが出来るのですか?

 専用のモードは自分では作られないです。

[ ]
RE:17257 コメント行No.17262
秀まるお2 さん 04/05/26 21:57
 
>K.YさんがC言語を使えるのなら独自の正規表現DLLを作るとか・・・(^^;
>0から作らなくてもHMJREを拡張するという手もあるし(^^;

 一応、作者としてコメントするならば、そのようなDLLを作ることは現実的じ
ゃ無いです。

 現状では対応不可ってことになりそうです。

[ ]
RE:17259 コメント行No.17263
秀まるお2 さん 04/05/26 21:57
 
> 「優先順位の高い色の中ではそれより優先順位の低いパターンはヒットしない
> (たとえば「文字定数」の中では「強調4」のパターンはヒットしない)ように
> するのが良い」
>という意見を述べました。この方法は今回の K.Y さんのケースに対しても有効な
>気がしますが、検討に値しないものでしょうか?

 詳しく検証してませんが、そういうルールだけではうまくカラー化できるかど
うか、やってみないと分からないような気がします。どっちにしても、複数行に
またがったコメント行のカラー化については、もっと高度な仕組みが無いと対応
できないです。

 僕としては、そのような汎用のルールを作るよりも、カラー化のモードを追加
する程度の修正の方がかなり楽です。あるいは、どうしてもということなら、カ
ラー化の計算部分をプラグイン的なDLLで組み込めるようにする方がいいような
気がします。(性能的にも)

 本当にやるかどうかは秀丸担当とも調節が必要なので、今すぐ「対応できま
す」とは言えませんけど。

[ ]
RE:17256 コメント行No.17264
アルビレオ さん 04/05/26 23:32
 
アルビレオです。

>1)!以降をコメント行とみなす
>2)ただし、!!で囲まれている場合は!!内だけがコメント
>3)""内の文字列に!が含まれていても無視する
>
>aaaa !bbbb! cccc " ddd!! " !eeeee! fffff !ggggg
>この場合はbbbb,eeeee,gggggがコメントとなる。
>
>無理でしょうかね?

正攻法では無理だと思います。で、代替手段を。

モードをC言語/Javaにして、!を'に置換すればほぼ同等の色付けになります。
(秀丸の文字定数の色付けが複数行にまたがれないのを逆手に取ってます)
ただし「コメント」ではなく「文字定数」として色付けされるので本当の文字定
数と区別がつきませんが、まったく色付けされなくなるよりは見やすいでしょう。

単純に置換すると元々あった'とごっちゃになってしまうので、識別のために使
われそうにない記号の組み合わせに置換するといいでしょう。

コメント記号を色付けモードに変更するマクロ
replaceallfast "!","%'%";

コメント記号を元に戻すマクロ
replaceallfast "%'%","!";

上のマクロは%'%ならプログラムソースとしても文字列としてもまず現れること
はないだろうという前提です。万が一ありえるなら%を他の記号にしてください。
いちいち置換するのは手間ですが、どうしても色付けしないと困るなら試してみ
てはどうでしょうか。

[ ]
RE:17263 コメント行No.17265
IKKI さん 04/05/26 23:48
 
IKKI です。早速のご回答ありがとうございました。

>  詳しく検証してませんが、そういうルールだけではうまくカラー化できるかど
> うか、やってみないと分からないような気がします。

現在の「優先順位の低い方から順に塗り重ねる」?仕様に依存して
アクロバティックな強調表示をしてる人は困るかもしれませんね。
他の皆さんのご意見も伺いつつ、検証する余地があると思います。

>  僕としては、そのような汎用のルールを作るよりも、カラー化のモードを追加
> する程度の修正の方がかなり楽です。

なるほど。
それでは関連してひとつ要望を上げさせていただきます。別便にて。

[ ]
RE:17262 コメント行No.17269
Arimac さん 04/05/27 09:17
 
正規表現を拡張するのは現実的ではないと思いますが、
正規表現が"\@"とかの特定の文字列の場合は
コメント強調用の独自処理に分岐するとかだったら
ちょっとプログラムの出来る人なら不可能ではないと思いますが(^^;

[ ]
RE:17256 コメント行No.17270
ENCODINGSHIFTJIS さん 04/05/27 09:23
 
>無理でしょうかね?
たぶん、短いのではできません。

 ! " ! " ! " ! " ! " ! " ! " ! " ! " ! " ! "
の内外を判定しないといけません。

例示のテキストの場合なら、その特徴を利用できるなら
ArimacのJRE32.DLL+BREGEXP.DLL の正規表現の動作環境設定で
 !.+?! | !.+?$
で、前後のspaceも含んでマッチはしますが


[ ]
RE:17251 コメント行No.17271
K.Y さん 04/05/27 09:45
 
皆さん、いろいろ回答ありがとうございます。
やはり、単純に正規表現だけで完璧に対応することは難しいようですね。
ある程度の制限付にして、一番影響の少なそうな方法を考えてみたいと思います。
どうもありがとうございました。

[ ]
RE:17270 コメント行No.17272
ENCODINGSHIFTJIS さん 04/05/27 09:59
 
カーソル位置がコメントの判定には
行頭までさかのぼって、の全文字列が必要ですから
カーソル前後の局所的パターンだけでは、わかりません。

強調表示でするなら、局所的パターンで判定できないか
特徴を「発見」するしかありません

[ ]
RE:17271 コメント行No.17808
ENCODINGSHIFTJIS さん 04/08/20 11:17
 
.*?
が使えるようになったので、「やや」近いのが作れます
文字列定数は優先度が高いので、コメント中でも強調されてしまいますが。
1.文字列定数の強調をする、モードを選択する
2.
!.*?!|![^!]+$
を強調表示(正規表現)する。

テストデータ
! --- "OK" "NG" ---   ←コメント行だけどコメント行と判断しない
aaaa !bbbb! cccc " ddd!!! " !eeeee! fffff !ggggg
aaaa !bbbb! cccc " ddd!! " !eeeee! fffff !ggggg
" aaaa !!! "
 ! " ! " ! " ! " ! " ! " ! " ! " ! " ! " ! "

[ ]