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
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.''
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 19 and
67 above. It comes with special functions which replicate nearly all of
68 EDT's keypad mode behavior. It sets up default keypad and function key
69 bindings which closely match those found in EDT. Support is provided so
70 that users may reconfigure most keypad and function key bindings to
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 a GNU 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 (not available in Emacs 19) to set the
156 following two variables directly: @code{edt-top-scroll-margin} and
157 @code{edt-bottom-scroll-margin}.
159 Enter the Emacs @code{customize} command. First select the
160 @samp{Editing} group and then select the @samp{Emulations} group.
161 Finally, select the @samp{Edt} group and follow the directions.
164 The @samp{SUBS} command is now supported and bound to @kbd{GOLD-Enter}
165 by default. (This design was copied from @file{tpu-edt.el}.) Note, in
166 earlier versions of EDT Emulation, @kbd{GOLD-Enter} was assigned to the
167 Emacs function @code{query-replace}. The binding of
168 @code{query-replace} has been moved to @kbd{GOLD-/}. If you prefer to
169 restore @code{query-replace} to @kbd{GOLD-Enter}, then use an EDT user
170 customization file, @file{edt-user.el}, to do this
171 (@pxref{Customizing}).
174 EDT Emulation now also works in XEmacs, including the highlighting of
178 If you access a workstation using an X Server, observe that the
179 initialization file generated by @file{edt-mapper.el} will now contain
180 the name of the X Server vendor. This is a convenience for those who
181 have access to their Unix account from more than one type of X Server.
182 Since different X Servers typically require different EDT emulation
183 initialization files, @file{edt-mapper.el} will now generate these
184 different initialization files and save them with different names.
185 Then, the correct initialization file for the particular X server in use
186 is loaded correctly automatically.
189 Also, @file{edt-mapper.el} is now capable of binding an @acronym{ASCII}
190 key sequence, providing the @acronym{ASCII} key sequence prefix is
191 already known by Emacs to be a prefix. As a result of providing this
192 support, some terminal/keyboard/window system configurations, which
193 don't have a complete set of sensible function key bindings built into
194 Emacs in @code{function-key-map}, can still be configured for use with
195 EDT Emulation. (Note: In a few rare circumstances this does not work
196 properly. In particular, it does not work if a subset of the leading
197 @acronym{ASCII} characters in a key sequence are recognized by Emacs as
198 having an existing binding. For example, if the keypad 7 (@key{KP7})
199 key generates the sequence @samp{<ESC>Ow} and @samp{<ESC>O} is already
200 bound to a function, pressing @key{KP7} when told to do so by
201 @file{edt-mapper.el} will result in @file{edt-mapper.el} incorrectly
202 mapping @samp{<ESC>O} to @key{KP7} and @samp{w} to @key{KP8}. If
203 something like this happens to you, it is probably a bug in the support
204 for your keyboard within Emacs @strong{or} a bug in the Unix
205 termcap/terminfo support for your terminal @strong{or} a bug in the
206 terminal emulation software you are using.)
209 The @code{edt-quit} function (bound to @kbd{GOLD-q} by default) has been
210 modified to warn the user when file-related buffer modifications exist.
211 It now cautions the user that those modifications will be lost if the
212 user quits without saving those buffers.
217 @section The Aims of this Package
222 Emulate EDT Keypad Mode commands closely so that current EDT users will
223 find that it easy and comfortable to use GNU Emacs with a small learning
227 Make it easy for a user to customize EDT emulation key bindings without
228 knowing much about Emacs Lisp.
231 Make it easy to switch between the original EDT default bindings and the
232 user's customized EDT bindings, without having to exit Emacs.
235 Provide support for some TPU/EVE functions not supported in EDT.
238 Provide an easy way to restore @strong{all} original Emacs key bindings,
239 just as they existed before the EDT emulation was first invoked.
242 Support GNU Emacs 19 and higher. (GNU Emacs 18 and below is no longer
243 supported.) XEmacs 19, and above, is also supported.
246 Supports highlighting of marked text within the EDT emulation on all
247 platforms on which Emacs supports highlighting of marked text.
250 Handle terminal configuration interactively for most terminal
251 configurations, when the emulation is invoked for the first time.
254 Support a PC AT keyboard under MS-DOS.
258 @node Supported terminals
259 @chapter Terminals/Keyboards that are Supported
261 Keyboards used under a Window System are supported via the
262 @code{edt-mapper} function. The first time you invoke the emulation
263 under a window system, the @code{edt-mapper} function is run
264 automatically and the user is prompted to identify which keys the
265 emulation is to use for the standard keypad and function keys EDT
266 expects (e.g., @key{PF1}, @key{PF2}, @key{KP0}, @key{KP1}, @key{F1},
267 @key{F2}, etc.). This configuration is saved to disk read each time the
268 emulation is invoked.
270 In character oriented connections not running a window manager, built-in
271 support for the following terminals/keyboards is provided:
276 DEC VT-100 series and higher. This includes well behaved VT clones and
277 emulators. If you are using a VT series terminal, be sure that the
278 @env{TERM} environment variable is set properly before invoking emacs.
281 PC AT keyboard under MS-DOS.
285 Be sure to read @ref{Platform-specific notes} to see if those notes
288 @node Starting emulation
289 @chapter How to Get Started
291 Start up GNU Emacs and enter @kbd{M-x edt-emulation-on} to begin the
292 emulation. After initialization is complete, the following message will
293 appear below the status line informing you that the emulation has been
294 enabled: ``Default EDT keymap active''.
296 You can have the EDT Emulation start up automatically, each time you
297 initiate a GNU Emacs session, by adding the following line to your
301 (add-hook term-setup-hook 'edt-emulation-on)
304 A reference sheet is included (later on) listing the default EDT
305 Emulation key bindings. This sheet is also accessible on line from
306 within Emacs by pressing @key{PF2}, @kbd{GOLD-H}, or @samp{HELP} (when
307 in the EDT Default Mode).
309 It is easy to customize key bindings in the EDT Emulation
310 (@pxref{Customizing}). Customizations are placed in a file called
311 @file{edt-user.el}. The Emacs @file{etc/} directory contains an
312 example. If @file{edt-user.el} is found in your GNU Emacs load path
313 during EDT Emulation initialization, then the following message will
314 appear below the status line indicating that the emulation has been
315 enabled, enhanced by your own customizations: ``User EDT custom keymap
318 Once enabled, it is easy to switch back and forth between your
319 customized EDT Emulation key bindings and the default EDT Emulation key
320 bindings. (Look at the binding to @kbd{GOLD-Z} in the sample
321 @file{edt-user.el} file.) It is also easy to turn off the emulation
322 (via the command @code{edt-emulation-off}). Doing so completely
323 restores the original key bindings in effect just prior to invoking the
326 Emacs binds keys to @acronym{ASCII} control characters and so does the
327 real EDT. Where EDT key bindings and GNU Emacs key bindings conflict,
328 the default GNU Emacs key bindings are retained by the EDT emulation by
329 default. If you are a diehard EDT user you may not like this. The
330 @ref{Control keys} section explains how to change this so that the EDT
331 bindings to @acronym{ASCII} control characters override the default
334 @node Platform-specific notes
335 @chapter Notes Specific to Certain Platforms
338 * Sun workstations:: Sun workstations running X.
339 * MS-DOS:: PC users running MS-DOS.
340 * GNU/Linux:: PC users running GNU/Linux.
341 * Unix:: Using @key{NumLock} for the @key{PF1} key on Unix systems.
344 @node Sun workstations
345 @section Sun Workstations Running X
347 Some earlier Sun keyboards do not have arrow keys separate from the
348 keypad keys. It is difficult to emulate the full EDT keypad and still
349 retain use of the arrow keys on such keyboards.
351 The Sun Type 5 and other more recent Sun keyboards, however, do have
352 separate arrow keys. This makes them candidates for setting up a
353 reasonable EDT keypad emulation.
355 Depending upon the configuration of the version of X installed on your
356 system, you may find the default X keynames for the keypad keys don't
357 permit Emacs to interpret some or all the keypad keys as something other
358 than arrow keys, numeric keys, @key{Home}, @key{PageUp}, etc. Both Sun
359 and HP have been particularly guilty of making bizarre keysym
360 assignments to the keypad keys.
362 In most cases, the X Windows command, @code{xmodmap}, can be used to
363 correct the problem. Here's a sample @file{.xmodmaprc} file which
364 corrects this problem on one Sun workstation configuration using an
365 older SunOS release configured with a Sun Type 5 keyboard:
370 ! Set up Sun Type 5 keypad for use with the GNU Emacs EDT Emulation
372 keycode 53 = KP_Divide
373 keycode 54 = KP_Multiply
374 keycode 57 = KP_Decimal
378 keycode 78 = KP_Subtract
379 keycode 97 = KP_Enter
391 If @file{edt-mapper.el} does not recognize your keypad keys as unique
392 keys, use the command @samp{xmodmap -pke} to get a listing of the actual
393 key codes and the keysyms mapped to them and then generate you own
394 custom @file{.xmodmaprc} similar to the one above.
396 Next, feed @file{.xmodmaprc} to the @code{xmodmap} command and all the
397 Sun Type 5 keypad keys will now be configurable for the emulation of an
398 LK-201 keypad (less the @key{,} key). In this example, the line
404 @noindent changes the X Windows name of the keypad @key{NumLock} key to
405 be known internally as the @key{F24} key. Doing so permits it to be
406 configured to behave as the @key{PF1} (@key{GOLD}) key.
408 The side effect of this change is that you will no longer have a
409 @key{NumLock} key. If you are using other software under X which
410 requires a @key{NumLock} key, then examine your keyboard and look for
411 one you don't use and redefine it to be the @key{NumLock} key.
412 Basically, you need to clear the @key{NumLock} key from being assigned
413 as a modifier, assign it to the key of your choice, and then add it back
414 as a modifier. (@ref{Unix} for further help on how to do this.)
417 @section PC Users Running MS-DOS
419 By default, F1 is configured to emulate the @key{PF1} (@key{GOLD}) key.
420 But @key{NumLock} can be used instead if you load a freeware TSR
421 distributed with MS-Kermit, call @samp{gold.com}. This was once
422 distributed in a file called @file{gold22.zip} and came with the source
423 code as well as a loadable binary image. (See @file{edt-pc.el} in the
424 Emacs @file{lisp/emulation} directory for more information.)
427 @section PC Users Running GNU/Linux
429 The default X server configuration varies from distribution to
430 distribution and release to release of GNU/Linux. If your system fails
431 to recognize the keypad keys as distinct keys, change the NumLock state,
432 turning it on or off, as the case may be, then try again. If this
433 doesn't solve your problem, you may have to modify the X keysym mappings
436 On one distribution on an Intel PC, the following @file{.xmodmaprc} set
442 ! Set up PC keypad under GNU/Linux for the GNU Emacs EDT Emulation
446 keycode 96 = Num_Lock Pointer_EnableKeys
450 In this example, after feeding the file to the @code{xmodmap} command,
451 the PC @key{NumLock} keypad key will be configurable for the emulation
452 of the @key{PF1} key. The PC keypad can now emulate an LK-201 keypad
453 (less the comma key), the standard keyboard supplied with DEC terminals
454 VT-200 and above. This @file{.xmodmaprc} file switches the role of the
455 @key{F12} and @key{NumLock} keys. It has been tested on RedHat
456 GNU/Linux 5.2. Other versions of GNU/Linux may require different
457 keycodes. (@ref{Unix} for further help on how to do this.)
459 @strong{Please note:} Remember, it may be necessary to have @key{NumLock} in
460 one position (ON) or the other (OFF) for the PC keypad to emulate the
461 LK-201 keypad properly.
464 @section General Notes on Using @key{NumLock} for the @key{PF1} Key on Unix Systems
466 Making the physical @key{NumLock} key available for use in the EDT Emulation
467 requires some modification to the default X Window settings. Since the
468 keycode assignments vary from system to system, some investigation is
469 needed to see how to do this on a particular system.
471 You will need to look at the output generated by @code{xmodmap} invoked
472 with the "-pm" switch. For example, on RedHat GNU/Linux 5.2 on a PC, we
473 get the following output when running @samp{xmodmap -pm}:
476 xmodmap: up to 2 keys per modifier, (keycodes in parentheses):
478 shift Shift_L (0x32), Shift_R (0x3e)
479 lock Caps_Lock (0x42)
480 control Control_L (0x25), Control_R (0x6d)
481 mod1 Alt_L (0x40), Alt_R (0x71)
485 mod5 Scroll_Lock (0x4e)
488 @noindent Note that Num_Lock is assigned to the modifier @samp{mod2}. This is
489 what hides Num_Lock from being seen by Emacs.
491 Now, @samp{xmodmap -pke} yields:
497 keycode 77 = Num_Lock Pointer_EnableKeys
507 @noindent So, in RedHat GNU/Linux 5.2 on a PC, Num_Lock generates keycode 77.
508 The following steps are taken:
512 clear the assignment of Num_Lock to mod2;
514 swap the keycodes assigned to F12 and Num_Lock;
516 assign Num_Lock back to mod2.
519 @noindent The @file{.xmodmaprc} file looks like this:
524 ! Set up PC keypad under GNU/Linux for the GNU Emacs EDT Emulation
528 keycode 96 = Num_Lock Pointer_EnableKeys
532 So, after executing @samp{xmodmap .xmodmaprc}, a press of the physical
533 @key{F12} key looks like a Num_Lock keypress to X. Also, a press of the
534 physical @key{NumLock} key looks like a press of the @key{F12} key to X.
536 Now, @file{edt-mapper.el} will see @samp{f12} when the physical
537 @key{NumLock} key is pressed, allowing the @key{NumLock} key to be used
538 as the EDT @key{PF1} (@key{GOLD}) key.
541 @chapter How Does this EDT Emulation Differ from Real EDT?
543 In general, you will find that this emulation of EDT replicates most,
544 but not all, of EDT's most used Keypad Mode editing functions and
545 behavior. It is not perfect, but most EDT users who have tried the
546 emulation agree that it is quite good enough to make it easy for
547 die-hard EDT users to move over to using GNU Emacs.
549 Here's a list of the most important differences between EDT and this GNU
550 Emacs EDT Emulation. The list is short but you must be aware of these
551 differences if you are to use the EDT Emulation effectively.
556 Entering repeat counts works a little differently than in EDT.
558 EDT allows users to enter a repeat count before entering a command that
559 accepts repeat counts. For example, when using the real EDT, pressing
560 these three keys in sequence, @kbd{GOLD 5 KP1}, will move the cursor in
561 the current direction 5 words. This does @strong{not} work in Emacs!
563 Emacs provides two ways to enter repeat counts and neither involves
564 using the @key{GOLD} key. First, repeat counts can be entered in Emacs
565 by using the @key{ESC} key. For example, pressing these keys in
566 sequence, @kbd{ESC 1 0 KP1}, will move the cursor in the current
567 direction 10 words. Second, Emacs provides another command called
568 @code{universal-argument} that can be used to do the same thing.
569 Normally, in Emacs has this bound to @kbd{C-u}.
572 EDT's line mode commands and nokeypad mode commands are @strong{not}
573 supported (with one important exception; see item 8 in
574 @ref{Highlights}). Although, at first, this may seem like a big
575 omission, the set of built-in Emacs commands provides a much richer set
576 of capabilities which more than make up for this omission.
578 To enter Emacs commands not bound to keys, you can press @kbd{GOLD KP7}
579 or the @key{DO} key. Emacs will display its own command prompt "M-x".
580 This stands for the keypress @kbd{Meta-x}, where @key{Meta} is a special
581 shift key. The @key{Alt} key is often mapped to behave as a @key{Meta}
582 key. So, you can also invoke this prompt by pressing @kbd{Meta-x}.
583 Typing the sequence @kbd{ESC x} will also invoke the prompt.
586 Selected text is highlighted @strong{only} on systems where Emacs
587 supports the highlighting of text.
590 Just like in TPU/EVE, the @key{ENTER} key is @strong{not} used to
591 terminate input when the editor prompts you for input. The @key{RETURN}
592 key is used, instead. (@key{KP4} and @key{KP5} (the direction keys) do
593 terminate input for the @samp{FIND} command, just like in EDT, however.)
598 @chapter Some Highlights, and Comparisons to the Original Emacs EDT Emulation
603 The EDT define key command is supported (@code{edt-define-key}) and is
604 bound to @kbd{C-k} in the default EDT mode when EDT control sequence
605 bindings are enabled, or when the sample @file{edt-user.el}
606 customization file is used. The TPU/EVE learn command is supported but
607 not bound to a key in the default EDT mode but is bound in the sample
608 @file{edt-user.el} file.
610 Unlike the TPU/EVE learn command, which uses one key to begin the learn
611 sequence, @kbd{C-l}, and another command to remember the sequence,
612 @kbd{C-r}, this version of the learn command (@code{edt-learn}) serves
613 as a toggle to both begin and to remember the learn sequence.
615 Many users who change the meaning of a key with the define key and the
616 learn commands, would like to be able to restore the original key
617 binding without having to quit and restart emacs. So a restore key
618 command is provided to do just that. When invoked, it prompts you to
619 press the key to which you wish the last replaced key definition
620 restored. It is bound to @kbd{GOLD C-k} in the default EDT mode when
621 EDT control sequence bindings are enabled or the sample
622 @file{edt-user.el} customization file is used.
625 Direction support is fully supported.
628 All original Emacs bindings are fully restored when EDT emulation is
629 turned off. So, if a fellow worker comes over to your terminal to help
630 you with a software problem, for example, and is completely confused by
631 your EDT emulation bindings, just enter the command,
632 @code{edt-emulation-off}, at the @samp{M-x} prompt and the original
633 Emacs bindings will be restored. To resume the EDT emulation, just
634 enter @code{edt-emulation-on}.
637 User custom EDT bindings are kept separate from the default EDT
638 bindings. One can toggle back and forth between the custom EDT bindings
639 and default EDT bindings.
642 The Emacs functions in @file{edt.el} attempt to emulate, where
643 practical, the exact behavior of the corresponding EDT keypad mode
644 commands. In a few cases, the emulation is not exact, but we hope you
645 will agree it is close enough. In a very few cases, we chose to use the
646 Emacs way of handling things. As mentioned earlier, we do not emulate
647 the EDT @samp{SUBS} command. Instead, we chose to use the Emacs
648 @code{query-replace} function, which we find to be easier to use.
651 Emacs uses the regexp assigned to @code{page-delimiter} to determine
652 what marks a page break. This is normally @samp{^\f}, which causes the
653 @code{edt-page} command to ignore form feeds not located at the
654 beginning of a line. To emulate the EDT @samp{PAGE} command exactly,
655 page-delimiter is set to @samp{\f} when EDT emulation is turned on, and
656 restored to @samp{^\f} when EDT emulation is turned off. But, since
657 some users prefer the Emacs definition of a page break, or may wish to
658 preserve a customized definition of page break, one can override the EDT
659 definition by placing
662 (setq edt-keep-current-page-delimiter t)
665 @noindent in your @file{.emacs} file. Or, you can used the Emacs customize
666 command to change its setting.
669 The EDT definition of a section of a terminal window is hardwired to be
670 16 lines of its one-and-only 24-line window (the EDT @samp{SECT} command
671 bound to @key{KP8}). That's two-thirds of the window at a time. Since
672 Emacs, like TPU/EVE, can handle multiple windows of sizes of other than
673 24 lines, the definition of section used here has been modified to
674 two-thirds of the current window. (There is also an
675 @code{edt-scroll-window} function which you may prefer over the
676 @samp{SECT} emulation.)
679 Cursor movement and deletion involving word entities is identical to
680 EDT. This, above all else, gives the die-hard EDT user a sense of being
681 at home. Also, an emulation of EDT's @samp{SET ENTITY WORD} command is
682 provided, for those users who like to customize movement by a word at a
683 time to their own liking.
686 EDT's @samp{FIND} and @samp{FNDNXT} are supported.
689 EDT's @samp{APPEND}, @samp{REPLACE}, and @samp{SUBS} commands are supported.
692 @samp{CHNGCASE} is supported. It works on individual characters or
693 selected text, if @samp{SELECT} is active. In addition, two new
694 commands are provided: @code{edt-lowercase} and @code{edt-uppercase}.
695 They work on individual @strong{words} or selected text, if
696 @samp{SELECT} is active.
699 Form feed and tab insert commands are supported.
702 A new command, @code{edt-duplicate-word}, is provided. If you
703 experiment with it, you might find it to be surprisingly useful and may
704 wonder how you ever got along without it! It is assigned to @kbd{C-j}
705 in the sample @file{edt-user.el} customization file.
708 TPU/EVE's Rectangular Cut and Paste functions (originally from the
709 EVE-Plus package) are supported. But unlike the TPU/EVE versions, these
710 here support both insert and overwrite modes. The seven rectangular
711 functions are bound to @key{F7}, @key{F8}, @kbd{GOLD-F8}, @key{F9},
712 @kbd{GOLD-F9}, @key{F10}, and @kbd{GOLD-F10} in the default EDT mode.
715 The original EDT emulation package set up many default regular and GOLD
716 bindings. We tried to preserve most (but not all!) of these, so users
717 of the original emulation package will feel more at home.
719 Nevertheless, there are still many GOLD key sequences which are not
720 bound to any functions. These are prime candidates to use for your own
723 Also, there are several commands in @file{edt.el} not bound to any key.
724 So, you will find it worthwhile to look through @file{edt.el} for
725 functions you may wish to add to your personal customized bindings.
728 The VT200/VT300 series terminals steal the function keys @key{F1} to
729 @key{F5} for their own use. These do not generate signals which are
730 sent to the host. So, @file{edt.el} does not assign any default
731 bindings to @key{F1} through @key{F5}.
733 In addition, our VT220 terminals generate an interrupt when the @key{F6}
734 key is pressed (@samp{^C} or @samp{^Y}, can't remember which) and not
735 the character sequence documented in the manual. So, binding Emacs
736 commands to @key{F6} will not work if your terminal behaves the same
740 The VT220 terminal has no @key{ESC}, @key{BS}, nor @key{LF} keys, as
741 does a VT100. So the default EDT bindings adopt the standard DEC
742 convention of having the @key{F11}, @key{F12}, and @key{F13} keys, on a
743 VT200 series (and above) terminal, assigned to the same EDT functions
744 that are bound to @key{ESC}, @key{BS}, and @key{LF} on a VT100 terminal.
747 Each user, through the use of a private @file{edt-user.el} file, can
748 customize, very easily, personal EDT emulation bindings.
751 The EDT @samp{SELECT} and @samp{RESET} functions are supported.
752 However, unlike EDT, pressing @samp{RESET} to cancel text selection does
753 @strong{not} reset the existing setting of the current direction.
755 We also provide a TPU/EVE like version of the single @samp{SELECT/RESET}
756 function, called @code{edt-toggle-select}, which makes the EDT
757 @samp{SELECT} function into a toggle on/off switch. That is, if
758 selection is on, pressing @samp{SELECT} again turns selection off
759 (cancels selection). This function is used in the sample
760 @file{edt-user.el} customization file.
763 EDT scroll margins are supported, but are disabled by default.
764 (@ref{Scroll margins} for instructions on how to enable them.)
769 @chapter Customizing Emulation
771 Most EDT users, at one time or another, make some custom key bindings,
772 or use someone else's custom key bindings, which they come to depend
773 upon just as if they were built-in bindings. This EDT Emulation for GNU
774 Emacs is designed to make it easy to customize bindings.
776 If you wish to customize the EDT Emulation to use some of your own key
777 bindings, you need to make a private version of @file{edt-user.el} in
778 your own private lisp directory. The Emacs @file{etc/} directory
779 contains an example for you to use as a template and for ideas.
780 @c This seems to be untrue.
782 There are two sample files @file{edt-user.el1} and @file{edt-user.el2}
783 for you to use as templates and for ideas. Look at @file{edt-user.el1}
784 first. Unless you will be using two or more very different types of
785 terminals on the same system, you need not look at @file{edt-user.el2}.
788 First, you need to have your own private lisp directory, say
789 @file{~/lisp}, and you should add it to the GNU Emacs load path.
791 @strong{Please note:} A few sites have different load-path requirements,
792 so the above directions may need some modification if your site has such
796 * edt-user.el:: Creating your own @file{edt-user.el} file.
797 * Words:: Specifying word entities.
798 * Control keys:: Enabling EDT control key sequence bindings.
799 * Scroll margins:: Setting scroll margins.
803 @section Creating your own @file{edt-user.el} File
805 A sample @file{edt-user.el} file is provided in the Emacs @file{etc/}
806 directory. You should use it as a guide to learn how you can customize
807 EDT emulation bindings to your own liking. Names used to identify the
808 set of LK-201 keypad and function keys are:
826 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14
827 HELP DO F17 F18 F19 F20
833 Note: Many VT-200 terminals, and above, steal function keys @key{F1}
834 through @key{F5} for terminal setup control and don't send anything to
835 the host if pressed. So customizing bindings to these keys may not work
838 There are three basic functions that do the EDT emulation custom
839 bindings: @code{edt-bind-key}, @code{edt-bind-gold-key}, and
840 @code{edt-bind-function-key}.
842 The first two are for binding functions to keys which are standard
843 across most keyboards. This makes them keyboard independent, making it
844 possible to define these key bindings for all terminals in the file
847 The first, @code{edt-bind-key}, is used typically to bind emacs commands
848 to control keys, although some people use it to bind commands to other
849 keys, as well. (For example, some people use it to bind the VT200
850 seldom used back-tick key (@samp{`}) to the function @samp{ESC-prefix}
851 so it will behave like an @key{ESC} key.) The second function,
852 @code{edt-bind-gold-key}, is used to bind emacs commands to gold key
853 sequences involving alpha-numeric keys, special character keys, and
856 The third function, @code{edt-bind-function-key}, is terminal dependent
857 and is defined in a terminal specific file (see @file{edt-vt100.el} for
858 example). It is used to bind emacs commands to LK-201 function keys, to
859 keypad keys, and to gold sequences of those keys.
862 @section Specifying Word Entities
864 The variable @code{edt-word-entities} is used to emulate EDT's @samp{SET
865 ENTITY WORD} command. It contains a list of characters to be treated as
866 words in themselves. If the user does not define
867 @code{edt-word-entities} in his/her @file{.emacs} file, then it is set
868 up with the EDT default containing only @key{TAB}.
870 The characters are stored in the list by their numerical values, not as
871 strings. Emacs supports several ways to specify the numerical value of
872 a character. One method is to use the question mark: @samp{?A} means
873 the numerical value for @samp{A}, @samp{?/} means the numerical value
874 for @samp{/}, and so on. Several unprintable characters have special
878 ?\b specifies BS, C-h
879 ?\t specifies TAB, C-i
880 ?\n specifies LFD, C-j
881 ?\v specifies VTAB, C-k
882 ?\f specifies FF, C-l
883 ?\r specifies CR, C-m
884 ?\e specifies ESC, C-[
888 Here are some examples:
891 (setq edt-word-entities '(?\t ?- ?/)) ; specifies TAB, - , and /
892 (setq edt-word-entities '(?\t) ; specifies TAB, the default
895 @noindent You can also specify characters by their decimal ascii values:
898 (setq edt-word-entities '(9 45 47)) ; specifies TAB, - , and /
902 @section Enabling EDT Control Key Sequence Bindings
904 Where EDT key bindings and GNU Emacs key bindings conflict, the default
905 GNU Emacs key bindings are retained by default. Some diehard EDT users
906 may not like this. So, if the variable
907 @code{edt-use-EDT-control-key-bindings} is set to true in a user's
908 @file{.emacs} file, then the default EDT Emulation mode will enable most
909 of the original EDT control key sequence bindings. If you wish to do
910 this, add the following line to your @file{.emacs} file:
913 (setq edt-use-EDT-control-key-bindings t)
917 @section Setting Scroll Margins
919 Scroll margins at the top and bottom of the window are now supported.
920 (The design was copied from @file{tpu-extras.el}.) By default, this
921 feature is enabled with the top margin set to 10% of the window and the
922 bottom margin set to 15% of the window. To change these settings, you
923 can invoke the function @code{edt-set-scroll-margins} in your
924 @file{.emacs} file. For example, the following line
927 (edt-set-scroll-margins "20%" "25%")
930 @noindent sets the top margin to 20% of the window and the bottom margin
931 to 25% of the window. To disable this feature, set each margin to 0%.
932 You can also invoke @code{edt-set-scroll-margins} interactively while
933 EDT Emulation is active to change the settings for that session.
935 @strong{Please note:} Another way to set the scroll margins is to use
936 the Emacs customization feature (not available in Emacs 19) to set the
937 following two variables directly: @code{edt-top-scroll-margin} and
938 @code{edt-bottom-scroll-margin}.
940 Enter the Emacs @code{customize} command. First select the
941 @samp{Editing} group and then select the @samp{Emulations} group.
942 Finally, select the @samp{Edt} group and follow the directions.
944 @node GNU Free Documentation License
945 @appendix GNU Free Documentation License
946 @include doclicense.texi
951 arch-tag: 1b7ebe01-754b-4834-a12b-f152ef7db9e0