changeset 73551:8bd77d06776b

* tutorial.el: Move defvars to avoid bytecomp warnings. (tutorial--find-changed-keys): Check if viper-current-state is bound before using it. (help-with-tutorial): Check if viper-tutorial is defined before using it.
author Chong Yidong <cyd@stupidchicken.com>
date Mon, 30 Oct 2006 14:52:56 +0000
parents 6deaec97f21b
children 7063b0e05658
files lisp/tutorial.el
diffstat 1 files changed, 173 insertions(+), 175 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/tutorial.el	Mon Oct 30 14:30:59 2006 +0000
+++ b/lisp/tutorial.el	Mon Oct 30 14:52:56 2006 +0000
@@ -35,6 +35,166 @@
 (require 'help-mode) ;; for function help-buffer
 (eval-when-compile (require 'cl))
 
+(defvar tutorial--point-before-chkeys 0
+  "Point before display of key changes.")
+(make-variable-buffer-local 'tutorial--point-before-chkeys)
+
+(defvar tutorial--point-after-chkeys 0
+  "Point after display of key changes.")
+(make-variable-buffer-local 'tutorial--point-after-chkeys)
+
+(defvar tutorial--lang nil
+  "Tutorial language.")
+(make-variable-buffer-local 'tutorial--lang)
+
+(defconst tutorial--default-keys
+  (let* (
+         ;; On window system suspend Emacs is replaced in the
+         ;; default keymap so honor this here.
+         (suspend-emacs (if window-system
+                            'iconify-or-deiconify-frame
+                          'suspend-emacs))
+         (default-keys
+           `(
+             ;; These are not mentioned but are basic:
+             (ESC-prefix [27])
+             (Control-X-prefix [?\C-x])
+             (mode-specific-command-prefix [?\C-c])
+
+             (save-buffers-kill-emacs [?\C-x ?\C-c])
+
+
+             ;; * SUMMARY
+             (scroll-up [?\C-v])
+             (scroll-down [?\M-v])
+             (recenter [?\C-l])
+
+
+             ;; * BASIC CURSOR CONTROL
+             (forward-char [?\C-f])
+             (backward-char [?\C-b])
+
+             (forward-word [?\M-f])
+             (backward-word [?\M-b])
+
+             (next-line [?\C-n])
+             (previous-line [?\C-p])
+
+             (move-beginning-of-line [?\C-a])
+             (move-end-of-line [?\C-e])
+
+             (backward-sentence [?\M-a])
+             (forward-sentence [?\M-e])
+
+
+             (beginning-of-buffer [?\M-<])
+             (end-of-buffer [?\M->])
+
+             (universal-argument [?\C-u])
+
+
+             ;; * WHEN EMACS IS HUNG
+             (keyboard-quit [?\C-g])
+
+
+             ;; * DISABLED COMMANDS
+             (downcase-region [?\C-x ?\C-l])
+
+
+             ;; * WINDOWS
+             (delete-other-windows [?\C-x ?1])
+             ;; C-u 0 C-l
+             ;; Type CONTROL-h k CONTROL-f.
+
+
+             ;; * INSERTING AND DELETING
+             ;; C-u 8 * to insert ********.
+
+             (delete-backward-char [backspace])
+             (delete-char [?\C-d])
+
+             (backward-kill-word [(meta backspace)])
+             (kill-word [?\M-d])
+
+             (kill-line [?\C-k])
+             (kill-sentence [?\M-k])
+
+             (set-mark-command [?\C-@])
+             (set-mark-command [?\C- ])
+             (kill-region [?\C-w])
+             (yank [?\C-y])
+             (yank-pop [?\M-y])
+
+
+             ;; * UNDO
+             (advertised-undo [?\C-x ?u])
+             (advertised-undo [?\C-x ?u])
+
+
+             ;; * FILES
+             (find-file [?\C-x ?\C-f])
+             (save-buffer [?\C-x ?\C-s])
+
+
+             ;; * BUFFERS
+             (list-buffers [?\C-x ?\C-b])
+             (switch-to-buffer [?\C-x ?b])
+             (save-some-buffers [?\C-x ?s])
+
+
+             ;; * EXTENDING THE COMMAND SET
+             ;; C-x	Character eXtend.  Followed by one character.
+             (execute-extended-command [?\M-x])
+
+             ;; C-x C-f		Find file
+             ;; C-x C-s		Save file
+             ;; C-x s		Save some buffers
+             ;; C-x C-b		List buffers
+             ;; C-x b		Switch buffer
+             ;; C-x C-c		Quit Emacs
+             ;; C-x 1		Delete all but one window
+             ;; C-x u		Undo
+
+
+             ;; * MODE LINE
+             (describe-mode [?\C-h ?m])
+
+             (set-fill-column [?\C-x ?f])
+             (fill-paragraph [?\M-q])
+
+
+             ;; * SEARCHING
+             (isearch-forward [?\C-s])
+             (isearch-backward [?\C-r])
+
+
+             ;; * MULTIPLE WINDOWS
+             (split-window-vertically [?\C-x ?2])
+             (scroll-other-window [?\C-\M-v])
+             (other-window [?\C-x ?o])
+             (find-file-other-window [?\C-x ?4 ?\C-f])
+
+
+             ;; * RECURSIVE EDITING LEVELS
+             (keyboard-escape-quit [27 27 27])
+
+
+             ;; * GETTING MORE HELP
+             ;; The most basic HELP feature is C-h c
+             (describe-key-briefly [?\C-h ?c])
+             (describe-key [?\C-h ?k])
+
+
+             ;; * MORE FEATURES
+             ;; F10
+
+
+             ;; * CONCLUSION
+             ;;(iconify-or-deiconify-frame [?\C-z])
+             (,suspend-emacs [?\C-z])
+             )))
+    (sort default-keys 'tutorial--sort-keys))
+  "Default Emacs key bindings that the tutorial depends on.")
 
 (defun tutorial--detailed-help (button)
   "Give detailed help about changed keys."
@@ -267,155 +427,6 @@
                  (symbol-name cx)))
        ))))
 
-(defconst tutorial--default-keys
-  (let* (
-         ;; On window system suspend Emacs is replaced in the
-         ;; default keymap so honor this here.
-         (suspend-emacs (if window-system
-                            'iconify-or-deiconify-frame
-                          'suspend-emacs))
-         (default-keys
-           `(
-             ;; These are not mentioned but are basic:
-             (ESC-prefix [27])
-             (Control-X-prefix [?\C-x])
-             (mode-specific-command-prefix [?\C-c])
-
-             (save-buffers-kill-emacs [?\C-x ?\C-c])
-
-
-             ;; * SUMMARY
-             (scroll-up [?\C-v])
-             (scroll-down [?\M-v])
-             (recenter [?\C-l])
-
-
-             ;; * BASIC CURSOR CONTROL
-             (forward-char [?\C-f])
-             (backward-char [?\C-b])
-
-             (forward-word [?\M-f])
-             (backward-word [?\M-b])
-
-             (next-line [?\C-n])
-             (previous-line [?\C-p])
-
-             (move-beginning-of-line [?\C-a])
-             (move-end-of-line [?\C-e])
-
-             (backward-sentence [?\M-a])
-             (forward-sentence [?\M-e])
-
-
-             (beginning-of-buffer [?\M-<])
-             (end-of-buffer [?\M->])
-
-             (universal-argument [?\C-u])
-
-
-             ;; * WHEN EMACS IS HUNG
-             (keyboard-quit [?\C-g])
-
-
-             ;; * DISABLED COMMANDS
-             (downcase-region [?\C-x ?\C-l])
-
-
-             ;; * WINDOWS
-             (delete-other-windows [?\C-x ?1])
-             ;; C-u 0 C-l
-             ;; Type CONTROL-h k CONTROL-f.
-
-
-             ;; * INSERTING AND DELETING
-             ;; C-u 8 * to insert ********.
-
-             (delete-backward-char [backspace])
-             (delete-char [?\C-d])
-
-             (backward-kill-word [(meta backspace)])
-             (kill-word [?\M-d])
-
-             (kill-line [?\C-k])
-             (kill-sentence [?\M-k])
-
-             (set-mark-command [?\C-@])
-             (set-mark-command [?\C- ])
-             (kill-region [?\C-w])
-             (yank [?\C-y])
-             (yank-pop [?\M-y])
-
-
-             ;; * UNDO
-             (advertised-undo [?\C-x ?u])
-             (advertised-undo [?\C-x ?u])
-
-
-             ;; * FILES
-             (find-file [?\C-x ?\C-f])
-             (save-buffer [?\C-x ?\C-s])
-
-
-             ;; * BUFFERS
-             (list-buffers [?\C-x ?\C-b])
-             (switch-to-buffer [?\C-x ?b])
-             (save-some-buffers [?\C-x ?s])
-
-
-             ;; * EXTENDING THE COMMAND SET
-             ;; C-x	Character eXtend.  Followed by one character.
-             (execute-extended-command [?\M-x])
-
-             ;; C-x C-f		Find file
-             ;; C-x C-s		Save file
-             ;; C-x s		Save some buffers
-             ;; C-x C-b		List buffers
-             ;; C-x b		Switch buffer
-             ;; C-x C-c		Quit Emacs
-             ;; C-x 1		Delete all but one window
-             ;; C-x u		Undo
-
-
-             ;; * MODE LINE
-             (describe-mode [?\C-h ?m])
-
-             (set-fill-column [?\C-x ?f])
-             (fill-paragraph [?\M-q])
-
-
-             ;; * SEARCHING
-             (isearch-forward [?\C-s])
-             (isearch-backward [?\C-r])
-
-
-             ;; * MULTIPLE WINDOWS
-             (split-window-vertically [?\C-x ?2])
-             (scroll-other-window [?\C-\M-v])
-             (other-window [?\C-x ?o])
-             (find-file-other-window [?\C-x ?4 ?\C-f])
-
-
-             ;; * RECURSIVE EDITING LEVELS
-             (keyboard-escape-quit [27 27 27])
-
-
-             ;; * GETTING MORE HELP
-             ;; The most basic HELP feature is C-h c
-             (describe-key-briefly [?\C-h ?c])
-             (describe-key [?\C-h ?k])
-
-
-             ;; * MORE FEATURES
-             ;; F10
-
-
-             ;; * CONCLUSION
-             ;;(iconify-or-deiconify-frame [?\C-z])
-             (,suspend-emacs [?\C-z])
-             )))
-    (sort default-keys 'tutorial--sort-keys))
-  "Default Emacs key bindings that the tutorial depends on.")
-
 (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
@@ -444,7 +455,7 @@
               the user clicks the link.
 
               KEY-FUN is the actual binding for KEY."
-  (let (changed-keys)
+  (let (changed-keys remark)
     ;; (default-keys tutorial--default-keys))
     (dolist (kdf default-keys)
       ;; The variables below corresponds to those with the same names
@@ -508,6 +519,7 @@
                    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))
@@ -645,17 +657,6 @@
         ;; Make this area read-only:
         (put-text-property start end 'read-only t)))))
 
-(defvar tutorial--point-before-chkeys 0
-  "Point before display of key changes.")
-(make-variable-buffer-local 'tutorial--point-before-chkeys)
-(defvar tutorial--point-after-chkeys 0
-  "Point after display of key changes.")
-(make-variable-buffer-local 'tutorial--point-after-chkeys)
-
-(defvar tutorial--lang nil
-  "Tutorial language.")
-(make-variable-buffer-local 'tutorial--lang)
-
 (defun tutorial--saved-dir ()
   "Directory where to save tutorials."
   (expand-file-name ".emacstut" "~/"))
@@ -787,20 +788,17 @@
 resumed later."
   (interactive "P")
   (if (boundp 'viper-current-state)
-      (let ((prompt
-             "
-  You can not run the Emacs tutorial directly because you have
-  enabled Viper.  There is however a Viper tutorial you can run
-  instead. From this you can also run a slightly modified version
-  of the Emacs tutorial.
-
-  Do you want to run the Viper tutorial instead? "))
-      (if (y-or-n-p prompt)
-          (progn
-            (message "")
-            (viper-tutorial 0))
-        (message "Tutorial aborted by user")))
-
+      (let ((prompt1
+             "You can not run the Emacs tutorial directly because you have \
+enabled Viper.")
+	    (prompt2 "\nThere is however a Viper tutorial you can run instead.
+Run the Viper tutorial? "))
+	(if (fboundp 'viper-tutorial)
+	    (if (y-or-n-p (concat prompt1 prompt2))
+		(progn (message "")
+		       (funcall 'viper-tutorial 0))
+	      (message "Tutorial aborted by user"))
+	  (message prompt1)))
     (let* ((lang (if arg
                      (let ((minibuffer-setup-hook minibuffer-setup-hook))
                        (add-hook 'minibuffer-setup-hook