zsh-workers
 help / color / mirror / code / Atom feed
From: Sven Wischnowsky <wischnow@informatik.hu-berlin.de>
To: zsh-workers@sunsite.dk
Subject: Re: Commit those _man patches?
Date: Thu, 21 Jun 2001 14:51:03 +0200 (MET DST)	[thread overview]
Message-ID: <200106211251.OAA13962@beta.informatik.hu-berlin.de> (raw)
In-Reply-To: <1010620180154.ZM8776@candle.brasslantern.com>

Bart Schaefer wrote:

> Sven sent a patch for an improvement to _man in 14633, with a follow-up in
> 14659.  I just noticed that they've never been committed.

I had completely forgotten about those.  I'm going to commit them to the
development branch now.  If nobody sees any bad side effects we can
consider applying them to 4.0.2, too.


Bye
  Sven

Index: Completion/Unix/Command/_man
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_man,v
retrieving revision 1.1
diff -u -r1.1 _man
--- Completion/Unix/Command/_man	2001/04/02 11:57:04	1.1
+++ Completion/Unix/Command/_man	2001/06/21 12:51:32
@@ -1,47 +1,62 @@
 #compdef man apropos whatis
 
-local rep expl star approx mrd
+_man() {
+  local dirs expl mrd awk
 
-if [[ $service == man ]] && (( $words[(I)-l] + $words[(I)--local-file] )); then
-  _files || return 0
-fi
-
-if [[ $compstate[pattern_match] != [^*] ]]; then
-  # If a string other than *, we just want correction, so no `*'.
-  star='*'
-fi
-
-if [[ -n $_comp_correct ]]; then
-  # If this is set, we are correcting with this many approximations.
-  approx="(#a${_comp_correct})"
-fi
-
-if (( ! $#manpath )); then
-  local mp
-  mp=($(manpath 2>/dev/null))
-  [[ "$mp" == *:* ]] && mp=( ${(s.:.)mp} )
-  manpath=( $mp )
-fi
-
-(( $#manpath )) || manpath=( ${(s.:.)$(manpath 2>/dev/null)} ) ||
-    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))
-if [[ $words[2] = (<->*|1M|l|n) ]]; then
-  rep=(
-  $manpath/(sman|man|cat)${words[2]}/${~approx}$PREFIX${~star}$SUFFIX.*(:t) )
-  (($#mrd)) && rep[$#rep+1]=($(awk "\$2 == \"$words[2]\" {print \$1}" $mrd))
-else
-  rep=( $manpath/(sman|man|cat)*/${~approx}$PREFIX${~star}$SUFFIX.*(:t) )
-  (($#mrd)) && rep[$#rep+1]=($(awk '{print $1}' $mrd))
-fi
-
-
-# Remove any compression suffix, then remove the minimum possible string
-# beginning with .<->: that handles problem cases like files called
-# `POSIX.1.5'.
-(( $#rep )) && _wanted manuals expl 'manual page' \
-    compadd - ${${rep%%.(bz2|z|gz|Z)}%.<->*}
+  if [[ $service == man ]] && (( $words[(I)-l] + $words[(I)--local-file] )); then
+    _files || return 0
+  fi
+
+  if (( ! $#manpath )); then
+    local mp
+    mp=($(manpath 2>/dev/null))
+    [[ "$mp" == *:* ]] && mp=( ${(s.:.)mp} )
+    manpath=( $mp )
+  fi
+
+  (( $#manpath )) || manpath=( ${(s.:.)$(manpath 2>/dev/null)} ) ||
+      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))
+
+  if [[ $words[2] = (<->*|1M|l|n) ]]; then
+    dirs=( $^manpath/(sman|man|cat)${words[2]}/ )
+    awk="\$2 == \"$words[2]\" {print \$1}"
+  else
+    dirs=( $^manpath/(sman|man|cat)*/ )
+    awk='{print $1}'
+  fi
+
+  _wanted manuals expl 'manual page' _man_pages
+}
+
+_man_pages() {
+  local matcher pages dummy
+
+  zparseopts -E M+:=matcher
+
+  if (( $#matcher )); then
+    matcher=( ${matcher:#-M} )
+    matcher="$matcher"
+  else
+    matcher=
+  fi
+
+  pages=( $dirs )
+  compfiles -p pages '' '' "$matcher" '' dummy '*'
+
+  pages=( $~pages(:t:r) )
+
+  (($#mrd)) && pages[$#pages+1]=($(awk $awk $mrd))
+
+  # Remove any compression suffix, then remove the minimum possible string
+  # beginning with .<->: that handles problem cases like files called
+  # `POSIX.1.5'.
+
+  compadd "$@" - ${pages%.<->*}
+}
+
+_man "$@"

-- 
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


      reply	other threads:[~2001-06-21 12:52 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-06-20 18:01 Bart Schaefer
2001-06-21 12:51 ` Sven Wischnowsky [this message]

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=200106211251.OAA13962@beta.informatik.hu-berlin.de \
    --to=wischnow@informatik.hu-berlin.de \
    --cc=zsh-workers@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).