summaryrefslogtreecommitdiff
path: root/Completion/Unix
diff options
context:
space:
mode:
authorSven Wischnowsky <wischnow@users.sourceforge.net>2001-06-13 11:05:51 +0000
committerSven Wischnowsky <wischnow@users.sourceforge.net>2001-06-13 11:05:51 +0000
commit71a9847d48bcbcc4348b89d5fa1673496201f416 (patch)
tree8122c3b3c2531d0dc8cc4d6a21c280b0f3afa00a /Completion/Unix
parent1bb5d4d3850dd3cc58979baccefbba400662f8b7 (diff)
downloadzsh-71a9847d48bcbcc4348b89d5fa1673496201f416.tar.gz
zsh-71a9847d48bcbcc4348b89d5fa1673496201f416.zip
fix for comparguments (completing after single letter options that get their argument in the next word); make _values ignore some of the standard option it may get; make _mount use _dir_list in some places and improve that; `document' comparguments and compvalues with some comments in computil.c (14897)
Diffstat (limited to 'Completion/Unix')
-rw-r--r--Completion/Unix/Command/_mount4
-rw-r--r--Completion/Unix/Type/_dir_list28
2 files changed, 26 insertions, 6 deletions
diff --git a/Completion/Unix/Command/_mount b/Completion/Unix/Command/_mount
index 045348707..0083fe9ad 100644
--- a/Completion/Unix/Command/_mount
+++ b/Completion/Unix/Command/_mount
@@ -444,7 +444,7 @@ if [[ "$service" = mount ]]; then
irix*)
args=( -s
'-a[mount all filesystems in /etc/fstab]'
- '-b[mount all filesystems in /etc/fstab except those listed]:list of directories:_files -/ -S,'
+ '-b[mount all filesystems in /etc/fstab except those listed]:list of directories:_dir_list -s,'
'-c[check any dirty filesystems before mounting]'
'-f[fake a new /etc/mtab entry, but don'\''t mount any filesystems]'
'-h[mount all filesystems associated with host]:hostnames:_hosts'
@@ -575,7 +575,7 @@ else
irix*)
args=(
'-a[unmount all mounted file systems]'
- '-b[unmount all filesystems in /etc/fstab except those listed]:list of directories:_files -/ -S,'
+ '-b[unmount all filesystems in /etc/fstab except those listed]:list of directories:_dir_list -s,'
'-h[unmount all filesystems associated with host]:hostnames:_hosts'
'-k[kill all processes with files open on filesystems before unmounting]'
'-t[unmount all filesystems of specified type]:file system type:->fstype'
diff --git a/Completion/Unix/Type/_dir_list b/Completion/Unix/Type/_dir_list
index 122d7ad94..ecd7c73da 100644
--- a/Completion/Unix/Type/_dir_list
+++ b/Completion/Unix/Type/_dir_list
@@ -1,7 +1,27 @@
#autoload
-local suf
+# options:
+# -s <sep> to specify the separator (default is a colon)
+# -S to say that the separator should be added as a suffix (instead
+# of the default slash)
-compset -P '*:'
-compset -S ':*' || suf=":"
-_files -S "$suf" -r ': \t\t\-' -/
+local sep=: dosuf suf
+
+while [[ "$1" = -(s*|S) ]]; do
+ case "$1" in
+ -s) sep="$2"; shift 2;;
+ -s*) sep="${1[3,-1]}"; shift;;
+ -S) dosuf=yes; shift;;
+ esac
+done
+
+compset -P "*${sep}"
+compset -S "${sep}*" || suf="$sep"
+
+if [[ -n "$dosuf" ]]; then
+ suf=(-S "$suf")
+else
+ suf=()
+fi
+
+_files "$suf[@]" -r "${sep}"' /\t\t\-' -/ "$@"