--- a/contrib/bash_completion Wed Nov 20 13:19:55 2013 -0500
+++ b/contrib/bash_completion Wed Nov 20 14:45:18 2013 -0500
@@ -84,7 +84,6 @@
{
local files="$(_hg_cmd debugpathcomplete $1 "$cur")"
local IFS=$'\n'
- compopt -o filenames 2>/dev/null
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur"))
}
@@ -92,7 +91,6 @@
{
local files="$(_hg_cmd status -n$1 "glob:$cur**")"
local IFS=$'\n'
- compopt -o filenames 2>/dev/null
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur"))
}
@@ -128,6 +126,19 @@
echo $(($count - 1))
}
+_hg_fix_wordlist()
+{
+ local LASTCHAR=' '
+ if [ ${#COMPREPLY[@]} = 1 ]; then
+ [ -d "$COMPREPLY" ] && LASTCHAR=/
+ COMPREPLY=$(printf %q%s "$COMPREPLY" "$LASTCHAR")
+ else
+ for ((i=0; i < ${#COMPREPLY[@]}; i++)); do
+ [ -d "${COMPREPLY[$i]}" ] && COMPREPLY[$i]=${COMPREPLY[$i]}/
+ done
+ fi
+}
+
_hg()
{
local cur prev cmd cmd_index opts i aliashg
@@ -162,12 +173,14 @@
if [[ "$cur" == -* ]]; then
if [ "$(type -t "_hg_opt_$cmd")" = function ] && "_hg_opt_$cmd"; then
+ _hg_fix_wordlist
return
fi
opts=$(_hg_cmd debugcomplete --options "$cmd")
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$opts' -- "$cur"))
+ _hg_fix_wordlist
return
fi
@@ -176,22 +189,26 @@
-R|--repository)
_hg_paths
_hg_repos
+ _hg_fix_wordlist
return
;;
--cwd)
# Stick with default bash completion
+ _hg_fix_wordlist
return
;;
esac
if [ -z "$cmd" ] || [ $COMP_CWORD -eq $i ]; then
_hg_commands
+ _hg_fix_wordlist
return
fi
# try to generate completion candidates for whatever command the user typed
local help
if _hg_command_specific; then
+ _hg_fix_wordlist
return
fi
@@ -205,6 +222,7 @@
cmd=${cmd%%[$' \n']*}
canonical=1
_hg_command_specific
+ _hg_fix_wordlist
}
_hg_command_specific()
@@ -291,8 +309,8 @@
return 0
}
-complete -o bashdefault -o default -F _hg hg \
- || complete -o default -F _hg hg
+complete -o bashdefault -o default -o nospace -F _hg hg \
+ || complete -o default -o nospace -F _hg hg
# Completion for commands provided by extensions