Re: [PATCH 00/11] completion: general cleanups
- From
Felipe Contreras <felipe.contreras@gmail.com>
- Date
- Apr 27, 2013, 19:15 UTC
- Message-ID
- <CAMP44s32WrnFr9Lp03Wu8gC6=FaACBtDbi1rnu=bo94Aa73TBA@mail.gmail.com>
- In-Reply-To
- <517BF167.7090300@gmail.com>
On Sat, Apr 27, 2013 at 10:40 AM, Manlio Perillo <manlio.perillo@gmail.com> wrote:
Show 53 quoted lines
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Il 27/04/2013 15:07, Felipe Contreras ha scritto:
>> [...]
>> This should do the trick. No?
>>
>> --- a/contrib/completion/git-completion.bash
>> +++ b/contrib/completion/git-completion.bash
>> @@ -262,16 +262,17 @@ __git_ls_files_helper ()
>> # If provided, only files within the specified directory are listed.
>> # Sub directories are never recursed. Path must have a trailing
>> # slash.
>> +# 3. Compat mode; set to enable.
>> __git_index_files ()
>> {
>> - local dir="$(__gitdir)" root="${2-.}" file
>> + local dir="$(__gitdir)" root="${2-.}" file old="${3-}"
>>
>> if [ -d "$dir" ]; then
>> __git_ls_files_helper "$root" "$1" |
>> while read -r file; do
>> case "$file" in
>> - ?*/*) echo "${file%%/*}/" ;;
>> - *) echo "$file " ;;
>> + ?*/*) echo "${file%%/*}${old:+/}" ;;
>> + *) echo "${file}${old:+ }" ;;
>> esac
>> done | sort | uniq
>> fi
>> @@ -480,7 +481,7 @@ __git_complete_revlist_file ()
>> # The exception is --committable, which finds the files appropriate commit.
>> __git_complete_index_file ()
>> {
>> - local pfx="" cur_="$cur"
>> + local pfx="" cur_="$cur" old
>>
>> case "$cur_" in
>> ?*/*)
>> @@ -490,7 +491,8 @@ __git_complete_index_file ()
>> ;;
>> esac
>>
>> - __gitcomp_nl "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_" ""
>> + compopt -o filenames +o nospace 2> /dev/null || old=1
>> + __gitcomp_nl "$(__git_index_files "$1" "$pfx" "$old")" "$pfx" "$cur_" ""
>> }
>>
>> __git_complete_file ()
>>
>
> I like the idea (but I have not tested it), however compopt is called
> two times, for each completion.Why two times?
> Maybe we can test for `-o filenames` support when script is loaded, > where currently there is a Bash version check, and set a global variable?
Yeah, that's the way bash-completion used to do it. But I wonder if we should be worrying about this at this point, even bash-completion dropped support for bash < 4 more than two years ago, and even debian stable is at 4.1.
http://anonscm.debian.org/gitweb/?p=bash-completion/bash-completion.git;a=commitdiff;h=f1b3be235722d1ea51160acf50120eb88995a5b7
Cheers.
-- Felipe Contreras