zsh-workers
 help / color / mirror / code / Atom feed
* [PATCH] zsh localedef completion
@ 2016-05-09 12:55 Marko Myllynen
  0 siblings, 0 replies; only message in thread
From: Marko Myllynen @ 2016-05-09 12:55 UTC (permalink / raw)
  To: zsh-workers

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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2016-05-09 13:03 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-09 12:55 [PATCH] zsh localedef completion Marko Myllynen

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).