js2-mode(2)
js2.el内で
(eval-when-compile (defvar font-lock-keywords nil))
されてるせいなのか,js2-modeだとfont-lock-keywordsがnilになってる.js2-modeのfont-lockの掛け方がよくわからなかったので,js2-mode-hookで無理矢理設定した.
それから,js2-mode-hook内でjs2-mirror-modeやjs2-dynamic-idle-timer-adjustにsetqしても反映されない.ソースを読んでみるに,これらはjs2-modeに入る時にだけ参照され,その後にjs2-mode-hookが実行されるので,これらはjs2-mode-hookでは設定できない.
そこで,defvarするようにしたけど,これはこれでロード順が変わると困るような気がする.
そんなこんなでとりあえずの設定:
(autoload 'js2-mode "js2" nil t) (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode)) (defadvice js2-mode-edit (before my-js2-mode-reset-timer () activate) (setq js2-idle-timer-delay (min (max 0.5 (* (point-max) 0.00004)) 2))) ; 数値は適当 (defvar js2-mirror-mode nil) (add-hook 'js2-mode-hook '(lambda () (set-face-foreground 'js2-function-param-face (face-foreground font-lock-variable-name-face)) (setq js2-basic-offset 4) (setq js2-bounce-indent-flag nil) (setq js2-strict-cond-assign-warning nil) (setq js2-enter-indents-newline nil) (add-to-list 'font-lock-keywords '( (" " 0 my-face-b-1 append) ("[ ]+$" 0 my-face-u-1 append) )) (js2-reparse t)))
最後にjs2-reparseしておかないと,ファイルを開いた直後に js2-strict-cond-assign-warningが反映されない.