vc-mode-line
最近知ったのですが, vc-modeが mode-lineに表示している情報(VCS+branch名: gitリポジトリであれば Gitとmasterを表示)はファイルが前のコミットから変更されている場合と されていない場合で異なります. わかりづらいですが, 変更がない場合 VCSとブランチ名のサパレータが -, 変更があった場合は :になります.
変更なし
変更あり
見づらい・わかりづらい
上記で示した通り, 見づらいし, わかりづらいんですが, 有用な情報だなと思ったので, 別情報を表示することにしてみました.
現在のバッファの変更 hunk数の表示
現在お試し中. git-gutterユーザ限定ではあるが, (git-gutter:buffer-hunks)
という APIで現在の hunk数を取得している. 変更内容にもよるが, 多すぎるとそろそろコミットしておかないとなぁという気分になれるのでなかなかよい.
(defvar my/vc-mode-line '(:propertize (:eval (let* ((backend (symbol-name (vc-backend (buffer-file-name)))) (branch (substring-no-properties vc-mode (+ (length backend) 2))) (state (if (bound-and-true-p git-gutter-mode) (cl-case (vc-state (buffer-file-name)) (edited (format ":%d" (git-gutter:buffer-hunks))) (otherwise "")) ""))) (concat "(" branch state ")")))) "Mode line format for VC Mode.") (put 'my/vc-mode-line 'risky-local-variable t) (setq-default mode-line-format '("%e" mode-line-front-space mode-line-mule-info mode-line-client mode-line-modified mode-line-remote mode-line-frame-identification mode-line-buffer-identification " " mode-line-position (vc-mode my/vc-mode-line) " " mode-line-modes mode-line-misc-info mode-line-end-spaces))
現在のバッファの変更状態を表示
(git-gutter:statistic)
APIを使ってみた場合(上記の設定にはめ込んでみてください). 戻り地は dot-listで carが追加行数, cdrが削除行数となっている. 具体的すぎるように思えるので保留.