changeset 75471:afea84ac9ef8

(tutorial--default-keys): Check M-DEL, not `M-backspace'. Don't check `backspace'. (tutorial--find-changed-keys): Look up bindings in a temp buffer in Fundamental mode.
author Richard M. Stallman <rms@gnu.org>
date Sun, 28 Jan 2007 07:08:51 +0000
parents b391b0c782f4
children ad8f4e060e53
files lisp/tutorial.el
diffstat 1 files changed, 91 insertions(+), 88 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/tutorial.el	Sun Jan 28 07:07:01 2007 +0000
+++ b/lisp/tutorial.el	Sun Jan 28 07:08:51 2007 +0000
@@ -250,10 +250,9 @@
 
              ;; * INSERTING AND DELETING
              ;; C-u 8 * to insert ********.
-             (delete-backward-char [backspace])
              (delete-backward-char "\d")
              (delete-char [?\C-d])
-             (backward-kill-word [(meta backspace)])
+             (backward-kill-word [?\M-\d])
              (kill-word [?\M-d])
              (kill-line [?\C-k])
              (kill-sentence [?\M-k])
@@ -422,90 +421,94 @@
   QUIET       is t if this changed keybinding should be handled quietly.
               This is used by `tutorial--display-changes'."
   (let (changed-keys remark)
-    (dolist (kdf default-keys)
-      ;; The variables below corresponds to those with the same names
-      ;; described in the doc string.
-      (let* ((key     (nth 1 kdf))
-             (def-fun (nth 0 kdf))
-             (def-fun-txt (format "%s" def-fun))
-             (rem-fun (command-remapping def-fun))
-             (key-fun (if (eq def-fun 'ESC-prefix)
-			  (lookup-key global-map [27])
-			(key-binding key)))
-             (where (where-is-internal (if rem-fun rem-fun def-fun))))
-        (if where
-            (progn
-              (setq where (key-description (car where)))
-              (when (and (< 10 (length where))
-                         (string= (substring where 0 (length "<menu-bar>"))
-                                  "<menu-bar>"))
-                (setq where "the menus")))
-          (setq where ""))
-        (setq remark nil)
-        (unless
-            (cond ((eq key-fun def-fun)
-                   ;; No rebinding, return t
-                   t)
-                  ((and key-fun
-			(eq key-fun (command-remapping def-fun)))
-                   ;; Just a remapping, return t
-                   t)
-                  ;; cua-mode specials:
-                  ((and cua-mode
-                        (or (and
-                             (equal key [?\C-v])
-                             (eq key-fun 'cua-paste))
-                            (and
-                             (equal key [?\C-z])
-                             (eq key-fun 'undo))))
-                   (setq remark (list "cua-mode, more info" 'cua-mode))
-                   nil)
-                  ((and cua-mode
-                        (or (and (eq def-fun 'ESC-prefix)
-				 (equal key-fun
-                                     `(keymap
-                                       (118 . cua-repeat-replace-region)))
-				 (setq def-fun-txt "\"ESC prefix\""))
-			    (and (eq def-fun 'mode-specific-command-prefix)
-				 (equal key-fun
-					'(keymap
-					  (timeout . copy-region-as-kill)))
-				 (setq def-fun-txt "\"C-c prefix\""))
-			    (and (eq def-fun 'Control-X-prefix)
-				 (equal key-fun
-					'(keymap (timeout . kill-region)))
-				 (setq def-fun-txt "\"C-x prefix\""))))
-                   (setq remark (list "cua-mode replacement" 'cua-mode))
-                   (setq where "Same key")
-                   nil)
-                  ;; viper-mode specials:
-                  ((and (boundp 'viper-mode-string)
-			(boundp 'viper-current-state)
-                        (eq viper-current-state 'vi-state)
-                        (or (and (eq def-fun 'isearch-forward)
-                                 (eq key-fun 'viper-isearch-forward))
-                            (and (eq def-fun 'isearch-backward)
-                                 (eq key-fun 'viper-isearch-backward))))
-                   ;; These bindings works as the default bindings,
-                   ;; return t
-                   t)
-                  ((when normal-erase-is-backspace
-                     (or (and (equal key [C-delete])
-                              (equal key-fun 'kill-word))
-                         (and (equal key [C-backspace])
-                              (equal key-fun 'backward-kill-word))))
-                   ;; This is the strange handling of C-delete and
-                   ;; C-backspace, return t
-                   t)
-                  (t
-                   ;; This key has indeed been rebound. Put information
-                   ;; in `remark' and return nil
-                   (setq remark
-                         (list "more info" 'current-binding
-                               key-fun def-fun key where))
-                   nil))
-          (add-to-list 'changed-keys
-                       (list key def-fun def-fun-txt where remark nil)))))
+    ;; Look up the bindings in a Fundamental mode buffer
+    ;; so we do not get fooled by some other major mode.
+    (with-temp-buffer
+      (fundamental-mode)
+      (dolist (kdf default-keys)
+	;; The variables below corresponds to those with the same names
+	;; described in the doc string.
+	(let* ((key     (nth 1 kdf))
+	       (def-fun (nth 0 kdf))
+	       (def-fun-txt (format "%s" def-fun))
+	       (rem-fun (command-remapping def-fun))
+	       (key-fun (if (eq def-fun 'ESC-prefix)
+			    (lookup-key global-map [27])
+			  (key-binding key)))
+	       (where (where-is-internal (if rem-fun rem-fun def-fun))))
+	  (if where
+	      (progn
+		(setq where (key-description (car where)))
+		(when (and (< 10 (length where))
+			   (string= (substring where 0 (length "<menu-bar>"))
+				    "<menu-bar>"))
+		  (setq where "the menus")))
+	    (setq where ""))
+	  (setq remark nil)
+	  (unless
+	      (cond ((eq key-fun def-fun)
+		     ;; No rebinding, return t
+		     t)
+		    ((and key-fun
+			  (eq key-fun (command-remapping def-fun)))
+		     ;; Just a remapping, return t
+		     t)
+		    ;; cua-mode specials:
+		    ((and cua-mode
+			  (or (and
+			       (equal key [?\C-v])
+			       (eq key-fun 'cua-paste))
+			      (and
+			       (equal key [?\C-z])
+			       (eq key-fun 'undo))))
+		     (setq remark (list "cua-mode, more info" 'cua-mode))
+		     nil)
+		    ((and cua-mode
+			  (or (and (eq def-fun 'ESC-prefix)
+				   (equal key-fun
+					  `(keymap
+					    (118 . cua-repeat-replace-region)))
+				   (setq def-fun-txt "\"ESC prefix\""))
+			      (and (eq def-fun 'mode-specific-command-prefix)
+				   (equal key-fun
+					  '(keymap
+					    (timeout . copy-region-as-kill)))
+				   (setq def-fun-txt "\"C-c prefix\""))
+			      (and (eq def-fun 'Control-X-prefix)
+				   (equal key-fun
+					  '(keymap (timeout . kill-region)))
+				   (setq def-fun-txt "\"C-x prefix\""))))
+		     (setq remark (list "cua-mode replacement" 'cua-mode))
+		     (setq where "Same key")
+		     nil)
+		    ;; viper-mode specials:
+		    ((and (boundp 'viper-mode-string)
+			  (boundp 'viper-current-state)
+			  (eq viper-current-state 'vi-state)
+			  (or (and (eq def-fun 'isearch-forward)
+				   (eq key-fun 'viper-isearch-forward))
+			      (and (eq def-fun 'isearch-backward)
+				   (eq key-fun 'viper-isearch-backward))))
+		     ;; These bindings works as the default bindings,
+		     ;; return t
+		     t)
+		    ((when normal-erase-is-backspace
+		       (or (and (equal key [C-delete])
+				(equal key-fun 'kill-word))
+			   (and (equal key [C-backspace])
+				(equal key-fun 'backward-kill-word))))
+		     ;; This is the strange handling of C-delete and
+		     ;; C-backspace, return t
+		     t)
+		    (t
+		     ;; This key has indeed been rebound. Put information
+		     ;; in `remark' and return nil
+		     (setq remark
+			   (list "more info" 'current-binding
+				 key-fun def-fun key where))
+		     nil))
+	    (add-to-list 'changed-keys
+			 (list key def-fun def-fun-txt where remark nil))))))
     changed-keys))
 
 (defun tutorial--key-description (key)
@@ -621,7 +624,7 @@
       (setq file-name (concat file-name ".tut")))
     (expand-file-name file-name (tutorial--saved-dir))))
 
-(defun tutorial--remove-remarks()
+(defun tutorial--remove-remarks ()
   "Remove the remark lines that was added to the tutorial buffer."
   (save-excursion
     (goto-char (point-min))
@@ -908,7 +911,7 @@
 
 See `get-lang-string' for more information.")
 
-(defun get-lang-string(lang stringid &optional no-eng-fallback)
+(defun get-lang-string (lang stringid &optional no-eng-fallback)
   "Get a language specific string for Emacs.
 In certain places Emacs can replace a string showed to the user with a language specific string.
 This function retrieves such strings.