TAB とか BS とか ; とか打つたびに、おかしなインデントが勝手に入る。嫌がらせとしか思えないC-MODE。さんざん調べて、やっと全部無効にできました。
例によって、~/.emacsに追加。
(add-hook 'c-mode-common-hook '(lambda() (local-unset-key "#") (local-unset-key "(") (local-unset-key ")") (local-unset-key "*") (local-unset-key ",") (local-unset-key "/") (local-unset-key ":") (local-unset-key "<") (local-unset-key ">") (local-unset-key "{") (local-unset-key "}") (local-unset-key ";") (local-set-key "\t" '(lambda() (interactive)(insert "\t"))) ;; just a tab (setq tab-width 4) ;; show a tab with 4 char width ;;(local-set-key "\t" '(lambda() (interactive)(insert " "))) ;; a 4 space tab if you like (local-set-key "\d" 'delete-backward-char) ;; the normal backspace ))
emacs 23.2.1 & kubuntu 11.4 で確認。
残念ながら、xemacsでは、うまく無効化できません。(ギブアップ)↓
これで、気持ちよくCソースを弄れるようになりました。
ちなみに、今までは、fundamental-mode とか、C-q TAB とか、C-i でがんばってました。
(というか、20年くらい前のemacsは、もっと単純だったような、、、いつの間にかすごい面倒くさくなっちまって。。。)
(追記) xemacs用
~/.xemacs/init.el に追加。
(add-hook 'c-mode-common-hook '(lambda() (define-key c-mode-base-map "#" 'self-insert-command) (define-key c-mode-base-map "(" 'self-insert-command) (define-key c-mode-base-map ")" 'self-insert-command) (define-key c-mode-base-map "*" 'self-insert-command) (define-key c-mode-base-map "," 'self-insert-command) (define-key c-mode-base-map "/" 'self-insert-command) (define-key c-mode-base-map ":" 'self-insert-command) (local-unset-key "<") (local-unset-key ">") (define-key c-mode-base-map "}" 'self-insert-command) (define-key c-mode-base-map "{" 'self-insert-command) (define-key c-mode-base-map ";" 'self-insert-command) (local-set-key "\t" '(lambda() (interactive)(insert "\t"))) (setq tab-width 4) ;;(local-set-key "\t" '(lambda() (interactive)(insert " "))) (define-key c-mode-base-map [backspace] 'delete-backward-char) ))
保存先のキーマップが、emacs と違ってたみたい。 xemacs21 で確認。
(追記) c-toggle-electric-state なんてのは全然知りませんでした。これのほうがスマート↓
(追記) cc-mode.elの置き場所
emacs の場合 /usr/share/emacs/23.2/lisp/progmodes/cc-mode.elc
xemacs の場合 /usr/share/xemacs21/xemacs-packages/lisp/cc-mode/cc-mode.elc
コンパイル済みしかない... orz
(追記) モードの説明書の出し方
Mーx describe-mode