18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Emacsのモードラインにgitのブランチ名を表示したいけど重いのはいやだ

Last updated at Posted at 2013-03-25

vc-modeがおもいです(吐血)

vcの動作が結構アレな重さだったので無効にしてやったらとっても快適になったんですが、
ブランチ名の表示は欲しいなーと思ったのでちょっと調べてみたら、いろいろ残念なものしか出てこなかった。

ので、さくっとつくりました。

[github] modeline-git-branch.el

シンプルにブランチ名を表示するだけのelです。
とにかく軽く動作することだけにこだわって作ってみました。
更新頻度高くて軽いので幸せになれます。
せっかくなのでマイナーモードにしてみました。

使うには、

  1. バイトコンパイルする

(byte-compile-file "modeline-git-branch.el")

  1. load-pathを通す

(add-to-list 'load-path "~/......")

  1. requireする

(require 'modeline-git-branch)

  1. マイナーモードを有効にする

(modeline-git-branch-mode 1)

だけです。

特徴としては、

  • 非同期プロセスを利用し、バックグラウンドでブランチ情報を取得。あなたのEmacsライフを邪魔しません。
  • バッファをアクティブにする度に自動で表示を更新。もうブランチを切り替えながらの作業でも混乱することはありません。

みたいな。

中身的には、とりあえず適当なhookからidle-timerに実行予約を積んでおいて、実行時に条件を満たしていれば1度だけ非同期プロセスを作って実行する。という感じです。
そのままだと「バッファをカレントにした時」に実行されるように設定してるつもりなので、気に入らなかったらフックを増やしたりしていじってみてください。

モードラインのフォーマットにデフォルトで挿入されてる(vc-mode vc-mode)を置き換える形で挿入してるので、vc-modeと一緒には使えません。そもそも使う意味は無い。
あと、普通にいろいろ不具合あるかもしれないので使ってみるなら気をつけてください。

おまけ。
vc-modeを起動しないようにする

;; vcを起動しないようにする
(custom-set-variables
 '(vc-handled-backends nil))

;; 不要なhookを外す
(remove-hook 'find-file-hook 'vc-find-file-hook)
(remove-hook 'kill-buffer-hook 'vc-kill-buffer-hook)
18
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?