From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20620 invoked from network); 14 Dec 1999 09:24:28 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 14 Dec 1999 09:24:28 -0000 Received: (qmail 13295 invoked by alias); 14 Dec 1999 09:24:22 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 9031 Received: (qmail 12146 invoked from network); 14 Dec 1999 09:09:21 -0000 Date: Tue, 14 Dec 1999 10:09:20 +0100 (MET) Message-Id: <199912140909.KAA28906@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-workers@sunsite.auc.dk In-reply-to: "Bart Schaefer"'s message of Mon, 13 Dec 1999 16:56:04 +0000 Subject: Re: two completion questions Bart Schaefer wrote: > On Dec 13, 2:39pm, Sven Wischnowsky wrote: > } Subject: Re: two completion questions > } > } Zefram wrote: > } > } > Globbing and completion never generate "." or ".." components; they are > } > filtered out in zreaddir(). The reason for this is that they are pretty > } > much never what you want. If you have files named ".foo" and ".bar", > } > then type "." and press tab, are "." and ".." really what you want to > } > complete to? Maybe there should be an option to complete to "." and > } > ".." just like normal filenames, but I think the default should very > } > definitely stay as being the current behaviour. > } > } Right. This makes it configurable with the special-dirs style. Can > } anyone think of a better name? > > I'm dubious that '.' should ever be a completion by itself. I really don't > want to type `.' and end up with `./' on the line -- but I can see the > argument for wanting `..' to behave that way. Yes, it's exactly the > same number of keystrokes to type the slash yourself instead of a tab, but > habits are habits. > > Completing '.' would be even more annoying with REC_EXACT. I wasn't sure about `.' either, but if I remember correctly, in the discussions about this in the time of compctl, there were people who wanted to have the `.', too (with menu-completion and no_rec_exact this probably makes more sense). So, to hopefully make everyone satisfied, this patch allows the value `..' for the special-dirs style to make it add only `..'. Bye Sven diff -ru ../z.old/Completion/Core/_path_files Completion/Core/_path_files --- ../z.old/Completion/Core/_path_files Mon Dec 13 14:40:00 1999 +++ Completion/Core/_path_files Tue Dec 14 10:04:54 1999 @@ -226,16 +226,26 @@ tmp2=( ${^tmp1}*(-/) ) if [[ ! -o globdots && "$PREFIX" = .* ]]; then tmp2=( "$tmp2[@]" ${^tmp1}.*(-/) ) - zstyle -t ":completion${curcontext}:paths" special-dirs && + if zstyle -s ":completion${curcontext}:paths" special-dirs atmp; then + if [[ "$atmp" = (yes|true|1|on) ]]; then tmp2=( "$tmp2[@]" . .. ) + elif [[ "$atmp" = .. ]]; then + tmp2=( "$tmp2[@]" .. ) + fi + fi fi else tmp2=( ${^tmp1}${^~pats} ) if [[ ! -o globdots && "$PREFIX" = .* ]]; then tmp2=( "$tmp2[@]" ${^tmp1}.${^~pats} ) - [[ "$sopt" = */* ]] && - zstyle -t ":completion${curcontext}:paths" special-dirs && + if [[ "$sopt" = */* ]] && + zstyle -s ":completion${curcontext}:paths" special-dirs atmp; then + if [[ "$atmp" = (yes|true|1|on) ]]; then tmp2=( "$tmp2[@]" . .. ) + elif [[ "$atmp" = .. ]]; then + tmp2=( "$tmp2[@]" .. ) + fi + fi fi fi tmp1=( "$tmp2[@]" ) diff -ru ../z.old/Doc/Zsh/compsys.yo Doc/Zsh/compsys.yo --- ../z.old/Doc/Zsh/compsys.yo Mon Dec 13 14:39:40 1999 +++ Doc/Zsh/compsys.yo Tue Dec 14 10:06:31 1999 @@ -1195,7 +1195,8 @@ item(tt(special-dirs))( Normally, the completion code will not produce the directory names tt(.) and tt(..) as possible completions. If this style is set to -`true', it will. +`true', it will add both `tt(.)' and `tt(..)' as possible completions, +if it is set to tt(..), only `tt(..)' will be added. ) item(tt(stop))( If set to `true', the tt(_history_complete_word) bindable -- Sven Wischnowsky wischnow@informatik.hu-berlin.de