zsh-users
 help / color / mirror / code / Atom feed
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 "$@"

         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).