Mercurial > hg-stable
diff contrib/bash_completion @ 18790:1e28a7f58f33
completion: add a debuglabelcomplete command
When completing a "label" (a symbolic name for a commit), the
bash_completion script currently has to invoke hg three times. For
a large repository, the cost of starting up and loading all the
necessary context over and over is very high.
For instance, in mozilla-central:
time (export HGPLAIN=1; hg tags -q; hg bookmarks -q; hg branches) >/dev/null
0.446 sec
Compare with the debuglabelcomplete command that this commit adds:
time hg debuglabelcomplete >/dev/null
0.148 sec
This greatly helps responsiveness.
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Thu, 21 Mar 2013 10:51:18 -0700 |
parents | fff3a8114510 |
children | a821ec835223 |
line wrap: on
line diff
--- a/contrib/bash_completion Thu Mar 21 09:13:16 2013 -0700 +++ b/contrib/bash_completion Thu Mar 21 10:51:18 2013 -0700 @@ -88,20 +88,6 @@ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur")) } -_hg_tags() -{ - local tags="$(_hg_cmd tags -q)" - local IFS=$'\n' - COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$tags' -- "$cur")) -} - -_hg_branches() -{ - local branches="$(_hg_cmd branches -q)" - local IFS=$'\n' - COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$branches' -- "$cur")) -} - _hg_bookmarks() { local bookmarks="$(_hg_cmd bookmarks -q)" @@ -111,9 +97,9 @@ _hg_labels() { - _hg_tags - _hg_branches - _hg_bookmarks + local labels="$(_hg_cmd debuglabelcomplete "$cur")" + local IFS=$'\n' + COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$labels' -- "$cur")) } # this is "kind of" ugly...