Initial Commit
[packages] / xemacs-packages / tpu / tpu-doc.el
1 ;;; tpu-doc.el --- Documentation for TPU-edt
2
3 ;; Copyright (C) 1993 Free Software Foundation, Inc.
4
5 ;; Author: Rob Riepel <riepel@networking.stanford.edu>
6 ;; Maintainer: Rob Riepel <riepel@networking.stanford.edu>
7 ;; Keywords: emulations
8
9 ;; This file is part of XEmacs.
10
11 ;; XEmacs is free software; you can redistribute it and/or modify it
12 ;; under the terms of the GNU General Public License as published by
13 ;; the Free Software Foundation; either version 2, or (at your option)
14 ;; any later version.
15
16 ;; XEmacs is distributed in the hope that it will be useful, but
17 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19 ;; General Public License for more details.
20
21 ;; You should have received a copy of the GNU General Public License
22 ;; along with XEmacs; see the file COPYING.  If not, write to the Free
23 ;; Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24
25 (defconst tpu-doc-revision "!Revision: 1.6 !"
26   "TPU-edt documentation revision number.")
27
28
29 ;; This is documentation for the TPU-edt editor for GNU emacs.  Major
30 ;; sections of this document are separated with lines that begin with
31 ;; ";; %% <topic>", where <topic> is what is discussed in that section.
32
33
34 ;; %% Contents
35
36 ;;  % Introduction
37 ;;  % Terminal Support
38 ;;  % X-windows Support
39 ;;  % Differences Between TPU-edt and the Real Thing
40 ;;  % Starting TPU-edt
41 ;;  % TPU-edt Default Editing Keypad, Control and Gold Key Bindings
42 ;;  % Optional TPU-edt Extensions
43 ;;  % Customizing TPU-edt using the Emacs Initialization File
44 ;;  % Compiling TPU-edt
45 ;;  % Regular expressions in TPU-edt
46 ;;  % Etcetera
47
48
49 ;; %% Introduction
50
51 ;;    TPU-edt is based on tpu.el by Jeff Kowalski.  TPU-edt endeavors
52 ;;    to be even more like TPU's EDT emulation than the original tpu.el.
53 ;;    Considerable effort has been expended to that end.  Still, emacs
54 ;;    is emacs and there are differences between TPU-edt and the real
55 ;;    thing.  Please read the "Differences Between TPU-edt and the Real
56 ;;    Thing" and "Starting TPU-edt" sections before running TPU-edt.
57
58
59 ;; %% Terminal Support
60
61 ;;    TPU-edt, like it's VMS cousin, works on VT-series terminals with
62 ;;    DEC style keyboards.  VT terminal emulators, including xterm with
63 ;;    the appropriate key translations, work just fine too.
64
65
66 ;; %% X-windows Support
67
68 ;;    Starting with version 19 of emacs, TPU-edt works with X-windows.
69 ;;    This is accomplished through a TPU-edt X keymap.  The emacs lisp
70 ;;    program tpu-mapper.el creates this map and stores it in a file.
71 ;;    Tpu-mapper will be run automatically the first time you invoke
72 ;;    the X-windows version of emacs, or you can run it by hand.  See
73 ;;    the commentary in tpu-mapper.el for details.
74
75
76 ;; %% Differences Between TPU-edt and the Real Thing (not Coke (r))
77
78 ;;    Emacs (version 18.58) doesn't support text highlighting, so selected
79 ;;    regions are not shown in inverse video.  Emacs uses the concept of
80 ;;    "the mark".  The mark is set at one end of a selected region; the
81 ;;    cursor is at the other.  The letter "M" appears in the mode line
82 ;;    when the mark is set.  The native emacs command ^X^X (Control-X
83 ;;    twice) exchanges the cursor with the mark; this provides a handy
84 ;;    way to find the location of the mark.
85
86 ;;    In TPU the cursor can be either bound or free.  Bound means the
87 ;;    cursor cannot wander outside the text of the file being edited.
88 ;;    Free means the arrow keys can move the cursor past the ends of
89 ;;    lines.  Free is the default mode in TPU; bound is the only mode
90 ;;    in EDT.  Bound is the only mode in the base version of TPU-edt;
91 ;;    optional extensions add an approximation of free mode.
92
93 ;;    Like TPU, emacs uses multiple buffers.  Some buffers are used to
94 ;;    hold files you are editing; other "internal" buffers are used for
95 ;;    emacs' own purposes (like showing you help).  Here are some commands
96 ;;    for dealing with buffers.
97
98 ;;       Gold-B   moves to next buffer, including internal buffers
99 ;;       Gold-N   moves to next buffer containing a file
100 ;;       Gold-M   brings up a buffer menu (like TPU "show buffers")
101
102 ;;    Emacs is very fond of throwing up new windows.  Dealing with all
103 ;;    these windows can be a little confusing at first, so here are a few
104 ;;    commands to that may help:
105
106 ;;       Gold-Next_Scr  moves to the next window on the screen
107 ;;       Gold-Prev_Scr  moves to the previous window on the screen
108 ;;       Gold-TAB       also moves to the next window on the screen
109
110 ;;       Control-x 1    deletes all but the current window
111 ;;       Control-x 0    deletes the current window
112
113 ;;    Note that the buffers associated with deleted windows still exist!
114
115 ;;    Like TPU, TPU-edt has a "command" function, invoked with Gold-KP7 or
116 ;;    Do.  Most of the commands available are emacs commands.  Some TPU
117 ;;    commands are available, they are: replace, exit, quit, include, and
118 ;;    Get (unfortunately, "get" is an internal emacs function, so we are
119 ;;    stuck with "Get" - to make life easier, Get is available as Gold-g).
120
121 ;;    Support for recall of commands, file names, and search strings was
122 ;;    added to emacs in version 19.  For version 18 of emacs, optional
123 ;;    extensions are available to add this recall capability (see "Optional
124 ;;    TPU-edt Extensions" below).  The history of strings recalled in both
125 ;;    versions of emacs differs slightly from TPU/edt, but it is still very
126 ;;    convenient.
127
128 ;;    Help is available!  The traditional help keys (Help and PF2) display
129 ;;    a three page help file showing the default keypad layout, control key
130 ;;    functions, and Gold key functions.  Pressing any key inside of help
131 ;;    splits the screen and prints a description of the function of the
132 ;;    pressed key.  Gold-PF2 invokes the native emacs help, with it's
133 ;;    zillions of options.  Gold-Help shows all the current key bindings.
134
135 ;;    Thanks to emacs, TPU-edt has some extensions that may make your life
136 ;;    easier, or at least more interesting.  For example, Gold-r toggles
137 ;;    TPU-edt rectangular mode.  In rectangular mode, Remove and Insert work
138 ;;    on rectangles.  Likewise, Gold-* toggles TPU-edt regular expression
139 ;;    mode.  In regular expression mode Find, Find Next, and the line-mode
140 ;;    replace command work with regular expressions.  [A regular expression
141 ;;    is a pattern that denotes a set of strings; like VMS wildcards.]
142
143 ;;    Emacs also gives TPU-edt the undo and occur functions.  Undo does
144 ;;    what it says; it undoes the last change.  Multiple undos in a row
145 ;;    undo multiple changes.  For your convenience, undo is available on
146 ;;    Gold-u.  Occur shows all the lines containing a specific string in
147 ;;    another window.  Moving to that window, and typing ^C^C (Control-C
148 ;;    twice) on a particular line moves you back to the original window
149 ;;    at that line.  Occur is on Gold-o.
150
151 ;;    Finally, as you edit, remember that all the power of emacs is at
152 ;;    your disposal.  It really is a fantastic tool.  You may even want to
153 ;;    take some time and read the emacs tutorial; perhaps not to learn the
154 ;;    native emacs key bindings, but to get a feel for all the things
155 ;;    emacs can do for you.  The emacs tutorial is available from the
156 ;;    emacs help function: "Gold-PF2 t"
157
158
159 ;; %% Starting TPU-edt
160
161 ;;    In order to use TPU-edt, the TPU-edt editor definitions, contained
162 ;;    in tpu-edt.el, need to be loaded when emacs is run.  This can be
163 ;;    done in a couple of ways.  The first is by explicitly requesting
164 ;;    loading of the TPU-edt emacs definition file on the command line:
165
166 ;;        prompt> emacs -l /path/to/definitions/tpu-edt.el
167
168 ;;    If TPU-edt is installed on your system, that is, if tpu-edt.el is in
169 ;;    a directory like /usr/local/emacs/lisp, along with dozens of other
170 ;;    .el files, you should be able to use the command:
171
172 ;;        prompt> emacs -l tpu-edt
173
174 ;;    If you like TPU-edt and want to use it all the time, you can load
175 ;;    the TPU-edt definitions using the emacs initialization file, .emacs.
176 ;;    Simply create a .emacs file in your home directory containing the
177 ;;    line:
178
179 ;;        (load "/path/to/definitions/tpu-edt")
180
181 ;;    or, if (as above) TPU-edt is installed on your system:
182
183 ;;        (load "tpu-edt")
184
185 ;;    Once TPU-edt has been loaded, you will be using an editor with the
186 ;;    interface shown in the next section (A section that is suitable for
187 ;;    cutting out of this document and pasting next to your terminal!).
188
189
190 ;; %% TPU-edt Default Editing Keypad, Control and Gold Key Bindings
191 ;;
192 ;;        _______________________    _______________________________
193 ;;       | HELP  |      Do       |  |       |       |       |       |
194 ;;       |KeyDefs|               |  |       |       |       |       |
195 ;;       |_______|_______________|  |_______|_______|_______|_______|
196 ;;        _______________________    _______________________________
197 ;;       | Find  |Insert |Remove |  | Gold  | HELP  |FndNxt | Del L |
198 ;;       |       |       |Sto Tex|  |  key  |E-Help | Find  |Undel L|
199 ;;       |_______|_______|_______|  |_______|_______|_______|_______|
200 ;;       |Select |Pre Scr|Nex Scr|  | Page  | Sect  |Append | Del W |
201 ;;       | Reset |Pre Win|Nex Win|  |  Do   | Fill  |Replace|Undel W|
202 ;;       |_______|_______|_______|  |_______|_______|_______|_______|
203 ;;               |Move up|          |Forward|Reverse|Remove | Del C |
204 ;;               |  Top  |          |Bottom |  Top  |Insert |Undel C|
205 ;;        _______|_______|_______   |_______|_______|_______|_______|
206 ;;       |Mov Lef|Mov Dow|Mov Rig|  | Word  |  EOL  | Char  |       |
207 ;;       |StaOfLi|Bottom |EndOfLi|  |ChngCas|Del EOL|SpecIns| Enter |
208 ;;       |_______|_______|_______|  |_______|_______|_______|       |
209 ;;                                  |     Line      |Select | Subs  |
210 ;;                                  |   Open Line   | Reset |       |
211 ;;                                  |_______________|_______|_______|
212 ;;     Control Characters
213 ;;
214 ;;    ^A  toggle insert and overwrite    ^L  insert page break
215 ;;    ^B  recall                         ^R  remember, re-center
216 ;;    ^E  end of line                    ^U  delete to beginning of line
217 ;;    ^G  cancel current operation       ^V  quote
218 ;;    ^H  beginning of line              ^W  refresh
219 ;;    ^J  delete previous word           ^Z  exit
220 ;;    ^K  learn                        ^X^X  exchange point and mark
221 ;;
222 ;;
223 ;;     Gold-<key> Functions
224 ;;     -----------------------------------------------------------------
225 ;;     W     Write - save current buffer
226 ;;     K     Kill buffer - abandon edits and delete buffer
227 ;;
228 ;;     E     Exit - save current buffer and ask about others
229 ;;     X     eXit - save all modified buffers and exit
230 ;;     Q     Quit - exit without saving anything
231 ;;
232 ;;     G     Get - load a file into a new edit buffer
233 ;;     I     Include - include a file in this buffer
234 ;;
235 ;;     B     next Buffer - display the next buffer (all buffers)
236 ;;     N     Next file buffer - display next buffer containing a file
237 ;;     M     buffer Menu - display a list of all buffers
238 ;;
239 ;;     U     Undo - undo the last edit
240 ;;     C     Recall - edit and possibly repeat previous commands
241 ;;
242 ;;     O     Occur - show following lines containing REGEXP
243 ;;     S     Search and substitute - line mode REPLACE command
244 ;;
245 ;;     ?     Spell check - check spelling in a region or entire buffer
246 ;;
247 ;;     R     Toggle Rectangular mode for remove and insert
248 ;;     *     Toggle regular expression mode for search and substitute
249 ;;
250 ;;     V     Show TPU-edt version
251 ;;     -----------------------------------------------------------------
252
253
254 ;; %% Optional TPU-edt Extensions
255
256 ;;    Several optional packages have been included in this distribution
257 ;;    of TPU-edt.  The following is a brief description of each package.
258 ;;    See the {package}.el file for more detailed information and usage
259 ;;    instructions.
260
261 ;;      tpu-extras  -  TPU/edt scroll margins and free cursor mode.
262 ;;      tpu-recall  -  String, file name, and command history.
263 ;;      vt-control  -  VTxxx terminal width and keypad controls.
264
265 ;;    Packages are normally loaded from the emacs initialization file
266 ;;    (discussed below).  If a package is not installed in the emacs
267 ;;    lisp directory, it can be loaded by specifying the complete path
268 ;;    to the package file.  However, it is preferable to modify the
269 ;;    emacs load-path variable to include the directory where packages
270 ;;    are stored.  This way, packages can be loaded by name, just as if
271 ;;    they were installed.  The first part of the sample .emacs file
272 ;;    below shows how to make such a modification.
273
274
275 ;; %% Customizing TPU-edt using the Emacs Initialization File
276
277 ;; .emacs - a sample emacs initialization file
278
279 ;; This is a sample emacs initialization file.  It shows how to invoke
280 ;; TPU-edt, and how to customize it.
281
282 ;; The load-path is where emacs looks for files to fulfill load requests.
283 ;; If TPU-edt is not installed in a standard emacs directory, the load-path
284 ;; should be updated to include the directory where the TPU-edt files are
285 ;; stored.  Modify and un-comment the following section if TPU-ed is not
286 ;; installed on your system - be sure to leave the double quotes!
287
288 ;; (setq load-path
289 ;;       (append (list (expand-file-name "/path/to/tpu-edt/files"))
290 ;;               load-path))
291
292 ;; Load TPU-edt
293 (load "tpu-edt")
294
295 ;; Load the optional goodies - scroll margins, free cursor mode, command
296 ;; and string recall.  But don't complain if the file aren't available.
297 (load "tpu-extras" t)
298 (load "tpu-recall" t)
299
300 ;; Uncomment this line to set scroll margins 10% (top) and 15% (bottom).
301 ;(and (fboundp 'tpu-set-scroll-margins) (tpu-set-scroll-margins "10%" "15%"))
302
303 ;; Load the vtxxx terminal control functions, but don't complain if
304 ;; the file is not found.
305 (load "vt-control" t)
306
307 ;; TPU-edt treats words like EDT; here's how to add word separators.
308 ;; Note that backslash (\) and double quote (") are quoted with '\'.
309 (tpu-add-word-separators "]\\[-_,.\"=+()'/*#:!&;$")
310
311 ;; Emacs is happy to save files without a final newline; other Unix programs
312 ;; hate that!  This line will make sure that files end with newlines.
313 (setq require-final-newline t)
314
315 ;; Emacs has the ability to automatically run code embedded in files
316 ;; you edit.  This line makes emacs ask if you want to run the code.
317 (if tpu-emacs19-p (setq enable-local-variables "ask")
318   (setq inhibit-local-variables t))
319
320 ;; Emacs uses Control-s and Control-q.  Problems can occur when using emacs
321 ;; on terminals that use these codes for flow control (Xon/Xoff flow control).
322 ;; These lines disable emacs' use of these characters.
323 (global-unset-key "\C-s")
324 (global-unset-key "\C-q")
325
326 ;; top, bottom, bol, eol seem like a waste of Gold-arrow functions.  The
327 ;; following section re-maps up and down arrow keys to top and bottom of
328 ;; screen, and left and right arrow keys to pan left and right (pan-left,
329 ;; right moves the screen 16 characters left or right - try it, you'll
330 ;; like it!).
331
332 ;; Re-map the Gold-arrow functions
333 (define-key GOLD-CSI-map "A" 'tpu-beginning-of-window)          ; up-arrow
334 (define-key GOLD-CSI-map "B" 'tpu-end-of-window)                ; down-arrow
335 (define-key GOLD-CSI-map "C" 'tpu-pan-right)                    ; right-arrow
336 (define-key GOLD-CSI-map "D" 'tpu-pan-left)                     ; left-arrow
337 (define-key GOLD-SS3-map "A" 'tpu-beginning-of-window)          ; up-arrow
338 (define-key GOLD-SS3-map "B" 'tpu-end-of-window)                ; down-arrow
339 (define-key GOLD-SS3-map "C" 'tpu-pan-right)                    ; right-arrow
340 (define-key GOLD-SS3-map "D" 'tpu-pan-left)                     ; left-arrow
341
342 ;; Re-map the Gold-arrow functions for X-windows TPU-edt (emacs version 19)
343 (cond
344  ((and tpu-emacs19-p window-system)
345   (define-key GOLD-map [up] 'tpu-beginning-of-window)           ; up-arrow
346   (define-key GOLD-map [down] 'tpu-end-of-window)               ; down-arrow
347   (define-key GOLD-map [right] 'tpu-pan-right)                  ; right-arrow
348   (define-key GOLD-map [left] 'tpu-pan-left)))                  ; left-arrow
349
350 ;; The emacs universal-argument function is very useful for native emacs
351 ;; commands.  This line maps universal-argument to Gold-PF1
352 (define-key GOLD-SS3-map "P" 'universal-argument)               ; Gold-PF1
353
354 ;; Make KP7 move by paragraphs, instead of pages.
355 (define-key SS3-map "w" 'tpu-paragraph)                         ; KP7
356
357 ;; TPU-edt assumes you have the ispell spelling checker;
358 ;; Un-comment this line if you don't.
359 ;(setq tpu-have-spell nil)
360
361 ;; Display the TPU-edt version.
362 (tpu-version)
363
364 ;; End of .emacs - a sample emacs initialization file
365
366 ;;    After initialization with the .emacs file shown above, the editing
367 ;;    keys have been re-mapped to look like this:
368
369 ;;        _______________________    _______________________________
370 ;;       | HELP  |      Do       |  |       |       |       |       |
371 ;;       |KeyDefs|               |  |       |       |       |       |
372 ;;       |_______|_______________|  |_______|_______|_______|_______|
373 ;;        _______________________    _______________________________
374 ;;       | Find  |Insert |Remove |  | Gold  | HELP  |FndNxt | Del L |
375 ;;       |       |       |Sto Tex|  | U Arg |E-Help | Find  |Undel L|
376 ;;       |_______|_______|_______|  |_______|_______|_______|_______|
377 ;;       |Select |Pre Scr|Nex Scr|  |Paragra| Sect  |Append | Del W |
378 ;;       | Reset |Pre Win|Nex Win|  |  Do   | Fill  |Replace|Undel W|
379 ;;       |_______|_______|_______|  |_______|_______|_______|_______|
380 ;;               |Move up|          |Forward|Reverse|Remove | Del C |
381 ;;               |Tscreen|          |Bottom |  Top  |Insert |Undel C|
382 ;;        _______|_______|_______   |_______|_______|_______|_______|
383 ;;       |Mov Lef|Mov Dow|Mov Rig|  | Word  |  EOL  | Char  |       |
384 ;;       |PanLeft|Bscreen|PanRigh|  |ChngCas|Del EOL|SpecIns| Enter |
385 ;;       |_______|_______|_______|  |_______|_______|_______|       |
386 ;;                                  |     Line      |Select | Subs  |
387 ;;                                  |   Open Line   | Reset |       |
388 ;;                                  |_______________|_______|_______|
389
390 ;;    Astute emacs hackers will realize that on systems where TPU-edt is
391 ;;    installed, this documentation file can be loaded to produce the above
392 ;;    editing keypad layout.  In fact, to get all the changes in the sample
393 ;;    initialization file, you only need a one line initialization file:
394
395 ;;        (load "tpu-doc")
396
397 ;;    wow!
398
399
400 ;; %% Compiling TPU-edt
401
402 ;;    It is not necessary to compile (byte-compile in emacs parlance)
403 ;;    TPU-edt to use it.  However, byte-compiled code loads and runs
404 ;;    faster, and takes up less memory when loaded.  To byte compile
405 ;;    TPU-edt, use the following command.
406
407 ;;        emacs -batch -f batch-byte-compile tpu-edt.el
408
409 ;;    This will produce a file named tpu-edt.elc.  This new file can be
410 ;;    used in place of the original tpu-edt.el file.  In commands where
411 ;;    the file type is not specified, emacs always attempts to use the
412 ;;    byte-compiled version before resorting to the source.
413
414
415 ;; %% Regular expressions in TPU-edt
416
417 ;;    Gold-* toggles TPU-edt regular expression mode.  In regular expression
418 ;;    mode, find, find next, replace, and substitute accept emacs regular
419 ;;    expressions.  A complete list of emacs regular expressions can be
420 ;;    found using the emacs "info" command (it's somewhat like the VMS help
421 ;;    command).  Try the following sequence of commands:
422
423 ;;        DO info             <enter info mode>
424 ;;        m regex             <select the "regular expression" topic>
425 ;;        m directives        <select the "directives" topic>
426
427 ;;    Type "q" to quit out of info mode.
428
429 ;;    There is a problem in regular expression mode when searching for
430 ;;    empty strings, like beginning-of-line (^) and end-of-line ($).
431 ;;    When searching for these strings, find-next may find the current
432 ;;    string, instead of the next one.  This can cause global replace and
433 ;;    substitute commands to loop forever in the same location.  For this
434 ;;    reason, commands like
435
436 ;;        replace "^" "> "       <add "> " to beginning of line>
437 ;;        replace "$" "00711"    <add "00711" to end of line>
438
439 ;;    may not work properly.
440
441 ;;    Commands like those above are very useful for adding text to the
442 ;;    beginning or end of lines.  They might work on a line-by-line basis,
443 ;;    but go into an infinite loop if the "all" response is specified.  If
444 ;;    the goal is to add a string to the beginning or end of a particular
445 ;;    set of lines TPU-edt provides functions to do this.
446
447 ;;        Gold-^  Add a string at BOL in region or buffer
448 ;;        Gold-$  Add a string at EOL in region or buffer
449
450 ;;    There is also a TPU-edt interface to the native emacs string
451 ;;    replacement commands.  Gold-/ invokes this command.  It accepts
452 ;;    regular expressions if TPU-edt is in regular expression mode.  Given
453 ;;    a repeat count, it will perform the replacement without prompting
454 ;;    for confirmation.
455
456 ;;    This command replaces empty strings correctly, however, it has its
457 ;;    drawbacks.  As a native emacs command, it has a different interface
458 ;;    than the emulated TPU commands.  Also, it works only in the forward
459 ;;    direction, regardless of the current TPU-edt direction.
460
461
462 ;; %% Etcetera
463
464 ;;    That's TPU-edt in a nutshell...
465
466 ;;    Please send any bug reports, feature requests, or cookies to the
467 ;;    author, Rob Riepel, at the address shown by the tpu-version command
468 ;;    (Gold-V).
469
470 ;;    Share and enjoy...  Rob Riepel  7/93
471
472 ;;; tpu-doc.el ends here