# HG changeset patch # User Bryan O'Sullivan # Date 2013-03-14 23:49:02 # Node ID 69e4787b6867f958653d9556f9b98208fdda7570 # Parent 64b5562550e2bab150ef10cb1c35e6305d5dfc62 bash_completion: match more narrowly This greatly helps completion performance for most commands that deal with files. In a working dir with 150,000 files, where we want to complete the name of a modified file under a path beginning with "a", from the root of the working dir: (old) hg status -nm . 1.7 sec (new) hg status -nm "glob:a**" 0.3 Even "hg add" becomes a little faster, in spite of being the worst case (matching untracked files). diff --git a/contrib/bash_completion b/contrib/bash_completion --- a/contrib/bash_completion +++ b/contrib/bash_completion @@ -82,7 +82,7 @@ shopt -s extglob _hg_status() { - local files="$(_hg_cmd status -n$1 .)" + local files="$(_hg_cmd status -n$1 "glob:$cur**")" local IFS=$'\n' compopt -o filenames 2>/dev/null COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur"))