emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r109272: Fix bug #12082 with non-ASCI


From: Eli Zaretskii
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r109272: Fix bug #12082 with non-ASCII output in Windows GUI sessions.
Date: Sun, 29 Jul 2012 21:27:35 +0300
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 109272
fixes bug: http://debbugs.gnu.org/12082
committer: Eli Zaretskii <address@hidden>
branch nick: trunk
timestamp: Sun 2012-07-29 21:27:35 +0300
message:
  Fix bug #12082 with non-ASCII output in Windows GUI sessions.
  
   lisp/international/mule-cmds.el (set-locale-environment): Revert last
   change, since display-graphic-p returns nil when this function is
   called during startup.  Instead...
   lisp/term/w32console.el (terminal-init-w32console): ...setup the
   keyboard and terminal encoding for TTY sessions here.
modified:
  lisp/ChangeLog
  lisp/international/mule-cmds.el
  lisp/term/w32console.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-07-29 18:11:42 +0000
+++ b/lisp/ChangeLog    2012-07-29 18:27:35 +0000
@@ -1,3 +1,12 @@
+2012-07-29  Eli Zaretskii  <address@hidden>
+
+       * international/mule-cmds.el (set-locale-environment): Revert last
+       change, since display-graphic-p returns nil when this function is
+       called during startup.  Instead...
+
+       * term/w32console.el (terminal-init-w32console): ...setup the
+       keyboard and terminal encoding for TTY sessions here.  (Bug#12082)
+
 2012-07-29  Juri Linkov  <address@hidden>
 
        * simple.el (goto-line): Don't display default line number in the

=== modified file 'lisp/international/mule-cmds.el'
--- a/lisp/international/mule-cmds.el   2012-07-29 16:29:23 +0000
+++ b/lisp/international/mule-cmds.el   2012-07-29 18:27:35 +0000
@@ -2666,32 +2666,23 @@
 
     ;; On Windows, override locale-coding-system,
     ;; default-file-name-coding-system, keyboard-coding-system,
-    ;; terminal-coding-system with the appropriate codepages.
+    ;; terminal-coding-system with system codepage.
     (when (boundp 'w32-ansi-code-page)
-      (let ((ansi-code-page-coding (intern (format "cp%d" w32-ansi-code-page)))
-           (oem-code-page-coding
-            (intern (format "cp%d" (w32-get-console-codepage))))
-           (oem-code-page-output-coding
-            (intern (format "cp%d" (w32-get-console-output-codepage))))
-           ansi-cs-p oem-cs-p oem-o-cs-p)
-       (setq ansi-cs-p (coding-system-p ansi-code-page-coding))
-       (setq oem-cs-p (coding-system-p oem-code-page-coding))
-       (setq oem-o-cs-p (coding-system-p oem-code-page-output-coding))
-       ;; Set the keyboard and display encoding to either the current
-       ;; ANSI codepage of the OEM codepage, depending on whether
-       ;; this is a GUI or a TTY frame.
-       (when ansi-cs-p
-         (unless frame (setq locale-coding-system ansi-code-page-coding))
-         (when (display-graphic-p frame)
-           (set-keyboard-coding-system ansi-code-page-coding frame)
-           (set-terminal-coding-system ansi-code-page-coding frame))
-         (setq default-file-name-coding-system ansi-code-page-coding))
-       (when oem-cs-p
-         (unless (display-graphic-p frame)
-           (set-keyboard-coding-system oem-code-page-coding frame)
-           (set-terminal-coding-system
-            (if oem-o-cs-p oem-code-page-output-coding oem-code-page-coding)
-            frame)))))
+      (let ((code-page-coding (intern (format "cp%d" w32-ansi-code-page))))
+       (when (coding-system-p code-page-coding)
+         (unless frame (setq locale-coding-system code-page-coding))
+         (set-keyboard-coding-system code-page-coding frame)
+         (set-terminal-coding-system code-page-coding frame)
+         ;; 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

=== modified file 'lisp/term/w32console.el'
--- a/lisp/term/w32console.el   2012-01-19 07:21:25 +0000
+++ b/lisp/term/w32console.el   2012-07-29 18:27:35 +0000
@@ -52,6 +52,18 @@
   "Terminal initialization function for w32 console."
   ;; Share function key initialization with w32 gui frames
   (x-setup-function-keys (selected-frame))
+  ;; Set terminal and keyboard encodings to the current OEM codepage.
+  (let ((oem-code-page-coding
+        (intern (format "cp%d" (w32-get-console-codepage))))
+       (oem-code-page-output-coding
+        (intern (format "cp%d" (w32-get-console-output-codepage))))
+       oem-cs-p oem-o-cs-p)
+       (setq oem-cs-p (coding-system-p oem-code-page-coding))
+       (setq oem-o-cs-p (coding-system-p oem-code-page-output-coding))
+       (when oem-cs-p
+         (set-keyboard-coding-system oem-code-page-coding)
+         (set-terminal-coding-system
+          (if oem-o-cs-p oem-code-page-output-coding oem-code-page-coding))))
   (let* ((colors w32-tty-standard-colors)
          (color (car colors)))
     (tty-color-clear)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]