emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/tutorial.el,v


From: Chong Yidong
Subject: [Emacs-diffs] Changes to emacs/lisp/tutorial.el,v
Date: Fri, 22 Dec 2006 15:17:25 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Chong Yidong <cyd>      06/12/22 15:17:24

Index: tutorial.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/tutorial.el,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- tutorial.el 21 Dec 2006 17:26:00 -0000      1.7
+++ tutorial.el 22 Dec 2006 15:17:24 -0000      1.8
@@ -336,7 +336,7 @@
         (when changed-keys
           (insert
            "The following key bindings used in the tutorial had been changed
-from Emacs default in the " (buffer-name tutorial-buffer) " buffer:\n\n" )
+from the Emacs default in the " (buffer-name tutorial-buffer) " buffer:\n\n" )
           (let ((frm "   %-9s %-27s %-11s %s\n"))
             (insert (format frm "Key" "Standard Binding" "Is Now On" 
"Remark")))
           (dolist (tk changed-keys)
@@ -391,28 +391,17 @@
 
         (insert "
 It is OK to change key bindings, but changed bindings do not
-correspond to what the tutorial says.  (See also ")
-        (insert-button "Key Binding Conventions"
-                       'action
-                       (lambda(button) (interactive)
-                         (info
-                          "(elisp) Key Binding Conventions")
-                         (message "Type C-x 0 to close the new window"))
-                       'follow-link t)
-        (insert ".)\n\n")
+correspond to what the tutorial says.\n\n")
         (print-help-return-message)))))
 
 (defun tutorial--find-changed-keys (default-keys)
-  "Find the key bindings that have changed.
-Check if the default Emacs key bindings that the tutorial depends
-on have been changed.
+  "Find the key bindings used in the tutorial that have changed.
+Return a list with elements of the form
 
-Return a list with the keys that have been changed.  The element
-of this list have the following format:
+  '(KEY DEF-FUN DEF-FUN-TXT WHERE REMARK QUIET)
 
-  \(list KEY DEF-FUN DEF-FUN-TXT WHERE REMARK)
+where
 
-Where
   KEY         is a key sequence whose standard binding has been changed
   DEF-FUN     is the standard binding of KEY
   DEF-FUN-TXT is a short descriptive text for DEF-FUN
@@ -429,7 +418,9 @@
               rest of the list is used to show information when
               the user clicks the link.
 
-              KEY-FUN is the actual binding for KEY."
+              KEY-FUN is the actual binding for KEY.
+  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
@@ -469,26 +460,21 @@
                    (setq remark (list "cua-mode, more info" 'cua-mode))
                    nil)
                   ((and cua-mode
-                        (or
-                         (and (eq def-fun 'ESC-prefix)
+                        (or (and (eq def-fun 'ESC-prefix)
                               (equal key-fun
                                      `(keymap
-                                       (118 . cua-repeat-replace-region))))
+                                       (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))))
+                                         (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))))))
+                                       '(keymap (timeout . kill-region)))
+                                (setq def-fun-txt "\"C-x prefix\""))))
                    (setq remark (list "cua-mode replacement" 'cua-mode))
-                   (cond
-                    ((eq def-fun 'mode-specific-command-prefix)
-                     (setq def-fun-txt "\"C-c prefix\""))
-                    ((eq def-fun 'Control-X-prefix)
-                     (setq def-fun-txt "\"C-x prefix\""))
-                    ((eq def-fun 'ESC-prefix)
-                     (setq def-fun-txt "\"ESC prefix\"")))
                    (setq where "Same key")
                    nil)
                   ;; viper-mode specials:
@@ -518,17 +504,9 @@
                                key-fun def-fun key where))
                    nil))
           (add-to-list 'changed-keys
-                       (list key def-fun def-fun-txt where remark)))))
+                       (list key def-fun def-fun-txt where remark nil)))))
     changed-keys))
 
-(defvar tutorial--tab-map
-  (let ((map (make-sparse-keymap)))
-    (define-key map [tab] 'forward-button)
-    (define-key map [(shift tab)] 'backward-button)
-    (define-key map [(meta tab)] 'backward-button)
-    map)
-  "Keymap that allows tabbing between buttons.")
-
 (defun tutorial--key-description (key)
   (let ((desc (key-description key)))
     (cond ((string= "ESC" desc) "<ESC>")
@@ -549,12 +527,12 @@
         (changed-keys-alist
          (mapcar (lambda (ck) (cons (tutorial--key-description (car ck)) ck))
                  changed-keys))
+        changed-key
         (start (point))
         (case-fold-search nil)
         (keybindings-regexp
          (concat "[[:space:]]\\("
-                 (mapconcat (lambda (kdf)
-                              (regexp-quote
+                 (mapconcat (lambda (kdf) (regexp-quote
                                (tutorial--key-description
                                 (nth 1 kdf))))
                             tutorial--default-keys
@@ -568,14 +546,13 @@
              (head2 (get-lang-string tutorial--lang 'tut-chgdhead2)))
          (when (and head head2)
            (goto-char tutorial--point-before-chkeys)
-           (insert head)
+           (insert head " [")
            (insert-button head2 'tutorial-buffer (current-buffer)
                           'action 'tutorial--detailed-help
                           'follow-link t 'face 'link)
            (insert "]\n\n")
            (add-text-properties tutorial--point-before-chkeys (point)
-                                '(local-map tutorial--tab-map
-                                            tutorial-remark t
+                                '(tutorial-remark remark
                                             face tutorial-warning-face
                                             read-only t)))))
 
@@ -584,39 +561,48 @@
     (while (re-search-forward keybindings-regexp (point-max) t)
       ;; Then highlight each rebound key sequence.
       ;; This avoids issuing a warning for, e.g., C-x C-b if C-b is rebound.
-      (let ((changed-key (assoc (match-string 1) changed-keys-alist)))
+      (setq changed-key (assoc (match-string 1) changed-keys-alist))
        (and changed-key
             (not (get-text-property (match-beginning 1) 'tutorial-remark))
             (let* ((desc    (car changed-key))
                    (ck      (cdr changed-key))
                    (key     (nth 0 ck))
                    (def-fun (nth 1 ck))
-                   (where   (nth 3 ck)))
+                 (where   (nth 3 ck))
+                 s1 s2 help-string)
               (unless (string= where "Same key")
-                (setq tutorial--point-after-chkeys (point-marker))
-                (put-text-property (match-beginning 1)
-                                   (match-end 1)
-                                   'face 'tutorial-warning-face)
-                (put-text-property (match-beginning 1)
-                                   (match-end 1)
-                                   'tutorial-remark t)
+              (setq tutorial--point-after-chkeys (point-marker)
+                    s1 (get-lang-string tutorial--lang 'tut-chgdkey)
+                    s2 (get-lang-string tutorial--lang 'tut-chgdkey2)
+                    help-string (and s1 s2 (format s1 desc where)))
+              (add-text-properties (match-beginning 1) (match-end 1)
+                                   '(face tutorial-warning-face
+                                     tutorial-remark key-sequence))
+              (if help-string
+                  (if (nth 5 ck)
+                      ;; Put help string in the tooltip.
+                      (put-text-property (match-beginning 1) (match-end 1)
+                                         'help-echo help-string)
+                    ;; Put help string in the buffer.
                 (save-excursion
+                      (setcar (nthcdr 5 ck) t)
                   (forward-line)
-                  (let ((s  (get-lang-string tutorial--lang 'tut-chgdkey))
-                        (s2 (get-lang-string tutorial--lang 'tut-chgdkey2))
-                        (start (point)))
-                    (when (and s s2)
-                      (insert (format s desc where s2))
+                      ;; Two or more changed keys were on the same line.
+                      (while (eq (get-text-property (point) 'tutorial-remark)
+                                 'remark)
+                        (forward-line))
+                      (setq start (point))
+                      (insert "** " help-string " [")
                       (insert-button s2 'tutorial-buffer (current-buffer)
                                      'action 'tutorial--detailed-help
                                      'explain-key-desc desc 'follow-link t
                                      'face 'link)
                       (insert "] **\n")
                       (add-text-properties start (point)
-                                           '(local-map tutorial--tab-map
-                                             tutorial-remark t
+                                           '(tutorial-remark remark
+                                             rear-nonsticky t
                                              face tutorial-warning-face
-                                             read-only t))))))))))))
+                                             read-only t)))))))))))
 
 (defun tutorial--saved-dir ()
   "Directory to which tutorials are saved."
@@ -648,11 +634,8 @@
         (unless prop-end
           (setq prop-end (point-max)))
         (goto-char prop-end)
-        (if (eq prop-val 'only-colored)
-            (put-text-property prop-start prop-end 'face '(:background nil))
-          (let ((orig-text (get-text-property prop-start 'tutorial-orig)))
-            (delete-region prop-start prop-end)
-            (when orig-text (insert orig-text))))))))
+        (unless (eq prop-val 'key-sequence)
+         (delete-region prop-start prop-end))))))
 
 (defun tutorial--save-tutorial ()
   "Save the tutorial buffer.
@@ -903,7 +886,7 @@
 
 (defconst lang-strings
   '(("English" .
-     ((tut-chgdkey . "** %s has been rebound, but you can use %s instead [")
+     ((tut-chgdkey . "%s has been rebound, but you can use %s instead")
       (tut-chgdkey2 . "More")
       (tut-chgdhead . "
  NOTICE: The main purpose of the Emacs tutorial is to teach you
@@ -911,7 +894,7 @@
  However, your Emacs has been customized by changing some of
  these basic editing commands, so it doesn't correspond to the
  tutorial.  We have inserted colored notices where the altered
- commands have been introduced. [")
+ commands have been introduced.")
       (tut-chgdhead2 . "More"))))
   "Language specific strings for Emacs.
 This is an association list with the keys equal to the strings




reply via email to

[Prev in Thread] Current Thread [Next in Thread]