Skip to content

Commit

Permalink
misc: fix bash completion with "git bug"
Browse files Browse the repository at this point in the history
  • Loading branch information
tst2005 authored and MichaelMure committed Apr 26, 2022
1 parent 205433e commit dcb3965
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 5 deletions.
36 changes: 35 additions & 1 deletion misc/bash_completion/git-bug
@@ -1,4 +1,4 @@
#TODO: completion code to map "git bug" to "git-bug"# bash completion V2 for git-bug -*- shell-script -*-
# bash completion V2 for git-bug -*- shell-script -*-

__git-bug_debug()
{
Expand Down Expand Up @@ -286,3 +286,37 @@ else
fi

# ex: ts=4 sw=4 et filetype=sh

_git_bug() {
local cur prev words cword split

COMPREPLY=()

# Call _init_completion from the bash-completion package
# to prepare the arguments properly
if declare -F _init_completion >/dev/null 2>&1; then
_init_completion -n "=:" || return
else
__git-bug_init_completion -n "=:" || return
fi

# START PATCH
# replace in the array ("git","bug", ...) to ("git-bug", ...) and adjust the index in cword
words=("git-bug" "${words[@]:2}")
cword=$(($cword-1))
# END PATCH

__git-bug_debug
__git-bug_debug "========= starting completion logic =========="
__git-bug_debug "cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}, cword is $cword"

# The user could have moved the cursor backwards on the command-line.
# We need to trigger completion from the $cword location, so we need
# to truncate the command-line ($words) up to the $cword location.
words=("${words[@]:0:$cword+1}")
__git-bug_debug "Truncated words[*]: ${words[*]},"

local out directive
__git-bug_get_completion_results
__git-bug_process_completion_results
}
45 changes: 41 additions & 4 deletions misc/gen_completion.go
Expand Up @@ -50,14 +50,51 @@ func genBash(root *cobra.Command) error {
}
defer f.Close()

// Custom bash code to connect the git completion for "git bug" to the
// git-bug completion for "git-bug"
_, err = f.WriteString(`#TODO: completion code to map "git bug" to "git-bug"`)
const patch = `
_git_bug() {
local cur prev words cword split
COMPREPLY=()
# Call _init_completion from the bash-completion package
# to prepare the arguments properly
if declare -F _init_completion >/dev/null 2>&1; then
_init_completion -n "=:" || return
else
__git-bug_init_completion -n "=:" || return
fi
# START PATCH
# replace in the array ("git","bug", ...) to ("git-bug", ...) and adjust the index in cword
words=("git-bug" "${words[@]:2}")
cword=$(($cword-1))
# END PATCH
__git-bug_debug
__git-bug_debug "========= starting completion logic =========="
__git-bug_debug "cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}, cword is $cword"
# The user could have moved the cursor backwards on the command-line.
# We need to trigger completion from the $cword location, so we need
# to truncate the command-line ($words) up to the $cword location.
words=("${words[@]:0:$cword+1}")
__git-bug_debug "Truncated words[*]: ${words[*]},"
local out directive
__git-bug_get_completion_results
__git-bug_process_completion_results
}
`
err = root.GenBashCompletionV2(f, true)
if err != nil {
return err
}

return root.GenBashCompletionV2(f, true)
// Custom bash code to connect the git completion for "git bug" to the
// git-bug completion for "git-bug"
_, err = f.WriteString(patch)

return err
}

func genFish(root *cobra.Command) error {
Expand Down

0 comments on commit dcb3965

Please sign in to comment.