Xyzzyで「Movable Type-mode」!?

シェアする

世のMovable Typer(造語)の中でも、Xyzzy愛用者に送る記事です。
Windowsのテキストエディタ・[Xyzzy](http://www.jsdlab.co.jp/~kamei/ “でらやる気のない謎のぺぇじ”)でHTMLを書くときに便利なのが、[html+-mode](http://www1.odn.ne.jp/ymtz/html_plus-mode.html “html+-mode”)です。自分も、「Xyzzy + html+-mode」の組み合わせを愛用しています。
ただ、Movable Typeのテンプレートを編集しているときにhtml+-modeを利用すると、いろいろと問題があります。
どうしてXyzzyに「mt-mode」が無いのかなーと疑問に思いつつ、「**Web上から人様の作ったコードをパクって来て、適当にでっち上げる**」という、いつもの手法(*asiamothメソッド*)で問題を解決してみました。
xyzzy: mt-mode!?こんな感じで、MTタグも色分けされるようになります。

2005-09-22T13:02:40+09:00 追記

“mt-kwd.txt”に下記プラグイン用のタグを追加しました。また、タグの閉じ方がおかしかった(説明が難しい)ので修正しました。


2005-09-23T13:17:23+09:00 追記

重複行が200行くらいあったので削除しました(……)。また、”If”が付くタグがほとんど閉じていなかったのを修正しました。


#### MT + html+-modeの問題点
普通にMTのテンプレートをhtml+-modeで編集する時は、以下の問題があります。
1. MTタグが色分けされない
2. インデントを行うときにMTタグが先頭にあると、インデントがずれる
他にも問題はあるのかもしれませんが、パッと思いつくのは以上ですね。
要するにこれは、「*MTのタグが、(HTML)タグと扱われない*」から起こるわけです。
#### 解決方法
解決方法は単純で、「*MTタグのキーワードファイルを作る*」ということです。要するに、html+-modeを利用しているときに、通常のHTMLタグだけではなく、「*MTタグも認識するためのファイル*」を作ればいいわけです。
html+-mode本体をごにょごよして──というのは、今の自分には無理です……。
#### で、実際どうするの?
操作手順は、次の通りです。
1. [mt-kwd.txt](http://asiamoth.com/mt/archives/2005/09/21/mt-kwd.txt “キーワードファイル”)をダウンロードする・または内容をコピーする
2. Xyzzyディレクトリ配下の”etc”ディレクトリ内にある”HTML”ファイルをエディタで開く
3. “mt-kwd.txt”の内容を貼り付けて保存する
4. “.xyzzy”か”siteinit.l”に下記のコードを記入する(”siteinit.l”の場合はバイトコンパイルが必要)
5. Xyzzyを再起動する
“.xyzzy”か”siteinit.l”に記入するコードは下記の通りです。
(setq ed::*html+-use-html-kwd* t)
下記のページを参照しました。
> 補完するタグを充実させる
>
> html+-mode はデフォルトでは、一部の要素を認識(色分け)しなかったり補完できなかったりすることがあります。この不満を解消するために、 html-keyword-file を読み込ませることで、補完できるタグを充実させ、割と仕様に準拠した HTML を書きやすくしてみます。
>
>.xyzzy に下記のコードを書き加えるだけで、 html-keyword-file を読み込んでくれるようになります。
>
> `(setq ed::*html+-use-html-kwd* t)`
>
>閑古鳥 -> 呟き -> xyzzy の html+-mode を使う
できれば、MTタグのキーワードファイルは”HTML”ファイルに書き加えるのではなく、”MT”というファイル名にして別に作り、
(setq ed::*html+-use-html-kwd* t)
(setq ed::*html+-use-mt-kwd* t)
という感じで読み込めるといいのですが、うまく行きませんでした。ひとつのmodeに複数のキーワードファイルを読み込ませるにはどうしたらいいのでしょうか?([NDOメソッド](http://d.hatena.ne.jp/naoya/20050909/1126240088 “naoyaのはてなダイアリー – NDOメソッド”))
#### Movable Type-modeの課題
以上の操作を行うと、html+-modeでMTタグも色分けしてくれます。
──が、問題もあって、`<$MTBlogURL$>`のように`$`を含むタグは認識できないようです。上記の”mt-kwd.txt”は一応`$`付きのMTタグも入れておきましたが、そもそもhtml+-modeは`<$`から始まる物をタグとして認識できないようです(未確認)。 解決方法として、自分は``と`$`無しでMTタグを書くようにしました。他の人が作ったテンプレートを利用する場合は、テキストエディタの置換機能で`$`を削除するとうまく動作します。
Xyzzyの場合は、「検索を`<$\(.*\)$>`、置換を`<\1>`」とすると一回で置換できます。
#### ちなみに
“mt-kwd.txt”は[Movable Type 3.2 User Manual: A: Template Tag Reference Archives](http://www.sixapart.com/movabletype/docs/3.2/a_template_tag_reference/ “Movable Type 3.2 User Manual: A: Template Tag Reference Archives”)を参考にしました。
簡単なスクリプトを走らせて、自動で生成──なんてことはできないので、ほとんど*手入力で*作りました。ということで、抜けがあるかもしれません。
#### 参照
その他、html+-modeの解説で参考になるのが、[html+-mode](http://www.uranus.dti.ne.jp/~shiro-/soft/xyzzy/html+.html “html+-mode”)([黒い羽根](http://www.uranus.dti.ne.jp/~shiro-/ “黒い羽根”))です。
キーワードファイルについても同サイトの[キーワード](http://www.uranus.dti.ne.jp/~shiro-/soft/xyzzy/keyword.html “キーワード”)が詳しいです。ぜひどうぞ。

コメント

  1. eden より:

    こんばんは、.xyzzyかsiteinit.lにこんなのどうですか?
    ;; 正規表現でキーワード色付け
    (defun regexp-colorize ()
    (interactive)
    (unless (local-variable-p ‘regexp-keyword-list)
    (make-local-variable ‘regexp-keyword-list))
    (setq regexp-keyword-list (append regexp-keyword-list *regexp-colorize-keyword-list*)))
    (defvar *regexp-colorize-keyword-list*
    (compile-regexp-keyword-list
    ‘(
    (“[\$]MT[a-z].+?[\$]” non-nil (:color 9 0 ) t )
    (“\”.*?\”\\|\” \”\\|\”\”\\|’.*?’\\|’ ‘\\|”” nil (:color 5 0 ) t )
    )))
    (add-hook ‘ed::*html+-mode-hook* ‘regexp-colorize )
    ;; 参考 Xyzzy Wiki

  2. asiamoth より:

    なるほど!
    正規表現で「<$MThoge$>」というタグを色づけする、というアイデアですね。目からウロコです。
    ただ──本当に「<$MThoge$>」というような存在しないタグでも色分けされてしまうようです。 ;(
    (lispはほとんど解らないのですが、このコードだと「キーワードリストに存在するMTタグであれば"$"付きでも色分けする」という風にしてくれそうな感じですが……)
    とはいえ、いろいろ応用ができますね。ありがとうございます。