エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

Evil tab機能を使えるようにする

自分はVimでよく:tabe とかってやってファイルを開くのでこの機能は是非使えるようにしたい。

evil-tabsというプラグインを作ってくれている方がいました。

これはelscreenというプラグインキーバインドをラップしてる感じです。 el-getで入れました。

(el-get-bundle evil)
(el-get-bundle elscreen)
(el-get-bundle evil-tabs)

これで以下をやれば完了です。

(require 'evil-tabs)
(global-evil-tabs-mode t)

すると、Vimと同じような操作でタブが作れるではないですか!!!すごい。これはすごい。
しかし、一つ不満点が。Vimと同じようにタブが一つの時はタブの表示をしないようにしたい。
できれば画面には余計な情報は載せたくない派なので。

elscreen.elを見ていると、使えそうな関数が提供されていました。

; elscreen.el
(defvar elscreen-screen-update-hook nil)
(defun elscreen-run-screen-update-hook ()
  (when elscreen-frame-confs
    (elscreen-notify-screen-modification-suppress
     (run-hooks 'elscreen-screen-update-hook)))
  (remove-hook 'post-command-hook 'elscreen-run-screen-update-hook))

elscreen-screen-update-hookに実行したい関数を入れておくとタブ更新の際に実行してくれるみたいです。
elscreen-one-screen-pという、タブ(screen)が1個の時はtを返す関数もあるので、以下のように書けました。

(add-hook 'elscreen-screen-update-hook
          '(lambda ()
             (setq elscreen-display-tab (if (elscreen-one-screen-p) nil t))))

これでタブが1個の時はタブバーが表示されなくなりました。
Emacsはプログラミングで設定している感覚が強くて楽しいですね。