emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/international/encoded-kb.el,v


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/international/encoded-kb.el,v
Date: Wed, 29 Aug 2007 05:28:38 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Miles Bader <miles>     07/08/29 05:28:10

Index: lisp/international/encoded-kb.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/international/encoded-kb.el,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -b -r1.39 -r1.40
--- lisp/international/encoded-kb.el    26 Jul 2007 05:27:07 -0000      1.39
+++ lisp/international/encoded-kb.el    29 Aug 2007 05:28:01 -0000      1.40
@@ -175,7 +175,7 @@
       (setq str (format "%s%c" str (read-char-exclusive))))
     (vector (aref result 0))))
 
-(defun encoded-kbd-setup-keymap (coding)
+(defun encoded-kbd-setup-keymap (keymap coding)
   ;; At first, reset the keymap.
   (define-key encoded-kbd-mode-map "\e" nil)
   ;; Then setup the keymap according to the keyboard coding system.
@@ -183,7 +183,7 @@
    ((eq (coding-system-type coding) 1) ; SJIS
     (let ((i 128))
       (while (< i 256)
-       (define-key key-translation-map
+       (define-key keymap
          (vector i) 'encoded-kbd-self-insert-sjis)
        (setq i (1+ i))))
     8)
@@ -191,7 +191,7 @@
    ((eq (coding-system-type coding) 3) ; Big5
     (let ((i 161))
       (while (< i 255)
-       (define-key key-translation-map
+       (define-key keymap
          (vector i) 'encoded-kbd-self-insert-big5)
        (setq i (1+ i))))
     8)
@@ -217,20 +217,20 @@
            (aset encoded-kbd-iso2022-invocations 1 1))
        (when use-designation
          (define-key encoded-kbd-mode-map "\e" 'encoded-kbd-iso2022-esc-prefix)
-         (define-key key-translation-map "\e" 'encoded-kbd-iso2022-esc-prefix))
+         (define-key keymap "\e" 'encoded-kbd-iso2022-esc-prefix))
        (when (or (aref flags 2) (aref flags 3))
-         (define-key key-translation-map
+         (define-key keymap
            [?\216] 'encoded-kbd-iso2022-single-shift)
-         (define-key key-translation-map
+         (define-key keymap
            [?\217] 'encoded-kbd-iso2022-single-shift))
        (or (eq (aref flags 0) 'ascii)
            (dotimes (i 96)
-             (define-key key-translation-map
+             (define-key keymap
                (vector (+ 32 i)) 'encoded-kbd-self-insert-iso2022-7bit)))
        (if (aref flags 7)
            t
          (dotimes (i 96)
-           (define-key key-translation-map
+           (define-key keymap
              (vector (+ 160 i)) 'encoded-kbd-self-insert-iso2022-8bit))
          8))))
 
@@ -245,7 +245,7 @@
          (setq from (setq to elt)))
        (while (<= from to)
          (if (>= from 128)
-             (define-key key-translation-map
+             (define-key keymap
                (vector from) 'encoded-kbd-self-insert-ccl))
          (setq from (1+ from))))
       8))
@@ -253,59 +253,47 @@
    (t
     nil)))
 
-;; key-translation-map at the time Encoded-kbd mode is turned on is
-;; saved here.
-(defvar saved-key-translation-map nil)
-
-;; Input mode at the time Encoded-kbd mode is turned on is saved here.
-(defvar saved-input-mode nil)
-
-(put 'encoded-kbd-mode 'permanent-local t)
 ;;;###autoload
-(define-minor-mode encoded-kbd-mode
-  "Toggle Encoded-kbd minor mode.
-With arg, turn Encoded-kbd mode on if and only if arg is positive.
-
-You should not turn this mode on manually, instead use the command
-\\[set-keyboard-coding-system] which turns on or off this mode
-automatically.
-
-In Encoded-kbd mode, a text sent from keyboard is accepted
-as a multilingual text encoded in a coding system set by
-\\[set-keyboard-coding-system]."
-  :global t :group 'keyboard :group 'mule
+(defun encoded-kbd-setup-display (display)
+  "Set up a `key-translation-map' for `keyboard-coding-system' on DISPLAY.
 
-  (if encoded-kbd-mode
+DISPLAY may be a display id, a frame, or nil for the selected frame's display."
+  (let ((frame (if (framep display) display (car (frames-on-display-list 
display)))))
+    (when frame
+      (with-selected-frame frame
+       ;; Remove any previous encoded-kb keymap from key-translation-map.
+       (let ((m local-key-translation-map))
+         (if (equal (keymap-prompt m) "encoded-kb")
+             (setq local-key-translation-map (keymap-parent m))
+           (while (keymap-parent m)
+             (if (equal (keymap-prompt (keymap-parent m)) "encoded-kb")
+                 (set-keymap-parent m (keymap-parent (keymap-parent m))))
+             (setq m (keymap-parent m)))))
+
+       (if (keyboard-coding-system)
       ;; We are turning on Encoded-kbd mode.
       (let ((coding (keyboard-coding-system))
+                 (keymap (make-sparse-keymap "encoded-kb"))
+                 (cim (current-input-mode))
            result)
-       (or saved-key-translation-map
-           (if (keymapp key-translation-map)
-               (setq saved-key-translation-map
-                     (copy-keymap key-translation-map))
-             (setq key-translation-map (make-sparse-keymap))))
-       (or saved-input-mode
-           (setq saved-input-mode
-                 (current-input-mode)))
-       (setq result (and coding (encoded-kbd-setup-keymap coding)))
+             (set-keymap-parent keymap local-key-translation-map)
+             (setq local-key-translation-map keymap)
+             (unless (terminal-parameter nil 
'encoded-kbd-saved-input-meta-mode)
+               (set-terminal-parameter nil 'encoded-kbd-saved-input-mode (nth 
2 cim)))
+             (setq result (and coding (encoded-kbd-setup-keymap keymap 
coding)))
        (if result
-           (if (eq result 8)
-               (set-input-mode
-                (nth 0 saved-input-mode) 
-                (nth 1 saved-input-mode)
-                'use-8th-bit
-                (nth 3 saved-input-mode)))
-         (setq encoded-kbd-mode nil
-               saved-key-translation-map nil
-               saved-input-mode nil)
+                 (when (and (eq result 8)
+                            (memq (nth 2 cim) '(t nil)))
+                   (set-input-meta-mode 'use-8th-bit))
+               (set-terminal-parameter nil 'encoded-kbd-saved-input-meta-mode 
nil)
          (error "Unsupported coding system in Encoded-kbd mode: %S"
                 coding)))
-
     ;; We are turning off Encoded-kbd mode.
-    (setq key-translation-map saved-key-translation-map
-         saved-key-translation-map nil)
-    (apply 'set-input-mode saved-input-mode)
-    (setq saved-input-mode nil)))
+         (when (and (terminal-parameter nil 'encoded-kbd-saved-input-meta-mode)
+                    (not (equal (nth 2 (current-input-mode))
+                                (terminal-parameter nil 
'encoded-kbd-saved-input-meta-mode))))
+           (set-input-meta-mode (terminal-parameter nil 
'encoded-kbd-saved-input-meta-mode)))
+         (set-terminal-parameter nil 'saved-input-meta-mode nil))))))
 
 (provide 'encoded-kb)
 




reply via email to

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