zsh-users
 help / color / mirror / code / Atom feed
From: dana <dana@dana.is>
To: Aurélien <orel_jf@yahoo.fr>
Cc: zsh-users <zsh-users@zsh.org>
Subject: Re: help for writing GNU stow completion
Date: Thu, 15 Aug 2019 18:36:57 -0500	[thread overview]
Message-ID: <BAE67462-BF39-481A-BCD6-DE288FE6CC92@dana.is> (raw)
In-Reply-To: <1e5195bb-3126-8d0c-8a6a-1f5a5fd2a6c0@yahoo.fr>

On 6 Aug 2019, at 12:04, Aurélien <orel_jf@yahoo.fr> wrote:
> From the command line, when I try to complete something like this:
>
>    % stow --dir=$HOME/.dotfiles/
>
> I get: 'no packages found in $HOME/.dotfiles/'
>
> It seems that "$HOME" is not evaluated, and it is the same with "~". Is
> there a way to evaluate these elements?

Sorry for the late reply (haven't been paying attention to the ML much
recently), but if you still need help with this:

Completion functions get arguments on the command line in a 'raw' form,
exactly as they're given, including unexpanded parameters, leading tildes,
quotes, &c. That's why you get a literal $HOME instead of its value.

You can use the (Q) expansion flag to strip quotes, which is a semi-common
thing in completion functions when they need to take user input from the
command line, but there's no flag for anything fancier, and most functions
don't seem to bother with it. But if you wanted to, something like this is
probably the best way...?

  local -a stow_pkg_list
  eval set -A stow_pkg_list $1
  [[ -n $stow_pkg_list ]] && stow_pkg_list=( $stow_pkg_list/*(-/N:t) )

It's not perfectly accurate, though; for example, because of how _arguments
breaks up optargs, this would treat `--dir=~/foo` and `--dir ~/foo` the same,
even though the tilde would not actually be expanded before passing it to stow
in the former case (unless magic_equal_subst was enabled)

dana


  reply	other threads:[~2019-08-16  1:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-06 17:04 Aurélien
2019-08-15 23:36 ` dana [this message]
2019-08-16  1:28   ` Daniel Shahaf
2019-08-16  1:54     ` dana
2019-08-17  7:48   ` Aurélien

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=BAE67462-BF39-481A-BCD6-DE288FE6CC92@dana.is \
    --to=dana@dana.is \
    --cc=orel_jf@yahoo.fr \
    --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).