Another try at fixing bash completions in "set -u" environments.
I agree with Junio; setting -u in your interactive shell is as bad
as export CDPATH. Its crazy.
This whole series of patches was inspired by a group of workstations at
a university that set -u by default for all users.
Additionally, doesn't "set -u" make tcsh users feel more at home in
bash? Certainly other shells have this same behavior in their
interactive modes.
Additionally added some comments and omitted things like Vim modelines.
These are orthogonal to the -u corrections. They should be in a
different patch. The comments are wecome. The '#!bash' looks like
a good idea. But a vim specific modeline, I don't like, for the
reasons Junio has already stated.
OK. Can do.
- if [ -z "$1" ]; then
+ if [ $# -eq 0 ] || [ -z "$1" ]; then
This is one of those places where [ -z "${1-}" ] is likely easier
That was a mistake. I missed that hunk. I meant to use the ${1-}.
+ if [ $# -gt 0 ]&& [ -n "$1" ]; then
Eh, I'd rather see [ -n "${1-}" ] over the&& test.
Again, my mistake. It was late and I missed it.
+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
Why are we switching to bashdefault? Is this an unrelated change
from the -u stuff and should go into its own commit, with its own
justification?
Ok.
From what I understand, normal bash completion is like setting "-o
bashdefault -o default". That is, it tries the bash completions first
before going to the filename completion. This change makes it so that
git jumps back to bash completion if nothing git-specific is found. If
nothing bash-specific is found, it will go back to standard default
filename completion.
--Ted
--
Ted Pavlic <ted@xxxxxxxxxxxxx>
Please visit my ALS association page:
http://web.alsa.org/goto/tedpavlic
My family appreciates your support in the fight to defeat ALS.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html