popup-select-window / select-window を拡張する
Emacs のウィンドウを分割しているときに、分割したウィンドウ間を移動する関数である select-window を拡張する機能をふと思い立って書いてみました。
# 書いている当初は、switch-window という似た elisp が既にある事を知らなかったという…orz まあいいよね!w
使用するには、popup.el の機能を使用しているので、popup.el が必須となります。
以下の URL どちらかより、popup-select-window.el を落としてきます。
# Launchpad は、開発中のものを突っ込むので、ちょっとだけ新しかったりするかもです。
- http://www.emacswiki.org/emacs/popup-select-window.el
- https://code.launchpad.net/~khiker/+junk/popup-select-window
また、popup.el が必要なので、これも auto-complete のリポジトリより落としてきます。
これら2つの elisp、popup.el と popup-select-window.el を load-path の通ったディレクトリに置き、以下のコードを .emacs に加えれば完了です。
(require 'popup) (require 'popup-select-window) (global-set-key "\C-xo" 'popup-select-window)
キー設定は、既存の select-window を潰す形で定義していますが、ここは好みに応じて好きなキーに割り当てると良いと思います。
popup-select-window の動作としては、以下です。
- ウィンドウが分割状態にないなら、何もしない
- ウィンドウが分割されている(2つ)ならば、通常の select-window として振舞う。
- ウィンドウが分割されている(3つ以上)ならば、popup-menu* を使い縦型インラインで選択し、カーソルの移動先のウィンドウを選択する。
- 選択しているウィンドウには、オーバレイがかかり、かつ、モードラインの色が赤くなる。
以下、スクリーンショットです。
移動先となるウィンドウは、そのウィンドウに、オーバレイがかかり黄色っぽくなり、かつ、モードラインの色が赤くなります。
同じバッファを開いたウィンドウが2つ以上あると、オーバレイは、同じウィンドウ全てにかかってしまい、移動先が判別しづらくなってしまうので、その場合は、モードラインを頼りにすると良いかもしれません。
同じバッファを複数のウィンドウで開いていても、問題なくなりました。@iRi_E さんありがとうございます。
まあ、似た(というかメインの機能はほぼ同じ?popup.el使う使わないとか細い違いはあるけど…。)機能を持つ elisp が既にあったりしますが、よければどうぞ。
更新時刻
- 2010/09/25/00:00
- 2010/09/25/16:20