summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Unix/Command/_man3
2 files changed, 8 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 36d1fb608..eee877101 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-09-07 Danek Duvall <duvall@comfychair.org>
+
+ * 39194: Completion/Unix/Command/_man: _man (Solaris): Ignore
+ man-index. Support multiple sections in the -s flag's argument.
+
2016-09-07 Oliver Kiddle <opk@zsh.org>
* unposted: Completion/Unix/Command/_rm: fix to use ;|
diff --git a/Completion/Unix/Command/_man b/Completion/Unix/Command/_man
index ae6ac38cc..b2aaeaf7e 100644
--- a/Completion/Unix/Command/_man
+++ b/Completion/Unix/Command/_man
@@ -46,6 +46,7 @@ _man() {
local sect sect_dirname
if [[ $OSTYPE = solaris* ]]; then
sect=${${words[(R)-s*]#-s}:-$words[$words[(i)-s]+1]}
+ sect="${sect//,/|}"
elif [[ -n ${sect:=$words[$words[(i)-S]+1]} || -n ${sect:=$MANSECT} ]]; then
sect="${sect//:/|}"
sect="${sect//,/|}"
@@ -67,6 +68,8 @@ _man() {
dirs=( $^_manpath/(sman|man|cat)*/ )
awk='{print $1}'
fi
+ # Solaris 11 and on have a man-index directory that doesn't contain manpages
+ dirs=( ${dirs:#*/man-index/} )
if [[ $OSTYPE = solaris* && ( $words[CURRENT] = -s* || $words[CURRENT-1] == -s ) ]]; then
[[ $words[CURRENT] = -s* ]] && compset -P '-s'
sects=( ${(o)${dirs##*(man|cat)}%/} )