[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/international/mule-cmds.el,v
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/international/mule-cmds.el,v |
Date: |
Wed, 29 Aug 2007 05:28:37 +0000 |
CVSROOT: /cvsroot/emacs
Module name: emacs
Changes by: Miles Bader <miles> 07/08/29 05:28:10
Index: lisp/international/mule-cmds.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/international/mule-cmds.el,v
retrieving revision 1.313
retrieving revision 1.314
diff -u -b -r1.313 -r1.314
--- lisp/international/mule-cmds.el 13 Aug 2007 13:40:57 -0000 1.313
+++ lisp/international/mule-cmds.el 29 Aug 2007 05:28:01 -0000 1.314
@@ -148,7 +148,7 @@
t)
(define-key-after set-coding-system-map [set-terminal-coding-system]
'(menu-item "For Terminal" set-terminal-coding-system
- :enable (null (memq window-system '(x w32 mac)))
+ :enable (null (memq initial-window-system '(x w32 mac)))
:help "How to encode terminal output")
t)
(define-key-after set-coding-system-map [separator-3]
@@ -1830,7 +1830,7 @@
(reset-language-environment)
-(defun set-display-table-and-terminal-coding-system (language-name &optional
coding-system)
+(defun set-display-table-and-terminal-coding-system (language-name &optional
coding-system display)
"Set up the display table and terminal coding system for LANGUAGE-NAME."
(let ((coding (get-language-info language-name 'unibyte-display)))
(if (and coding
@@ -1846,7 +1846,7 @@
(dotimes (i 128)
(aset standard-display-table (+ i 128) nil))))
(or (eq window-system 'pc)
- (set-terminal-coding-system (or coding-system coding)))))
+ (set-terminal-coding-system (or coding-system coding) display))))
(defun set-language-environment (language-name)
"Set up multi-lingual environment for using LANGUAGE-NAME.
@@ -2454,7 +2454,7 @@
;; too, for setting things such as calendar holidays, ps-print paper
;; size, spelling dictionary.
-(defun set-locale-environment (&optional locale-name)
+(defun set-locale-environment (&optional locale-name frame)
"Set up multi-lingual environment for using LOCALE-NAME.
This sets the language environment, the coding system priority,
the default input method and sometimes other things.
@@ -2475,6 +2475,10 @@
will be translated according to the table specified by
`locale-translation-file-name'.
+If FRAME is non-nil, only set the keyboard coding system and the
+terminal coding system for the terminal of that frame, and don't
+touch session-global parameters like the language environment.
+
See also `locale-charset-language-names', `locale-language-names',
`locale-preferred-coding-systems' and `locale-coding-system'."
(interactive "sSet environment for locale: ")
@@ -2504,7 +2508,7 @@
(let ((vars '("LC_ALL" "LC_CTYPE" "LANG")))
(while (and vars
(= 0 (length locale))) ; nil or empty string
- (setq locale (getenv (pop vars))))))
+ (setq locale (getenv (pop vars) frame)))))
(unless locale
;; The two tests are kept separate so the byte-compiler sees
@@ -2578,28 +2582,34 @@
;; 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)
+ (unless frame
+ (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 coding-system))
+ language-name coding-system frame))
;; Set the `keyboard-coding-system' if appropriate (tty
;; only). At least X and MS Windows can generate
;; multilingual input.
- (unless window-system
+ ;; XXX This was disabled unless `window-system', but that
+ ;; leads to buggy behaviour when a tty frame is opened
+ ;; later. Setting the keyboard coding system has no adverse
+ ;; effect on X, so let's do it anyway. -- Lorentey
(let ((kcs (or coding-system
(car (get-language-info language-name
'coding-system)))))
- (if kcs (set-keyboard-coding-system kcs))))
+ (if kcs (set-keyboard-coding-system kcs frame)))
+ (unless frame
(setq locale-coding-system
- (car (get-language-info language-name 'coding-priority))))
+ (car (get-language-info language-name 'coding-priority)))))
- (when (and coding-system
+ (when (and (not frame)
+ coding-system
(not (coding-system-equal coding-system
locale-coding-system)))
(prefer-coding-system coding-system)
@@ -2614,9 +2624,9 @@
(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-keyboard-coding-system code-page-coding)
- (set-terminal-coding-system 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))))
(when (eq system-type 'darwin)
;; On Darwin, file names are always encoded in utf-8, no matter
@@ -2625,12 +2635,13 @@
;; Mac OS X's Terminal.app by default uses utf-8 regardless of
;; the locale.
(when (and (null window-system)
- (equal (getenv "TERM_PROGRAM") "Apple_Terminal"))
+ (equal (getenv "TERM_PROGRAM" frame) "Apple_Terminal"))
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)))
;; Default to A4 paper if we're not in a C, POSIX or US locale.
;; (See comments in Flocale_info.)
+ (unless frame
(let ((locale locale)
(paper (locale-info 'paper)))
(if paper
@@ -2642,7 +2653,7 @@
(setq ps-paper-type 'a4)))
(let ((vars '("LC_ALL" "LC_PAPER" "LANG")))
(while (and vars (= 0 (length locale)))
- (setq locale (getenv (pop vars)))))
+ (setq locale (getenv (pop vars) frame))))
(when locale
;; As of glibc 2.2.5, these are the only US Letter locales,
;; and the rest are A4.
@@ -2656,7 +2667,7 @@
("esu$" . letter)
("enc$" . letter)
("frc$" . letter)))
- 'a4))))))
+ 'a4)))))))
nil)
;;; Charset property