blob: 6f4015cd2fb2f9858dc20bd980d27b0fc159ef14 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
define-command gitui -params .. %{
connect terminal env "EDITOR=kak -c %val{session}" "VISUAL=kak -c %val{session}" gitu %arg{@}
}
declare-user-mode git
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 c ': git add commit<ret>' -docstring 'Commit'
map global git C ': git add commit --amend<ret>' -docstring 'Amend commit'
# Hunk
map global git n ': git next-hunk<ret>' -docstring 'Next hunk'
map global git p ': git prev-hunk<ret>' -docstring 'Previous hunk'
map global git h ': git-toggle-diff<ret>' -docstring 'Toggle hunk indicators'
set-option global git_diff_add_char "+"
set-option global git_diff_del_char "-"
set-option global git_diff_mod_char "~"
set-option global git_diff_top_char "^"
define-command git-toggle-diff %{
try %{ remove-highlighter window/git-diff } catch %{ git show-diff }
}
# TODO: Toggle this
hook global -group git-diff-if-repo EnterDirectory .* %{
remove-hooks global git-diff
evaluate-commands %sh{
if (git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
echo "
hook global -group git-diff ModeChange .*:.*:normal %{ try %{git update-diff} }
hook global -group git-diff WinCreate .* %{ try %{git update-diff} }
hook global -group git-diff BufReload .* %{ try %{git update-diff} }
"
fi
}
}
# Git window actions
# declare-option -hidden str git_file
# define-command -hidden git-eval-status-line %{
# evaluate-commands %sh{
# file=$(echo "$kak_selection" | sed 's/^\s*[A-Z?]\+\s\+//')
# echo "set-option window git_file '$file'"
# }
# }
# declare-user-mode git-status-commit
# declare-user-mode git-status-log
# map global git s ':git status -bs<ret>' -docstring 'Git status UI'
# hook -group git-status global WinSetOption filetype=git-status %{
# set-option buffer readonly true
# map window normal R ':git status -bs<ret>'
# map window normal q ': delete-buffer %val{buffile}<ret>'
# map window user l ': enter-user-mode git-status-log<ret>'
# map window git-status-log l ': git log --oneline<ret>'
# map window normal d 'x: git-eval-status-line<ret>: git diff -- %opt{git_file}'
# map window normal c ': enter-user-mode git-status-commit<ret>'
# map window git-status-commit c ': git commit<ret>'
# map window git-status-commit a ': git commit --amend<ret>'
# }
# hook -group git-log global WinSetOption filetype=git-log %{
# set-option buffer readonly true
# map window normal q ': git status -bs<ret>'
# }
# hook -group git-diff global WinSetOption filetype=git-diff %{
# set-option buffer readonly true
# map window normal q ': git status -bs<ret>'
# }
|