From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 11348@debbugs.gnu.org
Subject: bug#11348: 24.0.95; TAB-completion in shell-command produces d:\/foo on MS-Windows
Date: Fri, 04 May 2012 19:32:41 -0400 [thread overview]
Message-ID: <jwvy5p7bkjz.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <83mx5n6ceu.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 04 May 2012 21:15:05 +0300")
>> This said, based on your description, the problem may simply come from
>> shell.el's setting of pcomplete-arg-quote-list which tells pcomplete
>> that \ is an escape char.
>> I.e. does the patch below fix the problem?
> No, I still get "d:\/gnu/".
>> > This works better, it produces "cd d:\gnu/ ", which is ugly, but
>> > correct.
>> Which part is ugly? The \, the /, or the use of a mix of them?
> The mix.
>> > Perhaps Stefan could at some point add some documentation about the
>> > internals, that would allow mere mortals such as myself debug the
>> > completion code.
>> I'd love to, but I'm much too deeply in it to know what needs more
>> documentation, so fire away your questions and I'll reply with
>> comments&docstrings.
> A useful beginning would be some overview of the design and
AFAIK that's in the lispref, but clearly that's not sufficient for you,
so please be more specific.
> description of the control and data flow in several popular use-cases.
Not sure what that could look like. Would the following be helpful?
For completion--file-name-table, after hitting TAB, here's the
general way it is supposed to work (seen from the completion-table):
- the `metadata' method is called, so the caller can know which
completion styles should be used, as well as whether escaping/quoting
should take place.
- because file-names in the minibuffer are quoted (the unquoting
replaces $$ with $ and expands envvars), which is evidenced by the
fact that the completion-table is defined with
completion-table-with-quoting, the text to be completed is unquoted
and the (quoting)completion table is replaced by the "plain"
completion table (the details of how this is done is internal to
completion-table-with-quoting).
- the completion goes on in the simpler unquoted world of file names
(using the completion-file-name-table).
- each completion style is attempted in sequence, and can use the
`try-completion' method for simple prefix-based completion, as well as
`all-completions' and `completion-boundaries' methods for more complex
styles (the `completion-boundaries' method indicates which part of
the completed string is *not* included in `all-completions'; in the
case of file-name the part that's not included is the directory part).
The returned completion is accompanied with some information about
where point should go.
- once a style returns a valid completion, that completion is re-quoted
(because of the use of completion-table-with-quoting) and the
corresponding position of point in the quoted string is computed.
Stefan
next prev parent reply other threads:[~2012-05-04 23:32 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-26 11:09 bug#11348: 24.0.95; TAB-completion in shell-command produces d:\/foo on MS-Windows Eli Zaretskii
2012-05-04 7:10 ` Eli Zaretskii
2012-05-04 14:29 ` Chong Yidong
2012-05-04 14:54 ` Eli Zaretskii
2012-05-04 15:07 ` Drew Adams
2012-05-04 15:36 ` Chong Yidong
2012-05-04 15:02 ` Eli Zaretskii
2012-05-04 15:46 ` Chong Yidong
2012-05-04 17:01 ` Eli Zaretskii
2012-05-04 17:59 ` Stefan Monnier
2012-05-04 18:15 ` Eli Zaretskii
2012-05-04 23:32 ` Stefan Monnier [this message]
2012-05-05 0:22 ` Drew Adams
2012-05-05 12:47 ` Eli Zaretskii
2012-05-05 4:20 ` Stefan Monnier
2012-05-05 6:33 ` Eli Zaretskii
2012-05-07 8:01 ` Chong Yidong
2012-05-07 17:40 ` Eli Zaretskii
2012-05-07 15:27 ` Stefan Monnier
2012-05-07 15:44 ` Drew Adams
2012-05-07 16:11 ` Chong Yidong
2012-05-08 0:27 ` Stefan Monnier
2012-05-08 18:56 ` Eli Zaretskii
2012-05-09 17:22 ` Stefan Monnier
2012-05-09 18:07 ` Eli Zaretskii
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=jwvy5p7bkjz.fsf-monnier+emacs@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=11348@debbugs.gnu.org \
--cc=eliz@gnu.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.savannah.gnu.org/cgit/emacs.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).