zsh-users
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: "zsh-users" <zsh-users@zsh.org>
Subject: Re: Completion and double quotes
Date: Thu, 12 Aug 2010 08:57:33 -0700	[thread overview]
Message-ID: <100812085733.ZM20113@torch.brasslantern.com> (raw)
In-Reply-To: <20100812103126.64aa5bce@csr.com>

On Aug 12, 10:31am, Peter Stephenson wrote:
}
} The code for handling quoting in completion is utterly impenetrable.

To be both more and less specific, the code for handling just about
anything in _path_files is utterly impenetrable.

} It's actually at it's worst when you're in a nested expression, for
} example inside:
} 
}   su -c 'ls /path/to/"file with"<TAB>
} 
} which is quite liable to crash the shell (I didn't dare try).

That may be a slight exaggeration:

schaefer<501> su -c 'ls /home/schaefer/Desktop/Camera\ Dump\ 2010-08-07/
Completing corrections
Camera\ Dump\ 2010-08-07/  Camera\ Dump\ 2010-01-24/
Camera\ Dump\ 2010-03-19/  Camera\ Dump\ 2009-12-31/
Camera\ Dump\ 2010-02-06/  Camera\ Dump\ 2007-08-13/
Camera\ Dump\ 2010-01-30/                           
Completing original
ls /home/schaefer/Desktop/"Camera Dump"

} Even so, it's bad enough even in the "simple" case that I don't think
} it's ever going to be able to second guess intentions to the sort of
} level you want.

The guessing problem could be solved just by keeping the original quoting,
but of course it's not that simple -- in order to decide what to match,
the quoting has to be removed/canonicalized internally, and in the most
general case it's then difficult if not impossible to figure out what
part of the completed string corresponds to the quoted portion of the
original string.  Remember, zsh completion can insert characters almost
anywhere (or even replace the entire original string with something that
doesn't resemble it at all), not merely append at the end.

With regard to putting the quote before the tilde ... that's not going
to work, because unless zsh expanded the tilde before completing, the
resulting word will still have a quoted tilde in it, which in turn will
not be expanded when the command is eventually executed.  Not often
what you want, I suspect.

You may be able to create a wrapper widget along the lines of
Functions/Zle/quote-and-complete-word that restores a more palatable
quoting after completion has finished.


      parent reply	other threads:[~2010-08-12 16:58 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-11 19:30 Joke de Buhr
2010-08-11 21:51 ` Benjamin R. Haskell
2010-08-11 22:29   ` Joke de Buhr
2010-08-12  9:31 ` Peter Stephenson
2010-08-12 10:53   ` Joke de Buhr
2010-08-12 11:03     ` Peter Stephenson
2010-08-12 15:57   ` Bart Schaefer [this message]

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=100812085733.ZM20113@torch.brasslantern.com \
    --to=schaefer@brasslantern.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).