about summary refs log tree commit diff
path: root/Completion/Darwin
diff options
context:
space:
mode:
authorPaul Ackersviller <packersv@users.sourceforge.net>2007-04-07 02:56:16 +0000
committerPaul Ackersviller <packersv@users.sourceforge.net>2007-04-07 02:56:16 +0000
commit184de562668d2f43ffe196a3381aba2db32d9205 (patch)
tree792c2ec3a57cc9d495cf067834ef0d6dda452edf /Completion/Darwin
parent5bcbbe40dd2c4bfbc41377f70630a768c8b92b35 (diff)
downloadzsh-184de562668d2f43ffe196a3381aba2db32d9205.tar.gz
zsh-184de562668d2f43ffe196a3381aba2db32d9205.tar.xz
zsh-184de562668d2f43ffe196a3381aba2db32d9205.zip
Merge in users/8380 and users/8522 from trunk.
Diffstat (limited to 'Completion/Darwin')
-rw-r--r--Completion/Darwin/Command/_defaults71
1 files changed, 71 insertions, 0 deletions
diff --git a/Completion/Darwin/Command/_defaults b/Completion/Darwin/Command/_defaults
new file mode 100644
index 000000000..e1b8fd923
--- /dev/null
+++ b/Completion/Darwin/Command/_defaults
@@ -0,0 +1,71 @@
+#compdef defaults
+
+_defaults_domains(){
+  if [[ "`eval echo $PREFIX`" != [/~]* ]]; then
+    local str="$(_call_program domains defaults domains 2>/dev/null)"
+    local expl
+    local -a list
+    list=( ${(s/, /)str} -g -globalDomain )
+    _wanted domains expl 'defaults database domain' \
+	compadd -M 'r:|.=* r:|=*' -a list
+  else
+    _files -g '*.plist(e:"reply=\${REPLY%.plist}":)'
+  fi
+}
+
+_defaults_keys(){
+  local ks
+  ks=(${${${${(M)${(f)"$(defaults read "$words[2]" 2>/dev/null)"}:#    [^ ]*=*}#    }%% = *}:Q})
+  local expl
+  _wanted keys expl 'key' compadd "$ks[@]"
+}
+
+_defaults(){
+  local -a _1st_arguments
+  _1st_arguments=( read read-type write rename delete domains find help )
+
+  local curcontext="$curcontext" state line expl
+
+  _arguments -A '-*' \
+    '(-currentHost)-host:host:_hosts' \
+    '(-host)-currentHost' \
+    '*::command:->subcmd' && return 0
+
+  if (( CURRENT == 1 )); then
+    _describe -t commands "command" _1st_arguments
+    return
+  fi
+
+  case $words[1] in
+    read|read-type|delete)
+      _arguments \
+        "(1)-app:application:_mac_applications" \
+        "(-app)1:domain:_defaults_domains" \
+        "2:keys:_defaults_keys"
+      ;;
+    write)
+      _arguments \
+        "(1)-app:application:_mac_applications" \
+        "(-app)1:domain:_defaults_domains" \
+        "2:key:_defaults_keys" \
+        "*::value"
+      ;;
+    rename)
+      _arguments \
+        "(1)-app:application:_mac_applications" \
+        "(-app)1:domain:_defaults_domains" \
+        "2:old key:_defaults_keys" \
+        "3:new key:_defaults_keys"
+      ;;
+    domains|help)
+      ;;
+    find)
+      _message word
+      ;;
+    *)
+      _message "unknown defaults command: $words[1]"
+      ;;
+  esac
+}
+
+_defaults "$@"