summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Kiddle <opk@users.sourceforge.net>2000-05-19 18:44:21 +0000
committerOliver Kiddle <opk@users.sourceforge.net>2000-05-19 18:44:21 +0000
commitf97eaa45796d232fe2e860eb83c1c523ee47a6cd (patch)
tree4b194cac24c5b2b8f06de15f5ea6d3e14abcb95e
parent2f6db0a72a1821b37acec203af2a2b67b63b1cd1 (diff)
downloadzsh-f97eaa45796d232fe2e860eb83c1c523ee47a6cd.tar.gz
zsh-f97eaa45796d232fe2e860eb83c1c523ee47a6cd.zip
Do a better job of completing suffixes in netscape remote commands (11471)
-rw-r--r--ChangeLog5
-rw-r--r--Completion/User/_netscape28
-rw-r--r--Completion/User/_urls12
3 files changed, 28 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog
index dc4f59468..2b477a636 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2000-05-19 Oliver Kiddle <opk@zsh.org>
+
+ * 11471: Completion/User/_netscape, Completion/User/_urls: do
+ a better job of completing suffixes in netscape remote commands
+
2000-05-19 Peter Stephenson <pws@cambridgesiliconradio.com>
* zsh-users/3071: Completion/Core/compdump: avoid HOME=/
diff --git a/Completion/User/_netscape b/Completion/User/_netscape
index 33db18aee..fda41cd35 100644
--- a/Completion/User/_netscape
+++ b/Completion/User/_netscape
@@ -1,6 +1,6 @@
#compdef netscape
-local curcontext="$curcontext" state line ret=1
+local curcontext="$curcontext" state line ret=1 suf
typeset -A opt_args
_x_arguments -C \
@@ -27,24 +27,27 @@ _x_arguments -C \
[[ "$state" = "urls" ]] &&
_files "$@" && return 0
-
# Handle netscape remote commands
if [[ "$state" = "remote" ]]; then
local -a remote_commands
remote_commands=(openURL openFile saveAs mailto addBookmark)
- [[ $compstate[quoting] = (double|single) ]] && compset -q
compset -P '*\('
+ if compset -S '(|\\)\)*'; then
+ set - -S "" "$@"
+ else
+ set - -S"${${QIPREFIX:+)}:-\)}$compstate[quote] " "$@"
+ fi
case $IPREFIX in
openURL*|addBookmark*) state=urls;;
- openFile*) _files -W ~;;
+ openFile*) _files "$@" -W ~;;
saveAs*)
if compset -P "*,"; then
_wanted types expl 'data type' \
- compadd -s")" -M 'm:{a-zA-Z}={A-Za-z}' HTML Text PostScript &&
- ret=0
+ compadd "$@" -M 'm:{a-zA-Z}={A-Za-z}' HTML Text PostScript && ret=0
else
- _files -W ~ && ret=0
+ compset -S ",*" || suf=","
+ _files -qS "$suf" -W ~ && ret=0
fi
;;
mailto*)
@@ -52,12 +55,14 @@ if [[ "$state" = "remote" ]]; then
if compset -P '*@'; then
_wanted hosts expl 'remote host name' _hosts -q -S, && ret=0
else
- _wanted users expl 'login name' _users -q -S@ && ret=0
+ compset -S "@*" || suf="@"
+ _wanted users expl 'login name' _users -q -S "$suf" && ret=0
fi
;;
*)
+ compset -S '(|\\)\(*' || suf="${${QIPREFIX:+(}:-\(}"
_wanted commands expl 'remote commands' \
- compadd -qS "${${QIPREFIX:+(}:-\(}" -M 'm:{a-zA-Z}={A-Za-z}' - \
+ compadd -qS "$suf" -M 'm:{a-zA-Z}={A-Za-z}' - \
$remote_commands && ret=0
;;
esac
@@ -67,14 +72,15 @@ if [[ "$state" = "urls" ]]; then
# Complete netscape urls
if compset -P about: ; then
_wanted values expl 'about what' \
- compadd authors blank cache document fonts global hype image-cache \
+ compadd "$@" authors blank cache document fonts global hype image-cache \
license logo memory-cache mozilla plugins && ret=0
else
_tags prefixes
while _tags; do
while _next_label prefixes expl 'URL prefix'; do
- compadd "$expl[@]" -S '' about: mocha: javascript: && ret=0
_urls "$@" && ret=0
+ compset -S '[^:]*'
+ compadd "$expl[@]" -S '' about: mocha: javascript: && ret=0
done
(( ret )) || return 0
done
diff --git a/Completion/User/_urls b/Completion/User/_urls
index 691a386ec..324a2bdb3 100644
--- a/Completion/User/_urls
+++ b/Completion/User/_urls
@@ -57,7 +57,7 @@ ipre="$IPREFIX"
if ! compset -P '(#b)([-+.a-z0-9]#):'; then
_tags -C argument prefixes
while _tags; do
- while _next_label prefixes expl 'URL prefix' "$@"; do
+ while _next_label prefixes expl 'URL prefix'; do
[[ -d $urls_path/bookmark ]] &&
compadd "$expl[@]" -S '' bookmark: && ret=0
compadd "$expl[@]" -S '' file: ftp:// gopher:// http:// && ret=0
@@ -79,7 +79,7 @@ case "$scheme" in
if ! compset -P //; then
_tags -C file files
while _tags; do
- while _next_label files expl 'local file' "$@"; do
+ while _next_label files expl 'local file'; do
if [[ -prefix / ]]; then
_path_files "$expl[@]" -S '' -g '*(^/)' && ret=0
_path_files "$expl[@]" -S/ -r '/' -/ && ret=0
@@ -119,7 +119,7 @@ if ! compset -P '(#b)([^/]#)/'; then
_tags hosts
while _tags; do
- while _next_label hosts expl host "$@"; do
+ while _next_label hosts expl host; do
(( $#uhosts )) || _hosts -S/ && ret=0
[[ "$scheme" = http ]] && uhosts=($uhosts $localhttp_servername)
compadd "$expl[@]" -S/ - $uhosts && ret=0
@@ -143,7 +143,7 @@ if [[ "$localhttp_servername" = "$host" ]]; then
user="$match[1]"
while _tags; do
while _next_label files expl 'local file'; do
- _path_files "$expl[@]" -W ~$user/$localhttp_userdir -g '*(^/)' && ret=0
+ _path_files "$expl[@]" "$@" -W ~$user/$localhttp_userdir -g '*(^/)' && ret=0
_path_files "$expl[@]" -W ~$user/$localhttp_userdir -S/ -r '/' -/ && ret=0
done
(( ret )) || return 0
@@ -151,7 +151,7 @@ if [[ "$localhttp_servername" = "$host" ]]; then
else
while _tags; do
while _next_label files expl 'local file'; do
- _path_files "$expl[@]" -W $localhttp_documentroot -g '*(^/)' && ret=0
+ _path_files "$expl[@]" "$@" -W $localhttp_documentroot -g '*(^/)' && ret=0
_path_files "$expl[@]" -W $localhttp_documentroot -S/ -r '/' -/ && ret=0
done
(( ret )) || return 0
@@ -160,7 +160,7 @@ if [[ "$localhttp_servername" = "$host" ]]; then
else
while _tags; do
while _next_label files expl 'local file'; do
- _path_files "$expl[@]" -W $urls_path/$scheme/$host -g '*(^/)' && ret=0
+ _path_files "$expl[@]" "$@" -W $urls_path/$scheme/$host -g '*(^/)' && ret=0
_path_files "$expl[@]" -W $urls_path/$scheme/$host -S/ -r '/' -/ && ret=0
done
(( ret )) || return 0