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