Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
[PATCH] zsh localedef completion
- X-seq: zsh-workers 38442
- From: Marko Myllynen <myllynen@xxxxxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: [PATCH] zsh localedef completion
- Date: Mon, 9 May 2016 15:55:15 +0300
- 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
- Organization: Red Hat
- Reply-to: 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.
http://man7.org/linux/man-pages/man1/localedef.1.html
---
Completion/Unix/Command/_localedef | 54 ++++++++++++++++++++++++++++++++++++++
1 file changed, 54 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..ac4b438
--- /dev/null
+++ b/Completion/Unix/Command/_localedef
@@ -0,0 +1,54 @@
+#compdef localedef
+
+local curcontext="$curcontext" state line expl ret=1
+local exargs="-? --help --usage -V --version"
+typeset -A opt_args
+
+_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' \
+ '*:path:_files' \
+ - set2 \
+ "($exargs)--list-archive[list locales in archive]" \
+ - set3 \
+ "($exargs)--delete-from-archive[delete locale from archive]" \
+ '*:locale:->locale' \
+ - set4 \
+ "($exargs)--add-to-archive[add locale to archive]" \
+ "($exargs)--replace[replace locale in 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
Thanks,
--
Marko Myllynen
Messages sorted by:
Reverse Date,
Date,
Thread,
Author