zsh-users
 help / color / mirror / code / Atom feed
* Re: man page completion / regexp
@ 2004-06-07  8:42 Michael Dettmer
  0 siblings, 0 replies; 4+ messages in thread
From: Michael Dettmer @ 2004-06-07  8:42 UTC (permalink / raw)
  To: jarkko1982; +Cc: zsh-users

Hi,
looks rather complicated to me
Here's my solution for Solaris only:
(part of .zprofile)
 
MNPG="'"`echo $MANPATH|awk -F: '{for(i=1;i<=NF;i++)printf("%s/*/*(:t)
",$i)}'`"'"
compctl -g $MNPG man

Michael.

>>> Jarkko Maja <jarkko1982@yahoo.com> 06.06.2004 12:09:44 >>>
Hi,

I'm have in my zsh-4.0.7 ~/.zshrc the following for
man page completion:

# man page completion
man_glob () {
         local a b manp cat
         read -cA a
         read -lA b
         manp=`manpath 2> /dev/null` || manp=`echo
"$MANPATH"`
         [[ "$OSTYPE" = *bsd* ]] && cat=,cat
         if [[ "$a[2]" = [0-9nlpo](|p) ]] # && [[ -n
"$a[3]" || "${(M)b% 
}" = " " ]]
         then
                 reply=( ${^$(echo $manp | sed -e
's/:/ 
/g')}/{man,sman$cat}$a[2]/$1*(-N.:t) )
         else
                 reply=( ${^$(echo $manp | sed -e
's/:/ 
/g')}/{man,sman$cat}[0-9nlpo]{,X,m}*/$1*(-N.:t) )
         fi
         reply=( ${reply%.[^0-9Xmnlpo]*} )
         # Uncomment to strip trailing section names
from reply
         #reply=( ${reply%.[0-9Xmnlpo]*} )
}
compctl -K man_glob -x 'C[-1,-P]' -m - \
         'R[-*l*,;]' -g '*.(man|[0-9Xmnlpo](|[a-z]))'
-- + -f -g '..' man

# Uncomment to accept man page names with trailing
section names, e.g., 
man.1
man () {
         local test=${(M)@#*/} # File name probably
contains a slash
         if [[ -z "$test" ]] && [[ $# -lt 3 ]]
         then
                 command man 
${(M)${${(M)@%.[0-9Xmnlpo]*}#.}#[0-9Xmnlpo]}
${@%.[0-9Xmnlpo]*}
         else
                 command man "$@"
         fi
}

This works perfect in Linux/*BSD/Solaris. E.g., man
locale[TAB] gives: locale.1 locale.5 locale.7 etc and
man locale.7 becomes man 7 locale. And man 7
locale[TAB] shows only locale.7. However, with newer
versions of Linux's man-pages package there are also
sections like 0p, 1p, 3p and, e.g., man man.1p becomes
man 1 man. So, to overcome this, I got man 1p man by
this:

command man
${(M)${${(M)@%.[0-9Xmnlpo]*}#.}%%[0-9Xmnlpo](|p)} 
${@%.[0-9Xmnlpo]*}

But then I have problem because man 
X509_NAME_ENTRY_create_by_NID.3ssl becomes to man l 
X509_NAME_ENTRY_create_by_NID and previously it was
correctly man 3 ... Also there man pages in dir
man/man3 like LWP.3pm.

Any hints are welcome, I've pretty much tested
everything I can imagine. If you can get this working,
I'd be delighted to know how to fix this!

Thanks in advance.




    
        
__________________________________
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 






^ permalink raw reply	[flat|nested] 4+ messages in thread
[parent not found: <s0c446a5.012@fs-prx1.hansemerkur.de>]
* man page completion / regexp
@ 2004-06-06 10:09 Jarkko Maja
  2004-06-07  4:55 ` Bart Schaefer
  0 siblings, 1 reply; 4+ messages in thread
From: Jarkko Maja @ 2004-06-06 10:09 UTC (permalink / raw)
  To: zsh-users

Hi,

I'm have in my zsh-4.0.7 ~/.zshrc the following for
man page completion:

# man page completion
man_glob () {
         local a b manp cat
         read -cA a
         read -lA b
         manp=`manpath 2> /dev/null` || manp=`echo
"$MANPATH"`
         [[ "$OSTYPE" = *bsd* ]] && cat=,cat
         if [[ "$a[2]" = [0-9nlpo](|p) ]] # && [[ -n
"$a[3]" || "${(M)b% 
}" = " " ]]
         then
                 reply=( ${^$(echo $manp | sed -e
's/:/ 
/g')}/{man,sman$cat}$a[2]/$1*(-N.:t) )
         else
                 reply=( ${^$(echo $manp | sed -e
's/:/ 
/g')}/{man,sman$cat}[0-9nlpo]{,X,m}*/$1*(-N.:t) )
         fi
         reply=( ${reply%.[^0-9Xmnlpo]*} )
         # Uncomment to strip trailing section names
from reply
         #reply=( ${reply%.[0-9Xmnlpo]*} )
}
compctl -K man_glob -x 'C[-1,-P]' -m - \
         'R[-*l*,;]' -g '*.(man|[0-9Xmnlpo](|[a-z]))'
-- + -f -g '..' man

# Uncomment to accept man page names with trailing
section names, e.g., 
man.1
man () {
         local test=${(M)@#*/} # File name probably
contains a slash
         if [[ -z "$test" ]] && [[ $# -lt 3 ]]
         then
                 command man 
${(M)${${(M)@%.[0-9Xmnlpo]*}#.}#[0-9Xmnlpo]}
${@%.[0-9Xmnlpo]*}
         else
                 command man "$@"
         fi
}

This works perfect in Linux/*BSD/Solaris. E.g., man
locale[TAB] gives: locale.1 locale.5 locale.7 etc and
man locale.7 becomes man 7 locale. And man 7
locale[TAB] shows only locale.7. However, with newer
versions of Linux's man-pages package there are also
sections like 0p, 1p, 3p and, e.g., man man.1p becomes
man 1 man. So, to overcome this, I got man 1p man by
this:

command man
${(M)${${(M)@%.[0-9Xmnlpo]*}#.}%%[0-9Xmnlpo](|p)} 
${@%.[0-9Xmnlpo]*}

But then I have problem because man 
X509_NAME_ENTRY_create_by_NID.3ssl becomes to man l 
X509_NAME_ENTRY_create_by_NID and previously it was
correctly man 3 ... Also there man pages in dir
man/man3 like LWP.3pm.

Any hints are welcome, I've pretty much tested
everything I can imagine. If you can get this working,
I'd be delighted to know how to fix this!

Thanks in advance.




	
		
__________________________________
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-06-07 19:46 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-06-07  8:42 man page completion / regexp Michael Dettmer
     [not found] <s0c446a5.012@fs-prx1.hansemerkur.de>
2004-06-07 19:45 ` Jarkko Maja
  -- strict thread matches above, loose matches on Subject: below --
2004-06-06 10:09 Jarkko Maja
2004-06-07  4:55 ` Bart Schaefer

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