Windows.elの設定

Carbon Emacsはそれなりの頻度で落とすのでElscreenじゃ駄目な気がしてきた。面倒臭すぎる。ということで再起動時に直前の状態へ復帰できるWindows.elを使ってみる。紛らわしい名前だけどMS社とは関係ない。

Elscreenと比べて

復帰時の起動が楽
自分がどの位置にいるかわかりにくい

設定

windows.el と revive.el をload-pathが通ってるところに置く
ほとんどgan2さんのwindows.el 再び - gan2 の Ruby 勉強日記からお借りした。というかまんまかも。

;;; windows.el
(setq win:switch-prefix "\C-z")
(define-key global-map win:switch-prefix nil)
(define-key global-map "\C-z1" 'win-switch-to-window)
;; 1-9 ではなく a-z でウィンドウを管理する
(setq win:base-key ?`) ;; ` は「直前の状態」
;(setq win:max-configs 27) ;; ` 〜 z は 27 文字
(setq win:quick-selection nil) ;; C-c 英字 に割り当てない
(require 'windows)
;; 新規にフレームを作らない
(setq win:use-frame nil)
(win:startup-with-window)
;; C-x C-c で終了するとそのときのウィンドウの状態を保存する
;; C-x C なら保存しない
(define-key ctl-x-map "\C-c" 'see-you-again)
(define-key ctl-x-map "C" 'save-buffers-kill-emacs)
;; *migemo* のようなバッファも保存
(setq revive:ignore-buffer-pattern "^ \\*")
;; キーバインドの追加
(add-hook 'win:add-hook
    '(lambda ()
       (define-key win: "\C-c\C-g" 'clgrep)
       ))
(define-key win:switch-map "\C-m" 'win-menu)
(define-key win:switch-map ";" 'win-switch-menu)

;;オレオレキーバインド
(define-key global-map (kbd "<A-M-right>") 'win-next-window)
(define-key global-map (kbd "<A-M-left>") 'win-prev-window)
(define-key global-map (kbd "<A-M-UP>") 'win-menu)
(global-set-key [f1] 'resume-windows)