changeset 79441:371591e2f734

(set-locale-environment): Set default-file-name-coding-system _after_ keyboard and terminal coding systems. This fixes last change.
author Eli Zaretskii <eliz@gnu.org>
date Fri, 16 Nov 2007 18:22:11 +0000
parents 018815e0a239
children 19465bdfa2ae
files lisp/international/mule-cmds.el
diffstat 1 files changed, 11 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/international/mule-cmds.el	Fri Nov 16 16:05:53 2007 +0000
+++ b/lisp/international/mule-cmds.el	Fri Nov 16 18:22:11 2007 +0000
@@ -2615,9 +2615,18 @@
       (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)
-          (setq default-file-name-coding-system code-page-coding)
 	  (set-keyboard-coding-system code-page-coding)
-	  (set-terminal-coding-system code-page-coding))))
+	  (set-terminal-coding-system code-page-coding)
+	  ;; Set default-file-name-coding-system last, so that Emacs
+	  ;; doesn't try to use cpNNNN when it defines keyboard and
+	  ;; terminal encoding.  That's because the above two lines
+	  ;; will want to load code-pages.el, where cpNNNN are
+	  ;; defined; if default-file-name-coding-system were set to
+	  ;; cpNNNN while these two lines run, Emacs will want to use
+	  ;; it for encoding the file name it wants to load.  And that
+	  ;; will fail, since cpNNNN is not yet usable until
+	  ;; code-pages.el finishes loading.
+	  (setq default-file-name-coding-system code-page-coding))))
 
     (when (eq system-type 'darwin)
       ;; On Darwin, file names are always encoded in utf-8, no matter