- shackle 20170213.1534(in MELPA)
- Enforce rules for popups
概要
shackle.el は、バッファの表示方法を
シンプルなルールで記述してカスタマイズするものです。
Emacs24から display-buffer-alist という
表示方法を細かく設定するオプションが導入されましたが、
複雑怪奇な代物で理解がとても困難です。
それを理解しやすい形で記述できるようにします。
バッファの表示方法とかポップアップといえば popwin.el(本家) が有名です。
しかし、タイマーを使っているなど、かなり入れ込んだ構造になっていて、
shackle.el作者曰く、デバッグ困難で不可解なバグがあるらしいです。
対してshackle.elは、標準のdisplay-buffer-alistに
ひとつのエントリを追加するだけの
シンプルで内部理解しやすい構造になっています。
popwin.el ではC-gでポップアップウィンドウを消せますが、
*M-x winner-undo*をキーに割り当ててしまえば(ここではC-z)
特にメリットを感じません。
シンプルな方が好きならばshackle.elを試してみてください。
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.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/")))
初めてshackleを使う方は
以下のコマンドを実行します。
M-x package-install shackle
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name shackle
設定 150310063649.shackle.el(以下のコードと同一)
(require 'shackle) (setq shackle-rules '(;; *compilation*は下部に2割の大きさで表示 (compilation-mode :align below :ratio 0.2) ;; ヘルプバッファは右側に表示 ("*Help*" :align right) ;; 補完バッファは下部に3割の大きさで表示 ("*Completions*" :align below :ratio 0.3) ;; M-x helm-miniは下部に7割の大きさで表示 ("*helm mini*" :align below :ratio 0.7) ;; 他のhelmコマンドは右側に表示 (バッファ名の正規表現マッチ) ("\*helm" :regexp t :align right) ;; 上部に表示 ("foo" :align above) ;; 別フレームで表示 ("bar" :frame t) ;; 同じウィンドウで表示 ("baz" :same t) ;; ポップアップで表示 ("hoge" :popup t) ;; 選択する ("abc" :select t) )) (shackle-mode 1) (setq shackle-lighter "") ;;; C-zで直前のウィンドウ構成に戻す (winner-mode 1) (global-set-key (kbd "C-z") 'winner-undo) ;;;; test ;; (display-buffer (get-buffer-create "*compilation*")) ;; (display-buffer (get-buffer-create "*Help*")) ;; (display-buffer (get-buffer-create "foo")) ;; (display-buffer (get-buffer-create "bar")) ;; (display-buffer (get-buffer-create "baz")) ;; (display-buffer (get-buffer-create "hoge")) ;; (display-buffer (get-buffer-create "abc"))
実行方法
$ wget http://rubikitch.com/f/150310063649.shackle.el $ emacs -Q -f package-initialize -l 150310063649.shackle.el
上の設定をすると、このように表示されます。
スクリーンショットを撮る際フォントを大きくしているため
ウィンドウが小さすぎるように見えますが、
作業時のフォントでは問題ありません。
Fig1: *compilation*
Fig2: *Help*
Fig3: *completions*
Fig4: *helm mini*
Fig5: *helm buffers*
Fig6: foo
Fig7: bar(別フレーム)
Fig8: baz(同一ウィンドウ)
Fig9: hoge
Fig10: abc
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。