Perlモードのカラー表示についてNo.18762
よしみつ さん 05/02/01 17:51
 
Perlモードで表示中に
    m#/usr/local/bin#;
と個所があると最初の「#」以降がコメントとして表示されます。

また
    /"([^"]*)"/; #コメント
では、最初の「"」と「"」の間と、3つ目の「"」以降が文字列として表示されます。

上記については気持ち悪いながらも我慢すればいいのですが、
    while(<>) {
        if(/"([^"]*)"/) {
            print $1;
        }
    }   #←対応する括弧なし
の場合、括弧の対応がずれてきて少々困ったことになります。

これはどうにかなるものでしょうか?

[ ]
RE:18762 Perlモードのカラー表示についてNo.18763
よしみつ さん 05/02/01 17:53
 
OS:Windows 2000 Pro
秀丸:Ver4.14
です。

[ ]
RE:18762 Perlモードのカラー表示についてNo.18764
Iranoan さん 05/02/01 19:07
 
 よしみつさん今日は、Iranoan です。
 念の為お断りしておくと、開発者とは何の関わりも無い単なる一ユーザです。
>     m#/usr/local/bin#;
> と個所があると最初の「#」以降がコメントとして表示されます。
<以下略>

 おそらく
http://hidemaruo.dip.jp:81/hidesoft/hidesoft_2/x11701.html#11707
と同じことだと思いますが、Perl の文法が柔軟故に対応がなかなか難しいそ
うです。
 ご参考までに。

[ ]
RE:18764 Perlモードのカラー表示についてNo.18771
よしみつ さん 05/02/02 16:13
 
予想はしてましたが難しそうですね。

次のような方法ではどうでしょうか?
・正規表現の区切り文字は「/」限定
・「/〜/」や「/〜/〜/」は文字列扱い
・文字列中に他の文字列開始文字やコメント開始文字が出現しても無視

乱暴でよければ
(^|[ \t(])m? につづく /〜/
(^|[ \t(])(s|tr|y) につづく /〜/〜/
を文字列扱いでもいいと思います。
#少なくとも私にはこれで十分


以下、蛇足。
・正しく認識してくれる文字列
"str#ing";
'str#ing';

・パターンとして認識してほしい文字列
/str#ing/;
/"str"ing"/;
split(/#/);
s/#foo/#bar/;

・誤認識もしかたない文字列(秀丸いじめ)
$i+/60/;  #パターン(マッチすると1加算)
$i./60/;  #パターン(.は文字列結合)
$m/60/24;  #除算(mは変数名)
2./60/24;  #除算(.は小数点)
time()/60/24; #除算
$i++/60/24; #除算

[ ]
RE:18771 Perlモードのカラー表示についてNo.18773
秀丸担当 さん 05/02/02 17:18
 

>次のような方法ではどうでしょうか?

提案ありがとうございます。
Perlの文法は複雑で、単純に「/」を正規表現にするだけと言っても、除算と区
別しなくてはいけないので、難しいのではないかと思います。
問題がある場合、「#」または「"」を判断しないようにするオプションがあると
いいと思いますが、どうでしょう。

[ ]
RE:18773 Perlモードのカラー表示についてNo.18775
IKKI さん 05/02/03 01:11
 
IKKI です。横から失礼します。

Perl のカラーリングは何度か話題になっていますが、改善は難しいですね。
中途半端に実装すると余計に不満が出そうですし…。なので、

> 問題がある場合、「#」または「"」を判断しないようにするオプションがあると
> いいと思いますが、どうでしょう。

こういう後ろ向きな対策(失礼)に私は賛成します。

以前お話しした↓の件と合わせて実装をご検討いただければと思います。
http://www.maruo.co.jp/turukame/3/x05386_.html

[ ]
RE:18775 Perlモードのカラー表示についてNo.18779
秀丸担当 さん 05/02/03 15:47
 

>以前お話しした↓の件と合わせて実装をご検討いただければと思います。
>http://www.maruo.co.jp/turukame/3/x05386_.html

検討したいと思います。

[ ]