window-configuration は何故、S 式じゃないの?
 2006.10.02

あの window-configuration は何故、フレーム情報を持ってるの? 教えて >RMS

window-configuration は選択しているフレーム内の分割状態と各バッファ等を保持します。 window-configuration-to-register と jump-to-register で分割状態の退避/復元が可能です。 が、何故かどのフレームであったかも保持しているので、1 つ目のフレームの分割状態を 2 つ目のフレームで再現したい、という要求には答えられません。 複数フレーム開くの禁止! ってことなんでしょか? でっかい不条理です。 しかも S 式でなく専用のオブジェクトなので、加工の余地ががが。

そこで current-window-configuration-printable ですよ。 これをレジスタにしまって、後で取り出します。 ya-window-conf.el

(autoload 'ya-window-configuration-to-register "ya-window-conf" nil t)
(substitute-key-definition
 'window-configuration-to-register
 'ya-window-configuration-to-register
 global-map)

使い方は C-x r w して記憶させ、C-x r j で呼び出すだけ。 本家 window-configuration-to-register とおんなじです。 違いは記憶したフレームではなく、選択しているフレームに復元するということです。

current-window-configuration-printable を定義している revive.el が別途必要です。 広瀬雄二氏には無上の感謝を、変わらず。

もちろん revive.el は windows.el のためにあるのはわかっています。 ですが、screen 的な挙動より、この単純(ElScreen のひと曰く「原始的」)な方法の方が僕には合うのです。 screen は screen で好きですがね。

カテゴリー:Emacs