zsh-users
 help / color / mirror / code / Atom feed
From: Oliver Kiddle <okiddle@yahoo.co.uk>
To: Death Jester <d3ath.jest3r@gmail.com>
Cc: zsh-users@zsh.org
Subject: Re: How to add a 'non-escaped' tilde to the completion list
Date: Mon, 10 Nov 2014 22:03:45 +0100	[thread overview]
Message-ID: <17517.1415653425@thecus.kiddle.eu> (raw)
In-Reply-To: <1415633542.1260.10.camel@gmail.com>

Death Jester wrote:
> The binding however was not the problem, but the type of
> completion.

Using menu completion is an improvement. You'll find that this now works
on an empty word but fails when you have already typed a prefix (or
suffix) of the directory.

The problem with _generic is that _main_complete has special handling for
tildes and equals. _history already works around this: you need to move
the ~ back to $PREFIX from $IPREFIX.

I've attached a fixed function that also has a replacement for the pidof
that will work on Solaris. I think lsof can also be used on other
platforms. Would be nice to support the BSDs. It may also be possible to
better filter the processes: just those with a controlling tty perhaps?

readlink is replaced by zsh's internal :A modifier and the current
process is filtered out. It also enables partial completion for /
and pattern matching so if you know that another shell is in a src
directory, you can type *src and the widget will complete that to the
right directory.

>   zstyle ':completion:term_list:*' completer _term_list

I'd recommend changing that to the more specific
  zstyle ':completion:term_list::::' completer _term_list

In at least my setup a different completer style would otherwise take
precedence.

> Btw, I'm not sure if "advertisement" is allowed here. I have submitted
> the plugin to the oh-my-zsh project. But without any testers, they don't
> want to merge it in to the mainline project. So if anybody is interested
> you can test it... =)

I'd have thought the function itself was something we could include in
the main zsh distribution if people are agreeable? I'm not too sure on
the name but am struggling to offer something better - foreign-pwds,
external-pwds perhaps?

For omz, you might want to consider a different keystroke. Ctrl-V has
an existing purpose that some people might not be pleased to have
replaced.

Oliver

#autoload

local -a expl
local -au dirs

# undo work _main_complete did to remove the tilde
PREFIX="$IPREFIX$PREFIX"
IPREFIX=
SUFFIX="$SUFFIX$ISUFFIX"
ISUFFIX=

[[ -o magicequalsubst ]] && compset -P '*='

case $OSTYPE in
  solaris*) dirs=( ${(M)${${(f)"$(pgrep -U $UID -x zsh|xargs pwdx)"}:#$$:*}%%/*} ) ;;
  linux*) dirs=( /proc/${^$(pidof zsh):#$$}/cwd(N:A) ) ;;
esac
dirs=( ${(D)dirs} )

compstate[pattern_match]='*'
_wanted directories expl 'current directory from other shell' \
    compadd -M "r:|/=* r:|=*" -f -a dirs


  reply	other threads:[~2014-11-10 21:10 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-10 11:07 Death Jester
2014-11-10 11:31 ` Peter Stephenson
2014-11-10 12:18   ` Peter Stephenson
2014-11-10 13:21     ` Death Jester
2014-11-10 13:42       ` Peter Stephenson
2014-11-10 13:57       ` Oliver Kiddle
2014-11-10 15:32         ` Death Jester
2014-11-10 21:03           ` Oliver Kiddle [this message]
2014-11-11 10:17             ` Death Jester
2014-11-11 21:40             ` Jan Larres
2014-11-10 12:54   ` Death Jester

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=17517.1415653425@thecus.kiddle.eu \
    --to=okiddle@yahoo.co.uk \
    --cc=d3ath.jest3r@gmail.com \
    --cc=zsh-users@zsh.org \
    /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).