Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Darwin _defaults completion bug
- X-seq: zsh-users 8522
- From: Motoi Washida <a66@xxxxxxxxxxxxx>
- To: lists <lists@xxxxxxxxxxxxxxxx>
- Subject: Re: Darwin _defaults completion bug
- Date: Fri, 18 Feb 2005 15:55:53 +0900
- Cc: zsh-users@xxxxxxxxxx
- In-reply-to: <bb57a9a834f9731d92eac69b1260728e@xxxxxxxxxxxxxxxx>
- Mailing-list: contact zsh-users-help@xxxxxxxxxx; run by ezmlm
- References: <bb57a9a834f9731d92eac69b1260728e@xxxxxxxxxxxxxxxx>
Hi Ryan,
	I think I've found a small bug with your _defaults completion (which 
I use all the time).  If I type 'defaults read -g' then hit the Tab 
key, I see a list of possible completions which are quoted *and* 
escaped with a backslash.
(...snip...)
...et cetera, et cetera.  The command doesn't work in the escaped + 
quoted form.  If just the quotes are used, the command works.  I've 
looked at _defaults but haven't been able to figure out where the 
escapes are being inserted.  If you get a chance, could you take a 
look?
Thanks! This occurred because the completion did not handle quoted key 
name "defaults read" prints. Here is a patch to remove quotes.
--
Motoi Washida
Index: Completion/Darwin/Command/_defaults
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Darwin/Command/_defaults,v
retrieving revision 1.2
diff -d -u -r1.2 _defaults
--- Completion/Darwin/Command/_defaults	17 Jan 2005 09:39:21 -0000	1.2
+++ Completion/Darwin/Command/_defaults	18 Feb 2005 06:24:58 -0000
@@ -14,9 +14,10 @@
 }
 _defaults_keys(){
-  local ks="$(_call_program keys defaults read "$words[2]" 2>/dev/null 
| sed '/^    [[:alpha:]"]/ { s/^    //; s/ = .*$//; p;}; d')"
+  local ks
+  ks=(${${${${(M)${(f)"$(defaults read "$words[2]" 2>/dev/null)"}:#    
[^ ]*=*}#    }%% = *}:Q})
   local expl
-  _wanted keys expl 'key' compadd ${(f)ks}
+  _wanted keys expl 'key' compadd "$ks[@]"
 }
 _defaults(){
Messages sorted by:
Reverse Date,
Date,
Thread,
Author