Mercurial > emacs
annotate lisp/tutorial.el @ 74789:ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Replace '?\ ' by '?\s' throughout.
(tutorial-warning-face): Inherit font-lock-warning-face. Move to
`help' custom group.
(tutorial--key-description): New function.
(tutorial--display-changes): Remove redundant arg. Scan for all
key sequences to avoid false matches. Cleanup.
(tutorial--saved-dir): Save to a subdirectory in .emacs.d to
reduce homedir pollution.
(help-with-tutorial): Call tutorial--display-changes with no arg.
| author | Chong Yidong <cyd@stupidchicken.com> |
|---|---|
| date | Thu, 21 Dec 2006 17:26:00 +0000 |
| parents | 3cc044eb98b7 |
| children | 4404b91f3a72 |
| 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 |
|
74100
9b8e3f194cc1
(tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents:
73567
diff
changeset
|
37 (defface tutorial-warning-face |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
38 '((t :inherit font-lock-warning-face)) |
|
74100
9b8e3f194cc1
(tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents:
73567
diff
changeset
|
39 "Face used to highlight warnings in the tutorial." |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
40 :group 'help) |
|
74100
9b8e3f194cc1
(tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents:
73567
diff
changeset
|
41 |
|
73551
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
42 (defvar tutorial--point-before-chkeys 0 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
43 "Point before display of key changes.") |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
44 (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
|
45 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
46 (defvar tutorial--point-after-chkeys 0 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
47 "Point after display of key changes.") |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
48 (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
|
49 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
50 (defvar tutorial--lang nil |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
51 "Tutorial language.") |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
52 (make-variable-buffer-local 'tutorial--lang) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
53 |
| 73552 | 54 (defun tutorial--describe-nonstandard-key (value) |
| 55 "Give more information about a changed key binding. | |
| 56 This is used in `help-with-tutorial'. The information includes | |
| 57 the key sequence that no longer has a default binding, the | |
| 58 default binding and the current binding. It also tells in what | |
| 59 keymap the new binding has been done and how to access the | |
| 60 function in the default binding from the keyboard. | |
| 61 | |
| 62 For `cua-mode' key bindings that try to combine CUA key bindings | |
| 63 with default Emacs bindings information about this is shown. | |
| 64 | |
| 65 VALUE should have either of these formats: | |
| 66 | |
| 67 \(cua-mode) | |
| 68 \(current-binding KEY-FUN DEF-FUN KEY WHERE) | |
| 69 | |
| 70 Where | |
| 71 KEY is a key sequence whose standard binding has been changed | |
| 72 KEY-FUN is the actual binding for KEY | |
| 73 DEF-FUN is the standard binding of KEY | |
| 74 WHERE is a text describing the key sequences to which DEF-FUN is | |
| 75 bound now (or, if it is remapped, a key sequence | |
| 76 for the function it is remapped to)" | |
| 77 (with-output-to-temp-buffer (help-buffer) | |
| 78 (help-setup-xref (list #'tutorial--describe-nonstandard-key value) | |
| 79 (interactive-p)) | |
| 80 (with-current-buffer (help-buffer) | |
| 81 (insert | |
| 82 "Your Emacs customizations override the default binding for this key:" | |
| 83 "\n\n") | |
| 84 (let ((inhibit-read-only t)) | |
| 85 (cond | |
| 86 ((eq (car value) 'cua-mode) | |
| 87 (insert | |
| 88 "CUA mode is enabled. | |
| 89 | |
| 90 When CUA mode is enabled, you can use C-z, C-x, C-c, and C-v to | |
| 91 undo, cut, copy, and paste in addition to the normal Emacs | |
| 92 bindings. The C-x and C-c keys only do cut and copy when the | |
| 93 region is active, so in most cases, they do not conflict with the | |
| 94 normal function of these prefix keys. | |
| 95 | |
| 96 If you really need to perform a command which starts with one of | |
| 97 the prefix keys even when the region is active, you have three | |
| 98 options: | |
| 99 - press the prefix key twice very quickly (within 0.2 seconds), | |
| 100 - press the prefix key and the following key within 0.2 seconds, or | |
| 101 - use the SHIFT key with the prefix key, i.e. C-S-x or C-S-c.")) | |
| 102 ((eq (car value) 'current-binding) | |
| 103 (let ((cb (nth 1 value)) | |
| 104 (db (nth 2 value)) | |
| 105 (key (nth 3 value)) | |
| 106 (where (nth 4 value)) | |
| 107 map | |
| 108 (maps (current-active-maps)) | |
| 109 mapsym) | |
| 110 ;; Look at the currently active keymaps and try to find | |
| 111 ;; first the keymap where the current binding occurs: | |
| 112 (while maps | |
| 113 (let* ((m (car maps)) | |
| 114 (mb (lookup-key m key t))) | |
| 115 (setq maps (cdr maps)) | |
| 116 (when (eq mb cb) | |
| 117 (setq map m) | |
| 118 (setq maps nil)))) | |
| 119 ;; Now, if a keymap was found we must found the symbol | |
| 120 ;; name for it to display to the user. This can not | |
| 121 ;; always be found since all keymaps does not have a | |
| 122 ;; symbol pointing to them, but here they should have | |
| 123 ;; that: | |
| 124 (when map | |
| 125 (mapatoms (lambda (s) | |
| 126 (and | |
| 127 ;; If not already found | |
| 128 (not mapsym) | |
| 129 ;; and if s is a keymap | |
| 130 (and (boundp s) | |
| 131 (keymapp (symbol-value s))) | |
| 132 ;; and not the local symbol map | |
| 133 (not (eq s 'map)) | |
| 134 ;; and the value of s is map | |
| 135 (eq map (symbol-value s)) | |
| 136 ;; then save this value in mapsym | |
| 137 (setq mapsym s))))) | |
| 138 (insert "The default Emacs binding for the key " | |
| 139 (key-description key) | |
| 140 " is the command `") | |
| 141 (insert (format "%s" db)) | |
| 142 (insert "'. " | |
| 143 "However, your customizations have rebound it to the command `") | |
| 144 (insert (format "%s" cb)) | |
| 145 (insert "'.") | |
| 146 (when mapsym | |
| 147 (insert " (For the more advanced user:" | |
| 148 " This binding is in the keymap `" | |
| 149 (format "%s" mapsym) | |
| 150 "'.)")) | |
| 151 (if (string= where "") | |
| 152 (unless (keymapp db) | |
| 153 (insert "\n\nYou can use M-x " | |
| 154 (format "%s" db) | |
| 155 " RET instead.")) | |
| 156 (insert "\n\nWith you current key bindings" | |
| 157 " you can use the key " | |
| 158 where | |
| 159 " to get the function `" | |
| 160 (format "%s" db) | |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
161 "'."))) |
| 73552 | 162 (fill-region (point-min) (point))))) |
| 163 (print-help-return-message)))) | |
| 164 | |
| 165 (defun tutorial--sort-keys (left right) | |
| 166 "Sort predicate for use with `tutorial--default-keys'. | |
| 167 This is a predicate function to `sort'. | |
| 168 | |
| 169 The sorting is for presentation purpose only and is done on the | |
| 170 key sequence. | |
| 171 | |
| 172 LEFT and RIGHT are the elements to compare." | |
| 173 (let ((x (append (cadr left) nil)) | |
| 174 (y (append (cadr right) nil))) | |
| 175 ;; Skip the front part of the key sequences if they are equal: | |
| 176 (while (and x y | |
| 177 (listp x) (listp y) | |
| 178 (equal (car x) (car y))) | |
| 179 (setq x (cdr x)) | |
| 180 (setq y (cdr y))) | |
| 181 ;; Try to make a comparision that is useful for presentation (this | |
| 182 ;; could be made nicer perhaps): | |
| 183 (let ((cx (car x)) | |
| 184 (cy (car y))) | |
| 185 ;;(message "x=%s, y=%s;;;; cx=%s, cy=%s" x y cx cy) | |
| 186 (cond | |
| 187 ;; Lists? Then call this again | |
| 188 ((and cx cy | |
| 189 (listp cx) | |
| 190 (listp cy)) | |
| 191 (tutorial--sort-keys cx cy)) | |
| 192 ;; Are both numbers? Then just compare them | |
| 193 ((and (wholenump cx) | |
| 194 (wholenump cy)) | |
| 195 (> cx cy)) | |
| 196 ;; Is one of them a number? Let that be bigger then. | |
| 197 ((wholenump cx) | |
| 198 t) | |
| 199 ((wholenump cy) | |
| 200 nil) | |
| 201 ;; Are both symbols? Compare the names then. | |
| 202 ((and (symbolp cx) | |
| 203 (symbolp cy)) | |
| 204 (string< (symbol-name cy) | |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
205 (symbol-name cx))))))) |
| 73552 | 206 |
|
73551
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
207 (defconst tutorial--default-keys |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
208 ;; On window system, `suspend-emacs' is replaced in the default |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
209 ;; keymap |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
210 (let* ((suspend-emacs (if window-system |
|
73551
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
211 'iconify-or-deiconify-frame |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
212 'suspend-emacs)) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
213 (default-keys |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
214 `((ESC-prefix [27]) |
|
73551
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
215 (Control-X-prefix [?\C-x]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
216 (mode-specific-command-prefix [?\C-c]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
217 (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
|
218 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
219 ;; * SUMMARY |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
220 (scroll-up [?\C-v]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
221 (scroll-down [?\M-v]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
222 (recenter [?\C-l]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
223 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
224 ;; * BASIC CURSOR CONTROL |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
225 (forward-char [?\C-f]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
226 (backward-char [?\C-b]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
227 (forward-word [?\M-f]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
228 (backward-word [?\M-b]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
229 (next-line [?\C-n]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
230 (previous-line [?\C-p]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
231 (move-beginning-of-line [?\C-a]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
232 (move-end-of-line [?\C-e]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
233 (backward-sentence [?\M-a]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
234 (forward-sentence [?\M-e]) |
|
74113
3cc044eb98b7
(tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents:
74100
diff
changeset
|
235 (newline "\r") |
|
73551
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
236 (beginning-of-buffer [?\M-<]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
237 (end-of-buffer [?\M->]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
238 (universal-argument [?\C-u]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
239 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
240 ;; * WHEN EMACS IS HUNG |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
241 (keyboard-quit [?\C-g]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
242 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
243 ;; * DISABLED COMMANDS |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
244 (downcase-region [?\C-x ?\C-l]) |
|
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 ;; * WINDOWS |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
247 (delete-other-windows [?\C-x ?1]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
248 ;; C-u 0 C-l |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
249 ;; Type CONTROL-h k CONTROL-f. |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
250 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
251 ;; * INSERTING AND DELETING |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
252 ;; C-u 8 * to insert ********. |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
253 (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
|
254 (delete-backward-char "\d") |
|
73551
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
255 (delete-char [?\C-d]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
256 (backward-kill-word [(meta backspace)]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
257 (kill-word [?\M-d]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
258 (kill-line [?\C-k]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
259 (kill-sentence [?\M-k]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
260 (set-mark-command [?\C-@]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
261 (set-mark-command [?\C- ]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
262 (kill-region [?\C-w]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
263 (yank [?\C-y]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
264 (yank-pop [?\M-y]) |
|
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 ;; * UNDO |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
267 (advertised-undo [?\C-x ?u]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
268 (advertised-undo [?\C-x ?u]) |
|
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 ;; * FILES |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
271 (find-file [?\C-x ?\C-f]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
272 (save-buffer [?\C-x ?\C-s]) |
|
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 ;; * BUFFERS |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
275 (list-buffers [?\C-x ?\C-b]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
276 (switch-to-buffer [?\C-x ?b]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
277 (save-some-buffers [?\C-x ?s]) |
|
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 ;; * EXTENDING THE COMMAND SET |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
280 ;; 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
|
281 (execute-extended-command [?\M-x]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
282 ;; C-x C-f Find file |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
283 ;; C-x C-s Save file |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
284 ;; C-x s Save some buffers |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
285 ;; C-x C-b List buffers |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
286 ;; C-x b Switch buffer |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
287 ;; C-x C-c Quit Emacs |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
288 ;; 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
|
289 ;; C-x u Undo |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
290 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
291 ;; * MODE LINE |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
292 (describe-mode [?\C-h ?m]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
293 (set-fill-column [?\C-x ?f]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
294 (fill-paragraph [?\M-q]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
295 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
296 ;; * SEARCHING |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
297 (isearch-forward [?\C-s]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
298 (isearch-backward [?\C-r]) |
|
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 ;; * MULTIPLE WINDOWS |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
301 (split-window-vertically [?\C-x ?2]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
302 (scroll-other-window [?\C-\M-v]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
303 (other-window [?\C-x ?o]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
304 (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
|
305 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
306 ;; * RECURSIVE EDITING LEVELS |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
307 (keyboard-escape-quit [27 27 27]) |
|
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 ;; * GETTING MORE HELP |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
310 ;; 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
|
311 (describe-key-briefly [?\C-h ?c]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
312 (describe-key [?\C-h ?k]) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
313 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
314 ;; * MORE FEATURES |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
315 ;; F10 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
316 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
317 ;; * CONCLUSION |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
318 ;;(iconify-or-deiconify-frame [?\C-z]) |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
319 (,suspend-emacs [?\C-z])))) |
|
73551
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
320 (sort default-keys 'tutorial--sort-keys)) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
321 "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
|
322 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
323 (defun tutorial--detailed-help (button) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
324 "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
|
325 (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
|
326 (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
|
327 (interactive-p)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
328 (with-current-buffer (help-buffer) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
329 (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
|
330 (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
|
331 (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
|
332 (save-excursion |
|
3cc044eb98b7
(tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents:
74100
diff
changeset
|
333 (goto-char (point-min)) |
|
3cc044eb98b7
(tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents:
74100
diff
changeset
|
334 (tutorial--find-changed-keys |
|
3cc044eb98b7
(tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents:
74100
diff
changeset
|
335 tutorial--default-keys))))) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
336 (when changed-keys |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
337 (insert |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
338 "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
|
339 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
|
340 (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
|
341 (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
|
342 (dolist (tk changed-keys) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
343 (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
|
344 (key (nth 0 tk)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
345 (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
|
346 (where (nth 3 tk)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
347 (remark (nth 4 tk)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
348 (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
|
349 (key-txt (key-description key)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
350 (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
|
351 tot-len) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
352 (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
|
353 ;; Insert key binding description: |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
354 (when (string= key-txt explain-key-desc) |
|
74100
9b8e3f194cc1
(tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents:
73567
diff
changeset
|
355 (put-text-property 0 (length key-txt) |
|
9b8e3f194cc1
(tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents:
73567
diff
changeset
|
356 '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
|
357 (insert " " key-txt " ") |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
358 (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
|
359 (when (> 9 tot-len) |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
360 (insert (make-string (- 9 tot-len) ?\s)) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
361 (setq tot-len 9)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
362 ;; 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
|
363 (insert-button def-fun-txt |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
364 'value def-fun |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
365 'action |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
366 (lambda(button) (interactive) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
367 (describe-function |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
368 (button-get button 'value))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
369 'follow-link t) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
370 (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
|
371 (when (> 36 tot-len) |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
372 (insert (make-string (- 36 tot-len) ?\s))) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
373 (when (listp where) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
374 (setq where "list")) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
375 ;; 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
|
376 (insert (format " %-11s " |
|
3cc044eb98b7
(tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents:
74100
diff
changeset
|
377 (if (string= "" where) |
|
3cc044eb98b7
(tutorial--default-keys): Add newline and delete-backward-char bindings.
Chong Yidong <cyd@stupidchicken.com>
parents:
74100
diff
changeset
|
378 (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
|
379 where))) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
380 ;; 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
|
381 ;; 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
|
382 ;; cua-mode replacements: |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
383 (insert-button (car remark) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
384 'action |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
385 (lambda(b) (interactive) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
386 (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
|
387 (tutorial--describe-nonstandard-key value))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
388 'value (cdr remark) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
389 'follow-link t) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
390 (insert "\n"))))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
391 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
392 (insert " |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
393 It is OK to change key bindings, but changed bindings do not |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
394 correspond to what the tutorial says. (See also ") |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
395 (insert-button "Key Binding Conventions" |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
396 'action |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
397 (lambda(button) (interactive) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
398 (info |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
399 "(elisp) Key Binding Conventions") |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
400 (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
|
401 'follow-link t) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
402 (insert ".)\n\n") |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
403 (print-help-return-message))))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
404 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
405 (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
|
406 "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
|
407 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
|
408 on have been changed. |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
409 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
410 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
|
411 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
|
412 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
413 \(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
|
414 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
415 Where |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
416 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
|
417 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
|
418 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
|
419 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
|
420 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
|
421 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
|
422 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
|
423 formats: |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
424 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
425 \(TEXT cua-mode) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
426 \(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
|
427 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
428 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
|
429 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
|
430 the user clicks the link. |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
431 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
432 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
|
433 (let (changed-keys remark) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
434 (dolist (kdf default-keys) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
435 ;; 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
|
436 ;; described in the doc string. |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
437 (let* ((key (nth 1 kdf)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
438 (def-fun (nth 0 kdf)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
439 (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
|
440 (rem-fun (command-remapping def-fun)) |
|
74100
9b8e3f194cc1
(tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents:
73567
diff
changeset
|
441 (key-fun (if (eq def-fun 'ESC-prefix) |
|
9b8e3f194cc1
(tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents:
73567
diff
changeset
|
442 (lookup-key global-map [27]) |
|
9b8e3f194cc1
(tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents:
73567
diff
changeset
|
443 (key-binding key))) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
444 (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
|
445 (if where |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
446 (progn |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
447 (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
|
448 (when (and (< 10 (length where)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
449 (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
|
450 "<menu-bar>")) |
|
74100
9b8e3f194cc1
(tutorial-warning-face): New face.
Chong Yidong <cyd@stupidchicken.com>
parents:
73567
diff
changeset
|
451 (setq where "the menus"))) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
452 (setq where "")) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
453 (setq remark nil) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
454 (unless |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
455 (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
|
456 ;; No rebinding, return t |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
457 t) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
458 ((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
|
459 ;; Just a remapping, return t |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
460 t) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
461 ;; cua-mode specials: |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
462 ((and cua-mode |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
463 (or (and |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
464 (equal key [?\C-v]) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
465 (eq key-fun 'cua-paste)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
466 (and |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
467 (equal key [?\C-z]) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
468 (eq key-fun 'undo)))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
469 (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
|
470 nil) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
471 ((and cua-mode |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
472 (or |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
473 (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
|
474 (equal key-fun |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
475 `(keymap |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
476 (118 . cua-repeat-replace-region)))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
477 (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
|
478 (equal key-fun |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
479 '(keymap |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
480 (timeout . copy-region-as-kill)))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
481 (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
|
482 (equal key-fun |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
483 '(keymap (timeout . kill-region)))))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
484 (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
|
485 (cond |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
486 ((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
|
487 (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
|
488 ((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
|
489 (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
|
490 ((eq def-fun 'ESC-prefix) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
491 (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
|
492 (setq where "Same key") |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
493 nil) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
494 ;; viper-mode specials: |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
495 ((and (boundp 'viper-mode-string) |
|
73551
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
496 (boundp 'viper-current-state) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
497 (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
|
498 (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
|
499 (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
|
500 (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
|
501 (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
|
502 ;; 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
|
503 ;; return t |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
504 t) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
505 ((when normal-erase-is-backspace |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
506 (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
|
507 (equal key-fun 'kill-word)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
508 (and (equal key [C-backspace]) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
509 (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
|
510 ;; 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
|
511 ;; C-backspace, return t |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
512 t) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
513 (t |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
514 ;; 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
|
515 ;; in `remark' and return nil |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
516 (setq remark |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
517 (list "more info" 'current-binding |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
518 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
|
519 nil)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
520 (add-to-list 'changed-keys |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
521 (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
|
522 changed-keys)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
523 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
524 (defvar tutorial--tab-map |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
525 (let ((map (make-sparse-keymap))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
526 (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
|
527 (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
|
528 (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
|
529 map) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
530 "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
|
531 |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
532 (defun tutorial--key-description (key) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
533 (let ((desc (key-description key))) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
534 (cond ((string= "ESC" desc) "<ESC>") |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
535 ((string= "RET" desc) "<Return>") |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
536 ((string= "DEL" desc) "<Delback>") |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
537 (t desc)))) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
538 |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
539 (defun tutorial--display-changes () |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
540 "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
|
541 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
|
542 have been changed then display the changes in the tutorial buffer |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
543 with some explanatory links." |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
544 (let* ((changed-keys (tutorial--find-changed-keys |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
545 tutorial--default-keys)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
546 ;; Alist of element (DESC . CK) where DESC is the |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
547 ;; key-description of a changed key and CK is the |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
548 ;; corresponding element in `changed-keys'. |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
549 (changed-keys-alist |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
550 (mapcar (lambda (ck) (cons (tutorial--key-description (car ck)) ck)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
551 changed-keys)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
552 (start (point)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
553 (case-fold-search nil) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
554 (keybindings-regexp |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
555 (concat "[[:space:]]\\(" |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
556 (mapconcat (lambda (kdf) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
557 (regexp-quote |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
558 (tutorial--key-description |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
559 (nth 1 kdf)))) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
560 tutorial--default-keys |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
561 "\\|") |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
562 "\\)[[:punct:][:space:]]"))) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
563 ;; Need the custom button face for viper buttons: |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
564 (if (boundp 'viper-mode-string) (require 'cus-edit)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
565 |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
566 (if (or changed-keys (boundp 'viper-mode-string)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
567 (let ((head (get-lang-string tutorial--lang 'tut-chgdhead)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
568 (head2 (get-lang-string tutorial--lang 'tut-chgdhead2))) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
569 (when (and head head2) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
570 (goto-char tutorial--point-before-chkeys) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
571 (insert head) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
572 (insert-button head2 'tutorial-buffer (current-buffer) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
573 'action 'tutorial--detailed-help |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
574 'follow-link t 'face 'link) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
575 (insert "]\n\n") |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
576 (add-text-properties tutorial--point-before-chkeys (point) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
577 '(local-map tutorial--tab-map |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
578 tutorial-remark t |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
579 face tutorial-warning-face |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
580 read-only t))))) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
581 |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
582 ;; Scan the tutorial for all key sequences. |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
583 (goto-char (point-min)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
584 (while (re-search-forward keybindings-regexp (point-max) t) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
585 ;; Then highlight each rebound key sequence. |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
586 ;; This avoids issuing a warning for, e.g., C-x C-b if C-b is rebound. |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
587 (let ((changed-key (assoc (match-string 1) changed-keys-alist))) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
588 (and changed-key |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
589 (not (get-text-property (match-beginning 1) 'tutorial-remark)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
590 (let* ((desc (car changed-key)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
591 (ck (cdr changed-key)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
592 (key (nth 0 ck)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
593 (def-fun (nth 1 ck)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
594 (where (nth 3 ck))) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
595 (unless (string= where "Same key") |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
596 (setq tutorial--point-after-chkeys (point-marker)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
597 (put-text-property (match-beginning 1) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
598 (match-end 1) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
599 'face 'tutorial-warning-face) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
600 (put-text-property (match-beginning 1) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
601 (match-end 1) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
602 'tutorial-remark t) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
603 (save-excursion |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
604 (forward-line) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
605 (let ((s (get-lang-string tutorial--lang 'tut-chgdkey)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
606 (s2 (get-lang-string tutorial--lang 'tut-chgdkey2)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
607 (start (point))) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
608 (when (and s s2) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
609 (insert (format s desc where s2)) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
610 (insert-button s2 'tutorial-buffer (current-buffer) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
611 'action 'tutorial--detailed-help |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
612 'explain-key-desc desc 'follow-link t |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
613 'face 'link) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
614 (insert "] **\n") |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
615 (add-text-properties start (point) |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
616 '(local-map tutorial--tab-map |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
617 tutorial-remark t |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
618 face tutorial-warning-face |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
619 read-only t)))))))))))) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
620 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
621 (defun tutorial--saved-dir () |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
622 "Directory to which tutorials are saved." |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
623 (expand-file-name "tutorial" |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
624 (if (eq system-type 'ms-dos) "~/_emacs.d/" "~/.emacs.d/"))) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
625 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
626 (defun tutorial--saved-file () |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
627 "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
|
628 (let ((file-name tutorial--lang) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
629 (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
|
630 (when (or (not ext) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
631 (string= ext "")) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
632 (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
|
633 (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
|
634 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
635 (defun tutorial--remove-remarks() |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
636 "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
|
637 (save-excursion |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
638 (goto-char (point-min)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
639 (let (prop-start |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
640 prop-end |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
641 prop-val) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
642 ;; 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
|
643 (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
|
644 (setq prop-start (point)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
645 (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
|
646 (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
|
647 (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
|
648 (unless prop-end |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
649 (setq prop-end (point-max))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
650 (goto-char prop-end) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
651 (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
|
652 (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
|
653 (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
|
654 (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
|
655 (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
|
656 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
657 (defun tutorial--save-tutorial () |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
658 "Save the tutorial buffer. |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
659 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
|
660 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
|
661 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
|
662 ;; 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
|
663 (condition-case err |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
664 (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
|
665 (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
|
666 (sit-for 4)))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
667 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
668 (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
|
669 "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
|
670 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
|
671 ;; Anything to save? |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
672 (when (or (buffer-modified-p) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
673 (< 1 (point))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
674 (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
|
675 save-err) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
676 ;; 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
|
677 ;; directory. Create this subdirectory first. |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
678 (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
|
679 (condition-case err |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
680 (make-directory tutorial-dir nil) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
681 (error (setq save-err t) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
682 (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
|
683 (error-message-string err))))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
684 ;; 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
|
685 (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
|
686 (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
|
687 ;; 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
|
688 ;; displayed. |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
689 (point) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
690 (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
|
691 (- (point)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
692 (- (point) tutorial--point-after-chkeys)))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
693 (old-point (point)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
694 ;; 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
|
695 ;; 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
|
696 ;; 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
|
697 ;; 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
|
698 ;; this function. |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
699 buffer-undo-list |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
700 (inhibit-read-only t)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
701 ;; 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
|
702 ;; (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
|
703 ;; (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
|
704 ;; tutorial--point-after-chkeys)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
705 ;; Delete the remarks: |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
706 (tutorial--remove-remarks) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
707 ;; 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
|
708 ;; be saved with the tutorial. |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
709 (goto-char (point-min)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
710 (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
|
711 "\n" |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
712 (number-to-string (marker-position |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
713 tutorial--point-before-chkeys)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
714 "\n") |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
715 (condition-case err |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
716 (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
|
717 (error (setq save-err t) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
718 (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
|
719 saved-file |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
720 (error-message-string err)))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
721 ;; 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
|
722 (condition-case err |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
723 (undo-only) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
724 (error nil)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
725 ;; Restore point |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
726 (goto-char old-point) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
727 (if save-err |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
728 (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
|
729 (message "Saved tutorial state."))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
730 (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
|
731 tutorial-dir))))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
732 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
733 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
734 ;;;###autoload |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
735 (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
|
736 "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
|
737 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
|
738 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
|
739 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
|
740 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
|
741 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
|
742 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
|
743 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
744 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
|
745 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
|
746 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
|
747 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
748 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
|
749 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
|
750 resumed later." |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
751 (interactive "P") |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
752 (if (boundp 'viper-current-state) |
|
73551
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
753 (let ((prompt1 |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
754 "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
|
755 enabled Viper.") |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
756 (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
|
757 Run the Viper tutorial? ")) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
758 (if (fboundp 'viper-tutorial) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
759 (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
|
760 (progn (message "") |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
761 (funcall 'viper-tutorial 0)) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
762 (message "Tutorial aborted by user")) |
|
8bd77d06776b
* tutorial.el: Move defvars to avoid bytecomp warnings.
Chong Yidong <cyd@stupidchicken.com>
parents:
73550
diff
changeset
|
763 (message prompt1))) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
764 (let* ((lang (if arg |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
765 (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
|
766 (add-hook 'minibuffer-setup-hook |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
767 'minibuffer-completion-help) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
768 (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
|
769 (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
|
770 current-language-environment |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
771 "English"))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
772 (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
|
773 ;; 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
|
774 ;; 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
|
775 (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
|
776 (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
|
777 (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
|
778 (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
|
779 (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
|
780 old-tut-file |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
781 (old-tut-point 1)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
782 (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
|
783 ;; 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
|
784 ;; 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
|
785 ;; selected and displayed: |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
786 (if old-tut-win |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
787 (raise-frame |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
788 (window-frame |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
789 (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
|
790 ;; 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
|
791 (when old-tut-buf |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
792 (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
|
793 ;; Use whole frame for tutorial |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
794 (delete-other-windows) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
795 ;; 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
|
796 ;; be reverted: |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
797 (when (and old-tut-buf |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
798 (not old-tut-is-ok)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
799 (setq old-tut-is-ok |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
800 (if dont-ask-for-revert |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
801 nil |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
802 (not (y-or-n-p |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
803 "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
|
804 ;; (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
|
805 (unless old-tut-is-ok |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
806 (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
|
807 (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
|
808 (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
|
809 (setq tutorial--lang lang) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
810 (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
|
811 (let ((inhibit-read-only t)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
812 (erase-buffer)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
813 (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
|
814 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
815 ;; 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
|
816 ;; 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
|
817 (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
|
818 (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
|
819 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
820 ;; 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
|
821 ;; editing session. |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
822 (when dont-ask-for-revert |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
823 (setq old-tut-file nil)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
824 (when old-tut-file |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
825 (setq old-tut-file |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
826 (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
|
827 (if old-tut-file |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
828 (progn |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
829 (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
|
830 (goto-char (point-min)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
831 (setq old-tut-point |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
832 (string-to-number |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
833 (buffer-substring-no-properties |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
834 (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
|
835 (forward-line) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
836 (setq tutorial--point-before-chkeys |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
837 (string-to-number |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
838 (buffer-substring-no-properties |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
839 (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
|
840 (forward-line) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
841 (delete-region (point-min) (point)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
842 (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
|
843 (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
|
844 (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
|
845 (forward-line) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
846 (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
|
847 |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
848 (tutorial--display-changes) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
849 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
850 ;; Clear message: |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
851 (unless dont-ask-for-revert |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
852 (message "") (sit-for 0)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
853 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
854 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
855 (if old-tut-file |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
856 ;; 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
|
857 (let ((old-point |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
858 (if (> 0 old-tut-point) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
859 (- old-tut-point) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
860 (+ 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
|
861 (when (< old-point 1) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
862 (setq old-point 1)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
863 (goto-char old-point)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
864 (goto-char (point-min)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
865 (search-forward "\n<<") |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
866 (beginning-of-line) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
867 ;; 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
|
868 ;; 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
|
869 (cond ((save-excursion |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
870 (forward-line 1) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
871 (looking-at "\\[")) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
872 (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
|
873 ((looking-at "<<Blank lines inserted.*>>") |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
874 (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
|
875 (t |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
876 (looking-at "<<") |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
877 (replace-match "[") |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
878 (search-forward ">>") |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
879 (replace-match "]"))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
880 (beginning-of-line) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
881 (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
|
882 (count-lines (point-min) (point)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
883 6))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
884 (if (< n 8) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
885 (progn |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
886 ;; 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
|
887 ;; so delete it. |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
888 (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
|
889 (newline n)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
890 ;; 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
|
891 (newline (/ n 2)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
892 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
893 ;; 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
|
894 (forward-line 1) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
895 (newline (- n (/ n 2))))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
896 (goto-char (point-min))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
897 (setq buffer-undo-list nil) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
898 (set-buffer-modified-p nil))))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
899 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
900 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
901 ;; 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
|
902 ;; 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
|
903 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
904 (defconst lang-strings |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
905 '(("English" . |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
906 ((tut-chgdkey . "** %s has been rebound, but you can use %s instead [") |
|
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
907 (tut-chgdkey2 . "More") |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
908 (tut-chgdhead . " |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
909 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
|
910 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
|
911 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
|
912 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
|
913 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
|
914 commands have been introduced. [") |
|
74789
ecc3f98301f4
Remove `cl' requirement. Clean up whitespace.
Chong Yidong <cyd@stupidchicken.com>
parents:
74113
diff
changeset
|
915 (tut-chgdhead2 . "More")))) |
|
73550
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
916 "Language specific strings for Emacs. |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
917 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
|
918 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
|
919 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
|
920 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
|
921 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
922 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
|
923 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
924 (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
|
925 "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
|
926 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
|
927 This function retrieves such strings. |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
928 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
929 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
|
930 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
|
931 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
|
932 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
933 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
|
934 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
|
935 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
936 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
|
937 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
938 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
|
939 (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
|
940 (found-string)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
941 (when my-lang-strings |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
942 (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
|
943 (when entry |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
944 (setq found-string (cdr entry))))) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
945 ;; Fallback to English strings |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
946 (unless (or found-string |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
947 no-eng-fallback) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
948 (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
|
949 found-string)) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
950 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
951 ;;(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
|
952 |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
953 (provide 'tutorial) |
|
6deaec97f21b
* help-fns.el (help-with-tutorial): Moved to tutorial.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff
changeset
|
954 |
| 73567 | 955 ;; 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
|
956 ;;; tutorial.el ends here |
