emacs js-mode(javascriptモード)のタブ設定を無効にする

  • 投稿日:
  • カテゴリ:

emacs23のjavascriptモード js-modeのタブ設定の無効化

なんか最近JavaScriptを使うので、、、

例によって、~/.emacsに追加。

(add-hook 'js-mode-hook
	  '(lambda()
	     ;;;(message "%s" "bbbbbbbbbbbbbb")
	     (local-set-key "\t" '(lambda() (interactive)(insert "\t")))
	     (setq tab-width 4)
	     (local-set-key "\d" 'delete-backward-char)
	     (define-key js-mode-map "(" 'self-insert-command)
	     (define-key js-mode-map ")" 'self-insert-command)
	     (define-key js-mode-map ":" 'self-insert-command)
	     (define-key js-mode-map ";" 'self-insert-command)
	     (define-key js-mode-map "," 'self-insert-command)
	     (define-key js-mode-map "{" 'self-insert-command)
	     (define-key js-mode-map "}" 'self-insert-command)
	     ;;;(message "%s" "cccccccccccc")
	     ))

emacs 23.3.1 と kubuntu 12.04 で確認。

(メモ)
js-modeのソースの在り処。
/usr/share/emacs/23.2/lisp/progmodes/js.elc
/usr/share/emacs/23.2/lisp/progmodes/js.el.gz

js.elcはコンパイル済みのファイルで、中を見ても何も分からない。js.el.gzは、コンパイル前のソースを圧縮したもの。Synapticとかapt-getで emacs23.el パッケージをインストールすると、このコンパイル前のjs.el、もしくは、js.el.gz がインストールされる。これを覗いて、キーマップ名などを調べる。

また。/usr/share/emacs/23.2/lisp/progmodes/js.elc を消して、js.el.gzを解凍して、js.elにし、中身を弄ると、js-modeを改変できる。しないけど。

.emacsの再読み込みは、.emacsのバッファで

M-x eval-current-buffer

とする。毎回emacsを再起動する必要ない。

hookの効いてることの確認は、

JavaScriptのソースを読み込んだバッファ上で、C-x C-v としてファイルを再読み込みする。再読み込みでも、hookは呼び出される。オートインデントされないことを確認する。

.emacs内で、(message ...) とすると *Messages* バッファに印字できる。デバッグや確認に使える。また。.emacsの中でエラーがあったときも、*Messages*にエラーメッセージが印字される。

モードとファイルの関連付けの確認は、*scratch*バッファで、

auto-mode-alist
C-x C-e

とすると、*Message*バッファに関連付けの一覧表が印字される。

タブを無効にする理由は、オートインデントとか、インテリジェントなTABとかBSの動作がうっとうしいから。
Cとか、Javaみたいな言語のタブは、単純に4TAB、(もしくは、8TAB)動作してくれたほうがうれしい。
でも、キーワードに色がついてたりするのは嬉しいので、js-modeは使いたい。ため。