merge trunk
[bpt/emacs.git] / doc / misc / edt.texi
1 \input texinfo
2 @setfilename ../../info/edt
3 @settitle EDT Emulation for Emacs
4
5 @copying
6 This file documents the EDT emulation package for Emacs.
7
8 Copyright @copyright{} 1986, 1992, 1994, 1995, 1999, 2000, 2001, 2002,
9 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
10 Free Software Foundation, Inc.
11
12 @quotation
13 Permission is granted to copy, distribute and/or modify this document
14 under the terms of the GNU Free Documentation License, Version 1.3 or
15 any later version published by the Free Software Foundation; with no
16 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
17 and with the Back-Cover Texts as in (a) below. A copy of the license
18 is included in the section entitled ``GNU Free Documentation License''.
19
20 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
21 modify this GNU manual. Buying copies from the FSF supports it in
22 developing GNU and promoting software freedom.''
23 @end quotation
24 @end copying
25
26 @dircategory Emacs
27 @direntry
28 * EDT: (edt). An Emacs emulation of the EDT editor.
29 @end direntry
30
31 @titlepage
32 @title EDT Emulation User's Manual
33 @author Kevin Gallagher
34 @author @email{Kevin.Gallagher@@boeing.com}
35 @page
36 @vskip 0pt plus 1filll
37 @insertcopying
38 @end titlepage
39
40 @contents
41
42 @ifnottex
43 @node Top
44 @top Emacs EDT emulation
45 This manual describes the Emacs EDT package, which provides emulation
46 of DEC's EDT editor.
47
48 @insertcopying
49 @end ifnottex
50
51 @menu
52 * Overview:: Overview of the EDT package.
53 * Supported terminals:: Terminals/keyboards that are supported.
54 * Starting emulation:: How to get started.
55 * Platform-specific notes:: Notes specific to certain platforms.
56 * Differences:: How does this EDT emulation differ from real EDT?
57 * Highlights:: Some highlights, and comparisons to the
58 original Emacs EDT emulation.
59 * Customizing:: Customizing emulation.
60 * GNU Free Documentation License:: The license for this manual.
61 @end menu
62
63 @node Overview
64 @chapter Overview of the EDT Package
65
66 This manual describes version 4.0 of the EDT Emulation for Emacs 19 and
67 above. It comes with special functions which replicate nearly all of
68 EDT's keypad mode behavior. It sets up default keypad and function key
69 bindings which closely match those found in EDT. Support is provided so
70 that users may reconfigure most keypad and function key bindings to
71 their own liking.
72
73 Version 4.0 contains several enhancements (@pxref{Changes}).
74
75 @menu
76 * Quick start:: How to begin using EDT.
77 * Changes:: What's new in version 4.0.
78 * Goals:: The aims of this package.
79 @end menu
80
81 @node Quick start
82 @section How to Begin Using EDT
83
84 To start the EDT Emulation, first start Emacs and then enter @kbd{M-x
85 edt-emulation-on} to begin the emulation. After initialization is
86 complete, the following message will appear below the status line
87 informing you that the emulation has been enabled: ``Default EDT keymap
88 active''.
89
90 You can have the EDT Emulation start up automatically, each time you
91 initiate a GNU Emacs session, by adding the following line to your
92 @file{.emacs} file:
93
94 @example
95 (add-hook term-setup-hook 'edt-emulation-on)
96 @end example
97
98 @noindent @strong{Important:} Be sure to read the rest of this manual.
99 It contains very useful information on how the EDT Emulation behaves and
100 how to customize it to your liking.
101
102 @noindent The EDT emulation consists of the following files:
103
104 @itemize
105
106 @item
107 @file{edt.texi} - This manual.
108
109 @item
110 @file{edt-user.el} - An example customization file.
111
112 @item
113 @file{edt.el} - EDT emulation functions and default configuration.
114
115 @item
116 @file{edt-lk201.el} - Built-in support for DEC LK-201 keyboards.
117
118 @item
119 @file{edt-vt100.el} - Built-in support for DEC VT-100 (and above) terminals.
120
121 @item
122 @file{edt-pc.el} - Built-in support for PC 101 Keyboards under MS-DOS.
123
124 @item
125 @file{edt-mapper.el} - Create an EDT LK-201 map file for keyboards
126 without built-in support.
127
128 @end itemize
129
130 @node Changes
131 @section What's New in Version 4.0
132
133 Version 4.0 contains the following enhancements:
134
135 @enumerate
136
137 @item
138 Scroll margins at the top and bottom of the window are now supported.
139 (The design was copied from @file{tpu-extras.el}.) By default, this
140 feature is enabled with the top margin set to 10% of the window and the
141 bottom margin set to 15% of the window. To change these settings, you
142 can invoke the function @code{edt-set-scroll-margins} in your
143 @file{.emacs} file. For example, the following line
144
145 @example
146 (edt-set-scroll-margins "20%" "25%")
147 @end example
148
149 @noindent sets the top margin to 20% of the window and the bottom margin
150 to 25% of the window. To disable this feature, set each margin to 0%.
151 You can also invoke @code{edt-set-scroll-margins} interactively while
152 EDT Emulation is active to change the settings for that session.
153
154 @strong{Please note:} Another way to set the scroll margins is to use
155 the Emacs customization feature (not available in Emacs 19) to set the
156 following two variables directly: @code{edt-top-scroll-margin} and
157 @code{edt-bottom-scroll-margin}.
158
159 Enter the Emacs @code{customize} command. First select the
160 @samp{Editing} group and then select the @samp{Emulations} group.
161 Finally, select the @samp{Edt} group and follow the directions.
162
163 @item
164 The @samp{SUBS} command is now supported and bound to @kbd{GOLD-Enter}
165 by default. (This design was copied from @file{tpu-edt.el}.) Note, in
166 earlier versions of EDT Emulation, @kbd{GOLD-Enter} was assigned to the
167 Emacs function @code{query-replace}. The binding of
168 @code{query-replace} has been moved to @kbd{GOLD-/}. If you prefer to
169 restore @code{query-replace} to @kbd{GOLD-Enter}, then use an EDT user
170 customization file, @file{edt-user.el}, to do this
171 (@pxref{Customizing}).
172
173 @item
174 EDT Emulation now also works in XEmacs, including the highlighting of
175 selected text.
176
177 @item
178 If you access a workstation using an X Server, observe that the
179 initialization file generated by @file{edt-mapper.el} will now contain
180 the name of the X Server vendor. This is a convenience for those who
181 have access to their Unix account from more than one type of X Server.
182 Since different X Servers typically require different EDT emulation
183 initialization files, @file{edt-mapper.el} will now generate these
184 different initialization files and save them with different names.
185 Then, the correct initialization file for the particular X server in use
186 is loaded correctly automatically.
187
188 @item
189 Also, @file{edt-mapper.el} is now capable of binding an @acronym{ASCII}
190 key sequence, providing the @acronym{ASCII} key sequence prefix is
191 already known by Emacs to be a prefix. As a result of providing this
192 support, some terminal/keyboard/window system configurations, which
193 don't have a complete set of sensible function key bindings built into
194 Emacs in @code{function-key-map}, can still be configured for use with
195 EDT Emulation. (Note: In a few rare circumstances this does not work
196 properly. In particular, it does not work if a subset of the leading
197 @acronym{ASCII} characters in a key sequence are recognized by Emacs as
198 having an existing binding. For example, if the keypad 7 (@key{KP7})
199 key generates the sequence @samp{<ESC>Ow} and @samp{<ESC>O} is already
200 bound to a function, pressing @key{KP7} when told to do so by
201 @file{edt-mapper.el} will result in @file{edt-mapper.el} incorrectly
202 mapping @samp{<ESC>O} to @key{KP7} and @samp{w} to @key{KP8}. If
203 something like this happens to you, it is probably a bug in the support
204 for your keyboard within Emacs @strong{or} a bug in the Unix
205 termcap/terminfo support for your terminal @strong{or} a bug in the
206 terminal emulation software you are using.)
207
208 @item
209 The @code{edt-quit} function (bound to @kbd{GOLD-q} by default) has been
210 modified to warn the user when file-related buffer modifications exist.
211 It now cautions the user that those modifications will be lost if the
212 user quits without saving those buffers.
213
214 @end enumerate
215
216 @node Goals
217 @section The Aims of this Package
218
219 @enumerate
220
221 @item
222 Emulate EDT Keypad Mode commands closely so that current EDT users will
223 find that it easy and comfortable to use GNU Emacs with a small learning
224 curve.
225
226 @item
227 Make it easy for a user to customize EDT emulation key bindings without
228 knowing much about Emacs Lisp.
229
230 @item
231 Make it easy to switch between the original EDT default bindings and the
232 user's customized EDT bindings, without having to exit Emacs.
233
234 @item
235 Provide support for some TPU/EVE functions not supported in EDT.
236
237 @item
238 Provide an easy way to restore @strong{all} original Emacs key bindings,
239 just as they existed before the EDT emulation was first invoked.
240
241 @item
242 Support GNU Emacs 19 and higher. (GNU Emacs 18 and below is no longer
243 supported.) XEmacs 19, and above, is also supported.
244
245 @item
246 Supports highlighting of marked text within the EDT emulation on all
247 platforms on which Emacs supports highlighting of marked text.
248
249 @item
250 Handle terminal configuration interactively for most terminal
251 configurations, when the emulation is invoked for the first time.
252
253 @item
254 Support a PC AT keyboard under MS-DOS.
255
256 @end enumerate
257
258 @node Supported terminals
259 @chapter Terminals/Keyboards that are Supported
260
261 Keyboards used under a Window System are supported via the
262 @code{edt-mapper} function. The first time you invoke the emulation
263 under a window system, the @code{edt-mapper} function is run
264 automatically and the user is prompted to identify which keys the
265 emulation is to use for the standard keypad and function keys EDT
266 expects (e.g., @key{PF1}, @key{PF2}, @key{KP0}, @key{KP1}, @key{F1},
267 @key{F2}, etc.). This configuration is saved to disk read each time the
268 emulation is invoked.
269
270 In character oriented connections not running a window manager, built-in
271 support for the following terminals/keyboards is provided:
272
273 @enumerate
274
275 @item
276 DEC VT-100 series and higher. This includes well behaved VT clones and
277 emulators. If you are using a VT series terminal, be sure that the
278 @env{TERM} environment variable is set properly before invoking emacs.
279
280 @item
281 PC AT keyboard under MS-DOS.
282
283 @end enumerate
284
285 Be sure to read @ref{Platform-specific notes} to see if those notes
286 apply to you.
287
288 @node Starting emulation
289 @chapter How to Get Started
290
291 Start up GNU Emacs and enter @kbd{M-x edt-emulation-on} to begin the
292 emulation. After initialization is complete, the following message will
293 appear below the status line informing you that the emulation has been
294 enabled: ``Default EDT keymap active''.
295
296 You can have the EDT Emulation start up automatically, each time you
297 initiate a GNU Emacs session, by adding the following line to your
298 @file{.emacs} file:
299
300 @example
301 (add-hook term-setup-hook 'edt-emulation-on)
302 @end example
303
304 A reference sheet is included (later on) listing the default EDT
305 Emulation key bindings. This sheet is also accessible on line from
306 within Emacs by pressing @key{PF2}, @kbd{GOLD-H}, or @samp{HELP} (when
307 in the EDT Default Mode).
308
309 It is easy to customize key bindings in the EDT Emulation
310 (@pxref{Customizing}). Customizations are placed in a file called
311 @file{edt-user.el}. The Emacs @file{etc/} directory contains an
312 example. If @file{edt-user.el} is found in your GNU Emacs load path
313 during EDT Emulation initialization, then the following message will
314 appear below the status line indicating that the emulation has been
315 enabled, enhanced by your own customizations: ``User EDT custom keymap
316 active''.
317
318 Once enabled, it is easy to switch back and forth between your
319 customized EDT Emulation key bindings and the default EDT Emulation key
320 bindings. (Look at the binding to @kbd{GOLD-Z} in the sample
321 @file{edt-user.el} file.) It is also easy to turn off the emulation
322 (via the command @code{edt-emulation-off}). Doing so completely
323 restores the original key bindings in effect just prior to invoking the
324 emulation.
325
326 Emacs binds keys to @acronym{ASCII} control characters and so does the
327 real EDT. Where EDT key bindings and GNU Emacs key bindings conflict,
328 the default GNU Emacs key bindings are retained by the EDT emulation by
329 default. If you are a diehard EDT user you may not like this. The
330 @ref{Control keys} section explains how to change this so that the EDT
331 bindings to @acronym{ASCII} control characters override the default
332 Emacs bindings.
333
334 @node Platform-specific notes
335 @chapter Notes Specific to Certain Platforms
336
337 @menu
338 * Sun workstations:: Sun workstations running X.
339 * MS-DOS:: PC users running MS-DOS.
340 * GNU/Linux:: PC users running GNU/Linux.
341 * Unix:: Using @key{NumLock} for the @key{PF1} key on Unix systems.
342 @end menu
343
344 @node Sun workstations
345 @section Sun Workstations Running X
346
347 Some earlier Sun keyboards do not have arrow keys separate from the
348 keypad keys. It is difficult to emulate the full EDT keypad and still
349 retain use of the arrow keys on such keyboards.
350
351 The Sun Type 5 and other more recent Sun keyboards, however, do have
352 separate arrow keys. This makes them candidates for setting up a
353 reasonable EDT keypad emulation.
354
355 Depending upon the configuration of the version of X installed on your
356 system, you may find the default X keynames for the keypad keys don't
357 permit Emacs to interpret some or all the keypad keys as something other
358 than arrow keys, numeric keys, @key{Home}, @key{PageUp}, etc. Both Sun
359 and HP have been particularly guilty of making bizarre keysym
360 assignments to the keypad keys.
361
362 In most cases, the X Windows command, @code{xmodmap}, can be used to
363 correct the problem. Here's a sample @file{.xmodmaprc} file which
364 corrects this problem on one Sun workstation configuration using an
365 older SunOS release configured with a Sun Type 5 keyboard:
366
367 @example
368 ! File: .xmodmaprc
369 !
370 ! Set up Sun Type 5 keypad for use with the GNU Emacs EDT Emulation
371 !
372 keycode 53 = KP_Divide
373 keycode 54 = KP_Multiply
374 keycode 57 = KP_Decimal
375 keycode 75 = KP_7
376 keycode 76 = KP_8
377 keycode 77 = KP_9
378 keycode 78 = KP_Subtract
379 keycode 97 = KP_Enter
380 keycode 98 = KP_4
381 keycode 99 = KP_5
382 keycode 100 = KP_6
383 keycode 101 = KP_0
384 keycode 105 = F24
385 keycode 119 = KP_1
386 keycode 120 = KP_2
387 keycode 121 = KP_3
388 keycode 132 = KP_Add
389 @end example
390
391 If @file{edt-mapper.el} does not recognize your keypad keys as unique
392 keys, use the command @samp{xmodmap -pke} to get a listing of the actual
393 key codes and the keysyms mapped to them and then generate you own
394 custom @file{.xmodmaprc} similar to the one above.
395
396 Next, feed @file{.xmodmaprc} to the @code{xmodmap} command and all the
397 Sun Type 5 keypad keys will now be configurable for the emulation of an
398 LK-201 keypad (less the @key{,} key). In this example, the line
399
400 @example
401 keycode 105 = F24
402 @end example
403
404 @noindent changes the X Windows name of the keypad @key{NumLock} key to
405 be known internally as the @key{F24} key. Doing so permits it to be
406 configured to behave as the @key{PF1} (@key{GOLD}) key.
407
408 The side effect of this change is that you will no longer have a
409 @key{NumLock} key. If you are using other software under X which
410 requires a @key{NumLock} key, then examine your keyboard and look for
411 one you don't use and redefine it to be the @key{NumLock} key.
412 Basically, you need to clear the @key{NumLock} key from being assigned
413 as a modifier, assign it to the key of your choice, and then add it back
414 as a modifier. (@ref{Unix} for further help on how to do this.)
415
416 @node MS-DOS
417 @section PC Users Running MS-DOS
418
419 By default, F1 is configured to emulate the @key{PF1} (@key{GOLD}) key.
420 But @key{NumLock} can be used instead if you load a freeware TSR
421 distributed with MS-Kermit, call @samp{gold.com}. This was once
422 distributed in a file called @file{gold22.zip} and came with the source
423 code as well as a loadable binary image. (See @file{edt-pc.el} in the
424 Emacs @file{lisp/emulation} directory for more information.)
425
426 @node GNU/Linux
427 @section PC Users Running GNU/Linux
428
429 The default X server configuration varies from distribution to
430 distribution and release to release of GNU/Linux. If your system fails
431 to recognize the keypad keys as distinct keys, change the NumLock state,
432 turning it on or off, as the case may be, then try again. If this
433 doesn't solve your problem, you may have to modify the X keysym mappings
434 with @code{xmodmap}.
435
436 On one distribution on an Intel PC, the following @file{.xmodmaprc} set
437 things up nicely.
438
439 @example
440 ! File: .xmodmaprc
441 !
442 ! Set up PC keypad under GNU/Linux for the GNU Emacs EDT Emulation
443 !
444 clear mod2
445 keycode 77 = F12
446 keycode 96 = Num_Lock Pointer_EnableKeys
447 add mod2 = Num_Lock
448 @end example
449
450 In this example, after feeding the file to the @code{xmodmap} command,
451 the PC @key{NumLock} keypad key will be configurable for the emulation
452 of the @key{PF1} key. The PC keypad can now emulate an LK-201 keypad
453 (less the comma key), the standard keyboard supplied with DEC terminals
454 VT-200 and above. This @file{.xmodmaprc} file switches the role of the
455 @key{F12} and @key{NumLock} keys. It has been tested on RedHat
456 GNU/Linux 5.2. Other versions of GNU/Linux may require different
457 keycodes. (@ref{Unix} for further help on how to do this.)
458
459 @strong{Please note:} Remember, it may be necessary to have @key{NumLock} in
460 one position (ON) or the other (OFF) for the PC keypad to emulate the
461 LK-201 keypad properly.
462
463 @node Unix
464 @section General Notes on Using @key{NumLock} for the @key{PF1} Key on Unix Systems
465
466 Making the physical @key{NumLock} key available for use in the EDT Emulation
467 requires some modification to the default X Window settings. Since the
468 keycode assignments vary from system to system, some investigation is
469 needed to see how to do this on a particular system.
470
471 You will need to look at the output generated by @code{xmodmap} invoked
472 with the "-pm" switch. For example, on RedHat GNU/Linux 5.2 on a PC, we
473 get the following output when running @samp{xmodmap -pm}:
474
475 @example
476 xmodmap: up to 2 keys per modifier, (keycodes in parentheses):
477
478 shift Shift_L (0x32), Shift_R (0x3e)
479 lock Caps_Lock (0x42)
480 control Control_L (0x25), Control_R (0x6d)
481 mod1 Alt_L (0x40), Alt_R (0x71)
482 mod2 Num_Lock (0x4d)
483 mod3
484 mod4
485 mod5 Scroll_Lock (0x4e)
486 @end example
487
488 @noindent Note that Num_Lock is assigned to the modifier @samp{mod2}. This is
489 what hides Num_Lock from being seen by Emacs.
490
491 Now, @samp{xmodmap -pke} yields:
492
493 @example
494 .
495 .
496 .
497 keycode 77 = Num_Lock Pointer_EnableKeys
498 .
499 .
500 .
501 keycode 96 = F12
502 .
503 .
504 .
505 @end example
506
507 @noindent So, in RedHat GNU/Linux 5.2 on a PC, Num_Lock generates keycode 77.
508 The following steps are taken:
509
510 @enumerate
511 @item
512 clear the assignment of Num_Lock to mod2;
513 @item
514 swap the keycodes assigned to F12 and Num_Lock;
515 @item
516 assign Num_Lock back to mod2.
517 @end enumerate
518
519 @noindent The @file{.xmodmaprc} file looks like this:
520
521 @example
522 ! File: .xmodmaprc
523 !
524 ! Set up PC keypad under GNU/Linux for the GNU Emacs EDT Emulation
525 !
526 clear mod2
527 keycode 77 = F12
528 keycode 96 = Num_Lock Pointer_EnableKeys
529 add mod2 = Num_Lock
530 @end example
531
532 So, after executing @samp{xmodmap .xmodmaprc}, a press of the physical
533 @key{F12} key looks like a Num_Lock keypress to X. Also, a press of the
534 physical @key{NumLock} key looks like a press of the @key{F12} key to X.
535
536 Now, @file{edt-mapper.el} will see @samp{f12} when the physical
537 @key{NumLock} key is pressed, allowing the @key{NumLock} key to be used
538 as the EDT @key{PF1} (@key{GOLD}) key.
539
540 @node Differences
541 @chapter How Does this EDT Emulation Differ from Real EDT?
542
543 In general, you will find that this emulation of EDT replicates most,
544 but not all, of EDT's most used Keypad Mode editing functions and
545 behavior. It is not perfect, but most EDT users who have tried the
546 emulation agree that it is quite good enough to make it easy for
547 die-hard EDT users to move over to using GNU Emacs.
548
549 Here's a list of the most important differences between EDT and this GNU
550 Emacs EDT Emulation. The list is short but you must be aware of these
551 differences if you are to use the EDT Emulation effectively.
552
553 @enumerate
554
555 @item
556 Entering repeat counts works a little differently than in EDT.
557
558 EDT allows users to enter a repeat count before entering a command that
559 accepts repeat counts. For example, when using the real EDT, pressing
560 these three keys in sequence, @kbd{GOLD 5 KP1}, will move the cursor in
561 the current direction 5 words. This does @strong{not} work in Emacs!
562
563 Emacs provides two ways to enter repeat counts and neither involves
564 using the @key{GOLD} key. First, repeat counts can be entered in Emacs
565 by using the @key{ESC} key. For example, pressing these keys in
566 sequence, @kbd{ESC 1 0 KP1}, will move the cursor in the current
567 direction 10 words. Second, Emacs provides another command called
568 @code{universal-argument} that can be used to do the same thing.
569 Normally, in Emacs has this bound to @kbd{C-u}.
570
571 @item
572 EDT's line mode commands and nokeypad mode commands are @strong{not}
573 supported (with one important exception; see item 8 in
574 @ref{Highlights}). Although, at first, this may seem like a big
575 omission, the set of built-in Emacs commands provides a much richer set
576 of capabilities which more than make up for this omission.
577
578 To enter Emacs commands not bound to keys, you can press @kbd{GOLD KP7}
579 or the @key{DO} key. Emacs will display its own command prompt "M-x".
580 This stands for the keypress @kbd{Meta-x}, where @key{Meta} is a special
581 shift key. The @key{Alt} key is often mapped to behave as a @key{Meta}
582 key. So, you can also invoke this prompt by pressing @kbd{Meta-x}.
583 Typing the sequence @kbd{ESC x} will also invoke the prompt.
584
585 @item
586 Selected text is highlighted @strong{only} on systems where Emacs
587 supports the highlighting of text.
588
589 @item
590 Just like in TPU/EVE, the @key{ENTER} key is @strong{not} used to
591 terminate input when the editor prompts you for input. The @key{RETURN}
592 key is used, instead. (@key{KP4} and @key{KP5} (the direction keys) do
593 terminate input for the @samp{FIND} command, just like in EDT, however.)
594
595 @end enumerate
596
597 @node Highlights
598 @chapter Some Highlights, and Comparisons to the Original Emacs EDT Emulation
599
600 @enumerate
601
602 @item
603 The EDT define key command is supported (@code{edt-define-key}) and is
604 bound to @kbd{C-k} in the default EDT mode when EDT control sequence
605 bindings are enabled, or when the sample @file{edt-user.el}
606 customization file is used. The TPU/EVE learn command is supported but
607 not bound to a key in the default EDT mode but is bound in the sample
608 @file{edt-user.el} file.
609
610 Unlike the TPU/EVE learn command, which uses one key to begin the learn
611 sequence, @kbd{C-l}, and another command to remember the sequence,
612 @kbd{C-r}, this version of the learn command (@code{edt-learn}) serves
613 as a toggle to both begin and to remember the learn sequence.
614
615 Many users who change the meaning of a key with the define key and the
616 learn commands, would like to be able to restore the original key
617 binding without having to quit and restart emacs. So a restore key
618 command is provided to do just that. When invoked, it prompts you to
619 press the key to which you wish the last replaced key definition
620 restored. It is bound to @kbd{GOLD C-k} in the default EDT mode when
621 EDT control sequence bindings are enabled or the sample
622 @file{edt-user.el} customization file is used.
623
624 @item
625 Direction support is fully supported.
626
627 @item
628 All original Emacs bindings are fully restored when EDT emulation is
629 turned off. So, if a fellow worker comes over to your terminal to help
630 you with a software problem, for example, and is completely confused by
631 your EDT emulation bindings, just enter the command,
632 @code{edt-emulation-off}, at the @samp{M-x} prompt and the original
633 Emacs bindings will be restored. To resume the EDT emulation, just
634 enter @code{edt-emulation-on}.
635
636 @item
637 User custom EDT bindings are kept separate from the default EDT
638 bindings. One can toggle back and forth between the custom EDT bindings
639 and default EDT bindings.
640
641 @item
642 The Emacs functions in @file{edt.el} attempt to emulate, where
643 practical, the exact behavior of the corresponding EDT keypad mode
644 commands. In a few cases, the emulation is not exact, but we hope you
645 will agree it is close enough. In a very few cases, we chose to use the
646 Emacs way of handling things. As mentioned earlier, we do not emulate
647 the EDT @samp{SUBS} command. Instead, we chose to use the Emacs
648 @code{query-replace} function, which we find to be easier to use.
649
650 @item
651 Emacs uses the regexp assigned to @code{page-delimiter} to determine
652 what marks a page break. This is normally @samp{^\f}, which causes the
653 @code{edt-page} command to ignore form feeds not located at the
654 beginning of a line. To emulate the EDT @samp{PAGE} command exactly,
655 page-delimiter is set to @samp{\f} when EDT emulation is turned on, and
656 restored to @samp{^\f} when EDT emulation is turned off. But, since
657 some users prefer the Emacs definition of a page break, or may wish to
658 preserve a customized definition of page break, one can override the EDT
659 definition by placing
660
661 @example
662 (setq edt-keep-current-page-delimiter t)
663 @end example
664
665 @noindent in your @file{.emacs} file. Or, you can used the Emacs customize
666 command to change its setting.
667
668 @item
669 The EDT definition of a section of a terminal window is hardwired to be
670 16 lines of its one-and-only 24-line window (the EDT @samp{SECT} command
671 bound to @key{KP8}). That's two-thirds of the window at a time. Since
672 Emacs, like TPU/EVE, can handle multiple windows of sizes of other than
673 24 lines, the definition of section used here has been modified to
674 two-thirds of the current window. (There is also an
675 @code{edt-scroll-window} function which you may prefer over the
676 @samp{SECT} emulation.)
677
678 @item
679 Cursor movement and deletion involving word entities is identical to
680 EDT. This, above all else, gives the die-hard EDT user a sense of being
681 at home. Also, an emulation of EDT's @samp{SET ENTITY WORD} command is
682 provided, for those users who like to customize movement by a word at a
683 time to their own liking.
684
685 @item
686 EDT's @samp{FIND} and @samp{FNDNXT} are supported.
687
688 @item
689 EDT's @samp{APPEND}, @samp{REPLACE}, and @samp{SUBS} commands are supported.
690
691 @item
692 @samp{CHNGCASE} is supported. It works on individual characters or
693 selected text, if @samp{SELECT} is active. In addition, two new
694 commands are provided: @code{edt-lowercase} and @code{edt-uppercase}.
695 They work on individual @strong{words} or selected text, if
696 @samp{SELECT} is active.
697
698 @item
699 Form feed and tab insert commands are supported.
700
701 @item
702 A new command, @code{edt-duplicate-word}, is provided. If you
703 experiment with it, you might find it to be surprisingly useful and may
704 wonder how you ever got along without it! It is assigned to @kbd{C-j}
705 in the sample @file{edt-user.el} customization file.
706
707 @item
708 TPU/EVE's Rectangular Cut and Paste functions (originally from the
709 EVE-Plus package) are supported. But unlike the TPU/EVE versions, these
710 here support both insert and overwrite modes. The seven rectangular
711 functions are bound to @key{F7}, @key{F8}, @kbd{GOLD-F8}, @key{F9},
712 @kbd{GOLD-F9}, @key{F10}, and @kbd{GOLD-F10} in the default EDT mode.
713
714 @item
715 The original EDT emulation package set up many default regular and GOLD
716 bindings. We tried to preserve most (but not all!) of these, so users
717 of the original emulation package will feel more at home.
718
719 Nevertheless, there are still many GOLD key sequences which are not
720 bound to any functions. These are prime candidates to use for your own
721 customizations.
722
723 Also, there are several commands in @file{edt.el} not bound to any key.
724 So, you will find it worthwhile to look through @file{edt.el} for
725 functions you may wish to add to your personal customized bindings.
726
727 @item
728 The VT200/VT300 series terminals steal the function keys @key{F1} to
729 @key{F5} for their own use. These do not generate signals which are
730 sent to the host. So, @file{edt.el} does not assign any default
731 bindings to @key{F1} through @key{F5}.
732
733 In addition, our VT220 terminals generate an interrupt when the @key{F6}
734 key is pressed (@samp{^C} or @samp{^Y}, can't remember which) and not
735 the character sequence documented in the manual. So, binding Emacs
736 commands to @key{F6} will not work if your terminal behaves the same
737 way.
738
739 @item
740 The VT220 terminal has no @key{ESC}, @key{BS}, nor @key{LF} keys, as
741 does a VT100. So the default EDT bindings adopt the standard DEC
742 convention of having the @key{F11}, @key{F12}, and @key{F13} keys, on a
743 VT200 series (and above) terminal, assigned to the same EDT functions
744 that are bound to @key{ESC}, @key{BS}, and @key{LF} on a VT100 terminal.
745
746 @item
747 Each user, through the use of a private @file{edt-user.el} file, can
748 customize, very easily, personal EDT emulation bindings.
749
750 @item
751 The EDT @samp{SELECT} and @samp{RESET} functions are supported.
752 However, unlike EDT, pressing @samp{RESET} to cancel text selection does
753 @strong{not} reset the existing setting of the current direction.
754
755 We also provide a TPU/EVE like version of the single @samp{SELECT/RESET}
756 function, called @code{edt-toggle-select}, which makes the EDT
757 @samp{SELECT} function into a toggle on/off switch. That is, if
758 selection is on, pressing @samp{SELECT} again turns selection off
759 (cancels selection). This function is used in the sample
760 @file{edt-user.el} customization file.
761
762 @item
763 EDT scroll margins are supported, but are disabled by default.
764 (@ref{Scroll margins} for instructions on how to enable them.)
765
766 @end enumerate
767
768 @node Customizing
769 @chapter Customizing Emulation
770
771 Most EDT users, at one time or another, make some custom key bindings,
772 or use someone else's custom key bindings, which they come to depend
773 upon just as if they were built-in bindings. This EDT Emulation for GNU
774 Emacs is designed to make it easy to customize bindings.
775
776 If you wish to customize the EDT Emulation to use some of your own key
777 bindings, you need to make a private version of @file{edt-user.el} in
778 your own private lisp directory. The Emacs @file{etc/} directory
779 contains an example for you to use as a template and for ideas.
780 @c This seems to be untrue.
781 @ignore
782 There are two sample files @file{edt-user.el1} and @file{edt-user.el2}
783 for you to use as templates and for ideas. Look at @file{edt-user.el1}
784 first. Unless you will be using two or more very different types of
785 terminals on the same system, you need not look at @file{edt-user.el2}.
786 @end ignore
787
788 First, you need to have your own private lisp directory, say
789 @file{~/lisp}, and you should add it to the GNU Emacs load path.
790
791 @strong{Please note:} A few sites have different load-path requirements,
792 so the above directions may need some modification if your site has such
793 special needs.
794
795 @menu
796 * edt-user.el:: Creating your own @file{edt-user.el} file.
797 * Words:: Specifying word entities.
798 * Control keys:: Enabling EDT control key sequence bindings.
799 * Scroll margins:: Setting scroll margins.
800 @end menu
801
802 @node edt-user.el
803 @section Creating your own @file{edt-user.el} File
804
805 A sample @file{edt-user.el} file is provided in the Emacs @file{etc/}
806 directory. You should use it as a guide to learn how you can customize
807 EDT emulation bindings to your own liking. Names used to identify the
808 set of LK-201 keypad and function keys are:
809
810 @example
811 Keypad Keys:
812 PF1 PF2 PF3 PF4
813 KP7 KP8 KP9 KP-
814 KP4 KP5 KP6 KP,
815 KP1 KP2 KP3
816 KP0 KPP KPE
817 @end example
818
819 @example
820 Arrow Keys:
821 LEFT RIGHT DOWN UP
822 @end example
823
824 @example
825 Function Keys:
826 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14
827 HELP DO F17 F18 F19 F20
828
829 FIND INSERT REMOVE
830 SELECT PREVIOUS NEXT
831 @end example
832
833 Note: Many VT-200 terminals, and above, steal function keys @key{F1}
834 through @key{F5} for terminal setup control and don't send anything to
835 the host if pressed. So customizing bindings to these keys may not work
836 for you.
837
838 There are three basic functions that do the EDT emulation custom
839 bindings: @code{edt-bind-key}, @code{edt-bind-gold-key}, and
840 @code{edt-bind-function-key}.
841
842 The first two are for binding functions to keys which are standard
843 across most keyboards. This makes them keyboard independent, making it
844 possible to define these key bindings for all terminals in the file
845 @file{edt.el}.
846
847 The first, @code{edt-bind-key}, is used typically to bind emacs commands
848 to control keys, although some people use it to bind commands to other
849 keys, as well. (For example, some people use it to bind the VT200
850 seldom used back-tick key (@samp{`}) to the function @samp{ESC-prefix}
851 so it will behave like an @key{ESC} key.) The second function,
852 @code{edt-bind-gold-key}, is used to bind emacs commands to gold key
853 sequences involving alpha-numeric keys, special character keys, and
854 control keys.
855
856 The third function, @code{edt-bind-function-key}, is terminal dependent
857 and is defined in a terminal specific file (see @file{edt-vt100.el} for
858 example). It is used to bind emacs commands to LK-201 function keys, to
859 keypad keys, and to gold sequences of those keys.
860
861 @node Words
862 @section Specifying Word Entities
863
864 The variable @code{edt-word-entities} is used to emulate EDT's @samp{SET
865 ENTITY WORD} command. It contains a list of characters to be treated as
866 words in themselves. If the user does not define
867 @code{edt-word-entities} in his/her @file{.emacs} file, then it is set
868 up with the EDT default containing only @key{TAB}.
869
870 The characters are stored in the list by their numerical values, not as
871 strings. Emacs supports several ways to specify the numerical value of
872 a character. One method is to use the question mark: @samp{?A} means
873 the numerical value for @samp{A}, @samp{?/} means the numerical value
874 for @samp{/}, and so on. Several unprintable characters have special
875 representations:
876
877 @example
878 ?\b specifies BS, C-h
879 ?\t specifies TAB, C-i
880 ?\n specifies LFD, C-j
881 ?\v specifies VTAB, C-k
882 ?\f specifies FF, C-l
883 ?\r specifies CR, C-m
884 ?\e specifies ESC, C-[
885 ?\\ specifies \
886 @end example
887
888 Here are some examples:
889
890 @example
891 (setq edt-word-entities '(?\t ?- ?/)) ; specifies TAB, - , and /
892 (setq edt-word-entities '(?\t) ; specifies TAB, the default
893 @end example
894
895 @noindent You can also specify characters by their decimal ascii values:
896
897 @example
898 (setq edt-word-entities '(9 45 47)) ; specifies TAB, - , and /
899 @end example
900
901 @node Control keys
902 @section Enabling EDT Control Key Sequence Bindings
903
904 Where EDT key bindings and GNU Emacs key bindings conflict, the default
905 GNU Emacs key bindings are retained by default. Some diehard EDT users
906 may not like this. So, if the variable
907 @code{edt-use-EDT-control-key-bindings} is set to true in a user's
908 @file{.emacs} file, then the default EDT Emulation mode will enable most
909 of the original EDT control key sequence bindings. If you wish to do
910 this, add the following line to your @file{.emacs} file:
911
912 @example
913 (setq edt-use-EDT-control-key-bindings t)
914 @end example
915
916 @node Scroll margins
917 @section Setting Scroll Margins
918
919 Scroll margins at the top and bottom of the window are now supported.
920 (The design was copied from @file{tpu-extras.el}.) By default, this
921 feature is enabled with the top margin set to 10% of the window and the
922 bottom margin set to 15% of the window. To change these settings, you
923 can invoke the function @code{edt-set-scroll-margins} in your
924 @file{.emacs} file. For example, the following line
925
926 @example
927 (edt-set-scroll-margins "20%" "25%")
928 @end example
929
930 @noindent sets the top margin to 20% of the window and the bottom margin
931 to 25% of the window. To disable this feature, set each margin to 0%.
932 You can also invoke @code{edt-set-scroll-margins} interactively while
933 EDT Emulation is active to change the settings for that session.
934
935 @strong{Please note:} Another way to set the scroll margins is to use
936 the Emacs customization feature (not available in Emacs 19) to set the
937 following two variables directly: @code{edt-top-scroll-margin} and
938 @code{edt-bottom-scroll-margin}.
939
940 Enter the Emacs @code{customize} command. First select the
941 @samp{Editing} group and then select the @samp{Emulations} group.
942 Finally, select the @samp{Edt} group and follow the directions.
943
944 @node GNU Free Documentation License
945 @appendix GNU Free Documentation License
946 @include doclicense.texi
947
948 @bye
949
950 @ignore
951 arch-tag: 1b7ebe01-754b-4834-a12b-f152ef7db9e0
952 @end ignore