Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by h1439878.stratoserver.net (8.14.2/8.14.2/Debian-2build1) with ESMTP id r5P8KQm6027901 for ; Tue, 25 Jun 2013 10:20:27 +0200 Received: from relay.uni-heidelberg.de ([129.206.100.212]) by mx-ha.gmx.net (mxgmx013) with ESMTP (Nemesis) id 0Lo1M0-1UKWa40P4y-00fxvB for ; Tue, 25 Jun 2013 10:20:21 +0200 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [129.206.100.94]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id r5P8HG4J021362 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 25 Jun 2013 10:17:16 +0200 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [127.0.0.1]) by listserv.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id r5OM14bT020160; Tue, 25 Jun 2013 10:17:15 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 10072005 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Tue, 25 Jun 2013 10:17:15 +0200 Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by listserv.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id r5P87F0q017728 for ; Tue, 25 Jun 2013 10:07:15 +0200 Received: from mail-la0-f46.google.com (mail-la0-f46.google.com [209.85.215.46]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id r5P86xhw015843 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=FAIL) for ; Tue, 25 Jun 2013 10:07:02 +0200 Received: by mail-la0-f46.google.com with SMTP id eg20so11542766lab.5 for ; Tue, 25 Jun 2013 01:06:59 -0700 (PDT) X-Received: by 10.112.159.169 with SMTP id xd9mr14400344lbb.43.1372147619586; Tue, 25 Jun 2013 01:06:59 -0700 (PDT) Received: from [139.222.112.90] ([139.222.112.90]) by mx.google.com with ESMTPSA id s3sm8050034lbs.14.2013.06.25.01.06.57 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 25 Jun 2013 01:06:58 -0700 (PDT) User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130509 Thunderbird/17.0.6 MIME-Version: 1.0 References: Content-Type: text/plain; charset=windows-1252 Message-ID: <51C94FA0.1080803@morningstar2.co.uk> Date: Tue, 25 Jun 2013 09:06:56 +0100 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Joseph Wright Subject: Re: l3keys feature request To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: Content-Transfer-Encoding: quoted-printable X-MIME-Autoconverted: from 8bit to quoted-printable by relay.uni-heidelberg.de id r5P8HG4J021362 Envelope-To: X-GMX-Antispam: 0 (Mail was not recognized as spam); Detail=V3; X-GMX-Antivirus: 0 (no virus found) X-UI-Filterresults: notjunk:1;V01:K0:vpdjGz0eHhg=:HdBrzE7vGXlYS9Kw9NeZHA T8pUncuzVcRD0frEbWSvgOsE5L8/t8uDwOGerMk1UrDMdGHbdcXBnxlP9K68tTLZCG4e2AT JdkJ+CAnf13d45cBPID5ArGHlrHSVPW4jWKaXVInMzbfPv4vP15HDAqdvh/akD6MWFBclPA dYP6og0zVliYAhHsBNjeQjR1z8IbcVqyqMM0lelR8ae8CWG+8AkVylpgIQ607P9/2biQbqP J9rhH0VwM7AedfK024fbtKJsnlyvcsZYP39pwj9GYlxVcBU+wlRksGQKfQZaG+v2NZxSE79 8PizH9KtDwoiXNBPm7z10QD/TSKo/6uqqKYywNECmYljoraeOdGtbA2uR93yWwjRN51AKTX BDLut14wMKlBYhFjf3Ceovuv42k/gg2DNDT09eQWtt3zFIP5kxSG4TK5p2+0mxEugM5AW4Z GY+/RuTcavQ+Zm0c99qbmxAS/JwpRIW6lsAebO6HQ4aFvmw0oxwsfjZ73lgBBDZAB2gxkg0 WyE8LwfX9rxkxc596MBOZ4m8m0YHNsAOkIPNb7J2WvpJ9reO6vFn7IfXj4x5P3FrbLy8CQP EK2WzEal1GSP8NyxLZ35V3GbdNM/U+ZcmWm+JCpK03osla5drdKf2BJ8pqWWL9VtJ2uY8kt U73LRrtIn/vdPiUhmTH2OYZkkcaZnOIBBZg5IZ1oGsAlSpzf/dmgOoynxFWcESt1QRBmDot +rOKYkGMH6EDwGWIeoYzT3OimJrEqYFqe20ORfJpBzfEhoNT2Vo2fp3b1cu5AWhLex/wuTG E2f3HCPmy4KbBnqkTPjiZiabPTyWyGik04QCrSSXXOsV2lQtQYLeVPIqqLO2SsvT1Al/TVr lPR6uvy9ECiVAnJv+IjAl4ENjJIr2xuxousiXkcpFRcvVRH1q5n8umic8C6jPkvtiJmyjUF Ese5QRfeBslW3xsY8T0PJq1EXd5+BFj9pHA1y46llO/7KHWbxOOepr8iSidGz+MJlfNZkjw VTg8MC5gjdB/bofT4S2Pk96d/clTSUhMXl37YHkPnTKyNxcyK5xqDKGHsx1kaf4P3BgPman ecxYpf2JbLlxz+3fZh8YbQqpDmov6OfQd1cBbse7SKfC+goka6fLgJ1BncMkKKNtdOpzmS0 t1mh+a2awlj8CweacFKTmRf3mmxukmFtycVe+FC270K/5VOAtdxg7o6m9MupcwKE9RGeOot rksG9Q45RgI3dBMe/ZQpH7SCzwEvNu9IlOXRwaA5T5EjiXGYlFaK/ZvrGI80suE4MkN7UwN 8KbVKcKUOcXlFZ2XKFVEqtg6d2IDOXtyYX3/oZFlx93tkTw7eafTQ4KQxFfnrOkWJj3PW+2 IGFR9+pz4QLelye4nK5G4Fh5kUMUgWsUsazSY4ginWdnl3LrW385+tGeFBzQn/OrVKMFXP4 h5MyIbqvsfDEidqgFwS/UY8afHuzVzZfbsmE1TxmVHMPMEZnYzIO28TsHoCedUS6KKNSoie xhx2xHSQ8vkOiJxexHVIoTPAi8vJnwiWiGgbz2NX47XY0Dg7Cig7dfhRZ97NSSll9SisQlr rlktqwy7CtTBFofHdZBdQoFq2AxrM3kwNi+622/0fS46S5n+T9FzwjTfyytX8NGOaxfXllF 6NNwu9B8F X-UI-Loop:V01:7Mb8iGuAE7s=:6zThOkDWupFQYmrFV31NNQ3OSM0PE7udhXIFwKetYfI= Status: R X-Status: X-Keywords: X-UID: 7206 Hello Jura, On 14/06/2013 11:05, Jura Pintar wrote: > Dear all, >=20 > I=92ve recently been re-implementing some of my projects in L3, and > finding myself having to jump through some hoops to get things I had > working smoothly in pgfkeys work equivalently well with l3keys. In > particular, filtering and redirecting keys has been a bit of a chore. I'm not entirely surprised: pgfkeys is 'object oriented' in a way that l3keys is not. I also wrote most of it at a time when filtering in pgfkeys was not developed, so did not even have this in mind as part fo the process. > In > light of this, I have a couple of suggestions for features that could b= e > added to the module in due course (to better illustrate what I have in > mind, I=92ve written a quick-and-dirty implementation - appended at the > bottom of this email; the code seems to work, but I fully expect more > experienced people could greatly improve it). Most of the l3keys properties are just wrappers around .code:n, so I wouldn't bet on it :-) > 1) It would be good to add a .meta:nn property that takes a path as its > first argument, so that we could do things like >=20 > \keys_define:nn { module / subgroup-i } > { key-i .code:n =3D { < code > } } > \keys_define:nn { module / subgroup-ii } > { key-ii .meta:nn =3D { module / subgroup-i } { key-i =3D #1 } } >=20 > instead of having to write >=20 > \keys_define:nn { module / subgroup-ii } > { key-i .code:n =3D { \keys_set:nn { module / subgroup-i } { key-i = =3D #1 } } } >=20 > as is the case right now. Sounds reasonable: anyone else have a view before I add it? > 2) It would also be useful to provide a \keys_set_in_subgroups:nnn > command which would take a list of subgroups in the second > argument-place, and would cycle through all the subgroups looking for > keys given in the third argument-place. Then we could write things like >=20 > \keys_set_in_subgroups:nnn { module } { subgroup-i , subgroup-ii } > { key-i =3D foo , key-ii =3D bar } >=20 > instead of >=20 > \keys_set:nn { module / subgroup-i } { key-i =3D foo } > \keys_set:nn { module / subgroup-ii } { key-ii =3D bar } >=20 > More importantly, we could then easily define user commands that set > different subsets of keys. A further command \keys_set_known_in_subgro= ups:nnnN > could then be used to catch keys that don=92t exist in any of the > specified subgroups. If this suggestion is accepted, it would also be > useful to then extend l3keys2e with something like >=20 > \ProcessKeysOptionsInSoubgroups { < module > } { < subgroup list > } >=20 > so we can use filtering in this context as well. Here I'm less certain, both in functionality and name terms. I wonder if we might have a real-life use case for this? -- Joseph Wright