複数行コメントNo.09390
Iranoan さん 06/02/23 17:58
 
 秀丸担当さん今日は、Iranoan です。
 「複数行コメント」について、2 点気になったことがあります。
●「エスケープ文字」について
 「複数行コメント」で「単一行」とすると、「エスケープ文字」が設定でき
なくなりますが、これは設定可能のままの方が良いと思います。
 元々 C 言語などの文字列リテラル "〜" で \" を念頭に置かれているのだ
と思いますが、TeX のコメントにこれを応用しようとすると、不都合がでます。
TeX のコメントは、% から行の終端までですが、\% は % 自身で \ がエス
ケープ文字です。ですから \\%〜 は、\\ 以降やはりコメントです。
 TeX は既に用意されているので、これで使うことはないと思いますが、
ひょっとすると似た処理が必要な言語があるかもしれません。
●言語指定+ユーザ定義を可能に
 現在は、「ユーザ定義」を指定すると「言語指定」は無効になります。
「ユーザ定義」はあくまで「自動判定」「言語指定」の +α の扱いで、言語
特有の処理は無効にならない設定があった方が、便利だと思います。
 こちらの環境は、WindowsXP+IE6.0+秀丸 Ver.6.00β1 です。

[ ]
RE:09390 複数行コメントNo.09392
Iranoan さん 06/02/23 18:31
 
 秀丸担当さん今日は、Iranoan です。
 「複数行コメント」でもう一つ不都合なことが起き得る場合を見つけました。
TeX では、「$」と「$$」で挟まれた部分のどちらも数式を表します。しかし
/<HilightMulti>
/0019,00000002,00,5C,00000002,"$$",6DFF0002,"$$
/0019,00000002,00,5C,00000002,"$",FF000002,"$
で定義すると、「$$」で挟まれた部分は「スクリプト部分」の扱いになりません。

 それ以外に気になった事が 2 点あります。
 「複数行コメント」で「全削除」すると「強調表示文字列をすべて削除して
もいいですか?」となります。誤解を与え兼ねないと思います。
 更に、「全削除」のあと「言語指定」[OK] でダイアログ・ボックスを閉じ
ます。これで、「ユーザ定義」は全て削除されている事を期待します。しかし、
再び「複数行コメント」で「ユーザ定義」を見ると、削除したはずの定義が
残っています。本当に削除するとは、「全削除」のあと「言語指定」にせずに
[OK] を選択する必要があります。

[ ]
RE:09392 複数行コメントNo.09395
Iranoan さん 06/02/23 18:53
 
 秀丸担当さん今日は、Iranoan です。
 何度も済みません。
>  「複数行コメント」でもう一つ不都合なことが起き得る場合を見つけました。
> TeX では、「$」と「$$」で挟まれた部分のどちらも数式を表します。
 もう一つ不都合な場合がありました。
 TeX では、「\(」「\)」のペアと「\[」「\]」のペアで挟まれた部分のどち
らも数式を表します。ただ TeX でもっとも良く使われているマクロ LaTeX で
は「\\」もまた別のコマンドなので、「\」をエスケープする必要があります。
 しかし「\」を「エスケープ文字」として設定すると、「\(」「\[」の開始
したコメント等は終了することが出来ません。


 ここから先は、試していたやってみたことで、殆ど使われることはありませ
んが、ネタとしての記載です。
 LaTeX は文章中の数式として、
・$
・\( と \)
で挟むの両方が使えます。また独立した行の数式として、
・$$
・\[ と \]
で挟むの両方が使えます (正確には他にも有りますが、「複数行コメント」で
扱うことではないので、割愛します。)。そして各々の数式で、開始の終了は
ついになっている必要はありません。つまり
・$ で初め \) で終わる
・\( で初め $ で終わる
・$$ で初め \] で終わる
・\[ で初め $$ で終わる
としてもエラーになりません。この様に開始と終了が一対一とは限らないので、
開始と終了で複数の組み合わせで設定できると、幅が広がると思います。

[ ]
RE:09395 複数行コメントNo.09423
秀丸担当 さん 06/02/24 11:14
 

エスケープ文字は、開始文字列から終了文字列の間に挟まれた中だけを判断して
います。
開始文字列の頭にあるエスケープは判断していません。
開始文字列に正規表現を使えばできそうな気もしますが、奇数個かどうかを正規
表現で表すことはできるでしょうか。ちょっと思いつきませんが、できそうな気
も。

$〜$ と $$〜$$が対応するものである場合、

開始文字列「(\$|\$\$)」
終了文字列「\1」
高度な設定「開始文字列のタグを終了文字列でも使う」

などとしておくとできるのはないかと思います。

対応してなくて $ に対して $ で終わるのか \) で終わるのかわからないという
場合は終了文字列を「\$|\\\)」にするとか、どういうのが正確かTeXに詳しくな
いのでわかりませんが、とにかく正規表現を使えば色々対応できそうです。

もし正規表現を使っても対応できない文法であるとすれば、対応にも限界がある
ので、それはもはやユーザー定義では対応しきれないということにしてしまうし
か無いと思います。

>●言語指定+ユーザ定義を可能に

これもできたらいいと考えましたが、内部的な都合上、両立させるのは困難です。

[ ]
RE:09423 複数行コメントNo.09440
Iranoan さん 06/02/24 12:57
 
 秀丸担当さん今日は、Iranoan です。
> 開始文字列に正規表現を使えばできそうな気もしますが、奇数個かどうかを正規
> 表現で表すことはできるでしょうか。ちょっと思いつきませんが、できそうな気
> も。
 私も思いつきません。偶数/奇数個の指定できれば、解決しそうです。
> $〜$ と $$〜$$が対応するものである場合、
>
> 開始文字列「(\$|\$\$)」
> 終了文字列「\1」
> 高度な設定「開始文字列のタグを終了文字列でも使う」
 終了文字列 \1 等が使えるんですね。確かに出来そうです。

> >●言語指定+ユーザ定義を可能に
>
> これもできたらいいと考えましたが、内部的な都合上、両立させるのは困難です。
 そうですか。残念です。
 ##う〜ん、彼方を立てれば此方が立たず...。

[ ]
RE:09440 複数行コメントNo.09447
Iranoan さん 06/02/24 16:22
 
 今日は、Iranoan です。
> > 開始文字列に正規表現を使えばできそうな気もしますが、奇数個かどうかを正規
> > 表現で表すことはできるでしょうか。ちょっと思いつきませんが、できそうな気
> > も。
 (?<!\\)(\\\\)*(%)(?\2) で出来ました。

[ ]
RE:09392 複数行コメントNo.09448
Iranoan さん 06/02/24 16:22
 
 秀丸担当さん今日は、Iranoan です。
>  「複数行コメント」で「全削除」すると「強調表示文字列をすべて削除して
> もいいですか?」となります。誤解を与え兼ねないと思います。
>  更に、「全削除」のあと「言語指定」[OK] でダイアログ・ボックスを閉じ
> ます。これで、「ユーザ定義」は全て削除されている事を期待します。しかし、
> 再び「複数行コメント」で「ユーザ定義」を見ると、削除したはずの定義が
> 残っています。本当に削除するとは、「全削除」のあと「言語指定」にせずに
> [OK] を選択する必要があります。
 β4 でも修正されていません。見落とし?

[ ]
RE:09423 複数行コメントNo.09449
Iranoan さん 06/02/24 16:22
 
 秀丸担当さん今日は、Iranoan です。
> $〜$ と $$〜$$が対応するものである場合、

> ・$ で初め \) で終わる
> ・\( で初め $ で終わる
> ・$$ で初め \] で終わる
> ・\[ で初め $$ で終わる
の両立は出来ませんね。要望ではなく、「現状の仕組みでは出来ないものの
例」としてご報告しておきます。

[ ]
RE:09440 複数行コメントNo.09474
Iranoan さん 06/02/25 13:48
 
 秀丸担当さん今日は、Iranoan です。
> > $〜$ と $$〜$$が対応するものである場合、
> >
> > 開始文字列「(\$|\$\$)」
> > 終了文字列「\1」
> > 高度な設定「開始文字列のタグを終了文字列でも使う」
 これと似た方法で上手くいきません。
開始文字列    (?<!\\)(\\\\)*(\$\$|\$)(?\2)
終了文字列    \2
と指定すると、
「タグ付き正規表現の対象パターンがありません。例えば "(a)\2" のような
指定をしています。」「\1 - 正規表現の検索処理でエラーが発生しました。」
とエラーが 2 度でたり、エラーが出ずに設定しても、$ 以降が $ で閉じられ
ていても、全てマッチしてしまいます。

[ ]
RE:09474 複数行コメントNo.09476
Iranoan さん 06/02/25 15:01
 
 秀丸担当さん今日は、Iranoan です。
> エラーが 2 度でたり、
 エラーが出た場合、「開始文字列」は「終了文字列」が空欄の「普通の文
字」が「複数行強調表示一覧」に出現します。(必ず出現するかは不明。)

[ ]
RE:09476 複数行コメントNo.09511
秀丸担当 さん 06/02/27 14:31
 

> エラーが出た場合、「開始文字列」は「終了文字列」が空欄の「普通の文
>字」が「複数行強調表示一覧」に出現します。(必ず出現するかは不明。)

エラーが出る件と、空欄が追加されてしまう件は再現させることができました。
これは不具合でした。ありがとうございます。修正させていただきます。

終端文字列がヒットしない件については、置換でも同様で、

検索文字列 (?\1)(a)
置換文字列 \1

でも空となって置換されます。
これは現時点でのHmJre.dllの仕様ということかもしれません。

[ ]
RE:09476 複数行コメントNo.09513
秀丸担当 さん 06/02/27 14:44
 

終了文字列がヒットしない件については、\0がヒットした文字全体を表すことに
なっているので、\0ではどうでしょうか。

開始文字列    (?<!\\)(\\\\)*(\$\$?)(?\2)
終了文字列    \0

[ ]
RE:09448 複数行コメントNo.09514
秀丸担当 さん 06/02/27 14:53
 

>>  「複数行コメント」で「全削除」すると「強調表示文字列をすべて削除して
>> もいいですか?」となります。誤解を与え兼ねないと思います。
>>  更に、「全削除」のあと「言語指定」[OK] でダイアログ・ボックスを閉じ
>> ます。これで、「ユーザ定義」は全て削除されている事を期待します。しかし、
>> 再び「複数行コメント」で「ユーザ定義」を見ると、削除したはずの定義が
>> 残っています。本当に削除するとは、「全削除」のあと「言語指定」にせずに
>> [OK] を選択する必要があります。
> β4 でも修正されていません。見落とし?

その通りでした。
修正します。

[ ]
RE:09513 複数行コメントNo.09533
Iranoan さん 06/02/27 18:02
 
 秀丸担当さん今日は、Iranoan です。
> 終了文字列がヒットしない件については、\0がヒットした文字全体を表すことに
> なっているので、\0ではどうでしょうか。
>
> 開始文字列    (?<!\\)(\\\\)*(\$\$?)(?\2)
> 終了文字列    \0
 これで大丈夫のようです。有り難うございました。

[ ]
RE:09511 複数行コメントNo.09534
Iranoan さん 06/02/27 18:02
 
 秀丸担当さん今日は、Iranoan です。
> エラーが出る件と、空欄が追加されてしまう件は再現させることができました。
> これは不具合でした。ありがとうございます。修正させていただきます。
 よろしくお願いします。

[ ]
RE:09514 複数行コメントNo.09541
Iranoan さん 06/02/27 18:02
 
 秀丸担当さん今日は、Iranoan です。
> その通りでした。
> 修正します。
 お願いします。

[ ]