summaryrefslogtreecommitdiff
path: root/app-editors/emacs/files/emacs-23.1-backspace.patch
diff options
context:
space:
mode:
Diffstat (limited to 'app-editors/emacs/files/emacs-23.1-backspace.patch')
-rw-r--r--app-editors/emacs/files/emacs-23.1-backspace.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/app-editors/emacs/files/emacs-23.1-backspace.patch b/app-editors/emacs/files/emacs-23.1-backspace.patch
new file mode 100644
index 0000000..bc547af
--- /dev/null
+++ b/app-editors/emacs/files/emacs-23.1-backspace.patch
@@ -0,0 +1,54 @@
+2009-10-22 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * simple.el (normal-erase-is-backspace-mode): Use input-decode-map
+ rather than fiddling with global-map bindings, since it should only
+ affect per-terminal settings.
+ See http://bugs.gentoo.org/show_bug.cgi?id=289709.
+
+--- emacs-23.1-orig/lisp/simple.el
++++ emacs-23.1/lisp/simple.el
+@@ -6269,31 +6269,27 @@
+ (let* ((bindings
+ `(([M-delete] [M-backspace])
+ ([C-M-delete] [C-M-backspace])
+- (,esc-map
+- [C-delete] [C-backspace])))
++ ([?\e C-delete] [?\e 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 [backspace] [?\C-?])
++ (dolist (b bindings)
++ ;; Not sure if input-decode-map is really right, but
++ ;; keyboard-translate-table (used below) only works
++ ;; for integer events, and key-translation-table is
++ ;; global (like the global-map, used earlier).
++ (define-key input-decode-map (car b) nil)
++ (define-key input-decode-map (cadr b) nil)))
+ (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)))))))
++ (define-key local-function-key-map [backspace] [?\C-?])
++ (dolist (b bindings)
++ (define-key input-decode-map (car b) (cadr b))
++ (define-key input-decode-map (cadr b) (car b))))))
+ (t
+ (if enabled
+ (progn