X-Git-Url: https://git.distorted.org.uk/~mdw/stgit/blobdiff_plain/ca8b854cbf353ed87fd9284d50f69229bf40e22d..9690617a55cba571d0cb25ed846ef41942063020:/contrib/stgit-completion.bash diff --git a/contrib/stgit-completion.bash b/contrib/stgit-completion.bash index a843db4..1467c28 100644 --- a/contrib/stgit-completion.bash +++ b/contrib/stgit-completion.bash @@ -11,16 +11,14 @@ # . ~/.stgit-completion.bash _stg_commands=" - add - applied - assimilate branch delete diff clean clone + coalesce commit - cp + edit export files float @@ -41,15 +39,14 @@ _stg_commands=" rebase refresh rename + repair resolved - rm series show sink status sync top - unapplied uncommit unhide " @@ -108,7 +105,31 @@ _all_other_patches () _all_branches () { local g=$(_gitdir) - [ "$g" ] && (cd .git/patches/ && echo *) + [ "$g" ] && (cd $g/patches/ && echo *) +} + +_conflicting_files () +{ + local g=$(_gitdir) + [ "$g" ] && stg status --conflict +} + +_dirty_files () +{ + local g=$(_gitdir) + [ "$g" ] && stg status --modified --new --deleted +} + +_unknown_files () +{ + local g=$(_gitdir) + [ "$g" ] && stg status --unknown +} + +_known_files () +{ + local g=$(_gitdir) + [ "$g" ] && git ls-files } # List the command options @@ -162,6 +183,11 @@ _complete_options () COMPREPLY=($(compgen -W "$options" -- "${COMP_WORDS[COMP_CWORD]}")) } +_complete_files () +{ + COMPREPLY=($(compgen -W "$(_cmd_options $1) $2" -- "${COMP_WORDS[COMP_CWORD]}")) +} + _stg_common () { _complete_options "$(_cmd_options $1)" @@ -208,6 +234,7 @@ _stg () # repository commands id) _stg_patches $command _all_patches ;; # stack commands + coalesce) _stg_patches $command _applied_patches ;; float) _stg_patches $command _all_patches ;; goto) _stg_patches $command _all_other_patches ;; hide) _stg_patches $command _unapplied_patches ;; @@ -218,17 +245,20 @@ _stg () unhide) _stg_patches $command _hidden_patches ;; # patch commands delete) _stg_patches $command _all_patches ;; - export) _stg_patches $command _applied_patches ;; + edit) _stg_patches $command _applied_patches ;; + export) _stg_patches $command _all_patches ;; files) _stg_patches $command _all_patches ;; log) _stg_patches $command _all_patches ;; mail) _stg_patches $command _all_patches ;; pick) _stg_patches $command _unapplied_patches ;; - refresh)_stg_patches_options $command _applied_patches "-p --patch" ;; +# refresh)_stg_patches_options $command _applied_patches "-p --patch" ;; + refresh) _complete_files $command "$(_dirty_files)" ;; rename) _stg_patches $command _all_patches ;; show) _stg_patches $command _all_patches ;; sync) _stg_patches $command _applied_patches ;; # working-copy commands diff) _stg_patches_options $command _applied_patches "-r --range" ;; + resolved) _complete_files $command "$(_conflicting_files)" ;; # commands that usually raher accept branches branch) _complete_branch $command _all_branches ;; rebase) _complete_branch $command _all_branches ;;