GNU bug report logs - #11348
24.0.95; TAB-completion in shell-command produces d:\/foo on MS-Windows

Previous Next

Package: emacs;

Reported by: Eli Zaretskii <eliz <at> gnu.org>

Date: Thu, 26 Apr 2012 11:12:02 UTC

Severity: normal

Found in version 24.0.95

Fixed in version 24.0.97

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 11348 <at> 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
>> 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




This bug report was last modified 13 years and 93 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.