2007/01/09(火)[EmacsCE] css-mode導入ログ

EmacsCEを導入した理由の一つにcss-modeを使いたかったからというのがある。しかし、前回導入したEmacsCEのセットにはcss-modeが含まれていない。今回はcss-modeが使えるようにしたときのログ。

インストール

  1. http://www.garshol.priv.no/download/software/css-mode/
    上記のサイトからcss-mode.elがDLできる。
  2. /emacs/site-lisp/css/ディレクトリを作成
  3. /emacs/site-lisp/css/にcss-mode.elを置く
  4. .emacsに以下を追加
    (autoload 'css-mode "css-mode")
    (setq auto-mode-alist
          (cons '("\\.css$'" . css-mode) auto-mode-alist))
    
    これで*.cssを読めばcss-modeが利用できる。

ToDo

起動後M-xからcss-modeが利用できない(手動でcss-mode.elをロードするか、*.cssを読んだ後でないとM-xにcss-modeが現れない)ので使えるようにしたい

ToDo解決 2007/01/09

M-xにcss-modeが現れるようにする設定。
.emacsに

(load-library "css-mode")
(require 'css-mode)

と記入すればいいらしい。

ここの記事を参考にしました。

追記 2007/01/12

前回の設定ではcssを編集しない時もcss-mode.el(c)がロードされてしまうため、無駄にメモリを消費することになっています。
前回の設定ではload-libraryでcss-mode.el(c)をロードし、さらにrequireでcss-mode.el(c)がロードされていなければロードするという冗長な処理を行わせていることがその後の調べで分かりました。

もっとスマートにM-xでcss-modeを呼び出すためにはautoloadで指定してやるのですが、最初に行った設定(css-mode.el中に記されている.emacsの設定)では、autoloadの引数が足りないため、M-xの一覧に出てきません。

autoloadの書式

autoload filename docstring interactive type

filename : lispの拡張子を含まないファイル名
docstring : functionに対する説明文字列。これを指定するとロードせずに説明を読むことが可能になる。
interactive : nil以外であれば対話的に呼び出すことが出来る。つまりM-xの一覧に表れるようになる。
type : functionのタイプを指定。functionがキーマップならkeymapといった具合。ここを指定しておくことでロードせずにこの情報を知ることが出来る。

スマートなcss-modeのための.emacs定義

(autoload 'css-mode "css-mode" nil t)
(setq auto-mode-alist
      (cons '("\\.css$'" . css-mode) auto-mode-alist))

interactiveにtを指定してやることでM-xにcss-modeが表れるようになります。