summaryrefslogtreecommitdiff
path: root/lisp/emulation/tpu-edt.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2007-10-22 04:42:10 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2007-10-22 04:42:10 +0000
commitfaeb497761a1aa21ff6a382b12344a77884c18db (patch)
treef87d27fed4a7d6400d2725594070cbf8a89896a6 /lisp/emulation/tpu-edt.el
parent7ccc8f7050dc4e56eca827bc79b263b01090edf2 (diff)
downloademacs-faeb497761a1aa21ff6a382b12344a77884c18db.tar.gz
(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.
Diffstat (limited to 'lisp/emulation/tpu-edt.el')
-rw-r--r--lisp/emulation/tpu-edt.el21
1 files changed, 14 insertions, 7 deletions
diff --git a/lisp/emulation/tpu-edt.el b/lisp/emulation/tpu-edt.el
index 9220090df25..1379bc43a55 100644
--- a/lisp/emulation/tpu-edt.el
+++ b/lisp/emulation/tpu-edt.el
@@ -273,6 +273,7 @@
;;; 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)