keicy/.emacs.d

キーバインドの定義リファクタ

Opened this issue · 2 comments

keicy commented
  • 99_key-binds.el にまとめるのか、個々のプラグイン設定ファイルにまとめるのか
  • プラグインで定義されている key-map にカスタムのバインド定義をする箇所で、 with-eval-after-load-feature を使うようにする
    • helm の定義など、これを使えればもっとシンプルに定義し直せるかも
    • 下記コードが例
      • with-eval-after-load-featurebundle の中でなくても単独で使える
(with-eval-after-load-feature 'company
  (bind-keys :map company-active-map
             ("C-<return>" . company-abort)
             ("M-p" . nil)
             ("M-i" . company-select-previous)
             ("M-n" . company-select-next) ;デフォルトでこれだが明示的に
             ;("<tab>" . company-complete-common-or-cycle) ; デフォルト: company-complete-common
))

【追記】

この定義方法は、追加は問題なくできるが、デフォルトの挙動を上書きはできず負けてしまうという問題が発覚した、。
これではなく、下記の方法を用いるとちゃんと上書きできるのでこちらの方法でリファクタ実施する。

(defun my-inf-binds()
  (bind-keys :map ensime-inf-mode-map
             ; システムコマンド
             ("M-<return>" . execute-extended-command)
             ("C-<tab>" . keicy-window-or-split)
             ("C-<return>" . comint-accumulate) ; デフォルトで M-<return> に割り当てられていたもの
             ; 編集
             ("M-j" . backward-char) ;一文字戻る
             ("C-M-j" . backward-word) ;一単語戻る
             ("M-k" . forward-char) ;一文字進む
             ("C-M-k" . forward-word) ;一単語進む
             ;("C-d" . delete-char) ;DEL ; これを追加すると `cntl-D` が効かなくなるので排除.ただこれがなくともデフォルトでこのバインドがシェル側に定義されているので困らない.
             ("C-M-d" . keicy-delete-word) ;単語DEL
             ("C-f" . delete-backward-char) ;Backspace
             ("C-M-f" . keicy-backward-delete-word) ;単語Backspace
             ("M-," . beginning-of-line) ;行頭
             ("M-." . end-of-line) ;行末
))
(add-hook 'ensime-inf-mode-hook 'my-inf-binds)
keicy commented

上記コミットは間違って関連付けてpushしてしまった関係ない別イシューのもの。注意!

keicy commented

#48 #56 もこちらでまとめて実施しても良い