日本語入力と autopair-mode

autopair-modeを有効にしていると日本語入力がうまくいかない。
調べても対策が見つからなかったのは、Emacsの input methodを
使っている人があまりいないためだろうか ?

環境

対応

inputmethodを有効にしたときに autopair-modeを無効、
逆に inputmethodを無効にした時に autopair-modeを有効にするよう
してみました。

(defvar my/autopair-enabled-modes
  '(c-mode
    c++-mode
    python-mode
    haskell-mode
    ruby-mode
    coffee-mode
    cperl-mode))

;; 追記 make-symbolではうまくいかなかったので internに修正
(dolist (mode my/autopair-enabled-modes)
  (add-hook (intern (format "%s-hook" mode)) 'autopair-mode))

(defun my/input-method-active-hook ()
  (when (memq major-mode my/autopair-enabled-modes)
    (autopair-mode -1))
  (set-cursor-color "gold"))

(defun my/input-method-inactivate-hook ()
  (when (memq major-mode my/autopair-enabled-modes)
    (autopair-mode t))
  (set-cursor-color "chartreuse2"))

(add-hook 'input-method-activate-hook 'my/input-method-active-hook)
(add-hook 'input-method-inactivate-hook 'my/input-method-inactivate-hook)