要望:エスケープシーケンスでの着色対応No.22788
DarkMark さん 07/03/27 16:36
 
このフォーラムに投稿するのは久しぶりなのですが、よろしくお願いいたします。

最近、エスケープシーケンスで着色されたテキスト(Linux系のアプリケーションの
ログ)を扱う機会が多くなったのですが、秀丸で確認すると、当然エスケープシーケ
ンス部分はただの変な文字として表示されます。("EC"とちゃんと表示されているの
で秀丸の仕様としてはただしいのですが)

そこで、エスケープシーケンス部分を消して表示したり、ESCを解釈して、そのあと
の色などを変えることはできないでしょうか。

秀termではエスケープシーケンスに対応していて、色を変える処理があると考えてい
るのですが、秀丸にはないのでしょうか。

秀丸のファイルタイプ別の表示とカラーの設定のでは、ESCすべての設定をするのは
数が足りないのと、強調表示が行単位でしかできないので、それを使ってもエスケー
プシーケンスとしての正しい表示ができません。

何か代替案があればそれでも良いのですが。

[ ]
RE:22788 要望:エスケープシーケンスでのNo.22789
Iranoan さん 07/03/27 17:46
 
 DarkMark さん今日は、Iranoan です。
 念の為お断りしておくと、開発者とは何の関わりも無い単なる一ユーザです。
> そこで、エスケープシーケンス部分を消して表示したり、ESCを解釈して、そのあと
> の色などを変えることはできないでしょうか。
 強調表示で正規表現を使えば良いと思います。
 強調表示を指定するときに、
・文字列      :\x1B
・単語の検索  :OFF
・正規表現    :ON
として指定してみてください。

 ただカーソル行にあるエスケープ・シーケンス部分まで消すのは無理そうです。

[ ]
RE:22788 要望:エスケープシーケンスでのNo.22790
秀丸担当 さん 07/03/27 17:48
 

>そこで、エスケープシーケンス部分を消して表示したり、ESCを解釈して、そのあと
>の色などを変えることはできないでしょうか。

エスケープシーケンスとはDOSの頃あったような…忘れてしまいましたが、改め
て調べてみると、ターミナルや標準出力用といった感じで、テキストエディタで
表示するには無理があるように思います。
色を変えるだけでなくカーソル位置の制御などもあるようです。
また、ESC部分を消して表示するとなると、テキストエディタとは呼べなくなっ
てしまいそうです。

強調表示が行単位で問題というところは、V6.00以降の複数行コメントのユー
ザー定義である程度解決できるようになりました。

複数行コメントのユーザー定義で、
開始文字列 \x1b\[31[;m]
終了文字列 (?=\x1b)
という感じで正規表現で書くと色だけについては無理矢理できないかと思ったり
しましたが、少々無理がありそうです。
強調表示に透明色も使えばアンダーラインの組み合わせも無理矢理なんとかでき
るかも。
でもやはり強調表示の数が足らないですが。

[ ]
RE:22788 要望:エスケープシーケンスでのNo.22791
アルビレオ さん 07/03/27 18:46
 
ユーザーのアルビレオです。

>最近、エスケープシーケンスで着色されたテキスト(Linux系のアプリケーションの
>ログ)を扱う機会が多くなったのですが、秀丸で確認すると、当然エスケープシーケ
>ンス部分はただの変な文字として表示されます。("EC"とちゃんと表示されているの
>で秀丸の仕様としてはただしいのですが)

>秀termではエスケープシーケンスに対応していて、色を変える処理があると考えてい
>るのですが、秀丸にはないのでしょうか。

UNIXの世界でもエスケープシーケンスを解釈できるのはあくまで「テキストビュ
アー」であって、「テキストエディタ」ではなかったはずです。
編集を行おうとすると、エスケープシーケンスをどう扱うかで困ったことになっ
てしまいますから。
だからもしも秀丸エディタでやるとしても閲覧モード限定といった感じになりそ
うですが、強調表示機能と競合してしまうのでそれもなかなか難しそうですね。

[ ]
RE:22790 要望:エスケープシーケンスでのNo.22793
DarkMark さん 07/03/27 19:19
 
秀丸担当様
Iranoanさん
アルビレオさん
回答ありがとうございます。

正規表現は使ってやっているのですが、最初の投稿にも書いたように、強調表示の色
が足りません。

エスケープシーケンス部分を隠すと、確かにテキストビューアー的な使い方になって
しまいますが、下記のモードや設定と同じと考えることはできないでしょうか。
(ビープ音は考えておりません。あくまでエスケープシーケンスによる強調表示がで
きればよいなと考えています。)


・バイナリーモード(開くときにエスケープを解釈するしないの設定)
・改行の設定(\n\rはそれぞれを表示されないようにすることもできますよね)

要望が少ないということであれば、現実的な解として、強調表示の数を増やしていた
だければ、エスケープシーケンスでの着色用の設定ファイルを作れるのですが。

あくまで、個人的な要望ですので、後回しで構いません(^.^)
お手すきのときに考えていただければありがたいです。

[ ]
RE:22793 要望:エスケープシーケンスでのNo.22794
DarkMark さん 07/03/27 20:47
 
ちなみに私の方法を参考に書いておきます。

1.色つけ
複数行コメントにて、
開始文字列:\x1b\[[0-1];3X[;m]
(Xの部分は、それぞれの色で定義を追加)
エスケープの後の0or1は基本的に色を明るくするか
暗くするかになっているだけなので、強調表示の
定義を減らすために、そこを無視しています。

終了文字列:\x1b\[0m

2.エスケープシーケンスを非表示にする
文字列: \x1b\[[0-1]([;][0-9][0-9])*[m]
これに、バックグラウンドと同じ文字色を割り当てると、
エスケープシーケンス部分は消えて見えます。

これでかなり見やすくはなるのですが、アライメントが
エスケープシーケンス分ずれるので、完璧ではないのです。



[ ]
RE:22791 要望:エスケープシーケンスでのNo.22795
DarkMark さん 07/03/27 21:46
 

>編集を行おうとすると、エスケープシーケンスをどう扱うかで困ったことになっ
>てしまいますから。

折りたたみの表示と同じように、好きな時にエスケープシーケンスも表示できるよう
にしていて、普段は隠すとかでも良いかもしれません。

[ ]
RE:22794 要望:エスケープシーケンスでのNo.22797
秀丸担当 さん 07/03/28 12:21
 

>エスケープシーケンス部分を隠すと、確かにテキストビューアー的な使い方になって
>しまいますが、下記のモードや設定と同じと考えることはできないでしょうか。
>(ビープ音は考えておりません。あくまでエスケープシーケンスによる強調表示がで
>きればよいなと考えています。)

行の中の一部分を見えなくするというのは、仕組みが大幅に変わってしまうので
難しいです。
V6.00ではマークした行を、行全体に色を付けることもできるようになりました
が、一時的な色付きのマークを任意の位置に付けれたらというネタもありました
が、いまのところやる予定はないです。
もしそれができるとしたら、マークを付けてからエスケープを削除するというマ
クロを作ることでなんとかできたかもしれないですが。

[ ]