[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Bug#740971: completion fails on file names with special characters
From: |
Chet Ramey |
Subject: |
Re: Bug#740971: completion fails on file names with special characters |
Date: |
Thu, 27 Mar 2014 18:42:10 -0400 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 |
On 3/27/14, 4:57 PM, Uwe Storbeck wrote:
> $ ls a(<TAB>
>
> results in a wrong completion:
>
> $ ls a(a
This is something different. I addressed it in my first reply in this
thread:
"For instance, I believe that the problem with these unquoted special
characters is that they break words for readline, and readline passes
an empty argument to the completion function as the word to be completed."
The `(' is a character that breaks words for readline. Readline passes
an empty string to the bash completion function, which completes
it to the longest common prefix of the possible completions.
There is a difference between bash-4.2 and bash-4.3 in how it treats
this word. bash-4.3 does not interpret it the `(' as a command
delimiter (as it did in bash-4.2) because it's preceded by a character
that is not a command delimiter. bash-4.2 incorrectly treated that
construct as valid and attempted to perform command completion; since
it's a syntax error, bash-4.3 doesn't. There aren't any valid completions
for the empty string, so bash doesn't do anything and readline attempts
its default filename completion. The longest common prefix of the
possible filename completions is "a", which readline inserts into the
line buffer.
Since that line, as you entered it above, is a syntax error, it's not
clear what bash should do with it (probably nothing). What do you
expect to happen?
Chet
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU chet@case.edu http://cnswww.cns.cwru.edu/~chet/