[alias]
	st = status
	co = checkout
	fx = commit --fixup=HEAD
	ci = commit -v
	cm = commit -m
	ri = rebase -i --autosquash
	wc = whatchanged
	ass = add
	amend = commit --amend -v
	full = show --format=fuller
	noed = commit --amend --no-edit
        history = log --graph --date-order --date=short --decorate --pretty=format:'%C(yellow)%h%Creset  %C(auto)%d%Creset %s  %Cgreen(%ar) %C(bold blue)<%an>%Creset'
	detailed = log --color --stat --pretty=fuller
	fixups = !sha=$( git -c color.ui=auto log --oneline -n 1000 | fzf +s --no-multi --prompt 'Fixup> ' ) && git commit --fixup "${sha%% *}"
	reverts = !sha=$( git -c color.ui=auto log --oneline -n 1000 | fzf +s --no-multi --prompt 'Revert> ' ) && git revert "${sha%% *}"

[http]
  sslVerify = true

[core]
  autocrlf = input
  whitespace = warn
  excludesfile = ~/.config/git/gitignore
	attributesFile = ~/.config/git/gitattributes
  pager = "{                                                           \
      COLUMNS=$(tput cols);                                            \
      if [ $COLUMNS -ge 80 ] && [ -z $FZF_PREVIEW_COLUMNS ]; then      \
          delta --side-by-side -w $COLUMNS;                            \
      elif [ $COLUMNS -ge 160 ] && [ ! -z $FZF_PREVIEW_COLUMNS ]; then \
          delta --side-by-side -w $FZF_PREVIEW_COLUMNS;                \
      else                                                             \
          delta;                                                       \
      fi                                                               \
  }"

[interactive]
  diffFilter = delta --color-only

[delta]
  side-by-side = false
  line-numbers = true
  syntax-theme = gruvbox-dark
  hunk-header-style = omit
  file-style = blue
  file-decoration-style = blue ul ol
  zero-style = dim syntax
  minus-non-emph-style = dim red
  minus-emph-style = bold red 52
  minus-empty-line-marker-style = normal "#3f0001"
  plus-non-emph-style = dim green
  plus-emph-style = bold green 22
  plus-empty-line-marker-style = normal "#002800"
  whitespace-error-style = reverse white
  file-added-label = [+]
  file-copied-label = [C]
  file-modified-label = [M]
  file-removed-label = [-]
  file-renamed-label = [R]
  line-numbers-left-format = "{nm:>1} "
  line-numbers-right-format = "{np:>1} "
  line-numbers-minus-style = red italic
  line-numbers-plus-style = green italic

[web]
  browser = firefox

[credential]
  helper = /usr/libexec/git-core/git-credential-libsecret

[merge]
  log = true
  tool = nvimerge
  conflictstyle = diff3

[mergetool "nvimerge"]
  cmd = nvim --cmd \":lua vim.g.noplugins=1\" -d \"$LOCAL\" \"$MERGED\" \"$BASE\" \"$REMOTE\" -c \"wincmd w\" -c \"wincmd J\"

[mergetool]
  prompt = false
  keepBackup = false

[diff]
  colorMoved = default
  algorithm = patience
  tool = nvimdiff
  renames = copies
  submodule = log
  compactionHeuristic = true

[difftool "nvimdiff"]
  cmd = nvim --cmd \":lua vim.g.noplugins=1\" -d \"$LOCAL\" \"$REMOTE\" -c \"wincmd w\" -c \"wincmd L\"
  trustexitcode = true

[commit]
  gpgsign = true
  verbose = true

[status]
  branch = true

[color]
  diff = auto
  status = auto
  branch = auto
  ui = auto

[color "decorate"]
  HEAD = cyan
  branch = yellow
  tag = magenta

[rerere]
  enabled = true

[grep]
  lineNumber = true
  extendRegexp = true

[gpg]
  program = gpg2

[log]
  decorate = short

[include]
  path = config.local

[blame]
  coloring = highlightRecent
  date     = human

[help]
  autocorrect = 1
