Subject: [PATCH 00/11] completion: path completion improvements: speedup and quoted paths

From: SZEDER Gábor <[email-masked]>
Date: Tue, 17 Apr 2018 00:41:04 +0200

So, the highlights of this patch series are:

  - At the top of the worktree in linux.git with over 62k files the time
    needed for 'git rm <TAB>' goes down from 2.15s to 0.052s.

  - Same place, uniquely completing Makefile with 'git rm Mak<TAB>' goes
    down from 2.16s to 0.033s.

  - Completing paths containing escaped or quoted characters (except
    newline) will work properly, and won't fall back to Bash's filename
    completion, e.g. git add File\\w<TAB>' will list
    'File\with\backslashes.c', but not the corresponding ignored object
    file.

Well, at least it appears to be working for me, but dealing with quoting
especially is nuts.  If someone knows simpler ways to remove escaping
and quoting than in the functions added in patches 5 and 10, then
please, I would really love to learn something :)

Someone using ZSH regularly should have a look and test it.

SZEDER Gábor (11):
  t9902-completion: add tests demonstrating issues with quoted pathnames
  completion: move __git_complete_index_file() next to its helpers
  completion: simplify prefix path component handling during path
    completion
  completion: support completing non-ASCII pathnames
  completion: improve handling quoted paths on the command line
  completion: let 'ls-files' and 'diff-index' filter matching paths
  completion: use 'awk' to strip trailing path components
  t9902-completion: ignore COMPREPLY element order in some tests
  completion: remove repeated dirnames with 'awk' during path completion
  completion: improve handling quoted paths in 'git ls-files's output
  completion: fill COMPREPLY directly when completing paths

 contrib/completion/git-completion.bash | 218 +++++++++++++++++++++----
 contrib/completion/git-completion.zsh  |   9 +
 t/t9902-completion.sh                  | 153 ++++++++++++++++-
 3 files changed, 348 insertions(+), 32 deletions(-)

-- 
2.17.0.366.gbe216a3084