From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6983 invoked by alias); 15 Sep 2017 16:50:23 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 41711 Received: (qmail 5549 invoked by uid 1010); 15 Sep 2017 16:50:23 -0000 X-Qmail-Scanner-Diagnostics: from sonic305-20.consmr.mail.ir2.yahoo.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(77.238.177.82):SA:0(-1.9/5.0):. Processed in 2.891801 secs); 15 Sep 2017 16:50:23 -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=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_PASS, T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: okiddle@yahoo.co.uk X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.uk; s=s2048; t=1505494215; bh=UeQIMQgRApWaqMZ8BjGPVm7Dl3sHcXheqK5HXzeozTU=; h=From:To:Subject:Date:From:Subject; b=Kb6lhfWZjOpr0Nj/vN4ldFB6Kkp2AKNMdQqfHkt76OXbMmgBNlKnkYVGpEcfgzyP5sgxxQplhzsMAXAyAbP1pC8giN3qDg8XhOd+bKcunc6ofxHQ9VyrhDnXvy5Crg9h24AYXVlN5IKppSkAuP+NbeSroknXF9JhGlUzp5ENqwOhed8ZJGazPktCDZjQR5O2BaqZw6J2y7ZJ0Re8S0K4M3GtpfaOkzUDdiTF4QhBT2OR65/UHOE610j5Tm9ikmrGrp0LHRdKxIPLaaYZ9SbTPKQDkUksZXC27PpaMeol0NMS++AaO6tAyKW0COTdzCmnEMMUESMfSRzCEx4O0ImBNw== X-YMail-OSG: keG9LC8VM1kDut3ypTTtfK5hXWFecs7XfW0hxHem4WzYdFgSXAUN_bkpHwJRGTe cn4QTZ0LjmW8qfCnTDXs4JgLZ4NCZnV4MTTVTwNSyODvsMCki2looBwNQgDgptQAgYLGMpxK6CEr 0c8BVFOq4tuzWmAkeJCIOy7o5MzKXu0ozgHPRSdOufbLSgcSPnmoC6SymYKT9iYADZmWlN_xVuTw InbYCVliDEunrtfJvhPdCub8zvOruyk2HEqnlaeBmeW4H9VDhadzwpFnGIES3_SXZaOleX.11PQP JqrIfe3JaCZdiQPOiX3wSQhGeGrHtLMEgxpfBpmFJazMIvMkrrW2hBP5TRKu8WaQLQqyA1468uCQ XDqqm_GJgLzY6ejeL8L0jWBJKCVToKOcK8jsBh8W4XwHLau.kq4hjxGGneNv6Cckt0.x75LYmQzi zXBA_KFSWRfx62P_MmvkJdr3saiicie9_xgSbxJrIvTDEZGplRCT5Pe15HUgMbX50DZ.j8g-- X-Yahoo-Newman-Id: 537631.68300.bm@smtp125.mail.ir2.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: keG9LC8VM1kDut3ypTTtfK5hXWFecs7XfW0hxHem4WzYdFg SXAUN_bkpHwJRGTecn4QTZ0LjmW8qfCnTDXs4JgLZ4NCZnV4MTTVTwNSyODv sMCki2looBwNQgDgptQAgYLGMpxK6CEr0c8BVFOq4tuzWmAkeJCIOy7o5MzK Xu0ozgHPRSdOufbLSgcSPnmoC6SymYKT9iYADZmWlN_xVuTwInbYCVliDEun rtfJvhPdCub8zvOruyk2HEqnlaeBmeW4H9VDhadzwpFnGIES3_SXZaOleX.1 1PQPJqrIfe3JaCZdiQPOiX3wSQhGeGrHtLMEgxpfBpmFJazMIvMkrrW2hBP5 TRKu8WaQLQqyA1468uCQXDqqm_GJgLzY6ejeL8L0jWBJKCVToKOcK8jsBh8W 4XwHLau.kq4hjxGGneNv6Cckt0.x75LYmQzizXBA_KFSWRfx62P_MmvkJdr3 saiicie9_xgSbxJrIvTDEZGplRCT5Pe15HUgMbX50DZ.j8g-- X-Yahoo-SMTP: opAkk_CswBAce_kJ3nIPlH80cJI- From: Oliver Kiddle To: Zsh workers Subject: PATCH: dconf completion MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <6129.1505494213.1@thecus.kiddle.eu> Date: Fri, 15 Sep 2017 18:50:13 +0200 Message-ID: <6130.1505494213@thecus.kiddle.eu> dconf has a hidden _complete subcommand for getting completion matches so this is fairly straightforward. It ends up being separated like a file/directory hierarchy unlike the gsettings completion which has them all together with matching control. Oliver diff --git a/Completion/Unix/Command/_dconf b/Completion/Unix/Command/_dconf new file mode 100644 index 000000000..645af3a4f --- /dev/null +++ b/Completion/Unix/Command/_dconf @@ -0,0 +1,71 @@ +#compdef dconf + +local curcontext="$curcontext" state line cmds ret=1 +local cmd=$words[1] + +cmds=( + 'help:display help information' + 'read:read the value of a key' + 'list:list the contents of a directory' + 'write:change the value of a key' + 'reset:reset the value of a key or directory' + 'compile:compile a binary database from keyfiles' + 'update:update the system databases' + 'watch:watch a path for changes' + 'dump:dump an entire subpath to stdout' + 'load:populate a subpath from stdin' +) + +if (( CURRENT == 2 )); then + _describe -t commands command cmds + return +fi + +curcontext="${curcontext%:*}-$words[2]:" +shift words +(( CURRENT-- )) + +case $words[1] in + dump|list|load) state=dirs ;; + watch) state=keys ;; + read) + _arguments -A "-*" '-d[read default values]' '1:key:->keys' && ret=0 + ;; + write) + _arguments '1:key:->keys' '2:value' && ret=0 + ;; + reset) + _arguments -A "-*" '-f[reset entire directory]' '1:key:->keys' && ret=0 + [[ $+opt_args[-f] = 1 && state = keys ]] && state=dirs + ;; + compile) + _arguments '1:file:_files' '2:path:_directories' && ret=0 + ;; + help) + _describe -t commands command cmds && ret=0 + ;; + *) _default && ret=0 ;; +esac + +case $state in + keys) + compset -P '*/' + dirs=( ${${${(f)"$(_call_program keys dconf _complete \'\' "${IPREFIX:-/}")"}#$IPREFIX}%% #} ) + _tags keys + while _tags; do + if _requested keys; then + _description keys expl keu + compadd "$expl[@]" -qS ' ' ${dirs:#*/} && ret=0 + compadd "$expl[@]" -S '' ${(M)dirs:#*/} && ret=0 + fi + (( ret )) || break + done + ;; + dirs) + compset -P '*/' + _wanted keys expl directory compadd -S '' - \ + ${${(f)"$(_call_program keys dconf _complete / "${IPREFIX:-/}")"}#$IPREFIX} && ret=0 + ;; +esac + +return ret .