Skip to content

Commit 0a53c05

Browse files
authored
Merge pull request #16 from SleepyBag/key-binding
Add: allow customizing key-bindings
2 parents ed35ae8 + 50a69d7 commit 0a53c05

File tree

4 files changed

+49
-29
lines changed

4 files changed

+49
-29
lines changed

lib/modules/branch.sh

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
#!/usr/bin/env bash
22

3+
GIT_FUZZY_BRANCH_WORKING_COPY_KEY=${GIT_FUZZY_BRANCH_WORKING_COPY_KEY:-Ctrl-P}
4+
GIT_FUZZY_BRANCH_MERGE_BASE_KEY=${GIT_FUZZY_BRANCH_MERGE_BASE_KEY:-Alt-P}
5+
GIT_FUZZY_BRANCH_COMMIT_LOG_KEY=${GIT_FUZZY_BRANCH_COMMIT_LOG_KEY:-Alt-L}
6+
GIT_FUZZY_BRANCH_CHECKOUT_KEY=${GIT_FUZZY_BRANCH_CHECKOUT_KEY:-Alt-F}
7+
GIT_FUZZY_BRANCH_DELETE_BRANCH_KEY=${GIT_FUZZY_BRANCH_DELETE_BRANCH_KEY:-Alt-D}
8+
39
GF_BRANCH_RELOAD="reload(git fuzzy helper branch_menu_content)"
410

511
GF_BRANCH_CHECKOUT="git fuzzy helper branch_checkout {1}"
@@ -21,21 +27,21 @@ gf_fzf_branch() {
2127
BRANCH_HEADER='
2228
Type to filter. '"${WHITE}Enter${NORMAL} to ${GREEN}ACCEPT${NORMAL}"'
2329
24-
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}working copy${NORMAL} ${WHITE}Ctrl-P${NORMAL} $BRANCH_HEADER_BRANCH_CHECKOUT"'
25-
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}merge-base${NORMAL} ${WHITE}Alt-P${NORMAL} ${GREEN}${BOLD}checkout ${YELLOW}${BOLD}📁${NORMAL} ${WHITE}Alt-F${NORMAL}"'
26-
'"${GREEN}commit log${NORMAL} ${WHITE}Alt-L${NORMAL} ${RED}${BOLD}delete branch ✗${NORMAL} ${WHITE}Alt-D${NORMAL}"'
30+
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}working copy${NORMAL} ${WHITE}$GIT_FUZZY_BRANCH_WORKING_COPY_KEY${NORMAL} $BRANCH_HEADER_BRANCH_CHECKOUT"'
31+
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}merge-base${NORMAL} ${WHITE}$GIT_FUZZY_BRANCH_MERGE_BASE_KEY${NORMAL} ${GREEN}${BOLD}checkout ${YELLOW}${BOLD}📁${NORMAL} ${WHITE}$GIT_FUZZY_BRANCH_CHECKOUT_KEY${NORMAL}"'
32+
'"${GREEN}commit log${NORMAL} ${WHITE}$GIT_FUZZY_BRANCH_COMMIT_LOG_KEY${NORMAL} ${RED}${BOLD}delete branch ✗${NORMAL} ${WHITE}$GIT_FUZZY_BRANCH_DELETE_BRANCH_KEY${NORMAL}"'
2733
2834
'
2935

3036
# shellcheck disable=2046,2016,2090,2086
3137
gf_fzf_one -m \
3238
--header "$BRANCH_HEADER" \
3339
$BRANCH_CHECKOUT_BINDING \
34-
--bind 'alt-f:execute(git fuzzy helper branch_checkout_files {1})' \
35-
--bind "alt-d:$GF_BRANCH_DELETE_BINDING" \
36-
--bind 'alt-l:execute(git fuzzy log {1})' \
37-
--bind 'ctrl-p:execute(git fuzzy diff {1})' \
38-
--bind 'alt-p:execute(git fuzzy diff "$(git merge-base "'"$GF_BASE_BRANCH"'" {1})" {1})' \
40+
--bind $GIT_FUZZY_BRANCH_CHECKOUT_KEY':execute(git fuzzy helper branch_checkout_files {1})' \
41+
--bind "$GIT_FUZZY_BRANCH_DELETE_BRANCH_KEY:$GF_BRANCH_DELETE_BINDING" \
42+
--bind $GIT_FUZZY_BRANCH_COMMIT_LOG_KEY':execute(git fuzzy log {1})' \
43+
--bind $GIT_FUZZY_BRANCH_WORKING_COPY_KEY':execute(git fuzzy diff {1})' \
44+
--bind $GIT_FUZZY_BRANCH_MERGE_BASE_KEY':execute(git fuzzy diff "$(git merge-base "'"$GF_BASE_BRANCH"'" {1})" {1})' \
3945
--preview 'git fuzzy helper branch_preview_content {1}' | \
4046
awk '{ print $1 }'
4147
}

lib/modules/log.sh

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
#!/usr/bin/env bash
22

3+
GIT_FUZZY_LOG_WORKING_COPY_KEY=${GIT_FUZZY_LOG_WORKING_COPY_KEY:-Ctrl-P}
4+
GIT_FUZZY_MERGE_BASE_KEY=${GIT_FUZZY_MERGE_BASE_KEY:-Alt-P}
5+
GIT_FUZZY_COMMIT_KEY=${GIT_FUZZY_COMMIT_KEY:-Alt-D}
6+
37
# shellcheck disable=2016
48
GF_LOG_HEADER='
59
Use '"${YELLOW}|${NORMAL} to separate CLI args for ${MAGENTA}git log${NORMAL} vs ${MAGENTA}git diff${NORMAL}. ${WHITE}Enter${NORMAL} to ${GREEN}ACCEPT${NORMAL}"'
610
7-
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}working copy${NORMAL} ${WHITE}Ctrl-P${NORMAL} ${GRAY}-- search messages${NORMAL} ${MAGENTA}--grep=Foo${NORMAL}"'
8-
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}merge-base${NORMAL} ${WHITE}Alt-P${NORMAL} ${GRAY}-- search patch${NORMAL} ${MAGENTA}-G 'Foo'${NORMAL}"'
9-
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}commit${NORMAL} ${WHITE}Alt-D${NORMAL} ${GRAY}-- customize patch${NORMAL} ${MAGENTA}-G 'Foo' | -W -- foo.c${NORMAL}"'
11+
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}working copy${NORMAL} ${WHITE}$GIT_FUZZY_LOG_WORKING_COPY_KEY${NORMAL} ${GRAY}-- search messages${NORMAL} ${MAGENTA}--grep=Foo${NORMAL}"'
12+
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}merge-base${NORMAL} ${WHITE}$GIT_FUZZY_MERGE_BASE_KEY${NORMAL} ${GRAY}-- search patch${NORMAL} ${MAGENTA}-G 'Foo'${NORMAL}"'
13+
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}commit${NORMAL} ${WHITE}$GIT_FUZZY_COMMIT_KEY${NORMAL} ${GRAY}-- customize patch${NORMAL} ${MAGENTA}-G 'Foo' | -W -- foo.c${NORMAL}"'
1014
1115
'
1216

@@ -18,9 +22,9 @@ gf_fzf_log() {
1822
--header "$GF_LOG_HEADER" \
1923
--preview 'git fuzzy helper log_preview_content {1} {q}' \
2024
--bind 'change:reload(git fuzzy helper log_menu_content {q})' \
21-
--bind 'alt-d:execute(git fuzzy diff {1}^ {1})' \
22-
--bind 'ctrl-p:execute(git fuzzy diff {1})' \
23-
--bind 'alt-p:execute(git fuzzy diff "$(git merge-base "'"$GF_BASE_BRANCH"'" {1})" {1})'
25+
--bind $GIT_FUZZY_COMMIT_KEY':execute(git fuzzy diff {1}^ {1})' \
26+
--bind $GIT_FUZZY_LOG_WORKING_COPY_KEY':execute(git fuzzy diff {1})' \
27+
--bind $GIT_FUZZY_MERGE_BASE_KEY':execute(git fuzzy diff "$(git merge-base "'"$GF_BASE_BRANCH"'" {1})" {1})'
2428
}
2529

2630
gf_log() {

lib/modules/reflog.sh

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
#!/usr/bin/env bash
22

3+
GIT_FUZZY_REFLOG_WORKING_COPY_KEY=${GIT_FUZZY_REFLOG_WORKING_COPY_KEY:-Ctrl-P}
4+
GIT_FUZZY_REFLOG_MERGE_BASE_KEY=${GIT_FUZZY_REFLOG_MERGE_BASE_KEY:-Alt-P}
5+
GIT_FUZZY_REFLOG_COMMIT_KEY=${GIT_FUZZY_REFLOG_COMMIT_KEY:-Alt-D}
6+
37
# shellcheck disable=2016
48
GF_REFLOG_HEADER='
59
Use '"${YELLOW}|${NORMAL} to separate CLI args for ${MAGENTA}git reflog${NORMAL} vs ${MAGENTA}git diff${NORMAL}. ${WHITE}Enter${NORMAL} to ${GREEN}ACCEPT${NORMAL}"'
610
7-
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}working copy${NORMAL} ${WHITE}Ctrl-P${NORMAL} ${GRAY}-- search messages${NORMAL} ${MAGENTA}--grep=Foo${NORMAL}"'
8-
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}merge-base${NORMAL} ${WHITE}Alt-P${NORMAL} ${GRAY}-- search patch${NORMAL} ${MAGENTA}-G 'Foo'${NORMAL}"'
9-
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}commit${NORMAL} ${WHITE}Alt-C${NORMAL} ${GRAY}-- customize patch${NORMAL} ${MAGENTA}-G 'Foo' | -W -- foo.c${NORMAL}"'
11+
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}working copy${NORMAL} ${WHITE}$GIT_FUZZY_REFLOG_WORKING_COPY_KEY${NORMAL} ${GRAY}-- search messages${NORMAL} ${MAGENTA}--grep=Foo${NORMAL}"'
12+
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}merge-base${NORMAL} ${WHITE}$GIT_FUZZY_REFLOG_MERGE_BASE_KEY${NORMAL} ${GRAY}-- search patch${NORMAL} ${MAGENTA}-G 'Foo'${NORMAL}"'
13+
'"${YELLOW}${BOLD}${NORMAL} ${GREEN}commit${NORMAL} ${WHITE}$GIT_FUZZY_REFLOG_COMMIT_KEY${NORMAL} ${GRAY}-- customize patch${NORMAL} ${MAGENTA}-G 'Foo' | -W -- foo.c${NORMAL}"'
1014
1115
'
1216

@@ -18,9 +22,9 @@ gf_fzf_reflog() {
1822
--header "$GF_REFLOG_HEADER" \
1923
--preview 'git fuzzy helper reflog_preview_content {1} {q}' \
2024
--bind 'change:reload(git fuzzy helper reflog_menu_content {q})' \
21-
--bind 'alt-d:execute(git fuzzy diff {1}^ {1})' \
22-
--bind 'ctrl-p:execute(git fuzzy diff {1})' \
23-
--bind 'alt-p:execute(git fuzzy diff "$(git merge-base "'"$GF_BASE_BRANCH"'" {1})" {1})'
25+
--bind $GIT_FUZZY_REFLOG_COMMIT_KEY':execute(git fuzzy diff {1}^ {1})' \
26+
--bind $GIT_FUZZY_REFLOG_WORKING_COPY_KEY':execute(git fuzzy diff {1})' \
27+
--bind $GIT_FUZZY_REFLOG_MERGE_BASE_KEY':execute(git fuzzy diff "$(git merge-base "'"$GF_BASE_BRANCH"'" {1})" {1})'
2428
}
2529

2630
gf_reflog() {

lib/modules/status.sh

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
#!/usr/bin/env bash
22
# shellcheck disable=2016
33

4+
GIT_FUZZY_STATUS_ADD_KEY=${GIT_FUZZY_STATUS_ADD_KEY:-Alt-S}
5+
GIT_FUZZY_STATUS_EDIT_KEY=${GIT_FUZZY_STATUS_EDIT_KEY:-Alt-E}
6+
GIT_FUZZY_STATUS_COMMIT_KEY=${GIT_FUZZY_STATUS_EDIT_KEY:-Alt-C}
7+
GIT_FUZZY_STATUS_RESET_KEY=${GIT_FUZZY_STATUS_RESET_KEY:-Alt-R}
8+
GIT_FUZZY_STATUS_DISCARD_KEY=${GIT_FUZZY_STATUS_DISCARD_KEY:-Alt-U}
9+
410
GF_STATUS_HEADER='
511
Type to filter. '"${WHITE}Enter${NORMAL} to ${GREEN}ACCEPT${NORMAL}"'
612
713
'"${GRAY}-- (${NORMAL}*${GRAY}) editor: ${MAGENTA}${EDITOR} ${NORMAL}${GF_EDITOR_ARGS}${NORMAL}"'
8-
'" * ${GREEN}${BOLD}edit ✎${NORMAL} ${WHITE}Alt-E${NORMAL}"'
9-
'"${GREEN}all ☑${NORMAL} ${WHITE}Alt-A${NORMAL} ${GREEN}stage ${BOLD}${NORMAL} ${WHITE}Alt-S${NORMAL} ${RED}${BOLD}discard ✗${NORMAL} ${WHITE}Alt-U${NORMAL}"'
10-
'"${GREEN}none ☐${NORMAL} ${WHITE}Alt-D${NORMAL} ${GREEN}reset ${RED}${BOLD}${NORMAL} ${WHITE}Alt-R${NORMAL} * ${RED}${BOLD}commit ${NORMAL}${RED}${NORMAL} ${WHITE}Alt-C${NORMAL}"'
14+
'" * ${GREEN}${BOLD}edit ✎${NORMAL} ${WHITE}$GIT_FUZZY_STATUS_EDIT_KEY${NORMAL}"'
15+
'"${GREEN}all ☑${NORMAL} ${WHITE}Alt-A${NORMAL} ${GREEN}stage ${BOLD}${NORMAL} ${WHITE}$GIT_FUZZY_STATUS_ADD_KEY${NORMAL} ${RED}${BOLD}discard ✗${NORMAL} ${WHITE}$GIT_FUZZY_STATUS_DISCARD_KEY${NORMAL}"'
16+
'"${GREEN}none ☐${NORMAL} ${WHITE}Alt-D${NORMAL} ${GREEN}reset ${RED}${BOLD}${NORMAL} ${WHITE}$GIT_FUZZY_STATUS_RESET_KEY${NORMAL} * ${RED}${BOLD}commit ${NORMAL}${RED}${NORMAL} ${WHITE}$GIT_FUZZY_STATUS_COMMIT_KEY${NORMAL}"'
1117
1218
'
1319
gf_fzf_status() {
@@ -16,21 +22,21 @@ gf_fzf_status() {
1622

1723
gf_fzf -m --header "$GF_STATUS_HEADER" \
1824
--header-lines=2 \
19-
--expect='alt-e,alt-c' \
25+
--expect='$GIT_FUZZY_STATUS_EDIT_KEY,$GIT_FUZZY_STATUS_COMMIT_KEY' \
2026
--nth=2 \
2127
--preview 'git fuzzy helper status_preview_content {1} {2..}' \
22-
--bind "alt-s:execute-silent(git fuzzy helper status_add {+2..})+down+$RELOAD" \
23-
--bind "alt-r:execute-silent(git fuzzy helper status_reset {+2..})+down+$RELOAD" \
24-
--bind "alt-u:execute-silent(git fuzzy helper status_discard {2..})+$RELOAD"
28+
--bind "$GIT_FUZZY_STATUS_ADD_KEY:execute-silent(git fuzzy helper status_add {+2..})+down+$RELOAD" \
29+
--bind "$GIT_FUZZY_STATUS_RESET_KEY:execute-silent(git fuzzy helper status_reset {+2..})+down+$RELOAD" \
30+
--bind "$GIT_FUZZY_STATUS_DISCARD_KEY:execute-silent(git fuzzy helper status_discard {2..})+$RELOAD"
2531
}
2632

2733
gf_status_interpreter() {
2834
CONTENT="$(cat -)"
2935
HEAD="$(echo "$CONTENT" | head -n1)"
3036
TAIL="$(echo "$CONTENT" | tail -n +2)"
31-
if [ "$HEAD" = 'alt-e' ]; then
37+
if [ "$HEAD" = "$GIT_FUZZY_STATUS_EDIT_KEY" ]; then
3238
eval "git fuzzy helper status_edit $(echo "$TAIL" | cut -c4- | join_lines_quoted)"
33-
elif [ "$HEAD" = 'alt-c' ]; then
39+
elif [ "$HEAD" = "$GIT_FUZZY_STATUS_COMMIT_KEY" ]; then
3440
eval "git fuzzy helper status_commit"
3541
else
3642
echo "$TAIL" | cut -c4-

0 commit comments

Comments
 (0)