summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaroly Lorentey <lorentey@elte.hu>2006-01-03 01:22:02 +0000
committerKaroly Lorentey <lorentey@elte.hu>2006-01-03 01:22:02 +0000
commit0103b7c9f971e43ea4420a3f41704d85ad8f06ee (patch)
tree220e134baea3705ed3a23458229ac10997779123
parentd5381da22a073d7b430460ff0d2935066683ac09 (diff)
downloademacs-0103b7c9f971e43ea4420a3f41704d85ad8f06ee.tar.gz
emacs-0103b7c9f971e43ea4420a3f41704d85ad8f06ee.tar.bz2
emacs-0103b7c9f971e43ea4420a3f41704d85ad8f06ee.zip
Fix Delete keys under X (for good, this time).
* lisp/simple.el (normal-erase-is-backspace-mode): Fix enabled/disabled logic. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-488
-rw-r--r--lisp/simple.el100
1 files changed, 50 insertions, 50 deletions
diff --git a/lisp/simple.el b/lisp/simple.el
index c55c7596624..77345333137 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -5369,57 +5369,57 @@ have both Backspace, Delete and F1 keys.
See also `normal-erase-is-backspace'."
(interactive "P")
- (set-terminal-parameter
- nil 'normal-erase-is-backspace
- (if (or (and arg (> (prefix-numeric-value arg) 0))
- (not (eq 1 (terminal-parameter nil 'normal-erase-is-backspace))))
- 0
- 1))
-
- (cond ((or (memq window-system '(x w32 mac pc))
- (memq system-type '(ms-dos windows-nt)))
- (let* ((bindings
- `(([C-delete] [C-backspace])
- ([M-delete] [M-backspace])
- ([C-M-delete] [C-M-backspace])
- (,esc-map
- [C-delete] [C-backspace])))
- (old-state (lookup-key local-function-key-map [delete])))
-
- (if (eq 1 (terminal-parameter nil 'normal-erase-is-backspace))
+ (let ((enabled (or (and arg (> (prefix-numeric-value arg) 0))
+ (and (not arg)
+ (not (eq 1 (terminal-parameter
+ nil 'normal-erase-is-backspace)))))))
+ (set-terminal-parameter nil 'normal-erase-is-backspace
+ (if enabled 1 0))
+
+ (cond ((or (memq window-system '(x w32 mac pc))
+ (memq system-type '(ms-dos windows-nt)))
+ (let* ((bindings
+ `(([C-delete] [C-backspace])
+ ([M-delete] [M-backspace])
+ ([C-M-delete] [C-M-backspace])
+ (,esc-map
+ [C-delete] [C-backspace])))
+ (old-state (lookup-key local-function-key-map [delete])))
+
+ (if enabled
+ (progn
+ (define-key local-function-key-map [delete] [?\C-d])
+ (define-key local-function-key-map [kp-delete] [?\C-d])
+ (define-key local-function-key-map [backspace] [?\C-?]))
+ (define-key local-function-key-map [delete] [?\C-?])
+ (define-key local-function-key-map [kp-delete] [?\C-?])
+ (define-key local-function-key-map [backspace] [?\C-?]))
+
+ ;; Maybe swap bindings of C-delete and C-backspace, etc.
+ (unless (equal old-state (lookup-key local-function-key-map [delete]))
+ (dolist (binding bindings)
+ (let ((map global-map))
+ (when (keymapp (car binding))
+ (setq map (car binding) binding (cdr binding)))
+ (let* ((key1 (nth 0 binding))
+ (key2 (nth 1 binding))
+ (binding1 (lookup-key map key1))
+ (binding2 (lookup-key map key2)))
+ (define-key map key1 binding2)
+ (define-key map key2 binding1)))))))
+ (t
+ (if enabled
(progn
- (define-key local-function-key-map [delete] [?\C-d])
- (define-key local-function-key-map [kp-delete] [?\C-d])
- (define-key local-function-key-map [backspace] [?\C-?]))
- (define-key local-function-key-map [delete] [?\C-?])
- (define-key local-function-key-map [kp-delete] [?\C-?])
- (define-key local-function-key-map [backspace] [?\C-?]))
-
- ;; Maybe swap bindings of C-delete and C-backspace, etc.
- (unless (equal old-state (lookup-key local-function-key-map [delete]))
- (dolist (binding bindings)
- (let ((map global-map))
- (when (keymapp (car binding))
- (setq map (car binding) binding (cdr binding)))
- (let* ((key1 (nth 0 binding))
- (key2 (nth 1 binding))
- (binding1 (lookup-key map key1))
- (binding2 (lookup-key map key2)))
- (define-key map key1 binding2)
- (define-key map key2 binding1)))))))
- (t
- (if (eq 1 (terminal-parameter nil 'normal-erase-is-backspace))
- (progn
- (keyboard-translate ?\C-h ?\C-?)
- (keyboard-translate ?\C-? ?\C-d))
- (keyboard-translate ?\C-h ?\C-h)
- (keyboard-translate ?\C-? ?\C-?))))
-
- (run-hooks 'normal-erase-is-backspace-hook)
- (if (interactive-p)
- (message "Delete key deletes %s"
- (if (terminal-parameter nil 'normal-erase-is-backspace)
- "forward" "backward"))))
+ (keyboard-translate ?\C-h ?\C-?)
+ (keyboard-translate ?\C-? ?\C-d))
+ (keyboard-translate ?\C-h ?\C-h)
+ (keyboard-translate ?\C-? ?\C-?))))
+
+ (run-hooks 'normal-erase-is-backspace-hook)
+ (if (interactive-p)
+ (message "Delete key deletes %s"
+ (if (terminal-parameter nil 'normal-erase-is-backspace)
+ "forward" "backward")))))
(defvar vis-mode-saved-buffer-invisibility-spec nil
"Saved value of `buffer-invisibility-spec' when Visible mode is on.")