Web屋のemacs lisp + .emacs

major modes
名前 URL 用途
js2-mode http://code.google.com/p/js2-mode/ better javascript-mode
css-mode http://www.garshol.priv.no/download/software/css-mode/ その名の通り。もう少し新しいの無いかな
mmm-mode http://mmm-mode.sourceforge.net/ 複数のmajor modeを使う。htmlファイル中でscriptタグ内だけjs2-modeにしたり
install

elisp置き場は~/site-lisp/の想定。
site-lispに必要な*.elを突っ込む。

#!/bin/sh
mkdir ~/site-lisp/
mkdir work-elisps-for-web-dev
cd work-elisps-for-web-dev
wget http://js2-mode.googlecode.com/files/js2-20090723b.el
wget http://www.garshol.priv.no/download/software/css-mode/css-mode.el
wget http://downloads.sourceforge.net/project/mmm-mode/mmm-mode/0.4.8/mmm-mode-0.4.8.tar.gz?use_mirror=jaist
tar zxvf mmm-mode-0.4.8.tar.gz
mv css-mode.el js2-20090723b.el mmm-mode-0.4.8/*.el ~/site-lisp/
mv ~/site-lisp/{js2*,js2.el}
cd ~/site-lisp/ && emacs --batch --eval '(byte-compile-file "js2.el")' && cd -

最初、emacsを起動して、"M-x byte-compile ~/site-lisp/js2.el"とやったときに当方の環境だと「Cannot open file "cc-defs.el"」とエラーが出てしまった。
rootでemacsを起動してbyte-compileしたら通ったけどなんだったんだろう。

.emacs
; add "~/site-lisp" to load-path
(setq load-path
      (append
       '("~/site-lisp/")
       load-path))

;; ファイルを保存時に #! で始まっていればスクリプトとみなして実行権限を与える
(add-hook 'after-save-hook
          'exeutable-make-buffer-file-executable-if-script-p)

; js2-mode
(autoload 'js2-mode "js2" nil t)
(add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))

;; css-mode
(autoload 'css-mode "css-mode")
(add-to-list 'auto-mode-alist '("\\.css$" . css-mode))

;; mmm-mode
(require 'mmm-mode)
(setq mmm-global-mode 'maybe)
(set-face-background 'mmm-default-submode-face nil) ;submodeの背景色は不要

;; define mmm submodes
(mmm-add-classes
  '((embedded-css
    :submode css-mode
    :face mmm-code-submode-face
    :front "<style[^>]*>"
    :back "</style>"
    )
  (embedded-js
    :submode js2-mode
    :face mmm-code-submode-face
    :front "<script[^>]*>"
    :back "</script>"
    ))
)

;; add mmm submodes to *.html files
(mmm-add-mode-ext-class nil "\\.html?\\'" 'embedded-js)
(mmm-add-mode-ext-class nil "\\.html?\\'" 'embedded-css)

;; autoinsert for html files
;; 空のhtmlを開いたとき、HTML4のテンプレを挿入
(require 'autoinsert)
(auto-insert-mode 1)
(setq auto-insert-alist
      (cons
       '(html-mode
         "Input title: " "\
<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">
<html lang=\"ja\">
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
<meta http-euiv=\"Content-Script-Type\" content=\"text/javascript\">
<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">
<title>" str "</title>
</head>
<body>
<h1>" str "</h1>

" _ "

</body>
</html>
") auto-insert-alist))