From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29076 invoked by alias); 31 May 2016 16:45:06 -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: 38560 Received: (qmail 21944 invoked from network); 31 May 2016 16:45:05 -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, T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=WTbAF6Nc9IaolKQvf9ZGfg47rTol15TVONWhtGEU8Ak=; b=NEEc+X5brnB2lZMgLVJhkpEe3pI8HixNwlxUClIQbGYi2IVsKBDxVuDOrOMKqBkLcC 2wc0CUKIXyVgotCn11p7FkMTR2sAY4vrDjcA2AYPrQRcl0sHR0VIOVA6twuck12NKPg3 hi91BjpsTHQ3p7AUeMORNXor6hONF9I6bJwN2JsmrKLPQIEzKeWEieT8x4bE00QvlJ2p k4gv+KyrftGHlK36i3rN04ZkfdJ4eqLb9tXg9Lv9AUsok6ORfFoFJt45BD6L39snzusX qHwM6Loj+snxZNw9F+IMRhXrg/dAIV+XBC12gTCRRXpz3kR++vJiBT4YHclQYQ5kItac UTXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=WTbAF6Nc9IaolKQvf9ZGfg47rTol15TVONWhtGEU8Ak=; b=jJNLXeasHKUrI5lZ4CSwqzxAY8q5jEjVhhdrTdSQFVZNvueW7mGiositCI+KVhwiUC fW3gcvxLW8dqIraBfNeR6Cq8Z/xExj3R98FTq0wnuDJyj7Ig3GsJwGzcygUDPtV8Y5b8 ns23lTjdYrh/Z9Tw5EcVWmFF+WgCKbD2MhMSdkJd4p8bqpClF3x9tjW8EIgJ1HSr6Dtv cEMsPg64HjuaQ9cjIPOR+vOnBCPTT90EOl8ciObrEKbg++RBQ9Rip3C+v951UokmGF89 1dgb/9jFic/qWM6SBqrhlsKy6He/anR6uBZPNiQfDpIV4HyWk6TtHvzjzixrgfkD9984 ypzQ== X-Gm-Message-State: ALyK8tI9vjVUv8+raNi/5VozS0K1ISi59OAMMYfzZzCC7Q152hsTzebAYdI8GaXY+c4oWdXhTOlRPZDJ8TKaGg== X-Received: by 10.37.228.198 with SMTP id b189mr21238272ybh.25.1464713102272; Tue, 31 May 2016 09:45:02 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <574C7A14.6070305@redhat.com> References: <574C7A14.6070305@redhat.com> From: Baptiste Daroussin Date: Tue, 31 May 2016 18:44:42 +0200 Message-ID: Subject: Re: [PATCH v2] zsh localedef completion To: Marko Myllynen Cc: zsh workers Content-Type: text/plain; charset=UTF-8 FreeBSD expect the same options as Dragonfly given we share the same code here Can you please add freebsd ? 2016-05-30 19:36 GMT+02:00 Marko Myllynen : > Hi, > > Below is zsh completions for the localedef(1) command, I've tested this > on RHEL 7 against the glibc provided localedef command. Otherwise it > works nicely but I'm a bit wondering two things here: > > $ localedef -Afoo - > > offers --alias-file (unexpected to me) alongside the others but > > $ localedef --alias-file=foo - > > does not offer -A (IMHO expected). > > $ localedef -c > > offers also V/? although I hoped them to get excluded in that case. > > Anyway, I don't think neither of these are critical issues so I think > this would be already worth merging as-is but if you happen to know the > needed tweaks to address those issues all the better. > > As Eric Cook pointed out, there's life outside of GNU and this patch now > supports Darwin/Dragonfly/GNU/POSIX. Since I don't have access to a > Solaris system I didn't implement that yet, would be probably pretty > straightforward but would be good to actually test it. > > As with locale(1) completion, I chose to duplicate few lines so that if > something needs to be changed for non-GNU which I haven't tested, it's > probably easier to tweak the already separate if-block then. > > References: > > http://pubs.opengroup.org/onlinepubs/9699919799/utilities/localedef.html > http://man7.org/linux/man-pages/man1/localedef.1.html > https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/localedef.1.html > https://docs.oracle.com/cd/E26502_01/html/E29030/localedef-1.html > https://www.dragonflybsd.org/cgi/web-man?command=localedef§ion=1 > > --- > Completion/Unix/Command/_localedef | 98 ++++++++++++++++++++++++++++++++++++++ > 1 file changed, 98 insertions(+) > create mode 100644 Completion/Unix/Command/_localedef > > diff --git a/Completion/Unix/Command/_localedef b/Completion/Unix/Command/_localedef > new file mode 100644 > index 0000000..4f37c56 > --- /dev/null > +++ b/Completion/Unix/Command/_localedef > @@ -0,0 +1,98 @@ > +#compdef localedef > + > +# TODO: Solaris opts > + > +local curcontext="$curcontext" state line expl ret=1 > +typeset -A opt_args > + > +if _pick_variant gnu='(GNU|EGLIBC)' unix --version; then > + > + local exargs="-? --help --usage -V --version" > + _arguments -A "-*" -C -S -s \ > + '(- *)'{-\?,--help}'[display help information]' \ > + '(- *)--usage[display a short usage message]' \ > + '(- *)'{-V,--version}'[print program version]' \ > + "(-A --alias-file= $exargs)"{-A+,--alias-file=}'[specify locale alias file]:alias file:_files' \ > + "($exargs)--prefix=[specify path prefix]:prefix:_files" \ > + "(-c --force $exargs)"{-c,--force}'[force write despite of warnings]' \ > + "(-v --verbose $exargs)"{-v,--verbose}'[display additional information]' \ > + "($exargs)--quiet[suppress messages and warnings]" \ > + - set1 \ > + "(-f --charmap= $exargs)"{-f+,--charmap=}'[specify locale charmap file]:charmap:->charmap' \ > + "(-i --inputfile= $exargs)"{-i+,--inputfile=}'[specify locale definition file]:locale file:_files' \ > + "(-u --repertoire-map= $exargs)"{-u+,--repertoire-map=}'[specify repertoire map file]:repertoire map file:_files' \ > + '1:path:_files' \ > + - set2 \ > + "(--list-archive $exargs)--list-archive[list locales in archive]" \ > + - set3 \ > + "(--delete-from-archive $exargs)--delete-from-archive[delete locale from archive]" \ > + '*:locale:->locale' \ > + - set4 \ > + "(--add-to-archive $exargs)--add-to-archive[add locale to archive]" \ > + "(--replace $exargs)--replace[replace locale in archive]" \ > + "(--no-archive $exargs)--no-archive[use subdir not archive]" \ > + '*:compiled path:_files -/' \ > + && return 0 > + > + case "$state" in > + charmap) > + if [[ $words[-1] == */* ]]; then > + _wanted values expl charmap _files && ret=0 > + else > + typeset -a charmaps > + charmaps=( ${(f)"$(locale -m)"} ) > + _wanted values expl charmap compadd "$@" \ > + -M 'm:{a-zA-Z}={A-Za-z} r:|-=* r:|=*' \ > + -a - charmaps && ret=0 > + fi > + ;; > + locale) > + typeset -a locales > + local pref=${opt_args[--prefix]} > + local p=${pref:+--prefix} > + locales=( ${(f)"$(localedef --list-archive $p $pref)"} ) > + _wanted values expl locale compadd "$@" -a - locales && ret=0 > + ;; > + esac > + > + return ret > + > +else > + > + typeset -a u_opt dragonfly_opts > + [[ $OSTYPE != darwin* ]] && u_opt=( > + "(-u)"-u+'[specify target codeset]:codeset:_files' > + ) > + [[ $OSTYPE == dragonfly* ]] && dragonfly_opts=( > + "(-D)"-D'[create BSD-style output]' \ > + "(-U)"-U'[ignore undefined character symbols]' \ > + "(-v)"-v'[verbose deguggin output]' \ > + "(-w)"-w+'[specify width file]:width file:_files' \ > + ) > + > + _arguments -A "-*" -C \ > + "(-c)"-c'[force write despite of warnings]' \ > + "(-f)"-f+'[specify locale charmap file]:charmap:->charmap' \ > + "(-i)"-i+'[specify locale definition file]:locale file:_files' \ > + $u_opt \ > + $dragonfly_opts \ > + '1:path:_files' \ > + && return 0 > + > + case "$state" in > + charmap) > + if [[ $words[-1] == */* ]]; then > + _wanted values expl charmap _files && ret=0 > + else > + typeset -a charmaps > + charmaps=( ${(f)"$(locale -m)"} ) > + _wanted values expl charmap compadd "$@" \ > + -M 'm:{a-zA-Z}={A-Za-z} r:|-=* r:|=*' \ > + -a - charmaps && ret=0 > + fi > + ;; > + esac > + > + return ret > + > +fi > > Thanks, > > -- > Marko Myllynen