Emacs DDSKKの設定メモ

DDSKK周りの設定で色々試行錯誤したのでメモしておく。


前回 MacでSKKを使い始めて1ヶ月経ったので纏めるC-j で改行どうする問題についてtwiterでつぶやいたところ開発者からリプライが飛んできた。

調べてみると、公式でdot.skkdot.emacsという設定のサンプルを置いてくれていた。

見ている感じ、 skk-mode の起動にhookして ~/.skk が読まれる実装になっているようだ。

良さそうな設定を抽出し、自分なりに変更をくわえた設定は以下。(9/20現在)

init.el:

(leaf ddskk
  :ensure t
  :bind
  ("C-x C-j" . skk-mode)
  :setq
  (skk-byte-compile-init-file . t)
  (skk-preload . t)
  (skk-isearch-mode-enable . 'always)
  (default-input-method . "japanese-skk"))

dot.skk:

;;; -*- mode: emacs-lisp; coding: utf-8 -*-

;;; for skkserv
(setq skk-server-portnum 9999)
(setq skk-server-host "localhost")

;;; config
(setq skk-egg-like-newline t)
(setq skk-show-annotation nil)
(setq skk-auto-insert-paren t)

;;; https://github.com/skk-dev/ddskk/blob/master/etc/dot.skk#L752-L768
(defun skk-C-j-key (arg)
    (interactive "P")
    (let ((enable-modes '(lisp-interaction-mode emacs-lisp-mode org-mode markdown-mode prog-mode)))
        (cond
            ((and (null (skk-in-minibuffer-p))
                 (null skk-henkan-mode)
                 (member major-mode enable-modes))
                (skk-emulate-original-map arg))
            (t
                (skk-kakutei arg)))))

(add-to-list 'skk-rom-kana-rule-list
    '(skk-kakutei-key nil skk-C-j-key))

skk-C-j-key が先程の C-j問題を解決するものだ。特定のmajor mode + 日本語モード時のみ C-j を改行に割りあてるような実装になっている。

ddskkが激重になるときはこの変数が原因かも…試してみてに書いてある通り、 annotation を有効にしたらemacsが固まってしまったので無効にした。

ちょっとした設定を追加したらEmacs内で快適に日本語入力をすることができるようになった。


Twitterでつぶやくと開発者から連絡がくることが多いので恵まれてるなぁと思う今日この頃。