contrib/bash_completion
changeset 1887 913397c27cd8
parent 1820 7e10518b2b9e
child 1888 283d2ab1e020
equal deleted inserted replaced
1886:d4a3a8a332ab 1887:913397c27cd8
     1 shopt -s extglob
     1 shopt -s extglob
     2 
       
     3 _hg_command_list()
       
     4 {
       
     5     "$hg" --debug help 2>/dev/null | \
       
     6 	awk -F', ' '/^list of commands:/ {commands=1}
       
     7 	    commands==1 && /^ [^ ]/ {
       
     8 		line = substr($0, 2)
       
     9 		colon = index(line, ":")
       
    10 		if (colon > 0)
       
    11 		    line = substr(line, 1, colon-1)
       
    12 		n = split(line, aliases)
       
    13 		command = aliases[1]
       
    14 		if (index(command, "debug") == 1) {
       
    15 		    for (i=1; i<=n; i++)
       
    16 			debug[j++] = aliases[i]
       
    17 		    next
       
    18 		}
       
    19 		print command
       
    20 		for (i=2; i<=n; i++)
       
    21 		    if (index(command, aliases[i]) != 1)
       
    22 			print aliases[i]
       
    23 	    }
       
    24 	    /^global options:/ {exit 0}
       
    25 	    END {for (i in debug) print debug[i]}'
       
    26 }
       
    27 
     2 
    28 _hg_option_list()
     3 _hg_option_list()
    29 {
     4 {
    30     "$hg" -v help $1 2>/dev/null | \
     5     "$hg" -v help $1 2>/dev/null | \
    31 	awk '/^ *-/ {
     6 	awk '/^ *-/ {
    38 }
    13 }
    39 
    14 
    40 
    15 
    41 _hg_commands()
    16 _hg_commands()
    42 {
    17 {
    43     local all commands result
    18     local commands="$("$hg" debugcomplete "$cur")"
    44 
    19     COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$commands' -- "$cur"))
    45     all=$(_hg_command_list)
       
    46     commands=${all%%$'\n'debug*}
       
    47     result=$(compgen -W '$commands' -- "$cur")
       
    48 
       
    49     # hide debug commands from users, but complete them if
       
    50     # there is no other possible command
       
    51     if [ "$result" = "" ]; then
       
    52 	local debug
       
    53 	debug=debug${all#*$'\n'debug}
       
    54 	result=$(compgen -W '$debug' -- "$cur")
       
    55     fi
       
    56 
       
    57     COMPREPLY=(${COMPREPLY[@]:-} $result)
       
    58 }
    20 }
    59 
    21 
    60 _hg_paths()
    22 _hg_paths()
    61 {
    23 {
    62     local paths="$("$hg" paths 2>/dev/null | sed -e 's/ = .*$//')"
    24     local paths="$("$hg" paths 2>/dev/null | sed -e 's/ = .*$//')"