Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm
Precedence: bulk
X-No-Archive: yes
List-Id: Zsh Workers List <zsh-workers.zsh.org>
List-Post: <mailto:zsh-workers@zsh.org>
List-Help: <mailto:zsh-workers-help@zsh.org>
X-Qmail-Scanner-Diagnostics: from nm8-vm4.bullet.mail.ir2.yahoo.com by f.primenet.com.au (envelope-from <okiddle@yahoo.co.uk>, uid 7791) with qmail-scanner-2.11 
 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1.  
 Clear:RC:0(212.82.96.138):SA:0(0.0/5.0):. 
 Processed in 0.137978 secs); 01 Aug 2016 21:04:15 -0000
X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au
X-Spam-Level: 
X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,SPF_PASS,
	T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1
X-Envelope-From: okiddle@yahoo.co.uk
X-Qmail-Scanner-Mime-Attachments: |
X-Qmail-Scanner-Zip-Files: |
Received-SPF: pass (ns1.primenet.com.au: SPF record at _spf.mail.yahoo.com designates 212.82.96.138 as permitted sender)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.uk; s=s2048; t=1470085031; bh=4VJEPROoJKTk9JSPxoW5lxfOdDqmrBTlQkwebpGQy+0=; h=From:To:Subject:Date:From:Subject; b=QcUgVWiTc0zm2O2cU+buDehdPYmBxqlvf9OAaygMLAVJXpkHJaq2+ZOzumc42KbYPzjIqfceg8m8lZC+EQxZmrpBV2F6He/lOeG8wucn0fI1jvvHKEusnP87ZPdBHvNfW/YZ096LDwY9wZP4979rHhtPfGyTE/ZepnN/Z5sdq/mLPVPe3u26OgYjzrQlkc0+4jG6M8/QUpIwB8hA2ljqglAqmFS571BJYltyOoyBbWO6EhPpl+RA0KJC96MkxudqTgkGAmUJNTKlb8yqmGnWz+iI91tAfN+Wy2HD4dBd+rOTPwAGuhe0va+30pTqb3MEF+fWkoPouKOVXUwXbT5jug==
X-Yahoo-Newman-Id: 559957.96319.bm@smtp118.mail.ir2.yahoo.com
X-Yahoo-Newman-Property: ymail-3
X-YMail-OSG: sn5qj0QVM1k3A3kAe.8MLBAZKxCa6rbeFoCKlhUxe9IdFeS
 lEZMPmUWHrop9gElZRo2YBacZTSmcU3W5RAHm2ejUKaPMVSfWkjh6xqqrqXI
 hUcxvd0Y5RpXyHUY04UYfiMfRhSYq6oL0hXgu9rwvvTBPr8urYINcYOqvVvE
 E0n7YQmndAB.0QgFgIRjtsOGdJGK7337_AykW0AwQqibhk5.Ggpgb0QFCva5
 E5GHz3IUIAEAdeVSFBpCde8ScHv2sb.MR6mqKouYn.GU47Eh0yOYZALNpX83
 _vtf7hpf5X3UCg5eUy2.3f006Jn6MM6Vz9zzMOv5Zu0CKEgskqZ5avx7tbE_
 B9o_tFJP3cf4a_0Z7.kKaTriAtKE_pXBQN_ZkDX38x2rTLHqR96gr_SQ_3IW
 X06QM5DOJldaGyhX1XDScD1hGoA.ZfPHuzkCzmGdXzQQvJ64yGUJFV5b5ZF4
 qGfzhWID1IUboIvInwJlhMBPcd2IOE6hyeKCWFbbDd6bau8zc2W8HTPqb6nq
 BK71DS7TpGwxhW1peB4_lLKZWUO5laAbhlnQZ28Sv80w-
X-Yahoo-SMTP: opAkk_CswBAce_kJ3nIPlH80cJI-
From: Oliver Kiddle <okiddle@yahoo.co.uk>
To: Zsh workers <zsh-workers@zsh.org>
Subject: PATCH: gsettings completion
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-ID: <17560.1470085030.1@hydra.kiddle.eu>
Date: Mon, 01 Aug 2016 22:57:10 +0200
Message-ID: <17561.1470085030@hydra.kiddle.eu>
X-Seq: zsh-workers 38986

New completion for gsettings.

Oliver

diff --git a/Completion/Unix/Command/_gsettings b/Completion/Unix/Command/_gsettings
new file mode 100644
index 0000000..f47bbc6
--- /dev/null
+++ b/Completion/Unix/Command/_gsettings
@@ -0,0 +1,47 @@
+#compdef gsettings
+
+local curcontext="$curcontext" state line expl ret=1
+local subcmds
+
+_arguments \
+  '(- 1 *)--version[show version information]' \
+  '--schemadir[specify location of schemata]:directory:_directories' \
+  ':command:->subcmds' \
+  '*::args:->subargs' && ret=0
+
+if [[ $state = subargs ]]; then
+  curcontext="${curcontext%:*}-$words[1]:"
+  case $words[1] in
+    help) state=subcmds;;
+    get|range|reset|writable|monitor)
+      _arguments ':schema:->schemata' ':key:->keys'
+    ;;
+    set)
+      _arguments ':schema:->schemata' ':key:->keys' ':value'
+    ;;
+    (list|reset)-(keys|recursively|children)) state=schemata ;;
+    *) _default && ret=0 ;;
+  esac
+fi
+
+case $state in
+  subcmds)
+    subcmds=( ${(L)${${(M)${${(f)"$(_call_program commands $service help)"}[(r)Commands:*,-2]}:#  *}#??}/ ##/:} )
+    _describe -t commands 'command' subcmds -M 'r:?|-=* r:|=*' && ret=0
+    state=''
+  ;;
+  schemata)
+    if compset -P '*:'; then
+      _directories && ret=0
+    else
+      _wanted schemata expl 'schema' compadd -M 'r:|.=* r:|=*' \
+          $(_call_program schemata $service list-schemas) && ret=0
+    fi
+  ;;
+  keys)
+    _wanted keys expl 'key' compadd \
+        $(_call_program keys $service list-keys $words[CURRENT-1]) && ret=0
+  ;;
+esac
+
+return ret

