elscreen-separate-buffer-list 20161106.1958(in MELPA)
Separate buffer list manager for elscreen

概要

<2015-02-24 Tue> 設定を変更しました。
<2015-02-23 Mon> idoを使うようになったため、不具合が修正されました!!

persp-mode.el(レビュー) はEmacsでワークスペースを提供しますが、
古くからある elscreen.el(レビュー) とは別のインターフェースです。

ワークスペースとはウィンドウ構成に加えて
個別のバッファリストをも保持しています。

元来elscreen.elにはウィンドウ構成をGNU Screen風に切り替えるものでしたが、
この elscreen-separate-buffer-list.el を導入すれば
screenごとのバッファリストを持たせられます。

いわばelscreenを perspective 化するものです。

perspectiveとは「視点・見通し」という意味があり、
現在のワークスペースにおいて選択できるバッファを限定することで
現在のタスクに視点を集中し、見通しを良くします。

こうすることで、Emacs内で複数のプロジェクトを動かしているときに、
そのプロジェクトに集中できるようになります。

C-z c(M-x elscreen-create) は
*scratch*と*Message*以外のバッファが見えない状態で
新しいscreenを作成するように変更されます。

対してC-z C(M-x elscreen-clone)は
元のscreenのバッファリストをコピーします。

なお、Emacs24.4で導入されたnadvice.el を使っているので、
Emacs24.4以降でないと動作しません。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてelscreen-separate-buffer-listを使う方は
以下のコマンドを実行します。

M-x package-install elscreen-separate-buffer-list

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name elscreen-separate-buffer-list

バッファリストはidoレベルで制御

<2015-02-23 Mon> 更新

elscreen-separate-buffer-list.elも
perspective.elやpersp-mode.elと同様
idoが作るバッファリストを操作しています。

よって、buffer-list関数で全バッファが見えます。

それにより、標準のC-x C-b (list-buffers)や
M-x ibufferM-x bs-show では全バッファが見えます。

それに対し、 ido-mode を有効にした状態で
C-x bでバッファ選択(ido-switch-buffer)や
ido-read-buffer を呼べばscreenごとのバッファリストになります。

また、 helm のバッファリストはidoを介しているので、
M-x helm-miniM-x helm-buffers-list では
screenごとのバッファリストが表示されます。

対して直接buffer-listを呼んでいる
M-x anything-miniM-x anything-buffers-list
全バッファが表示されます。

よって、elscreen-separate-buffer-list.elは
helmやidoと併用することが前提となります。

以前のバージョンでは直接 buffer-list 関数に
アドバイスをかけていましたが、
存在するバッファを存在しないものとみなされる不具合が生じていました。

ワークスペースを永続化するには

Emacsでperspective(ワークスペース)を実現するには、
perspective.el(レビュー)persp-mode.el がありますが、
前者は永続化できないのに対し、後者は永続化できます。

elscreen + elscreen-separate-buffer-list だと永続化できませんが、
さらにelscreen-persist.el(レビュー) も導入すれば永続化できます。

それでも開いているファイルバッファまでは復元できないので、
ファイルバッファも復元したければ save-visited-files.el(レビュー)
導入してください。

persp-mode.elはsave-visited-files.elのように
ファイルバッファも復元するので、
persp-mode.elと互角にするには以上の4つのelispを導入してください。

僕個人としてはバッファを削除しない派なので
save-visited-files.elの機能まではいらないです。

recentf (M-x helm-mini 等)でファイルをすぐに開いてしまいます。

設定 150222051252.elscreen-separate-buffer-list.el(以下のコードと同一)

(setq elscreen-prefix-key (kbd "C-z"))
(elscreen-start)
;; (elscreen-persist-mode 1)
(elscreen-separate-buffer-list-mode 1)

本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。