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, 2000, 2001, 2002,
9 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
10 Free Software Foundation, Inc.
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. Buying copies from the FSF supports it in
22 developing GNU and promoting software freedom.''
26 @dircategory Emacs misc features
28 * EDT: (edt). An Emacs emulation of the EDT editor.
32 @title EDT Emulation User's Manual
33 @author Kevin Gallagher
34 @author @email{Kevin.Gallagher@@boeing.com}
36 @vskip 0pt plus 1filll
44 @top Emacs EDT emulation
45 This manual describes the Emacs EDT package, which provides emulation
52 * Overview:: Overview of the EDT package.
53 * Supported terminals:: Terminals/keyboards that are supported.
54 * Starting emulation:: How to get started.
55 * Platform-specific notes:: Notes specific to certain platforms.
56 * Differences:: How does this EDT emulation differ from real EDT?
57 * Highlights:: Some highlights, and comparisons to the
58 original Emacs EDT emulation.
59 * Customizing:: Customizing emulation.
60 * GNU Free Documentation License:: The license for this manual.
64 @chapter Overview of the EDT Package
66 This manual describes version 4.0 of the EDT Emulation for Emacs.
67 It comes with special functions which replicate nearly all of
68 EDT's keypad mode behavior. It sets up default keypad and function key
69 bindings which closely match those found in EDT. Support is provided so
70 that users may reconfigure most keypad and function key bindings to
73 Version 4.0 contains several enhancements (@pxref{Changes}).
76 * Quick start:: How to begin using EDT.
77 * Changes:: What's new in version 4.0.
78 * Goals:: The aims of this package.
82 @section How to Begin Using EDT
84 To start the EDT Emulation, first start Emacs and then enter @kbd{M-x
85 edt-emulation-on} to begin the emulation. After initialization is
86 complete, the following message will appear below the status line
87 informing you that the emulation has been enabled: ``Default EDT keymap
90 You can have the EDT Emulation start up automatically, each time you
91 initiate an Emacs session, by adding the following line to your
95 (add-hook term-setup-hook 'edt-emulation-on)
98 @noindent @strong{Important:} Be sure to read the rest of this manual.
99 It contains very useful information on how the EDT Emulation behaves and
100 how to customize it to your liking.
102 @noindent The EDT emulation consists of the following files:
107 @file{edt.texi} - This manual.
110 @file{edt-user.el} - An example customization file.
113 @file{edt.el} - EDT emulation functions and default configuration.
116 @file{edt-lk201.el} - Built-in support for DEC LK-201 keyboards.
119 @file{edt-vt100.el} - Built-in support for DEC VT-100 (and above) terminals.
122 @file{edt-pc.el} - Built-in support for PC 101 Keyboards under MS-DOS.
125 @file{edt-mapper.el} - Create an EDT LK-201 map file for keyboards
126 without built-in support.
131 @section What's New in Version 4.0
133 Version 4.0 contains the following enhancements:
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
146 (edt-set-scroll-margins "20%" "25%")
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.
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}).
173 EDT Emulation now also works in XEmacs, including the highlighting of
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.
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{<ESC>Ow} and @samp{<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{<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.)
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.
216 @section The Aims of this Package
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
226 Make it easy for a user to customize EDT emulation key bindings without
227 knowing much about Emacs Lisp.
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.
234 Provide support for some TPU/EVE functions not supported in EDT.
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.
241 Support Emacs and XEmacs 19 and higher.
244 Supports highlighting of marked text within the EDT emulation on all
245 platforms on which Emacs supports highlighting of marked text.
248 Handle terminal configuration interactively for most terminal
249 configurations, when the emulation is invoked for the first time.
252 Support a PC AT keyboard under MS-DOS.
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:
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.
279 PC AT keyboard under MS-DOS.
283 Be sure to read @ref{Platform-specific notes} to see if those notes
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
299 (add-hook term-setup-hook 'edt-emulation-on)
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
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
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
332 @node Platform-specific notes
333 @chapter Notes Specific to Certain Platforms
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.
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:
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
376 keycode 78 = KP_Subtract
377 keycode 97 = KP_Enter
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
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.)
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.)
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
434 On one distribution on an Intel PC, the following @file{.xmodmaprc} set
440 ! Set up PC keypad under GNU/Linux for the Emacs EDT Emulation
444 keycode 96 = Num_Lock Pointer_EnableKeys
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.
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}:
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)
483 mod5 Scroll_Lock (0x4e)
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:
495 keycode 77 = Num_Lock Pointer_EnableKeys
505 @noindent So, in RedHat GNU/Linux 5.2 on a PC, Num_Lock generates keycode 77.
506 The following steps are taken:
510 clear the assignment of Num_Lock to mod2;
512 swap the keycodes assigned to F12 and Num_Lock;
514 assign Num_Lock back to mod2.
517 @noindent The @file{.xmodmaprc} file looks like this:
522 ! Set up PC keypad under GNU/Linux for the Emacs EDT Emulation
526 keycode 96 = Num_Lock Pointer_EnableKeys
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.
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.
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}.
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.
584 Selected text is highlighted @strong{only} on systems where Emacs
585 supports the highlighting of text.
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.)
596 @chapter Some Highlights, and Comparisons to the Original Emacs EDT Emulation
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.
623 Direction support is fully supported.
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}.
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.
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.
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
660 (setq edt-keep-current-page-delimiter t)
663 @noindent in your @file{.emacs} file. Or, you can used the Emacs customize
664 command to change its setting.
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.)
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.
684 EDT's @samp{FIND} and @samp{FNDNXT} are supported.
687 EDT's @samp{APPEND}, @samp{REPLACE}, and @samp{SUBS} commands are supported.
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.
697 Form feed and tab insert commands are supported.
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.
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.
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
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.
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
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.
745 Each user, through the use of a private @file{edt-user.el} file, can
746 customize, very easily, personal EDT emulation bindings.
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.
761 EDT scroll margins are supported, but are disabled by default.
762 (@ref{Scroll margins} for instructions on how to enable them.)
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.
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}.
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
794 * edt-user.el:: 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.
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:
824 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14
825 HELP DO F17 F18 F19 F20
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
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
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
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.
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
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-[
886 Here are some examples:
889 (setq edt-word-entities '(?\t ?- ?/)) ; specifies TAB, - , and /
890 (setq edt-word-entities '(?\t) ; specifies TAB, the default
893 @noindent You can also specify characters by their decimal ascii values:
896 (setq edt-word-entities '(9 45 47)) ; specifies TAB, - , and /
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:
911 (setq edt-use-EDT-control-key-bindings t)
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
925 (edt-set-scroll-margins "20%" "25%")
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