[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#51130: 29.0.50; shell completion fails to complete filenames
From: |
Stefan Monnier |
Subject: |
bug#51130: 29.0.50; shell completion fails to complete filenames |
Date: |
Tue, 13 Sep 2022 09:32:43 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) |
Lars Ingebrigtsen [2022-09-13 13:19:07] wrote:
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>
>>> * lisp/shell.el: Require and use pcomplete.
>>> (shell-dynamic-complete-functions): Add pcomplete-completions-at-point.
>>> (shell-completion-vars): Set pcomplete-default-completion-function.
>>>
>>> Just leaving pcomplete-default-completion-function alone seems to give
>>> better results in shell-mode (after testing very briefly), so I'm not
>>> sure why that was added.
>>
>> It was added because leaving `pcomplete-default-completion-function`
>> alone means that the functions after `pcomplete-completions-at-point` in
>> `shell-dynamic-complete-functions` are not used any more.
>
> Uhm... I don't follow the logic at all.
> pcomplete-default-completion-function is documented to be applied if
> everything else has failed to do completion, isn't it?
Look at `shell-dynamic-complete-functions`:
(defcustom shell-dynamic-complete-functions
'(comint-c-a-p-replace-by-expanded-history
shell-environment-variable-completion
shell-command-completion
shell-c-a-p-replace-by-expanded-directory
pcomplete-completions-at-point
shell-filename-completion
comint-filename-completion)
"List of functions called to perform completion.
This variable is used to initialize `comint-dynamic-complete-functions' in
the
shell buffer."
:type '(repeat function)
:group 'shell)
if `pcomplete-default-completion-function` is left at its default value,
then `pcomplete-completions-at-point` will never return nil, so the
functions that appear after it in the above list will just never
be used.
The change I introduced tried to preserve as much of the existing
completion as possible, by only using the non-fallback pcomplete rules
and keeping the existing `shell-filename-completion` and
`comint-filename-completion` thingies as the fallback.
I don't know that it's the best choice. It was just the
conservative choice.
Stefan