Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-15
[bpt/emacs.git] / lisp / international / mule-cmds.el
index cd60e26..4c93ee6 100644 (file)
@@ -1030,7 +1030,7 @@ For a list of useful values for KEY and their meanings,
 see `language-info-alist'."
   (if (symbolp lang-env)
       (setq lang-env (symbol-name lang-env)))
-  (let ((lang-slot (assoc-ignore-case lang-env language-info-alist)))
+  (let ((lang-slot (assoc-string lang-env language-info-alist t)))
     (if lang-slot
        (cdr (assq key (cdr lang-slot))))))
 
@@ -1587,11 +1587,11 @@ to using the function `set-language-environment'."
   :link '(custom-manual "(emacs)Language Environments")
   :set (lambda (symbol value) (set-language-environment value))
   :get (lambda (x)
-        (or (car-safe (assoc-ignore-case
+        (or (car-safe (assoc-string
                        (if (symbolp current-language-environment)
                            (symbol-name current-language-environment)
                          current-language-environment)
-                       language-info-alist))
+                       language-info-alist t))
             "English"))
   ;; custom type will be updated with `set-language-info'.
   :type (if language-info-alist
@@ -1696,7 +1696,7 @@ specifies the character set for the major languages of Western Europe."
       (if (symbolp language-name)
          (setq language-name (symbol-name language-name)))
     (setq language-name "English"))
-  (let ((slot (assoc-ignore-case language-name language-info-alist)))
+  (let ((slot (assoc-string language-name language-info-alist t)))
     (unless slot
       (error "Language environment not defined: %S" language-name))
     (setq language-name (car slot)))
@@ -1860,8 +1860,8 @@ Setting this variable directly does not take effect.  See
                      ?3))
          ;; We suppress these setting for the moment because the
          ;; above assumption is wrong.
-         ;; (aset standard-display-table ?' [?\e,F"\e(B])
-         ;; (aset standard-display-table ?` [?\e,F!\e(B])
+         ;; (aset standard-display-table ?' [?\e$B!G\e(B])
+         ;; (aset standard-display-table ?` [?\e$B!F\e(B])
          ;; The fonts don't have the relevant bug.
          (aset standard-display-table 160 nil)
          (aset standard-display-table (make-char 'latin-iso8859-1 160)
@@ -2268,7 +2268,7 @@ matches are looked for in the coding system list, treating case and
 the characters `-' and `_' as insignificant.  The coding system base
 is returned.  Thus, for instance, if charset \"ISO8859-2\",
 `iso-latin-2' is returned."
-  (or (car (assoc-ignore-case charset locale-charset-alist))
+  (or (car (assoc-string charset locale-charset-alist t))
       (let ((cs coding-system-alist)
            c)
        (while (and (not c) cs)
@@ -2413,6 +2413,16 @@ See also `locale-charset-language-names', `locale-language-names',
                  (message "Warning: Default coding system `%s' disagrees with
 system codeset `%s' for this locale." coding-system codeset))))))))
 
+    ;; On Windows, override locale-coding-system, keyboard-coding-system,
+    ;; selection-coding-system with system codepage.
+    (when (boundp 'w32-ansi-code-page)
+      (let ((code-page-coding (intern (format "cp%d" w32-ansi-code-page))))
+       (when (coding-system-p code-page-coding)
+         (setq locale-coding-system code-page-coding)
+         (set-selection-coding-system code-page-coding)
+         (set-keyboard-coding-system code-page-coding)
+         (set-terminal-coding-system code-page-coding))))
+
     ;; Default to A4 paper if we're not in a C, POSIX or US locale.
     ;; (See comments in Flocale_info.)
     (let ((locale locale)
@@ -2435,7 +2445,11 @@ system codeset `%s' for this locale." coding-system codeset))))))))
                                                ("posix$" . letter)
                                                (".._us" . letter)
                                                (".._pr" . letter)
-                                               (".._ca" . letter)))
+                                               (".._ca" . letter)
+                                               ("enu$" . letter) ; Windows
+                                               ("esu$" . letter)
+                                               ("enc$" . letter)
+                                               ("frc$" . letter)))
                    'a4))))))
   nil)
 \f