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