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