Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm
Precedence: bulk
X-No-Archive: yes
List-Id: Zsh Workers List <zsh-workers.zsh.org>
List-Post: <mailto:zsh-workers@zsh.org>
List-Help: <mailto:zsh-workers-help@zsh.org>
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 <baptiste.daroussin@gmail.com>
Date: Tue, 31 May 2016 18:44:42 +0200
Message-ID: <CAPKC6oLR1ue-tRgbCGg1yxf5Q-urM08vp_mcUckF6yY5ewDS4w@mail.gmail.com>
Subject: Re: [PATCH v2] zsh localedef completion
To: Marko Myllynen <myllynen@redhat.com>
Cc: zsh workers <zsh-workers@zsh.org>
Content-Type: text/plain; charset=UTF-8
X-Seq: zsh-workers 38560

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 <myllynen@redhat.com>:
> 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 -<TAB>
>
> offers --alias-file (unexpected to me) alongside the others but
>
> $ localedef --alias-file=foo -<TAB>
>
> does not offer -A (IMHO expected).
>
> $ localedef -c<TAB>
>
> 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&section=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

