git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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
Previous: Manlio PerilloNext: Felipe Contreras
Message 17 of 19 in “completion: general cleanups”
  1. 00/11 completion: general cleanupsFelipe Contreras, Apr 27, 2013
  2. 01/11 completion: add file completion testsFelipe Contreras, Apr 27, 2013
  3. 02/11 completion: document tilde expansion failure in testsFelipe Contreras, Apr 27, 2013
  4. 03/11 completion; remove unuseful commentsFelipe Contreras, Apr 27, 2013
  5. 04/11 completion: use __gitcompadd for __gitcomp_fileFelipe Contreras, Apr 27, 2013
  6. 05/11 completion: refactor diff_index wrappersFelipe Contreras, Apr 27, 2013
  7. 06/11 completion: refactor __git_complete_index_file()Felipe Contreras, Apr 27, 2013
  8. 07/11 completion: avoid compopt -o filenamesFelipe Contreras, Apr 27, 2013
  9. 08/11 completion: get rid of __gitcomp_file()Felipe Contreras, Apr 27, 2013
  10. 09/11 completion: add space after completed filenameFelipe Contreras, Apr 27, 2013
  11. 10/11 completion: remove __git_index_file_list_filter()Felipe Contreras, Apr 27, 2013
  12. 11/11 completion: zsh: add proper file supportFelipe Contreras, Apr 27, 2013
  13. Manlio PerilloApr 27, 2013
  14. Felipe ContrerasApr 27, 2013
  15. Felipe ContrerasApr 27, 2013
  16. Manlio PerilloApr 27, 2013
  17. Felipe ContrerasApr 27, 2013
  18. Felipe ContrerasApr 27, 2013
  19. Manlio PerilloApr 27, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.