Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Bug: cd auto-completion of .. fails with parentheses in directory name



On Sun, Nov 27, 2016 at 7:32 PM, Mikael Magnusson <mikachu@xxxxxxxxx> wrote:
> On Sun, Nov 27, 2016 at 7:30 PM, Mikael Magnusson <mikachu@xxxxxxxxx> wrote:
>> On Sun, Nov 27, 2016 at 4:17 PM, Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx> wrote:
>>> Daniel Shahaf wrote on Sat, Oct 29, 2016 at 18:06:32 +0000:
>>>> diff --git a/Completion/Unix/Type/_path_files b/Completion/Unix/Type/_path_files
>>>> index 0d36b54..32942d7 100644
>>>> --- a/Completion/Unix/Type/_path_files
>>>> +++ b/Completion/Unix/Type/_path_files
>>>> @@ -594,7 +594,7 @@ for prepath in "$prepaths[@]"; do
>>>>      # There are more components, so skip over the next components and make a
>>>>      # slash be added.
>>>>
>>>> -    tmp1=( ${tmp1//(#b)([][()|*?^#~<>\\=])/\\${match[1]}} )
>>>> +    #tmp1=( ${tmp1//(#b)([][()|*?^#~<>\\=])/\\${match[1]}} )
>>>>      tmp2="${(M)tpre##${~skips}}"
>>>>      if [[ -n "$tmp2" ]]; then
>>>>        skipped="/$tmp2"
>>>
>>> I've reviewed the code again.  I believe that at the preceding
>>> 'compfiles -i' call, tmp1 is an input parameter containing a list of
>>> unquoted filenames, and is not modified by the call, so this patch is
>>> correct.
>>>
>>> Committed in eccb7471b577d55f0b410088fc1125016476b332, with a regression
>>> test.
>>>
>>> I'd add some reverse-engineered docs for bin_compfiles()'s -i case but
>>> I can't type right now.
>>>
>>> @all, please report breakage if any, with completiosn of oddly-named
>>> directories.
>>
>> It still doesn't work for me, as before.
>
> zstyle ':completion:*' accept-exact-dirs 'yes'
> Seems to be the thing that makes it not work.

This seems to fix it, while also retaining the functionality of
accept-exact-dirs, which is pretty amazing. We probably need PWS to
update the big comment above the code though.

diff --git i/Completion/Unix/Type/_path_files w/Completion/Unix/Type/_path_files
index 32942d7a72..b272f2ce8f 100644
--- i/Completion/Unix/Type/_path_files
+++ w/Completion/Unix/Type/_path_files
@@ -381,7 +381,7 @@ for prepath in "$prepaths[@]"; do
     # however, for tmp2 we unquote everything.
     tmp1=${match[1]}
     tpre=${match[2]}
-    tmp2=${(Q)tmp1}
+    tmp2=$tmp1 #${(Q)tmp1}
     tmp1=${tmp1//(#b)\\(?)/$match[1]}
     tpre=${tpre//(#b)\\([^\\\]\[\^\~\(\)\#\*\?])/$match[1]}
     # Theory: donepath needs the quoting of special characters


-- 
Mikael Magnusson



Messages sorted by: Reverse Date, Date, Thread, Author