]> code.delx.au - gnu-emacs/blobdiff - lisp/tutorial.el
Add new function dom-remove-node
[gnu-emacs] / lisp / tutorial.el
index 39eb9e8b9aa51a0826f5f033e3dda5af41ba90ce..4ca01e72b13c83af51b980571a9d19646f520ffe 100644 (file)
@@ -1,8 +1,8 @@
 ;;; tutorial.el --- tutorial for Emacs
 
-;; Copyright (C) 2006-2013 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2016 Free Software Foundation, Inc.
 
-;; Maintainer: FSF
+;; Maintainer: emacs-devel@gnu.org
 ;; Keywords: help, internal
 ;; Package: emacs
 
@@ -63,8 +63,8 @@ with default Emacs bindings information about this is shown.
 
 VALUE should have either of these formats:
 
-  \(cua-mode)
-  \(current-binding KEY-FUN DEF-FUN KEY WHERE)
+  (cua-mode)
+  (current-binding KEY-FUN DEF-FUN KEY WHERE)
 
 Where
   KEY         is a key sequence whose standard binding has been changed
@@ -134,21 +134,20 @@ options:
                            (eq map (symbol-value s))
                            ;; then save this value in mapsym
                            (setq mapsym s)))))
-            (insert "The default Emacs binding for the key "
-                    (key-description key)
-                    " is the command `")
-            (insert (format "%s" db))
-            (insert "'.  "
-                    "However, your customizations have "
+            (insert
+             (format-message
+              "The default Emacs binding for the key %s is the command `%s'.  "
+              (key-description key)
+              db))
+            (insert "However, your customizations have "
                     (if cb
-                        (format "rebound it to the command `%s'" cb)
+                        (format-message "rebound it to the command `%s'" cb)
                       "unbound it"))
             (insert ".")
             (when mapsym
               (insert "  (For the more advanced user:"
-                      " This binding is in the keymap `"
-                      (format "%s" mapsym)
-                      "'.)"))
+                      (format-message
+                       " This binding is in the keymap `%s'.)" mapsym)))
             (if (string= where "")
                 (unless (keymapp db)
                   (insert "\n\nYou can use M-x "
@@ -156,13 +155,11 @@ options:
                           " RET instead."))
               (insert "\n\nWith your current key bindings"
                       " you can use "
-                      (if (string-match "^the .*menus?$" where)
+                      (if (string-match-p "^the .*menus?$" where)
                           ""
                         "the key")
                       where
-                      " to get the function `"
-                      (format "%s" db)
-                      "'.")))
+                      (format-message " to get the function `%s'." db))))
           (fill-region (point-min) (point)))))
       (help-print-return-message))))
 
@@ -209,10 +206,10 @@ LEFT and RIGHT are the elements to compare."
                  (symbol-name cx)))))))
 
 (defconst tutorial--default-keys
-  ;; On window system, `suspend-emacs' is replaced in the default
-  ;; keymap
+  ;; On window system, `suspend-emacs' is replaced in the default keymap.
   (let* ((suspend-emacs 'suspend-frame)
          (default-keys
+           ;; The first few are not mentioned but are basic:
            `((ESC-prefix [27])
              (Control-X-prefix [?\C-x])
              (mode-specific-command-prefix [?\C-c])
@@ -346,10 +343,8 @@ from the Emacs default:\n\n" )
                    (def-fun-txt (nth 2 tk))
                    (where       (nth 3 tk))
                    (remark      (nth 4 tk))
-                   (rem-fun (command-remapping def-fun))
                    (key-txt (key-description key))
-                   (key-fun (with-current-buffer tutorial-buffer (key-binding key)))
-                   tot-len)
+                   (key-fun (with-current-buffer tutorial-buffer (key-binding key))))
               (unless (eq def-fun key-fun)
                 ;; Insert key binding description:
                 (when (string= key-txt explain-key-desc)
@@ -407,8 +402,8 @@ where
   REMARK      is a list with info about rebinding. It has either of
               these formats:
 
-                \(TEXT cua-mode)
-                \(TEXT current-binding KEY-FUN DEF-FUN KEY WHERE)
+                (TEXT cua-mode)
+                (TEXT current-binding KEY-FUN DEF-FUN KEY WHERE)
 
               Here TEXT is a link text to show to the user.  The
               rest of the list is used to show information when
@@ -456,7 +451,7 @@ where
                                               (lookup-key global-map
                                                           [menu-bar]))))
                                 (stringp cwhere))
-                           (format "the `%s' menu" cwhere)
+                           (format-message "the `%s' menu" cwhere)
                          "the menus"))))
            (setq where ""))
          (setq remark nil)
@@ -550,7 +545,11 @@ with some explanatory links."
         (start (point))
         (case-fold-search nil)
         (keybindings-regexp
-         (concat "[[:space:]]\\("
+         ;; Accept either [:space:] or [:punct:] before the key
+         ;; binding because the Hebrew tutorial uses directional
+         ;; controls and Hebrew character maqaf, the Hebrew hyphen,
+         ;; immediately before the binding string.
+         (concat "\\(?:[[:space:]]\\|[[:punct:]]\\)\\("
                  (mapconcat (lambda (kdf) (regexp-quote
                                            (tutorial--key-description
                                             (nth 1 kdf))))
@@ -723,9 +722,7 @@ See `tutorial--save-tutorial' for more information."
                            saved-file
                            (error-message-string err))))
             ;; An error is raised here?? Is this a bug?
-            (condition-case nil
-                (undo-only)
-              (error nil))
+            (ignore-errors (undo-only))
             ;; Restore point
             (goto-char old-point)
             (if save-err
@@ -881,7 +878,7 @@ Run the Viper tutorial? "))
           ;; or just delete the <<...>> line if a [...] line follows.
           (cond ((save-excursion
                    (forward-line 1)
-                   (looking-at "\\["))
+                   (looking-at-p "\\["))
                  (delete-region (point) (progn (forward-line 1) (point))))
                 ((looking-at "<<Blank lines inserted.*>>")
                  (replace-match "[Middle of page left blank for didactic purposes.   Text continues below]"))
@@ -896,7 +893,7 @@ Run the Viper tutorial? "))
           ;; inserted at the start of the buffer, the "type C-v to
           ;; move to the next screen" might not be visible on the
           ;; first screen (n < 0).  How will the novice know what to do?
-          (let ((n (- (window-height (selected-window))
+          (let ((n (- (window-height)
                       (count-lines (point-min) (point))
                       6)))
             (if (< n 8)