Mercurial > hg-stable
comparison contrib/bash_completion @ 1684:cf930b2452d3
Cleanup of spacing in bash_completion
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Thu, 02 Feb 2006 08:16:17 +0100 |
parents | 063e04831a09 |
children | 2af98c4b2587 |
comparison
equal
deleted
inserted
replaced
1683:063e04831a09 | 1684:cf930b2452d3 |
---|---|
2 | 2 |
3 _hg_command_list() | 3 _hg_command_list() |
4 { | 4 { |
5 "$hg" --debug help 2>/dev/null | \ | 5 "$hg" --debug help 2>/dev/null | \ |
6 awk 'function command_line(line) { | 6 awk 'function command_line(line) { |
7 gsub(/,/, "", line) | 7 gsub(/,/, "", line) |
8 gsub(/:.*/, "", line) | 8 gsub(/:.*/, "", line) |
9 split(line, aliases) | 9 split(line, aliases) |
10 command = aliases[1] | 10 command = aliases[1] |
11 delete aliases[1] | 11 delete aliases[1] |
12 print command | 12 print command |
13 for (i in aliases) | 13 for (i in aliases) |
14 if (index(command, aliases[i]) != 1) | 14 if (index(command, aliases[i]) != 1) |
15 print aliases[i] | 15 print aliases[i] |
16 } | 16 } |
17 /^list of commands:/ {commands=1} | 17 /^list of commands:/ {commands=1} |
18 commands && /^ debug/ {a[i++] = $0; next;} | 18 commands && /^ debug/ {a[i++] = $0; next;} |
19 commands && /^ [^ ]/ {command_line($0)} | 19 commands && /^ [^ ]/ {command_line($0)} |
20 /^global options:/ {exit 0} | 20 /^global options:/ {exit 0} |
21 END {for (i in a) command_line(a[i])}' | 21 END {for (i in a) command_line(a[i])}' |
22 | 22 |
23 } | 23 } |
24 | 24 |
25 _hg_option_list() | 25 _hg_option_list() |
26 { | 26 { |
27 "$hg" -v help $1 2> /dev/null | \ | 27 "$hg" -v help $1 2>/dev/null | \ |
28 awk '/^ *-/ { | 28 awk '/^ *-/ { |
29 for (i = 1; i <= NF; i ++) { | 29 for (i = 1; i <= NF; i ++) { |
30 if (index($i, "-") != 1) | 30 if (index($i, "-") != 1) |
31 break; | 31 break; |
32 print $i; | 32 print $i; |
33 } | 33 } |
34 }' | 34 }' |
35 } | 35 } |
36 | 36 |
37 | 37 |
38 _hg_commands() | 38 _hg_commands() |
39 { | 39 { |
54 COMPREPLY=(${COMPREPLY[@]:-} $result) | 54 COMPREPLY=(${COMPREPLY[@]:-} $result) |
55 } | 55 } |
56 | 56 |
57 _hg_paths() | 57 _hg_paths() |
58 { | 58 { |
59 local paths="$("$hg" paths 2> /dev/null | sed -e 's/ = .*$//')" | 59 local paths="$("$hg" paths 2>/dev/null | sed -e 's/ = .*$//')" |
60 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -W '$paths' -- "$cur" )) | 60 COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$paths' -- "$cur")) |
61 } | 61 } |
62 | 62 |
63 _hg_repos() | 63 _hg_repos() |
64 { | 64 { |
65 local i | 65 local i |
66 for i in $( compgen -d -- "$cur" ); do | 66 for i in $(compgen -d -- "$cur"); do |
67 test ! -d "$i"/.hg || COMPREPLY=(${COMPREPLY[@]:-} "$i") | 67 test ! -d "$i"/.hg || COMPREPLY=(${COMPREPLY[@]:-} "$i") |
68 done | 68 done |
69 } | 69 } |
70 | 70 |
71 _hg_status() | 71 _hg_status() |
72 { | 72 { |
73 local files="$( "$hg" status -n$1 . 2> /dev/null)" | 73 local files="$("$hg" status -n$1 . 2>/dev/null)" |
74 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -W '$files' -- "$cur" )) | 74 COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur")) |
75 } | 75 } |
76 | 76 |
77 _hg_tags() | 77 _hg_tags() |
78 { | 78 { |
79 local tags="$("$hg" tags 2> /dev/null | | 79 local tags="$("$hg" tags 2>/dev/null | |
80 sed -e 's/[0-9]*:[a-f0-9]\{40\}$//; s/ *$//')" | 80 sed -e 's/[0-9]*:[a-f0-9]\{40\}$//; s/ *$//')" |
81 COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W '$tags' -- "$cur") ) | 81 COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$tags' -- "$cur")) |
82 } | 82 } |
83 | 83 |
84 # this is "kind of" ugly... | 84 # this is "kind of" ugly... |
85 _hg_count_non_option() | 85 _hg_count_non_option() |
86 { | 86 { |
87 local i count=0 | 87 local i count=0 |
88 local filters="$1" | 88 local filters="$1" |
89 | 89 |
90 for (( i=1; $i<=$COMP_CWORD; i++ )); do | 90 for ((i=1; $i<=$COMP_CWORD; i++)); do |
91 if [[ "${COMP_WORDS[i]}" != -* ]]; then | 91 if [[ "${COMP_WORDS[i]}" != -* ]]; then |
92 if [[ ${COMP_WORDS[i-1]} == @($filters|$global_args) ]]; then | 92 if [[ ${COMP_WORDS[i-1]} == @($filters|$global_args) ]]; then |
93 continue | 93 continue |
94 fi | 94 fi |
95 count=$(($count + 1)) | 95 count=$(($count + 1)) |
111 prev="$3" | 111 prev="$3" |
112 | 112 |
113 # searching for the command | 113 # searching for the command |
114 # (first non-option argument that doesn't follow a global option that | 114 # (first non-option argument that doesn't follow a global option that |
115 # receives an argument) | 115 # receives an argument) |
116 for (( i=1; $i<=$COMP_CWORD; i++ )); do | 116 for ((i=1; $i<=$COMP_CWORD; i++)); do |
117 if [[ ${COMP_WORDS[i]} != -* ]]; then | 117 if [[ ${COMP_WORDS[i]} != -* ]]; then |
118 if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then | 118 if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then |
119 cmd="${COMP_WORDS[i]}" | 119 cmd="${COMP_WORDS[i]}" |
120 break | 120 break |
121 fi | 121 fi |
123 done | 123 done |
124 | 124 |
125 if [[ "$cur" == -* ]]; then | 125 if [[ "$cur" == -* ]]; then |
126 opts=$(_hg_option_list $cmd) | 126 opts=$(_hg_option_list $cmd) |
127 | 127 |
128 COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W '$opts' -- "$cur") ) | 128 COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$opts' -- "$cur")) |
129 return | 129 return |
130 fi | 130 fi |
131 | 131 |
132 # global options | 132 # global options |
133 case "$prev" in | 133 case "$prev" in |
145 _hg_commands | 145 _hg_commands |
146 return | 146 return |
147 fi | 147 fi |
148 | 148 |
149 # canonicalize command name | 149 # canonicalize command name |
150 cmd=$("$hg" -q help "$cmd" 2> /dev/null | sed -e 's/^hg //; s/ .*//; 1q') | 150 cmd=$("$hg" -q help "$cmd" 2>/dev/null | sed -e 's/^hg //; s/ .*//; 1q') |
151 | 151 |
152 if [ "$cmd" != status ] && [ "$prev" = -r ] || [ "$prev" = --rev ]; then | 152 if [ "$cmd" != status ] && [ "$prev" = -r ] || [ "$prev" = --rev ]; then |
153 _hg_tags | 153 _hg_tags |
154 return | 154 return |
155 fi | 155 fi |
189 clone) | 189 clone) |
190 local count=$(_hg_count_non_option) | 190 local count=$(_hg_count_non_option) |
191 if [ $count = 1 ]; then | 191 if [ $count = 1 ]; then |
192 _hg_paths | 192 _hg_paths |
193 fi | 193 fi |
194 _hg_repos | 194 _hg_repos |
195 ;; | 195 ;; |
196 debugindex|debugindexdot) | 196 debugindex|debugindexdot) |
197 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -f -X "!*.i" -- "$cur" )) | 197 COMPREPLY=(${COMPREPLY[@]:-} $(compgen -f -X "!*.i" -- "$cur")) |
198 ;; | 198 ;; |
199 debugdata) | 199 debugdata) |
200 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -f -X "!*.d" -- "$cur" )) | 200 COMPREPLY=(${COMPREPLY[@]:-} $(compgen -f -X "!*.d" -- "$cur")) |
201 ;; | 201 ;; |
202 esac | 202 esac |
203 | 203 |
204 } | 204 } |
205 | 205 |
206 complete -o bashdefault -o default -F _hg hg 2> /dev/null \ | 206 complete -o bashdefault -o default -F _hg hg 2>/dev/null \ |
207 || complete -o default -F _hg hg | 207 || complete -o default -F _hg hg |