From: Oliver Kiddle <okiddle@yahoo.co.uk>
To: zsh users <zsh-users@sunsite.dk>
Subject: Re: menuselection with manpages
Date: Fri, 19 May 2006 09:31:58 +0100 (BST) [thread overview]
Message-ID: <20060519083158.74891.qmail@web25401.mail.ukl.yahoo.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 790 bytes --]
Frank Terbeck wrote:
> > How would I get the completion to add the section to the
completion,
> > like 'man 5 crontab'?
> I found some time this evening, so I played around with the _man
> function a little bit. The required change was pretty simple:
Very nice!
This should be configurable with a style. I've attached a patch which
does that. This also means that section 1 can be excluded as follows:
zstyle ':completion:*:manuals.(^1*)' insert-sections true
I prefer this, especially on Solaris because there the prefix needs to
include the -s option and that is then a common prefix to all matches.
Oliver
PS. Sorry for seperately attaching the patch but otherwise Yahoo's
webmail would wrap the lines.
Send instant messages to your online friends http://uk.messenger.yahoo.com
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 817113010-mansect.patch --]
[-- Type: text/x-patch; name="mansect.patch", Size: 1519 bytes --]
--- _man.orig Fri May 19 09:55:05 2006
+++ _man Fri May 19 10:24:10 2006
@@ -28,7 +28,7 @@
local sect
if [[ $OSTYPE = solaris* ]]; then
- sect=$words[$words[(i)-s]+1]
+ sect=${${words[(R)-s*]#-s}:-$words[$words[(i)-s]+1]}
elif [[ -n ${sect:=$words[$words[(i)-S]+1]} || -n ${sect:=$MANSECT} ]]; then
if [[ $sect != ${sect::="${sect//:/|}"} ]]; then
sect="($sect)"
@@ -44,7 +44,11 @@
dirs=( $^_manpath/(sman|man|cat)*/ )
awk='{print $1}'
fi
- if zstyle -t ":completion:${curcontext}:manuals" separate-sections; then
+ if [[ $OSTYPE = solaris* && ( $words[CURRENT] = -s* || $words[CURRENT-1] == -s ) ]]; then
+ [[ $words[CURRENT] = -s* ]] && compset -P '-s'
+ sects=( ${(o)${dirs##*(man|cat)}%/} )
+ _wanted sections expl 'section' compadd -a sects
+ elif zstyle -t ":completion:${curcontext}:manuals" separate-sections; then
typeset -U sects
local ret=1
@@ -69,7 +73,7 @@
}
_man_pages() {
- local matcher pages dummy
+ local matcher pages dummy sopt
zparseopts -E M+:=matcher
@@ -90,7 +94,14 @@
# beginning with .<->: that handles problem cases like files called
# `POSIX.1.5'.
- compadd "$@" - ${pages%.(?|<->*(|.gz|.bz2|.Z))}
+ [[ $OSTYPE = solaris* ]] && sopt='-s '
+ if ((CURRENT > 2)) ||
+ ! zstyle -t ":completion:${curcontext}:manuals.$sect" insert-sections
+ then
+ compadd "$@" - ${pages%.(?|<->*(|.gz|.bz2|.Z))}
+ else
+ compadd "$@" -P "$sopt$sect " - ${pages%.(?|<->*(|.gz|.bz2|.Z))}
+ fi
}
_man "$@"
next prev reply other threads:[~2006-05-19 8:32 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-17 15:10 Frank Terbeck
2006-05-18 22:09 ` Frank Terbeck
2006-05-19 3:28 ` Bart Schaefer
2006-05-19 4:38 ` Frank Terbeck
2006-05-19 8:31 ` Oliver Kiddle [this message]
2006-05-20 8:10 ` Frank Terbeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060519083158.74891.qmail@web25401.mail.ukl.yahoo.com \
--to=okiddle@yahoo.co.uk \
--cc=zsh-users@sunsite.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).