[HOME]

VZエディタマクロ 「IXHTML」「XSTRICT」の修正

IXHTMLの修正   2006年8月17日
XSTRICTの修正  2006年8月18日
内容更新(朱記)   2006年8月21日
IXHTML更新情報  2006年8月25日

IXHTMLは2006-08-23にめざらさんが0.54版にアップされ、以下の内容は全て対応されました。
       めざらさんのVZマクロ工房    2006-08-25 追記。
説明はこちらを見て下さい。


「IXHTMLの修正」

1.始めに

 HTML文書の編集を助けるマクロ「IXHTML」「XSTRICT」は、”めざら”さんの作で、こちらに掲載されているものです。
      http://homepage3.nifty.com/mezala/index.html

 それによると、最初はメニュー方式の「XSTRICT」を開発されたのですが、メニューページ(8ページくらいになる)をパタパタ切り替えてタグを探してゆくのが使いにくいということで、「IXHTML」に変えていったとのことです。「IXHTML」は、タグを打ち込んでゆくとインクリメンタルサーチで探してカーソルを移動してくれるため、使いやすいです。

 先日の北海道旅行ではHP200LXでWEB更新を行うために、このマクロと「HTM_MAKE]」(N.YAMA氏作)を導入しました。しかし、IXHTMLだけが、どうしても動いていませんでした。北海道旅行は終わってしまいましたが、今後のためにと原因を調べてきて、何とか動くようになりました。このページは、修正部分と理由を書いておくものです。
以上の経緯は
 「7月17日 テキストエディタ2」 及び 「8月17日 VZエディタマクロ1」「8月18日 VZエディタマクロ2」通りです。

 「8月21日 VZエディタマクロ3」 追加 2006-08-21

 本来はめざらさんにご連絡して対応していただくべきものですが、既に保守もされていないかもしれないので、とりあえず自分用に修正して使用するものです。”自分用に使用”ということで、改変も許してもらえると(勝手に)解釈しています。m(..)m

2.「IXHTML」の現象と原因

(1)現象:
 マクロを起動するとタグ一覧は表示されるが、タグの1文字目をキーインするとハングアップする。後はリセットするしかない。画面上は何の変化もない。

(2)デバッグ:
 いや〜苦労しました。なんせ、マクロ言語については何も知らないのですから。避暑に行った図書館で居眠りしながら、マクロ言語の本を読んで解析しました。後はトレースしたり、あちこちにいろんな命令を埋め込んで見たり、仕事よりきついかなあ。
 さて、分かってみれば簡単なことですが、それまでがたいへん、、、。

(3)直接的原因:
 使用法が合っていなかった。「IXHTML」は、タグのキーワードがキーインされたとき正規表現の検索を行います。このため、VWXソフトの常駐を前提としていますが、常駐させずに使用していました。

   VWX :VZエディタで正規表現の検索を可能にさせるソフトです。使用時は常駐させます。
        VZエディタを駆使する方は、このソフトを常駐させることが多いです。

 私は、常駐ソフトを減らす為VWXは、通常は常駐させていません。そのため、この現象に遭遇しました。
 たとえば、タグとして"img"の"i"をキーインすると、”^<i”で検索します。”^”は行頭を表す正規表現です。VWXを常駐していないと、これは解釈できませんから検索は一致しません。問題は、このとき検索ループから抜けられなくなり、ハングアップしたように見えます。

(4)動機的原因:
 お、会社での対策会議風になってきました(笑)。
 VWXの常駐は既定のものとして、使用が前提であることがドキュメントに書いて有りませんでした。気が付かなかったんですよねえ。また、常駐せずに使用したときエラーになるようになっていなかった。(エラー表示して止まるとか)

3.対策案
対策案としては、下記の3つが考えられます。

(1)VWX使用を必須として、そのまま使用する。
(2)VWX使用を必須として、常駐していなかったらエラー表示させる。
(3)VWXを使用していなくても、実用上困らない程度に動くようにする。

 今後、忘れるかもしれないことや、自分はVWXの常駐をしないことを考えると、(3)の方が良いですね。考えてみると、タグは(データ用のタグファイル)必ず、行頭から<で始まっています。だから、よほど複雑な使い方、或いは複雑なデータファイルを作らない限り問題ないように思います。

4.その他の問題点

 今回の解析中に、その他の問題と思われる所を見つけたので修正しました。忘れないために記録しておきます。
   (作者の方のご説明により、私の理解不足と使用するVZエディタの違いによるものと判明しましたので
    修正しました。2006-08-21追記)


(4)リードオンリーファイルの判定ミス
(5)imgファイルの選択処理が起動しない。

5.修正個所と説明

項番 修正個所 説明
上記
(3)
検索判定文字列に最初()を含めないようにする。
こうすれば正規表現検索は不要になる。
判定文字列バッファの先頭位置を変える。

PS[=t-2  → PS[=t-1

この場合、RX[+, と RX], は不要ですが、
今後元に戻すかもしれないので、残します。

上記
(4)
編集対象ファイルがビューモードやリードオンリー
なら終了する。(編集できないから)

mi → mr>253

mr==$80はビューモード
mrが254,255ならリードオンリー
miは挿入モード判定変数である。


修正(削除し下欄に記述)) 2006-08-21
上記
(4)
miが不要と誤解してしまったが、必要なので戻
しました。


編集対象ファイルがビューモードだったり上書き
モードだと実行しない。mr==$80はビューモード、
miは挿入モード判定変数
上書きモードだと既にある内容が上書きされる
危険があるので実行しない。


リードオンリーだと実行するが、終了時にファイル
がセーブされないので、泣かなくても良いように
実行できないようにしておく事にします。
mrが254,255ならリードオンリーなので
mr>253 を追加しました。
なお、作者の方のコメントでは $80も含めて
 mr>127 で可との事です。
(mr>127 || mi)?{ &m(32) . }

上記
(5)
タグがimgだったら、画像ファイル選択ルーチンを
起動する部分。

lf → fl
単純ミスと思われる。



修正(削除し下欄に記述)) 2006-08-21
上記
(5)
使用するVZエディタの違いによるものでした。

こんな、直ぐ分かる所にミスがあるとは思えないので
理由が分からず悩んでいたのですが、作者の方に
教えていただきました。
lfが正しいとの事でした。
lfはロングファイルネーム処理を可とするフラグだ
そうです。

VZエディタは開発者の最終バージョンの後にも色々と
発展バージョンが有るようです。高橋氏版VZ使用が
前提だそうです。

とりあえず、該当命令をコメント化しました。
私のは榊原氏版です。これから検討です。


6.結果
下図のように動くようになりました。(ホッ)



*************************************************************************************************


[XSTRICT]の修正

1.始めに
 そもそものスタートは、上の「1.始めに」に書いたとおりです。使い初めてみると、自分なりにこうしたいという部分が出てきます。それが、タグデータファイルの起き場所問題です。
詳細は「8月18日 VZエディタマクロ2」に書いたとおりです。

2.問題点
タグデータファイルオープン時に、指定しているのはファイル名のみのため、そのときのカレントディレクトリに影響されて、オープンできないことがある。

2.対策案

(1)環境に合わせて、絶対パス名を与える。
(2)何らかの条件のパス名を与える。  → マクロファイル(DEFファイル)がおいてあるディレクトリに
  一緒に入れておくものとする。これが一番すっきりすると思う。(同じ系統のファイルなので)

3.修正個所と説明

修正個所 説明
上記
(2)
朱記部分(上側)をコメント化して
朱記部分(下側)を追加する。

DEFファイルの置き場所のパス名
を使用する。従って、DEFファイルと
同じ場所にタグデータファイルを
おくこと。


4.結果
 これで、どこのディレクトリのHTMLファイルからスタートしても、XSTRICTを起動したときタグデータファイルがオープンできるようになりました。


対策前です。カレントディレクトリにタグデータファイルがないため、メニューウインドウが出てきません。




対策後です。ちゃんとメニューウインドウが出てきました。


いやー、目出度し目出度しで、本項終わりです。

[このページトップへ]