deltaとmagit-deltaでgit の差分を綺麗に表示✨

この記事はemacs Advent Calendar 2021 の22日目の記事です。

小ネタで恐縮ですが、diff など表示するときに シンタックスハイライトして表示できるdelta というページャーと、delta を magit から呼び出せるようにする magit-delta というパッケージに感動したので紹介させてください。

delta とは

主には先も記載した通り diff など表示するときに シンタックスハイライトして表示できるツールとなっています。

詳しい機能の説明は下記となっています。
https://github.com/dandavison/delta#features

ハイライト以外にも良いなと個人的に思っているのは下記の機能です。

  • サイドバイサイドで縦に分割してdiff を表示できるオプション(--side-by-side)
  • 'n' や 'N' キーで 差分ごとに移動できるオプション(--navigate)
  • Githubになどにリンクできるオプション (--hyperlinks)

delta のインストール

下記を参照してください。
https://github.com/dandavison/delta#installation

ちなみに私は.gitconfigに下記のような設定を入れてます。
(後述のmagit-deltaを利用するだけであれば特に設定は不要と思います。)

.gitconfig
[core]
	pager = delta
[delta]
	side-by-side = true
	navigate = true
	hyperlinks = true
[interactive]
	diffFilter = delta --color-only

magit-delta

そしてすみません、emacs のadvent calendarなのでここから本題なのですが、
delta を terminal上からだけではなく、 magit と連携して利用することができます。
そのために magit-delta というパッケージを利用します。

自分はleaf.elを利用しているので、下記のような設定をinit.elに追加し、melpa経由でパッケージをインストールします。

    (leaf magit-delta
      :ensure t
      :after magit
      :hook (magit-mode-hook))

上記の設定ではmagit-mode-hook で magit-delta を起動するようにしているので、
magit上で diff を表示すれば自動的にdeltaで表示されます。

終わりに

ということで簡単ですが、 delta と magit-delta の紹介をしました。
シンタックスハイライトされるだけで差分の読みやすさが向上する感じがしますのでぜひお試しあれ💁
(あまりemacsの記事ではなかったかも…🙏)

original: zenn