September 21, 2005
Xyzzyで「Movable Type-mode」!?
- 更新: 2007 年 03 月 04 日 15:37
- 2005 年 09 月 21 日 09:05 に asiamoth が投稿
- タグ: MovableType, Xyzzy
- カテゴリー: Movable Type
- コメント (2)
- トラックバックする
世のMovable Typer(造語)の中でも、Xyzzy愛用者に送る記事です。
Windowsのテキストエディタ・XyzzyでHTMLを書くときに便利なのが、html+-modeです。自分も、「Xyzzy + html+-mode」の組み合わせを愛用しています。
ただ、Movable Typeのテンプレートを編集しているときにhtml+-modeを利用すると、いろいろと問題があります。
どうしてXyzzyに「mt-mode」が無いのかなーと疑問に思いつつ、「Web上から人様の作ったコードをパクって来て、適当にでっち上げる」という、いつもの手法(asiamothメソッド)で問題を解決してみました。
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で編集する時は、以下の問題があります。
- MTタグが色分けされない
- インデントを行うときにMTタグが先頭にあると、インデントがずれる
他にも問題はあるのかもしれませんが、パッと思いつくのは以上ですね。
要するにこれは、「MTのタグが、(HTML)タグと扱われない」から起こるわけです。
解決方法
解決方法は単純で、「MTタグのキーワードファイルを作る」ということです。要するに、html+-modeを利用しているときに、通常のHTMLタグだけではなく、「MTタグも認識するためのファイル」を作ればいいわけです。
html+-mode本体をごにょごよして──というのは、今の自分には無理です……。
で、実際どうするの?
操作手順は、次の通りです。
- mt-kwd.txtをダウンロードする・または内容をコピーする
- Xyzzyディレクトリ配下の"etc"ディレクトリ内にある"HTML"ファイルをエディタで開く
- "mt-kwd.txt"の内容を貼り付けて保存する
- ".xyzzy"か"siteinit.l"に下記のコードを記入する("siteinit.l"の場合はバイトコンパイルが必要)
- 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)
できれば、MTタグのキーワードファイルは"HTML"ファイルに書き加えるのではなく、"MT"というファイル名にして別に作り、
(setq ed::*html+-use-html-kwd* t)
(setq ed::*html+-use-mt-kwd* t)
という感じで読み込めるといいのですが、うまく行きませんでした。ひとつのmodeに複数のキーワードファイルを読み込ませるにはどうしたらいいのでしょうか?(NDOメソッド)
Movable Type-modeの課題
以上の操作を行うと、html+-modeでMTタグも色分けしてくれます。
──が、問題もあって、<$MTBlogURL$>のように$を含むタグは認識できないようです。上記の"mt-kwd.txt"は一応$付きのMTタグも入れておきましたが、そもそもhtml+-modeは<$から始まる物をタグとして認識できないようです(未確認)。
解決方法として、自分は<MTBlogURL>と$無しでMTタグを書くようにしました。他の人が作ったテンプレートを利用する場合は、テキストエディタの置換機能で$を削除するとうまく動作します。
Xyzzyの場合は、「検索を<$\(.*\)$>、置換を<\1>」とすると一回で置換できます。
ちなみに
"mt-kwd.txt"はMovable Type 3.2 User Manual: A: Template Tag Reference Archivesを参考にしました。
簡単なスクリプトを走らせて、自動で生成──なんてことはできないので、ほとんど手入力で作りました。ということで、抜けがあるかもしれません。
参照
その他、html+-modeの解説で参考になるのが、html+-mode(黒い羽根)です。
キーワードファイルについても同サイトのキーワードが詳しいです。ぜひどうぞ。
トラックバック
このエントリーのトラックバックURL:
"Xyzzyで「Movable Type-mode」!?"へのトラックバックはまだありません。

コメント
こんばんは、.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
投稿者: eden | December 6, 2005 12:21 AM
なるほど!
正規表現で「<$MThoge$>」というタグを色づけする、というアイデアですね。目からウロコです。
ただ──本当に「<$MThoge$>」というような存在しないタグでも色分けされてしまうようです。 ;(
(lispはほとんど解らないのですが、このコードだと「キーワードリストに存在するMTタグであれば"$"付きでも色分けする」という風にしてくれそうな感じですが……)
とはいえ、いろいろ応用ができますね。ありがとうございます。
投稿者: asiamoth | December 6, 2005 01:12 AM
コメントを投稿
"Xyzzyで「Movable Type-mode」!?" にコメントを投稿することができます(別ウィンドウが開きます)。