On Thu, Mar 23, 2017 at 04:38:37PM +0100, SZEDER Gábor wrote: > The one-liner awk script in __git_match_ctag() listing ctags symbol > names for 'git grep <TAB>' is already smart enough to list only symbol > names matching the current word to be completed. > > Extend this helper function to accept prefix and suffix parameters to > be prepended and appended, respectively, to each listed symbol name in > the awk script, so its output won't require any additional processing > or filtering in the completion script before being handed over to > Bash. Use the faster __gitcomp_direct() helper instead of > __gitcomp_nl() to fill the fully processed matching symbol names into > Bash's COMPREPLY array. Seems like an easy win (well, neglecting the other 14 patches that let to having gitcomp_direct). I never really noticed it as particularly slow in git.git, but faster is always better if it comes cheaply. > Notes: > It's still just a simple linear search through the tags file, so there > are no miracles: it's still hopelessly, unusably slow e.g. in the > Linux repository. I just tried "git grep foo<Tab>" in the kernel and it was pretty fast. But then I tried "git grep <Tab>". Ouch. So it seems like it's not the awk matching that's slow, but everything that comes after (and is dependent on how much output it produces). -Peff