Skip to contentSkip to conversation

Makes the bash completion script try *bash* completions before simple, filetype completions when a git completion is not found. If bash, completions aren't available, the default file completions are used. This, behavior was inspired by Mercurial's bash completion script.

PATCH In review Ted Pavlic 2 participants 2 messages Jun 15, 2016

lore
Share & tools
lore

Ted Pavlic

author
#0 lore raw

PATCH 2/3 Makes the bash completion script try *bash* completions before simple, filetype completions when a git completion is not found. If bash, completions aren't available, the default file completions are used. This, behavior was inspired by Mercurial's bash completion script.

Second in a series of patches that make bash completions more robust to different interactive shell configurations and editors.

[PATCH 2/3] Makes the bash completion script try *bash* completions before simple
filetype completions when a git completion is not found. If bash completions aren't available, the default file completions are used. This behavior was inspired by Mercurial's bash completion script.

---
 contrib/completion/git-completion.bash |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)
contrib/completion/git-completion.bash +6 -3
index 5d1515c..201f9a6 100755
@@ -1766,13 +1766,16 @@ _gitk ()
 	__git_complete_revlist
 }
 
-complete -o default -o nospace -F _git git
-complete -o default -o nospace -F _gitk gitk
+complete -o bashdefault -o default -o nospace -F _git git 2>/dev/null \
+	|| complete -o default -o nospace -F _git git
+complete -o bashdefault -o default -o nospace -F _gitk gitk 2>/dev/null \
+	|| complete -o default -o nospace -F _gitk gitk
 
 # The following are necessary only for Cygwin, and only are needed
 # when the user has tab-completed the executable name and consequently
 # included the '.exe' suffix.
 #
 if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
-complete -o default -o nospace -F _git git.exe
+complete -o bashdefault -o default -o nospace -F _git git.exe 2>/dev/null \
+	|| complete -o default -o nospace -F _git git.exe
 fi
Signature · 1 line
1.6.1.87.g15624
#1 lore raw
Quoted 10 lines · Ted Pavlic

Second in a series of patches that make bash completions more robust to different interactive shell configurations and editors.

[PATCH 2/3] Makes the bash completion script try *bash* completions before simple
filetype completions when a git completion is not found. If bash completions aren't available, the default file completions are used. This behavior was inspired by Mercurial's bash completion script.

Again, I would have used this as my commit message:

bash-completion: Try bash completions before file completions

Try bash completions before any simple file completions whenever a git completion is not found. This may help users to complete BLAH BLAH BLAH WHAT THE HECK IS THIS GOOD FOR ANYWAY.

Behavior was inspired by Mercurial's bash completion script.

No ack, because I still don't understand why this is a good thing. Yes, I could look it up online in the bash docs. I shouldn't need to go do research like that to understand the justification for a change, it should be better explained in the message.

Signature · 1 line
Shawn.