e2wmでブックマークを操作するプラグイン、e2wm-bookmark.el


Emacsのカオスなウィンドウ管理から開放してくれるelisp、e2wm.elはプラグインを組み合わせて自分好みのパースペクティブを定義できるのもその素敵なところの一つです。

僕もRでの作業用にプラグインとパースペクティブを作って、便利に使ってます。
EmacsでのR開発環境をRstudio、Eclipseライクにするe2wm-R.el

e2wm.elの作者であるkiwanamiさんも、magit専用パースペクティブを書かれていて、かなり便利そう。
e2wm の magit パースペクティブ – 技術日記@kiwanami

このように可能性は無限大なe2wm.elですが、今回はそのパースペクティブに組みこむプラグインを書いてみました。

e2wm-bookmark.elとは

Emacsに標準の機能であるBookmarkをe2wm上で管理するためのプラグインが入っています。Bookmark自体いろいろなケースで使われるものですので、オリジナルのパースペクティブを作る時なんかに使ってもらえるといいなと思っています。

インストール

e2wm-bookmark.elを使うには当たり前ですがe2wm.elとwindow-layout.elが必要となります。ロードパスの通ったディレクトリに配置しといてください。
e2wm.el
window-layout.el

e2wm自体の操作については、kiwanamiさんが詳しく説明してくれていますので、まずそちらを読まれると良いと思います。

広くなった画面を有効利用できる、Emacs内Window管理ツール e2wm.el を作ってみた。(旧名称 ewm.el) – 技術日記@kiwanami

次に、githubからe2wm-bookmark.elを落としてきて
myuhe/e2wm-bookmark.el – GitHub

.emacsあたりに(require ‘e2wm-bookmark)とすれば完了です。

パースペクティブの設定

e2wm-bookmark.elには、パースペクティブも定義されていて、e2wmが起動していれば、M-x e2wm:dp-code-ext でそのパースペクティブを表示することができます。

他にも例えば、次のようなコードを.emacsに書いておけば、e2wm.elで定義されているcodeパースペクティブの中に、Bookmarkプラグインが追加されます。

(setq e2wm:c-code-recipe
      '(| (:left-max-size 50)
          (- (:upper-size-ratio 0.4)
             files
             (- (:upper-size-ratio 0.5)
                bookmarks history))
          (- (:upper-size-ratio 0.7)
             (| (:right-max-size 50)
                main imenu)
             sub)))
(setq e2wm:c-code-winfo
      '((:name main)
        (:name bookmarks :plugin bookmarks-list)
        (:name files :plugin files)
        (:name history :plugin history-list)
        (:name sub :buffer "*info*" :default-hide t)
        (:name imenu :plugin imenu :default-hide nil))))

こんな感じで左側に三つのプラグインが並びます。

ただ含まれているパースペクティブはデモ的なものなので、是非自分の使い方にあったパースペクティブを定義することをお薦めしてみてください。

使いかた

キーバインドの一覧を載せておきます。 基本的にはBookmarkの操作と変わらないと思います。

j,n,C-n 次の行へ移動
k,p,C-p 前の行へ移動
r ブックマーク名を変更
d 削除するオブジェクトをマーク
D ブックマークを削除
M-d ブックマークを全て選択
u 削除するオブジェクトをアンマーク
U 削除するオブジェクトをアンマーク
x マークしたファイルを削除
g 再表示
w ブックマークのディレクトリ名をキルリングに送る
f 選択したディレクトリをfilesプラグインに表示
q mainに戻る

たいした特徴もないのですが、強いてあげればfilesプラグインと連携したアクショ ンがあります。ディレクトリを選択した状態で、リターンを押すとmainにdiredが表 示されますが、fキーだとfilesプラグインのwindowにディレクトリの一覧が表示されます。

それと、Bookmarkは、キャレットの位置も記憶しているので、大きなファイルとかを編集する際に編集している場所を示すマーカの代わりとしてもなかなか便利です。

Bookmarkプラグインなどいろいろなプラグインから、是非自分に合った使い方を見つけてみてください。