emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/term/tvi970.el,v


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/lisp/term/tvi970.el,v
Date: Mon, 22 Oct 2007 15:20:35 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Stefan Monnier <monnier>        07/10/22 15:20:35

Index: tvi970.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/term/tvi970.el,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- tvi970.el   23 Sep 2007 00:38:44 -0000      1.20
+++ tvi970.el   22 Oct 2007 15:20:35 -0000      1.21
@@ -29,25 +29,18 @@
 
 ;;; Code:
 
-(defun terminal-init-tvi970 ()
-  "Terminal initialization function for tvi970."
-  (or (lookup-key local-function-key-map "\e[")
-      (define-key local-function-key-map "\e[" (make-keymap)))
-  ;; (or (lookup-key local-function-key-map "\eO")
-  ;;    (define-key local-function-key-map "\eO" (make-keymap)))
+(defvar tvi970-terminal-map
+  (let ((map (make-sparse-keymap)))
 
   ;; Miscellaneous keys
-  (mapc (function (lambda (key-binding)
-                     (define-key local-function-key-map
-                       (car key-binding) (nth 1 key-binding))))
-         '(
-           ;; These are set up by termcap or terminfo
+    (dolist (key-binding
+             '(;; These are set up by termcap or terminfo
            ;; ("\eOP"  [kp-f1])
            ;; ("\eOQ"  [kp-f2])
            ;; ("\eOR"  [kp-f3])
            ;; ("\eOS"  [kp-f4])
 
-           ;; These might br set by terminfo
+               ;; These might bre set by terminfo.
            ("\e[H"     [home])
            ("\e[Z"     [backtab])
            ("\e[i"     [print])
@@ -83,33 +76,33 @@
            ("\eS"      [send])         ;; Not an X keysym
            ("\e5"      [S-send])       ;; Not an X keysym
            ))
+      (define-key map (car key-binding) (nth 1 key-binding)))
+             
 
   ;; The numeric keypad keys.
-  (let ((i 0))
-    (while (< i 10)
-      (define-key local-function-key-map
-       (format "\eO%c" (+ i ?p))
-       (vector (intern (format "kp-%d" i))))
-      (setq i (1+ i))))
+    (dotimes (i 10)
+      (define-key map (format "\eO%c" (+ i ?p))
+        (vector (intern (format "kp-%d" i)))))
   ;; The numbered function keys.
-  (let ((i 0))
-    (while (< i 16)
-      (define-key local-function-key-map
-       (format "\e?%c" (+ i ?a))
+    (dotimes (i 16)
+      (define-key map (format "\e?%c" (+ i ?a))
        (vector (intern (format "f%d" (1+ i)))))
-      (define-key local-function-key-map
-       (format "\e?%c" (+ i ?A))
-       (vector (intern (format "S-f%d" (1+ i)))))
-      (setq i (1+ i))))
+      (define-key map (format "\e?%c" (+ i ?A))
+        (vector (intern (format "S-f%d" (1+ i))))))
+    map))
 
+(defun terminal-init-tvi970 ()
+  "Terminal initialization function for tvi970."
+  ;; Use inheritance to let the main keymap override these defaults.
+  ;; This way we don't override terminfo-derived settings or settings
+  ;; made in the .emacs file.
+  (let ((m (copy-keymap tvi970-terminal-map)))
+    (set-keymap-parent m (keymap-parent input-decode-map))
+    (set-keymap-parent input-decode-map m))
   (tvi970-set-keypad-mode 1))
 
 
-;;; Should keypad numbers send ordinary digits or distinct escape sequences?
-(defvar tvi970-keypad-numeric nil
-  "Non-nil means the terminal should be in numeric keypad mode.
-Do not set this variable!  Call the function `tvi970-set-keypad-mode'.")
-
+;; Should keypad numbers send ordinary digits or distinct escape sequences?
 (defun tvi970-set-keypad-mode (&optional arg)
   "Set the current mode of the TVI 970 numeric keypad.
 In ``numeric keypad mode'', the number keys on the keypad act as
@@ -120,11 +113,11 @@
 With a positive argument, select alternate keypad mode.
 With a negative argument, select numeric keypad mode."
   (interactive "P")
-  (setq tvi970-keypad-numeric
-       (if (null arg)
-           (not tvi970-keypad-numeric)
-         (> (prefix-numeric-value arg) 0)))
-  (send-string-to-terminal (if tvi970-keypad-numeric "\e=" "\e>")))
+  (let ((newval (if (null arg)
+                    (not (terminal-parameter nil 'tvi970-keypad-numeric))
+                  (> (prefix-numeric-value arg) 0))))
+    (set-terminal-parameter nil 'tvi970-keypad-numeric newval)
+    (send-string-to-terminal (if newval "\e=" "\e>"))))
 
-;;; arch-tag: c1334cf0-1462-41c3-a963-c077d175f8f0
+;; arch-tag: c1334cf0-1462-41c3-a963-c077d175f8f0
 ;;; tvi970.el ends here




reply via email to

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