]> git.eshelyaron.com Git - emacs.git/commitdiff
(tpu-edt-old-global-values): New var.
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 22 Oct 2007 04:42:10 +0000 (04:42 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 22 Oct 2007 04:42:10 +0000 (04:42 +0000)
(tpu-edt-off): Use it.
(tpu-edt-on): Set it.  Make sure the tpu-global-map is not already on
the global-map before adding it to global-map.

lisp/ChangeLog
lisp/emulation/tpu-edt.el

index b401e6a8c9a1653b684934c1734e4e41aa46de2b..15d2eed13b6f9ce4b64d3148659a4a8b99fbd6fa 100644 (file)
@@ -1,5 +1,10 @@
 2007-10-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * emulation/tpu-edt.el (tpu-edt-old-global-values): New var.
+       (tpu-edt-off): Use it.
+       (tpu-edt-on): Set it.  Make sure the tpu-global-map is not already on
+       the global-map before adding it to global-map.
+
        * menu-bar.el (global-buffers-menu-map): New var.
        (global-map, menu-bar-update-buffers): Use it.
        * msb.el (msb-menu-bar-update-buffers): Use it.
index 9220090df253a4fac4a7a98b5100add5c7936851..1379bc43a558aee845b9a5264cda96e8a5f5c049 100644 (file)
 
 ;;; Code:
 
+(eval-when-compile (require 'cl))
 ;; we use picture-mode functions
 (require 'picture)
 
@@ -2435,6 +2436,7 @@ If FILE is nil, try to load a default file.  The default file names are
           (tpu-error (message "Sorry, couldn't copy - %s." (cdr conditions)))))
     (kill-buffer "*TPU-Notice*")))
 
+(defvar tpu-edt-old-global-values nil)
 
 ;;;
 ;;;  Start and Stop TPU-edt
@@ -2443,6 +2445,8 @@ If FILE is nil, try to load a default file.  The default file names are
 (defun tpu-edt-on ()
   "Turn on TPU/edt emulation."
   (interactive)
+  ;; To clean things up (and avoid cycles in the global map).
+  (tpu-edt-off)
   ;; First, activate tpu-global-map, while protecting the original keymap.
   (set-keymap-parent tpu-global-map global-map)
   (setq global-map tpu-global-map)
@@ -2453,9 +2457,12 @@ If FILE is nil, try to load a default file.  The default file names are
   (tpu-set-mode-line t)
   (tpu-advance-direction)
   ;; set page delimiter, display line truncation, and scrolling like TPU
-  (setq-default page-delimiter "\f")
-  (setq-default truncate-lines t)
-  (setq scroll-step 1)
+  (dolist (varval '((page-delimiter . "\f")
+                    (truncate-lines . t)
+                    (scroll-step . 1)))
+    (push (cons (car varval) (default-value (car varval)))
+          tpu-edt-old-global-values)
+    (set-default (car varval) (cdr varval)))
   (tpu-set-control-keys)
   (and window-system (tpu-load-xkeys nil))
   (tpu-arrow-history)
@@ -2472,9 +2479,9 @@ If FILE is nil, try to load a default file.  The default file names are
   (tpu-reset-control-keys nil)
   (remove-hook 'post-command-hook 'tpu-search-highlight)
   (tpu-set-mode-line nil)
-  (setq-default page-delimiter "^\f")
-  (setq-default truncate-lines nil)
-  (setq scroll-step 0)
+  (while tpu-edt-old-global-values
+    (let ((varval (pop tpu-edt-old-global-values)))
+      (set-default (car varval) (cdr varval))))
   ;; Remove tpu-global-map from the global map.
   (let ((map global-map))
     (while map
@@ -2482,7 +2489,7 @@ If FILE is nil, try to load a default file.  The default file names are
         (if (eq tpu-global-map parent)
             (set-keymap-parent map (keymap-parent parent))
           (setq map parent)))))
-  (ad-disable-regexp "\\`tpu-")
+  (ignore-errors (ad-disable-regexp "\\`tpu-"))
   (setq tpu-edt-mode nil))
 
 (provide 'tpu-edt)