# HG changeset patch # User Gerd Moellmann # Date 985169907 0 # Node ID 88d7b5c216a24b51b8b826b24618f82418406c4c # Parent 1cf77c29c4b29b4ec6c26227fb7b3035f5bf8030 (set-locale-environment): Set system-messages-locale and system-time-locale, but only if the caller specifies a non-nil locale name. diff -r 1cf77c29c4b2 -r 88d7b5c216a2 lisp/international/mule-cmds.el --- a/lisp/international/mule-cmds.el Tue Mar 20 20:41:37 2001 +0000 +++ b/lisp/international/mule-cmds.el Wed Mar 21 10:18:27 2001 +0000 @@ -2,7 +2,7 @@ ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. ;; Licensed to the Free Software Foundation. -;; Copyright (C) 2000 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2001 Free Software Foundation, Inc. ;; Keywords: mule, multilingual @@ -1898,57 +1898,67 @@ (setq files (cdr files))) (car files))) - (unless locale-name - ;; Use the first of these three environment variables - ;; that has a nonempty value. - (let ((vars '("LC_ALL" "LC_CTYPE" "LANG"))) - (while (and vars (not (setq locale-name (getenv (car vars))))) - (setq vars (cdr vars))))) + (let ((locale locale-name)) - (when locale-name + (unless locale + ;; Use the first of these three environment variables + ;; that has a nonempty value. + (let ((vars '("LC_ALL" "LC_CTYPE" "LANG"))) + (while (and vars (not (setq locale (getenv (car vars))))) + (setq vars (cdr vars))))) + + (when locale - ;; Translate "swedish" into "sv_SE.ISO8859-1", and so on, - ;; using the translation file that many systems have. - (when locale-translation-file-name - (with-temp-buffer - (insert-file-contents locale-translation-file-name) - (when (re-search-forward - (concat "^" (regexp-quote locale-name) ":?[ \t]+") nil t) - (setq locale-name (buffer-substring (point) (line-end-position)))))) + ;; Translate "swedish" into "sv_SE.ISO8859-1", and so on, + ;; using the translation file that many systems have. + (when locale-translation-file-name + (with-temp-buffer + (insert-file-contents locale-translation-file-name) + (when (re-search-forward + (concat "^" (regexp-quote locale) ":?[ \t]+") nil t) + (setq locale (buffer-substring (point) (line-end-position)))))) - (setq locale-name (downcase locale-name)) + ;; Leave the system locales alone if the caller did not specify + ;; an explicit locale name, as their defaults are set from + ;; LC_MESSAGES and LC_TIME, not LC_CTYPE, and the user might not + ;; want to set them to the same value as LC_CTYPE. + (when locale-name + (setq system-messages-locale locale) + (setq system-time-locale locale)) + + (setq locale (downcase locale)) - (let ((language-name - (locale-name-match locale-name locale-language-names)) - (charset-language-name - (locale-name-match locale-name locale-charset-language-names)) - (coding-system - (locale-name-match locale-name locale-preferred-coding-systems))) + (let ((language-name + (locale-name-match locale locale-language-names)) + (charset-language-name + (locale-name-match locale locale-charset-language-names)) + (coding-system + (locale-name-match locale locale-preferred-coding-systems))) - (if (and charset-language-name - (not - (equal (get-language-info language-name 'charset) - (get-language-info charset-language-name 'charset)))) - (setq language-name charset-language-name)) + (if (and charset-language-name + (not + (equal (get-language-info language-name 'charset) + (get-language-info charset-language-name 'charset)))) + (setq language-name charset-language-name)) - (when language-name + (when language-name - ;; Set up for this character set. This is now the right way - ;; to do it for both unibyte and multibyte modes. - (set-language-environment language-name) + ;; Set up for this character set. This is now the right way + ;; to do it for both unibyte and multibyte modes. + (set-language-environment language-name) - ;; If default-enable-multibyte-characters is nil, - ;; we are using single-byte characters, - ;; so the display table and terminal coding system are irrelevant. - (when default-enable-multibyte-characters - (set-display-table-and-terminal-coding-system language-name)) + ;; If default-enable-multibyte-characters is nil, + ;; we are using single-byte characters, + ;; so the display table and terminal coding system are irrelevant. + (when default-enable-multibyte-characters + (set-display-table-and-terminal-coding-system language-name)) - (setq locale-coding-system - (car (get-language-info language-name 'coding-priority)))) + (setq locale-coding-system + (car (get-language-info language-name 'coding-priority)))) - (when coding-system - (prefer-coding-system coding-system) - (setq locale-coding-system coding-system))))) + (when coding-system + (prefer-coding-system coding-system) + (setq locale-coding-system coding-system)))))) ;;; Charset property