かわちょぶろぐ

三十路のヒゲ男がぶたさんグッズを集めていたりするブログ。

nxml-mode の初期設定

前回の続き。手動で nXML mode(nxml-mode) を load して動作確認ができたら、次から XML ファイルを開いたら自動的に nxml-mode になるように、~/.emacs に次のように書き足しておく(rng-auto.el へのパスは、各自の環境にあわせて書き換える)。

(load "~/lib/emacs-lisp/nxml-mode-20041004/rng-auto.el")
(setq auto-mode-alist
      (cons '("\\.\\(xml\\|xsl\\|rng\\|x?html?\\)\\'" . nxml-mode)
            auto-mode-alist))
(setq magic-mode-alist
      (cons '("<\\?xml " . nxml-mode)
            magic-mode-alist))

nxml-mode の README には auto-mode-alist の記述例しか無かったが、これではうまくいかなかったので、EmacsWiki: NxmlMode の記述を参考に、magic-mode-alist の設定をしている。

magic-mode-alist は、ファイルの内容からメジャーモードを決めるための変数。XML ファイルってボキャブラリによって拡張子がいろいろなので、最近の Emacs では(Meadow3 では)、<?xml で始まるファイルは xml-mode になるように、この変数で設定されている。magic-mode-alist の設定の方が auto-mode-alist よりも優先されるため、nxml-mode にならなかった、というわけ。

ついでに以下の設定も追加。終了タグ開始記号 "</" を打ったら自動で補完してくれるようにする設定と、タブでインデント、タブ幅 2 にする設定。

(add-hook 'nxml-mode-hook
          (lambda ()
            (setq nxml-slash-auto-complete-flag t)
            (setq nxml-child-indent 2)
            (setq indent-tabs-mode t)
            (setq tab-width 2)))