2 @setfilename ../../info/edt
3 @settitle EDT Emulation for Emacs
6 This file documents the EDT emulation package for Emacs.
8 Copyright @copyright{} 1986, 1992, 1994-1995, 1999-2012
9 Free Software Foundation, Inc.
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''.
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.''
25 @dircategory Emacs misc features
27 * EDT: (edt). An Emacs emulation of the EDT editor.
31 @title EDT Emulation User's Manual
32 @author Kevin Gallagher
33 @author @email{Kevin.Gallagher@@boeing.com}
35 @vskip 0pt plus 1filll
43 @top Emacs EDT emulation
44 This manual describes the Emacs EDT package, which provides emulation
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.
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
72 Version 4.0 contains several enhancements (@pxref{Changes}).
75 * Quick start:: How to begin using EDT.
76 * Changes:: What's new in version 4.0.
77 * Goals:: The aims of this package.
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
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
94 (add-hook term-setup-hook 'edt-emulation-on)
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:
106 @file{edt.texi} - This manual.
109 @file{edt-user.el} - An example customization file.
112 @file{edt.el} - EDT emulation functions and default configuration.
115 @file{edt-lk201.el} - Built-in support for DEC LK-201 keyboards.
118 @file{edt-vt100.el} - Built-in support for DEC VT-100 (and above) terminals.
121 @file{edt-pc.el} - Built-in support for PC 101 Keyboards under MS-DOS.
124 @file{edt-mapper.el} - Create an EDT LK-201 map file for keyboards
125 without built-in support.
130 @section What's New in Version 4.0
132 Version 4.0 contains the following enhancements:
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
145 (edt-set-scroll-margins "20%" "25%")
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.
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}.
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.
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}).
172 EDT Emulation now also works in XEmacs, including the highlighting of
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.
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.)
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.
215 @section The Aims of this Package
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
225 Make it easy for a user to customize EDT emulation key bindings without
226 knowing much about Emacs Lisp.
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.
233 Provide support for some TPU/EVE functions not supported in EDT.
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.
240 Support Emacs and XEmacs 19 and higher.
243 Supports highlighting of marked text within the EDT emulation on all
244 platforms on which Emacs supports highlighting of marked text.
247 Handle terminal configuration interactively for most terminal
248 configurations, when the emulation is invoked for the first time.
251 Support a PC AT keyboard under MS-DOS.
255 @node Supported terminals
256 @chapter Terminals/Keyboards that are Supported
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.
267 In character oriented connections not running a window manager, built-in
268 support for the following terminals/keyboards is provided:
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.
278 PC AT keyboard under MS-DOS.
282 Be sure to read @ref{Platform-specific notes} to see if those notes
285 @node Starting emulation
286 @chapter How to Get Started
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''.
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
298 (add-hook term-setup-hook 'edt-emulation-on)
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).
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
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
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
331 @node Platform-specific notes
332 @chapter Notes Specific to Certain Platforms
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.
341 @node Sun workstations
342 @section Sun Workstations Running X
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.
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.
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.
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:
367 ! Set up Sun Type 5 keypad for use with the Emacs EDT Emulation
369 keycode 53 = KP_Divide
370 keycode 54 = KP_Multiply
371 keycode 57 = KP_Decimal
375 keycode 78 = KP_Subtract
376 keycode 97 = KP_Enter
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.
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
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.
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.)
414 @section PC Users Running MS-DOS
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.)
424 @section PC Users Running GNU/Linux
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
433 On one distribution on an Intel PC, the following @file{.xmodmaprc} set
439 ! Set up PC keypad under GNU/Linux for the Emacs EDT Emulation
443 keycode 96 = Num_Lock Pointer_EnableKeys
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.)
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.
461 @section General Notes on Using @key{NumLock} for the @key{PF1} Key on Unix Systems
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.
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}:
473 xmodmap: up to 2 keys per modifier, (keycodes in parentheses):
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)
482 mod5 Scroll_Lock (0x4e)
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.
488 Now, @samp{xmodmap -pke} yields:
494 keycode 77 = Num_Lock Pointer_EnableKeys
504 @noindent So, in RedHat GNU/Linux 5.2 on a PC, Num_Lock generates keycode 77.
505 The following steps are taken:
509 clear the assignment of Num_Lock to mod2;
511 swap the keycodes assigned to F12 and Num_Lock;
513 assign Num_Lock back to mod2.
516 @noindent The @file{.xmodmaprc} file looks like this:
521 ! Set up PC keypad under GNU/Linux for the Emacs EDT Emulation
525 keycode 96 = Num_Lock Pointer_EnableKeys
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.
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.
538 @chapter How Does this EDT Emulation Differ from Real EDT?
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.
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.
553 Entering repeat counts works a little differently than in EDT.
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!
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}.
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.
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.
583 Selected text is highlighted @strong{only} on systems where Emacs
584 supports the highlighting of text.
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.)
595 @chapter Some Highlights, and Comparisons to the Original Emacs EDT Emulation
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.
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.
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.
622 Direction support is fully supported.
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}.
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.
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.
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
659 (setq edt-keep-current-page-delimiter t)
662 @noindent in your @file{.emacs} file. Or, you can used the Emacs customize
663 command to change its setting.
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.)
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.
683 EDT's @samp{FIND} and @samp{FNDNXT} are supported.
686 EDT's @samp{APPEND}, @samp{REPLACE}, and @samp{SUBS} commands are supported.
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.
696 Form feed and tab insert commands are supported.
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.
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.
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.
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
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.
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}.
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
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.
744 Each user, through the use of a private @file{edt-user.el} file, can
745 customize, very easily, personal EDT emulation bindings.
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.
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.
760 EDT scroll margins are supported, but are disabled by default.
761 (@ref{Scroll margins} for instructions on how to enable them.)
766 @chapter Customizing Emulation
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.
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.
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}.
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.
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
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.
800 @section Creating your own @file{edt-user.el} File
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:
823 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14
824 HELP DO F17 F18 F19 F20
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
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}.
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
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
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.
859 @section Specifying Word Entities
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}.
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
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-[
885 Here are some examples:
888 (setq edt-word-entities '(?\t ?- ?/)) ; specifies TAB, - , and /
889 (setq edt-word-entities '(?\t) ; specifies TAB, the default
892 @noindent You can also specify characters by their decimal ascii values:
895 (setq edt-word-entities '(9 45 47)) ; specifies TAB, - , and /
899 @section Enabling EDT Control Key Sequence Bindings
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:
910 (setq edt-use-EDT-control-key-bindings t)
914 @section Setting Scroll Margins
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
924 (edt-set-scroll-margins "20%" "25%")
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.
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}.
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.
940 @node GNU Free Documentation License
941 @appendix GNU Free Documentation License
942 @include doclicense.texi