カラー表示に汎用モードをNo.05386
IKKI さん 04/05/27 00:35
 
IKKI です。こんばんは。
http://www.maruo.co.jp/hidesoft/2/x17251_.html?a=5#17263 に関連して…

[カラー表示にするモード] に、特定の言語に強く依存しない汎用的なものを加えて
いただきたいです。
モードが用意されていない言語に別のモードを流用するとき、各言語特有の処理が邪
魔になるからです。

たとえば、 "#" がコメント開始記号となるモードは現在2つありますが、
Perl は「$hoge'fuga」のシングルクオートが文字定数の開始にならない、
UNIX シェルスクリプトは「$#」のシャープがコメントの開始にならない、
といった例外処理があります。
そのため、これらのモードを他の言語のカラー表示に流用すると不都合が生じます。

"#" をコメント開始記号とする言語は多数あり、そのすべてにモードを用意して
いただくのは現実的でありません。 "//" や "!" についても同様です。そこで…

 ■案1
 現行の Perl や C/C++ モードから言語依存の処理を省いたモードを用意する。

 ■案2
 汎用モードを用意する。汎用モードはプロパティで

  ・コメント開始記号1   //
  ・コメント終了記号1   改行
  ・コメント開始記号2   /*
  ・コメント終了記号2   */
  ・文字定数デリミタ1   "
  ・文字定数デリミタ2   '

 を指定できる。(右記は例。正規表現でなく単なる文字列で十分)

…といった改善策を検討していただきたいと思います。
よろしくお願いいたします。

[ ]
RE:05386 カラー表示に汎用モードをNo.05388
tarox さん 04/05/27 09:11
 
ついでに便乗しちゃいますが、
perl等を含め、UNIX系スクリプトでは、
``も、文字列リテラルになりますが(標準出力でSystemコマンドとして実行)、
対応されてないようです。

あと、perlやrubyなどでは、""内の変数展開という機能があり、
""内で変数をおくと処理側で自動的に展開してくれるんですが、
カラー表示の優先順位が、強調1〜4が文字列より低いので、
変数を強調1〜4のどれかにしているかぎり、
""内は、問答無用で文字列とみなされてしまう、
という不都合が実はあります。
「特に強調」を利用する、という手もありますが、
変数ごときに「特に強調」はちょっと割に合わんなあというのが正直なところです。
(というか、個人的にはすでに「特に強調」は埋まってたりもします)

で、内部処理でコメントに関しては正規表現一発で表現してたりするんでしょうか?
でしたら、それを利用して、強調4あたりにしちゃうという手もあるんですが。

[ ]
RE:05386 カラー表示に汎用モードをNo.05392
秀丸担当 さん 04/05/27 12:59
 

>[カラー表示にするモード] に、特定の言語に強く依存しない汎用的なものを加えて
>いただきたいです。
>モードが用意されていない言語に別のモードを流用するとき、各言語特有の処理が邪
>魔になるからです。

案2のように、汎用モードを作ってプロパティで変えられるようにするのはいい
と思います。
ただし複数行のコメントを複数作るのは難しいので、複数行のコメントを1つだ
けになると思います。
V4.10はそろそろ安定させようと考えているので、将来的なネタとして検討した
いと思います。

[ ]
RE:05388 カラー表示に汎用モードをNo.05393
秀丸担当 さん 04/05/27 13:02
 

>で、内部処理でコメントに関しては正規表現一発で表現してたりするんでしょうか?
>でしたら、それを利用して、強調4あたりにしちゃうという手もあるんですが。

一行のコメントであれば、正規表現で強調表示としてカラー化することができま
すが、複数行の場合はできません。
IKKIさんの言われているような感じで汎用のを作るとすれば、ある程度解決でき
るかもしれません。

[ ]
RE:05393 カラー表示に汎用モードをNo.05397
tarox さん 04/05/27 17:26
 
>
>>で、内部処理でコメントに関しては正規表現一発で表現してたりするんでしょうか?
>>でしたら、それを利用して、強調4あたりにしちゃうという手もあるんですが。
>

すみません、ポカをしました。
聞きたかったのは、コメントじゃなくて文字列リテラルでした。

[ ]
RE:05397 カラー表示に汎用モードをNo.05403
アルビレオ さん 04/05/27 21:50
 
秀丸ユーザーのアルビレオです。

>聞きたかったのは、コメントじゃなくて文字列リテラルでした。

文字列リテラルは引用符のエスケープやエスケープ文字のエスケープなども考慮
する必要があるのでけっこう複雑です。

文字列内の変数を認識するためには"..."と'...'の違いを区別しなければならな
かったりとさらにややこしいです。
「文字列リテラル1の中でだけで適用される強調表示ルール」といったものが必
要で、実際のシェルやPerlなどの構文解析機構に近いものになりそうです。

便乗としてかかれていますが、IKKIさんの提案は最も単純な規則だけでもユー
ザーが定義できないか、というものなので方向性としては正反対といってもいい
くらいです。
だからといって提案自体に反対するわけではありませんが、なかなか大変だと思
います。

[ ]
RE:05403 カラー表示に汎用モードをNo.05405
tarox さん 04/05/28 02:07
 
>文字列リテラルは引用符のエスケープやエスケープ文字のエスケープなども考慮
>する必要があるのでけっこう複雑です。
>
>文字列内の変数を認識するためには"..."と'...'の違いを区別しなければならな
>かったりとさらにややこしいです。
>「文字列リテラル1の中でだけで適用される強調表示ルール」といったものが必
>要で、実際のシェルやPerlなどの構文解析機構に近いものになりそうです。
>
>便乗としてかかれていますが、IKKIさんの提案は最も単純な規則だけでもユー
>ザーが定義できないか、というものなので方向性としては正反対といってもいい
>くらいです。

あ、私の書き方がまずかったのか誤解されてますが、
私としては、内部処理として文字列内の変数を認識することは求めてません。

実のところ、単純に文字列カラー指定に、変数指定用強調カラーを
上書きすれば実現できちゃうので、現行の内部的な文字列リテラルの定義内容を変更
する必要はないと考えてます。

結局、本質的には、カラー優先順位変更や、強調種類増加の問題だったりします。
ただ、以前この件は、結構厄介な問題だと聞いているので、
対症療法として、現在の文字列判定が正規表現だけで表せるなら、
それを強調4で使って、変数を強調1〜3のどれかに割り当てればいいかな、と考えて、
現在の文字列判定の方式を聞いたわけです。

文字列リテラルにせよ、コメントにせよ、
正規表現リテラルを有するスクリプトでの完全対応には
スクリプトパーサ並みの解析が必要になるのは目に見えてるので、
そこまでのことはさすがに求める気はありません。

[ ]
RE:05405 カラー表示に汎用モードをNo.05406
tarox さん 04/05/28 02:25
 
>対症療法として、現在の文字列判定が正規表現だけで表せるなら、
>それを強調4で使って、変数を強調1〜3のどれかに割り当てればいいかな、と考えて、

ちがーう!
どうもウカツですみません。
""文字列相等の表現を強調3に割り当てて、
強調4に変数表現を割り当てないと意味ないですね。

[ ]
RE:05405 カラー表示に汎用モードをNo.05412
アルビレオ さん 04/05/28 12:00
 
アルビレオです。

>対症療法として、現在の文字列判定が正規表現だけで表せるなら、

これが \ によるエスケープなどがあるので難しいんですよね。
できなくもなさそうなので試行錯誤した結果、以下のパターンなら何とかなりそ
うです。

("([^"]|\\"|\\\\)*("|$))

[ ]
RE:05392 カラー表示に汎用モードをNo.05415
IKKI さん 04/05/28 16:53
 
IKKI です。

> 案2のように、汎用モードを作ってプロパティで変えられるようにするのはいい
> と思います。

ありがとうございます。

> ただし複数行のコメントを複数作るのは難しいので、複数行のコメントを1つだ
> けになると思います。

十分でしょう。たとえば PHP の場合は…

 カラー表示にするモード:
  ユーザー設定

 プロパティ:
  コメント1       //
  コメント2       #
  複数行コメント開始  /*
  複数行コメント終了  */
  文字列デリミタ1    "
  文字列デリミタ2    '

…こんな感じで。さらに

  文字列デリミタ3    `
  文字列デリミタ4    /

があれば、 tarox さんのおっしゃるようなバッククオート記法や
スラッシュ区切りによる正規表現リテラルも文字定数とすることができ、
今まで何件かあった要望も同時に実現できますね。

# 正規表現リテラルに関しては割り算との区別が問題になりますが、秀丸側では
 そこまで考慮せず、変な結果になってもユーザーの自己責任ということで。

> V4.10はそろそろ安定させようと考えているので、将来的なネタとして検討した
> いと思います。

v4.11 あたりでの実現を期待しています。よろしくお願いいたします。

[ ]
RE:05415 カラー表示に汎用モードをNo.05417
tarox さん 04/05/28 18:10
 
>十分でしょう。たとえば PHP の場合は…
>
> カラー表示にするモード:
>  ユーザー設定
>
> プロパティ:
>  コメント1       //
>  コメント2       #
>  複数行コメント開始  /*
>  複数行コメント終了  */
>  文字列デリミタ1    "
>  文字列デリミタ2    '
>
>…こんな感じで。さらに
>
>  文字列デリミタ3    `
>  文字列デリミタ4    /
>
>があれば、 tarox さんのおっしゃるようなバッククオート記法や
>スラッシュ区切りによる正規表現リテラルも文字定数とすることができ、

これなら、問題ないですね。
ただ、正規表現リテラルはここには含めなくてもいいかと思います。
正規表現リテラルがあっても、かなり気休めっぽい気がするので。
正規表現内に"やら'やら#やらが入ることはあるので。

[ ]
RE:05412 カラー表示に汎用モードをNo.05418
tarox さん 04/05/28 18:20
 
文字リテラル正規表現、ありがとうございます。

>("([^"]|\\"|\\\\)*("|$))

なるほど。ただ、最後の部分が("|$)なのはなぜですか?
単純に"([^"]|\\"|\\\\)*"でいけてそうなんですが。

[ ]
RE:05392 カラー表示に汎用モードをNo.05419
tarox さん 04/05/28 18:21
 
>
>>[カラー表示にするモード] に、特定の言語に強く依存しない汎用的なものを加えて
>>いただきたいです。
>>モードが用意されていない言語に別のモードを流用するとき、各言語特有の処理が邪
>>魔になるからです。
>
>案2のように、汎用モードを作ってプロパティで変えられるようにするのはいい
>と思います。
>ただし複数行のコメントを複数作るのは難しいので、複数行のコメントを1つだ
>けになると思います。

もうひとつ可能なら、カラー表示で、コメントと文字列リテラルの
ON/OFFを各々独立に付け加えるわけにいかないでしょうか?
今回、上記対症療法をしようとして、文字列リテラルだけOFFに
できないことにはたと気づいたもので。

あるいは強調の数を増やしていただければ何とでもなるんですけどね。

予約語→強調1、""→強調2、変数→強調3、''→強調4で埋まってるので、
もうひとつ強調があれば暫定的に#コメントを正規表現であらわすこともできて、
カラーモードなしにするという手もあるので。

[ ]
RE:05412 カラー表示に汎用モードをNo.05420
秀丸担当 さん 04/05/28 18:29
 

>これが \ によるエスケープなどがあるので難しいんですよね。
>できなくもなさそうなので試行錯誤した結果、以下のパターンなら何とかなりそ
>うです。
>
>("([^"]|\\"|\\\\)*("|$))

正規表現で文字列の部分を判定するには、エスケープがややこしいことになって
きますが、アルビレオさんのこの方法でできているようですようです。
ありがとうございます。

[ ]
RE:05418 カラー表示に汎用モードをNo.05425
アルビレオ さん 04/05/28 22:55
 
アルビレオです。

>なるほど。ただ、最後の部分が("|$)なのはなぜですか?
>単純に"([^"]|\\"|\\\\)*"でいけてそうなんですが。

なくても問題ないんですが、秀丸の色付けがそうなっているので合わせてみまし
た。
こうしておけば引用符の対応が正しくないと行末まで色付けされるので見落とし
が少なくなります。

[ ]
RE:05419 カラー表示に汎用モードをNo.05426
アルビレオ さん 04/05/28 23:21
 
アルビレオです。

>もうひとつ可能なら、カラー表示で、コメントと文字列リテラルの
>ON/OFFを各々独立に付け加えるわけにいかないでしょうか?
>今回、上記対症療法をしようとして、文字列リテラルだけOFFに
>できないことにはたと気づいたもので。

単純にOFFにしてしまうと、「文字列リテラル内のコメント開始記号」や「コメ
ント内の引用符」に反応してしまってあまりよろしくありません。

・コメントをOFFにするとダメな例
/* It's comment strat mark. */ char c = '#';

・文字定数をOFFにするとダメな例
char *a = "//の後ろはコメント", b = "ここはコメントじゃないのに…";

これを回避するには判定自体はそのままで、OFFにしたいものは通常の文字と同
じカラー設定にするという方法を取った方がいいでしょう。

同様にNo.05412で私が書いた正規表現も、こういった場合に対応できないという
問題があります。
さらに/*〜*/のような複数行コメントの問題もあるので、正規表現では秀丸に組
み込まれたものと同等の判定は無理だと思います。

[ ]
RE:05426 カラー表示に汎用モードをNo.05427
tarox さん 04/05/29 19:01
 
>アルビレオです。
>
>>もうひとつ可能なら、カラー表示で、コメントと文字列リテラルの
>>ON/OFFを各々独立に付け加えるわけにいかないでしょうか?
>>今回、上記対症療法をしようとして、文字列リテラルだけOFFに
>>できないことにはたと気づいたもので。
>
>単純にOFFにしてしまうと、「文字列リテラル内のコメント開始記号」や「コメ
>ント内の引用符」に反応してしまってあまりよろしくありません。
>

すみません、また、私の言葉が足りなかったようですが、
内部判定のON/OFFではなく、
カラー表示設定でのON/OFFのはなしです。

[ ]
RE:05427 カラー表示に汎用モードをNo.05428
アルビレオ さん 04/05/29 22:01
 
アルビレオです。

>内部判定のON/OFFではなく、
>カラー表示設定でのON/OFFのはなしです。

いや、カラー表示設定のチェックボックスは内部判定をON/OFFするものだと思い
ます。
表示に反映しないのなら判定自体を省いた方が高速になりますから。
だからコメントと文字定数は個別にON/OFFできないのです。

単に(判定はそのままで)コメントに色付けをしたくないなら、コメントの指定色
を通常の文字と同じにすればいいだけです。実際、デフォルト設定では文字定数
は通常文字と同じ色で区別できなくなっていますし。

[ ]
RE:05428 カラー表示に汎用モードをNo.05433
tarox さん 04/05/29 22:52
 
>単に(判定はそのままで)コメントに色付けをしたくないなら、コメントの指定色
>を通常の文字と同じにすればいいだけです。実際、デフォルト設定では文字定数
>は通常文字と同じ色で区別できなくなっていますし。

OFFにしたいのはコメントじゃなくて文字列です。
逆にコメントだけを生かしたいんです。
今現在の私のPerl設定を言うと、
強調1:予約語その1
強調2:""
強調3:変数($xxxとか)
強調4:''、``
となっています。
(ちなみに特に強調1,2は関数とエスケープ文字に使ってます)
さらにそれより文字列、コメントの優先順位が上になっていますから、
折角、強調2と4で設定しても文字列設定がそれを上書きされてしまうので、
そのままでは全く意味を成しません。
現状では、もとからモードなしにするより他にない状況です。
Perl設定があるのに使えないという、妙なことになります。

[ ]
RE:05433 カラー表示に汎用モードをNo.05434
tarox さん 04/05/29 23:11
 
追加すると、
上の方にも書きましたが、もう一つ強調があれば、#を先頭とするコメントを
正規表現で記述してカラー設定できるので、モードなしにしちゃっても問題なしにな
ります。

ただ、IKKIさんの提案による汎用モードがあれば、
文字列定数として、''と``だけ定義すれば、
一応問題は解決します。

よく考えると、そもそもIKKIさんの提案された汎用モードの実装は、
原則文字定数とコメントを独立で扱えないと難しいんじゃないかとも
思うのですが。

[ ]
RE:05433 カラー表示に汎用モードをNo.05436
アルビレオ さん 04/05/30 01:38
 
アルビレオです。

>OFFにしたいのはコメントじゃなくて文字列です。
>逆にコメントだけを生かしたいんです。

まあそのへんはどっちでもやることに大差はありません。
適当に置き換えて読んでください。(^^;

>さらにそれより文字列、コメントの優先順位が上になっていますから、
>折角、強調2と4で設定しても文字列設定がそれを上書きされてしまうので、
>そのままでは全く意味を成しません。
>現状では、もとからモードなしにするより他にない状況です。
>Perl設定があるのに使えないという、妙なことになります。

変数は「特に強調」を使えばいいだけではないでしょうか?
コメント内の変数名も色付けされちゃいますが。

>よく考えると、そもそもIKKIさんの提案された汎用モードの実装は、
>原則文字定数とコメントを独立で扱えないと難しいんじゃないかとも
>思うのですが。

そんなことはありません。
コメント内の引用符や、文字定数内のコメント開始記号に反応しないようにする
ためには、やはり同時に処理する必要があります。
文字定数内の#以降がコメント色になってしまうなら、少なくとも私にとっては
使い物になりません。

[ ]
RE:05436 カラー表示に汎用モードをNo.05438
tarox さん 04/05/30 11:22
 

>変数は「特に強調」を使えばいいだけではないでしょうか?

特に強調は関数のために使用しているのでだめです。
Cと違って、関数一覧が使えないので強調表示の一覧を使わざるを得ないので。
それに、""と''を区別しようとがんばってるのに、

>コメント内の変数名も色付けされちゃいますが。

これじゃ、何の意味もないんですが。

>文字定数内の#以降がコメント色になってしまうなら、少なくとも私にとっては
>使い物になりません。

これを言っちゃうと、

正規表現を多用するPerlじゃ現状のコメントは使い物にならない、

といってるのに等しいんですが。
私の場合は、この辺はやむなしと目をつぶってますが。
(文字列内で#を使う機会より、#を正規表現内で用いて、処理したい場面の方が実は
圧倒的に多いので。)

[ ]
RE:05438 カラー表示に汎用モードをNo.05443
アルビレオ さん 04/05/30 17:27
 
アルビレオです。

>特に強調は関数のために使用しているのでだめです。
>Cと違って、関数一覧が使えないので強調表示の一覧を使わざるを得ないので。

特に強調1は関数、特に強調2は変数じゃだめですか?
たぶん2種類の特に強調を使う必要があってだめ、なんだろうとは思いますが。

>>文字定数内の#以降がコメント色になってしまうなら、少なくとも私にとっては
>>使い物になりません。
>
>これを言っちゃうと、
>
>正規表現を多用するPerlじゃ現状のコメントは使い物にならない、

私はほとんどそう思っています。コメントというより正規表現文字列の判定が、
ですが。
s/.../.../による置換のように、セパレータは任意に指定できるわセパレータ3
つで一組になってるわで、構文解析をせずに単純なルールを適用するのは無理な
例がありますから。

>私の場合は、この辺はやむなしと目をつぶってますが。
>(文字列内で#を使う機会より、#を正規表現内で用いて、処理したい場面の方が実は
>圧倒的に多いので。)

なら文字定数の色付けにも目をつぶって、前に書いたように強調表示で
("([^"]|\\"|\\\\)*("|$))
を適用した方がいいでしょう。
少なくとも要望が実現するまでは、これが一番妥当な対応だと思います。

内部の判定方法を知っているわけではありませんが、たぶん文字定数とコメント
の判定は一体化されているので、個別にON/OFFできるようにするにはそのための
判定アルゴリズムを別に用意しなければいけないと思います。

秀丸担当さんがこのツリーのコメント内容を見てそういう機能をつけてくれる可
能性もありますが、どうせ妥協した色付けしかできないならIKKIさんの提案した
「任意のセパレータ文字で色付けできるモード」を優先した方が喜ぶ人は多いか
もしれないという気がします。
私としては文字定数とコメントの色付けは連動してた方がいいと思いますが、
ユーザーから見れば設定できる/できないだけの問題なのでこれ以上の反対はし
ません。

[ ]
RE:05443 カラー表示に汎用モードをNo.05445
tarox さん 04/05/30 19:04
 
>なら文字定数の色付けにも目をつぶって、前に書いたように強調表示で
>("([^"]|\\"|\\\\)*("|$))
>を適用した方がいいでしょう。

なんか伝わってない気がするんですが。

あらためて現状を書きますと、
"([^"]|\\"|\\\\)*"を強調2としてカラー設定
変数を強調3としてカラー設定、
'([^']|\\'|\\\\)*'と`([^`]|\\`|\\\\)*`を強調4としてカラー設定しております。

これは""文字定数内で変数を変数として表示できるようにするための措置で、かつ、
''や``では、変数として表示しないための工夫です。

しかし、このままだと、文字定数の方が上書きになるので、
カラーモード設定を「なし」にしてます。

結果的にコメントは認識されず、表示上も通常の文章と同じ状態になってます。

あと、
>私はほとんどそう思っています。コメントというより正規表現文字列の判定が、
>ですが。

事実上、現状のコメントが使えない、ということになりますよね。
現実に正規表現で#を使っていて問題が生じてるわけですから。

[ ]
RE:05445 カラー表示に汎用モードをNo.05446
アルビレオ さん 04/05/30 23:14
 
アルビレオです。

>>なら文字定数の色付けにも目をつぶって、前に書いたように強調表示で
>>("([^"]|\\"|\\\\)*("|$))
>>を適用した方がいいでしょう。
>
>なんか伝わってない気がするんですが。

伝わっていないというより、「こういう場合に困る」というのはいちいちお互い
に指摘しあわないと、どこかで見落としがありそうですね。

>"([^"]|\\"|\\\\)*"を強調2としてカラー設定
>変数を強調3としてカラー設定、
>'([^']|\\'|\\\\)*'と`([^`]|\\`|\\\\)*`を強調4としてカラー設定しております。
>
>しかし、このままだと、文字定数の方が上書きになるので、
>カラーモード設定を「なし」にしてます。
>
>結果的にコメントは認識されず、表示上も通常の文章と同じ状態になってます。

コメントも強調表示で対応する案を考えてみました。
((?<=^[^"'`#]*))#.*
引用符のペアを識別するのは大変なので、引用符より後ろにある#は色付けしま
せん。不完全ですが、実用上はこれだけでも役に立つことも多いと思います。
より完璧にするなら
(?<=("([^"]|\\"|\\\\)*"|'([^']|\\'|\\\\)*'|`([^`]|\\`|\\\\)*`|[^"'`#])*)#.*
となります。

強調表示の種類が足りなくなりますが、'...'と`...`内では変数を強調する必要
はないので、変数と同じ強調3にして、コメントを強調4にしてはどうでしょうか。

s/.../.../ とか y/.../.../ は必ずスラッシュを使うわけでもないですが、一
応スラッシュしか使わないと仮定すれば
(s|y|tr)/([^/]|\\/|\\\\)*/([^/]|\\/|\\\\)*/[ig]*
m/([^/]|\\/|\\\\)*/
でいけると思います。
でもコメントの判定まで対応するのは、算術演算子の / との区別が難しいので
ちょっと無理かも。

>>私はほとんどそう思っています。コメントというより正規表現文字列の判定が、
>>ですが。
>
>事実上、現状のコメントが使えない、ということになりますよね。
>現実に正規表現で#を使っていて問題が生じてるわけですから。

個人的な感想としてはそういうことです。
幸い私はPerlのソースを編集/閲覧することはめったにないのであまり気にしな
いであきらめてますが、もし私がPerlを多用するなら色付けしない方が混乱は少
ないのでPerlモードは使わないと思います。

[ ]
RE:05446 カラー表示に汎用モードをNo.05449
秀丸担当 さん 04/05/31 15:18
 

話題がごちゃごちゃしてしまっていますが、文字定数とコメントのON/OFF切り替
えを別々にすることは内部処理的に難しいです。
文字定数を普通の色と同じ色にして、特に強調を使うなどをして対応していただ
くことになります。

文字定数の上にもカラー表示できるためにも、特に強調が用意されています。
それが、特に強調は既に使っているからダメということになると、本末転倒にな
ってしまいます。
文字定数の上にカラー表示させたいものを特に強調にし、文字定数の下でもいい
ものを、強調1〜4にするのがいいと思います。

強調1〜4と特に強調1〜2では足りないという点はまた別の話として要望として検
討させていただくことになります。
増やすのは、以前から他の方より要望がありますが、現状ではやる予定はありま
せん。

[ ]
RE:05449 カラー表示に汎用モードをNo.05476
tarox さん 04/06/02 18:13
 
>文字定数の上にカラー表示させたいものを特に強調にし、

結果的に、特に強調2を無理やり空けてコメントとして使うことでしのぎました。

最終的には、
強調1:予約語1
強調2:文字定数("")正規表現
強調3:変数
強調4:文字定数(''および``)正規表現
特に強調1:予約語2
特に強調2:コメント正規表現
という風に落ち着きました。

もしIKKIさん提案の汎用モードができたなら、
文字定数を''および``だけ定義して#コメントとすれば、
強調4と特に強調2があきますので、
当面大丈夫ですね。

[ ]