summaryrefslogtreecommitdiff
path: root/Completion/Base/Utility
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Base/Utility')
-rw-r--r--Completion/Base/Utility/.distfiles26
-rw-r--r--Completion/Base/Utility/_comp_locale20
2 files changed, 41 insertions, 5 deletions
diff --git a/Completion/Base/Utility/.distfiles b/Completion/Base/Utility/.distfiles
index 97d86bdbf..91ddf881b 100644
--- a/Completion/Base/Utility/.distfiles
+++ b/Completion/Base/Utility/.distfiles
@@ -1,9 +1,25 @@
DISTFILES_SRC='
.distfiles
-_alternative _call_program _nothing _sub_commands
-_arg_compile _combination _regex_arguments _values
-_arguments _set_command _retrieve_cache _guard
-_cache_invalid _describe _sep_parts _pick_variant
-_call_function _multi_parts _store_cache _regex_words
+_alternative
+_arg_compile
+_arguments
+_cache_invalid
+_call_function
+_comp_locale
_complete_help_generic
+_call_program
+_combination
+_set_command
+_describe
+_multi_parts
+_nothing
+_regex_arguments
+_retrieve_cache
+_sep_parts
+_store_cache
+_sub_commands
+_values
+_guard
+_pick_variant
+_regex_words
'
diff --git a/Completion/Base/Utility/_comp_locale b/Completion/Base/Utility/_comp_locale
new file mode 100644
index 000000000..e55338b97
--- /dev/null
+++ b/Completion/Base/Utility/_comp_locale
@@ -0,0 +1,20 @@
+#autoload
+
+# Arrange that LC_CTYPE retains the current setting so characters in
+# file names are handled properly, but other locales are set to C so
+# that the completion system can process output without surprises.
+
+# This exports new locale settings, so should only
+# be run in a subshell. A typical use is in a $(...).
+
+local ctype
+
+if ctype=${${(f)"$(locale 2>/dev/null)"}:#^LC_CTYPE=*}; then
+ unset -m LC_\*
+ [[ -n $ctype ]] && eval export $ctype
+else
+ ctype=${LC_ALL:-${LC_CTYPE:-${LANG:-C}}}
+ unset -m LC_\*
+ export LC_CTYPE=$ctype
+fi
+export LANG=C