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

Re: Darwin _defaults completion bug



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