@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Emacs javascript-mode でセミコロンを入力後に勝手に改行を入力させない

(defun my-js-mode-hook ()
  (setq-local electric-layout-rules
              '((?\{ . after) (?\} . before))))

(add-hook 'js-mode-hook 'my-js-mode-hook)

この挙動がどうしても我慢ならなくて js2-mode が機能豊富すぎるせいだろうと思い javascript-mode に鞍替えしても同じ挙動だったので怒りと絶望で Emacs を投げ捨てたくなったが気を取り直して調べてようやく解決した。https://github.com/emacs-jp/issues/issues/24#issuecomment-77167968

js-mode-hook については javascript - Adding Common Hook to js-mode - Stack Overflow に詳しい。

入力支援系の機能は自分の好みと合っていないと非常にイライラするのでできれば原則どんな場合もデフォルトでオフになっていてほしい。初期設定でオフだったとしても何かの拡張を利用する際に知らないうちに有効化されたりすることもあるのでたちがわるい。今回の場合どの関数で改行が入力されてるか edebug で調べようと思い M-x describe-key ; としたら self-insert-command だったので途方にくれた。