-->

2010-11-06

javascript-mode

emacs の 23.1 => 23.2 で javascript-mode がうまく動かない場合の例です。

結論は javascript.el の場合に直接呼ぶか、
js.el の場合に js-mode-hook を使うかの違いです。
app-emacs/javascript はマスクされているので問題なければ js.el が良いです。
(load "/usr/share/emacs/site-lisp/javascript/javascript.el")
or
javascript-mode-hook => js-mode-hook

以下は詳細です。

よく見るとモード自体が違います。
(JavaScript) => (Javascript)
$ grep mode-name /usr/share/emacs/site-lisp/javascript/javascript.el
  (setq mode-name "JavaScript")
$ grep mode-name /usr/share/emacs/23.2/lisp/progmodes/js.el
  (setq mode-name "Javascript")

$ eix ^javascript$ -cI
[D] app-emacs/javascript (2.2.1@2010年11月06日 -> ~2.2.1): Major mode for editing JavaScript source text
$ equery files javascript|grep javascript.el
/usr/share/emacs/site-lisp/javascript/javascript.el
$ find /usr/share/emacs/ -name js.el
/usr/share/emacs/23.2/lisp/progmodes/js.el

$ equery belongs /usr/share/emacs/23.2/lisp/progmodes/js.el
[ Searching for file(s) /usr/share/emacs/23.2/lisp/progmodes/js.el in *... ]
app-editors/emacs-23.2 (/usr/share/emacs/23.2/lisp/progmodes/js.el)

js-indent-tabs-mode ぽい設定が無いです。
$ grep defcustom /usr/share/emacs/23.2/lisp/progmodes/js.el
...

(setq js-indent-level 16) ;; 本当に有効かどうか見たい。

javascript-mode-hook が 23.2 で動かないです。
名前が違います。
(add-hook 'js-mode-hook
          (function
           (lambda ()
             (setq indent-tabs-mode nil)
             )))

タブの利用を無効にしているだけの場合 js.el で問題ないと思います。
/* ... */ のコメントのインデントと、複数の入れ子の括弧だけのインデントがまともになったような気がします。

0 件のコメント: