Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: [PATCH v2] zsh localedef completion
- X-seq: zsh-workers 38560
- From: Baptiste Daroussin <baptiste.daroussin@xxxxxxxxx>
- To: Marko Myllynen <myllynen@xxxxxxxxxx>
- Subject: Re: [PATCH v2] zsh localedef completion
- Date: Tue, 31 May 2016 18:44:42 +0200
- Cc: zsh workers <zsh-workers@xxxxxxx>
- 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==
- In-reply-to: <574C7A14.6070305@redhat.com>
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
- References: <574C7A14.6070305@redhat.com>
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@xxxxxxxxxx>:
> 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§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
Messages sorted by:
Reverse Date,
Date,
Thread,
Author