From 581c7d07e482585054c960725eff4f0a20c62a7d Mon Sep 17 00:00:00 2001 From: Fernando Schauenburg Date: Wed, 12 Jul 2023 19:52:39 +0200 Subject: [PATCH] git: add git-delta as diff pager --- bin/delta-wrapper | 7 +++++++ config/git/config | 27 ++++++++++++++++++++++++++- debian.sh | 18 ++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100755 bin/delta-wrapper diff --git a/bin/delta-wrapper b/bin/delta-wrapper new file mode 100755 index 0000000..c875471 --- /dev/null +++ b/bin/delta-wrapper @@ -0,0 +1,7 @@ +#!/bin/sh +# This wrapper is intended to be used as pager for git: +# - Use `git-delta` if installed. +# - Otherwise, fall back to `less`. +command -v delta >/dev/null 2>&1 && exec delta --true-color=always "$@" +exec less -F -X "$@" + diff --git a/config/git/config b/config/git/config index 035fba6..8a8aeeb 100644 --- a/config/git/config +++ b/config/git/config @@ -22,7 +22,7 @@ [core] excludesfile = ~/.config/git/ignore trustctime = false # http://www.git-tower.com/blog/make-git-rebase-safe-on-osx/ - pager = less -F -X + pager = delta-wrapper [init] defaultBranch = main @@ -30,14 +30,39 @@ [log] date = human +[delta] + navigate = true # use n and N to navigate diff secitons + + commit-decoration-style = "#b58900" box + commit-style = raw + dark = true + file-decoration-style = "#268bd2" box ul + file-style = "#268bd2" + hunk-header-style = omit + line-numbers = true + line-numbers-minus-style = "#dc322f" italic + line-numbers-plus-style = "#719e07" italic + line-numbers-left-style = "#586e75" + line-numbers-right-style = "#eee8d5" + line-numbers-zero-style = "#073642" + minus-emph-style = normal "#842b2c" + minus-style = normal "#2c2429" + plus-emph-style = syntax "#446c14" + plus-style = syntax "#173921" + syntax-theme = Nord + [push] default = upstream [pull] ff = only +[diff] + colorMoved = default + [merge] tool = vimdiff + conflictstyle = diff3 [mergetool] prompt = false diff --git a/debian.sh b/debian.sh index 17c6cfb..4b2cd9c 100755 --- a/debian.sh +++ b/debian.sh @@ -4,6 +4,7 @@ set -e USERNAME=fernando DOTFILES_URL="https://github.com/fschauen/dotfiles.git" NEOVIM_VERSION="0.9.1" +GIT_DELTA_VERSION="0.16.5" if [ -t 1 ]; then sgr0="$(printf '\033[0m')" @@ -113,6 +114,20 @@ install_neovim() { fi } +install_git_delta() { + delta_url="https://github.com/dandavison/delta/releases/download/${GIT_DELTA_VERSION}/git-delta-musl_${GIT_DELTA_VERSION}_amd64.deb" + delta_deb="git-delta-musl_${GIT_DELTA_VERSION}_amd64.deb" + delta_bin="/usr/bin/delta" + + if [ ! -f "${delta_bin}" ]; then + [ ! -f "${delta_deb}" ] && $cmd curl -L -o "${delta_deb}" "${delta_url}" + $cmd dpkg -i "${delta_deb}" + $cmd rm -vf "${delta_deb}" + else + echo "${yellow}SKIPPED:${sgr0} ${delta_bin} exists" + fi +} + setup_user() { # Change shell to `zsh` and get rid of bash files. $cmd chsh -s /bin/zsh "$USERNAME" @@ -149,6 +164,9 @@ execute() { heading "Install neovim v$NEOVIM_VERSION" install_neovim # Must come after filesystem tweaks because of man pages. + heading "Install git-delta v$GIT_DELTA_VERSION" + install_git_delta + heading "Setup user: $USERNAME" setup_user