本文
ノート
編集
差分
Edit of UNIX/学生ツール/elisp/windows.el
TITLE:windows.el - Emacsのフレームをウィンドウマネージャのように管理 #navi(UNIX/学生ツール) |~作者|広瀬雄二| |~ダウンロード|http://www.gentei.org/~yuuji/software/windows.el http://www.gentei.org/~yuuji/software/revive.el| |~関連サイト|http://www.gentei.org/~yuuji/software/| |~バージョン|windows.el:2.40 revive.el:2.18| |~学内パス|/home/student/s1138001/lib/emacs/lisp/windows.el /home/student/s1138001/lib/emacs/lisp/revive.el| |~学内管理者|s1138001| #contentsx *解説 [#q21b3a1d] windows.el(及びrevive.el)はEmacsのフレームを ウィンドウマネージャのように管理し 編集状態を完璧に保存&復元する 具体的にはEmacs上で動作するメーラやニュースリーダ等の各画面に 番号(番号以外にも変更可能)が割り当てられ、その番号を指定することで、 各画面を切り替えて管理できるようになる。 また、作業途中でその状態を保存し、復元することができる。 似たようなプログラムにelscreen, escreen, winring等がある。 しかし、保存&復元機能があるのはwindows.elだけである。 screenのemacs版と考えて頂くとよいと思う。 詳しくは、windows.elの本体中に書かれています。 //本文 **.emacs.elの設定 [#wff81bb1] 前準備として .emacs.el または .emacs に以下のように記述します。 #pre{{ ;; Lisp ライブラリの load path に "~s1138001/lib/emacs/lisp" を追加します。 (setq load-path (cons (expand-file-name "~s1138001/lib/emacs/lisp") load-path)) ;; windows.el (require 'windows) (win:startup-with-window) (define-key ctl-x-map "C" 'see-you-again) ;; revive.el (autoload 'save-current-configuration "revive" "Save status" t) (autoload 'resume "revive" "Resume Emacs" t) (autoload 'wipe "revive" "Wipe emacs" t) }} ** key bind [#dd0a413e] |C-c C-w 1|分割状態 1 へ (Q)| |C-c C-w 2|分割状態 2 へ (Q)| | :| :| |C-c C-w 9|分割状態 9 へ (Q)| |C-c C-w 0|直前の分割状態へ(バッファ0と交換) (Q)| |C-c C-w SPC|分割状態1~nのうち、直前用いたものへ (Q)| |C-c C-w n|次の分割状態へ(C-c SPC)| |C-c C-w p|前の分割状態へ| |C-c C-w !|現在のウィンドウを破棄 (Q)| |C-c C-w -|ちょっと前のウィンドウ状態を復活(Q)| |C-c C-w C-w|ウィンドウ操作メニュー| |C-c C-w C-r|リジュームメニュー| |C-c C-w C-l|ローカルリジュームメニュー| |C-c C-w C-s|タスク切替え| |C-c C-w =|分割状態保存バッファ一覧表示 (Q)| デフォルトの設定ではQマークの付いているkey bindはC-wを省略できます。 **使い方 [#c4ced82c] 使い方の例を示します emacsでプログラムを編集していたとして、 そのときにメールを読みたくなったとします。 メールは2番のウィンドウに割り当てることにします。 C-c C-w 2 と入力すると、 C)reate D)uplicate P)reserve F)indfile B)uff X)M-x N)o: と表示されます。 メールを読むために Create の c を入力して新規ウィンドウを作成します。 そこでメールリーダを起動すると、ウィンドウの分割状態がメール専用になります。 読み終わったら C-c C-w 1 を入力すると、1番のバッファに保存されている 最初のプログラム編集状態に切り替わります。 これでプログラム作成に直ちに戻れます。 次にニュースを読みたくなりました。 ニュースリーダを起動して ... 読み終わりました。 またプログラムの編集を再開しようと思います。 ここで1番のウィンドウでニュースを読みましたので C-c C-w 3 を入力し Preserve の p を続けて入力します。 これで1番のバッファの内容は更新せずに、 現状のウィンドウ状態を3番のバッファに保存します。 つまり3番のウィンドウにニュースが移り、 1番のウィンドウにプログラム編集状態が戻りました。 C-c C-w 1 を入力してプログラムの編集を再開します。 メールが到着したら C-c C-w 2 を、ニュースを読むなら C-c C-w 3 を入力します。 メールとニュースだけを読み続ける場合のように 二つの状態を行ったり来たりする場合は C-c C-w SPC が便利です。 ***レジューム [#vb94fb87] revive.el と組み合わせて使うことにより、リジューム機能を利用できます。 C-c C-w C-r を入力すると、 A)save-all R)estore-all S)ave-this L)oad-this N)Load# ~)read-~ と表示されます。 ここで a を入力すると現在の全てのウィンドウの情報を ファイルにセーブすることができます。 r を入力するとファイルにセーブしたものをロードすることができます。 s,l を入力すると現在選択しているウィンドウ状態をそれぞれ セーブ/ロード します。 n を入力するとファイルから数字で指定したウィンドウ状態をロードします。 また、 C-x C と入力するとセーブ後に Emacs を終了します。 そして、次回 Emacs を起動した直後に resume-windows (C-c C-w C-r r)を起動することで 直ちに以前の状態に戻ることができます。 (emacs -f resume-windows として起動すると以前の状態でemacsが起動します) ***普通でないバッファの扱い [#wea26ad3] revive.elの説明文には、 mh-rmail ではカレントバッファが mh-folder-mode, gnus ではカレントバッファが gnus-Group-mode になります。 この対応関係は、変数 revive:major-mode-command-alist-default に書かれています。 この変数に登録されている以外のものを定義したい場合は、 (setq revive:major-mode-command-alist-private '((hogehoge-mode . hoge) (herohero-mode . herohero) ("タイプ&メニュー" . trr))) のように revive:major-mode-command-alist-private の値を設定すると 次回 resume した時に自動的に対応するコマンドが起動されます。 また上の例にあるように、major-mode(シンボル)の代わりに buffer-name(文字列)を指定することもできます。 と記述があります。 さらに詳しい使い方を知りたいならばwindows.el本体中に書かれているので それを読んでください。 #navi(UNIX/学生ツール,,footer)
Do not change timestamp
TITLE:windows.el - Emacsのフレームをウィンドウマネージャのように管理 #navi(UNIX/学生ツール) |~作者|広瀬雄二| |~ダウンロード|http://www.gentei.org/~yuuji/software/windows.el http://www.gentei.org/~yuuji/software/revive.el| |~関連サイト|http://www.gentei.org/~yuuji/software/| |~バージョン|windows.el:2.40 revive.el:2.18| |~学内パス|/home/student/s1138001/lib/emacs/lisp/windows.el /home/student/s1138001/lib/emacs/lisp/revive.el| |~学内管理者|s1138001| #contentsx *解説 [#q21b3a1d] windows.el(及びrevive.el)はEmacsのフレームを ウィンドウマネージャのように管理し 編集状態を完璧に保存&復元する 具体的にはEmacs上で動作するメーラやニュースリーダ等の各画面に 番号(番号以外にも変更可能)が割り当てられ、その番号を指定することで、 各画面を切り替えて管理できるようになる。 また、作業途中でその状態を保存し、復元することができる。 似たようなプログラムにelscreen, escreen, winring等がある。 しかし、保存&復元機能があるのはwindows.elだけである。 screenのemacs版と考えて頂くとよいと思う。 詳しくは、windows.elの本体中に書かれています。 //本文 **.emacs.elの設定 [#wff81bb1] 前準備として .emacs.el または .emacs に以下のように記述します。 #pre{{ ;; Lisp ライブラリの load path に "~s1138001/lib/emacs/lisp" を追加します。 (setq load-path (cons (expand-file-name "~s1138001/lib/emacs/lisp") load-path)) ;; windows.el (require 'windows) (win:startup-with-window) (define-key ctl-x-map "C" 'see-you-again) ;; revive.el (autoload 'save-current-configuration "revive" "Save status" t) (autoload 'resume "revive" "Resume Emacs" t) (autoload 'wipe "revive" "Wipe emacs" t) }} ** key bind [#dd0a413e] |C-c C-w 1|分割状態 1 へ (Q)| |C-c C-w 2|分割状態 2 へ (Q)| | :| :| |C-c C-w 9|分割状態 9 へ (Q)| |C-c C-w 0|直前の分割状態へ(バッファ0と交換) (Q)| |C-c C-w SPC|分割状態1~nのうち、直前用いたものへ (Q)| |C-c C-w n|次の分割状態へ(C-c SPC)| |C-c C-w p|前の分割状態へ| |C-c C-w !|現在のウィンドウを破棄 (Q)| |C-c C-w -|ちょっと前のウィンドウ状態を復活(Q)| |C-c C-w C-w|ウィンドウ操作メニュー| |C-c C-w C-r|リジュームメニュー| |C-c C-w C-l|ローカルリジュームメニュー| |C-c C-w C-s|タスク切替え| |C-c C-w =|分割状態保存バッファ一覧表示 (Q)| デフォルトの設定ではQマークの付いているkey bindはC-wを省略できます。 **使い方 [#c4ced82c] 使い方の例を示します emacsでプログラムを編集していたとして、 そのときにメールを読みたくなったとします。 メールは2番のウィンドウに割り当てることにします。 C-c C-w 2 と入力すると、 C)reate D)uplicate P)reserve F)indfile B)uff X)M-x N)o: と表示されます。 メールを読むために Create の c を入力して新規ウィンドウを作成します。 そこでメールリーダを起動すると、ウィンドウの分割状態がメール専用になります。 読み終わったら C-c C-w 1 を入力すると、1番のバッファに保存されている 最初のプログラム編集状態に切り替わります。 これでプログラム作成に直ちに戻れます。 次にニュースを読みたくなりました。 ニュースリーダを起動して ... 読み終わりました。 またプログラムの編集を再開しようと思います。 ここで1番のウィンドウでニュースを読みましたので C-c C-w 3 を入力し Preserve の p を続けて入力します。 これで1番のバッファの内容は更新せずに、 現状のウィンドウ状態を3番のバッファに保存します。 つまり3番のウィンドウにニュースが移り、 1番のウィンドウにプログラム編集状態が戻りました。 C-c C-w 1 を入力してプログラムの編集を再開します。 メールが到着したら C-c C-w 2 を、ニュースを読むなら C-c C-w 3 を入力します。 メールとニュースだけを読み続ける場合のように 二つの状態を行ったり来たりする場合は C-c C-w SPC が便利です。 ***レジューム [#vb94fb87] revive.el と組み合わせて使うことにより、リジューム機能を利用できます。 C-c C-w C-r を入力すると、 A)save-all R)estore-all S)ave-this L)oad-this N)Load# ~)read-~ と表示されます。 ここで a を入力すると現在の全てのウィンドウの情報を ファイルにセーブすることができます。 r を入力するとファイルにセーブしたものをロードすることができます。 s,l を入力すると現在選択しているウィンドウ状態をそれぞれ セーブ/ロード します。 n を入力するとファイルから数字で指定したウィンドウ状態をロードします。 また、 C-x C と入力するとセーブ後に Emacs を終了します。 そして、次回 Emacs を起動した直後に resume-windows (C-c C-w C-r r)を起動することで 直ちに以前の状態に戻ることができます。 (emacs -f resume-windows として起動すると以前の状態でemacsが起動します) ***普通でないバッファの扱い [#wea26ad3] revive.elの説明文には、 mh-rmail ではカレントバッファが mh-folder-mode, gnus ではカレントバッファが gnus-Group-mode になります。 この対応関係は、変数 revive:major-mode-command-alist-default に書かれています。 この変数に登録されている以外のものを定義したい場合は、 (setq revive:major-mode-command-alist-private '((hogehoge-mode . hoge) (herohero-mode . herohero) ("タイプ&メニュー" . trr))) のように revive:major-mode-command-alist-private の値を設定すると 次回 resume した時に自動的に対応するコマンドが起動されます。 また上の例にあるように、major-mode(シンボル)の代わりに buffer-name(文字列)を指定することもできます。 と記述があります。 さらに詳しい使い方を知りたいならばwindows.el本体中に書かれているので それを読んでください。 #navi(UNIX/学生ツール,,footer)
ログインまたはアカウント作成