From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5202 invoked by alias); 3 Mar 2011 16:11:22 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 28846 Received: (qmail 1938 invoked from network); 3 Mar 2011 16:11:19 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received-SPF: none (ns1.primenet.com.au: domain at klanderman.net does not designate permitted sender hosts) From: Greg Klanderman To: zsh-workers@zsh.org Subject: Re: PATCH: zstyle to control completion of functions/parameters beginning with underscore Reply-To: gak@klanderman.net Date: Thu, 03 Mar 2011 11:11:13 -0500 In-Reply-To: (Greg Klanderman's message of "Thu, 03 Mar 2011 10:33:48 -0500") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) XEmacs/21.4.17 (linux) References: <1238890030-4683-1-git-send-email-ft@bewatermyfriend.org> <090404193718.ZM19801@torch.brasslantern.com> <20090405191304.1908fca8@pws-pc> <090405151115.ZM13159@torch.brasslantern.com> <20090406100929.505617e2@news01> <2d460de70905270930j681da6a5kf7848d67d89f0c69@mail.gmail.com> <20090527175941.3bbe2eba@news01> <2d460de70905280148iebfcegcb4143c33e510efd@mail.gmail.com> <7658.1299027908@thecus> <110302153027.ZM10605@torch.brasslantern.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Here's a new patch for the easier option (without 'auto'). Let me know what you think.. cheers, Greg Index: Completion/Zsh/Type/_functions =================================================================== RCS file: /cvsroot/zsh/zsh/Completion/Zsh/Type/_functions,v retrieving revision 1.3 diff -u -r1.3 _functions --- Completion/Zsh/Type/_functions 8 Jun 2005 12:45:36 -0000 1.3 +++ Completion/Zsh/Type/_functions 3 Mar 2011 16:08:17 -0000 @@ -1,5 +1,9 @@ #compdef unfunction -local expl +local expl ffilt -_wanted functions expl 'shell function' compadd -k "$@" - functions +zstyle -t ":completion:${curcontext}:functions" prefix-needed && \ + [[ $PREFIX != [_.]* ]] && \ + ffilt='[(I)[^_.]*]' + +_wanted functions expl 'shell function' compadd -k "$@" - "functions$ffilt" Index: Completion/Zsh/Type/_command_names =================================================================== RCS file: /cvsroot/zsh/zsh/Completion/Zsh/Type/_command_names,v retrieving revision 1.9 diff -u -r1.9 _command_names --- Completion/Zsh/Type/_command_names 19 Aug 2007 23:31:31 -0000 1.9 +++ Completion/Zsh/Type/_command_names 3 Mar 2011 16:08:17 -0000 @@ -4,10 +4,14 @@ # complete only external commands and executable files. This and a # `-' as the first argument is then removed from the arguments. -local args defs +local args defs ffilt zstyle -t ":completion:${curcontext}:commands" rehash && rehash +zstyle -t ":completion:${curcontext}:functions" prefix-needed && \ + [[ $PREFIX != [_.]* ]] && \ + ffilt='[(I)[^_.]*]' + defs=( 'commands:external command:_path_commands' ) @@ -24,7 +28,7 @@ defs=( "$defs[@]" 'builtins:builtin command:compadd -k builtins' - 'functions:shell function:compadd -k functions' + "functions:shell function:compadd -k functions$ffilt" 'aliases:alias:compadd -k aliases' 'suffix-aliases:suffix alias:_suffix_alias_files' 'reserved-words:reserved word:compadd -k reswords' Index: Completion/Zsh/Type/_parameters =================================================================== RCS file: /cvsroot/zsh/zsh/Completion/Zsh/Type/_parameters,v retrieving revision 1.1 diff -u -r1.1 _parameters --- Completion/Zsh/Type/_parameters 2 Apr 2001 11:20:15 -0000 1.1 +++ Completion/Zsh/Type/_parameters 3 Mar 2011 16:08:17 -0000 @@ -6,7 +6,7 @@ # If you specify a -g option with a pattern, the pattern will be used to # restrict the type of parameters matched. -local expl pattern fakes faked tmp +local expl pattern fakes faked tmp pfilt pattern=(-g \*) zparseopts -D -K -E g:=pattern @@ -23,8 +23,12 @@ done fi +zstyle -t ":completion:${curcontext}:parameters" prefix-needed && \ + [[ $PREFIX != [_.]* ]] && \ + pfilt='[^_.]' + _wanted parameters expl parameter \ compadd "$@" -Q - \ - "${(@k)parameters[(R)${pattern[2]}~*local*]}" \ + "${(@M)${(@k)parameters[(R)${pattern[2]}~*local*]}:#${~pfilt}*}" \ "$fakes[@]" \ "${(@)${(@M)faked:#${~pattern[2]}}%%:*}" Index: Doc/Zsh/compsys.yo =================================================================== RCS file: /cvsroot/zsh/zsh/Doc/Zsh/compsys.yo,v retrieving revision 1.232 diff -u -r1.232 compsys.yo --- Doc/Zsh/compsys.yo 17 Dec 2010 17:10:48 -0000 1.232 +++ Doc/Zsh/compsys.yo 3 Mar 2011 16:08:17 -0000 @@ -2298,13 +2298,29 @@ ) kindex(prefix-needed, completion style) item(tt(prefix-needed))( -This, too, is used for matches with a common prefix. If it is set to -`true' this common prefix must be typed by the user to generate the -matches. In the case of command options, this means that the initial -`tt(-)', `tt(+)', or `tt(-)tt(-)' must be typed explicitly before option -names will be completed. +This style is also relevant for matches with a common prefix. If it is +set to `true' this common prefix must be typed by the user to generate +the matches. -The default value for this style is `true'. +The style is applicable to the tt(options), tt(signals), tt(jobs), +tt(functions), and tt(parameters) completion tags. + +For command options, this means that the initial `tt(-)', `tt(+)', or +`tt(-)tt(-)' must be typed explicitly before option names will be +completed. + +For signals, an initial `tt(-)' is required before signal names will +be completed. + +For jobs, an initial `tt(%)' is required before job names will be +completed. + +For function and parameter names, an initial `tt(_)' or `tt(.)' is +required before function or parameter names starting with those +characters will be completed. + +The default value for this style is `false' for tt(function) and +tt(parameter) completions, and `true' otherwise. ) kindex(preserve-prefix, completion style) item(tt(preserve-prefix))(