annotate lisp/tutorial.el @ 74113:3cc044eb98b7

(tutorial--default-keys): Add newline and delete-backward-char bindings. (tutorial--detailed-help): Save excursion when finding keys. Correct warning string for M-x FOO case. (tutorial--display-changes): Print special keys in tutorial style. Tweak search regexp for changed keys.
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 21 Nov 2006 16:11:30 +0000
parents 9b8e3f194cc1
children ecc3f98301f4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1 ;;; tutorial.el --- tutorial for Emacs
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
2
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
3 ;; Copyright (C) 2006 Free Software Foundation, Inc.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
4
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
5 ;; Maintainer: FSF
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
6 ;; Keywords: help, internal
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
7
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
9
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
13 ;; any later version.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
14
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
18 ;; GNU General Public License for more details.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
19
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
22 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
23 ;; Boston, MA 02110-1301, USA.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
24
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
25 ;;; Commentary:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
26
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
27 ;; Code for running the Emacs tutorial.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
28
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
29 ;;; History:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
30
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
31 ;; File was created 2006-09.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
32
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
33 ;;; Code:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
34
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
35 (require 'help-mode) ;; for function help-buffer
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
36 (eval-when-compile (require 'cl))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
37
74100
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
38 (defface tutorial-warning-face
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
39 '((((class color) (min-colors 88) (background light))
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
40 (:foreground "Red1" :weight bold))
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
41 (((class color) (min-colors 88) (background dark))
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
42 (:foreground "Pink" :weight bold))
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
43 (((class color) (min-colors 16) (background light))
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
44 (:foreground "Red1" :weight bold))
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
45 (((class color) (min-colors 16) (background dark))
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
46 (:foreground "Pink" :weight bold))
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
47 (((class color) (min-colors 8)) (:foreground "red"))
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
48 (t (:inverse-video t :weight bold)))
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
49 "Face used to highlight warnings in the tutorial."
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
50 :group 'font-lock-faces)
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
51
73551
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
52 (defvar tutorial--point-before-chkeys 0
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
53 "Point before display of key changes.")
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
54 (make-variable-buffer-local 'tutorial--point-before-chkeys)
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
55
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
56 (defvar tutorial--point-after-chkeys 0
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
57 "Point after display of key changes.")
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
58 (make-variable-buffer-local 'tutorial--point-after-chkeys)
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
59
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
60 (defvar tutorial--lang nil
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
61 "Tutorial language.")
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
62 (make-variable-buffer-local 'tutorial--lang)
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
63
73552
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
64 (defun tutorial--describe-nonstandard-key (value)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
65 "Give more information about a changed key binding.
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
66 This is used in `help-with-tutorial'. The information includes
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
67 the key sequence that no longer has a default binding, the
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
68 default binding and the current binding. It also tells in what
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
69 keymap the new binding has been done and how to access the
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
70 function in the default binding from the keyboard.
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
71
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
72 For `cua-mode' key bindings that try to combine CUA key bindings
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
73 with default Emacs bindings information about this is shown.
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
74
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
75 VALUE should have either of these formats:
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
76
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
77 \(cua-mode)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
78 \(current-binding KEY-FUN DEF-FUN KEY WHERE)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
79
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
80 Where
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
81 KEY is a key sequence whose standard binding has been changed
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
82 KEY-FUN is the actual binding for KEY
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
83 DEF-FUN is the standard binding of KEY
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
84 WHERE is a text describing the key sequences to which DEF-FUN is
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
85 bound now (or, if it is remapped, a key sequence
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
86 for the function it is remapped to)"
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
87 (with-output-to-temp-buffer (help-buffer)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
88 (help-setup-xref (list #'tutorial--describe-nonstandard-key value)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
89 (interactive-p))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
90 (with-current-buffer (help-buffer)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
91 (insert
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
92 "Your Emacs customizations override the default binding for this key:"
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
93 "\n\n")
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
94 (let ((inhibit-read-only t))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
95 (cond
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
96 ((eq (car value) 'cua-mode)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
97 (insert
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
98 "CUA mode is enabled.
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
99
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
100 When CUA mode is enabled, you can use C-z, C-x, C-c, and C-v to
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
101 undo, cut, copy, and paste in addition to the normal Emacs
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
102 bindings. The C-x and C-c keys only do cut and copy when the
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
103 region is active, so in most cases, they do not conflict with the
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
104 normal function of these prefix keys.
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
105
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
106 If you really need to perform a command which starts with one of
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
107 the prefix keys even when the region is active, you have three
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
108 options:
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
109 - press the prefix key twice very quickly (within 0.2 seconds),
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
110 - press the prefix key and the following key within 0.2 seconds, or
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
111 - use the SHIFT key with the prefix key, i.e. C-S-x or C-S-c."))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
112 ((eq (car value) 'current-binding)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
113 (let ((cb (nth 1 value))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
114 (db (nth 2 value))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
115 (key (nth 3 value))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
116 (where (nth 4 value))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
117 map
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
118 (maps (current-active-maps))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
119 mapsym)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
120 ;; Look at the currently active keymaps and try to find
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
121 ;; first the keymap where the current binding occurs:
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
122 (while maps
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
123 (let* ((m (car maps))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
124 (mb (lookup-key m key t)))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
125 (setq maps (cdr maps))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
126 (when (eq mb cb)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
127 (setq map m)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
128 (setq maps nil))))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
129 ;; Now, if a keymap was found we must found the symbol
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
130 ;; name for it to display to the user. This can not
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
131 ;; always be found since all keymaps does not have a
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
132 ;; symbol pointing to them, but here they should have
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
133 ;; that:
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
134 (when map
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
135 (mapatoms (lambda (s)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
136 (and
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
137 ;; If not already found
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
138 (not mapsym)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
139 ;; and if s is a keymap
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
140 (and (boundp s)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
141 (keymapp (symbol-value s)))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
142 ;; and not the local symbol map
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
143 (not (eq s 'map))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
144 ;; and the value of s is map
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
145 (eq map (symbol-value s))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
146 ;; then save this value in mapsym
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
147 (setq mapsym s)))))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
148 (insert "The default Emacs binding for the key "
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
149 (key-description key)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
150 " is the command `")
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
151 (insert (format "%s" db))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
152 (insert "'. "
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
153 "However, your customizations have rebound it to the command `")
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
154 (insert (format "%s" cb))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
155 (insert "'.")
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
156 (when mapsym
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
157 (insert " (For the more advanced user:"
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
158 " This binding is in the keymap `"
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
159 (format "%s" mapsym)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
160 "'.)"))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
161 (if (string= where "")
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
162 (unless (keymapp db)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
163 (insert "\n\nYou can use M-x "
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
164 (format "%s" db)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
165 " RET instead."))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
166 (insert "\n\nWith you current key bindings"
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
167 " you can use the key "
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
168 where
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
169 " to get the function `"
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
170 (format "%s" db)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
171 "'."))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
172 )
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
173 (fill-region (point-min) (point)))))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
174 (print-help-return-message))))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
175
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
176 (defun tutorial--sort-keys (left right)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
177 "Sort predicate for use with `tutorial--default-keys'.
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
178 This is a predicate function to `sort'.
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
179
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
180 The sorting is for presentation purpose only and is done on the
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
181 key sequence.
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
182
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
183 LEFT and RIGHT are the elements to compare."
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
184 (let ((x (append (cadr left) nil))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
185 (y (append (cadr right) nil)))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
186 ;; Skip the front part of the key sequences if they are equal:
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
187 (while (and x y
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
188 (listp x) (listp y)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
189 (equal (car x) (car y)))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
190 (setq x (cdr x))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
191 (setq y (cdr y)))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
192 ;; Try to make a comparision that is useful for presentation (this
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
193 ;; could be made nicer perhaps):
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
194 (let ((cx (car x))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
195 (cy (car y)))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
196 ;;(message "x=%s, y=%s;;;; cx=%s, cy=%s" x y cx cy)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
197 (cond
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
198 ;; Lists? Then call this again
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
199 ((and cx cy
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
200 (listp cx)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
201 (listp cy))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
202 (tutorial--sort-keys cx cy))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
203 ;; Are both numbers? Then just compare them
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
204 ((and (wholenump cx)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
205 (wholenump cy))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
206 (> cx cy))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
207 ;; Is one of them a number? Let that be bigger then.
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
208 ((wholenump cx)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
209 t)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
210 ((wholenump cy)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
211 nil)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
212 ;; Are both symbols? Compare the names then.
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
213 ((and (symbolp cx)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
214 (symbolp cy))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
215 (string< (symbol-name cy)
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
216 (symbol-name cx)))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
217 ))))
7063b0e05658 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 73551
diff changeset
218
73551
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
219 (defconst tutorial--default-keys
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
220 (let* (
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
221 ;; On window system suspend Emacs is replaced in the
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
222 ;; default keymap so honor this here.
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
223 (suspend-emacs (if window-system
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
224 'iconify-or-deiconify-frame
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
225 'suspend-emacs))
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
226 (default-keys
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
227 `(
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
228 ;; These are not mentioned but are basic:
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
229 (ESC-prefix [27])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
230 (Control-X-prefix [?\C-x])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
231 (mode-specific-command-prefix [?\C-c])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
232
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
233 (save-buffers-kill-emacs [?\C-x ?\C-c])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
234
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
235
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
236 ;; * SUMMARY
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
237 (scroll-up [?\C-v])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
238 (scroll-down [?\M-v])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
239 (recenter [?\C-l])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
240
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
241
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
242 ;; * BASIC CURSOR CONTROL
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
243 (forward-char [?\C-f])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
244 (backward-char [?\C-b])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
245
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
246 (forward-word [?\M-f])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
247 (backward-word [?\M-b])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
248
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
249 (next-line [?\C-n])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
250 (previous-line [?\C-p])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
251
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
252 (move-beginning-of-line [?\C-a])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
253 (move-end-of-line [?\C-e])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
254
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
255 (backward-sentence [?\M-a])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
256 (forward-sentence [?\M-e])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
257
74113
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
258 (newline "\r")
73551
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
259
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
260 (beginning-of-buffer [?\M-<])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
261 (end-of-buffer [?\M->])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
262
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
263 (universal-argument [?\C-u])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
264
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
265
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
266 ;; * WHEN EMACS IS HUNG
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
267 (keyboard-quit [?\C-g])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
268
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
269
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
270 ;; * DISABLED COMMANDS
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
271 (downcase-region [?\C-x ?\C-l])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
272
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
273
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
274 ;; * WINDOWS
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
275 (delete-other-windows [?\C-x ?1])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
276 ;; C-u 0 C-l
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
277 ;; Type CONTROL-h k CONTROL-f.
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
278
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
279
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
280 ;; * INSERTING AND DELETING
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
281 ;; C-u 8 * to insert ********.
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
282
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
283 (delete-backward-char [backspace])
74113
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
284 (delete-backward-char "\d")
73551
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
285 (delete-char [?\C-d])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
286
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
287 (backward-kill-word [(meta backspace)])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
288 (kill-word [?\M-d])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
289
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
290 (kill-line [?\C-k])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
291 (kill-sentence [?\M-k])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
292
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
293 (set-mark-command [?\C-@])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
294 (set-mark-command [?\C- ])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
295 (kill-region [?\C-w])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
296 (yank [?\C-y])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
297 (yank-pop [?\M-y])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
298
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
299
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
300 ;; * UNDO
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
301 (advertised-undo [?\C-x ?u])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
302 (advertised-undo [?\C-x ?u])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
303
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
304
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
305 ;; * FILES
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
306 (find-file [?\C-x ?\C-f])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
307 (save-buffer [?\C-x ?\C-s])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
308
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
309
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
310 ;; * BUFFERS
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
311 (list-buffers [?\C-x ?\C-b])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
312 (switch-to-buffer [?\C-x ?b])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
313 (save-some-buffers [?\C-x ?s])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
314
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
315
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
316 ;; * EXTENDING THE COMMAND SET
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
317 ;; C-x Character eXtend. Followed by one character.
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
318 (execute-extended-command [?\M-x])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
319
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
320 ;; C-x C-f Find file
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
321 ;; C-x C-s Save file
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
322 ;; C-x s Save some buffers
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
323 ;; C-x C-b List buffers
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
324 ;; C-x b Switch buffer
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
325 ;; C-x C-c Quit Emacs
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
326 ;; C-x 1 Delete all but one window
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
327 ;; C-x u Undo
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
328
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
329
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
330 ;; * MODE LINE
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
331 (describe-mode [?\C-h ?m])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
332
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
333 (set-fill-column [?\C-x ?f])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
334 (fill-paragraph [?\M-q])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
335
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
336
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
337 ;; * SEARCHING
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
338 (isearch-forward [?\C-s])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
339 (isearch-backward [?\C-r])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
340
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
341
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
342 ;; * MULTIPLE WINDOWS
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
343 (split-window-vertically [?\C-x ?2])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
344 (scroll-other-window [?\C-\M-v])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
345 (other-window [?\C-x ?o])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
346 (find-file-other-window [?\C-x ?4 ?\C-f])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
347
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
348
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
349 ;; * RECURSIVE EDITING LEVELS
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
350 (keyboard-escape-quit [27 27 27])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
351
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
352
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
353 ;; * GETTING MORE HELP
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
354 ;; The most basic HELP feature is C-h c
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
355 (describe-key-briefly [?\C-h ?c])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
356 (describe-key [?\C-h ?k])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
357
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
358
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
359 ;; * MORE FEATURES
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
360 ;; F10
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
361
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
362
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
363 ;; * CONCLUSION
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
364 ;;(iconify-or-deiconify-frame [?\C-z])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
365 (,suspend-emacs [?\C-z])
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
366 )))
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
367 (sort default-keys 'tutorial--sort-keys))
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
368 "Default Emacs key bindings that the tutorial depends on.")
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
369
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
370 (defun tutorial--detailed-help (button)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
371 "Give detailed help about changed keys."
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
372 (with-output-to-temp-buffer (help-buffer)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
373 (help-setup-xref (list #'tutorial--detailed-help button)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
374 (interactive-p))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
375 (with-current-buffer (help-buffer)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
376 (let* ((tutorial-buffer (button-get button 'tutorial-buffer))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
377 ;;(tutorial-arg (button-get button 'tutorial-arg))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
378 (explain-key-desc (button-get button 'explain-key-desc))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
379 (changed-keys (with-current-buffer tutorial-buffer
74113
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
380 (save-excursion
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
381 (goto-char (point-min))
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
382 (tutorial--find-changed-keys
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
383 tutorial--default-keys)))))
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
384 (when changed-keys
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
385 (insert
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
386 "The following key bindings used in the tutorial had been changed
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
387 from Emacs default in the " (buffer-name tutorial-buffer) " buffer:\n\n" )
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
388 (let ((frm " %-9s %-27s %-11s %s\n"))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
389 (insert (format frm "Key" "Standard Binding" "Is Now On" "Remark")))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
390 (dolist (tk changed-keys)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
391 (let* ((def-fun (nth 1 tk))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
392 (key (nth 0 tk))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
393 (def-fun-txt (nth 2 tk))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
394 (where (nth 3 tk))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
395 (remark (nth 4 tk))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
396 (rem-fun (command-remapping def-fun))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
397 (key-txt (key-description key))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
398 (key-fun (with-current-buffer tutorial-buffer (key-binding key)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
399 tot-len)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
400 (unless (eq def-fun key-fun)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
401 ;; Insert key binding description:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
402 (when (string= key-txt explain-key-desc)
74100
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
403 (put-text-property 0 (length key-txt)
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
404 'face 'tutorial-warning-face key-txt))
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
405 (insert " " key-txt " ")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
406 (setq tot-len (length key-txt))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
407 (when (> 9 tot-len)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
408 (insert (make-string (- 9 tot-len) ? ))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
409 (setq tot-len 9))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
410 ;; Insert a link describing the old binding:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
411 (insert-button def-fun-txt
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
412 'value def-fun
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
413 'action
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
414 (lambda(button) (interactive)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
415 (describe-function
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
416 (button-get button 'value)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
417 'follow-link t)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
418 (setq tot-len (+ tot-len (length def-fun-txt)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
419 (when (> 36 tot-len)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
420 (insert (make-string (- 36 tot-len) ? )))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
421 (when (listp where)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
422 (setq where "list"))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
423 ;; Tell where the old binding is now:
74113
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
424 (insert (format " %-11s "
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
425 (if (string= "" where)
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
426 (format "M-x %s" def-fun-txt)
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
427 where)))
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
428 ;; Insert a link with more information, for example
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
429 ;; current binding and keymap or information about
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
430 ;; cua-mode replacements:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
431 (insert-button (car remark)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
432 'action
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
433 (lambda(b) (interactive)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
434 (let ((value (button-get b 'value)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
435 (tutorial--describe-nonstandard-key value)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
436 'value (cdr remark)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
437 'follow-link t)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
438 (insert "\n")))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
439
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
440 (insert "
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
441 It is legitimate to change key bindings, but changed bindings do not
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
442 correspond to what the tutorial says. (See also " )
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
443 (insert-button "Key Binding Conventions"
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
444 'action
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
445 (lambda(button) (interactive)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
446 (info
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
447 "(elisp) Key Binding Conventions")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
448 (message "Type C-x 0 to close the new window"))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
449 'follow-link t)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
450 (insert ".)\n\n")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
451 (print-help-return-message)))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
452
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
453 (defun tutorial--find-changed-keys (default-keys)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
454 "Find the key bindings that have changed.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
455 Check if the default Emacs key bindings that the tutorial depends
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
456 on have been changed.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
457
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
458 Return a list with the keys that have been changed. The element
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
459 of this list have the following format:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
460
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
461 \(list KEY DEF-FUN DEF-FUN-TXT WHERE REMARK)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
462
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
463 Where
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
464 KEY is a key sequence whose standard binding has been changed
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
465 DEF-FUN is the standard binding of KEY
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
466 DEF-FUN-TXT is a short descriptive text for DEF-FUN
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
467 WHERE is a text describing the key sequences to which DEF-FUN is
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
468 bound now (or, if it is remapped, a key sequence
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
469 for the function it is remapped to)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
470 REMARK is a list with info about rebinding. It has either of these
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
471 formats:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
472
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
473 \(TEXT cua-mode)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
474 \(TEXT current-binding KEY-FUN DEF-FUN KEY WHERE)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
475
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
476 Here TEXT is a link text to show to the user. The
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
477 rest of the list is used to show information when
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
478 the user clicks the link.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
479
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
480 KEY-FUN is the actual binding for KEY."
73551
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
481 (let (changed-keys remark)
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
482 ;; (default-keys tutorial--default-keys))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
483 (dolist (kdf default-keys)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
484 ;; The variables below corresponds to those with the same names
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
485 ;; described in the doc string.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
486 (let* ((key (nth 1 kdf))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
487 (def-fun (nth 0 kdf))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
488 (def-fun-txt (format "%s" def-fun))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
489 (rem-fun (command-remapping def-fun))
74100
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
490 (key-fun (if (eq def-fun 'ESC-prefix)
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
491 (lookup-key global-map [27])
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
492 (key-binding key)))
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
493 (where (where-is-internal (if rem-fun rem-fun def-fun))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
494 (if where
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
495 (progn
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
496 (setq where (key-description (car where)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
497 (when (and (< 10 (length where))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
498 (string= (substring where 0 (length "<menu-bar>"))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
499 "<menu-bar>"))
74100
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
500 (setq where "the menus")))
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
501 (setq where ""))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
502 (setq remark nil)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
503 (unless
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
504 (cond ((eq key-fun def-fun)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
505 ;; No rebinding, return t
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
506 t)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
507 ((eq key-fun (command-remapping def-fun))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
508 ;; Just a remapping, return t
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
509 t)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
510 ;; cua-mode specials:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
511 ((and cua-mode
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
512 (or (and
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
513 (equal key [?\C-v])
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
514 (eq key-fun 'cua-paste))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
515 (and
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
516 (equal key [?\C-z])
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
517 (eq key-fun 'undo))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
518 (setq remark (list "cua-mode, more info" 'cua-mode))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
519 nil)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
520 ((and cua-mode
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
521 (or
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
522 (and (eq def-fun 'ESC-prefix)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
523 (equal key-fun
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
524 `(keymap
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
525 (118 . cua-repeat-replace-region))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
526 (and (eq def-fun 'mode-specific-command-prefix)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
527 (equal key-fun
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
528 '(keymap
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
529 (timeout . copy-region-as-kill))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
530 (and (eq def-fun 'Control-X-prefix)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
531 (equal key-fun
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
532 '(keymap (timeout . kill-region))))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
533 (setq remark (list "cua-mode replacement" 'cua-mode))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
534 (cond
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
535 ((eq def-fun 'mode-specific-command-prefix)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
536 (setq def-fun-txt "\"C-c prefix\""))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
537 ((eq def-fun 'Control-X-prefix)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
538 (setq def-fun-txt "\"C-x prefix\""))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
539 ((eq def-fun 'ESC-prefix)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
540 (setq def-fun-txt "\"ESC prefix\"")))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
541 (setq where "Same key")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
542 nil)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
543 ;; viper-mode specials:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
544 ((and (boundp 'viper-mode-string)
73551
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
545 (boundp 'viper-current-state)
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
546 (eq viper-current-state 'vi-state)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
547 (or (and (eq def-fun 'isearch-forward)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
548 (eq key-fun 'viper-isearch-forward))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
549 (and (eq def-fun 'isearch-backward)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
550 (eq key-fun 'viper-isearch-backward))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
551 ;; These bindings works as the default bindings,
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
552 ;; return t
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
553 t)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
554 ((when normal-erase-is-backspace
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
555 (or (and (equal key [C-delete])
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
556 (equal key-fun 'kill-word))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
557 (and (equal key [C-backspace])
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
558 (equal key-fun 'backward-kill-word))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
559 ;; This is the strange handling of C-delete and
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
560 ;; C-backspace, return t
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
561 t)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
562 (t
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
563 ;; This key has indeed been rebound. Put information
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
564 ;; in `remark' and return nil
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
565 (setq remark
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
566 (list "more info" 'current-binding
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
567 key-fun def-fun key where))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
568 nil))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
569 (add-to-list 'changed-keys
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
570 (list key def-fun def-fun-txt where remark)))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
571 changed-keys))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
572
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
573 (defvar tutorial--tab-map
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
574 (let ((map (make-sparse-keymap)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
575 (define-key map [tab] 'forward-button)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
576 (define-key map [(shift tab)] 'backward-button)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
577 (define-key map [(meta tab)] 'backward-button)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
578 map)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
579 "Keymap that allows tabbing between buttons.")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
580
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
581 (defun tutorial--display-changes (changed-keys)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
582 "Display changes to some default key bindings.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
583 If some of the default key bindings that the tutorial depends on
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
584 have been changed then display the changes in the tutorial buffer
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
585 with some explanatory links.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
586
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
587 CHANGED-KEYS should be a list in the format returned by
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
588 `tutorial--find-changed-keys'."
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
589 (when (or changed-keys
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
590 (boundp 'viper-mode-string))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
591 ;; Need the custom button face for viper buttons:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
592 (when (boundp 'viper-mode-string)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
593 (require 'cus-edit))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
594 (let ((start (point))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
595 end
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
596 (head (get-lang-string tutorial--lang 'tut-chgdhead))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
597 (head2 (get-lang-string tutorial--lang 'tut-chgdhead2)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
598 (when (and head head2)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
599 (goto-char tutorial--point-before-chkeys)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
600 (insert head)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
601 (insert-button head2
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
602 'tutorial-buffer
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
603 (current-buffer)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
604 ;;'tutorial-arg arg
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
605 'action
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
606 'tutorial--detailed-help
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
607 'follow-link t
74100
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
608 'face 'link)
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
609 (insert "]\n\n" )
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
610 (when changed-keys
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
611 (dolist (tk changed-keys)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
612 (let* ((def-fun (nth 1 tk))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
613 (key (nth 0 tk))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
614 (def-fun-txt (nth 2 tk))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
615 (where (nth 3 tk))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
616 (remark (nth 4 tk))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
617 (rem-fun (command-remapping def-fun))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
618 (key-txt (key-description key))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
619 (key-fun (key-binding key))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
620 tot-len)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
621 (unless (eq def-fun key-fun)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
622 ;; Mark the key in the tutorial text
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
623 (unless (string= "Same key" where)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
624 (let ((here (point))
74100
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
625 (case-fold-search nil)
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
626 (key-desc (key-description key)))
74113
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
627 (cond ((string= "ESC" key-desc)
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
628 (setq key-desc "<ESC>"))
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
629 ((string= "RET" key-desc)
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
630 (setq key-desc "<Return>"))
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
631 ((string= "DEL" key-desc)
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
632 (setq key-desc "<Delback>")))
74100
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
633 (while (re-search-forward
74113
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
634 (concat "[[:space:]]\\("
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
635 (regexp-quote key-desc)
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
636 "\\)[[:space:]]") nil t)
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
637 (put-text-property (match-beginning 1)
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
638 (match-end 1)
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
639 'tutorial-remark 'only-colored)
74113
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
640 (put-text-property (match-beginning 1)
3cc044eb98b7 (tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents: 74100
diff changeset
641 (match-end 1)
74100
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
642 'face 'tutorial-warning-face)
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
643 (forward-line)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
644 (let ((s (get-lang-string tutorial--lang 'tut-chgdkey))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
645 (s2 (get-lang-string tutorial--lang 'tut-chgdkey2))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
646 (start (point))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
647 end)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
648 (when (and s s2)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
649 (setq s (format s key-desc where s2))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
650 (insert s)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
651 (insert-button s2
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
652 'tutorial-buffer
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
653 (current-buffer)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
654 ;;'tutorial-arg arg
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
655 'action
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
656 'tutorial--detailed-help
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
657 'explain-key-desc key-desc
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
658 'follow-link t
74100
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
659 'face 'link)
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
660 (insert "] **")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
661 (insert "\n")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
662 (setq end (point))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
663 (put-text-property start end 'local-map tutorial--tab-map)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
664 ;; Add a property so we can remove the remark:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
665 (put-text-property start end 'tutorial-remark t)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
666 (put-text-property start end
74100
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
667 'face 'tutorial-warning-face)
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
668 (put-text-property start end 'read-only t))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
669 (goto-char here)))))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
670
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
671
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
672 (setq end (point))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
673 ;; Make the area with information about change key
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
674 ;; bindings stand out:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
675 (put-text-property start end 'tutorial-remark t)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
676 (put-text-property start end
74100
9b8e3f194cc1 (tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents: 73567
diff changeset
677 'face 'tutorial-warning-face)
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
678 ;; Make it possible to use Tab/S-Tab between fields in
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
679 ;; this area:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
680 (put-text-property start end 'local-map tutorial--tab-map)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
681 (setq tutorial--point-after-chkeys (point-marker))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
682 ;; Make this area read-only:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
683 (put-text-property start end 'read-only t)))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
684
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
685 (defun tutorial--saved-dir ()
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
686 "Directory where to save tutorials."
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
687 (expand-file-name ".emacstut" "~/"))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
688
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
689 (defun tutorial--saved-file ()
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
690 "File name in which to save tutorials."
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
691 (let ((file-name tutorial--lang)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
692 (ext (file-name-extension tutorial--lang)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
693 (when (or (not ext)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
694 (string= ext ""))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
695 (setq file-name (concat file-name ".tut")))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
696 (expand-file-name file-name (tutorial--saved-dir))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
697
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
698 (defun tutorial--remove-remarks()
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
699 "Remove the remark lines that was added to the tutorial buffer."
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
700 (save-excursion
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
701 (goto-char (point-min))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
702 (let (prop-start
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
703 prop-end
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
704 prop-val)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
705 ;; Catch the case when we already are on a remark line
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
706 (while (if (get-text-property (point) 'tutorial-remark)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
707 (setq prop-start (point))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
708 (setq prop-start (next-single-property-change (point) 'tutorial-remark)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
709 (setq prop-end (next-single-property-change prop-start 'tutorial-remark))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
710 (setq prop-val (get-text-property prop-start 'tutorial-remark))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
711 (unless prop-end
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
712 (setq prop-end (point-max)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
713 (goto-char prop-end)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
714 (if (eq prop-val 'only-colored)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
715 (put-text-property prop-start prop-end 'face '(:background nil))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
716 (let ((orig-text (get-text-property prop-start 'tutorial-orig)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
717 (delete-region prop-start prop-end)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
718 (when orig-text (insert orig-text))))))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
719
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
720 (defun tutorial--save-tutorial ()
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
721 "Save the tutorial buffer.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
722 This saves the part of the tutorial before and after the area
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
723 showing changed keys. It also saves the point position and the
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
724 position where the display of changed bindings was inserted."
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
725 ;; This runs in a hook so protect it:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
726 (condition-case err
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
727 (tutorial--save-tutorial-to (tutorial--saved-file))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
728 (error (message "Error saving tutorial state: %s" (error-message-string err))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
729 (sit-for 4))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
730
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
731 (defun tutorial--save-tutorial-to (saved-file)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
732 "Save the tutorial buffer to SAVED-FILE.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
733 See `tutorial--save-tutorial' for more information."
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
734 ;; Anything to save?
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
735 (when (or (buffer-modified-p)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
736 (< 1 (point)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
737 (let ((tutorial-dir (tutorial--saved-dir))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
738 save-err)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
739 ;; The tutorial is saved in a subdirectory in the user home
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
740 ;; directory. Create this subdirectory first.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
741 (unless (file-directory-p tutorial-dir)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
742 (condition-case err
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
743 (make-directory tutorial-dir nil)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
744 (error (setq save-err t)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
745 (warn "Could not create directory %s: %s" tutorial-dir
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
746 (error-message-string err)))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
747 ;; Make sure we have that directory.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
748 (if (file-directory-p tutorial-dir)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
749 (let ((tut-point (if (= 0 tutorial--point-after-chkeys)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
750 ;; No info about changed keys is
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
751 ;; displayed.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
752 (point)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
753 (if (< (point) tutorial--point-after-chkeys)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
754 (- (point))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
755 (- (point) tutorial--point-after-chkeys))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
756 (old-point (point))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
757 ;; Use a special undo list so that we easily can undo
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
758 ;; the changes we make to the tutorial buffer. This is
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
759 ;; currently not needed since we now delete the buffer
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
760 ;; after saving, but kept for possible future use of
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
761 ;; this function.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
762 buffer-undo-list
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
763 (inhibit-read-only t))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
764 ;; Delete the area displaying info about changed keys.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
765 ;; (when (< 0 tutorial--point-after-chkeys)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
766 ;; (delete-region tutorial--point-before-chkeys
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
767 ;; tutorial--point-after-chkeys))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
768 ;; Delete the remarks:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
769 (tutorial--remove-remarks)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
770 ;; Put the value of point first in the buffer so it will
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
771 ;; be saved with the tutorial.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
772 (goto-char (point-min))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
773 (insert (number-to-string tut-point)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
774 "\n"
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
775 (number-to-string (marker-position
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
776 tutorial--point-before-chkeys))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
777 "\n")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
778 (condition-case err
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
779 (write-region nil nil saved-file)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
780 (error (setq save-err t)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
781 (warn "Could not save tutorial to %s: %s"
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
782 saved-file
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
783 (error-message-string err))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
784 ;; An error is raised here?? Is this a bug?
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
785 (condition-case err
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
786 (undo-only)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
787 (error nil))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
788 ;; Restore point
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
789 (goto-char old-point)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
790 (if save-err
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
791 (message "Could not save tutorial state.")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
792 (message "Saved tutorial state.")))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
793 (message "Can't save tutorial: %s is not a directory"
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
794 tutorial-dir)))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
795
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
796
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
797 ;;;###autoload
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
798 (defun help-with-tutorial (&optional arg dont-ask-for-revert)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
799 "Select the Emacs learn-by-doing tutorial.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
800 If there is a tutorial version written in the language
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
801 of the selected language environment, that version is used.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
802 If there's no tutorial in that language, `TUTORIAL' is selected.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
803 With ARG, you are asked to choose which language.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
804 If DONT-ASK-FOR-REVERT is non-nil the buffer is reverted without
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
805 any question when restarting the tutorial.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
806
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
807 If any of the standard Emacs key bindings that are used in the
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
808 tutorial have been changed then an explanatory note about this is
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
809 shown in the beginning of the tutorial buffer.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
810
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
811 When the tutorial buffer is killed the content and the point
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
812 position in the buffer is saved so that the tutorial may be
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
813 resumed later."
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
814 (interactive "P")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
815 (if (boundp 'viper-current-state)
73551
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
816 (let ((prompt1
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
817 "You can not run the Emacs tutorial directly because you have \
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
818 enabled Viper.")
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
819 (prompt2 "\nThere is however a Viper tutorial you can run instead.
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
820 Run the Viper tutorial? "))
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
821 (if (fboundp 'viper-tutorial)
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
822 (if (y-or-n-p (concat prompt1 prompt2))
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
823 (progn (message "")
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
824 (funcall 'viper-tutorial 0))
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
825 (message "Tutorial aborted by user"))
8bd77d06776b * tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents: 73550
diff changeset
826 (message prompt1)))
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
827 (let* ((lang (if arg
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
828 (let ((minibuffer-setup-hook minibuffer-setup-hook))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
829 (add-hook 'minibuffer-setup-hook
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
830 'minibuffer-completion-help)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
831 (read-language-name 'tutorial "Language: " "English"))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
832 (if (get-language-info current-language-environment 'tutorial)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
833 current-language-environment
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
834 "English")))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
835 (filename (get-language-info lang 'tutorial))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
836 ;; Choose a buffer name including the language so that
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
837 ;; several languages can be tested simultaneously:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
838 (tut-buf-name (concat "TUTORIAL (" lang ")"))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
839 (old-tut-buf (get-buffer tut-buf-name))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
840 (old-tut-win (when old-tut-buf (get-buffer-window old-tut-buf t)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
841 (old-tut-is-ok (when old-tut-buf
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
842 (not (buffer-modified-p old-tut-buf))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
843 old-tut-file
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
844 (old-tut-point 1))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
845 (setq tutorial--point-after-chkeys (point-min))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
846 ;; Try to display the tutorial buffer before asking to revert it.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
847 ;; If the tutorial buffer is shown in some window make sure it is
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
848 ;; selected and displayed:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
849 (if old-tut-win
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
850 (raise-frame
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
851 (window-frame
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
852 (select-window (get-buffer-window old-tut-buf t))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
853 ;; Else, is there an old tutorial buffer? Then display it:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
854 (when old-tut-buf
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
855 (switch-to-buffer old-tut-buf)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
856 ;; Use whole frame for tutorial
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
857 (delete-other-windows)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
858 ;; If the tutorial buffer has been changed then ask if it should
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
859 ;; be reverted:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
860 (when (and old-tut-buf
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
861 (not old-tut-is-ok))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
862 (setq old-tut-is-ok
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
863 (if dont-ask-for-revert
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
864 nil
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
865 (not (y-or-n-p
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
866 "You have changed the Tutorial buffer. Revert it? ")))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
867 ;; (Re)build the tutorial buffer if it is not ok
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
868 (unless old-tut-is-ok
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
869 (switch-to-buffer (get-buffer-create tut-buf-name))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
870 (unless old-tut-buf (text-mode))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
871 (unless lang (error "Variable lang is nil"))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
872 (setq tutorial--lang lang)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
873 (setq old-tut-file (file-exists-p (tutorial--saved-file)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
874 (let ((inhibit-read-only t))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
875 (erase-buffer))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
876 (message "Preparing tutorial ...") (sit-for 0)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
877
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
878 ;; Do not associate the tutorial buffer with a file. Instead use
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
879 ;; a hook to save it when the buffer is killed.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
880 (setq buffer-auto-save-file-name nil)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
881 (add-hook 'kill-buffer-hook 'tutorial--save-tutorial nil t)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
882
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
883 ;; Insert the tutorial. First offer to resume last tutorial
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
884 ;; editing session.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
885 (when dont-ask-for-revert
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
886 (setq old-tut-file nil))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
887 (when old-tut-file
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
888 (setq old-tut-file
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
889 (y-or-n-p "Resume your last saved tutorial? ")))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
890 (if old-tut-file
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
891 (progn
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
892 (insert-file-contents (tutorial--saved-file))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
893 (goto-char (point-min))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
894 (setq old-tut-point
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
895 (string-to-number
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
896 (buffer-substring-no-properties
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
897 (line-beginning-position) (line-end-position))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
898 (forward-line)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
899 (setq tutorial--point-before-chkeys
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
900 (string-to-number
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
901 (buffer-substring-no-properties
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
902 (line-beginning-position) (line-end-position))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
903 (forward-line)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
904 (delete-region (point-min) (point))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
905 (goto-char tutorial--point-before-chkeys)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
906 (setq tutorial--point-before-chkeys (point-marker)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
907 (insert-file-contents (expand-file-name filename data-directory))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
908 (forward-line)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
909 (setq tutorial--point-before-chkeys (point-marker)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
910
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
911
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
912 ;; Check if there are key bindings that may disturb the
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
913 ;; tutorial. If so tell the user.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
914 (let ((changed-keys (tutorial--find-changed-keys tutorial--default-keys)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
915 (when changed-keys
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
916 (tutorial--display-changes changed-keys)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
917
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
918
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
919 ;; Clear message:
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
920 (unless dont-ask-for-revert
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
921 (message "") (sit-for 0))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
922
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
923
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
924 (if old-tut-file
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
925 ;; Just move to old point in saved tutorial.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
926 (let ((old-point
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
927 (if (> 0 old-tut-point)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
928 (- old-tut-point)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
929 (+ old-tut-point tutorial--point-after-chkeys))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
930 (when (< old-point 1)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
931 (setq old-point 1))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
932 (goto-char old-point))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
933 (goto-char (point-min))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
934 (search-forward "\n<<")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
935 (beginning-of-line)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
936 ;; Convert the <<...>> line to the proper [...] line,
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
937 ;; or just delete the <<...>> line if a [...] line follows.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
938 (cond ((save-excursion
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
939 (forward-line 1)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
940 (looking-at "\\["))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
941 (delete-region (point) (progn (forward-line 1) (point))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
942 ((looking-at "<<Blank lines inserted.*>>")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
943 (replace-match "[Middle of page left blank for didactic purposes. Text continues below]"))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
944 (t
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
945 (looking-at "<<")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
946 (replace-match "[")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
947 (search-forward ">>")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
948 (replace-match "]")))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
949 (beginning-of-line)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
950 (let ((n (- (window-height (selected-window))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
951 (count-lines (point-min) (point))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
952 6)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
953 (if (< n 8)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
954 (progn
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
955 ;; For a short gap, we don't need the [...] line,
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
956 ;; so delete it.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
957 (delete-region (point) (progn (end-of-line) (point)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
958 (newline n))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
959 ;; Some people get confused by the large gap.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
960 (newline (/ n 2))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
961
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
962 ;; Skip the [...] line (don't delete it).
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
963 (forward-line 1)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
964 (newline (- n (/ n 2)))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
965 (goto-char (point-min)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
966 (setq buffer-undo-list nil)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
967 (set-buffer-modified-p nil)))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
968
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
969
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
970 ;; Below is some attempt to handle language specific strings. These
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
971 ;; are currently only used in the tutorial.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
972
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
973 (defconst lang-strings
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
974 '(
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
975 ("English" .
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
976 (
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
977 (tut-chgdkey . "** The key %s has been rebound, but you can use %s instead [")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
978 (tut-chgdkey2 . "More information")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
979 (tut-chgdhead . "
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
980 NOTICE: The main purpose of the Emacs tutorial is to teach you
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
981 the most important standard Emacs commands (key bindings).
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
982 However, your Emacs has been customized by changing some of
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
983 these basic editing commands, so it doesn't correspond to the
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
984 tutorial. We have inserted colored notices where the altered
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
985 commands have been introduced. [")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
986 (tut-chgdhead2 . "Details")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
987 )
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
988 )
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
989 )
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
990 "Language specific strings for Emacs.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
991 This is an association list with the keys equal to the strings
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
992 that can be returned by `read-language-name'. The elements in
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
993 the list are themselves association lists with keys that are
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
994 string ids and values that are the language specific strings.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
995
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
996 See `get-lang-string' for more information.")
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
997
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
998 (defun get-lang-string(lang stringid &optional no-eng-fallback)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
999 "Get a language specific string for Emacs.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1000 In certain places Emacs can replace a string showed to the user with a language specific string.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1001 This function retrieves such strings.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1002
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1003 LANG is the language specification. It should be one of those
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1004 strings that can be returned by `read-language-name'. STRINGID
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1005 is a symbol that specifies the string to retrieve.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1006
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1007 If no string is found for STRINGID in the choosen language then
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1008 the English string is returned unless NO-ENG-FALLBACK is non-nil.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1009
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1010 See `lang-strings' for more information.
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1011
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1012 Currently this feature is only used in `help-with-tutorial'."
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1013 (let ((my-lang-strings (assoc lang lang-strings))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1014 (found-string))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1015 (when my-lang-strings
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1016 (let ((entry (assoc stringid (cdr my-lang-strings))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1017 (when entry
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1018 (setq found-string (cdr entry)))))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1019 ;; Fallback to English strings
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1020 (unless (or found-string
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1021 no-eng-fallback)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1022 (setq found-string (get-lang-string "English" stringid t)))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1023 found-string))
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1024
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1025 ;;(get-lang-string "English" 'tut-chgdkey)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1026
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1027 (provide 'tutorial)
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1028
73567
14e412e445c1 Add arch tagline
Miles Bader <miles@gnu.org>
parents: 73552
diff changeset
1029 ;; arch-tag: c8e80aef-c3bb-4ffb-8af6-22171bf0c100
73550
6deaec97f21b * help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1030 ;;; tutorial.el ends here