マクロのソースファイルのユニコード化No.04539
naanfushi さん 09/11/24 01:24
 
 マクロのソースファイル(*.mac)のユニコード化はやはり、難しいでしょうか?

 せっかく秀丸エディタ本体を始め、プロジェクト枠などもユニコードに対応してい
るにも関わらず、秀丸の最大のウリでもあるマクロのソースファイルをユニコードで
記述できないのは、非常に悔しい思いで一杯です!!!

 これまでユニコード対象の文字が少ない場合では、直接コードを書き込むなどの対
処をしておりましたが、最近の業務ではユニコードの文字が非常に多くなり、別の環
境で処理することも発生したりしております。

 マクロソースのユニコード化が難しいものなのか、或いは不可能なのか、まったく
分かりませんが、テキストのユニコード化が激烈に進んでいる現在、この流れに乗り
遅れないためにも是非是非是非、Ver8と言うメジャーバージョンアップを期に、ご
対応の程、ご検討して頂きますよう、願い申し上げます。

 以上、ネタ的な内容ではありますが、何卒ご検討頂きますようお願い致します。

[ ]
RE:04539 マクロのソースファイルのユニコNo.04553
秀丸担当 さん 09/11/24 16:15
 

> マクロのソースファイル(*.mac)のユニコード化はやはり、難しいでしょうか?

内部を全面的にUnicode化するとしたら大変ですが、マクロファイルの読込み時に
内部的に文字セットから外れる文字を \uxxxx に変換してから実行するようにす
るとしたら、比較的簡単にはできるかもしれないです。
これをすること自体は簡単にできたとして、おそらく一悶着するであろう副作用
への対応をすることになりそうなのが大変だと思います。

マクロファイルに書く文字列はShift-JISということになっていますが、実際は昔
からフォントの文字セットに依存した生の文字コードを扱ってしまっていること
があります。
例えば insert "ア"; を欧文ファイル上で実行すると"fA"のような欧文の文字に
なります。
この動作が崩れるとしたら困ると言われることが予想され、このあたりはなるべ
く触れたくない部分です。

こういう動作もできたうえでUnicodeできなくてはならないということになるので
すが、細かい要望より、こういう基本的なところこそV8.00でやっておくべきこと
だと思います。
できるかどうかはわかりませんが検討したいと思います。

[ ]
RE:04553 マクロのソースファイルのユニコNo.04561
Iranoan さん 09/11/24 19:35
 
 秀丸担当さん今日は、Iranoan です。
> こういう動作もできたうえでUnicodeできなくてはならないということになるので
> すが、細かい要望より、こういう基本的なところこそV8.00でやっておくべきこと
> だと思います。
 特定の拡張子のマクロだけ、Unicode として読み込むようにしてはどうで
しょう。今までに既存のマクロは、殆ど mac でしょうから。

[ ]
RE:04561 マクロのソースファイルのユニコNo.04568
秀丸担当 さん 09/11/25 12:24
 

> 特定の拡張子のマクロだけ、Unicode として読み込むようにしてはどうで
>しょう。今までに既存のマクロは、殆ど mac でしょうから。

Unicodeのマクロファイルかどうかというのはファイル内容のバイナリで識別でき
るので、拡張子で判断するようにしなくても大丈夫だと思います。
Unicodeで保存したマクロファイルの insert "ア"; は、欧文であっても必ず"ア"
になるようになるべきだと思うので、Unicodeの場合はそういう仕様ということで
いいと思います。
つまり、insert "ア";については欧文対象のマクロの場合は同じ.mac拡張子でも
マクロファイルを保存したエンコードで動作が違うということになり、それでい
いと思います。

いま試してみて問題になりそうなのが、マクロ内でエンコードが変わった場合に
問題かもしれないです。
上記の動作にするためには、現在開いているファイルのエンコードを元にして
Unicode版の.macを内部的に非Unicodeのマクロ(\uxxxxを含む)に変換すること
になります。
\uxxxx の変換対象の文字が開いているファイルのエンコードによって変化するた
め、エンコードがマクロ内で変化すると食い違いが出ると思われます。

これに対応する方法を考えてみたのですが、難しいかもしれないです。
内部的な処理を全面的にUnicodeにするか、マクロ内容と変数を全てエンコードが
切り替わるたびに変換しなおすか、ということになると思います。
内部を全面Unicodeは、欧文用マクロの互換性が失われる可能性があり、本末転倒
なことになってしまうと思われます。
その都度変換しなおしは、setactivehidemaruで違うエンコードに切り替わるたび
にやるのは厳しいかもしれないです。

Unicodeのマクロファイルは途中でエンコードが変わることは前提としないような
仕様ということでよければいいですが。
現実的にいって、そういう仕様ということにしてしまおうかと思っています。
(ですが、この仕様でV8.00で確定してしまうと、後世にわたってこの仕様を引き
ずることになり、サポートコストは大きいかもしれません…)

[ ]
RE:04553 マクロのソースファイルのユニコNo.04579
naanfushi さん 09/11/25 20:14
 
 文字コードの詳細は無知なので、実務面での簡単な例を示します。
 例えば、JISでは「森鴎外」と書きますが、鴎を本来の「おう(U+9DD7)」(以下、
■で表記)でマクロを書きたいだけなのです。
 秀丸上では、「森■外」で検索等の編集ができます。従って、同様の操作をマクロ
でも実行したいわけです。具体的には、下記のような記述ができれば、非常に労力が
軽減されると考えた次第です。

searchdown "森■外";
$a = "森■外";
if($s = "森■外"){
    message "森■外";
}else{
    insert "森■外";
}

 ユニコードに関しては、相当に複雑そうなので、確かに一悶着あれば…と思ったり
しますが、出来る範囲で対応していて頂ければ幸いです。

[ ]
RE:04568 マクロのソースファイルのユニコNo.04582
Iranoan さん 09/11/25 21:47
 
 秀丸担当さん今日は、Iranoan です。
> Unicodeのマクロファイルかどうかというのはファイル内容のバイナリで識別でき
> るので、拡張子で判断するようにしなくても大丈夫だと思います。
 UTF-16 なら、そうですね(^^;。

> Unicodeのマクロファイルは途中でエンコードが変わることは前提としないような
> 仕様ということでよければいいですが。
> 現実的にいって、そういう仕様ということにしてしまおうかと思っています。
> (ですが、この仕様でV8.00で確定してしまうと、後世にわたってこの仕様を引き
> ずることになり、サポートコストは大きいかもしれません…)
 このスレッドをこのまま生かしておいて、他の方の意見も聞きつつ、無理し
て Ver.8.00 に間に合わせる必要もないかと。

[ ]
RE:04579 マクロのソースファイルのユニコNo.04585
秀丸担当 さん 09/11/26 12:12
 

> 例えば、JISでは「森鴎外」と書きますが、鴎を本来の「おう(U+9DD7)」(以下、
>■で表記)でマクロを書きたいだけなのです。

これに対応すること自体は、変換をはさむことで比較的簡単に対応できて、試し
にしている手元のバージョンでは UTF-16 のマクロファイルでできています。
これはいいのですが、エンコード変更などによる副作用で問題にならないかが心
配です。

ちなみにご存知と思いますが、現状のマクロでも、

  searchdown "森\u9dd7外";

と書くとできます。

[ ]
RE:04582 マクロのソースファイルのユニコNo.04588
秀丸担当 さん 09/11/26 13:13
 

> UTF-16 なら、そうですね(^^;。

UnicodeといえばUTF-8等もありましたね。失礼しました。
対応するとしたらUTF-16でBOM付き限定ということにしようと思います。

いろいろ試してみて、もともと既存のマクロでもエンコードが変わったら文字列
の情報は崩れるので、それほど問題にはならないかもしれません。
理想的ではないかもしれませんが、既存マクロと対比すると\uxxxxを使わずに文
字が直接書けるというメリットが増えるだけだと思うので、次のβ版でやってみ
ようと思います。

[ ]
RE:04585 マクロのソースファイルのユニコNo.04616
naanfushi さん 09/11/29 18:45
 
> UTF-16 のマクロファイルでできています。

 簡単ですが、手元のマクロを書き換えても、意図した動きになっているようです。
 まだ、異種の多言語ファイルに複数のマクロを実行させた訳ではないので、誤動作
等の危険性が完全に払拭されたとは言えないかもしれませんが、コードだらけになり、
書くのにも補修するのにも無茶苦茶、時間のかかっていたマクロが、劇的なまでに
「ユニコード文字も普通にかけそう」なマクロ環境に移行できそうです!
 これで、編集枠、エクスプローラ枠に続き、マクロもユニコード対応となり、さら
に安心して秀丸が使えるようになりそうです。
 ありがとうございました。

[ ]