From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10279 invoked by alias); 13 Sep 2011 14:43:41 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 16339 Received: (qmail 24068 invoked from network); 13 Sep 2011 14:43:38 -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 closedmail.com does not designate permitted sender hosts) From: Bart Schaefer Message-id: <110913074320.ZM14249@torch.brasslantern.com> Date: Tue, 13 Sep 2011 07:43:20 -0700 In-reply-to: Comments: In reply to Yuri DElia "Completion lists" (Sep 13, 12:54pm) References: X-Mailer: OpenZMail Classic (0.9.2 24April2005) To: zsh-users@zsh.org Subject: Re: Completion lists MIME-version: 1.0 Content-type: text/plain; charset=us-ascii On Sep 13, 12:54pm, Yuri DElia wrote: } } I would like to highlight (in bold) the trailing/ambiguous part (typed in caps } here): } } $ cd prog } progRAM } progMAN } progWHATEVER You should be able to do this with something like: zstyle -e ':completion:*:default' list-colors \ 'reply=("=(#b)${words[CURRENT]:t}(*)=0=7")' The -e option evaluates the style so you can use $words[CURRENT] to put the string from the line into the style. The highlight is controlled by the =0=3 part, where =0 means no highlight on the parts that are not matched by a pattern in parens and the =7 means use reverse video on the part matched by the first sub-pattern in parens (here "(*)"). See the doc for the complist module ZLS_COLORS variable. It won't work all the time because completion is a really complex beast. You probably need to do the above a few times replacing "default" with different tags. For example, above I've use the tail (:t) of the current word so that it'll do something useful when completing files in subdirectories, but that isn't really necessary when completing variable names or options. You might want to use one pattern for file completion and another for other contexts. If you've got matcher-list styles that do fancy completion in the middle of words, $words[CURRENT] is going to be inadequate to the task (and it is likely that nothing you can expand at the time the list-colors style is evaluated would be sufficient). You might specify case-insensitive globbing on to help with mixed-case matcher-lists: zstyle -e ':completion:*:default' list-colors \ 'reply=("=(#bi)${words[CURRENT]:t}(*)=0=7")' If someone builds up a useful set of these based on this example, please post back to the list.