2002-06-18

わがままを聞いていただけました。ありがとうございます! まったく、好き勝手言ってしまってすみませんでした……。

ここ数日のFinal β Laboratoryの更新履歴を、XHTMLプラグインの内部処理という超マニアックなトピックとTX-Cのコードで埋もれさせてしまったわけで、幅広い読者がいる「更新履歴」でWZマクロに興味ない人(というかxhtml.txcを読んだ人以外)にはさっぱりな話題が続いてしまったのも申し訳ない限りです。

それでも、これで現行のXHTMLプラグインで知られている問題点はほぼすべて対処がなされたことになりますから、HTMLCMD登場以降はじめての事実上の安定版ができたという意義は大きいです。

中村さん、おつかれさまでした。

2002-06-16

念が通じました! 不具合の原因についての詳細な解説も読めます。……なるほど、GetKc関数に値を返さない道すじがありましたか。……って昨日はそのあたり(GetKc関数付近)を読んでたはずなんですが、どうやら目が節穴だったようです。

じつは情けないことがもうひとつ。僕の調べた限りではこれも立派な原因のうちの一つですと突っ込まれてしまいましたが、昨日の記事でmeta要素のhttp-equiv属性が二重引用符で囲まれていな
いと起きる
のかな?」と考えたんですが、いまいじってみるとどうもそうでもないみたい
、と書いたことについて。

その後ynp4の解説を読んでいたら、急に思いあたるふしが出てきたので、オリジナルだと信じきっていたxhtml.txcの変更履歴をセーフファイルで確認してみたら、4月6日に編集したという痕跡が。変更内容は__on_txFrameNew関数内の以下の部分、

GetHeaderStr(text,"meta>[^>]*http-equiv=¥"Content-Type¥"","content",sz,CCHWORD,0,0)

を次のようにというもの。

GetHeaderStr(text,"meta>[^>]*http-equiv=¥"?Content-Type¥"?","content",sz,CCHWORD,0,0)

……すみません、自分で対処して忘れてたみたいです(苦笑)。当時のHTMLソースをひっぱりだしてきても再現しないのも当然です(とはいえそのときもGetKc関数の問題点には気づいてなかったんですが)。お騒がせしました……。

ということは、この状態でynpのパッチもあてていたわけで、考えてみると恐ろしいことなんですが……。

もとい、本題。ここまで愚挙を露呈しておいてからいうのも説得力に欠けるんですが(笑)、xhtml.txcは(というかその前身のhtmlcmd.txcから)GetKcのほかにも返り値の型が違ってたり、値を返さない関数で値をreturnしてたり、というのがけっこうあるので、このさいynp版でそういうのを一掃してしまってはどうでしょうか。

少なくとも、ynp4版xhtml.txcでは5095行目にある、wndImeSetOpen(hwnd,0);というのはwndImeSetOpen(text->hwndtext,0);でないとまずいと思うので(hwndは宣言されてないのでint型に自動定義されている)ここだけでも……。

2002-06-15

保存時に漢字コードが勝手にシフトJISにされてしまうことがあるという、XHTMLプラグインの謎の不具合。「なんでだろう」と自分のHTMLソースをいろいろいじってたら起こらない状態になってしまい、そのときは「meta要素のhttp-equiv属性が二重引用符で囲まれていな
いと起きる
のかな?」と考えたんですが、いまいじってみるとどうもそうでもないみたい……。

なにはともあれ、まず原因を特定できないと対策を講じようがないんですが、セーフファイルで当時のHTMLソースをひっぱりだしてきても再現しないんですよね……。

2002-06-12

唐突にHTMLの話題。

HTMLのclass属性には、スペースで区切って複数のクラス名を与えることができるんですね(7.5.2 Element identifiers: the id and class attributes – The global structure of an HTML document)。「Valid HTML 4.01!」などと偉そうにバナーを掲げてますが、知りませんでした。そうすると、以下のようなマークアップができることになります。

<p>

<acronym class="html index" title="HyperText Markup Language">HTML</acronym><samp 
class="html index attr">class</samp>属性には、...

</p>

(まあ、これはたぶんやりすぎですが、)そしてスタイルシートで、HTMLに関連する用語(htmlクラス)はグリーンの文字、属性名(attrクラス)はCourier Newフォントで表示させ、(そんなツールがあるかどうかは知りませんが、)indexクラスの単語を索引用に抽出する……、などということが可能(のはず)なわけです。

いままで「ひとつの要素に複数のクラスがふさわしい場合だってあるよなあ……。span要素とかで何重に囲むわけにもいくまい……。」とか思ってたのですが、たんに自分が無知なだけだったという。

HTML操作するようなマクロ書くときは気をつけねば。

2002-06-11

先日(6/8)の記事のつづき(2002/06/07(Fri)、 更新履歴 – Final β Laboratory)。

M.Shibataさんが作ってくれたgetDefaultHtmlFile関数を見て、一瞬「あれ、これのどこがsplit?」とか大ボケかましましたが、そうじゃなくて、そのものズバリなものを作って頂いたんですね(関数名で気付きなさいって)。

splitのような関数を作るにしても、デリミタを探してポインタをすすめていく……という処理の流れは同じようなものになるでしょう、ということで……。関数名は、「今回の予想される使いみち」から付けてしまったので、(関数の機能を説明するという面からすれば)本当はぴったりの名前ではないですね。

僕は関数名(や変数名やらその他もろもろのシンボル名)付けるのが下手な(というかまだ自分の命名スタイルが確立できてない)んで、いっつも苦労してます。ロジックより時間かかってたり(苦笑)。「長すぎ」とかコードのなかでひとり突っ込みしたくもなります(笑)。そういえば、DoSomething形式で命名した関数と、まったく同じ処理をするSomethingDo形式の名前の関数が、同じコードのなかに入ってたこともありました……。