Remove the buffer-locking mechanism.
[emacs.git] / doc / misc / edt.texi
bloba93aada07a1f944feb90859d97bfc9948b6583de
1 \input texinfo
2 @setfilename ../../info/edt
3 @settitle EDT Emulation for Emacs
5 @copying
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.
12 @quotation
13 Permission is granted to copy, distribute and/or modify this document
14 under the terms of the GNU Free Documentation License, Version 1.3 or
15 any later version published by the Free Software Foundation; with no
16 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
17 and with the Back-Cover Texts as in (a) below.  A copy of the license
18 is included in the section entitled ``GNU Free Documentation License''.
20 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
21 modify this GNU manual.  Buying copies from the FSF supports it in
22 developing GNU and promoting software freedom.''
23 @end quotation
24 @end copying
26 @dircategory Emacs
27 @direntry
28 * EDT: (edt).   An Emacs emulation of the EDT editor.
29 @end direntry
31 @titlepage
32 @title EDT Emulation User's Manual
33 @author Kevin Gallagher
34 @author @email{Kevin.Gallagher@@boeing.com}
35 @page
36 @vskip 0pt plus 1filll
37 @insertcopying
38 @end titlepage
40 @contents
42 @ifnottex
43 @node Top
44 @top Emacs EDT emulation
45 This manual describes the Emacs EDT package, which provides emulation
46 of DEC's EDT editor.
48 @insertcopying
49 @end ifnottex
51 @menu
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.
61 @end menu
63 @node Overview
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
71 their own liking.
73 Version 4.0 contains several enhancements (@pxref{Changes}).
75 @menu
76 * Quick start::             How to begin using EDT.
77 * Changes::                 What's new in version 4.0.
78 * Goals::                   The aims of this package.
79 @end menu
81 @node Quick start
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
88 active''.
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
92 @file{.emacs} file:
94 @example
95 (add-hook term-setup-hook 'edt-emulation-on)
96 @end example
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:
104 @itemize
106 @item
107 @file{edt.texi} - This manual.
109 @item
110 @file{edt-user.el} - An example customization file.
112 @item
113 @file{edt.el} - EDT emulation functions and default configuration.
115 @item
116 @file{edt-lk201.el} - Built-in support for DEC LK-201 keyboards.
118 @item
119 @file{edt-vt100.el} - Built-in support for DEC VT-100 (and above) terminals.
121 @item
122 @file{edt-pc.el} - Built-in support for PC 101 Keyboards under MS-DOS.
124 @item
125 @file{edt-mapper.el} - Create an EDT LK-201 map file for keyboards
126 without built-in support.
128 @end itemize
130 @node Changes
131 @section What's New in Version 4.0
133 Version 4.0 contains the following enhancements:
135 @enumerate
137 @item
138 Scroll margins at the top and bottom of the window are now supported.
139 (The design was copied from @file{tpu-extras.el}.)  By default, this
140 feature is enabled with the top margin set to 10% of the window and the
141 bottom margin set to 15% of the window.  To change these settings, you
142 can invoke the function @code{edt-set-scroll-margins} in your
143 @file{.emacs} file.  For example, the following line
145 @example
146 (edt-set-scroll-margins "20%" "25%")
147 @end example
149 @noindent sets the top margin to 20% of the window and the bottom margin
150 to 25% of the window.  To disable this feature, set each margin to 0%.
151 You can also invoke @code{edt-set-scroll-margins} interactively while
152 EDT Emulation is active to change the settings for that session.
154 @strong{Please note:} Another way to set the scroll margins is to use
155 the Emacs customization feature (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.
163 @item
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}).
173 @item
174 EDT Emulation now also works in XEmacs, including the highlighting of
175 selected text.
177 @item
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.
188 @item
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.)
208 @item
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.
214 @end enumerate
216 @node Goals
217 @section The Aims of this Package
219 @enumerate
221 @item
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
224 curve.
226 @item
227 Make it easy for a user to customize EDT emulation key bindings without
228 knowing much about Emacs Lisp.
230 @item
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.
234 @item
235 Provide support for some TPU/EVE functions not supported in EDT.
237 @item
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.
241 @item
242 Support GNU Emacs 19 and higher.  (GNU Emacs 18 and below is no longer
243 supported.)  XEmacs 19, and above, is also supported.
245 @item
246 Supports highlighting of marked text within the EDT emulation on all
247 platforms on which Emacs supports highlighting of marked text.
249 @item
250 Handle terminal configuration interactively for most terminal
251 configurations, when the emulation is invoked for the first time.
253 @item
254 Support a PC AT keyboard under MS-DOS.
256 @end enumerate
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:
273 @enumerate
275 @item
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.
280 @item
281 PC AT keyboard under MS-DOS.
283 @end enumerate
285 Be sure to read @ref{Platform-specific notes} to see if those notes
286 apply to you.
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
298 @file{.emacs} file:
300 @example
301 (add-hook term-setup-hook 'edt-emulation-on)
302 @end example
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
316 active''.
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
324 emulation.
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
332 Emacs bindings.
334 @node Platform-specific notes
335 @chapter Notes Specific to Certain Platforms
337 @menu
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.
342 @end menu
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:
367 @example
368 ! File:  .xmodmaprc
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
375 keycode  75 = KP_7
376 keycode  76 = KP_8
377 keycode  77 = KP_9
378 keycode  78 = KP_Subtract
379 keycode  97 = KP_Enter
380 keycode  98 = KP_4
381 keycode  99 = KP_5
382 keycode 100 = KP_6
383 keycode 101 = KP_0
384 keycode 105 = F24
385 keycode 119 = KP_1
386 keycode 120 = KP_2
387 keycode 121 = KP_3
388 keycode 132 = KP_Add
389 @end example
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
400 @example
401 keycode 105 = F24
402 @end example
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.)
416 @node MS-DOS
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.)
426 @node GNU/Linux
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
434 with @code{xmodmap}.
436 On one distribution on an Intel PC, the following @file{.xmodmaprc} set
437 things up nicely.
439 @example
440 ! File:  .xmodmaprc
442 ! Set up PC keypad under GNU/Linux for the GNU Emacs EDT Emulation
444 clear  mod2
445 keycode  77 = F12
446 keycode  96 = Num_Lock Pointer_EnableKeys
447 add mod2 = Num_Lock
448 @end example
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.
463 @node Unix
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}:
475 @example
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)
482 mod2        Num_Lock (0x4d)
483 mod3
484 mod4
485 mod5        Scroll_Lock (0x4e)
486 @end example
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:
493 @example
494    .
495    .
496    .
497 keycode  77 = Num_Lock Pointer_EnableKeys
498    .
499    .
500    .
501 keycode  96 = F12
502    .
503    .
504    .
505 @end example
507 @noindent So, in RedHat GNU/Linux 5.2 on a PC, Num_Lock generates keycode 77.
508 The following steps are taken:
510 @enumerate
511 @item
512 clear the assignment of Num_Lock to mod2;
513 @item
514 swap the keycodes assigned to F12 and Num_Lock;
515 @item
516 assign Num_Lock back to mod2.
517 @end enumerate
519 @noindent The @file{.xmodmaprc} file looks like this:
521 @example
522 ! File:  .xmodmaprc
524 ! Set up PC keypad under GNU/Linux for the GNU Emacs EDT Emulation
526 clear  mod2
527 keycode  77 = F12
528 keycode  96 = Num_Lock Pointer_EnableKeys
529 add mod2 = Num_Lock
530 @end example
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.
540 @node Differences
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.
553 @enumerate
555 @item
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}.
571 @item
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.
585 @item
586 Selected text is highlighted @strong{only} on systems where Emacs
587 supports the highlighting of text.
589 @item
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.)
595 @end enumerate
597 @node Highlights
598 @chapter Some Highlights, and Comparisons to the Original Emacs EDT Emulation
600 @enumerate
602 @item
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.
624 @item
625 Direction support is fully supported.
627 @item
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}.
636 @item
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.
641 @item
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.
650 @item
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
661 @example
662 (setq edt-keep-current-page-delimiter t)
663 @end example
665 @noindent in your @file{.emacs} file.  Or, you can used the Emacs customize
666 command to change its setting.
668 @item
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.)
678 @item
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.
685 @item
686 EDT's @samp{FIND} and @samp{FNDNXT} are supported.
688 @item
689 EDT's @samp{APPEND}, @samp{REPLACE}, and @samp{SUBS} commands are supported.
691 @item
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.
698 @item
699 Form feed and tab insert commands are supported.
701 @item
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.
707 @item
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.
714 @item
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
721 customizations.
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.
727 @item
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
737 way.
739 @item
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.
746 @item
747 Each user, through the use of a private @file{edt-user.el} file, can
748 customize, very easily, personal EDT emulation bindings.
750 @item
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.
762 @item
763 EDT scroll margins are supported, but are disabled by default.
764 (@ref{Scroll margins} for instructions on how to enable them.)
766 @end enumerate
768 @node Customizing
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.
781 @ignore
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}.
786 @end ignore
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
793 special needs.
795 @menu
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.
800 @end menu
802 @node edt-user.el
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:
810 @example
811 Keypad Keys:
812                 PF1 PF2 PF3 PF4
813                 KP7 KP8 KP9 KP-
814                 KP4 KP5 KP6 KP,
815                 KP1 KP2 KP3
816                 KP0     KPP KPE
817 @end example
819 @example
820 Arrow Keys:
821                 LEFT RIGHT DOWN UP
822 @end example
824 @example
825 Function Keys:
826                 F1 F2 F3 F4 F5  F6 F7 F8 F9 F10  F11 F12 F13 F14
827                 HELP DO  F17 F18 F19 F20
829                 FIND   INSERT   REMOVE
830                 SELECT PREVIOUS NEXT
831 @end example
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
836 for you.
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
845 @file{edt.el}.
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
854 control keys.
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.
861 @node Words
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
875 representations:
877 @example
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-[
885 ?\\  specifies  \
886 @end example
888 Here are some examples:
890 @example
891 (setq edt-word-entities '(?\t ?- ?/)) ; specifies TAB, - , and /
892 (setq edt-word-entities '(?\t)        ; specifies TAB, the default
893 @end example
895 @noindent You can also specify characters by their decimal ascii values:
897 @example
898 (setq edt-word-entities '(9 45 47))   ; specifies TAB, - , and /
899 @end example
901 @node Control keys
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:
912 @example
913 (setq edt-use-EDT-control-key-bindings t)
914 @end example
916 @node Scroll margins
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
926 @example
927 (edt-set-scroll-margins "20%" "25%")
928 @end example
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
948 @bye
950 @ignore
951    arch-tag: 1b7ebe01-754b-4834-a12b-f152ef7db9e0
952 @end ignore