aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/git.kak12
1 files changed, 12 insertions, 0 deletions
diff --git a/autoload/git.kak b/autoload/git.kak
index aa6a66f..3c83a09 100644
--- a/autoload/git.kak
+++ b/autoload/git.kak
@@ -10,11 +10,16 @@ define-command gitui -params .. %{
declare-user-mode git
declare-user-mode git-r
+declare-user-mode git-d
map global user g ': enter-user-mode git<ret>' -docstring 'Git mode'
map global git s ': gitui<ret>' -docstring 'Git tui'
map global git A ': git add %val{buffile}<ret>' -docstring 'Add file'
map global git m ': git-line-blame<ret>' -docstring 'Blame selection lines'
+map global git d ': enter-user-mode git-d<ret>' -docstring 'Diff mode'
+map global git-d d ': git-open-diff<ret>' -docstring 'Open staged files'
+map global git-d c ': git-open-commit<ret>' -docstring 'Open files changed in last commit'
+
map global git r ': enter-user-mode git-r<ret>' -docstring 'Git re(base/set) mode'
map global git-r f ': git reset HEAD^1 -- %val{buffile}<ret>' -docstring 'Split file out of last commit'
@@ -36,3 +41,10 @@ define-command git-line-blame %{
terminal-singleton git-blame sh -c \
"git -p log -u -L '%sh{echo ""$kak_selection_desc"" | sed -E 's/\.[0-9]+//g'}:%val{buffile}' --color=always | delta"
}
+
+define-command git-open-diff -params 0..1 %{
+ eval %sh{ git diff --name-only "${1:-HEAD}" | sed 's/^/edit /' }
+}
+define-command git-open-commit -params 0..1 %{
+ eval %sh{ git show --name-only --pretty="" "$@" | sed 's/^/edit /' }
+}