contrib/bash_completion
author Gregory Szorc <gregory.szorc@gmail.com>
Wed, 13 Sep 2017 21:15:46 -0700
changeset 34191 e6b5e7329ff2
parent 30199 ba22059602e3
child 35456 fdbe4eafa9c2
permissions -rw-r--r--
show: use consistent (and possibly shorter) node lengths `hg show` makes heavy use of shortest() to limit the length of the node hash. For the "stack" and "work" views, you are often looking at multiple lines of similar output for "lines" of work. It is visually appeasing for things to vertically align. A naive use of {shortest(node, N)} could result in variable length nodes and for the first character of the description to vary by a column or two. We implement a function to determine the longest shortest prefix for a set of revisions. The new function is used to determine the printed node length for all `hg show` views. .. feature:: show: use consistent node length in views Our previous shortest node length of 5 was arbitrarily chosen. shortest() already does the work of ensuring that a partial node isn't ambiguous with an integer revision, which is our primary risk of a collision for very short nodes. It should be safe to go with the shortest node possible. Existing code is also optimized to handle nodes as short as 4. So, we decrease the minimum hash length from 5 to 4. We also add a test demonstrating that prefix collisions increase the node length. .. feature:: show: decrease minimum displayed hash length from 5 to 4 Differential Revision: https://phab.mercurial-scm.org/D558
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18769
83a99f10c45c bash_completion: tell an editor what type of file this is
Bryan O'Sullivan <bryano@fb.com>
parents: 18768
diff changeset
     1
# bash completion for the Mercurial distributed SCM -*- sh -*-
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
     2
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
     3
# Docs:
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
     4
#
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
     5
# If you source this file from your .bashrc, bash should be able to
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
     6
# complete a command line that uses hg with all the available commands
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
     7
# and options and sometimes even arguments.
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
     8
#
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
     9
# Mercurial allows you to define additional commands through extensions.
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    10
# Bash should be able to automatically figure out the name of these new
3485
26285469db9b bash_completion: allow overriding completion for arguments that start with "-"
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3484
diff changeset
    11
# commands and their options.  See below for how to define _hg_opt_foo
26285469db9b bash_completion: allow overriding completion for arguments that start with "-"
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3484
diff changeset
    12
# and _hg_cmd_foo functions to fine-tune the completion for option and
26285469db9b bash_completion: allow overriding completion for arguments that start with "-"
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3484
diff changeset
    13
# non-option arguments, respectively.
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    14
#
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    15
#
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    16
# Notes about completion for specific commands:
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    17
#
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    18
# - the completion function for the email command from the patchbomb
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    19
#   extension will try to call _hg_emails to get a list of e-mail
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    20
#   addresses.  It's up to the user to define this function.  For
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    21
#   example, put the addresses of the lists that you usually patchbomb
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    22
#   in ~/.patchbomb-to and the addresses that you usually use to send
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    23
#   the patchbombs in ~/.patchbomb-from and use something like this:
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    24
#
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    25
#      _hg_emails()
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    26
#      {
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    27
#          if [ -r ~/.patchbomb-$1 ]; then
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    28
#              cat ~/.patchbomb-$1
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    29
#          fi
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    30
#      }
5081
ea7b982b6c08 Remove trailing spaces
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3993
diff changeset
    31
#
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    32
#
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    33
# Writing completion functions for additional commands:
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    34
#
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    35
# If it exists, the function _hg_cmd_foo will be called without
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    36
# arguments to generate the completion candidates for the hg command
3485
26285469db9b bash_completion: allow overriding completion for arguments that start with "-"
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3484
diff changeset
    37
# "foo".  If the command receives some arguments that aren't options
26285469db9b bash_completion: allow overriding completion for arguments that start with "-"
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3484
diff changeset
    38
# even though they start with a "-", you can define a function called
26285469db9b bash_completion: allow overriding completion for arguments that start with "-"
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3484
diff changeset
    39
# _hg_opt_foo to generate the completion candidates.  If _hg_opt_foo
26285469db9b bash_completion: allow overriding completion for arguments that start with "-"
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3484
diff changeset
    40
# doesn't return 0, regular completion for options is attempted.
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    41
#
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    42
# In addition to the regular completion variables provided by bash,
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    43
# the following variables are also set:
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    44
# - $hg - the hg program being used (e.g. /usr/bin/hg)
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    45
# - $cmd - the name of the hg command being completed
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    46
# - $cmd_index - the index of $cmd in $COMP_WORDS
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    47
# - $cur - the current argument being completed
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    48
# - $prev - the argument before $cur
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    49
# - $global_args - "|"-separated list of global options that accept
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    50
#                  an argument (e.g. '--cwd|-R|--repository')
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    51
# - $canonical - 1 if we canonicalized $cmd before calling the function
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    52
#                0 otherwise
5081
ea7b982b6c08 Remove trailing spaces
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3993
diff changeset
    53
#
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
    54
1311
db8bebb08f8f bash_completion: extended patterns require extglob option
TK Soh <teekaysoh@yahoo.com>
parents: 1308
diff changeset
    55
shopt -s extglob
db8bebb08f8f bash_completion: extended patterns require extglob option
TK Soh <teekaysoh@yahoo.com>
parents: 1308
diff changeset
    56
11646
91af149b5cd7 bash/zsh completion: use HGPLAIN when invoking hg (issue2297)
Brodie Rao <brodie@bitheap.org>
parents: 10456
diff changeset
    57
_hg_cmd()
91af149b5cd7 bash/zsh completion: use HGPLAIN when invoking hg (issue2297)
Brodie Rao <brodie@bitheap.org>
parents: 10456
diff changeset
    58
{
91af149b5cd7 bash/zsh completion: use HGPLAIN when invoking hg (issue2297)
Brodie Rao <brodie@bitheap.org>
parents: 10456
diff changeset
    59
    HGPLAIN=1 "$hg" "$@" 2>/dev/null
91af149b5cd7 bash/zsh completion: use HGPLAIN when invoking hg (issue2297)
Brodie Rao <brodie@bitheap.org>
parents: 10456
diff changeset
    60
}
91af149b5cd7 bash/zsh completion: use HGPLAIN when invoking hg (issue2297)
Brodie Rao <brodie@bitheap.org>
parents: 10456
diff changeset
    61
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
    62
_hg_commands()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
    63
{
1888
283d2ab1e020 Make bash_completion more robust for e.g. broken hgrc or old hg installations.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1887
diff changeset
    64
    local commands
14374
51f444e85734 bash_completion: enable alias auto-complete
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 14332
diff changeset
    65
    commands="$(HGPLAINEXCEPT=alias _hg_cmd debugcomplete "$cur")" || commands=""
1887
913397c27cd8 new command debugcomplete
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1820
diff changeset
    66
    COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$commands' -- "$cur"))
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
    67
}
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
    68
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
    69
_hg_paths()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
    70
{
14332
a2f0f61a6988 bash_completion: Use "hg paths -q" instead of piping through sed
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13509
diff changeset
    71
    local paths="$(_hg_cmd paths -q)"
1684
cf930b2452d3 Cleanup of spacing in bash_completion
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1683
diff changeset
    72
    COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$paths' -- "$cur"))
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
    73
}
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
    74
1587
851bc33ff545 Less annoying directory completion (see http://bugs.debian.org/343458)
Daniel Kobras <kobras@debian.org>
parents: 1556
diff changeset
    75
_hg_repos()
851bc33ff545 Less annoying directory completion (see http://bugs.debian.org/343458)
Daniel Kobras <kobras@debian.org>
parents: 1556
diff changeset
    76
{
851bc33ff545 Less annoying directory completion (see http://bugs.debian.org/343458)
Daniel Kobras <kobras@debian.org>
parents: 1556
diff changeset
    77
    local i
1684
cf930b2452d3 Cleanup of spacing in bash_completion
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1683
diff changeset
    78
    for i in $(compgen -d -- "$cur"); do
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
    79
        test ! -d "$i"/.hg || COMPREPLY=(${COMPREPLY[@]:-} "$i")
1587
851bc33ff545 Less annoying directory completion (see http://bugs.debian.org/343458)
Daniel Kobras <kobras@debian.org>
parents: 1556
diff changeset
    80
    done
851bc33ff545 Less annoying directory completion (see http://bugs.debian.org/343458)
Daniel Kobras <kobras@debian.org>
parents: 1556
diff changeset
    81
}
851bc33ff545 Less annoying directory completion (see http://bugs.debian.org/343458)
Daniel Kobras <kobras@debian.org>
parents: 1556
diff changeset
    82
18793
a821ec835223 completion: selectively use debugpathcomplete in bash_completion
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
    83
_hg_debugpathcomplete()
a821ec835223 completion: selectively use debugpathcomplete in bash_completion
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
    84
{
a821ec835223 completion: selectively use debugpathcomplete in bash_completion
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
    85
    local files="$(_hg_cmd debugpathcomplete $1 "$cur")"
a821ec835223 completion: selectively use debugpathcomplete in bash_completion
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
    86
    local IFS=$'\n'
a821ec835223 completion: selectively use debugpathcomplete in bash_completion
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
    87
    COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur"))
a821ec835223 completion: selectively use debugpathcomplete in bash_completion
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
    88
}
a821ec835223 completion: selectively use debugpathcomplete in bash_completion
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
    89
935
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
    90
_hg_status()
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
    91
{
30199
ba22059602e3 bashcompletion: allow skipping completion for 'hg status'
Mathias De Maré <mathias.de_mare@nokia.com>
parents: 29386
diff changeset
    92
    if [ -z "$HGCOMPLETE_NOSTATUS" ]; then
ba22059602e3 bashcompletion: allow skipping completion for 'hg status'
Mathias De Maré <mathias.de_mare@nokia.com>
parents: 29386
diff changeset
    93
        local files="$(_hg_cmd status -n$1 "glob:$cur**")"
ba22059602e3 bashcompletion: allow skipping completion for 'hg status'
Mathias De Maré <mathias.de_mare@nokia.com>
parents: 29386
diff changeset
    94
        local IFS=$'\n'
ba22059602e3 bashcompletion: allow skipping completion for 'hg status'
Mathias De Maré <mathias.de_mare@nokia.com>
parents: 29386
diff changeset
    95
        COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur"))
ba22059602e3 bashcompletion: allow skipping completion for 'hg status'
Mathias De Maré <mathias.de_mare@nokia.com>
parents: 29386
diff changeset
    96
    fi
935
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
    97
}
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
    98
20131
56df59cc4212 bash_completion: add _hg_branches for list of branches
Sean Farley <sean.michael.farley@gmail.com>
parents: 20130
diff changeset
    99
_hg_branches()
56df59cc4212 bash_completion: add _hg_branches for list of branches
Sean Farley <sean.michael.farley@gmail.com>
parents: 20130
diff changeset
   100
{
56df59cc4212 bash_completion: add _hg_branches for list of branches
Sean Farley <sean.michael.farley@gmail.com>
parents: 20130
diff changeset
   101
    local branches="$(_hg_cmd branches -q)"
56df59cc4212 bash_completion: add _hg_branches for list of branches
Sean Farley <sean.michael.farley@gmail.com>
parents: 20130
diff changeset
   102
    local IFS=$'\n'
56df59cc4212 bash_completion: add _hg_branches for list of branches
Sean Farley <sean.michael.farley@gmail.com>
parents: 20130
diff changeset
   103
    COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$branches' -- "$cur"))
56df59cc4212 bash_completion: add _hg_branches for list of branches
Sean Farley <sean.michael.farley@gmail.com>
parents: 20130
diff changeset
   104
}
56df59cc4212 bash_completion: add _hg_branches for list of branches
Sean Farley <sean.michael.farley@gmail.com>
parents: 20130
diff changeset
   105
13509
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   106
_hg_bookmarks()
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   107
{
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   108
    local bookmarks="$(_hg_cmd bookmarks -q)"
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   109
    local IFS=$'\n'
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   110
    COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$bookmarks' -- "$cur"))
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   111
}
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   112
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   113
_hg_labels()
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   114
{
23762
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 21719
diff changeset
   115
    local labels="$(_hg_cmd debugnamecomplete "$cur")"
18790
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18789
diff changeset
   116
    local IFS=$'\n'
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18789
diff changeset
   117
    COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$labels' -- "$cur"))
13509
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   118
}
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   119
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   120
# this is "kind of" ugly...
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   121
_hg_count_non_option()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   122
{
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   123
    local i count=0
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   124
    local filters="$1"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   125
1684
cf930b2452d3 Cleanup of spacing in bash_completion
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1683
diff changeset
   126
    for ((i=1; $i<=$COMP_CWORD; i++)); do
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   127
        if [[ "${COMP_WORDS[i]}" != -* ]]; then
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   128
            if [[ ${COMP_WORDS[i-1]} == @($filters|$global_args) ]]; then
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   129
                continue
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   130
            fi
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   131
            count=$(($count + 1))
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   132
        fi
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   133
    done
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   134
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   135
    echo $(($count - 1))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   136
}
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   137
20126
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   138
_hg_fix_wordlist()
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   139
{
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   140
    local LASTCHAR=' '
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   141
    if [ ${#COMPREPLY[@]} = 1 ]; then
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   142
        [ -d "$COMPREPLY" ] && LASTCHAR=/
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   143
        COMPREPLY=$(printf %q%s "$COMPREPLY" "$LASTCHAR")
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   144
    else
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   145
        for ((i=0; i < ${#COMPREPLY[@]}; i++)); do
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   146
            [ -d "${COMPREPLY[$i]}" ] && COMPREPLY[$i]=${COMPREPLY[$i]}/
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   147
        done
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   148
    fi
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   149
}
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   150
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   151
_hg()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   152
{
20125
191ab08e7099 bash_completion: determine root executable in case of alias
Sean Farley <sean.michael.farley@gmail.com>
parents: 20124
diff changeset
   153
    local cur prev cmd cmd_index opts i aliashg
1151
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
   154
    # global options that receive an argument
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
   155
    local global_args='--cwd|-R|--repository'
1683
063e04831a09 Use user specified path to hg in bash_completion
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1643
diff changeset
   156
    local hg="$1"
3485
26285469db9b bash_completion: allow overriding completion for arguments that start with "-"
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3484
diff changeset
   157
    local canonical=0
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   158
20125
191ab08e7099 bash_completion: determine root executable in case of alias
Sean Farley <sean.michael.farley@gmail.com>
parents: 20124
diff changeset
   159
    aliashg=$(alias $hg 2>/dev/null)
191ab08e7099 bash_completion: determine root executable in case of alias
Sean Farley <sean.michael.farley@gmail.com>
parents: 20124
diff changeset
   160
    if [[ -n "$aliashg" ]]; then
191ab08e7099 bash_completion: determine root executable in case of alias
Sean Farley <sean.michael.farley@gmail.com>
parents: 20124
diff changeset
   161
      aliashg=${aliashg#"alias $hg='"}
191ab08e7099 bash_completion: determine root executable in case of alias
Sean Farley <sean.michael.farley@gmail.com>
parents: 20124
diff changeset
   162
      aliashg=${aliashg%"'"}
191ab08e7099 bash_completion: determine root executable in case of alias
Sean Farley <sean.michael.farley@gmail.com>
parents: 20124
diff changeset
   163
      hg=$aliashg
191ab08e7099 bash_completion: determine root executable in case of alias
Sean Farley <sean.michael.farley@gmail.com>
parents: 20124
diff changeset
   164
    fi
191ab08e7099 bash_completion: determine root executable in case of alias
Sean Farley <sean.michael.farley@gmail.com>
parents: 20124
diff changeset
   165
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   166
    COMPREPLY=()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   167
    cur="$2"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   168
    prev="$3"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   169
1308
2073e5a71008 Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1263
diff changeset
   170
    # searching for the command
1151
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
   171
    # (first non-option argument that doesn't follow a global option that
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
   172
    #  receives an argument)
1684
cf930b2452d3 Cleanup of spacing in bash_completion
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1683
diff changeset
   173
    for ((i=1; $i<=$COMP_CWORD; i++)); do
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   174
        if [[ ${COMP_WORDS[i]} != -* ]]; then
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   175
            if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   176
                cmd="${COMP_WORDS[i]}"
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   177
                cmd_index=$i
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   178
                break
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   179
            fi
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   180
        fi
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   181
    done
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   182
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   183
    if [[ "$cur" == -* ]]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   184
        if [ "$(type -t "_hg_opt_$cmd")" = function ] && "_hg_opt_$cmd"; then
20126
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   185
            _hg_fix_wordlist
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   186
            return
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   187
        fi
3485
26285469db9b bash_completion: allow overriding completion for arguments that start with "-"
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3484
diff changeset
   188
29386
63fad6235369 bashcompletion: show available command-line switches for aliases
Martijn Pieters <mjpieters@fb.com>
parents: 26904
diff changeset
   189
        opts=$(HGPLAINEXCEPT=alias _hg_cmd debugcomplete --options "$cmd")
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   190
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   191
        COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$opts' -- "$cur"))
20126
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   192
        _hg_fix_wordlist
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   193
        return
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   194
    fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   195
1151
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
   196
    # global options
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
   197
    case "$prev" in
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   198
        -R|--repository)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   199
            _hg_paths
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   200
            _hg_repos
20126
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   201
            _hg_fix_wordlist
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   202
            return
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   203
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   204
        --cwd)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   205
            # Stick with default bash completion
20126
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   206
            _hg_fix_wordlist
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   207
            return
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   208
        ;;
1151
10b4f2a5ce17 teach bash_completion about --cwd
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1150
diff changeset
   209
    esac
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   210
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   211
    if [ -z "$cmd" ] || [ $COMP_CWORD -eq $i ]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   212
        _hg_commands
20126
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   213
        _hg_fix_wordlist
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   214
        return
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   215
    fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   216
2039
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   217
    # try to generate completion candidates for whatever command the user typed
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   218
    local help
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   219
    if _hg_command_specific; then
20126
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   220
        _hg_fix_wordlist
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   221
        return
2039
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   222
    fi
1150
4ee09418c8e5 bash_completion: better handling of aliases
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 1149
diff changeset
   223
2039
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   224
    # canonicalize the command name and try again
11646
91af149b5cd7 bash/zsh completion: use HGPLAIN when invoking hg (issue2297)
Brodie Rao <brodie@bitheap.org>
parents: 10456
diff changeset
   225
    help=$(_hg_cmd help "$cmd")
2039
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   226
    if [ $? -ne 0 ]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   227
        # Probably either the command doesn't exist or it's ambiguous
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   228
        return
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   229
    fi
2039
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   230
    cmd=${help#hg }
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   231
    cmd=${cmd%%[$' \n']*}
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   232
    canonical=1
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   233
    _hg_command_specific
20126
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   234
    _hg_fix_wordlist
2039
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   235
}
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   236
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   237
_hg_command_specific()
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   238
{
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   239
    if [ "$(type -t "_hg_cmd_$cmd")" = function ]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   240
        "_hg_cmd_$cmd"
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   241
        return 0
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   242
    fi
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   243
20133
f6c33fc59dbd bash_completion: change --rev if-else block into a case
Sean Farley <sean.michael.farley@gmail.com>
parents: 20132
diff changeset
   244
    if [ "$cmd" != status ]; then
f6c33fc59dbd bash_completion: change --rev if-else block into a case
Sean Farley <sean.michael.farley@gmail.com>
parents: 20132
diff changeset
   245
        case "$prev" in
f6c33fc59dbd bash_completion: change --rev if-else block into a case
Sean Farley <sean.michael.farley@gmail.com>
parents: 20132
diff changeset
   246
            -r|--rev)
f6c33fc59dbd bash_completion: change --rev if-else block into a case
Sean Farley <sean.michael.farley@gmail.com>
parents: 20132
diff changeset
   247
                if [[ $canonical = 1 || status != "$cmd"* ]]; then
f6c33fc59dbd bash_completion: change --rev if-else block into a case
Sean Farley <sean.michael.farley@gmail.com>
parents: 20132
diff changeset
   248
                    _hg_labels
f6c33fc59dbd bash_completion: change --rev if-else block into a case
Sean Farley <sean.michael.farley@gmail.com>
parents: 20132
diff changeset
   249
                    return 0
f6c33fc59dbd bash_completion: change --rev if-else block into a case
Sean Farley <sean.michael.farley@gmail.com>
parents: 20132
diff changeset
   250
                fi
f6c33fc59dbd bash_completion: change --rev if-else block into a case
Sean Farley <sean.michael.farley@gmail.com>
parents: 20132
diff changeset
   251
                return 1
f6c33fc59dbd bash_completion: change --rev if-else block into a case
Sean Farley <sean.michael.farley@gmail.com>
parents: 20132
diff changeset
   252
            ;;
20134
bc9735855598 bash_completion: add global support for -B|--bookmark
Sean Farley <sean.michael.farley@gmail.com>
parents: 20133
diff changeset
   253
            -B|--bookmark)
bc9735855598 bash_completion: add global support for -B|--bookmark
Sean Farley <sean.michael.farley@gmail.com>
parents: 20133
diff changeset
   254
                if [[ $canonical = 1 || status != "$cmd"* ]]; then
bc9735855598 bash_completion: add global support for -B|--bookmark
Sean Farley <sean.michael.farley@gmail.com>
parents: 20133
diff changeset
   255
                    _hg_bookmarks
bc9735855598 bash_completion: add global support for -B|--bookmark
Sean Farley <sean.michael.farley@gmail.com>
parents: 20133
diff changeset
   256
                    return 0
bc9735855598 bash_completion: add global support for -B|--bookmark
Sean Farley <sean.michael.farley@gmail.com>
parents: 20133
diff changeset
   257
                fi
bc9735855598 bash_completion: add global support for -B|--bookmark
Sean Farley <sean.michael.farley@gmail.com>
parents: 20133
diff changeset
   258
                return 1
bc9735855598 bash_completion: add global support for -B|--bookmark
Sean Farley <sean.michael.farley@gmail.com>
parents: 20133
diff changeset
   259
            ;;
20135
e39bd4b7be78 bash_completion: add global support for -b|--branch
Sean Farley <sean.michael.farley@gmail.com>
parents: 20134
diff changeset
   260
            -b|--branch)
e39bd4b7be78 bash_completion: add global support for -b|--branch
Sean Farley <sean.michael.farley@gmail.com>
parents: 20134
diff changeset
   261
                if [[ $canonical = 1 || status != "$cmd"* ]]; then
e39bd4b7be78 bash_completion: add global support for -b|--branch
Sean Farley <sean.michael.farley@gmail.com>
parents: 20134
diff changeset
   262
                    _hg_branches
e39bd4b7be78 bash_completion: add global support for -b|--branch
Sean Farley <sean.michael.farley@gmail.com>
parents: 20134
diff changeset
   263
                    return 0
e39bd4b7be78 bash_completion: add global support for -b|--branch
Sean Farley <sean.michael.farley@gmail.com>
parents: 20134
diff changeset
   264
                fi
e39bd4b7be78 bash_completion: add global support for -b|--branch
Sean Farley <sean.michael.farley@gmail.com>
parents: 20134
diff changeset
   265
                return 1
e39bd4b7be78 bash_completion: add global support for -b|--branch
Sean Farley <sean.michael.farley@gmail.com>
parents: 20134
diff changeset
   266
            ;;
20133
f6c33fc59dbd bash_completion: change --rev if-else block into a case
Sean Farley <sean.michael.farley@gmail.com>
parents: 20132
diff changeset
   267
        esac
2039
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   268
    fi
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   269
20124
dd3af304b3c8 bash_completion: expand aliased commands
Sean Farley <sean.michael.farley@gmail.com>
parents: 20123
diff changeset
   270
    local aliascmd=$(_hg_cmd showconfig alias.$cmd | awk '{print $1}')
dd3af304b3c8 bash_completion: expand aliased commands
Sean Farley <sean.michael.farley@gmail.com>
parents: 20123
diff changeset
   271
    [ -n "$aliascmd" ] && cmd=$aliascmd
dd3af304b3c8 bash_completion: expand aliased commands
Sean Farley <sean.michael.farley@gmail.com>
parents: 20123
diff changeset
   272
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   273
    case "$cmd" in
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   274
        help)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   275
            _hg_commands
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   276
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   277
        export)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   278
            if _hg_ext_mq_patchlist qapplied && [ "${COMPREPLY[*]}" ]; then
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   279
                return 0
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   280
            fi
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   281
            _hg_labels
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   282
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   283
        manifest|update|up|checkout|co)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   284
            _hg_labels
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   285
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   286
        pull|push|outgoing|incoming)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   287
            _hg_paths
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   288
            _hg_repos
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   289
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   290
        paths)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   291
            _hg_paths
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   292
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   293
        add)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   294
            _hg_status "u"
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   295
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   296
        merge)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   297
            _hg_labels
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   298
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   299
        commit|ci|record)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   300
            _hg_status "mar"
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   301
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   302
        remove|rm)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   303
            _hg_debugpathcomplete -n
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   304
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   305
        forget)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   306
            _hg_debugpathcomplete -fa
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   307
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   308
        diff)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   309
            _hg_status "mar"
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   310
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   311
        revert)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   312
            _hg_debugpathcomplete
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   313
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   314
        clone)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   315
            local count=$(_hg_count_non_option)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   316
            if [ $count = 1 ]; then
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   317
                _hg_paths
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   318
            fi
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   319
            _hg_repos
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   320
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   321
        debugindex|debugindexdot)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   322
            COMPREPLY=(${COMPREPLY[@]:-} $(compgen -f -X "!*.i" -- "$cur"))
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   323
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   324
        debugdata)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   325
            COMPREPLY=(${COMPREPLY[@]:-} $(compgen -f -X "!*.d" -- "$cur"))
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   326
        ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   327
        *)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   328
            return 1
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   329
        ;;
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   330
    esac
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   331
2039
0c438fd25e6e bash_completion: small optimization
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2035
diff changeset
   332
    return 0
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   333
}
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
   334
20126
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   335
complete -o bashdefault -o default -o nospace -F _hg hg \
25cb1d96c307 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com>
parents: 20125
diff changeset
   336
    || complete -o default -o nospace -F _hg hg
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   337
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   338
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   339
# Completion for commands provided by extensions
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   340
9460
552c5a5a3502 contrib/bash_completion: add tab completion for some bookmark commands
Steve Losh <steve@stevelosh.com>
parents: 8719
diff changeset
   341
# bookmarks
552c5a5a3502 contrib/bash_completion: add tab completion for some bookmark commands
Steve Losh <steve@stevelosh.com>
parents: 8719
diff changeset
   342
_hg_cmd_bookmarks()
552c5a5a3502 contrib/bash_completion: add tab completion for some bookmark commands
Steve Losh <steve@stevelosh.com>
parents: 8719
diff changeset
   343
{
20127
6b771bcd1a62 bash_completion: remove restriction on bookmark completion
Sean Farley <sean.michael.farley@gmail.com>
parents: 20126
diff changeset
   344
    _hg_bookmarks
6b771bcd1a62 bash_completion: remove restriction on bookmark completion
Sean Farley <sean.michael.farley@gmail.com>
parents: 20126
diff changeset
   345
    return
9460
552c5a5a3502 contrib/bash_completion: add tab completion for some bookmark commands
Steve Losh <steve@stevelosh.com>
parents: 8719
diff changeset
   346
}
552c5a5a3502 contrib/bash_completion: add tab completion for some bookmark commands
Steve Losh <steve@stevelosh.com>
parents: 8719
diff changeset
   347
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   348
# mq
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   349
_hg_ext_mq_patchlist()
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   350
{
3480
03932425cfd8 bash_completion: don't complete export with "garbage" when mq is not around
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2695
diff changeset
   351
    local patches
11646
91af149b5cd7 bash/zsh completion: use HGPLAIN when invoking hg (issue2297)
Brodie Rao <brodie@bitheap.org>
parents: 10456
diff changeset
   352
    patches=$(_hg_cmd $1)
3480
03932425cfd8 bash_completion: don't complete export with "garbage" when mq is not around
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2695
diff changeset
   353
    if [ $? -eq 0 ] && [ "$patches" ]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   354
        COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$patches' -- "$cur"))
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   355
        return 0
3480
03932425cfd8 bash_completion: don't complete export with "garbage" when mq is not around
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2695
diff changeset
   356
    fi
03932425cfd8 bash_completion: don't complete export with "garbage" when mq is not around
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2695
diff changeset
   357
    return 1
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   358
}
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   359
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   360
_hg_ext_mq_queues()
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   361
{
11646
91af149b5cd7 bash/zsh completion: use HGPLAIN when invoking hg (issue2297)
Brodie Rao <brodie@bitheap.org>
parents: 10456
diff changeset
   362
    local root=$(_hg_cmd root)
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   363
    local n
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   364
    for n in $(cd "$root"/.hg && compgen -d -- "$cur"); do
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   365
        # I think we're usually not interested in the regular "patches" queue
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   366
        # so just filter it.
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   367
        if [ "$n" != patches ] && [ -e "$root/.hg/$n/series" ]; then
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   368
            COMPREPLY=(${COMPREPLY[@]:-} "$n")
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   369
        fi
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   370
    done
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   371
}
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   372
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   373
_hg_cmd_qpop()
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   374
{
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   375
    if [[ "$prev" = @(-n|--name) ]]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   376
        _hg_ext_mq_queues
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   377
        return
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   378
    fi
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   379
    _hg_ext_mq_patchlist qapplied
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   380
}
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   381
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   382
_hg_cmd_qpush()
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   383
{
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   384
    if [[ "$prev" = @(-n|--name) ]]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   385
        _hg_ext_mq_queues
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   386
        return
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   387
    fi
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   388
    _hg_ext_mq_patchlist qunapplied
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   389
}
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   390
5507
bb417470d62a Support qgoto in contrib/bash_completion.
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 5081
diff changeset
   391
_hg_cmd_qgoto()
bb417470d62a Support qgoto in contrib/bash_completion.
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 5081
diff changeset
   392
{
bb417470d62a Support qgoto in contrib/bash_completion.
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 5081
diff changeset
   393
    if [[ "$prev" = @(-n|--name) ]]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   394
        _hg_ext_mq_queues
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   395
        return
5507
bb417470d62a Support qgoto in contrib/bash_completion.
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 5081
diff changeset
   396
    fi
bb417470d62a Support qgoto in contrib/bash_completion.
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 5081
diff changeset
   397
    _hg_ext_mq_patchlist qseries
bb417470d62a Support qgoto in contrib/bash_completion.
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 5081
diff changeset
   398
}
bb417470d62a Support qgoto in contrib/bash_completion.
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 5081
diff changeset
   399
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   400
_hg_cmd_qdelete()
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   401
{
3482
e762c0e95eac bash_completion: qdelete --rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3481
diff changeset
   402
    local qcmd=qunapplied
e762c0e95eac bash_completion: qdelete --rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3481
diff changeset
   403
    if [[ "$prev" = @(-r|--rev) ]]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   404
        qcmd=qapplied
3482
e762c0e95eac bash_completion: qdelete --rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3481
diff changeset
   405
    fi
e762c0e95eac bash_completion: qdelete --rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3481
diff changeset
   406
    _hg_ext_mq_patchlist $qcmd
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   407
}
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   408
9840
18d5935c0c62 Add missing bash_completion for qfinish
Thomas Arendsen Hein <thomas@intevation.de>
parents: 9602
diff changeset
   409
_hg_cmd_qfinish()
18d5935c0c62 Add missing bash_completion for qfinish
Thomas Arendsen Hein <thomas@intevation.de>
parents: 9602
diff changeset
   410
{
18d5935c0c62 Add missing bash_completion for qfinish
Thomas Arendsen Hein <thomas@intevation.de>
parents: 9602
diff changeset
   411
    if [[ "$prev" = @(-a|--applied) ]]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   412
        return
9840
18d5935c0c62 Add missing bash_completion for qfinish
Thomas Arendsen Hein <thomas@intevation.de>
parents: 9602
diff changeset
   413
    fi
18d5935c0c62 Add missing bash_completion for qfinish
Thomas Arendsen Hein <thomas@intevation.de>
parents: 9602
diff changeset
   414
    _hg_ext_mq_patchlist qapplied
18d5935c0c62 Add missing bash_completion for qfinish
Thomas Arendsen Hein <thomas@intevation.de>
parents: 9602
diff changeset
   415
}
18d5935c0c62 Add missing bash_completion for qfinish
Thomas Arendsen Hein <thomas@intevation.de>
parents: 9602
diff changeset
   416
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   417
_hg_cmd_qsave()
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   418
{
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   419
    if [[ "$prev" = @(-n|--name) ]]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   420
        _hg_ext_mq_queues
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   421
        return
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   422
    fi
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   423
}
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   424
17463
e49771e2d071 bash_completion: add rebase rev completion
Kevin Bullock <kbullock@ringworld.org>
parents: 15969
diff changeset
   425
_hg_cmd_rebase() {
e49771e2d071 bash_completion: add rebase rev completion
Kevin Bullock <kbullock@ringworld.org>
parents: 15969
diff changeset
   426
   if [[ "$prev" = @(-s|--source|-d|--dest|-b|--base|-r|--rev) ]]; then
e49771e2d071 bash_completion: add rebase rev completion
Kevin Bullock <kbullock@ringworld.org>
parents: 15969
diff changeset
   427
       _hg_labels
e49771e2d071 bash_completion: add rebase rev completion
Kevin Bullock <kbullock@ringworld.org>
parents: 15969
diff changeset
   428
       return
e49771e2d071 bash_completion: add rebase rev completion
Kevin Bullock <kbullock@ringworld.org>
parents: 15969
diff changeset
   429
   fi
e49771e2d071 bash_completion: add rebase rev completion
Kevin Bullock <kbullock@ringworld.org>
parents: 15969
diff changeset
   430
}
e49771e2d071 bash_completion: add rebase rev completion
Kevin Bullock <kbullock@ringworld.org>
parents: 15969
diff changeset
   431
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   432
_hg_cmd_strip()
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   433
{
20130
7c78c7eff119 bash_completion: add -B|--bookmark support for strip
Sean Farley <sean.michael.farley@gmail.com>
parents: 20129
diff changeset
   434
    if [[ "$prev" = @(-B|--bookmark) ]]; then
7c78c7eff119 bash_completion: add -B|--bookmark support for strip
Sean Farley <sean.michael.farley@gmail.com>
parents: 20129
diff changeset
   435
        _hg_bookmarks
7c78c7eff119 bash_completion: add -B|--bookmark support for strip
Sean Farley <sean.michael.farley@gmail.com>
parents: 20129
diff changeset
   436
        return
7c78c7eff119 bash_completion: add -B|--bookmark support for strip
Sean Farley <sean.michael.farley@gmail.com>
parents: 20129
diff changeset
   437
    fi
13509
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   438
    _hg_labels
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   439
}
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   440
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   441
_hg_cmd_qcommit()
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   442
{
11646
91af149b5cd7 bash/zsh completion: use HGPLAIN when invoking hg (issue2297)
Brodie Rao <brodie@bitheap.org>
parents: 10456
diff changeset
   443
    local root=$(_hg_cmd root)
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   444
    # this is run in a sub-shell, so we can't use _hg_status
11646
91af149b5cd7 bash/zsh completion: use HGPLAIN when invoking hg (issue2297)
Brodie Rao <brodie@bitheap.org>
parents: 10456
diff changeset
   445
    local files=$(cd "$root/.hg/patches" && _hg_cmd status -nmar)
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   446
    COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur"))
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   447
}
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   448
3484
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   449
_hg_cmd_qfold()
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   450
{
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   451
    _hg_ext_mq_patchlist qunapplied
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   452
}
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   453
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   454
_hg_cmd_qrename()
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   455
{
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   456
    _hg_ext_mq_patchlist qseries
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   457
}
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   458
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   459
_hg_cmd_qheader()
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   460
{
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   461
    _hg_ext_mq_patchlist qseries
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   462
}
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   463
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   464
_hg_cmd_qclone()
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   465
{
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   466
    local count=$(_hg_count_non_option)
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   467
    if [ $count = 1 ]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   468
        _hg_paths
3484
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   469
    fi
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   470
    _hg_repos
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   471
}
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   472
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   473
_hg_ext_mq_guards()
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   474
{
11646
91af149b5cd7 bash/zsh completion: use HGPLAIN when invoking hg (issue2297)
Brodie Rao <brodie@bitheap.org>
parents: 10456
diff changeset
   475
    _hg_cmd qselect --series | sed -e 's/^.//'
3484
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   476
}
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   477
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   478
_hg_cmd_qselect()
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   479
{
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   480
    local guards=$(_hg_ext_mq_guards)
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   481
    COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$guards' -- "$cur"))
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   482
}
a8823e6824fc bash_completion: qfold, qrename, qheader, qclone and qselect
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3483
diff changeset
   483
3486
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   484
_hg_cmd_qguard()
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   485
{
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   486
    local prefix=''
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   487
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   488
    if [[ "$cur" == +* ]]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   489
        prefix=+
3486
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   490
    elif [[ "$cur" == -* ]]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   491
        prefix=-
3486
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   492
    fi
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   493
    local ncur=${cur#[-+]}
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   494
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   495
    if ! [ "$prefix" ]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   496
        _hg_ext_mq_patchlist qseries
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   497
        return
3486
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   498
    fi
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   499
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   500
    local guards=$(_hg_ext_mq_guards)
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   501
    COMPREPLY=(${COMPREPLY[@]:-} $(compgen -P $prefix -W '$guards' -- "$ncur"))
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   502
}
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   503
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   504
_hg_opt_qguard()
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   505
{
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   506
    local i
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   507
    for ((i=cmd_index+1; i<=COMP_CWORD; i++)); do
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   508
        if [[ ${COMP_WORDS[i]} != -* ]]; then
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   509
            if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   510
                _hg_cmd_qguard
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   511
                return 0
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   512
            fi
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   513
        elif [ "${COMP_WORDS[i]}" = -- ]; then
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   514
            _hg_cmd_qguard
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   515
            return 0
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   516
        fi
3486
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   517
    done
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   518
    return 1
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   519
}
f699d4eb25d9 bash_completion: qguard
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3485
diff changeset
   520
11768
dc5ce9c95d00 mq/qqueue: enable bash completion
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 11646
diff changeset
   521
_hg_cmd_qqueue()
dc5ce9c95d00 mq/qqueue: enable bash completion
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 11646
diff changeset
   522
{
dc5ce9c95d00 mq/qqueue: enable bash completion
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 11646
diff changeset
   523
    local q
dc5ce9c95d00 mq/qqueue: enable bash completion
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 11646
diff changeset
   524
    local queues
11968
66521d25c2a6 mq/qqueue: update bash completion
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 11768
diff changeset
   525
    local opts="--list --create --rename --delete --purge"
11768
dc5ce9c95d00 mq/qqueue: enable bash completion
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 11646
diff changeset
   526
dc5ce9c95d00 mq/qqueue: enable bash completion
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 11646
diff changeset
   527
    queues=$( _hg_cmd qqueue --quiet )
dc5ce9c95d00 mq/qqueue: enable bash completion
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 11646
diff changeset
   528
dc5ce9c95d00 mq/qqueue: enable bash completion
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 11646
diff changeset
   529
    COMPREPLY=( $( compgen -W "${opts} ${queues}" "${cur}" ) )
dc5ce9c95d00 mq/qqueue: enable bash completion
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 11646
diff changeset
   530
}
dc5ce9c95d00 mq/qqueue: enable bash completion
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 11646
diff changeset
   531
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   532
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   533
# hbisect
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   534
_hg_cmd_bisect()
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   535
{
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   536
    local i subcmd
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   537
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   538
    # find the sub-command
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   539
    for ((i=cmd_index+1; i<=COMP_CWORD; i++)); do
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   540
        if [[ ${COMP_WORDS[i]} != -* ]]; then
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   541
            if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   542
                subcmd="${COMP_WORDS[i]}"
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   543
                break
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   544
            fi
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   545
        fi
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   546
    done
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   547
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   548
    if [ -z "$subcmd" ] || [ $COMP_CWORD -eq $i ] || [ "$subcmd" = help ]; then
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   549
        COMPREPLY=(${COMPREPLY[@]:-}
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   550
                   $(compgen -W 'bad good help init next reset' -- "$cur"))
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   551
        return
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   552
    fi
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   553
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   554
    case "$subcmd" in
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   555
        good|bad)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   556
            _hg_labels
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   557
            ;;
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   558
    esac
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   559
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   560
    return
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   561
}
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   562
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   563
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   564
# patchbomb
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   565
_hg_cmd_email()
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   566
{
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   567
    case "$prev" in
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   568
        -c|--cc|-t|--to|-f|--from|--bcc)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   569
            # we need an e-mail address. let the user provide a function
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   570
            # to get them
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   571
            if [ "$(type -t _hg_emails)" = function ]; then
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   572
                local arg=to
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   573
                if [[ "$prev" == @(-f|--from) ]]; then
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   574
                    arg=from
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   575
                fi
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   576
                local addresses=$(_hg_emails $arg)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   577
                COMPREPLY=(${COMPREPLY[@]:-}
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   578
                           $(compgen -W '$addresses' -- "$cur"))
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   579
            fi
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   580
            return
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   581
            ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   582
        -m|--mbox)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   583
            # fallback to standard filename completion
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   584
            return
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   585
            ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   586
        -s|--subject)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   587
            # free form string
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   588
            return
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   589
            ;;
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   590
    esac
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   591
13509
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   592
    _hg_labels
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   593
    return
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   594
}
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   595
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   596
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   597
# gpg
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   598
_hg_cmd_sign()
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   599
{
13509
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   600
    _hg_labels
2041
077a2da7f1de bash_completion: completion for commands provided by extensions
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 2039
diff changeset
   601
}
3993
04d919cdf263 expanded bash_completion for transplant extension
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3992
diff changeset
   602
04d919cdf263 expanded bash_completion for transplant extension
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3992
diff changeset
   603
04d919cdf263 expanded bash_completion for transplant extension
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3992
diff changeset
   604
# transplant
04d919cdf263 expanded bash_completion for transplant extension
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3992
diff changeset
   605
_hg_cmd_transplant()
04d919cdf263 expanded bash_completion for transplant extension
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3992
diff changeset
   606
{
04d919cdf263 expanded bash_completion for transplant extension
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3992
diff changeset
   607
    case "$prev" in
20123
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   608
        -s|--source)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   609
            _hg_paths
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   610
            _hg_repos
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   611
            return
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   612
            ;;
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   613
        --filter)
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   614
            # standard filename completion
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   615
            return
f16240c8e959 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com>
parents: 18794
diff changeset
   616
            ;;
3993
04d919cdf263 expanded bash_completion for transplant extension
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3992
diff changeset
   617
    esac
04d919cdf263 expanded bash_completion for transplant extension
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3992
diff changeset
   618
04d919cdf263 expanded bash_completion for transplant extension
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3992
diff changeset
   619
    # all other transplant options values and command parameters are revisions
13509
8aea95ec128f bash_completion: complete bookmarks
Kevin Bullock <kbullock@ringworld.org>
parents: 13243
diff changeset
   620
    _hg_labels
3993
04d919cdf263 expanded bash_completion for transplant extension
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3992
diff changeset
   621
    return
04d919cdf263 expanded bash_completion for transplant extension
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3992
diff changeset
   622
}
04d919cdf263 expanded bash_completion for transplant extension
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3992
diff changeset
   623
9511
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   624
# shelve
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   625
_hg_shelves()
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   626
{
20128
56108ee1edb6 bash_completion: use correct command for listing shelves
Sean Farley <sean.michael.farley@gmail.com>
parents: 20127
diff changeset
   627
    local shelves="$(_hg_cmd shelve -ql)"
9511
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   628
    local IFS=$'\n'
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   629
    COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$shelves' -- "$cur"))
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   630
}
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   631
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   632
_hg_cmd_shelve()
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   633
{
26904
8aacac09e222 bash_completion: add -p|--patch|--stat support for shelve
Anton Shestakov <av6@dwimlabs.net>
parents: 23762
diff changeset
   634
    if [[ "$prev" = @(-d|--delete|-l|--list|-p|--patch|--stat) ]]; then
20129
da8fb88bd757 bash_completion: add completion for deleting a shelve
Sean Farley <sean.michael.farley@gmail.com>
parents: 20128
diff changeset
   635
        _hg_shelves
da8fb88bd757 bash_completion: add completion for deleting a shelve
Sean Farley <sean.michael.farley@gmail.com>
parents: 20128
diff changeset
   636
    else
da8fb88bd757 bash_completion: add completion for deleting a shelve
Sean Farley <sean.michael.farley@gmail.com>
parents: 20128
diff changeset
   637
        _hg_status "mard"
da8fb88bd757 bash_completion: add completion for deleting a shelve
Sean Farley <sean.michael.farley@gmail.com>
parents: 20128
diff changeset
   638
    fi
9511
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   639
}
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   640
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   641
_hg_cmd_unshelve()
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   642
{
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   643
    _hg_shelves
33033af09308 bash_completion: add completions for shelve extension
Kevin Bullock <kbullock@ringworld.org>
parents: 8719
diff changeset
   644
}