$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

typescript-modeの時に、キー入力で自動でtypescript-insert-and-indentが実行されるのを止める

最近TypeScriptを書いているのだけど、エディタはいつもの慣れているEmacsを使って、typescript-mode.elを使っている。基本的には良いのだけど、なんか(とか{とか;を入力した時に変な挙動を起こしていて困っていた。

調べてみると、この辺のキーにtypescript-modeがtypescript-insert-and-indentという関数がバインドされていて、自動でその関数が実行されているようだった。これが誤作動を起こしている感じだった。本質的にはtypescript-insert-and-indentがおかしくなっている理由を調べるべきだけど、まあTABとか普通に押したらインデントされるし、そこまでいい感じにインデントとされる必要もないなと思ったので、このキーバインドを外すことで対処した。

以下のコードで対応できる。

(add-hook 'typescript-mode-hook
          (lambda ()
            ;; remove 
            (mapc
             (lambda (key)
               (define-key typescript-mode-map key nil))
             '("{" "}" "(" ")" ":" ";" ","))))

追記

コメントでid:syohexさんに以下のほうが良いと教えてもらえました。ありがとうございます!!

(with-eval-after-load 'typescript-mode
  (dolist (key '("{" "}" "(" ")" ":" ";" ","))
    (define-key typescript-mode-map key nil)))