[includeme file=”inc-package-table.php” name=”owdriver” where=”melpa”]
<2015-02-21 Sat> win-switch.elも仲間に入れてください。
これは便利!
通常のEmacsでは3分割以上ウィンドウを分割していると、 一気に操作性が悪くなっていました。
というのは、 scroll-other-window などのother-window系コマンドは すぐ隣のウィンドウを操作するものでしかないからです。
3分割されているとき、隣の隣のウィンドウを直接操作するコマンドはありません。
この問題は owdriver.el (Other Window Driver) が解決してくれます。
そのうち紹介しますが、連続するプレフィクスキーを 省略できる smartrep.el のうまい活用例です。
2分割であってもわざわざ C-x o (other-window) で操作するウィンドウを 選択する必要がないので、導入する価値は十分にあります。
プレフィクスキー( owdriver-prefix-key )をうまく設定しておけば、 other-window系コマンドは用済み になってしまいます。
それくらいやばい破壊力を持っています!!
[includeme file=”inc-package-install.php” name=”owdriver” where=”melpa”]
<2015-02-21 Sat> win-switch.elも仲間に入れてください。
これは便利!
通常のEmacsでは3分割以上ウィンドウを分割していると、 一気に操作性が悪くなっていました。
というのは、 scroll-other-window などのother-window系コマンドは すぐ隣のウィンドウを操作するものでしかないからです。
3分割されているとき、隣の隣のウィンドウを直接操作するコマンドはありません。
この問題は owdriver.el (Other Window Driver) が解決してくれます。
そのうち紹介しますが、連続するプレフィクスキーを 省略できる smartrep.el のうまい活用例です。
2分割であってもわざわざ C-x o (other-window) で操作するウィンドウを 選択する必要がないので、導入する価値は十分にあります。
プレフィクスキー( owdriver-prefix-key )をうまく設定しておけば、 other-window系コマンドは用済み になってしまいます。
それくらいやばい破壊力を持っています!!
(require 'owdriver)
(global-unset-key (kbd "M-o"))
(setq owdriver-prefix-key "M-o")
(owdriver-config-default)
;;; これを入れておくことでM-o M-oで対象ウィンドウを選択できる
(owdriver-add-keymap owdriver-prefix-key 'owdriver-next-window)
(owdriver-mode 1)
$ wget http://rubikitch.com/f/140911110001.owdriver.el $ emacs -Q -f package-initialize -l 140911110001.owdriver.el
M-oをsmartrepのプレフィクスキーにしておけば、 M-oを押した後は隣のウィンドウをあたかも 選択したかのように操作できます。
たとえばM-oの後にC-vやM-vでスクロールできるし、 C-f/C-b/C-n/C-pでカーソル移動などもできます。
3分割以上のときにM-oをたて続けに押せば、 対象ウィンドウを切り替えられます。
他ウィンドウの操作を終わるにはC-gかC-qです。
操作しているウィンドウを選択して終了するにはC-RETです。
現時点での owdriver-config-default の定義はこうなっています。
(defun owdriver-config-default ()
"Do the recommended configuration."
;; Own command
(owdriver-add-keymap "C-o" 'owdriver-next-window)
(owdriver-add-keymap "C-S-o" 'owdriver-previous-window)
(owdriver-add-keymap "<C-return>" 'owdriver-focus-window)
(owdriver-add-keymap "C-q" 'owdriver-quit)
;; Basic command
(owdriver-define-command scroll-up t)
(owdriver-define-command scroll-up-command t)
(owdriver-define-command scroll-down t)
(owdriver-define-command scroll-down-command t)
(owdriver-define-command scroll-left t (scroll-left 10 t))
(owdriver-define-command scroll-right t (scroll-right 10 t))
(owdriver-define-command next-line t)
(owdriver-define-command previous-line t)
(owdriver-define-command forward-char t)
(owdriver-define-command forward-word t)
(owdriver-define-command backward-char t)
(owdriver-define-command backward-word t)
(owdriver-define-command move-beginning-of-line t)
(owdriver-define-command move-end-of-line t)
(owdriver-define-command beginning-of-buffer t)
(owdriver-define-command end-of-buffer t)
(owdriver-define-command isearch-forward t (isearch-forward))
(owdriver-define-command isearch-backward t (isearch-backward))
(owdriver-define-command set-mark-command t)
(owdriver-define-command kill-ring-save t (call-interactively 'kill-ring-save) (deactivate-mark))
;; Third party command
(owdriver-define-command pophint:do t (pophint:do :not-switch-window t))
(owdriver-define-command inertias-up t)
(owdriver-define-command inertias-down t)
)
owdriver-add-keymap でowdriverコマンドを追加します。
owdriver-define-command でowdriver用コマンドを定義します。
owdriver-define-command は、 owdriver-add-keymap の機能を含んでいます。
たとえば、
(owdriver-define-command scroll-up-command t)
は、scroll-up-command (C-v) のowdriver版 (owdriver-do-scroll-up-command) を定義しています。
第2引数にtを指定していることでキーマップに追加し、 M-o C-vと操作できるようになります。
ときたまowdriver版コマンドは、 元のコマンドを実行するだけではすまされないこともあります。
そのときのために、第3引数以降に任意のフォームを記述できるようになっています。
(owdriver-define-command kill-ring-save t (call-interactively 'kill-ring-save) (deactivate-mark))
は、owdriver版では
(progn (call-interactively 'kill-ring-save) (deactivate-mark))
を実行するように定義されます。 [includeme file=”inc-package-relate.php” name=”owdriver”]