diff --git a/.config/kak/autoload/git-mode.kak b/.config/kak/autoload/git-mode.kak index 887031e6..96abf5ff 100644 --- a/.config/kak/autoload/git-mode.kak +++ b/.config/kak/autoload/git-mode.kak @@ -16,3 +16,33 @@ define-command git-blame %{ } } map -docstring "blame" global git b ": git-blame" +map -docstring "show diff" global git d ": git show-diff" +map -docstring "hide diff" global git D ": git hide-diff" + +provide-module git-diff %~ + +define-command -hidden git-show-diff %{ + evaluate-commands %sh{ + if [ $kak_buffile != $kak_bufname ] && git ls-files --error-unmatch "$kak_buffile" > /dev/null 2>&1; then + echo "git show-diff" + fi + } +} +hook global WinCreate .* %{ + evaluate-commands %sh{ + if [ $kak_buffile != $kak_bufname ] && git ls-files --error-unmatch "$kak_buffile" > /dev/null 2>&1; then + echo "hook window BufWritePost .* git-show-diff" + echo "hook window BufReload .* git-show-diff" + fi + } +} + +hook global WinCreate .* %{ + evaluate-commands %sh{ + if [ $kak_buffile != $kak_bufname ] && git ls-files --error-unmatch "$kak_buffile" > /dev/null 2>&1; then + echo "git show-diff" + fi + } +} + +~