From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22136 invoked by alias); 23 Jul 2018 06:50:12 -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: List-Unsubscribe: X-Seq: 43202 Received: (qmail 14062 invoked by uid 1010); 23 Jul 2018 06:50:12 -0000 X-Qmail-Scanner-Diagnostics: from mail-it0-f68.google.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(209.85.214.68):SA:0(-1.9/5.0):. Processed in 1.353801 secs); 23 Jul 2018 06:50:12 -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,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_PASS,T_DKIMWL_WL_MED,T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: dana@dana.is X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dana-is.20150623.gappssmtp.com; s=20150623; h=from:content-transfer-encoding:mime-version:subject:message-id:date :to; bh=PXJ8cfwXipuWvjcUkhJfQeaeEuF1tUoB0eKrslJ/GQ8=; b=QvW+/slwN38tZAiZeqxrHIyjVeHHX9NsjhNDHtBuWLHoC9z6NErlH50FmbkoAoRIds vyro8IF/8cXpqKcn+W2U7/UI3ncNzG8EjNmCQ7SSZFrAoIxg5gJXsjg8kW5UEQUMnisu BXBKxrB4Q0yUiw94T/I73Fetav87kTGxLRgQhdpimxJoAYKifKWho/KhcTU5FG7kfqhm +8D/cdbDeA3OEdhm6XfPKQJpuJvRvLjaDf8fZ1qmXCT9mnoCxpLVkfHQBzLB2k8xvMG8 NEBdwrdUe3YxI4XOAfAItFKkUNHwTy9X097cQuznVeLoPD+l03gQRpbcDfFkRrUNmGU2 Gxyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:message-id:date:to; bh=PXJ8cfwXipuWvjcUkhJfQeaeEuF1tUoB0eKrslJ/GQ8=; b=omOaRMMfFj6wJGRuZVEU5Q6TRiS1Ru2xCf9y8WSWDxvtzot04ZSeUm5ILHudUmcTtN 9AG+V83Lcs8uM11FiuN2VL644pBYHmsP8ucMV7L9FOVQbdIM8coSxUHVfY5lFEQE/g73 vOyYUKfWHUkMkB8lK2uzDbqPS2ofN8CJPtRcrOp9OPtRU0HxlzH7CKppYKBeJ6FGYvt2 y/WCyN8AYdlkt8JRflX2VGIfl6ytET8PrFRZQOrdVFkxrNJXO1rfkBVQ9dz7Y6LOLK5Q 7atD5xxMIJUdBPRDhXEykXX0FHvGCrzXYkyd25Qp0rdH6+W59mIUjsoCSSlGUKpJDN2A QN6g== X-Gm-Message-State: AOUpUlHmrEp7KtCQOyI8HMwMdq7OOtVY0mxW6VlSdu7OUbjQm2iCHOJo 6exEcGcmwrp+mitT7Wa7cCBJ0+GivYI= X-Google-Smtp-Source: AAOMgperuIgAu8TO3iFbf51RlqPZgX3+xyRuNh76/BVfmJsPY3Q7gWxWq5RjhylOlNMOAQLq93a6EA== X-Received: by 2002:a24:988b:: with SMTP id n133-v6mr9368644itd.10.1532328607310; Sun, 22 Jul 2018 23:50:07 -0700 (PDT) From: dana Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 11.4 \(3445.8.2\)) Subject: [PATCH] Completion: Add _lua Message-Id: <84B28497-6E79-439D-BFB5-CDD32D6BECB5@dana.is> Date: Mon, 23 Jul 2018 01:50:05 -0500 To: Zsh hackers list X-Mailer: Apple Mail (2.3445.8.2) Add completion for the Lua command-line interpreter. _lua_libraries is maybe a little excessive, tbh, but i found it useful = =E2=80=94 i don't think there's any 'official' way to do what it does. dana diff --git a/Completion/Unix/Command/_lua b/Completion/Unix/Command/_lua new file mode 100644 index 000000000..e11cd226c --- /dev/null +++ b/Completion/Unix/Command/_lua @@ -0,0 +1,48 @@ +#compdef lua -P lua[0-9.-]## + +# Complete lua library names. We go out of our way here to support = sub-modules +# (of the format foo.bar.baz), even though the way `lua -l` handles = those isn't +# very nice, because it might be useful for informational purposes +(( $+functions[_lua_libraries] )) || +_lua_libraries() { + local p + local -a tmp tmp2 pre + + # Lua will tell us its effective search paths in the error message + tmp=3D( ${(f)"$( _call_program libraries $words[1] -l '"%%FAKE%%"' = 2>&1 )"} ) + + [[ $tmp =3D=3D *'%%FAKE%%'* ]] && { + tmp=3D( ${(@M)tmp:#*no file*'%%FAKE%%'*} ) + tmp=3D( ${(@)tmp##[[:space:]]#no file[[:space:]\'\"]##} ) + tmp=3D( ${(@)tmp%%[[:space:]\'\"]##} ) + + for p in $tmp; do + pre+=3D( ${(b)p%%'%%FAKE%%'*} ) + # Don't recurse infinitely into the current directory; we'll just = trust + # that all other paths are sensible + if [[ $p =3D=3D './%%FAKE%%'* ]]; then + tmp2+=3D( ${~${${(b)p}/'%%FAKE%%'/'*'}}(#qN) ) + else + tmp2+=3D( ${~${${(b)p}/'%%FAKE%%'/'**/*'}}(#qN) ) + fi + done + + tmp=3D( $tmp2 ) + tmp=3D( ${(@)tmp%%(.lua|/init.lua|.so)} ) + tmp=3D( ${(@)tmp##(${~${(j<|>)pre}})} ) + tmp=3D( ${(@u)${(@)tmp//\//.}} ) + } + + _wanted -x libraries expl 'Lua library' compadd -a "$@" - tmp +} + +# Stacking not supported, no arguments are exclusive except `-` +_arguments -S -A '-*' : \ + '*-e+[execute specified command string]:command string' \ + '-E[ignore environment variables]' \ + '-i[enter interactive mode]' \ + '*-l+[specify library or module to require]: :_lua_libraries' \ + '-v[display version information]' \ + '(1 -)-[stop argument parsing and execute script on stdin]' \ + '1:Lua script:_files' \ + '*:script argument'