読者です 読者をやめる 読者になる 読者になる

cloverrose's blog

Python, Machine learning, Emacs, CI/CD, Webアプリなど

tabbar.elでEmacsをタブエディタ化 (自動で最適な設定をしたい)

最近dot.emacsの設定をしていますが、今回はタブエディタ化についてまとめたいと思います。
tabbar.elを使ってEmacsをタブエディタ化するエントリーは検索すれば引っかかると思いますが、
今回はタブの色やフォントを自動で(ハードコーディングせずに)設定する方法を紹介したいと思います。

color-theme使っていたり、OSごとにフォントの設定をしている方は特に役立つのでは中と思います。

tabbar.el選択の理由

最初はelscreen.elを使う予定でしたが、
APEL非依存版elscreenをバイトコンパイル可能にしてみた - 備忘録
elscreen 改め tabbar のインストールログ - テクノ組曲を読むと、
Emacsをタブエディタ化する方法として、昔はelscreenが主流だったが、最近はtabbarの方がエレガントなのかなと感じました。

さて,このオリジナルのelscreen.elであるが,APELという古いパッケージに依存している.
現在,開発が事実上停止していると思われ,Emacsのバージョンアップにも追随できていない.
なお,2012年9月22日現在,公式ページからのAPELのダウンロードは不可能な状況である*1.

http://d.hatena.ne.jp/tam5917/20120922/1348286748

やはりどうしてもバッファのタブ切り替えがあきらめきれず elscreen の代用品を探していたところ、ありました。tabbar.el です。tabbar は APEL に依存していないので導入も簡単です。tabbar.el をロードパスに配置して .emacs を編集するだけでインストールできます。以下、設定内容。あ、バージョンは 2.0 です。

http://d.hatena.ne.jp/plasticster/20110825/1314271209

特に、自分はまだ設定全然しておらずAPELを入れていないので、APELなしで動くならそっちの方がいいなと思いました。
elscreenをAPELなしで動かすバージョンもあります。 APEL非依存版elscreenをバイトコンパイル可能にしてみた - 備忘録

そういう理由で今回はtabbarを使います。

tabbar.elの一般的な使い方

tabbar.elの使い方とかカスタマイズはelscreen 改め tabbar のインストールログ - テクノ組曲などにあります。

自動で最適な設定をしたい

上記のカスタマイズでは、タブの色、選択されたタブの色、フォントなどをハードコーディングしています。
自分はcolor-themeを使っていたり、フォントについてもOSごとに設定しているので、自動でこれらの設定が済ませられる方法を考えました。

フォントは現在使っているフォントを使えばよさそうです。
またタブの見た目はモードラインと似せればどんなcolor-themeでもそれなりに親和性が高いものになるのではないかと思い以下のようにしました

  • タブバー自体および選択されていないタブの背景色は非アクティブなモードラインの背景
  • 選択されているタブの背景色はアクティブなモードラインの背景
  • 選択されていないタブの文字色は非アクティブなモードラインの文字色
  • 選択されているタブの文字色はアクティブなモードラインの文字色

最終的に以下のような設定ファイルになりました

おまけ

当初モードラインの背景色そのままではなくてすこし薄くしたり濃くしたりほうがいいかなとか考えて、以下の様な関数を定義した。