From 7f7f6ca1bac49513b403e604e66853ee61f8d626 Mon Sep 17 00:00:00 2001 From: Clint Adams Date: Fri, 31 May 2002 20:29:40 +0000 Subject: unposted: get rid of evil -Wno-implicit in CFLAGS. 16426: allow manual pages to be shown separated by section with new separate-sections style 17266: check `manpath` even when $MANPATH is set. users/4157 (plus workers/15674): Better handling of section numbers. --- ChangeLog | 12 +++++++++ Completion/Unix/Command/_man | 59 +++++++++++++++++++++++++++++++++--------- Completion/Zsh/Command/_zstyle | 1 + Doc/Zsh/compsys.yo | 9 +++++++ 4 files changed, 69 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5a44b2750..671afac4e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,18 @@ * unposted: zshconfig.ac: get rid of evil -Wno-implicit in CFLAGS. + * Sven: 16426: Completion/Unix/Command/_man, + Completion/Zsh/Command/_zstyle, Doc/Zsh/compsys.yo: allow + manual pages to be shown separated by section with new + separate-sections style + + * 17266: Completion/Unix/Command/_man: check `manpath` + even when $MANPATH is set. + + * Bart: users/4157 (plus workers/15674): + Completion/Unix/Command/_man: Better handling of section + numbers. + 2002-05-28 Clint Adams * 17244: Completion/Debian/Command/_dpkg: diff --git a/Completion/Unix/Command/_man b/Completion/Unix/Command/_man index 0bdd8db8b..a7b014d1b 100644 --- a/Completion/Unix/Command/_man +++ b/Completion/Unix/Command/_man @@ -7,30 +7,65 @@ _man() { _files || return 0 fi - if (( ! $#manpath )); then + if (( ! $#_manpath )); then local mp - mp=($(manpath 2>/dev/null)) + mp=( ${(s.:.)$(manpath 2>/dev/null)} ) [[ "$mp" == *:* ]] && mp=( ${(s.:.)mp} ) - manpath=( $mp ) + if (( $#mp )); then + _manpath=( $mp ) + elif (( $#manpath )); then + _manpath=( $manpath ) + fi fi - (( $#manpath )) || manpath=( ${(s.:.)$(manpath 2>/dev/null)} ) || - manpath=( /usr/man(-/) /(opt|usr)/(dt|share|X11R6|local)/(cat|)man(-/) ) + (( $#_manpath )) || + _manpath=( /usr/man(-/) /(opt|usr)/(dt|share|X11R6|local)/(cat|)man(-/) ) # `sman' is the SGML manual directory for Solaris 7. # 1M is system administrator commands on SVR4 - mrd=(${^manpath/\%L/${LANG:-En_US.ASCII}}/mandb(N)) + mrd=(${^_manpath/\%L/${LANG:-En_US.ASCII}}/mandb(N)) + + local sect + if [[ $OSTYPE = solaris* ]]; then + sect=$words[$words[(i)-s]+1] + elif [[ -n ${sect:=$words[$words[(i)-S]+1]} || -n ${sect:=$MANSECT} ]]; then + if [[ $sect != ${sect::="${sect//:/|}"} ]]; then + sect="($sect)" + fi + elif (( CURRENT > 2 )); then + sect=$words[2] + fi - if [[ $words[2] = (<->*|1M|l|n) ]]; then - dirs=( $^manpath/(sman|man|cat)${words[2]}/ ) - awk="\$2 == \"$words[2]\" {print \$1}" + if [[ $sect = (<->*|1M|l|n) || $sect = \(*\|*\) ]]; then + dirs=( $^_manpath/(sman|man|cat)${~sect}/ ) + awk="\$2 == \"$sect\" {print \$1}" else - dirs=( $^manpath/(sman|man|cat)*/ ) + dirs=( $^_manpath/(sman|man|cat)*/ ) awk='{print $1}' fi + if zstyle -t ":completion:${curcontext}:manuals" separate-sections; then + typeset -U sects + local ret=1 + + sects=( ${(o)${dirs##*(man|cat)}%/} ) + + (( $#sects )) || return 1 - _wanted manuals expl 'manual page' _man_pages + _tags manuals.${^sects} + while _tags; do + for sect in $sects; do + _requested manuals.$sect expl "manual page, section $sect" _man_pages && + ret=0 + done + (( ret )) || return 0 + done + + return 1 + else + sect= + _wanted manuals expl 'manual page' _man_pages + fi } _man_pages() { @@ -45,7 +80,7 @@ _man_pages() { matcher= fi - pages=( $dirs ) + pages=( ${(M)dirs:#*$sect/} ) compfiles -p pages '' '' "$matcher" '' dummy '*' pages=( ${^~pages}(N:t:r) ) diff --git a/Completion/Zsh/Command/_zstyle b/Completion/Zsh/Command/_zstyle index 37590f0d9..9f961416a 100644 --- a/Completion/Zsh/Command/_zstyle +++ b/Completion/Zsh/Command/_zstyle @@ -82,6 +82,7 @@ styles=( remove-all-dups c:bool select-prompt c: select-scroll c: + separate-sections c:bool single-ignored c:single-ignored sort c:bool special-dirs c:sdirs diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo index 580b7c43c..61c153dca 100644 --- a/Doc/Zsh/compsys.yo +++ b/Doc/Zsh/compsys.yo @@ -1892,6 +1892,15 @@ negative number to scroll by the number of lines of the screen minus that number (or plus the number, since it is negative). The default is to scroll by single lines. ) +kindex(separate-sections, completion style) +item(tt(separate-sections))( +This style is used with the tt(manuals) tag when completing names of +manual pages. If it is `true', entries for different sections are +added separately using tag names of the form `tt(manual.)var(X)', +where var(X) is the section number. This means that it is possible to +make pages from different sections be listed separately by setting the +tt(group-name) style. The default for this style is `false'. +) kindex(single-ignored, completion style) item(tt(single-ignored))( This is used by the tt(_ignored) completer. It specifies what -- cgit 1.4.1