亜細亜ノ蛾 - Weblog

[SiteSearch Google]

September 21, 2005

Xyzzyで「Movable Type-mode」!?

[ad]

世のMovable Typer(造語)の中でも、Xyzzy愛用者に送る記事です。

Windowsのテキストエディタ・Xyzzyで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をダウンロードする・または内容をコピーする
  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メソッド

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黒い羽根)です。

キーワードファイルについても同サイトのキーワードが詳しいです。ぜひどうぞ。

Google Adsense

ワード

コメント

こんばんは、.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

なるほど!
正規表現で「<$MThoge$>」というタグを色づけする、というアイデアですね。目からウロコです。

ただ──本当に「<$MThoge$>」というような存在しないタグでも色分けされてしまうようです。 ;(
(lispはほとんど解らないのですが、このコードだと「キーワードリストに存在するMTタグであれば"$"付きでも色分けする」という風にしてくれそうな感じですが……)

とはいえ、いろいろ応用ができますね。ありがとうございます。

コメントを投稿

"Xyzzyで「Movable Type-mode」!?" にコメントを投稿することができます(別ウィンドウが開きます)。

トラックバック

このエントリーのトラックバックURL:

"Xyzzyで「Movable Type-mode」!?"へのトラックバックはまだありません。

過去の記事

カテゴリィ一覧
  1. Movable Type
  2. その他
    1. アイデア
  3. ウェブ
    1. Weblog
    2. Webデザイン
    3. ちょっとイイ話
    4. へぇー(トリビア・雑学)
    5. オモロ
      1. オモロテキスト
      2. オモロニュース
      3. オモロ動画
      4. オモロ画像
    6. ニュース
  4. コンピュータ・エレクトロニクス
    1. PC
      1. Firefox
  5. マンガ・アニメ・ゲーム
    1. アニメ
      1. 新世紀エヴァンゲリオン
    2. オタク
    3. ゲーム
    4. マンガ
      1. 週刊少年ジャンプ
        1. DEATH NOTE
        2. HUNTER×HUNTER
        3. SKET DANCE
        4. バクマン。
  6. 本・音楽・映画・TV
    1. TV・芸能
    2. 映画
  7. 食・健康・生活
    1. ファッション
    2. 食べ物