From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10377 invoked by alias); 30 Apr 2011 23:03:38 -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: 29117 Received: (qmail 2139 invoked from network); 30 Apr 2011 23:03:25 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received-SPF: none (ns1.primenet.com.au: domain at fys.uio.no does not designate permitted sender hosts) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_c3ce712908df26ed92e807dc920e892e" Date: Sun, 01 May 2011 01:03:18 +0200 From: Haakon Riiser To: Peter Stephenson Cc: Subject: Re: Small patch for FFmpeg completion function In-Reply-To: <20110430215944.37050931@pws-pc.ntlworld.com> References: <20110430215944.37050931@pws-pc.ntlworld.com> Message-ID: X-Sender: haakon.riiser@fys.uio.no User-Agent: Roundcube Webmail/0.4.2 X-UiO-Ratelimit-Test: rcpts/h 2 msgs/h 1 sum rcpts/h 2 sum msgs/h 1 total rcpts 1174 max rcpts/h 16 ratelimit 0 X-UiO-Spam-info: not spam, SpamAssassin (score=-5.0, required=5.0, autolearn=disabled, T_RP_MATCHES_RCVD=-0.01,UIO_MAIL_IS_INTERNAL=-5, uiobl=NO, uiouri=NO) X-UiO-Scanned: A64A16B3EB48E00AC215470A66F756162D31D930 X-UiO-SPAM-Test: remote_host: 129.240.4.40 spam_score: -49 maxlevel 80 minaction 2 bait 0 mail/h: 3 total 341351 max/h 414 blacklist 0 greylist 0 ratelimit 0 --=_c3ce712908df26ed92e807dc920e892e Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=UTF-8; format=flowed On Sat, 30 Apr 2011 21:59:44 +0100, Peter Stephenson wrote: > On Thu, 28 Apr 2011 16:46:19 +0200 > Haakon Riiser wrote: >> Decided to clean it up further. Obviously it is better to avoid >> having >> Perl as a dependency, so the attached version does everything using >> zsh >> scripting. It also uses _call_program and $words[1] instead of >> "ffmpeg" >> directly. > > Thanks, committed this without doing more than a cursory scan of it > --- > no doubt someone will say if they're having problems. Thank you for committing the patch so soon. Unfortunately, I found a couple of more things to improve. :) First of all, there was a bug in the pixel format completion - it included an invalid match. This bug was not introduced by my previous patch, it has been there for a long time. The second thing I changed was not a bug, but probably something that was poor form. Previously, I did this: local BOLD=$'\e[1m' local NORM=$'\e[m' compadd -X "${BOLD}description{NORM}" -q -S '' -a array Here, "array" contains a list of keywords to be completed (e.g., a list of codec names), and "description" contains a description headline to be displayed at the top, above the list of keywords. The $BOLD and $NORM escape codes were used to make it visually identical to description headers in other functions (e.g., _files). This method worked, but I never liked hard-coding ANSI escape codes directly. Now, this is replaced by: _wanted ffmpeg-XXX expl 'description' compadd -a array Seems to work just as well, and I don't need the ANSI escapes. Hopefully, this is the correct way to insert matches directly. If you notice something else that is poor form, let me know and I will fix it. PS: I have also recently written a completion function for nmcli (the command-line interface to NetworkManager, which is used in a lot of Linux distros). It was a bit tricky to get right, because a deep nesting of subcommands and non-standard command line parsing. I think I got it right, but I haven't posted it here yet. Thought I'd get the _ffmpeg improvements out of the way first, so that I don't make the same mistakes in _nmcli. -- Haakon --=_c3ce712908df26ed92e807dc920e892e Content-Transfer-Encoding: base64 Content-Type: text/x-patch; charset=UTF-8; name=fixed_pix_fmt_completion.patch Content-Disposition: attachment; filename=fixed_pix_fmt_completion.patch SW5kZXg6IF9mZm1wZWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvenNoL3pzaC9Db21w bGV0aW9uL1VuaXgvQ29tbWFuZC9fZmZtcGVnLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlm ZiAtdSAtMSAtMCAtcjEuMyBfZmZtcGVnCi0tLSBfZmZtcGVnCTMwIEFwciAyMDExIDIwOjU4OjQ5 IC0wMDAwCTEuMworKysgX2ZmbXBlZwkzMCBBcHIgMjAxMSAyMjo0Njo1OSAtMDAwMApAQCAtMSw2 NCArMSw1NiBAQAogI2NvbXBkZWYgZmZtcGVnCiAKLWxvY2FsIGNvbnRleHQgc3RhdGUgbGluZQor bG9jYWwgY29udGV4dCBzdGF0ZSBsaW5lIGV4cGwKIHR5cGVzZXQgLUEgb3B0X2FyZ3MKIAotbG9j YWwgLWEgX2ZmbXBlZ19hcmdzcGVjcwotCi1sb2NhbCBCT0xEPSQnXGVbMW0nCi1sb2NhbCBOT1JN PSQnXGVbbScKLQotKCggJCtmdW5jdGlvbnNbX2ZmbXBlZ19jb21wYWRkXSApKSB8fCBfZmZtcGVn X2NvbXBhZGQoKSB7Ci0gICAgY29tcGFkZCAtWCAiJHtCT0xEfSQxJHtOT1JNfSIgLXEgLVMgIiQz IiAtYSAkMgotfQotCiAoKCAkK2Z1bmN0aW9uc1tfZmZtcGVnX3ByZXNldHNdICkpIHx8IF9mZm1w ZWdfcHJlc2V0cygpIHsKICAgICBsb2NhbCBwcmVzZXRzCiAgICAgcHJlc2V0cz0ofi8uZmZtcGVn LyouZmZwcmVzZXQoOnQ6cikgIiRGRk1QRUdfREFUQURJUiIvKi5mZnByZXNldCg6dDpyKSkKLSAg ICBfZmZtcGVnX2NvbXBhZGQgJ3NlbGVjdCBwcmVzZXQnIHByZXNldHMgJycKKyAgICBfd2FudGVk IGZmbXBlZy1wcmVzZXRzIGV4cGwgJ3NlbGVjdCBwcmVzZXQnIGNvbXBhZGQgLWEgcHJlc2V0cwog fQogCiAoKCAkK2Z1bmN0aW9uc1tfZmZtcGVnX2Fjb2RlY3NdICkpIHx8IF9mZm1wZWdfYWNvZGVj cygpIHsKICAgICBsb2NhbCBhY29kZWNzCiAgICAgYWNvZGVjcz0oY29weSAkeyR7KE0pJHsoZiki JChfY2FsbF9wcm9ncmFtIGF1ZGlvLWNvZGVjcyAkd29yZHNbMV0gLWNvZGVjcyAyPi9kZXYvbnVs bCkifTojW1s6c3BhY2U6XV1bRFs6c3BhY2U6XV1bRVs6c3BhY2U6XV1BW1NbOnNwYWNlOl1dW0Rb OnNwYWNlOl1dW1RbOnNwYWNlOl1dW1s6c3BhY2U6XV1bXls6c3BhY2U6XV0jIyp9Ly8oI2IpPz8/ Pz8/Pz8oW15bOnNwYWNlOl1dIyMpKi8kbWF0Y2hbMV19KQotICAgIF9mZm1wZWdfY29tcGFkZCAn Zm9yY2UgYXVkaW8gY29kZWMgKCcnY29weScnIHRvIGNvcHkgc3RyZWFtKScgYWNvZGVjcyAnJwor ICAgIF93YW50ZWQgZmZtcGVnLWF1ZGlvLWNvZGVjcyBleHBsICdmb3JjZSBhdWRpbyBjb2RlYyAo Jydjb3B5JycgdG8gY29weSBzdHJlYW0pJyBjb21wYWRkIC1hIGFjb2RlY3MKIH0KIAogKCggJCtm dW5jdGlvbnNbX2ZmbXBlZ192Y29kZWNzXSApKSB8fCBfZmZtcGVnX3Zjb2RlY3MoKSB7CiAgICAg bG9jYWwgdmNvZGVjcwogICAgIHZjb2RlY3M9KGNvcHkgJHskeyhNKSR7KGYpIiQoX2NhbGxfcHJv Z3JhbSB2aWRlby1jb2RlY3MgJHdvcmRzWzFdIC1jb2RlY3MgMj4vZGV2L251bGwpIn06I1tbOnNw YWNlOl1dW0RbOnNwYWNlOl1dW0VbOnNwYWNlOl1dVltTWzpzcGFjZTpdXVtEWzpzcGFjZTpdXVtU WzpzcGFjZTpdXVtbOnNwYWNlOl1dW15bOnNwYWNlOl1dIyMqfS8vKCNiKT8/Pz8/Pz8/KFteWzpz cGFjZTpdXSMjKSovJG1hdGNoWzFdfSkKLSAgICBfZmZtcGVnX2NvbXBhZGQgJ2ZvcmNlIHZpZGVv IGNvZGVjICgnJ2NvcHknJyB0byBjb3B5IHN0cmVhbSknIHZjb2RlY3MgJycKKyAgICBfd2FudGVk IGZmbXBlZy12aWRlby1jb2RlY3MgZXhwbCAnZm9yY2UgdmlkZW8gY29kZWMgKCcnY29weScnIHRv IGNvcHkgc3RyZWFtKScgY29tcGFkZCAtYSB2Y29kZWNzCiB9CiAKICgoICQrZnVuY3Rpb25zW19m Zm1wZWdfZm9ybWF0c10gKSkgfHwgX2ZmbXBlZ19mb3JtYXRzKCkgewogICAgIGxvY2FsIGZvcm1h dHMKICAgICBmb3JtYXRzPSgkeyhvdSkkez0keyhzOiw6KSR7JHsoTSkkeyhmKSIkKF9jYWxsX3By b2dyYW0gZm9ybWF0cyAkd29yZHNbMV0gLWZvcm1hdHMgMj4vZGV2L251bGwpIn06I1tbOnNwYWNl Ol1dW0RbOnNwYWNlOl1dW0VbOnNwYWNlOl1dW1s6c3BhY2U6XV1bXls6c3BhY2U6XV0jIyp9Ly8o I2IpPz8/PyhbXls6c3BhY2U6XV0jIykqLyRtYXRjaFsxXX19fX0pCi0gICAgX2ZmbXBlZ19jb21w YWRkICdmb3JjZSBmb3JtYXQnIGZvcm1hdHMgJycKKyAgICBfd2FudGVkIGZmbXBlZy1mb3JtYXRz IGV4cGwgJ2ZvcmNlIGZvcm1hdCcgY29tcGFkZCAtYSBmb3JtYXRzCiB9CiAKICgoICQrZnVuY3Rp b25zW19mZm1wZWdfbGlzdF9waXhfZm10c10gKSkgfHwgX2ZmbXBlZ19saXN0X3BpeF9mbXRzKCkg ewotICAgIHByaW50IC1sICR7JHsoTSkkeyhmKSIkKF9jYWxsX3Byb2dyYW0gcGl4LWZtdHMgJHdv cmRzWzFdIC1waXhfZm10cyAyPi9kZXYvbnVsbCkifTojW0kuXSp9Ly8oI2IpPz8/Pz8/KFteWzpz cGFjZTpdXSMjKSovJG1hdGNoWzFdfQorICAgIGVjaG8gLSAkeyR7JHsoTSkkeyhmKSIkKF9jYWxs X3Byb2dyYW0gZm9ybWF0cyAkd29yZHNbMV0gLXBpeF9mbXRzIDI+L2Rldi9udWxsKSJ9OiNbSS5d W08uXVtILl1bUC5dW0IuXSBbXj1bOnNwYWNlOl1dKn0jKiB9JSUgKn0KIH0KIAogKCggJCtmdW5j dGlvbnNbX2ZmbXBlZ19waXhfZm10c10gKSkgfHwgX2ZmbXBlZ19waXhfZm10cygpIHsKICAgICBs b2NhbCBwaXhfZm10cwogICAgIHBpeF9mbXRzPSgkKF9mZm1wZWdfbGlzdF9waXhfZm10cykpCi0g ICAgX2ZmbXBlZ19jb21wYWRkICdzZXQgcGl4ZWwgZm9ybWF0JyBwaXhfZm10cyAnJworICAgIF93 YW50ZWQgZmZtcGVnLXBpeC1mbXRzIGV4cGwgJ3NldCBwaXhlbCBmb3JtYXQnIGNvbXBhZGQgLWEg cGl4X2ZtdHMKIH0KIAogKCggJCtmdW5jdGlvbnNbX2ZmbXBlZ19ic2ZzXSApKSB8fCBfZmZtcGVn X2JzZnMoKSB7CiAgICAgbG9jYWwgYnNmcwogICAgIGJzZnM9KCR7JHsoZikiJChfY2FsbF9wcm9n cmFtIGJzZnMgJHdvcmRzWzFdIC1ic2ZzIDI+L2Rldi9udWxsKSJ9OiMqOn0pCi0gICAgX2ZmbXBl Z19jb21wYWRkICdzZXQgYml0c3RyZWFtIGZpbHRlcicgYnNmcyAnJworICAgIF93YW50ZWQgZmZt cGVnLWJzZnMgZXhwbCAnc2V0IGJpdHN0cmVhbSBmaWx0ZXInIGNvbXBhZGQgLWEgYnNmcwogfQog Citsb2NhbCAtYSBfZmZtcGVnX2FyZ3NwZWNzCiB7CiAgICAgbG9jYWwgbGFzdG9wdAogICAgIGxv Y2FsIGxhc3RvcHRfZGVzY3JpcHRpb24KICAgICBsb2NhbCBsYXN0b3B0X3Rha2VzYXJncwogICAg IGxvY2FsIC1hIGxhc3RvcHRfdmFsdWVzCiAKICAgICBfY2FsbF9wcm9ncmFtIG9wdGlvbnMgJHdv cmRzWzFdIC1oIDI+L2Rldi9udWxsIHwgd2hpbGUgSUZTPSQnXG4nIHJlYWQgLXI7IGRvCiAgICAg ICAgIGlmIFtbICRSRVBMWSA9PSAtKiBdXTsgdGhlbgogICAgICAgICAgICAgaWYgW1sgLW4gJGxh c3RvcHQgXV07IHRoZW4KICAgICAgICAgICAgICAgICBpZiAoKCBsYXN0b3B0X3Rha2VzYXJncyAp KTsgdGhlbgo= --=_c3ce712908df26ed92e807dc920e892e--