summaryrefslogtreecommitdiff
path: root/etc
diff options
context:
space:
mode:
Diffstat (limited to 'etc')
-rw-r--r--etc/=MACHINES894
-rw-r--r--etc/=TO-DO83
-rw-r--r--etc/=news.texi3380
-rw-r--r--etc/FAQ4469
-rw-r--r--etc/Makefile23
-rw-r--r--etc/README7
-rw-r--r--etc/TUTORIAL879
-rw-r--r--etc/sex.6115
-rw-r--r--etc/spook.linesbin950 -> 0 bytes
-rw-r--r--etc/tasks.texi398
-rw-r--r--etc/termcap.dat1246
-rw-r--r--etc/yow.linesbin38353 -> 0 bytes
12 files changed, 0 insertions, 11494 deletions
diff --git a/etc/=MACHINES b/etc/=MACHINES
deleted file mode 100644
index eb86f4c1aa0..00000000000
--- a/etc/=MACHINES
+++ /dev/null
@@ -1,894 +0,0 @@
-This is a list of the status of GNU Emacs on various machines and systems.
-
-For each system and machine, we give the configuration name you should
-pass to the `configure' script to prepare to build Emacs for that
-system/machine.
-
-The `configure' script uses the configuration name to decide which
-machine and operating system description files `src/config.h' should
-include. The machine description files are all in `src/m', and have
-names similar to, but not identical to, the machine names used in
-configuration names. The operating system files are all in `src/s',
-and are named similarly. See the `configure' script if you need to
-know which configuration names use which machine and operating system
-description files.
-
-If you add support for a new configuration, add a section to this
-file, and then edit the `configure' script to tell it which
-configuration name(s) should select your new machine description and
-system description files.
-
-
-Here are the configurations Emacs is intended to work with, with the
-corresponding configuration names. You can postpend version numbers
-to operating system names (i.e. sunos4.1) or architecture names (i.e.
-hppa1.1). If you leave out the version number, the `configure' script
-will configure Emacs for the latest version it knows about.
-
-Alliant (fx80-alliant-bsd):
-
- 18.52 worked on system version 4. Previous Emacs versions were
- known to work on previous system versions.
-
- If you are using older versions of their operating system, you may
- need to edit `src/config.h' to use `m/alliant1.h' (on version 1) or
- `m/alliant.h' (on versions 2 and 3).
-
-Alliant FX/2800 (i860-alliant-bsd)
-
- Known to work with 18.58 and OS version 2.2, compiler version 1.3.
-
-Altos 3068 (m68k-altos-sysv)
-
- 18.52 was said to work, provided you don't compile unexec.c with -O.
-
-Amdahl UTS (580-amdahl-sysv)
-
- Small changes for 18.38 were merged in 18.39. It is mostly
- working, but at last report a bug sometimes causes Emacs to
- grab very large amounts of memory. No fix or explanation
- has yet been reported. It may be possible to find this bug
- if you find which Emacs command it happens within and then
- run that command with a breakpoint set at malloc.
-
- The 5.2u370 compiler is so brain damaged that it is not
- even worth trying to use it. Success was obtained with the
- uts native C compiler on uts version 5.2.5.
-
-Apollo running Domain (m68k-apollo-bsd)
-
- 18.52 works, to some extent.
- Code for dumping Emacs has been written, but we cannot distribute it yet.
- There are reports of bugs in cc -O on this system.
-
- In `lib-src/Makefile', don't expect emacsclient and emacsserver to
- compile. You might want to remove them from your makefile.
-
- Supposedly something in dired.c runs into a compiler bug.
- Paraphrasing the statement should avoid the problem. I have not yet
- received word as to the exact statement this is.
-
- The Apollo has a bizarre operating system which does not permit
- Emacs to be dumped with preloaded pure Lisp code. Therefore, each
- time you start Emacs on this system, the standard Lisp code is loaded
- into it. Expect it to take a long time. You can prevent loading of
- the standard Lisp code by specifying the -nl switch. It must
- come at the beginning of the command line; only the -t and -batch
- switches may come before it.
-
- There is one remaining problem on the Apollo. You must replace
- the CPP line in src/Makefile with "CPP = /usr/lib/cpp".
- The C preprocessor lives there rather than in /lib/cpp because the
- Aegis OS uses the /lib directory as the repository for shared libraries.
-
-
- Here is a design for a method of dumping and reloading the relevant
- necessary impure areas of Emacs.
-
- On dumping, you need to dump only the array `pure' plus the
- locations that contain values of forwarded Lisp variables or that are
- protected for garbage collection. The former can be found by a
- garbage- collection-like technique, and the latter are in the
- staticprolist vector (see alloc.c for both things).
-
- Reloading would work in an Emacs that has just been started; except
- when a switch is specified to inhibit this, it would read the dump
- file and set all the appropriate locations. The data loaded must be
- relocated, but that's not hard. Those locations that are of type
- Lisp_Object can be found by a technique like garbage-collection, and
- those of them that point to storage can be relocated. The other data
- read from the file will not need to be relocated.
-
- The switch to inhibit loading the data base would be used when it
- is time to dump a new data base.
-
- This would take a few seconds, which is much faster than loading
- the Lisp code of Emacs from scratch.
-
-AT&T 3b2, 3b5, 3b15, 3b20 (we32k-att-sysv)
-
- Emacs will probably not work with certain kernel constants too small.
-
- In param.h CDLIMIT should be at least (1L << 12) in order to allow
- processes to write up to 2 Mbyte files. This parameter is configurable
- by normal means in /etc/master.d/kernel; examine that file for the
- symbol CDLIMIT or ULIMIT, and raise it by several powers of 2. Then
- do normal kernel rebuild things via "cd /boot; mkboot -k KERNEL" and so
- forth.
-
- In seg.h NSEGP and STACKSEG should be at least 16 and 4 respectively
- to allow processes with total size of up to 2Mbytes.
- However, I'm told it is unlikely this would fail to be true.
-
- The MAXMEM may also prevent Emacs from running. The file
- 3B-MAXMEM in this directory explains how to increase MAXMEM.
-
-AT&T 7300 or 3b1 (m68k-att-sysv)
-
- 18.52 worked. If you have strange troubles with dumping
- Emacs, delete the last few lines from `src/m/7300.h' and recompile.
- These lines are supposed to produce a sharable executable.
-
- `src/m/7300.h' defines SHORTNAMES because operating system versions
- older than 3.5 did not support long symbol names. Version 3.5 does
- support them, so you can remove the #define SHORTNAMES in that
- version.
-
-Bull sps7 (m68k-bull-sysv)
-
- Changes partially merged in version 19, but some fixes are probably required.
-
-CCI 5/32, 6/32
-
- See "Tahoe".
-
-Celerity (celerity-celerity-bsd4.2)
-
- Version 18.49 worked. This configuration name is a hack, because we
- don't know the processor used by Celerities. If someone
- who uses a Celerity could get in touch with us, we can teach
- config.sub a better name for the configuration.
-
-Clipper (clipper-???)
-
- Version 19 has support for some brand of clipper system. If you
- have successfully built Emacs 19 on some sort of clipper system, let
- us know so we can flesh out this entry.
-
- Note that the Orion 105 is also a clipper, but some system-related
- parameters are different.
-
-Convex (c1-convex-bsd, c2-convex-bsd, c32-convex-bsd, c34-convex-bsd,
- c38-convex-bsd)
-
- 18.53 supposedly to work.
-
-Cubix QBx/386 (i386-cubix-sysv)
-
- Changes merged in 19.1. Systems before 2/A/0 may fail to compile etags.c
- due to a compiler bug.
-
-Cydra 5 (cydra-cydrome-sysv)
-
- 18.51 worked in one version of their operating system but stopped
- working in a newer version. This has not been fixed.
-
-DECstation (mips-dec-ultrix or mips-dec-osf)
-
- Version 19 works under Ultrix.
-
- See under Ultrix for problems using X windows on Ultrix.
- Note that this is a MIPS machine.
-
- For Ultrix versions 4.1 or earlier, you may need to define
- SYSTEM_MALLOC in `src/m/pmax.h', because XvmsAlloc.o in libX11.a seems
- to insist on defining malloc itself.
-
- For Ultrix versions prior to 4.0, you may need to delete
- the definition of START_FILES from `src/m/pmax.h'.
-
-Motorola Delta 147 (m68k-motorola-sysv)
-
- Motorola Delta boxes running System V/68 release 3.
- (tested on sys1147 with SVR3V5). Changes merged in 19.1.
-
-Motorola Delta 187 (m88k-motorola-sysv or m88k-motorola-m88kbcs)
-
- Machine support added in version 19.
- HAVE_X_MENU does not work due to lack of insque.
-
-Dual running System V (m68k-dual-sysv)
-
- As of 17.46, this worked except for a few changes
- needed in unexec.c.
-
-Dual running Uniplus (m68k-dual-uniplus)
-
- Worked, as of 17.51.
-
-Elxsi 6400 (elxsi-elxsi-sysv)
-
- Changes for 12.0 release are in 19.1.
- Dumping should work now.
-
-Encore machine (ns16k-encore-bsd)
-
- This machine bizarrely uses 4.2BSD modified to use the COFF format
- for object files. Works (as of 18.40). For the APC processor you
- must enable two lines at the end of `src/s/umax.h', which are commented
- out in the file as distributed.
-
- WARNING: If you compile Emacs with the "-O" compiler switch, you
- must also use the "-q enter_exits" switch so that all functions have
- stack frames. Otherwise routines that call `alloca' all lose.
-
- A kernel bug in some system versions causes input characters to be lost
- occasionally.
-
-GEC 63 (local-gec63-usg5.2)
-
- Changes are partially merged in version 18, but certainly require
- more work. Let us know if you get this working, and we'll give it a
- real configuration name.
-
-Gould Power Node (pn-gould-bsd4.2 or pn-gould-bsd4.3)
-
- 18.36 worked on versions 1.2 and 2.0 of the operating system.
-
- On UTX/32 2.0, use pn-gould-bsd4.3.
-
- On UTX/32 1.2 and UTX/32S 1.0, use pn-gould-bsd4.2 and note that
- compiling `lib-src/sorted-doc' tickles a compiler bug: remove the -g
- flag to cc in the makefile.
-
- UTX/32 1.3 has a bug in the bcopy library routine. Fix it by
- #undef BSTRING in `src/m/gould.h'.
-
- Version 19 incorporates support for releases 2.1 and later of UTX/32.
- A site running a pre-release of 2.1 should #define RELEASE2_1 in config.h.
-
-Gould NP1 (np1-gould-bsd)
-
- Version 19 supposedly works.
-
-Honeywell XPS100 (xps100-honeywell-sysv)
-
- Config file added in version 19.
-
-HP 9000 series 200 or 300 (m68k-hp-bsd or m68k-hp-hpux7.)
-
- Version 19 works under BSD.
-
- These machines are 68000-series CPUs running HP-UX
- (a derivative of sysV with some BSD features) or BSD 4.3 ported by Utah.
- The operating system suffix determines which system Emacs is built for.
-
- Series 200 HPUX runs Emacs only if it has the "HP-UX upgrade".
-
- If you are running HP-UX release 8.0 or later, you need the optional
- "C/ANSI C" software in order to build Emacs (older releases of HP-UX
- do not require any special software). If the file "/etc/filesets/C"
- exists on your machine, you have this software, otherwise you do not.
-
- Note that HP has used two incompatible assembler syntaxes,
- and has recently changed the format of C function frames.
- `src/crt0.c' and `src/alloca.s' have been conditionalised for the new
- assembler and new function-entry sequence. You may need to define
- OLD_HP_ASSEMBLER if you are using an older hpux version. If you
- have an official (bought from HP) series 300 machine you have
- the new assembler. Kernels that are 5.+ or later have new
- assembler. A Series 200 that has been upgraded to a 68010
- processor and a 5.+ kernel has the new compiler.
-
- Define C_SWITCH_MACHINE to be +X to make a version of Emacs that
- runs on both 68010 and 68020 based hp-ux's.
-
- Define HPUX_68010 if you are using the new assembler, for
- a system that has a 68010 without a 68881. This is to say,
- a s200 (upgraded) or s310.
-
- Define the symbol HPUX_NET if you have the optional network features
- that include the `netunam' system call. This is refered to as
- Network Services (NS/9000) in HP literature.
-
-HP 9000 series 500: not supported.
-
- The series 500 has a seriously incompatible memory architecture
- which relocates data in memory during execution of a program,
- and support for it would be difficult to implement.
-
-HP 9000 series 800 (Spectrum) (hppa1.0-hp-hpux)
-
- These files support HP's Precision Architecture machines
- running HP-UX. It has been moderately tested on the Series
- 840.
-
- If you are running HP-UX release 8.0 or later, you need the optional
- "C/ANSI C" software in order to build Emacs (older releases of HP-UX
- do not require any special software). If the file "/etc/filesets/C"
- exists on your machine, you have this software, otherwise you do not.
-
-High Level Hardware Orion (orion-highlevel-bsd)
-
- This is the original microprogrammed hardware.
- Machine description file ought to work.
-
-High Level Hardware Orion 1/05 (clipper-highlevel-bsd)
-
- Changes merged in 18.52. This is the one with the Clipper cpu.
- Note that systems which lack NFS need LOAD_AVE_TYPE changed to `double'.
-
- C compiler has a bug; it loops compiling eval.c.
- Compile it by hand without optimization.
-
-IBM PS/2 (i386-ibm-aix1.1 or i386-ibm-aix1.2)
-
- Changes merged in version 19. You may need to copy
- /usr/lib/samples/hft/hftctl.c to the Emacs src directory.
-
- i386-ibm-aix1.1 may not work with certain new X window managers, and
- may be suboptimal.
-
-IBM RS/6000 (rs6000-ibm-aix)
-
- Changes merged in version 19. Currently the configuration
- does not actually depend on the version of AIX.
-
- Compiling with -O using the IBM compiler has been known
- to make Emacs work incorrectly.
-
-IBM RT/PC (romp-ibm-bsd or romp-ibm-aix)
-
- 18.52 worked on both operating systems.
- Use romp-ibm-bsd for the 4.2-like system and romp-ibm-aix for AIX.
-
- On BSD, if you have trouble, try compiling with a different compiler.
-
- On AIX, the file /usr/lib/samples/hft/hftctl.c must be compiled into
- hftctl.o, with this result left in the src directory (hftctl.c is
- part of the standard AIX distribution).
-
- window.c must not be compiled with -O on AIX.
-
-Integrated Solutions `Optimum V' (m68k-isi-bsd4.2 or -bsd4.3)
-
- 18.52 said to work on some sort of ISI machine.
- Version 18.45 worked (running on a Optimum V (VME bus, 68020)
- BSD 4.2 (3.05e) system). 18.42 is reported to work on
- a Qbus 68010 system. Has not been tried on `WorkStation' `Cluster
- Compute Node' `Cluster WorkStation' or `Server Node' (Love the
- StudLYCaps)
-
- Compilation with -O is rumored to break something.
-
- On recent system versions, you may need to undefine the macro UMAX
- in `lib-src/loadst.c' and `src/getpagesize.h'. They stupidly defined this
- in a system header file, which confuses Emacs (which thinks that UMAX
- indicates the Umax operating system).
-
-Intel 386 (i386-unknown-isc, i386-unknown-esix, i386-unknown-xenix,
- i386-intsys-sysv, i386-unknown-sysv5.2.2, i386-unknown-sysv5.3,
- and i386-unknown-bsd4.2)
-
- 18.58 should support a wide variety of operating systems.
- Make sure to use i386-unknown-isc2.2 for Interactive 386/ix version
- 2.2 or later.
- Use i386-unknown-esix for Esix.
- Use i386-intsys-sysv for Integrated Solutions 386 machines.
- It may also be correct for Microport systems.
- It isn't clear what to do on an SCO system. The system's C
- preprocessor doesn't seem to handle the src subdirectory's Make
- trickery, so you will probably need to install the GNU C preprocessor.
-
- If you are using Xenix, see notes above under Xenix.
-
- Some sysV.3 systems seem to have bugs in `opendir';
- for them, alter `config.h' to define NONSYSTEM_DIR_LIBRARY
- and undefine SYSV_SYSTEM_DIR.
-
- If you use optimization on V.3, you may need the option -W2,'-y 0'
- to prevent certain faulty optimization.
-
- On 386/ix, to link with shared libraries, add #define USG_SHARED_LIBRARIES
- to config.h.
-
- There is no consistency in the handling of certain system header files
- on V.3.
-
- Some versions have sys/sioctl.h, and require it in sysdep.c.
- But some versions do not have sys/sioctl.h.
- For a given version of the system, this may depend on whether you have
- X Windows or TCP/IP. Define or undefine NO_SIOCTL_H in config.h
- according to whether you have the file.
-
- Likewise, some versions have been known to need sys/ttold.h, sys/stream.h,
- and sys/ptem.h included in sysdep.c. If your system has these files,
- try defining NEED_PTEM_H in config.h if you have trouble without it.
-
- You may find that adding -I/usr/X/include or -I/usr/netinclude or both
- to CFLAGS avoids compilation errors on certain systems.
-
- Some versions convince sysdep.c to try to use `struct tchars'
- but define `struct tc' instead; add `#define tchars tc'
- to config.h to solve this problem.
-
-Iris 2500 and Iris 2500 Turbo (m68k-sgi-iris3.5 or m68k-sgi-iris3.6)
-
- Version 18 was said to work; use m68k-sgi-iris3.5 for system version 2.5
- and m68k-sgi-iris3.6 for system version 3.6.
- Note that the 3030 is the same as the Iris 2500 Turbo.
-
-Iris 4D (mips-sgi-irix3.3 or mips-sgi-irix4.0)
-
- 18.58 is known to work on Silicon Graphics 4D series machines
- with IRIX 3.3 or IRIX 4.0. Version 19 should support the
- ANSI C compiler version 3.10.
-
- Most irix3.3 systems do not have an ANSI C compiler, but a few do.
- If you are using the ANSI C compiler, you may need to add
- #define C_SWITCH_MACHINE -cckr
- to config.h.
-
- There is a bug in IRIX that can sometimes leave ptys owned by
- root with a permission of 622. This causes malfunctions in use
- of subprocesses of Emacs. This may be fixed in IRIX 4.0.5.
-
-Macintosh
-
- We are boycotting Apple because of Apple's efforts to take away
- our freedom to write compatible imitations of existing software.
- If you value your freedom to write such programs, we urge you
- not to buy from Apple, not to develop software for Apple, and
- certainly not to accept a job with Apple.
-
- See the file APPLE in this directory for more information.
-
-Masscomp (m68k-masscomp-rtu)
-
- 18.36 worked on a 5500DP running RTU v3.1a and compiler version 3.2
- with minor fixes that are included in 18.37. However, bizarre behavior
- was reported for 18.36 on a Masscomp (model and version unknown but probably
- a 68020 system). The report sounds like a compiler bug.
-
- A compiler bug affecting statements like
- unsigned char k; unsigned char *p;... x = p[k];
- has been reported for "C version 1.2 under RTU 3.1". We do not wish
- to take the time to install the numerous workarounds required to
- compensate for this bug; go complain to Masscomp.
-
- For RTU version 3.1, define FIRST_PTY_LETTER to be 'p' in `src/s/rtu.h'
- (or #undef and redefine it in config.h) so that ptys will be used.
-
- GNU Emacs is said to have no chance of compiling on RTU versions
- prior to v3.0.
-
-Megatest (m68k-megatest-bsd)
-
- Emacs 15 worked; do not have any reports about Emacs 16 or 17
- but any new bugs are probably not difficult.
-
-Mips (mips-mips-riscos, mips-mips-riscos4.0, or mips-mips-bsd)
-
- Changes merged in 18.39. Some fixes in 18.56.
-
- Use mips-mips-riscos4.0 for RISCOS version 4.
- Use mips-mips-bsd with the BSD world.
-
- Note that the proper configuration names for DECstations are
- mips-dec-ultrix and mips-dec-osf.
-
- If you are compiling with GCC, then you must run fixincludes;
- the alternative of using -traditional won't work because
- the definition of SIGN_EXTEND_CHAR uses the keyword `signed'.
-
- If the SYSV world is the default, then you probably need the following
- line in etc/Makefile:
-
- CFLAGS= -g -systype bsd43
-
- Some operating systems on MIPS machines give SIGTRAP for division by
- zero instead of the usual signals. The only real solution is to fix
- the system to give a proper signal.
-
- In the meantime, you can change init_data in data.c if you wish.
- Change it to handle SIGTRAP as well as SIGFPE. But this will have a
- great disadvantage: you will not be able to run Emacs under a
- debugger. I think crashing on division by zero is a lesser problem.
-
-National Semiconductor 32000 (ns32k-ns-genix)
-
- This is for a complete machine from National Semiconductor,
- running Genix. Changes merged in version 19.
-
-NCR Tower 32 (m68k-ncr-sysv2 or m68k-ncr-sysv3)
-
- If you are running System V release 2, use m68k-ncr-sysv2.
- If you are running System V release 3, use m68k-ncr-sysv3.
-
- These both worked as of 18.56. If you change `src/ymakefile' so that
- CFLAGS includes C_OPTIMIZE_SWITCH rather than C_DEBUG_SWITCH, check
- out the comments in `src/m/tower32.h' (for System V release 2) or
- `src/m/tower32v3.h' (for System V release 3) about this.
-
- There is a report that compilation with -O did not work with 18.54
- under System V release 2.
-
-Nixdorf Targon 31 (m68k-nixdorf-sysv)
-
- Machine description file for version 17 is included in 18
- but whether it works is not known.
- `src/unexec.c' bombs if compiled with -O.
- Note that the "Targon 35" is really a Pyramid.
-
-Nu (TI or LMI) (m68k-nu-sysv)
-
- Version 18 is believed to work.
-
-Plexus (m68k-plexus-sysv)
-
- Worked as of 17.56.
-
-Pmax (DEC Mips) (mips-dec-ultrix or mips-dec-osf1)
-
- See under DECstation, above.
-
-Prime EXL (i386-prime-sysv)
-
- Minor changes merged in 19.1.
-
-Pyramid (pyramid-pyramid-bsd)
-
- You need to build Emacs in the Berkeley universe with
- the `ucb' command, as in `ucb make' or `ucb build-install'.
-
- In OSx 4.0, it seems necessary to add the following two lines
- to `src/m/pyramid.h':
- #define _longjmp longjmp
- #define _setjmp setjmp
-
- In Pyramid system 2.5 there has been a compiler bug making
- Emacs crash just after screen-splitting with Qnil containing 0.
- A compiler that fixes this is Pyramid customer number 8494,
- internal number 1923.
-
- Some versions of the pyramid compiler get fatal
- errors when the -gx compiler switch is used; if this
- happens to you, change `src/m/pyramid.h' to define
- C_DEBUG_SWITCH with an empty definition.
-
- Some old system versions may require you to define PYRAMID_OLD
- in when alloca.s is preprocessed, in order to define _longjmp and _setjmp.
-
-Sequent Balance (ns32k-sequent-bsd4.2 or ns32k-sequent-bsd4.3)
-
- Emacs 18.51 worked on system version 3.0. 18.52 is said to work.
- Delete some lines at the end of `src/m/sequent.h' for earlier system
- versions.
-
-Sequent Symmetry (i386-sequent-bsd)
-
- Emacs 19 should work.
-
-SONY News (m68k-sony-bsd4.2 or m68k-sony-bsd4.3)
-
- 18.52 worked. Use m68k-sony-bsd4.3 for system release 3.
-
-SONY News 3000 series (RISC NEWS) (mips-sony-bsd)
-
- Worked, as of 18.56. Note that this is a MIPS architecture machine.
-
- Some versions of the operating system give SIGTRAP for division by zero
- instead of the usual signals. This causes division by zero
- to make Emacs crash. The system should be fixed to give the proper signal.
- Changing Emacs is not a proper solution, because it would prevent
- Emacs from working under any debugger. But you can change init_data
- in data.c if you wish.
-
-Stardent 1500 or 3000
-
- See Titan.
-
-Stride (m68k-stride-sysv)
-
- Works (most recent news for 18.30) on their release 2.0.
- For release 2.2, see the end of `src/m/stride.h'.
- It may be possible to run on their V.1 system but changes
- in the s- file would be needed.
-
-Sun 1, 2 and 3 (m68k-sun-sunos, sparc-sun-sunos, i386-sun-sunos)
-
- It's important to include the SunOS version number in the
- configuration name. For example, for SunOS release 4.0 on a Sun 3,
- use `m68k-sun-sunos4.0'; for SunOS release 4.1 on a Sparc, use
- `sparc-sun-sunos4.1'.
-
- Use `m68k' for the 68000-based Sun boxes, `sparc' for Sparcstations,
- and `i386' for Sun Roadrunners.
-
- There are three machine files for the different versions of SunOS
- that run on the Motorola 68000 processors. All are derived from
- Berkeley 4.2. Emacs 17 has run on all of them.
-
- See the file etc/SUNBUG for how to solve problems caused by
- bugs in the "export" version of SunOS 4.
-
- If you have trouble using open-network-stream, get the
- distribution of `bind' (the BSD name-server), build libresolv.a,
- and link Emacs with -lresolv. This problem is due to obsolete
- software in the nonshared standard library.
-
- If you want to use SunWindows, define HAVE_SUN_WINDOWS
- in config.h to enable a special interface called `emacstool'.
- The definition must *precede* the #include "machine.h".
- System version 3.2 is required for this facility to work.
-
- We recommend that you instead use the X window system, which
- has technical advantages, is an industry standard, and is also
- free software.
-
- If you are compiling for X windows, and the X window library was
- compiled to use the 68881, then you must edit config.h according
- the comments at the end of `src/m/sun3.h'.
-
- Note that Emacs on a Sun is not really as big as it looks.
- As dumped, it includes around 200k of zeros between the
- original text section and the original data section
- (now remapped as part of the text). These are never
- swapped in.
-
- To build a single Emacs that will run on Sun 2 and Sun 3
- HARDWARE, just build it on the Sun 2.
-
- Changes for the Sparc architecture were merged in 18.50. Some
- people say optimizing compilation does not work; some say that -O2
- (whatever that is) works perhaps with a small change.
-
- Changes for the Roadrunner architecture were merged in 18.51.
-
- There is a bug in the Export version of SunOS 4.0 shipped outsde the
- US; it has something to do with Pentagon export restrictions on the
- DES chips in Suns. The symptom is that "cc -Bstatic ..." WILL NOT
- WORK ON SUNOS 4.0 EXPORT without a little help from "ar". The
- static C-library is /lib/libc.a, and this is where the problem
- occurs. There are a bunch of .o files in there relating to DES
- stuff (des_crypt.o, des_soft.o, _crypt.o, etc). All of them will
- cause cc -Bstatic to die with these errors:
-
- > _edata: ld: user attempt to redefine loader-defined symbol
- > _end: user attempt to redefine loader-defined symbol
- > _etext: /lib/libc.a(des_crypt.o): multiply defined
-
- In order to make cc -Bstatic useful, you must remove all the
- brain-damaged .o files from /lib/libc.a. To do this use
-
- ar d /lib/libc.a des_crypt.o des_soft.o _crypt.o ....
-
- (Make a backup of /lib/libc.a first, you may decide you need the "real"
- thing someday). Note that there are a bunch of these files, these may
- not be all of them. You will find them quick enough by trying to
- compile ANY C program, even one which does NOTHING.
-
-Tadpole 68K (m68k-tadpole-sysv)
-
- Changes merged in 19.1.
-
- You may need to edit Makefile to change the variables LIBDIR and
- BINDIR from /usr/local to /usr/contrib.
-
- To give movemail access to /usr/mail, you may need to execute
-
- chmod 2755 etc/movemail; chgrp mail etc/movemail
-
-Tahoe (tahoe-tahoe-bsd4.2 or tahoe-tahoe-bsd4.3)
-
- 18.52 was known to work on some Tahoes, but a compiler bug intervenes
- on others. Some Emacs versions have worked in Unisys 1r4
- (not in 1r3) and CCI I.21.
-
- If you have trouble compiling `lib-src/loadst.c', turn off the definition
- of DKSTAT_HEADER_FILE in `src/m/tahoe.h'.
-
-Tandem Integrity S2 (mips-tandem-sysv)
-
- Changes merged in 18.56 but subprocess support is turned off.
- You will probably want to see if you can make subprocesses work.
-
- You must edit `lib-src/Makefile' to define LOADLIBES = -mld.
-
-Tektronix 16000 box (6130?) (ns16k-tektronix-bsd)
-
- Emacs 17.61 worked.
-
-Tektronix 4300 (m68k-tektronix-bsd)
-
- Emacs 18.51 worked.
-
-Titan P2 or P3 (titan-titan-sysv)
-
- Changes probably merged in version 19.
-
-Ustation E30 (SS5E) (m68k-unisys-unipl)
-
- Changes merged in 18.52; don't know whether they work.
-
-Vaxen running Berkeley Unix (vax-dec-bsd4.1, vax-dec-bsd4.2, vax-dec-bsd4.3),
- Ultrix (vax-dec-ultrix),
- System V (vax-dec-sysv0, vax-dec-sysv2), or
- VMS (vax-dec-vms)
-
- Works.
-
- See under Ultrix for problems using X windows on Ultrix (vax-dec-ultrix).
-
- 18.27 worked on System V rel 2 (vax-dec-sysv2).
-
- 18.36 worked on System V rel 0 (vax-dec-sysv0).
-
- 18.36 was believed to work on VMS. Addition of features is necessary
- to make this Emacs version more usable.
-
-Whitechapel MG1 (ns16k-whitechapel-?)
-
- May work. Supposedly no changes were needed except in `src/m/mg1.h'
- file. I do not know what Unix version runs on them.
-
-Wicat (m68k-wicat-sysv)
-
- Changes merged as of 18.6; whether they work is unknown.
- See comments in `src/m/wicat.h' for things you should change
- depending on the system and compiler version you have.
-
-Here is a summary of the systems supported:
-
-Berkeley 4.1 (bsd4.1)
-
- Works on vaxes.
-
-Berkeley 4.2 (bsd4.2)
-
- Works on several machines.
-
-Berkeley 4.3 (bsd4.3)
-
- Works, on Vaxes at least.
-
-Microport
-
- See under "Intel 386".
-
-System V rel 0 (usg5.0)
-
- Works, on Vaxes and 3bxxx's.
- There are some problems in 18.37 due to shortnames/cccp problems:
- use the emacs 17 cpp if you have it.
-
-System V rel 2 (usg5.2)
-
- Works on various machines.
- On some (maybe all) machines the library -lPW exists and contains
- a version of `alloca'. On these machines, to use it, put
- #define HAVE_ALLOCA
- #define LIB_STANDARD -lPW -lc
- in the `src/m/MACHINENAME.h' file for the machine.
-
- If you find that the character Meta-DEL makes Emacs crash,
- find where function init_sys_modes in sysdep.c sets sg.c_cc[VQUIT]
- and make it store 7 there. I have as yet no evidence of whether
- this problem, known in HP-UX, exists in other system V versions.
-
-System V rel 2.2 (usg5.2.2)
-
- In 5.2.2 AT&T undid, incompatibly, their previous incompatible
- change to the way the nlist library is called. A different s- file
- is used to enable the other interface.
-
- They call themselves the right choice--can't they choose?
-
- Emacs version 18 unexec is currently not working properly
- on 5.2.2. Nobody knows why yet. A workaround is to define
- NO_REMAP. It is not yet known whether this applies to all
- machines running 5.2.2.
-
-System V rel 3 (usg5.3)
-
- Some versions of this system support ptys and BSD-style sockets.
- On such systems, you should define HAVE_PTYS and HAVE_SOCKETS in config.h.
-
- If you want to link Emacs with shared libraries, define
- USG_SHARED_LIBRARIES.
-
- You may have to add ANSI idempotence #-lines to your sys/types.h
- file to get Emacs to compile correctly. This may be necessary on
- other pre-ANSI systems as well.
-
- On an AT&T 6386WGS using System V Release 3.2 and X11R3, the X support
- cannot be made to work. Whether or not the GNU relocating malloc is
- used, the symptom is that the first call Emacs makes to sbrk(0) returns
- (char *)-1. Sorry, you're stuck with character-only mode. Try
- installing Xfree86 to fix this.
-
-System V rel 4.0.3 and 4.0.4 (usg5.4)
-
- Supported, including shared libraries for ELF, but ptys do not work
- because TIOCGPGRP fails to work on ptys (but Dell 2.2 seems to have
- fixed this). This failure is probably due to a misunderstanding of
- the consequences of the POSIX spec: many system designers mistakenly
- think that POSIX requires this feature to fail. This is untrue;
- ptys are an extension, and POSIX says that extensions *when used*
- may change the action of standard facilities in any fashion.
-
- The standard C preprocessor may generate xmakefile incorrectly. However,
- /lib/cpp will work, so use `make CPP=/lib/cpp'. Standard cpp
- seems to work OK under Dell 2.2.
-
- Some versions 3 and earlier of V.4, on the Intel 386 and 860, had
- problems in the X11 libraries. These prevent Emacs from working
- with X. You can use Emacs with X provided your copy of X is based
- on X11 release 4 or newer, or is Dell's 2.2 (which is a 4.0.3).
- Unfortunately, the only way you can tell whether your X11 library is
- new enough is to try compiling Emacs to use X. If emacs runs, your
- X11 library is new enough.
-
- In this context, GSV4 and GSV4i are alternate names for X11R4.
- OL2.* is X11R3 based. OL3 is in between X11R3 and X11R4, and may or
- may not work, depending on who made the Unix system. If the library
- libXol is part of the X distribution, then you have X11R3 and Emacs
- won't work with X.
-
- Most versions of V.4 support sockets. If `/usr/lib/libsocket.so'
- exists, your system supports them. If yours does not, you must add
- #undef HAVE_SOCKETS in config.h, after the inclusion of s-usg5-4.h.
- (Any system that supports Internet should implement sockets.)
-
-Ultrix (bsd4.3)
-
- Recent versions of Ultrix appear to support the features of Berkeley 4.3.
- Ultrix was at the BSD 4.2 level for a long time after BSD 4.3 came out.
-
- Ultrix 3.0 has incompatibilities in its X library if you have the
- Ultrix version of X (UWS version 2.0). To solve them, you need to
- prevent XvmsAlloc.o in Xlib from being used. Israel Pinkas says:
-
- I added the following lines to config.h after the X defines:
-
- #if defined(ultrix) && defined(X11)
- #define OBJECTS_SYSTEM calloc.o
- #endif
-
- Then I ran the following:
-
- ar x /usr/lib/libc.a calloc.o
-
- The problem is said to be gone in UWS version 2.1.
-
-Uniplus 5.2 (unipl5.2)
-
- Works, on Dual machines at least.
-
-VMS (vmsM.N)
-
- The config file s/vms5-5.h may be right for some earlier versions;
- please let us know what happens when you try it in VMS versions 5.0
- thru 5.4.
-
- Note that Emacs for VMS is usually distributed in a special VMS
- distribution. See the file ../vms/VMSINSTALL for info on moving
- Unix distributions to VMS, and other VMS-related topics.
-
-Xenix (xenix)
-
- Should work in 18.50, but you will need to edit the files
- `lib-src/Makefile' and `src/ymakefile'
- (see the comments that mention "Xenix" for what to change.)
- Compiling Emacs with -O is said not to work.
-
- If you want Emacs to work with Smail (installed as /usr/bin/smail)
- then add the line #define SMAIL to config.h.
-
- The file etc/XENIX suggests some useful things to do to Xenix
- to make the Emacs meta key work.
-
-Local variables:
-mode: text
-fill-prefix: " "
-End:
diff --git a/etc/=TO-DO b/etc/=TO-DO
deleted file mode 100644
index e5b9a49599b..00000000000
--- a/etc/=TO-DO
+++ /dev/null
@@ -1,83 +0,0 @@
-Things useful to do for GNU Emacs:
-
-* Primitive for random access insertion of part of a file.
-
-* Making I/O streams for files, so that read and prin1 can
- be used on files directly. The I/O stream itself would
- serve as a function to read or write one character.
-
-* If a file you can't write is in a directory you can write,
- make sure it works to modify and save this file.
-
-* Make dired's commands handle correctly the case where
- ls has listed several subdirectories' contents.
- It needs to be able to tell which directory each file
- is really in, by searching backward for the line
- which identifies the start of a directory.
-
-* Add more dired commands, such as sorting (use the
- sort utility through call-process-region).
-
-* Make display.c record inverse-video-ness on
- a character by character basis. Then make non-full-screen-width
- mode lines inverse video, and display the marked location in
- inverse video.
-
-* VMS code to list a file directory. Make dired work.
-
-Long range:
-
- Ideas for extending GNU Emacs to deal with arbitrary character sets.
-
-I would like GNU Emacs to be extended to handle all the world's alphabets
-and word signs. I don't expect to have time to do such a thing in the next
-few years, so here are my ideas on the best way to do it.
-
-* Each graphic is represented by a sequence of ordinary 8-bit characters.
-
-* All the characters that make up such a sequence have codes >= 0200.
-
-* The first character of such a sequence is between 0200 and 0237.
-
-* The remaining characters of such a sequence are all 0240 or higher.
-
-* The first character of the sequence determines the number of characters
-in the sequence. Thus, 0200...0207 could start two-character sequences,
-0210...0227 could start three-character sequences, and 0230 could start
-four-character sequences. (Codes 0231...0237 would be reserved.)
-
-* Several common alphabets, and some mathematical symbols, would get
-two-character sequences. (Probably Greek, Russian, Hebrew(?), Arabic(?),
-Korean, and Japanese kana). The remaining alphabets, and some versions of
-Chinese, would get three-character sequences. Other sets of Chinese
-characters would get four-character sequences.
-
-Each country that uses Chinese characters has its own standard character
-set, and it is not easy to correlate them to avoid overlap. So there may
-need to be several sets of Chinese characters. That is why they need so
-much code space.
-
-True support for Hebrew and Arabic requires dealing with the problem of
-writing direction for mixed text; I don't know what to do for that.
-
-* The functions that use syntax table would determine the
-syntax of a sequence from its first character.
-
-* Functions in indent.c for computing widths and columns would
-determine the width of a sequence from its first character.
-So would display routines.
-
-* Only a few other editing routines would need any change. In
-particular, searching and regexp matching might not need any change.
-
-* Most of the work required would be in redisplay. The only case that
-needs to be supported is with X windows, since ordinary terminals
-can't display all these characters anyway.
-
-* There might need to be code to translate files from this format
-to whatever format is typically stored on disk.
-
-
-I would be very unhappy with half-measures, such as support for
-Japanese only.
-
diff --git a/etc/=news.texi b/etc/=news.texi
deleted file mode 100644
index cad097889c0..00000000000
--- a/etc/=news.texi
+++ /dev/null
@@ -1,3380 +0,0 @@
-@setfilename LNEWS
-
-@section New Features in the Lisp Language
-
-@end itemize
-@itemize @bullet
-@item
-The new function @code{delete} is a traditional Lisp function. It takes
-two arguments, @var{elt} and @var{list}, and deletes from @var{list} any
-elements that are equal to @var{elt}. It uses the function @code{equal}
-to compare elements with @var{elt}.
-
-@item
-The new function @code{member} is a traditional Lisp function. It takes
-two arguments, @var{elt} and @var{list}, and finds the first element of
-@var{list} that is equal to @var{elt}. It uses the function
-@code{equal} to compare each list element with @var{elt}.
-
-The value is a sublist of @var{list}, whose first element is the one
-that was found. If no matching element is found, the value is
-@code{nil}.
-
-@ignore @c Seems not to be true, from looking at the code.
-@item
-The function @code{equal} is now more robust: it does not crash due to
-circular list structure.
-@end ignore
-
-@item
-The new function @code{indirect-function} finds the effective function
-definition of an object called as a function. If the object is a
-symbol, @code{indirect-function} looks in the function definition of the
-symbol. It keeps doing this until it finds something that is not a
-symbol.
-
-@item
-There are new escape sequences for use in character and string
-constants. The escape sequence @samp{\a} is equivalent to @samp{\C-g},
-the @sc{ASCII} @sc{BEL} character (code 7). The escape sequence
-@samp{\x} followed by a hexidecimal number represents the character
-whose @sc{ASCII} code is that number. There is no limit on the number
-of digits in the hexidecimal value.
-
-@item
-The function @code{read} when reading from a buffer now does not skip a
-terminator character that terminates a symbol. It leaves that character
-to be read (or just skipped, if it is whitespace) next time.
-
-@item
-When you use a function @var{function} as the input stream for
-@code{read}, it is usually called with no arguments, and should return
-the next character. In Emacs 19, sometimes @var{function} is called
-with one argument (always a character). When that happens,
-@var{function} should save the argument and arrange to return it when
-called next time.
-
-@item
-@code{random} with integer argument @var{n} returns a random number
-between 0 and @var{n}@minus{}1.
-
-@item
-The functions @code{documentation} and @code{documentation-property} now
-take an additional optional argument which, if non-@code{nil}, says to
-refrain from calling @code{substitute-command-keys}. This way, you get
-the exact text of the documentation string as written, without the usual
-substitutions. Make sure to call @code{substitute-command-keys}
-yourself if you decide to display the string.
-
-@ignore
-@item
-The new function @code{invocation-name} returns as a string the program
-name that was used to run Emacs, with any directory names discarded.
-@c ??? This hasn't been written yet. ???
-@end ignore
-
-@item
-The new function @code{map-y-or-n-p} makes it convenient to ask a series
-of similar questions. The arguments are @var{prompter}, @var{actor},
-@var{list}, and optional @var{help}.
-
-The value of @var{list} is a list of objects, or a function of no
-arguments to return either the next object or @code{nil} meaning there
-are no more.
-
-The argument @var{prompter} specifies how to ask each question. If
-@var{prompter} is a string, the question text is computed like this:
-
-@example
-(format @var{prompter} @var{object})
-@end example
-
-@noindent
-where @var{object} is the next object to ask about.
-
-If not a string, @var{prompter} should be a function of one argument
-(the next object to ask about) and should return the question text.
-
-The argument @var{actor} should be a function of one argument, which is
-called with each object that the user says yes for. Its argument is
-always one object from @var{list}.
-
-If @var{help} is given, it is a list @code{(@var{object} @var{objects}
-@var{action})}, where @var{object} is a string containing a singular
-noun that describes the objects conceptually being acted on;
-@var{objects} is the corresponding plural noun and @var{action} is a
-transitive verb describing @var{actor}. The default is @code{("object"
-"objects" "act on")}.
-
-Each time a question is asked, the user may enter @kbd{y}, @kbd{Y}, or
-@key{SPC} to act on that object; @kbd{n}, @kbd{N}, or @key{DEL} to skip
-that object; @kbd{!} to act on all following objects; @key{ESC} or
-@kbd{q} to exit (skip all following objects); @kbd{.} (period) to act on
-the current object and then exit; or @kbd{C-h} to get help.
-
-@code{map-y-or-n-p} returns the number of objects acted on.
-
-@item
-You can now ``set'' environment variables with the @code{setenv}
-command. This works by setting the variable @code{process-environment},
-which @code{getenv} now examines in preference to the environment Emacs
-received from its parent.
-@end itemize
-
-@section New Features for Loading Libraries
-
-You can now arrange to run a hook if a particular Lisp library is
-loaded.
-
-The variable @code{after-load-alist} is an alist of expressions to be
-evalled when particular files are loaded. Each element looks like
-@code{(@var{filename} @var{forms}@dots{})}.
-
-When @code{load} is run and the file name argument equals
-@var{filename}, the @var{forms} in the corresponding element are
-executed at the end of loading. @var{filename} must match exactly!
-Normally @var{filename} is the name of a library, with no directory
-specified, since that is how @code{load} is normally called.
-
-An error in @var{forms} does not undo the load, but does prevent
-execution of the rest of the @var{forms}.
-
-The function @code{eval-after-load} provides a convenient way to add
-entries to the alist. Call it with two arguments, @var{file} and a
-form to execute.
-
-The function @code{autoload} now supports autoloading a keymap.
-Use @code{keymap} as the fourth argument if the autoloaded function
-will become a keymap when loaded.
-
-There is a new feature for specifying which functions in a library should
-be autoloaded by writing special ``magic'' comments in that library itself.
-
- Write @samp{;;;###autoload} on a line by itself before a function
-definition before the real definition of the function, in its
-autoloadable source file; then the command @kbd{M-x
-update-file-autoloads} automatically puts the @code{autoload} call into
-@file{loaddefs.el}.
-
- You can also put other kinds of forms into @file{loaddefs.el}, by
-writing @samp{;;;###autoload} followed on the same line by the form.
-@kbd{M-x update-file-autoloads} copies the form from that line.
-
-@section Compilation Features
-
-@itemize @bullet
-@item
-Inline functions.
-
-You can define an @dfn{inline function} with @code{defsubst}. Use
-@code{defsubst} just like @code{defun}, and it defines a function which
-you can call in all the usual ways. Whenever the function thus defined
-is used in compiled code, the compiler will open code it.
-
-You can get somewhat the same effects with a macro, but a macro has the
-limitation that you can use it only explicitly; a macro cannot be called
-with @code{apply}, @code{mapcar} and so on. Also, it takes some work to
-convert an ordinary function into a macro. To convert it into an inline
-function, simply replace @code{defun} with @code{defsubst}.
-
-Making a function inline makes explicit calls run faster. But it also
-has disadvantages. For one thing, it reduces flexibility; if you change
-the definition of the function, calls already inlined still use the old
-definition until you recompile them.
-
-Another disadvantage is that making a large function inline can increase
-the size of compiled code both in files and in memory. Since the
-advantages of inline functions are greatest for small functions, you
-generally should not make large functions inline.
-
-Inline functions can be used and open coded later on in the same file,
-following the definition, just like macros.
-
-@item
-The command @code{byte-compile-file} now offers to save any buffer
-visiting the file you are compiling.
-
-@item
-The new command @code{compile-defun} reads, compiles and executes the
-defun containing point. If you use this on a defun that is actually a
-function definition, the effect is to install a compiled version of
-that function.
-
-@item
-Whenever you load a Lisp file or library, you now receive a warning if
-the directory contains both a @samp{.el} file and a @samp{.elc} file,
-and the @samp{.el} file is newer. This typically indicates that someone
-has updated the Lisp code but forgotten to recompile it, so the changes
-do not take effect. The warning is a reminder to recompile.
-
-@item
-The special form @code{eval-when-compile} marks the forms it contains to
-be evaluated at compile time @emph{only}. At top-level, this is
-analogous to the Common Lisp idiom @code{(eval-when (compile)
-@dots{})}. Elsewhere, it is similar to the Common Lisp @samp{#.} reader
-macro (but not when interpreting).
-
-If you're thinking of using this feature, we recommend you consider whether
-@code{provide} and @code{require} might do the job as well.
-
-@item
-The special form @code{eval-and-compile} is similar to
-@code{eval-when-compile}, but the whole form is evaluated both at
-compile time and at run time.
-
-If you're thinking of using this feature, we recommend you consider
-whether @code{provide} and @code{require} might do the job as well.
-
-@item
-Emacs Lisp has a new data type for byte-code functions. This makes
-them faster to call, and also saves space. Internally, a byte-code
-function object is much like a vector; however, the evaluator handles
-this data type specially when it appears as a function to be called.
-
-The printed representation for a byte-code function object is like that
-for a vector, except that it starts with @samp{#} before the opening
-@samp{[}. A byte-code function object must have at least four elements;
-there is no maximum number, but only the first six elements are actually
-used. They are:
-
-@table @var
-@item arglist
-The list of argument symbols.
-
-@item byte-code
-The string containing the byte-code instructions.
-
-@item constants
-The vector of constants referenced by the byte code.
-
-@item stacksize
-The maximum stack size this function needs.
-
-@item docstring
-The documentation string (if any); otherwise, @code{nil}.
-
-@item interactive
-The interactive spec (if any). This can be a string or a Lisp
-expression. It is @code{nil} for a function that isn't interactive.
-@end table
-
-The predicate @code{byte-code-function-p} tests whether a given object
-is a byte-code function.
-
-You can create a byte-code function object in a Lisp program
-with the function @code{make-byte-code}. Its arguments are the elements
-to put in the byte-code function object.
-
-You should not try to come up with the elements for a byte-code function
-yourself, because if they are inconsistent, Emacs may crash when you
-call the function. Always leave it to the byte compiler to create these
-objects; it, we hope, always makes the elements consistent.
-@end itemize
-
-@section Floating Point Numbers
-
-You can now use floating point numbers in Emacs, if you define the macro
-@code{LISP_FLOAT_TYPE} when you compile Emacs.
-
-The printed representation for floating point numbers requires either a
-decimal point surrounded by digits, or an exponent, or both. For
-example, @samp{1500.0}, @samp{15e2}, @samp{15.0e2} and @samp{1.5e3} are
-four ways of writing a floating point number whose value is 1500.
-
-The existing predicate @code{numberp} now returns @code{t} if the
-argument is any kind of number---either integer or floating. The new
-predicates @code{integerp} and @code{floatp} check for specific types of
-numbers.
-
-You can do arithmetic on floating point numbers with the ordinary
-arithmetic functions, @code{+}, @code{-}, @code{*} and @code{/}. If you
-call one of these functions with both integers and floating point
-numbers among the arguments, the arithmetic is done in floating point.
-The same applies to the numeric comparison functions such as @code{=}
-and @code{<}. The remainder function @code{%} does not accept floating
-point arguments, and neither do the bitwise boolean operations such as
-@code{logand} or the shift functions such as @code{ash}.
-
-There is a new arithmetic function, @code{abs}, which returns the absolute
-value of its argument. It handles both integers and floating point
-numbers.
-
-To convert an integer to floating point, use the function @code{float}.
-There are four functions to convert floating point numbers to integers;
-they differ in how they round. @code{truncate} rounds toward 0,
-@code{floor} rounds down, @code{ceil} rounds up, and @code{round}
-produces the nearest integer.
-
-You can use @code{logb} to extract the binary exponent of a floating
-point number. More precisely, it is the logarithm base 2, rounded down
-to an integer.
-
-Emacs has several new mathematical functions that accept any kind of
-number as argument, but always return floating point numbers.
-
-@table @code
-@item cos
-@findex cos
-@itemx sin
-@findex sin
-@itemx tan
-@findex tan
-Trigonometric functions.
-@item acos
-@findex acos
-@itemx asin
-@findex asin
-@itemx atan
-@findex atan
-Inverse trigonometric functions.
-@item exp
-@findex exp
-The exponential function (power of @var{e}).
-@item log
-@findex log
-Logarithm base @var{e}.
-@item expm1
-@findex expm1
-Power of @var{e}, minus 1.
-@item log1p
-@findex log1p
-Add 1, then take the logarithm.
-@item log10
-@findex log10
-Logarithm base 10
-@item expt
-@findex expt
-Raise @var{x} to power @var{y}.
-@item sqrt
-@findex sqrt
-The square root function.
-@end table
-
-The new function @code{string-to-number} now parses a string containing
-either an integer or a floating point number, returning the number.
-
-The @code{format} function now handles the specifications @samp{%e},
-@samp{%f} and @samp{%g} for printing floating point numbers; likewise
-@code{message}.
-
-The new variable @code{float-output-format} controls how Lisp prints
-floating point numbers. Its value should be @code{nil} or a string.
-
-If it is a string, it should contain a @samp{%}-spec like those accepted
-by @code{printf} in C, but with some restrictions. It must start with
-the two characters @samp{%.}. After that comes an integer which is the
-precision specification, and then a letter which controls the format.
-
-The letters allowed are @samp{e}, @samp{f} and @samp{g}. Use @samp{e}
-for exponential notation (@samp{@var{dig}.@var{digits}e@var{expt}}).
-Use @samp{f} for decimal point notation
-(@samp{@var{digits}.@var{digits}}). Use @samp{g} to choose the shorter
-of those two formats for the number at hand.
-
-The precision in any of these cases is the number of digits following
-the decimal point. With @samp{f}, a precision of 0 means to omit the
-decimal point. 0 is not allowed with @samp{f} or @samp{g}.
-
-A value of @code{nil} means to use the format @samp{%.20g}.
-
-No matter what the value of @code{float-output-format}, printing ensures
-that the result fits the syntax rules for a floating point number. If
-it doesn't fit (for example, if it looks like an integer), it is
-modified to fit. By contrast, the @code{format} function formats
-floating point numbers without requiring the output to fit the
-syntax rules for floating point number.
-
-@section New Features for Printing And Formatting Output
-
-@itemize @bullet
-@item
-The @code{format} function has a new feature: @samp{%S}. This print
-spec prints any kind of Lisp object, even a string, using its Lisp
-printed representation.
-
-By contrast, @samp{%s} prints everything without quotation.
-
-@item
-@code{prin1-to-string} now takes an optional second argument which says
-not to print the Lisp quotation characters. (In other words, to use
-@code{princ} instead of @code{prin1}.)
-
-@item
-The new variable @code{print-level} specifies the maximum depth of list
-nesting to print before cutting off all deeper structure. A value of
-@code{nil} means no limit.
-@end itemize
-
-@section Changes in Basic Editing Functions
-
-@itemize @bullet
-@item
-There are two new primitives for putting text in the kill ring:
-@code{kill-new} and @code{kill-append}.
-
-The function @code{kill-new} adds a string to the front of the kill ring.
-
-Use @code{kill-append} to add a string to a previous kill. The second
-argument @var{before-p}, if non-@code{nil}, says to add the string at
-the beginning; otherwise, it goes at the end.
-
-Both of these functions apply @code{interprogram-cut-function} to the
-entire string of killed text that ends up at the beginning of the kill
-ring.
-
-@item
-The new function @code{current-kill} rotates the yanking pointer in the
-kill ring by @var{n} places, and returns the text at that place in the
-ring. If the optional second argument @var{do-not-move} is
-non-@code{nil}, it doesn't actually move the yanking point; it just
-returns the @var{n}th kill forward. If @var{n} is zero, indicating a
-request for the latest kill, @code{current-kill} calls
-@code{interprogram-paste-function} (documented below) before consulting
-the kill ring.
-
-All Emacs Lisp programs should either use @code{current-kill},
-@code{kill-new}, and @code{kill-append} to manipulate the kill ring, or
-be sure to call @code{interprogram-paste-function} and
-@code{interprogram-cut-function} as appropriate.
-
-@item
-The variables @code{interprogram-paste-function} and
-@code{interprogram-cut-function} exist so that you can provide functions
-to transfer killed text to and from other programs.
-
-@item
-The @code{kill-region} function can now be used in read-only buffers.
-It beeps, but adds the region to the kill ring without deleting it.
-
-@item
-The new function @code{compare-buffer-substrings} lets you compare two
-substrings of the same buffer or two different buffers. Its arguments
-look like this:
-
-@example
-(compare-buffer-substrings @var{buf1} @var{beg1} @var{end1} @var{buf2} @var{beg2} @var{end2})
-@end example
-
-The first three arguments specify one substring, giving a buffer and two
-positions within the buffer. The last three arguments specify the other
-substring in the same way.
-
-The value is negative if the first substring is less, positive if the
-first is greater, and zero if they are equal. The absolute value of
-the result is one plus the index of the first different characters.
-
-@item
-Overwrite mode treats tab and newline characters specially. You can now
-turn off this special treatment by setting @code{overwrite-binary-mode}
-to @code{t}.
-
-@item
-Once the mark ``exists'' in a buffer, it normally never ceases to
-exist. However, it may become @dfn{inactive}. The variable
-@code{mark-active}, which is always local in all buffers, indicates
-whether the mark is active: non-@code{nil} means yes.
-
-A command can request deactivation of the mark upon return to the editor
-command loop by setting @code{deactivate-mark} to a non-@code{nil}
-value. Transient Mark mode works by causing the buffer modification
-primitives to set @code{deactivate-mark}.
-
-The variables @code{activate-mark-hook} and @code{deactivate-mark-hook}
-are normal hooks run, respectively, when the mark becomes active andwhen
-it becomes inactive. The hook @code{activate-mark-hook} is also run at
-the end of a command if the mark is active and the region may have
-changed.
-
-@item
-The function @code{move-to-column} now accepts a second optional
-argument @var{force}, in addition to @var{column}; if the requested
-column @var{column} is in the middle of a tab character and @var{force}
-is non-@code{nil}, @code{move-to-column} replaces the tab with the
-appropriate sequence of spaces so that it can place point exactly at
-@var{column}.
-
-@item
-The search functions when successful now return the value of point
-rather than just @code{t}. This affects the functions
-@code{search-forward}, @code{search-backward},
-@code{word-search-forward}, @code{word-search-backward},
-@code{re-search-forward}, and @code{re-search-backward}.
-
-@item
-When you do regular expression searching or matching, there is no longer
-a limit to how many @samp{\(@dots{}\)} pairs you can get information
-about with @code{match-beginning} and @code{match-end}. Also, these
-parenthetical groupings may now be nested to any degree.
-
-@item
-The new special form @code{save-match-data} preserves the regular
-expression match status. Usage: @code{(save-match-data
-@var{body}@dots{})}.
-
-@item
-The function @code{translate-region} applies a translation table to the
-characters in a part of the buffer. Invoke it as
-@code{(translate-region @var{start} @var{end} @var{table})}; @var{start}
-and @var{end} bound the region to translate.
-
-The translation table @var{table} is a string; @code{(aref @var{table}
-@var{ochar})} gives the translated character corresponding to
-@var{ochar}. If the length of @var{table} is less than 256, any
-characters with codes larger than the length of @var{table} are not
-altered by the translation.
-
-@code{translate-region} returns the number of characters which were
-actually changed by the translation. This does not count characters
-which were mapped into themselves in the translation table.
-
-@item
-There are two new hook variables that let you notice all changes in all
-buffers (or in a particular buffer, if you make them buffer-local):
-@code{before-change-function} and @code{after-change-function}.
-
-If @code{before-change-function} is non-@code{nil}, then it is called
-before any buffer modification. Its arguments are the beginning and end
-of the region that is going to change, represented as integers. The
-buffer that's about to change is always the current buffer.
-
-If @code{after-change-function} is non-@code{nil}, then it is called
-after any buffer modification. It takes three arguments: the beginning
-and end of the region just changed, and the length of the text that
-existed before the change. (To get the current length, subtract the
-rrgion beginning from the region end.) All three arguments are
-integers. The buffer that's about to change is always the current
-buffer.
-
-Both of these variables are temporarily bound to @code{nil} during the
-time that either of these hooks is running. This means that if one of
-these functions changes the buffer, that change won't run these
-functions. If you do want hooks to be run recursively, write your hook
-functions to bind these variables back to their usual values.
-
-@item
-The hook @code{first-change-hook} is run using @code{run-hooks} whenever
-a buffer is changed that was previously in the unmodified state.
-
-@item
-The second argument to @code{insert-abbrev-table-description} is
-now optional.
-@end itemize
-
-@section Text Properties
-
- Each character in a buffer or a string can have a @dfn{text property
-list}, much like the property list of a symbol. The properties belong
-to a particular character at a particular place, such as, the letter
-@samp{T} at the beginning of this sentence. Each property has a name,
-which is usually a symbol, and an associated value, which can be any
-Lisp object---just as for properties of symbols (@pxref{Property Lists}).
-
- You can use the property @code{face-code} to control the font and
-color of text. That is the only property name which currently has a
-special meaning, but you can create properties of any name and examine
-them later for your own purposes.
-
- Copying text between strings and buffers preserves the properties
-along with the characters; this includes such diverse functions as
-@code{substring}, @code{insert}, and @code{buffer-substring}.
-
- Since text properties are considered part of the buffer contents,
-changing properties in a buffer ``modifies'' the buffer, and you can
-also undo such changes.
-
- Strings with text properties have a special printed representation
-which describes all the properties. This representation is also the
-read syntax for such a string. It looks like this:
-
-@example
-#("@var{characters}" @var{property-data}...)
-@end example
-
-@noindent
-where @var{property-data} is zero or more elements in groups of three as
-follows:
-
-@example
-@var{beg} @var{end} @var{plist}
-@end example
-
-@noindent
-The elements @var{beg} and @var{end} are integers, and together specify
-a portion of the string; @var{plist} is the property list for that
-portion.
-
-@subsection Examining Text Properties
-
- The simplest way to examine text properties is to ask for the value of
-a particular property of a particular character. For that, use
-@code{get-text-property}. Use @code{text-properties-at} to get the
-entire property list of a character. @xref{Property Search}, for
-functions to examine the properties of a number of characters at once.
-
-@code{(get-text-property @var{pos} @var{prop} @var{object})} returns the
-@var{prop} property of the character after @var{pos} in @var{object} (a
-buffer or string). The argument @var{object} is optional and defaults
-to the current buffer.
-
-@code{(text-properties-at @var{pos} @var{object})} returns the entire
-property list of the character after @var{pos} in the string or buffer
-@var{object} (which defaults to the current buffer).
-
-@subsection Changing Text Properties
-
- There are three primitives for changing properties of a specified
-range of text:
-
-@table @code
-@item add-text-properties
-This function puts on specified properties, leaving other existing
-properties unaltered.
-
-@item put-text-property
-This function puts on a single specified property, leaving others
-unaltered.
-
-@item remove-text-properties
-This function removes specified properties, leaving other
-properties unaltered.
-
-@item set-text-properties
-This function replaces the entire property list, leaving no vessage of
-the properties that that text used to have.
-@end table
-
-All these functions take four arguments: @var{start}, @var{end},
-@var{props}, and @var{object}. The last argument is optional and
-defaults to the current buffer. The argument @var{props} has the form
-of a property list.
-
-@subsection Property Search Functions
-
-In typical use of text properties, most of the time several or many
-consecutive characters have the same value for a property. Rather than
-writing your programs to examine characters one by one, it is much
-faster to process chunks of text that have the same property value.
-
-The functions @code{next-property-change} and
-@code{previous-property-change} scan forward or backward from position
-@var{pos} in @var{object}, looking for a change in any property between
-two characters scanned. They returns the position between those two
-characters, or @code{nil} if no change is found.
-
-The functions @code{next-single-property-change} and
-@code{previous-single-property-change} are similar except that you
-specify a particular property and they look for changes in the value of
-that property only. The property is the second argument, and
-@var{object} is third.
-
-@subsection Special Properties
-
- If a character has a @code{category} property, we call it the
-@dfn{category} of the character. It should be a symbol. The properties
-of the symbol serve as defaults for the properties of the character.
-
- You can use the property @code{face-code} to control the font and
-color of text. That is the only property name which currently has a
-special meaning, but you can create properties of any name and examine
-them later for your own purposes.
-about face codes.
-
- You can specify a different keymap for a portion of the text by means
-of a @code{local-map} property. The property's value, for the character
-after point, replaces the buffer's local map.
-
- If a character has the property @code{read-only}, then modifying that
-character is not allowed. Any command that would do so gets an error.
-
- If a character has the property @code{modification-hooks}, then its
-value should be a list of functions; modifying that character calls all
-of those functions. Each function receives two arguments: the beginning
-and end of the part of the buffer being modified. Note that if a
-particular modification hook function appears on several characters
-being modified by a single primitive, you can't predict how many times
-the function will be called.
-
- Insertion of text does not, strictly speaking, change any existing
-character, so there is a special rule for insertion. It compares the
-@code{read-only} properties of the two surrounding characters; if they
-are @code{eq}, then the insertion is not allowed. Assuming insertion is
-allowed, it then gets the @code{modification-hooks} properties of those
-characters and calls all the functions in each of them. (If a function
-appears on both characters, it may be called once or twice.)
-
- The special properties @code{point-entered} and @code{point-left}
-record hook functions that report motion of point. Each time point
-moves, Emacs compares these two property values:
-
-@itemize @bullet
-@item
-the @code{point-left} property of the character after the old location,
-and
-@item
-the @code{point-entered} property of the character after the new
-location.
-@end itemize
-
-@noindent
-If these two values differ, each of them is called (if not @code{nil})
-with two arguments: the old value of point, and the new one.
-
- The same comparison is made for the characters before the old and new
-locations. The result may be to execute two @code{point-left} functions
-(which may be the same function) and/or two @code{point-entered}
-functions (which may be the same function). The @code{point-left}
-functions are always called before the @code{point-entered} functions.
-
- A primitive function may examine characters at various positions
-without moving point to those positions. Only an actual change in the
-value of point runs these hook functions.
-
-@section New Features for Files
-
-@itemize @bullet
-@item
-The new function @code{file-accessible-directory-p} tells you whether
-you can open files in a particular directory. Specify as an argument
-either a directory name or a file name which names a directory file.
-The function returns @code{t} if you can open existing files in that
-directory.
-
-@item
-The new function @code{file-executable-p} returns @code{t} if its
-argument is the name of a file you have permission to execute.
-
-@item
-The function @code{file-truename} returns the ``true name'' of a
-specified file. This is the name that you get by following symbolic
-links until none remain. The argument must be an absolute file name.
-
-@item
-New functions @code{make-directory} and @code{delete-directory} create and
-delete directories. They both take one argument, which is the name of
-the directory as a file.
-
-@item
-The function @code{read-file-name} now takes an additional argument
-which specifies an initial file name. If you specify this argument,
-@code{read-file-name} inserts it along with the directory name. It puts
-the cursor between the directory and the initial file name.
-
-The user can then use the initial file name unchanged, modify it, or
-simply kill it with @kbd{C-k}.
-
-If the variable @code{insert-default-directory} is @code{nil}, then the
-default directory is not inserted, and the new argument is ignored.
-
-@item
-The function @code{file-relative-name} does the inverse of
-expansion---it tries to return a relative name which is equivalent to
-@var{filename} when interpreted relative to @var{directory}. (If such a
-relative name would be longer than the absolute name, it returns the
-absolute name instead.)
-
-@item
-The function @code{file-newest-backup} returns the name of the most
-recent backup file for @var{filename}, or @code{nil} that file has no
-backup files.
-
-@item
-The list returned by @code{file-attributes} now has 12 elements. The
-12th element is the file system number of the file system that the file
-is in. This element together with the file's inode number, which is the
-11th element, give enough information to distinguish any two files on
-the system---no two files can have the same values for both of these
-numbers.
-
-@item
-The new function @code{set-visited-file-modtime} updates the current
-buffer's recorded modification time from the visited file's time.
-
-This is useful if the buffer was not read from the file normally, or
-if the file itself has been changed for some known benign reason.
-
-If you give the function an argument, that argument specifies the new
-value for the recorded modification time. The argument should be a list
-of the form @code{(@var{high} . @var{low})} or @code{(@var{high}
-@var{low})} containing two integers, each of which holds 16 bits of the
-time. (This is the same format that @code[file-attributes} uses to
-return time values.)
-
-The new function @code{visited-file-modtime} returns the recorded last
-modification time, in that same format.
-
-@item
-The function @code{directory-files} now takes an optional fourth
-argument which, if non-@code{nil}, inhibits sorting the file names.
-Use this if you want the utmost possible speed and don't care what order
-the files are processed in.
-
-If the order of processing is at all visible to the user, then the user
-will probably be happier if you do sort the names.
-
-@item
-The variable @code{directory-abbrev-alist} contains an alist of
-abbreviations to use for file directories. Each element has the form
-@code{(@var{from} . @var{to})}, and says to replace @var{from} with
-@var{to} when it appears in a directory name. This replacement is done
-when setting up the default directory of a newly visited file. The
-@var{from} string is actually a regular expression; it should always
-start with @samp{^}.
-
-You can set this variable in @file{site-init.el} to describe the
-abbreviations appropriate for your site.
-
-@item
-The function @code{abbreviate-file-name} applies abbreviations from
-@code{directory-abbrev-alist} to its argument, and substitutes @samp{~}
-for the user's home directory.
-
-Abbreviated directory names are useful for directories that are normally
-accessed through symbolic links. If you think of the link's name as
-``the name'' of the directory, you can define it as an abbreviation for
-the directory's official name; then ordinarily Emacs will call that
-directory by the link name you normally use.
-
-@item
-@code{write-region} can write a given string instead of text from the
-buffer. Use the string as the first argument (in place of the
-starting character position).
-
-You can supply a second file name as the fifth argument (@var{visit}).
-Use this to write the data to one file (the first argument,
-@var{filename}) while nominally visiting a different file (the fifth
-argument, @var{visit}). The argument @var{visit} is used in the echo
-area message and also for file locking; @var{visit} is stored in
-@code{buffer-file-name}.
-
-@item
-The value of @code{write-file-hooks} does not change when you switch to
-a new major mode. The intention is that these hooks have to do with
-where the file came from, and not with what it contains.
-
-@item
-There is a new hook variable for saving files:
-@code{write-contents-hooks}. It works just like @code{write-file-hooks}
-except that switching to a new major mode clears it back to @code{nil}.
-Major modes should use this hook variable rather than
-@code{write-file-hooks}.
-
-@item
-The hook @code{after-save-hook} runs just after a buffer has been saved
-in its visited file.
-
-@item
-The new function @code{set-default-file-modes} sets the file protection
-for new files created with Emacs. The argument must be an integer. (It
-would be better to permit symbolic arguments like the @code{chmod}
-program, but that would take more work than this function merits.)
-
-Use the new function @code{default-file-modes} to read the current
-default file mode.
-
-@item
-Call the new function @code{unix-sync} to force all pending disk output
-to happen as soon as possible.
-@end itemize
-
-@section Making Certain File Names ``Magic''
-
-You can implement special handling for a class of file names. You must
-supply a regular expression to define the class of names (all those
-which match the regular expression), plus a handler that implements all
-the primitive Emacs file operations for file names that do match.
-
-The value of @code{file-name-handler-alist} is a list of handlers,
-together with regular expressions that decide when to apply each
-handler. Each element has the form @code{(@var{regexp}
-. @var{handler})}. If a file name matches @var{regexp}, then all work
-on that file is done by calling @var{handler}.
-
-All the Emacs primitives for file access and file name transformation
-check the given file name against @code{file-name-handler-alist}, and
-call @var{handler} to do the work if appropriate. The first argument
-given to @var{handler} is the name of the primitive; the remaining
-arguments are the arguments that were passed to that primitive. (The
-first of these arguments is typically the file name itself.) For
-example, if you do this:
-
-@example
-(file-exists-p @var{filename})
-@end example
-
-@noindent
-and @var{filename} has handler @var{handler}, then @var{handler} is
-called like this:
-
-@example
-(funcall @var{handler} 'file-exists-p @var{filename})
-@end example
-
-Here are the primitives that you can handle in this way:
-
-@quotation
-@code{add-name-to-file}, @code{copy-file}, @code{delete-directory},
-@code{delete-file}, @code{directory-file-name}, @code{directory-files},
-@code{dired-compress-file}, @code{dired-uncache},
-@code{expand-file-name}, @code{file-accessible-directory-p},
-@code{file-attributes}, @code{file-directory-p},
-@code{file-executable-p}, @code{file-exists-p}, @code{file-local-copy},
-@code{file-modes}, @code{file-name-all-completions},
-@code{file-name-as-directory}, @code{file-name-completion},
-@code{file-name-directory}, @code{file-name-nondirectory},
-@code{file-name-sans-versions}, @code{file-newer-than-file-p},
-@code{file-readable-p}, @code{file-symlink-p}, @code{file-writable-p},
-@code{insert-directory}, @code{insert-file-contents},
-@code{make-directory}, @code{make-symbolic-link}, @code{rename-file},
-@code{set-file-modes}, @code{verify-visited-file-modtime},
-@code{write-region}.
-@end quotation
-
-The handler function must handle all of the above operations, and
-possibly others to be added in the future. Therefore, it should always
-reinvoke the ordinary Lisp primitive when it receives an operation it
-does not recognize. Here's one way to do this:
-
-@smallexample
-(defun my-file-handler (primitive &rest args)
- ;; @r{First check for the specific operations}
- ;; @r{that we have special handling for.}
- (cond ((eq operation 'insert-file-contents) @dots{})
- ((eq operation 'write-region) @dots{})
- @dots{}
- ;; @r{Handle any operation we don't know about.}
- (t (let (file-name-handler-alist)
- (apply operation args)))))
-@end smallexample
-
-The function @code{file-local-copy} copies file @var{filename} to the
-local site, if it isn't there already. If @var{filename} specifies a
-``magic'' file name which programs outside Emacs cannot directly read or
-write, this copies the contents to an ordinary file and returns that
-file's name.
-
-If @var{filename} is an ordinary file name, not magic, then this function
-does nothing and returns @code{nil}.
-
-The function @code{unhandled-file-name-directory} is used to get a
-non-magic directory name from an arbitrary file name. It uses the
-directory part of the specified file name if that is not magic.
-Otherwise, it asks the file name's handler what to do.
-
-@section Frames
-@cindex frame
-
-Emacs now supports multiple X windows via a new data type known as a
-@dfn{frame}.
-
-A frame is a rectangle on the screen that contains one or more Emacs
-windows. Subdividing a frame works just like subdividing the screen in
-earlier versions of Emacs.
-
-@cindex terminal frame
-There are two kinds of frames: terminal frames and X window frames.
-Emacs creates one terminal frame when it starts up with no X display; it
-uses Termcap or Terminfo to display using characters. There is no way
-to create another terminal frame after startup. If Emacs has an X
-display, it does not make a terminal frame, and there is none.
-
-@cindex X window frame
-When you are using X windows, Emacs starts out with a single X window
-frame. You can create any number of X window frames using
-@code{make-frame}.
-
-Use the predicate @code{framep} to determine whether a given Lisp object
-is a frame.
-
-The function @code{redraw-frame} redisplays the entire contents of a
-given frame.
-
-@subsection Creating and Deleting Frames
-
-Use @code{make-frame} to create a new frame (supported under X Windows
-only). This is the only primitive for creating frames.
-
-@code{make-frame} takes just one argument, which is an alist
-specifying frame parameters. Any parameters not mentioned in the
-argument alist default based on the value of @code{default-frame-alist};
-parameters not specified there default from the standard X defaults file
-and X resources.
-
-When you invoke Emacs, if you specify arguments for window appearance
-and so forth, these go into @code{default-frame-alist} and that is how
-they have their effect.
-
-You can specify the parameters for the initial startup X window frame by
-setting @code{initial-frame-alist} in your @file{.emacs} file. If these
-parameters specify a separate minibuffer-only frame, and you have not
-created one, Emacs creates one for you, using the parameter values
-specified in @code{minibuffer-frame-alist}.
-
-You can specify the size and position of a frame using the frame
-parameters @code{left}, @code{top}, @code{height} and @code{width}. You
-must specify either both size parameters or neither. You must specify
-either both position parameters or neither. The geometry parameters
-that you don't specify are chosen by the window manager in its usual
-fashion.
-
-The function @code{x-parse-geometry} converts a standard X windows
-geometry string to an alist which you can use as part of the argument to
-@code{make-frame}.
-
-Use the function @code{delete-frame} to eliminate a frame. Frames are
-like buffers where deletion is concerned; a frame actually continues to
-exist as a Lisp object until it is deleted @emph{and} there are no
-references to it, but once it is deleted, it has no further effect on
-the screen.
-
-The function @code{frame-live-p} returns non-@code{nil} if the argument
-(a frame) has not been deleted.
-
-@subsection Finding All Frames
-
-The function @code{frame-list} returns a list of all the frames that have
-not been deleted. It is analogous to @code{buffer-list}. The list that
-you get is newly created, so modifying the list doesn't have any effect
-on the internals of Emacs. The function @code{visible-frame-list} returns
-the list of just the frames that are visible.
-
-@code{next-frame} lets you cycle conveniently through all the frames from an
-arbitrary starting point. Its first argument is a frame. Its second
-argument @var{minibuf} says what to do about minibuffers:
-
-@table @asis
-@item @code{nil}
-Exclude minibuffer-only frames.
-@item a window
-Consider only the frames using that particular window as their
-minibuffer.
-@item anything else
-Consider all frames.
-@end table
-
-@subsection Frames and Windows
-
-All the non-minibuffer windows in a frame are arranged in a tree of
-subdivisions; the root of this tree is available via the function
-@code{frame-root-window}. Each window is part of one and only one
-frame; you can get the frame with @code{window-frame}.
-
-At any time, exactly one window on any frame is @dfn{selected within the
-frame}. You can get the frame's current selected window with
-@code{frame-selected-window}. The significance of this designation is
-that selecting the frame selects for Emacs as a whole the window
-currently selected within that frame.
-
-Conversely, selecting a window for Emacs with @code{select-window} also
-makes that window selected within its frame.
-
-@subsection Frame Visibility
-
-A frame may be @dfn{visible}, @dfn{invisible}, or @dfn{iconified}. If
-it is invisible, it doesn't show in the screen, not even as an icon.
-You can set the visibility status of a frame with
-@code{make-frame-visible}, @code{make-frame-invisible}, and
-@code{iconify-frame}. You can examine the visibility status with
-@code{frame-visible-p}---it returns @code{t} for a visible frame,
-@code{nil} for an invisible frame, and @code{icon} for an iconified
-frame.
-
-@subsection Selected Frame
-
-At any time, one frame in Emacs is the @dfn{selected frame}. The selected
-window always resides on the selected frame.
-
-@defun selected-frame
-This function returns the selected frame.
-@end defun
-
-The X server normally directs keyboard input to the X window that the
-mouse is in. Some window managers use mouse clicks or keyboard events
-to @dfn{shift the focus} to various X windows, overriding the normal
-behavior of the server.
-
-Lisp programs can switch frames ``temporarily'' by calling the function
-@code{select-frame}. This does not override the window manager; rather,
-it escapes from the window manager's control until that control is
-somehow reasserted. The function takes one argument, a frame, and
-selects that frame. The selection lasts until the next time the user
-does something to select a different frame, or until the next time this
-function is called.
-
-Emacs cooperates with the X server and the window managers by arranging
-to select frames according to what the server and window manager ask
-for. It does so by generating a special kind of input event, called a
-@dfn{focus} event. The command loop handles a focus event by calling
-@code{internal-select-frame}. @xref{Focus Events}.
-
-@subsection Frame Size and Position
-
-The new functions @code{frame-height} and @code{frame-width} return the
-height and width of a specified frame (or of the selected frame),
-measured in characters.
-
-The new functions @code{frame-pixel-height} and @code{frame-pixel-width}
-return the height and width of a specified frame (or of the selected
-frame), measured in pixels.
-
-The new functions @code{frame-char-height} and @code{frame-char-width}
-return the height and width of a character in a specified frame (or in
-the selected frame), measured in pixels.
-
-@code{set-frame-size} sets the size of a frame, measured in characters;
-its arguments are @var{frame}, @var{cols} and @var{rows}. To set the
-size with values measured in pixels, you can use
-@code{modify-frame-parameters}.
-
-The function @code{set-frame-position} sets the position of the top left
-corner of a frame. Its arguments are @var{frame}, @var{left} and
-@var{top}.
-
-@ignore
-New functions @code{set-frame-height} and @code{set-frame-width} set the
-size of a specified frame. The frame is the first argument; the size is
-the second.
-@end ignore
-
-@subsection Frame Parameters
-
-A frame has many parameters that affect how it displays. Use the
-function @code{frame-parameters} to get an alist of all the parameters
-of a given frame. To alter parameters, use
-@code{modify-frame-parameters}, which takes two arguments: the frame to
-modify, and an alist of parameters to change and their new values. Each
-element of @var{alist} has the form @code{(@var{parm} . @var{value})},
-where @var{parm} is a symbol. Parameters that aren't meaningful are
-ignored. If you don't mention a parameter in @var{alist}, its value
-doesn't change.
-
-Just what parameters a frame has depends on what display mechanism it
-uses. Here is a table of the parameters of an X
-window frame:
-
-@table @code
-@item name
-The name of the frame.
-
-@item left
-The screen position of the left edge.
-
-@item top
-The screen position of the top edge.
-
-@item height
-The height of the frame contents, in pixels.
-
-@item width
-The width of the frame contents, in pixels.
-
-@item window-id
-The number of the X window for the frame.
-
-@item minibuffer
-Whether this frame has its own minibuffer.
-@code{t} means yes, @code{none} means no,
-@code{only} means this frame is just a minibuffer,
-a minibuffer window (in some other frame)
-means the new frame uses that minibuffer.
-
-@item font
-The name of the font for the text.
-
-@item foreground-color
-The color to use for the inside of a character.
-Use strings to designate colors;
-X windows defines the meaningful color names.
-
-@item background-color
-The color to use for the background of text.
-
-@item mouse-color
-The color for the mouse cursor.
-
-@item cursor-color
-The color for the cursor that shows point.
-
-@item border-color
-The color for the border of the frame.
-
-@item cursor-type
-The way to display the cursor. There are two legitimate values:
-@code{bar} and @code{box}. The value @code{bar} specifies a vertical
-bar between characters as the cursor. The value @code{box} specifies an
-ordinary black box overlaying the character after point; that is the
-default.
-
-@item icon-type
-Non-@code{nil} for a bitmap icon, @code{nil} for a text icon.
-
-@item border-width
-The width in pixels of the window border.
-
-@item internal-border-width
-The distance in pixels between text and border.
-
-@item auto-raise
-Non-@code{nil} means selecting the frame raises it.
-
-@item auto-lower
-Non-@code{nil} means deselecting the frame lowers it.
-
-@item vertical-scrollbar
-Non-@code{nil} gives the frame a scroll bar
-for vertical scrolling.
-
-@item horizontal-scrollbar
-Non-@code{nil} gives the frame a scroll bar
-for horizontal scrolling.
-@end table
-
-@subsection Minibufferless Frames
-
-Normally, each frame has its own minibuffer window at the bottom, which
-is used whenever that frame is selected. However, you can also create
-frames with no minibuffers. These frames must use the minibuffer window
-of some other frame.
-
-The variable @code{default-minibuffer-frame} specifies where to find a
-minibuffer for frames created without minibuffers of their own. Its
-value should be a frame which does have a minibuffer.
-
-You can also specify a minibuffer window explicitly when you create a
-frame; then @code{default-minibuffer-frame} is not used.
-
-@section X Windows Features
-
-@itemize @bullet
-@item
-The new functions @code{mouse-position} and @code{set-mouse-position} give
-access to the current position of the mouse.
-
-@code{mouse-position} returns a description of the position of the mouse.
-The value looks like @code{(@var{frame} @var{x} . @var{y})}, where @var{x}
-and @var{y} are measured in pixels relative to the top left corner of
-the inside of @var{frame}.
-
-@code{set-mouse-position} takes three arguments, @var{frame}, @var{x}
-and @var{y}, and warps the mouse cursor to that location on the screen.
-
-@item
-@code{track-mouse} is a new special form for tracking mouse motion.
-Use it in definitions of mouse clicks that want pay to attention to
-the motion of the mouse, not just where the buttons are pressed and
-released. Here is how to use it:
-
-@example
-(track-mouse @var{body}@dots{})
-@end example
-
-While @var{body} executes, mouse motion generates input events just as mouse
-clicks do. @var{body} can read them with @code{read-event} or
-@code{read-key-sequence}.
-
-@code{track-mouse} returns the value of the last form in @var{body}.
-
-The format of these events is described under ``New features for key
-bindings and input.''
-@c ???
-
-@item
-@code{x-set-selection} sets a ``selection'' in the X Windows server.
-It takes two arguments: a selection type @var{type}, and the value to
-assign to it, @var{data}. If @var{data} is @code{nil}, it means to
-clear out the selection. Otherwise, @var{data} may be a string, a
-symbol, an integer (or a cons of two integers or list of two integers),
-or a cons of two markers pointing to the same buffer. In the last case,
-the selection is considered to be the text between the markers. The
-data may also be a vector of valid non-vector selection values.
-
-Each possible @var{type} has its own selection value, which changes
-independently. The usual values of @var{type} are @code{PRIMARY} and
-@code{SECONDARY}; these are symbols with upper-case names, in accord
-with X Windows conventions. The default is @code{PRIMARY}.
-
-To get the value of the selection, call @code{x-get-selection}. This
-function accesses selections set up by Emacs and those set up by other X
-clients. It takes two optional arguments, @var{type} and
-@var{data-type}. The default for @var{type} is @code{PRIMARY}.
-
-The @var{data-type} argument specifies the form of data conversion to
-use; meaningful values include @code{TEXT}, @code{STRING},
-@code{TARGETS}, @code{LENGTH}, @code{DELETE}, @code{FILE_NAME},
-@code{CHARACTER_POSITION}, @code{LINE_NUMBER}, @code{COLUMN_NUMBER},
-@code{OWNER_OS}, @code{HOST_NAME}, @code{USER}, @code{CLASS},
-@code{NAME}, @code{ATOM}, and @code{INTEGER}. (These are symbols with
-upper-case names in accord with X Windows conventions.)
-The default for @var{data-type} is @code{STRING}.
-
-@item
-X Windows has a set of numbered @dfn{cut buffers} which can store text
-or other data being moved between applications. Use
-@code{x-get-cut-buffer} to get the contents of a cut buffer; specify the
-cut buffer number as argument. Use @code{x-set-cut-buffer} with
-argument @var{string} to store a new string into the first cut buffer
-(moving the other values down through the series of cut buffers,
-kill-ring-style).
-
-Cut buffers are considered obsolete in X Windows, but Emacs supports
-them for the sake of X clients that still use them.
-
-@item
-You can close the connection with the X Windows server with
-the function @code{x-close-current-connection}. This takes no arguments.
-
-Then you can connect to a different X Windows server with
-@code{x-open-connection}. The first argument, @var{display}, is the
-name of the display to connect to.
-
-The optional second argument @var{xrm-string} is a string of resource
-names and values, in the same format used in the @file{.Xresources}
-file. The values you specify override the resource values recorded in
-the X Windows server itself. Here's an example of what this string
-might look like:
-
-@example
-"*BorderWidth: 3\n*InternalBorder: 2\n"
-@end example
-
-@item
-A series of new functions give you information about the X server and
-the screen you are using.
-
-@table @code
-@item x-display-screens
-The number of screens associated with the current display.
-
-@item x-server-version
-The version numbers of the X server in use.
-
-@item x-server-vendor
-The vendor supporting the X server in use.
-
-@item x-display-pixel-height
-The height of this X screen in pixels.
-
-@item x-display-mm-height
-The height of this X screen in millimeters.
-
-@item x-display-pixel-width
-The width of this X screen in pixels.
-
-@item x-display-mm-width
-The width of this X screen in millimeters.
-
-@item x-display-backing-store
-The backing store capability of this screen. Values can be the symbols
-@code{always}, @code{when-mapped}, or @code{not-useful}.
-
-@item x-display-save-under
-Non-@code{nil} if this X screen supports the SaveUnder feature.
-
-@item x-display-planes
-The number of planes this display supports.
-
-@item x-display-visual-class
-The visual class for this X screen. The value is one of the symbols
-@code{static-gray}, @code{gray-scale}, @code{static-color},
-@code{pseudo-color}, @code{true-color}, and @code{direct-color}.
-
-@item x-display-color-p
-@code{t} if the X screen in use is a color screen.
-
-@item x-display-color-cells
-The number of color cells this X screen supports.
-@end table
-
-There is also a variable @code{x-no-window-manager}, whose value is
-@code{t} if no X window manager is in use.
-
-@item
-The function @code{x-synchronize} enables or disables an X Windows
-debugging mode: synchronous communication. It takes one argument,
-non-@code{nil} to enable the mode and @code{nil} to disable.
-
-In synchronous mode, Emacs waits for a response to each X protocol
-command before doing anything else. This means that errors are reported
-right away, and you can directly find the erroneous command.
-Synchronous mode is not the default because it is much slower.
-
-@item
-The function @code{x-get-resource} retrieves a resource value from the X
-Windows defaults database. Its three arguments are @var{attribute},
-@var{name} and @var{class}. It searches using a key of the form
-@samp{@var{instance}.@var{attribute}}, with class @samp{Emacs}, where
-@var{instance} is the name under which Emacs was invoked.
-
-The optional arguments @var{component} and @var{subclass} add to the key
-and the class, respectively. You must specify both of them or neither.
-If you specify them, the key is
-@samp{@var{instance}.@var{component}.@var{attribute}}, and the class is
-@samp{Emacs.@var{subclass}}.
-
-@item
-@code{x-color-display-p} returns @code{t} if you are using an X Window
-server with a color display, and @code{nil} otherwise.
-
-@c ??? Name being changed from x-defined-color.
-@code{x-color-defined-p} takes as argument a string describing a color; it
-returns @code{t} if the display supports that color. (If the color is
-@code{"black"} or @code{"white"} then even black-and-white displays
-support it.)
-
-@item
-@code{x-popup-menu} has been generalized. It now accepts a keymap as
-the @var{menu} argument. Then the menu items are the prompt strings of
-individual key bindings, and the item values are the keys which have
-those bindings.
-
-You can also supply a list of keymaps as the first argument; then each
-keymap makes one menu pane (but keymaps that don't provide any menu
-items don't appear in the menu at all).
-
-@code{x-popup-menu} also accepts a mouse button event as the
-@var{position} argument. Then it displays the menu at the location at
-which the event took place. This is convenient for mouse-invoked
-commands that pop up menus.
-
-@ignore
-@item
-x-pointer-shape, x-nontext-pointer-shape, x-mode-pointer-shape.
-@end ignore
-
-@item
-You can use the function @code{x-rebind-key} to change the sequence
-of characters generated by one of the keyboard keys. This works
-only with X Windows.
-
-The first two arguments, @var{keycode} and @var{shift-mask}, should be
-numbers representing the keyboard code and shift mask respectively.
-They specify what key to change.
-
-The third argument, @var{newstring}, is the new definition of the key.
-It is a sequence of characters that the key should produce as input.
-
-The shift mask value is a combination of bits according to this table:
-
-@table @asis
-@item 8
-Control
-@item 4
-Meta
-@item 2
-Shift
-@item 1
-Shift Lock
-@end table
-
-If you specify @code{nil} for @var{shift-mask}, then the key specified
-by @var{keycode} is redefined for all possible shift combinations.
-
-For the possible values of @var{keycode} and their meanings, see the
-file @file{/usr/lib/Xkeymap.txt}. Keep in mind that the codes in that
-file are in octal!
-
-@ignore @c Presumably this is already fixed
-NOTE: due to an X bug, this function will not take effect unless the
-user has a @file{~/.Xkeymap} file. (See the documentation for the
-@code{keycomp} program.) This problem will be fixed in X version 11.
-@end ignore
-
-The related function @code{x-rebind-keys} redefines a single keyboard
-key, specifying the behavior for each of the 16 shift masks
-independently. The first argument is @var{keycode}, as in
-@code{x-rebind-key}. The second argument @var{strings} is a list of 16
-elements, one for each possible shift mask value; each element says how
-to redefine the key @var{keycode} with the corresponding shift mask
-value. If an element is a string, it is the new definition. If an
-element is @code{nil}, the definition does not change for that shift
-mask.
-
-@item
-The function @code{x-geometry} parses a string specifying window size
-and position in the usual fashion for X windows. It returns an alist
-describing which parameters were specified, and the values that were
-given for them.
-
-The elements of the alist look like @code{(@var{parameter} .
-@var{value})}. The possible @var{parameter} values are @code{left},
-@code{top}, @code{width}, and @code{height}.
-@end itemize
-
-@section New Window Features
-
-@itemize @bullet
-@item
-The new function @code{window-at} tells you which window contains a
-given horizontal and vertical position on a specified frame. Call it
-with three arguments, like this:
-
-@example
-(window-at @var{x} @var{column} @var{frame})
-@end example
-
-The function returns the window which contains that cursor position in
-the frame @var{frame}. If you omit @var{frame}, the selected frame is
-used.
-
-@item
-The function @code{coordinates-in-window-p} takes two arguments and
-checks whether a particular frame position falls within a particular
-window.
-
-@example
-(coordinates-in-window-p @var{coordinates} @var{window})
-@end example
-
-The argument @var{coordinates} is a cons cell of this form:
-
-@example
-(@var{x} . @var{y})
-@end example
-
-@noindent
-The two coordinates are measured in characters, and count from the top
-left corner of the screen or frame.
-
-The value of the function tells you what part of the window the position
-is in. The possible values are:
-
-@table @code
-@item (@var{relx} . @var{rely})
-The coordinates are inside @var{window}. The numbers @var{relx} and
-@var{rely} are equivalent window-relative coordinates, counting from 0
-at the top left corner of the window.
-
-@item mode-line
-The coordinates are in the mode line of @var{window}.
-
-@item vertical-split
-The coordinates are in the vertical line between @var{window} and its
-neighbor to the right.
-
-@item nil
-The coordinates are not in any sense within @var{window}.
-@end table
-
-You need not specify a frame when you call
-@code{coordinates-in-window-p}, because it assumes you mean the frame
-which window @var{window} is on.
-
-@item
-The function @code{minibuffer-window} now accepts a frame as argument
-and returns the minibuffer window used for that frame. If you don't
-specify a frame, the currently selected frame is used. The minibuffer
-window may be on the frame in question, but if that frame has no
-minibuffer of its own, it uses the minibuffer window of some other
-frame, and @code{minibuffer-window} returns that window.
-
-@item
-Use @code{window-live-p} to test whether a window is still alive (that
-is, not deleted).
-
-@item
-Use @code{window-minibuffer-p} to determine whether a given window is a
-minibuffer or not. It no longer works to do this by comparing the
-window with the result of @code{(minibuffer-window)}, because there can
-be more than one minibuffer window at a time (if you have multiple
-frames).
-
-@item
-If you set the variable @code{pop-up-frames} non-@code{nil}, then the
-functions to show something ``in another window'' actually create a new
-frame for the new window. Thus, you will tend to have a frame for each
-window, and you can easily have a frame for each buffer.
-
-The value of the variable @code{pop-up-frame-function} controls how new
-frames are made. The value should be a function which takes no
-arguments and returns a frame. The default value is a function which
-creates a frame using parameters from @code{pop-up-frame-alist}.
-
-@item
-@code{display-buffer} is the basic primitive for finding a way to show a
-buffer on the screen. You can customize its behavior by storing a
-function in the variable @code{display-buffer-function}. If this
-variable is non-@code{nil}, then @code{display-buffer} calls it to do
-the work. Your function should accept two arguments, as follows:
-
-@table @var
-@item buffer
-The buffer to be displayed.
-
-@item flag
-A flag which, if non-@code{nil}, means you should find another window to
-display @var{buffer} in, even if it is already visible in the selected
-window.
-@end table
-
-The function you supply will be used by commands such as
-@code{switch-to-buffer-other-window} and @code{find-file-other-window}
-as well as for your own calls to @code{display-buffer}.
-
-@item
-@code{delete-window} now gives all of the deleted window's screen space
-to a single neighboring window. Likewise, @code{enlarge-window} takes
-space from only one neighboring window until that window disappears;
-only then does it take from another window.
-
-@item
-@code{next-window} and @code{previous-window} accept another argument,
-@var{all-frames}.
-
-These functions now take three optional arguments: @var{window},
-@var{minibuf} and @var{all-frames}. @var{window} is the window to start
-from (@code{nil} means use the selected window). @var{minibuf} says
-whether to include the minibuffer in the windows to cycle through:
-@code{t} means yes, @code{nil} means yes if it is active, and anything
-else means no.
-
-Normally, these functions cycle through all the windows in the
-selected frame, plus the minibuffer used by the selected frame even if
-it lies in some other frame.
-
-If @var{all-frames} is @code{t}, then these functions cycle through
-all the windows in all the frames that currently exist. If
-@var{all-frames} is neither @code{t} nor @code{nil}, then they limit
-themselves strictly to the windows in the selected frame, excluding the
-minibuffer in use if it lies in some other frame.
-
-@item
-The functions @code{get-lru-window} and @code{get-largest-window} now
-take an optional argument @var{all-frames}. If it is non-@code{nil},
-the functions consider all windows on all frames. Otherwise, they
-consider just the windows on the selected frame.
-
-Likewise, @code{get-buffer-window} takes an optional second argument
-@var{all-frames}.
-
-@item
-The variable @code{other-window-scroll-buffer} specifies which buffer
-@code{scroll-other-window} should scroll.
-
-@item
-You can now mark a window as ``dedicated'' to its buffer.
-Then Emacs will not try to use that window for any other buffer
-unless you explicitly request it.
-
-Use the new function @code{set-window-dedicated-p} to set the dedication
-flag of a window @var{window} to the value @var{flag}. If @var{flag} is
-@code{t}, this makes the window dedicated. If @var{flag} is
-@code{nil}, this makes the window non-dedicated.
-
-Use @code{window-dedicated-p} to examine the dedication flag of a
-specified window.
-
-@item
-The new function @code{walk-windows} cycles through all visible
-windows, calling @code{proc} once for each window with the window as
-its sole argument.
-
-The optional second argument @var{minibuf} says whether to include minibuffer
-windows. A value of @code{t} means count the minibuffer window even if
-not active. A value of @code{nil} means count it only if active. Any
-other value means not to count the minibuffer even if it is active.
-
-If the optional third argument @var{all-frames} is @code{t}, that means
-include all windows in all frames. If @var{all-frames} is @code{nil},
-it means to cycle within the selected frame, but include the minibuffer
-window (if @var{minibuf} says so) that that frame uses, even if it is on
-another frame. If @var{all-frames} is neither @code{nil} nor @code{t},
-@code{walk-windows} sticks strictly to the selected frame.
-
-@item
-The function @code{window-end} is a counterpart to @code{window-start}:
-it returns the buffer position of the end of the display in a given
-window (or the selected window).
-
-@item
-The function @code{window-configuration-p} returns non-@code{nil} when
-given an object that is a window configuration (such as is returned by
-@code{current-window-configuration}).
-@end itemize
-
-@section Display Features
-
-@itemize @bullet
-@item
-@samp{%l} as a mode line item displays the current line number.
-
-If the buffer is longer than @code{line-number-display-limit}
-characters, or if lines are too long in the viscinity of the current
-displayed text, then line number display is inhibited to save time.
-
-The default contents of the mode line include the line number if
-@code{line-number-mode} is non-@code{nil}.
-
-@item
-@code{baud-rate} is now a variable rather than a function. This is so
-you can set it to reflect the effective speed of your terminal, when the
-system doesn't accurately know the speed.
-
-@item
-You can now remove any echo area message and make the minibuffer
-visible. To do this, call @code{message} with @code{nil} as the only
-argument. This clears any existing message, and lets the current
-minibuffer contents show through. Previously, there was no reliable way
-to make sure that the minibuffer contents were visible.
-
-@item
-The variable @code{temp-buffer-show-hook} has been renamed
-@code{temp-buffer-show-function}, because its value is a single function
-(of one argument), not a normal hook.
-
-@item
-The new function @code{force-mode-line-update} causes redisplay
-of the current buffer's mode line.
-@end itemize
-
-@section Display Tables
-
-@cindex display table
-You can use the @dfn{display table} feature to control how all 256
-possible character codes display on the screen. This is useful for
-displaying European languages that have letters not in the ASCII
-character set.
-
-The display table maps each character code into a sequence of
-@dfn{glyphs}, each glyph being an image that takes up one character
-position on the screen. You can also define how to display each glyph
-on your terminal, using the @dfn{glyph table}.
-
-@subsection Display Tables
-
-Use @code{make-display-table} to create a display table. The table
-initially has @code{nil} in all elements.
-
-A display table is actually an array of 261 elements. The first 256
-elements of a display table control how to display each possible text
-character. The value should be @code{nil} or a vector (which is a
-sequence of glyphs; see below). @code{nil} as an element means to
-display that character following the usual display conventions.
-
-The remaining five elements of a display table serve special purposes
-(@code{nil} means use the default stated below):
-
-@table @asis
-@item 256
-The glyph for the end of a truncated screen line (the default for this
-is @samp{\}).
-@item 257
-The glyph for the end of a continued line (the default is @samp{$}).
-@item 258
-The glyph for the indicating an octal character code (the default is
-@samp{\}).
-@item 259
-The glyph for indicating a control characters (the default is @samp{^}).
-@item 260
-The vector of glyphs for indicating the presence of invisible lines (the
-default is @samp{...}).
-@end table
-
-Each buffer typically has its own display table. The display table for
-the current buffer is stored in @code{buffer-display-table}. (This
-variable automatically becomes local if you set it.) If this variable
-is @code{nil}, the value of @code{standard-display-table} is used in
-that buffer.
-
-Each window can have its own display table, which overrides the display
-table of the buffer it is showing.
-
-If neither the selected window nor the current buffer has a display
-table, and if @code{standard-display-table} is @code{nil}, then Emacs
-uses the usual display conventions:
-
-@itemize @bullet
-@item
-Character codes 32 through 127 map to glyph codes 32 through 127.
-@item
-Codes 0 through 31 map to sequences of two glyphs, where the first glyph
-is the ASCII code for @samp{^}.
-@item
-Character codes 128 through 255 map to sequences of four glyphs, where
-the first glyph is the ASCII code for @samp{\}, and the others represent
-digits.
-@end itemize
-
-The usual display conventions are also used for any character whose
-entry in the active display table is @code{nil}. This means that when
-you set up a display table, you need not specify explicitly what to do
-with each character, only the characters for which you want unusual
-behavior.
-
-@subsection Glyphs
-
-@cindex glyph
-A glyph stands for an image that takes up a single character position on
-the screen. A glyph is represented in Lisp as an integer.
-
-@cindex glyph table
-The meaning of each integer, as a glyph, is defined by the glyph table,
-which is the value of the variable @code{glyph-table}. It should be a
-vector; the @var{g}th element defines glyph code @var{g}. The possible
-definitions of a glyph code are:
-
-@table @var
-@item integer
-Define this glyph code as an alias for code @var{integer}.
-This is used with X windows to specify a face code.
-
-@item string
-Send the characters in @var{string} to the terminal to output
-this glyph. This alternative is not available with X Windows.
-
-@item @code{nil}
-This glyph is simple. On an ordinary terminal, the glyph code mod 256
-is the character to output. With X, the glyph code mod 256 is character
-to output, and the glyph code divided by 256 specifies the @dfn{face
-code} to use while outputting it.
-@end table
-
-Any glyph code beyond the length of the glyph table is automatically simple.
-
-A face code for X windows is the combination of a font and a color.
-Emacs uses integers to identify face codes. You can define a new face
-code with @code{(x-set-face @var{face-code} @var{font} @var{foreground}
-@var{background})}. @var{face-code} is an integer from 0 to 255; it
-specifies which face to define. The other three arguments are strings:
-@var{font} is the name of the font to use, and @var{foreground} and
-@var{background} specify the colors to use.
-
-If @code{glyph-table} is @code{nil}, then all possible glyph codes are
-simple.
-
-@subsection ISO Latin 1
-
-If you have a terminal that can handle the entire ISO Latin 1 character
-set, you can arrange to use that character set as follows:
-
-@example
-(require 'disp-table)
-(standard-display-8bit 0 255)
-@end example
-
-If you are editing buffers written in the ISO Latin 1 character set and
-your terminal doesn't handle anything but ASCII, you can load the file
-@code{iso-ascii} to set up a display table which makes the other ISO
-characters display as sequences of ASCII characters. For example, the
-character ``o with umlaut'' displays as @samp{@{"o@}}.
-
-Some European countries have terminals that don't support ISO Latin 1
-but do support the special characters for that country's language. You
-can define a display table to work one language using such terminals.
-For an example, see @file{lisp/iso-swed.el}, which handles certain
-Swedish terminals.
-
-You can load the appropriate display table for your terminal
-automatically by writing a terminal-specific Lisp file for the terminal
-type.
-
-@section New Input Event Formats
-
-Mouse clicks, mouse movements and function keys no longer appear in the
-input stream as characters; instead, other kinds of Lisp objects
-represent them as input.
-
-@itemize @bullet
-@item
-An ordinary input character event consists of a @dfn{basic code} between
-0 and 255, plus any or all of these @dfn{modifier bits}:
-
-@table @asis
-@item meta
-The 2**23 bit in the character code indicates a character
-typed with the meta key held down.
-
-@item control
-The 2**22 bit in the character code indicates a non-@sc{ASCII}
-control character.
-
-@sc{ASCII} control characters such as @kbd{C-a} have special basic
-codes of their own, so Emacs needs no special bit to indicate them.
-Thus, the code for @kbd{C-a} is just 1.
-
-But if you type a control combination not in @sc{ASCII}, such as
-@kbd{%} with the control key, the numeric value you get is the code
-for @kbd{%} plus 2**22 (assuming the terminal supports non-@sc{ASCII}
-control characters).
-
-@item shift
-The 2**21 bit in the character code indicates an @sc{ASCII} control
-character typed with the shift key held down.
-
-For letters, the basic code indicates upper versus lower case; for
-digits and punctuation, the shift key selects an entirely different
-character with a different basic code. In order to keep within
-the @sc{ASCII} character set whenever possible, Emacs avoids using
-the 2**21 bit for those characters.
-
-However, @sc{ASCII} provides no way to distinguish @kbd{C-A} from
-@kbd{C-A}, so Emacs uses the 2**21 bit in @kbd{C-A} and not in
-@kbd{C-a}.
-
-@item hyper
-The 2**20 bit in the character code indicates a character
-typed with the hyper key held down.
-
-@item super
-The 2**19 bit in the character code indicates a character
-typed with the super key held down.
-
-@item alt
-The 2**18 bit in the character code indicates a character typed with
-the alt key held down. (On some terminals, the key labeled @key{ALT}
-is actually the meta key.)
-@end table
-
-In the future, Emacs may support a larger range of basic codes. We may
-also move the modifier bits to larger bit numbers. Therefore, you
-should avoid mentioning specific bit numbers in your program. Instead,
-the way to test the modifier bits of a character is with the function
-@code{event-modifiers} (see below).
-
-@item
-Function keys are represented as symbols. The symbol's name is
-the function key's label. For example, pressing a key labeled @key{F1}
-places the symbol @code{f1} in the input stream.
-
-There are a few exceptions to the symbol naming convention:
-
-@table @asis
-@item @code{kp-add}, @code{kp-decimal}, @code{kp-divide}, @dots{}
-Keypad keys (to the right of the regular keyboard).
-@item @code{kp-0}, @code{kp-1}, @dots{}
-Keypad keys with digits.
-@item @code{kp-f1}, @code{kp-f2}, @code{kp-f3}, @code{kp-f4}
-Keypad PF keys.
-@item @code{left}, @code{up}, @code{right}, @code{down}
-Cursor arrow keys
-@end table
-
-You can use the modifier keys @key{CTRL}, @key{META}, @key{HYPER},
-@key{SUPER}, @key{ALT} and @key{SHIFT} with function keys. The way
-to represent them is with prefixes in the symbol name:
-
-@table @samp
-@item A-
-The alt modifier.
-@item C-
-The control modifier.
-@item H-
-The hyper modifier.
-@item M-
-The meta modifier.
-@item s-
-The super modifier.
-@item S-
-The shift modifier.
-@end table
-
-Thus, the symbol for the key @key{F3} with @key{META} held down is
-kbd{M-@key{F3}}. When you use more than one prefix, we recommend you
-write them in alphabetical order (though the order does not matter in
-arguments to the key-binding lookup and modification functions).
-
-@item
-Mouse events are represented as lists.
-
-If you press a mouse button and release it at the same location, this
-generates a ``click'' event. Mouse click events have this form:
-
-@example
-(@var{button-symbol}
- (@var{window} (@var{column} . @var{row})
- @var{buffer-pos} @var{timestamp}))
-@end example
-
-Here is what the elements normally mean:
-
-@table @var
-@item button-symbol
-indicates which mouse button was used. It is one of the symbols
-@code{mouse-1}, @code{mouse-2}, @dots{}, where the buttons are numbered
-numbered left to right.
-
-You can also use prefixes @samp{A-}, @samp{C-}, @samp{H-}, @samp{M-},
-@samp{S-} and @samp{s-} for modifiers alt, control, hyper, meta, shift
-and super, just as you would with function keys.
-
-@item window
-is the window in which the click occurred.
-
-@item column
-@itemx row
-are the column and row of the click, relative to the top left corner of
-@var{window}, which is @code{(0 . 0)}.
-
-@item buffer-pos
-is the buffer position of the character clicked on.
-
-@item timestamp
-is the time at which the event occurred, in milliseconds. (Since this
-value wraps around the entire range of Emacs Lisp integers in about five
-hours, it is useful only for relating the times of nearby events.)
-@end table
-
-The meanings of @var{buffer-pos}, @var{row} and @var{column} are
-somewhat different when the event location is in a special part of the
-screen, such as the mode line or a scroll bar.
-
-If the position is in the window's scroll bar, then @var{buffer-pos} is
-the symbol @code{vertical-scrollbar} or @code{horizontal-scrollbar}, and
-the pair @code{(@var{column} . @var{row})} is instead a pair
-@code{(@var{portion} . @var{whole})}, where @var{portion} is the
-distance of the click from the top or left end of the scroll bar, and
-@var{whole} is the length of the entire scroll bar.
-
-If the position is on a mode line or the vertical line separating
-@var{window} from its neighbor to the right, then @var{buffer-pos} is
-the symbol @code{mode-line} or @code{vertical-line}. In this case
-@var{row} and @var{column} do not have meaningful data.
-
-@item
-Releasing a mouse button above a different character position
-generates a ``drag'' event, which looks like this:
-
-@example
-(@var{button-symbol}
- (@var{window1} (@var{column1} . @var{row1})
- @var{buffer-pos1} @var{timestamp1})
- (@var{window2} (@var{column2} . @var{row2})
- @var{buffer-pos2} @var{timestamp2}))
-@end example
-
-The name of @var{button-symbol} contains the prefix @samp{drag-}. The
-second and third elements of the event give the starting and ending
-position of the drag.
-
-The @samp{drag-} prefix follows the modifier key prefixes such as
-@samp{C-} and @samp{M-}.
-
-If @code{read-key-sequence} receives a drag event which has no key
-binding, and the corresponding click event does have a binding, it
-changes the drag event into a click event at the drag's starting
-position. This means that you don't have to distinguish between click
-and drag events unless you want to.
-
-@item
-Click and drag events happen when you release a mouse button. Another
-kind of event happens when you press a button. It looks just like a
-click event, except that the name of @var{button-symbol} contains the
-prefix @samp{down-}. The @samp{down-} prefix follows the modifier key
-prefixes such as @samp{C-} and @samp{M-}.
-
-The function @code{read-key-sequence}, and the Emacs command loop,
-ignore any down events that don't have command bindings. This means
-that you need not worry about defining down events unless you want them
-to do something. The usual reason to define a down event is so that you
-can track mouse motion until the button is released.
-
-@item
-For example, if the user presses and releases the left mouse button over
-the same location, Emacs generates a sequence of events like this:
-
-@smallexample
-(down-mouse-1 (#<window 18 on NEWS> 2613 (0 . 38) -864320))
-(mouse-1 (#<window 18 on NEWS> 2613 (0 . 38) -864180))
-@end smallexample
-
-Or, while holding the control key down, the user might hold down the
-second mouse button, and drag the mouse from one line to the next.
-That produces two events, as shown here:
-
-@smallexample
-(C-down-mouse-2 (#<window 18 on NEWS> 3440 (0 . 27) -731219))
-(C-drag-mouse-2 (#<window 18 on NEWS> 3440 (0 . 27) -731219)
- (#<window 18 on NEWS> 3510 (0 . 28) -729648))
-@end smallexample
-
-Or, while holding down the meta and shift keys, the user might press
-the second mouse button on the window's mode line, and then drag the
-mouse into another window. That produces an event like this:
-
-@smallexample
-(M-S-down-mouse-2 (#<window 18 on NEWS> mode-line (33 . 31) -457844))
-(M-S-drag-mouse-2 (#<window 18 on NEWS> mode-line (33 . 31) -457844)
- (#<window 20 on carlton-sanskrit.tex> 161 (33 . 3)
- -453816))
-@end smallexample
-
-@item
-A key sequence that starts with a mouse click is read using the keymaps
-of the buffer in the window clicked on, not the current buffer.
-
-This does not imply that clicking in a window selects that window or its
-buffer. The execution of the command begins with no change in the
-selected window or current buffer. However, the command can switch
-windows or buffers if programmed to do so.
-
-@item
-Mouse motion events are represented by lists. During the execution of
-the body of a @code{track-mouse} form, moving the mouse generates events
-that look like this:
-
-@example
-(mouse-movement (@var{window} (@var{column} . @var{row})
- @var{buffer-pos} @var{timestamp}))
-@end example
-
-The second element of the list describes the current position of the
-mouse, just as in a mouse click event.
-
-Outside of @code{track-mouse} forms, Emacs does not generate events for
-mere motion of the mouse, and these events do not appear.
-
-@item
-Focus shifts between frames are represented by lists.
-
-When the mouse shifts temporary input focus from one frame to another,
-Emacs generates an event like this:
-
-@example
-(switch-frame @var{new-frame})
-@end example
-
-@noindent
-where @var{new-frame} is the frame switched to.
-
-In X windows, most window managers are set up so that just moving the
-mouse into a window is enough to set the focus there. As far as the
-user concern, Emacs behaves consistently with this. However, there is
-no need for the Lisp program to know about the focus change until some
-other kind of input arrives. So Emacs generates the focus event only
-when the user actually types a keyboard key or presses a mouse button in
-the new frame; just moving the mouse between frames does not generate a
-focus event.
-
-The global key map usually binds this event to the
-@code{internal-select-frame} function, so that characters typed at a
-frame apply to that frame's selected window.
-
-If the user switches frames in the middle of a key sequence, then Emacs
-delays the @code{switch-frame} event until the key sequence is over.
-For example, suppose @kbd{C-c C-a} is a key sequence in the current
-buffer's keymaps. If the user types @kbd{C-c}, moves the mouse to
-another frame, and then types @kbd{C-a}, @code{read-key-sequence}
-returns the sequence @code{"\C-c\C-a"}, and the next call to
-@code{read-event} or @code{read-key-sequence} will return the
-@code{switch-frame} event.
-@end itemize
-
-@section Working with Input Events
-
-@itemize @bullet
-@item
-Functions which work with key sequences now handle non-character
-events. Functions like @code{define-key}, @code{global-set-key}, and
-@code{local-set-key} used to accept strings representing key sequences;
-now, since events may be arbitrary lisp objects, they also accept
-vectors. The function @code{read-key-sequence} may return a string or a
-vector, depending on whether or not the sequence read contains only
-characters.
-
-List events may be represented by the symbols at their head; to bind
-clicks of the left mouse button, you need only present the symbol
-@code{mouse-1}, not an entire mouse click event. If you do put an event
-which is a list in a key sequence, only the event's head symbol is used
-in key lookups.
-
-For example, to globally bind the left mouse button to the function
-@code{mouse-set-point}, you could evaluate this:
-
-@example
-(global-set-key [mouse-1] 'mouse-set-point)
-@end example
-
-To bind the sequence @kbd{C-c @key{F1}} to the command @code{tex-view}
-in @code{tex-mode-map}, you could evaluate this:
-
-@example
-(define-key tex-mode-map [?\C-c f1] 'tex-view)
-@end example
-
-To find the binding for the function key labeled @key{NEXT} in
-@code{minibuffer-local-map}, you could evaluate this:
-
-@example
-(lookup-key minibuffer-local-map [next])
- @result{} next-history-element
-@end example
-
-If you call the function @code{read-key-sequence} and then press
-@kbd{C-x C-@key{F5}}, here is how it behaves:
-
-@example
-(read-key-sequence "Press `C-x C-F5': ")
- @result{} [24 C-f5]
-@end example
-
-Note that @samp{24} is the character @kbd{C-x}.
-
-@item
-The documentation functions (@code{single-key-description},
-@code{key-description}, etc.) now handle the new event types. Wherever
-a string of keyboard input characters was acceptable in previous
-versions of Emacs, a vector of events should now work.
-
-@item
-Special parts of a window can have their own bindings for mouse events.
-
-When mouse events occur in special parts of a window, such as a mode
-line or a scroll bar, the event itself shows nothing special---only the
-symbol that would normally represent that mouse button and modifier
-keys. The information about the screen region is kept in other parts
-of the event list. But @code{read-key-sequence} translates this
-information into imaginary prefix keys, all of which are symbols:
-@code{mode-line}, @code{vertical-line}, @code{horizontal-scrollbar} and
-@code{vertical-scrollbar}.
-
-For example, if you call @code{read-key-sequence} and then click the
-mouse on the window's mode line, this is what happens:
-
-@smallexample
-(read-key-sequence "Click on the mode line: ")
- @result{} [mode-line (mouse-1 (#<window 6 on NEWS> mode-line
- (40 . 63) 5959987))]
-@end smallexample
-
-You can define meanings for mouse clicks in special window regions by
-defining key sequences using these imaginary prefix keys. For example,
-here is how to bind the third mouse button on a window's mode line
-delete the window:
-
-@example
-(global-set-key [mode-line mouse-3] 'mouse-delete-window)
-@end example
-
-Here's how to bind the middle button (modified by @key{META}) on the
-vertical line at the right of a window to scroll the window to the
-left.
-
-@example
-(global-set-key [vertical-line M-mouse-2] 'scroll-left)
-@end example
-
-@item
-Decomposing an event symbol.
-
-Each symbol used to identify a function key or mouse button has a
-property named @code{event-symbol-elements}, which is a list containing
-an unmodified version of the symbol, followed by modifiers the symbol
-name contains. The modifiers are symbols; they include @code{shift},
-@code{control}, and @code{meta}. In addition, a mouse event symbol has
-one of @code{click}, @code{drag}, and @code{down}. For example:
-
-@example
-(get 'f5 'event-symbol-elements)
- @result{} (f5)
-(get 'C-f5 'event-symbol-elements)
- @result{} (f5 control)
-(get 'M-S-f5 'event-symbol-elements)
- @result{} (f5 meta shift)
-(get 'mouse-1 'event-symbol-elements)
- @result{} (mouse-1 click)
-(get 'down-mouse-1 'event-symbol-elements)
- @result{} (mouse-1 down)
-@end example
-
-Note that the @code{event-symbol-elements} property for a mouse click
-explicitly contains @code{click}, but the event symbol name itself does
-not contain @samp{click}.
-
-@item
-Use @code{read-event} to read input if you want to accept any kind of
-event. The old function @code{read-char} now discards events other than
-keyboard characters.
-
-@item
-@code{last-command-char} and @code{last-input-char} can now hold any
-kind of event.
-
-@item
-The new variable @code{unread-command-events} is much like
-@code{unread-command-char}. Its value is a list of events of any type,
-to be processed as command input in order of appearance in the list.
-
-@item
-The function @code{this-command-keys} may return a string or a vector,
-depending on whether or not the sequence read contains only characters.
-You may need to upgrade code which uses this function.
-
-The function @code{recent-keys} now returns a vector of events.
-You may need to upgrade code which uses this function.
-
-@item
-A keyboard macro's definition can now be either a string or a vector.
-All that really matters is what elements it has. If the elements are
-all characters, then the macro can be a string; otherwise, it has to be
-a vector.
-
-@item
-The variable @code{last-event-frame} records which frame the last input
-event was directed to. Usually this is the frame that was selected when
-the event was generated, but if that frame has redirected input focus to
-another frame, @code{last-event-frame} is the frame to which the event
-was redirected.
-
-@item
-The interactive specification now allows a new code letter @samp{e} to
-simplify commands bound to events which are lists. This code supplies
-as an argument the complete event object.
-
-You can use @samp{e} more than once in a single command's interactive
-specification. If the key sequence which invoked the command has
-@var{n} events with parameters, the @var{n}th @samp{e} provides the
-@var{n}th parameterized event. Events which are not lists, such as
-function keys and ASCII keystrokes, do not count where @samp{e} is
-concerned.
-
-@item
-You can extract the starting and ending position values from a mouse
-button or motion event using the two functions @code{event-start} and
-@code{event-end}. These two functions return different values for drag
-and motion events; for click and button-down events, they both return
-the position of the event.
-
-@item
-The position, a returned by @code{event-start} and @code{event-end}, is
-a list of this form:
-
-@example
-(@var{window} @var{buffer-position} (@var{col} . @var{row}) @var{timestamp})
-@end example
-
-You can extract parts of this list with the functions
-@code{posn-window}, @code{posn-point}, @code{posn-col-row}, and
-@code{posn-timestamp}.
-
-@item
-The function @code{scroll-bar-scale} is useful for computing where to
-scroll to in response to a mouse button event from a scroll bar. It
-takes two arguments, @var{ratio} and @var{total}, and in effect
-multiplies them. We say ``in effect'' because @var{ratio} is not a
-number; rather a pair @code{(@var{num} . @var{denom}).
-
-Here's the usual way to use @code{scroll-bar-scale}:
-
-@example
-(scroll-bar-scale (posn-col-row (event-start event))
- (buffer-size))
-@end example
-@end itemize
-
-@section Putting Keyboard Events in Strings
-
- In most of the places where strings are used, we conceptualize the
-string as containing text characters---the same kind of characters found
-in buffers or files. Occasionally Lisp programs use strings which
-conceptually contain keyboard characters; for example, they may be key
-sequences or keyboard macro definitions. There are special rules for
-how to put keyboard characters into a string, because they are not
-limited to the range of 0 to 255 as text characters are.
-
- A keyboard character typed using the @key{META} key is called a
-@dfn{meta character}. The numeric code for such an event includes the
-2**23 bit; it does not even come close to fitting in a string. However,
-earlier Emacs versions used a different representation for these
-characters, which gave them codes in the range of 128 to 255. That did
-fit in a string, and many Lisp programs contain string constants that
-use @samp{\M-} to express meta characters, especially as the argument to
-@code{define-key} and similar functions.
-
- We provide backward compatibility to run those programs with special
-rules for how to put a keyboard character event in a string. Here are
-the rules:
-
-@itemize @bullet
-@item
-If the keyboard event value is in the range of 0 to 127, it can go in the
-string unchanged.
-
-@item
-The meta variants of those events, with codes in the range of 2**23 to
-2**23+127, can also go in the string, but you must change their numeric
-values. You must set the 2**7 bit instead of the 2**23 bit, resulting
-in a value between 128 and 255.
-
-@item
-Other keyboard character events cannot fit in a string. This includes
-keyboard events in the range of 128 to 255.
-@end itemize
-
- Functions such as @code{read-key-sequence} that can construct strings
-containing events follow these rules.
-
- When you use the read syntax @samp{\M-} in a string, it produces a
-code in the range of 128 to 255---the same code that you get if you
-modify the corresponding keyboard event to put it in the string. Thus,
-meta events in strings work consistently regardless of how they get into
-the strings.
-
- New programs can avoid dealing with these rules by using vectors
-instead of strings for key sequences when there is any possibility that
-these issues might arise.
-
- The reason we changed the representation of meta characters as
-keyboard events is to make room for basic character codes beyond 127,
-and support meta variants of such larger character codes.
-
-@section Menus
-
-You can now define menus conveniently as keymaps. Menus are normally
-used with the mouse, but they can work with the keyboard also.
-
-@subsection Defining Menus
-
-A keymap is suitable for menu use if it has an @dfn{overall prompt
-string}, which is a string that appears as an element of the keymap. It
-should describes the purpose of the menu. The easiest way to construct
-a keymap with a prompt string is to specify the string as an argument
-when you run @code{make-keymap} or @code{make-sparse-keymap}.
-
-The individual bindings in the menu keymap should also have prompt
-strings; these strings are the items in the menu. A binding with a
-prompt string looks like this:
-
-@example
-(@var{char} @var{string} . @var{real-binding})
-@end example
-
-As far as @code{define-key} is concerned, the string is part of the
-character's binding---the binding looks like this:
-
-@example
-(@var{string} . @var{real-binding}).
-@end example
-
-However, only @var{real-binding} is used for executing the key.
-
-You can also supply a second string, called the help string, as follows:
-
-@example
-(@var{char} @var{string} @var{help-string} . @var{real-binding})
-@end example
-
-Currently Emacs does not actually use @var{help-string}; it knows only
-how to ignore @var{help-string} in order to extract @var{real-binding}.
-In the future we hope to make @var{help-string} serve as longer
-documentation for the menu item, available on request.
-
-The prompt string for a binding should be short---one or two words. Its
-meaning should describe the command it corresponds to.
-
-If @var{real-binding} is @code{nil}, then @var{string} appears in the
-menu but cannot be selected.
-
-If @var{real-binding} is a symbol, and has a non-@code{nil}
-@code{menu-enable} property, that property is an expression which
-controls whether the menu item is enabled. Every time the keymap is
-used to display a menu, Emacs evaluates the expression, and it enables
-the menu item only if the expression's value is non-@code{nil}. When a
-menu item is disabled, it is displayed in a ``fuzzy'' fashion, and
-cannot be selected with the mouse.
-
-@subsection Menus and the Mouse
-
-The way to make a menu keymap produce a menu is to make it the
-definition of a prefix key.
-
-When the prefix key ends with a mouse event, Emacs handles the menu
-keymap by popping up a visible menu that you can select from with the
-mouse. When you click on a menu item, the event generated is whatever
-character or symbol has the binding which brought about that menu item.
-
-A single keymap can appear as multiple panes, if you explicitly
-arrange for this. The way to do this is to make a keymap for each
-pane, then create a binding for each of those maps in the main keymap
-of the menu. Give each of these bindings a prompt string that starts
-with @samp{@@}. The rest of the prompt string becomes the name of the
-pane. See the file @file{lisp/mouse.el} for an example of this. Any
-ordinary bindings with prompt strings are grouped into one pane, which
-appears along with the other panes explicitly created for the
-submaps.
-
-You can also get multiple panes from separate keymaps. The full
-definition of a prefix key always comes from merging the definitions
-supplied by the various active keymaps (minor modes, local, and
-global). When more than one of these keymaps is a menu, each of them
-makes a separate pane or panes.
-
-@subsection Menus and the Keyboard
-
-When a prefix key ending with a keyboard event (a character or function
-key) has a definition that is a menu keymap, you can use the keyboard
-to choose a menu item.
-
-Emacs displays the menu alternatives in the echo area. If they don't
-all fit at once, type @key{SPC} to see the next line of alternatives.
-If you keep typing @key{SPC}, you eventually get to the end of the menu
-and then cycle around to the beginning again.
-
-When you have found the alternative you want, type the corresponding
-character---the one whose binding is that alternative.
-
-In a menu intended for keyboard use, each menu item must clearly
-indicate what character to type. The best convention to use is to make
-the character the first letter of the menu item prompt string. That is
-something users will understand without being told.
-
-@subsection The Menu Bar
-
- Under X Windows, each frame can have a @dfn{menu bar}---a permanently
-displayed menu stretching horizontally across the top of the frame. The
-items of the menu bar are the subcommands of the fake ``function key''
-@code{menu-bar}, as defined by all the active keymaps.
-
- To add an item to the menu bar, invent a fake ``function key'' of your
-own (let's call it @var{key}), and make a binding for the key sequence
-@code{[menu-bar @var{key}]}. Most often, the binding is a menu keymap,
-so that pressing a button on the menu bar item leads to another menu.
-
- In order for a frame to display a menu bar, its @code{menu-bar-lines}
-property must be greater than zero. Emacs uses just one line for the
-menu bar itself; if you specify more than one line, the other lines
-serve to separate the menu bar from the windows in the frame. We
-recommend you try one or two as the @code{menu-bar-lines} value.
-
-@section Keymaps
-
-@itemize @bullet
-@item
-The representation of keymaps has changed to support the new event
-types. All keymaps now have the form @code{(keymap @var{element}
-@var{element} @dots{})}. Each @var{element} takes one of the following
-forms:
-
-@table @asis
-@item @var{prompt-string}
-A string as an element of the keymap marks the keymap as a menu, and
-serves as the overal prompt string for it.
-
-@item @code{(@var{key} . @var{binding})}
-A cons cell binds @var{key} to @var{definition}. Here @var{key} may be
-any sort of event head---a character, a function key symbol, or a mouse
-button symbol.
-
-@item @var{vector}
-A vector of 128 elements binds all the ASCII characters; the @var{n}th
-element holds the binding for character number @var{n}.
-
-@item @code{(t . @var{binding})}
-A cons cell whose @sc{car} is @code{t} is a default binding; anything
-not bound by previous keymap elements is given @var{binding} as its
-binding.
-
-Default bindings are important because they allow a keymap to bind all
-possible events without having to enumerate all the possible function
-keys and mouse clicks, with all possible modifier prefixes.
-
-The function @code{lookup-key} (and likewise other functions for
-examining a key binding) normally report only explicit bindings of the
-specified key sequence; if there is none, they return @code{nil}, even
-if there is a default binding that would apply to that key sequence if
-it were actually typed in. However, these functions now take an
-optional argument @var{accept-defaults} which, if non-@code{nil}, says
-to consider default bindings.
-
-Note that if a vector in the keymap binds an ASCII character to
-@code{nil} (thus making it ``unbound''), the default binding does not
-apply to the character. Think of the vector element as an explicit
-binding of @code{nil}.
-
-Note also that if the keymap for a minor or major mode contains a
-default binding, it completely masks out any lower-priority keymaps.
-@end table
-
-@item
-A keymap can now inherit from another keymap. Do do this, make the
-latter keymap the ``tail'' of the new one. Such a keymap looks like
-this:
-
-@example
-(keymap @var{bindings}@dots{} . @var{other-keymap})
-@end example
-
-The effect is that this keymap inherits all the bindings of
-@var{other-keymap}, but can add to them or override them with
-@var{bindings}. Subsequent changes in the bindings of
-@var{other-keymap} @emph{do} affect this keymap.
-
-For example,
-
-@example
-(setq my-mode-map (cons 'keymap text-mode-map))
-@end example
-
-@noindent
-makes a keymap that by default inherits all the bindings of Text
-mode---whatever they may be at the time a key is looked up. Any
-bindings made explicitly in @code{my-mode-map} override the bindings
-inherited from Text mode, however.
-
-@item
-Minor modes can now have local keymaps. Thus, a key can act a special
-way when a minor mode is in effect, and then revert to the major mode or
-global definition when the minor mode is no longer in effect. The
-precedence of keymaps is now: minor modes (in no particular order), then
-major mode, and lastly the global map.
-
-The new @code{current-minor-mode-maps} function returns a list of all
-the keymaps of currently enabled minor modes, in the other that they
-apply.
-
-To set up a keymap for a minor mode, add an element to the alist
-@code{minor-mode-map-alist}. Its elements look like this:
-
-@example
-(@var{symbol} . @var{keymap})
-@end example
-
-The keymap @var{keymap} is active whenever @var{symbol} has a
-non-@code{nil} value. Use for @var{symbol} the variable which indicates
-whether the minor mode is enabled.
-
-When more than one minor mode keymap is active, their order of
-precedence is the order of @code{minor-mode-map-alist}. But you should
-design minor modes so that they don't interfere with each other, and if
-you do this properly, the order will not matter.
-
-The function @code{minor-mode-key-binding} returns a list of all the
-active minor mode bindings of @var{key}. More precisely, it returns an
-alist of pairs @code{(@var{modename} . @var{binding})}, where
-@var{modename} is the the variable which enables the minor mode, and
-@var{binding} is @var{key}'s definition in that mode. If @var{key} has
-no minor-mode bindings, the value is @code{nil}.
-
-If the first binding is a non-prefix, all subsequent bindings from other
-minor modes are omitted, since they would be completely shadowed.
-Similarly, the list omits non-prefix bindings that follow prefix
-bindings.
-
-@item
-The new function @code{copy-keymap} copies a keymap, producing a new
-keymap with the same key bindings in it. If the keymap contains other
-keymaps directly, these subkeymaps are copied recursively.
-
-If you want to, you can define a prefix key with a binding that is a
-symbol whose function definition is another keymap. In this case,
-@code{copy-keymap} does not look past the symbol; it doesn't copy the
-keymap inside the symbol.
-
-@item
-@code{substitute-key-definition} now accepts an optional fourth
-argument, which is a keymap to use as a template.
-
-@example
-(substitute-key-definition olddef newdef keymap oldmap)
-@end example
-
-@noindent
-finds all characters defined in @var{oldmap} as @var{olddef},
-and defines them in @var{keymap} as @var{newdef}.
-
-In addition, this function now operates recursively on the keymaps that
-define prefix keys within @var{keymap} and @var{oldmap}.
-@end itemize
-
-@section Minibuffer Features
-
-The minibuffer input functions @code{read-from-minibuffer} and
-@code{completing-read} have new features.
-
-@subsection Minibuffer History
-
-A new optional argument @var{hist} specifies which history list to use.
-If you specify a variable (a symbol), that variable is the history
-list. If you specify a cons cell @code{(@var{variable}
-. @var{startpos})}, then @var{variable} is the history list variable,
-and @var{startpos} specifies the initial history position (an integer,
-counting from zero which specifies the most recent element of the
-history).
-
-If you specify @var{startpos}, then you should also specify that element
-of the history as @var{initial-input}, for consistency.
-
-If you don't specify @var{hist}, then the default history list
-@code{minibuffer-history} is used. Other standard history lists that
-you can use when appropriate include @code{query-replace-history},
-@code{command-history}, and @code{file-name-history}.
-
-The value of the history list variable is a list of strings, most recent
-first. You should set a history list variable to @code{nil} before
-using it for the first time.
-
-@code{read-from-minibuffer} and @code{completing-read} add new elements
-to the history list automatically, and provide commands to allow the
-user to reuse items on the list. The only thing your program needs to
-do to use a history list is to initialize it and to pass its name to the
-input functions when you wish. But it is safe to modify the list by
-hand when the minibuffer input functions are not using it.
-
-@subsection Other Minibuffer Features
-
-The @var{initial} argument to @code{read-from-minibufer} and other
-minibuffer input functions can now be a cons cell @code{(@var{string}
-. @var{position})}. This means to start off with @var{string} in the
-minibuffer, but put the cursor @var{position} characters from the
-beginning, rather than at the end.
-
-In @code{read-no-blanks-input}, the @var{initial} argument is now
-optional; if it is omitted, the initial input string is the empty
-string.
-
-@section New Features for Defining Commands
-
-@itemize @bullet
-@item
-If the interactive specification begins with @samp{@@}, this means to
-select the window under the mouse. This selection takes place before
-doing anything else with the command.
-
-You can use both @samp{@@} and @samp{*} together in one command; they
-are processed in order of appearance.
-
-@item
-Prompts in an interactive specification can incorporate the values of
-the preceding arguments. Emacs replaces @samp{%}-sequences (as used
-with the @code{format} function) in the prompt with the interactive
-arguments that have been read so far. For example, a command with this
-interactive specification
-
-@example
-(interactive "sReplace: \nsReplace %s with: ")
-@end example
-
-@noindent
-prompts for the first argument with @samp{Replace: }, and then prompts
-for the second argument with @samp{Replace @var{foo} with: }, where
-@var{foo} is the string read as the first argument.
-
-@item
-If a command name has a property @code{enable-recursive-minibuffers}
-which is non-@code{nil}, then the command can use the minibuffer to read
-arguments even if it is invoked from the minibuffer. The minibuffer
-command @code{next-matching-history-element} (normally bound to
-@kbd{M-s} in the minibuffer) uses this feature.
-@end itemize
-
-@section New Features for Reading Input
-
-@itemize @bullet
-@item
-The function @code{set-input-mode} now takes four arguments. The last
-argument is optional. Their names are @var{interrupt}, @var{flow},
-@var{meta} and @var{quit}.
-
-The argument @var{interrupt} says whether to use interrupt-driven
-input. Non-@code{nil} means yes, and @code{nil} means no (use CBREAK
-mode).
-
-The argument @var{flow} says whether to enable terminal flow control.
-Non-@code{nil} means yes.
-
-The argument @var{meta} says whether to enable the use of a Meta key.
-Non-@code{nil} means yes.
-
-If @var{quit} non-@code{nil}, it is the character to use for quitting.
-(Normally this is @kbd{C-g}.)
-
-@item
-The variable @code{meta-flag} has been deleted; use
-@code{set-input-mode} to enable or disable support for a @key{META}
-key. This change was made because @code{set-input-mode} can send the
-terminal the appropriate commands to enable or disable operation of the
-@key{META} key.
-
-@item
-The new variable @code{extra-keyboard-modifiers} lets Lisp programs
-``press'' the modifier keys on the keyboard.
-The value is a bit mask:
-
-@table @asis
-@item 1
-The @key{SHIFT} key.
-@item 2
-The @key{LOCK} key.
-@item 4
-The @key{CTL} key.
-@item 8
-The @key{META} key.
-@end table
-
-When you use X windows, the program can press any of the modifier keys
-in this way. Otherwise, only the @key{CTL} and @key{META} keys can be
-virtually pressed.
-
-@item
-You can use the new function @code{keyboard-translate} to set up
-@code{keyboard-translate-table} conveniently.
-
-@item
-Y-or-n questions using the @code{y-or-n-p} function now accept @kbd{C-]}
-(usually mapped to @code{abort-recursive-edit}) as well as @kbd{C-g} to
-quit.
-
-@item
-The variable @code{num-input-keys} is the total number of key sequences
-that the user has typed during this Emacs session.
-
-@item
-A new Lisp variable, @code{function-key-map}, holds a keymap which
-describes the character sequences sent by function keys on an ordinary
-character terminal. This uses the same keymap data structure that is
-used to hold bindings of key sequences, but it has a different meaning:
-it specifies translations to make while reading a key sequence.
-
-If @code{function-key-map} ``binds'' a key sequence @var{k} to a vector
-@var{v}, then when @var{k} appears as a subsequence @emph{anywhere} in a
-key sequence, it is replaced with @var{v}.
-
-For example, VT100 terminals send @kbd{@key{ESC} O P} when the ``keypad''
-PF1 key is pressed. Thus, on a VT100, @code{function-key-map} should
-``bind'' that sequence to @code{[pf1]}. This specifies translation of
-@kbd{@key{ESC} O P} into @key{PF1} anywhere in a key sequence.
-
-Thus, typing @kbd{C-c @key{PF1}} sends the character sequence @kbd{C-c
-@key{ESC} O P}, but @code{read-key-sequence} translates this back into
-@kbd{C-c @key{PF1}}, which it returns as the vector @code{[?\C-c PF1]}.
-
-Entries in @code{function-key-map} are ignored if they conflict with
-bindings made in the minor mode, local, or global keymaps.
-
-The value of @code{function-key-map} is usually set up automatically
-according to the terminal's Terminfo or Termcap entry, and the
-terminal-specific Lisp files. Emacs comes with a number of
-terminal-specific files for many common terminals; their main purpose is
-to make entries in @code{function-key-map} beyond those that can be
-deduced from Termcap and Terminfo.
-
-@item
-The variable @code{key-translation-map} works like @code{function-key-map}
-except for two things:
-
-@itemize @bullet
-@item
-@code{key-translation-map} goes to work after @code{function-key-map} is
-finished; it receives the results of translation by
-@code{function-key-map}.
-
-@item
-@code{key-translation-map} overrides actual key bindings.
-@end itemize
-
-The intent of @code{key-translation-map} is for users to map one
-character set to another, including ordinary characters normally bound
-to @code{self-insert-command}.
-@end itemize
-
-@section New Syntax Table Features
-
-@itemize @bullet
-@item
-You can use two new functions to move across characters in certain
-syntax classes.
-
-@code{skip-syntax-forward} moves point forward across characters whose
-syntax classes are mentioned in its first argument, a string. It stops
-when it encounters the end of the buffer, or position @var{lim} (the
-optional second argument), or a character it is not supposed to skip.
-The function @code{skip-syntax-backward} is similar but moves backward.
-
-@item
-The new function @code{forward-comment} moves point by comments. It
-takes one argument, @var{count}; it moves point forward across
-@var{count} comments (backward, if @var{count} is negative). If it
-finds anything other than a comment or whitespace, it stops, leaving
-point at the far side of the last comment found. It also stops after
-satisfying @var{count}.
-
-@item
-The new variable @code{words-include-escapes} affects the behavior of
-@code{forward-word} and everything that uses it. If it is
-non-@code{nil}, then characters in the ``escape'' and ``character
-quote'' syntax classes count as part of words.
-
-@item
-There are two new syntax flags for use in syntax tables.
-
-@itemize -
-@item
-The prefix flag.
-
-The @samp{p} flag identifies additional ``prefix characters'' in Lisp
-syntax. You can set this flag with @code{modify-syntax-entry} by
-including the letter @samp{p} in the syntax specification.
-
-These characters are treated as whitespace when they appear between
-expressions. When they appear withing an expression, they are handled
-according to their usual syntax codes.
-
-The function @code{backward-prefix-chars} moves back over these
-characters, as well as over characters whose primary syntax class is
-prefix (@samp{'}).
-
-@item
-The @samp{b} comment style flag.
-
-Emacs can now supports two comment styles simultaneously. (This is for
-the sake of C++.) More specifically, it can recognize two different
-comment-start sequences. Both must share the same first character; only
-the second character may differ. Mark the second character of the
-@samp{b}-style comment start sequence with the @samp{b} flag. You can
-set this flag with @code{modify-syntax-entry} by including the letter
-@samp{b} in the syntax specification.
-
-The two styles of comment can have different comment-end sequences. A
-comment-end sequence (one or two characters) applies to the @samp{b}
-style if its first character has the @samp{b} flag set; otherwise, it
-applies to the @samp{a} style.
-
-The appropriate comment syntax settings for C++ are as follows:
-
-@table @asis
-@item @samp{/}
-@samp{124b}
-@item @samp{*}
-@samp{23}
-@item newline
-@samp{>b}
-@end table
-
-Thus @samp{/*} is a comment-start sequence for @samp{a} style, @samp{//}
-is a comment-start sequence for @samp{b} style, @samp{*/} is a
-comment-end sequence for @samp{a} style, and newline is a comment-end
-sequence for @samp{b} style.
-@end itemize
-@end itemize
-
-@section The Case Table
-
-You can customize case conversion using the new case table feature. A
-case table is a collection of strings that specifies the mapping between
-upper case and lower case letters. Each buffer has its own case table.
-You need a case table if you are using a language which has letters that
-are not standard ASCII letters.
-
-A case table is a list of this form:
-
-@example
-(@var{downcase} @var{upcase} @var{canonicalize} @var{equivalences})
-@end example
-
-@noindent
-where each element is either @code{nil} or a string of length 256. The
-element @var{downcase} says how to map each character to its lower-case
-equivalent. The element @var{upcase} maps each character to its
-upper-case equivalent. If lower and upper case characters are in 1-1
-correspondence, use @code{nil} for @var{upcase}; then Emacs deduces the
-upcase table from @var{downcase}.
-
-For some languages, upper and lower case letters are not in 1-1
-correspondence. There may be two different lower case letters with the
-same upper case equivalent. In these cases, you need to specify the
-maps for both directions.
-
-The element @var{canonicalize} maps each character to a canonical
-equivalent; any two characters that are related by case-conversion have
-the same canonical equivalent character.
-
-The element @var{equivalences} is a map that cyclicly permutes each
-equivalence class (of characters with the same canonical equivalent).
-
-You can provide @code{nil} for both @var{canonicalize} and
-@var{equivalences}, in which case both are deduced from @var{downcase}
-and @var{upcase}.
-
-Here are the functions for working with case tables:
-
-@code{case-table-p} is a predicate that says whether a Lisp object is a
-valid case table.
-
-@code{set-standard-case-table} takes one argument and makes that
-argument the case table for new buffers created subsequently.
-@code{standard-case-table} returns the current value of the new buffer
-case table.
-
-@code{current-case-table} returns the case table of the current buffer.
-@code{set-case-table} sets the current buffer's case table to the
-argument.
-
-@code{set-case-syntax-pair} is a convenient function for specifying a
-pair of letters, upper case and lower case. Call it with two arguments,
-the upper case letter and the lower case letter. It modifies the
-standard case table and a few syntax tables that are predefined in
-Emacs. This function is intended as a subroutine for packages that
-define non-ASCII character sets.
-
-Load the library @file{iso-syntax} to set up the syntax and case table for
-the 256 bit ISO Latin 1 character set.
-
-@section New Features for Dealing with Buffers
-
-@itemize @bullet
-@item
-The new function @code{buffer-modified-tick} returns a buffer's
-modification-count that ticks every time the buffer is modified. It
-takes one optional argument, which is the buffer you want to examine.
-If the argument is @code{nil} (or omitted), the current buffer is used.
-
-@item
-@code{buffer-disable-undo} is a new name for the function
-formerly known as @code{buffer-flush-undo}. This turns off recording
-of undo information in the buffer given as argument.
-
-@item
-The new function @code{generate-new-buffer-name} chooses a name that
-would be unique for a new buffer---but does not create the buffer. Give
-it one argument, a starting name. It produces a name not in use for a
-buffer by appending a number inside of @samp{<@dots{}>}.
-
-@item
-The function @code{rename-buffer} now takes an option second argument
-which tells it that if the specified new name corresponds to an existing
-buffer, it should use @code{generate-new-buffer-name} to modify the name
-to be unique, rather than signaling an error.
-
-@code{rename-buffer} now returns the name to which the buffer was
-renamed.
-
-@item
-The function @code{list-buffers} now looks at the local variable
-@code{list-buffers-directory} in each non-file-visiting buffer, and
-shows its value where the file would normally go. Dired sets this
-variable in each Dired buffer, so the buffer list now shows which
-directory each Dired buffer is editing.
-
-@item
-The function @code{other-buffer} now takes an optional second argument
-@var{visible-ok} which, if non-@code{nil}, indicates that buffers
-currently being displayed in windows may be returned even if there are
-other buffers not visible. Normally, @code{other-buffer} returns a
-currently visible buffer only as a last resort, if there are no suitable
-nonvisible buffers.
-
-@item
-The hook @code{kill-buffer-hook} now runs whenever a buffer is killed.
-@end itemize
-
-@section Local Variables Features
-
-@itemize @bullet
-@item
-If a local variable name has a non-@code{nil} @code{permanent-local}
-property, then @code{kill-all-local-variables} does not kill it. Such
-local variables are ``permanent''---they remain unchanged even if you
-select a different major mode.
-
-Permanent locals are useful when they have to do with where the file
-came from or how to save it, rather than with how to edit the contents.
-
-@item
-The function @code{make-local-variable} now never changes the value of the variable
-that it makes local. If the variable had no value before, it still has
-no value after becoming local.
-
-@item
-The new function @code{default-boundp} tells you whether a variable has
-a default value (as opposed to being unbound in its default value). If
-@code{(default-boundp 'foo)} returns @code{nil}, then
-@code{(default-value 'foo)} would get an error.
-
-@code{default-boundp} is to @code{default-value} as @code{boundp} is to
-@code{symbol-value}.
-
-@item
-The special forms @code{defconst} and @code{defvar}, when the variable
-is local in the current buffer, now set the variable's default value
-rather than its local value.
-@end itemize
-
-@section New Features for Subprocesses
-
-@itemize @bullet
-@item
-@code{call-process} and @code{call-process-region} now return a value
-that indicates how the synchronous subprocess terminated. It is either
-a number, which is the exit status of a process, or a signal name
-represented as a string.
-
-@item
-@code{process-status} now returns @code{open} and @code{closed} as the
-status values for network connections.
-
-@item
-The standard asynchronous subprocess features work on VMS now,
-and the special VMS asynchronous subprocess functions have been deleted.
-
-@item
-You can use the transaction queue feature for more convenient
-communication with subprocesses using transactions.
-
-Call @code{tq-create} to create a transaction queue communicating with a
-specified process. Then you can call @code{tq-enqueue} to send a
-transaction. @code{tq-enqueue} takes these five arguments:
-
-@example
-(tq-enqueue @var{tq} @var{question} @var{regexp} @var{closure} @var{fn})
-@end example
-
-@var{tq} is the queue to use. (Specifying the queue has the effect of
-specifying the process to talk to.) The argument @var{question} is the
-outgoing message which starts the transaction. The argument @var{fn} is
-the function to call when the corresponding answer comes back; it is
-called with two arguments: @var{closure}, and the answer received.
-
-The argument @var{regexp} is a regular expression to match the entire
-answer; that's how @code{tq-enqueue} tells where the answer ends.
-
-Call @code{tq-close} to shut down a transaction queue and terminate its
-subprocess.
-
-@item
-The function @code{signal-process} sends a signal to process @var{pid},
-which need not be a child of Emacs. The second argument @var{signal}
-specifies which signal to send; it should be an integer.
-@end itemize
-
-@section New Features for Dealing with Times And Time Delays
-
-@itemize @bullet
-@item
-The new function @code{current-time} returns the system's time value as
-a list of three integers: @code{(@var{high} @var{low} @var{microsec})}.
-The integers @var{high} and @var{low} combine to give the number of
-seconds since 0:00 January 1, 1970, which is @var{high} * 2**16 +
-@var{low}.
-
-@var{microsec} gives the microseconds since the start of the current
-second (or 0 for systems that return time only on the resolution of a
-second).
-
-@item
-The function @code{current-time-string} accepts an optional argument
-@var{time-value}. If given, this specifies a time to format instead of
-the current time. The argument should be a cons cell containing two
-integers, or a list whose first two elements are integers. Thus, you
-can use times obtained from @code{current-time} (see above) and from
-@code{file-attributes}.
-
-@item
-You can now find out the user's time zone using @code{current-time-zone}.
-It takes no arguments, and returns a list of this form:
-
-@example
-(@var{offset} @var{savings-flag} @var{standard} @var{savings})
-@end example
-
-@var{offset} is an integer specifying how many minutes east of Greenwich
-the current time zone is located. A negative value means west of
-Greenwich. Note that this describes the standard time; if daylight
-savings time is in effect, it does not affect this value.
-
-@var{savings-flag} is non-@code{nil} iff daylight savings time or some other
-sort of seasonal time adjustment is in effect.
-
-@var{standard} is a string giving the name of the time zone when no
-seasonal time adjustment is in effect.
-
-@var{savings} is a string giving the name of the time zone when there is a
-seasonal time adjustment in effect.
-
-If the user has specified a region that does not use a seasonal time
-adjustment, @var{savings-flag} is always @code{nil}, and @var{standard}
-and @var{savings} are equal.
-
-@item
-@code{sit-for}, @code{sleep-for} now let you specify the time period in
-milliseconds as well as in seconds. The first argument gives the number
-of seconds, as before, and the optional second argument gives additional
-milliseconds. The time periods specified by these two arguments are
-added together.
-
-Not all systems support this; you get an error if you specify nonzero
-milliseconds and it isn't supported.
-
-@code{sit-for} also accepts an optional third argument @var{nodisp}. If
-this is non-@code{nil}, @code{sit-for} does not redisplay. It still
-waits for the specified time or until input is available.
-
-@item
-@code{accept-process-output} now accepts a timeout specified by optional
-second and third arguments. The second argument specifies the number of
-seconds, while the third specifies the number of milliseconds. The time
-periods specified by these two arguments are added together.
-
-Not all systems support this; you get an error if you specify nonzero
-milliseconds and it isn't supported.
-
-The function returns @code{nil} if the timeout expired before output
-arrived, or non-@code{nil} if it did get some output.
-
-@item
-You can set up a timer to call a function at a specified future time.
-To do so, call @code{run-at-time}, like this:
-
-@example
-(run-at-time @var{time} @var{repeat} @var{function} @var{args}@dots{})
-@end example
-
-Here, @var{time} is a string saying when to call the function. The
-argument @var{function} is the function to call later, and @var{args}
-are the arguments to give it when it is called.
-
-The argument @var{repeat} specifies how often to repeat the call. If
-@var{repeat} is @code{nil}, there are no repetitions; @var{function} is
-called just once, at @var{time}. If @var{repeat} is an integer, it
-specifies a repetition period measured in seconds.
-
-Absolute times may be specified in a wide variety of formats; The form
-@samp{@var{hour}:@var{min}:@var{sec} @var{timezone}
-@var{month}/@var{day}/@var{year}}, where all fields are numbers, works;
-the format that @code{current-time-string} returns is also allowed.
-
-To specify a relative time, use numbers followed by units.
-For example:
-
-@table @samp
-@item 1 min
-denotes 1 minute from now.
-@item 1 min 5 sec
-denotes 65 seconds from now.
-@item 1 min 2 sec 3 hour 4 day 5 week 6 fortnight 7 month 8 year
-denotes exactly 103 months, 123 days, and 10862 seconds from now.
-@end table
-
-If @var{time} is an integer, that specifies a relative time measured in
-seconds.
-@end itemize
-
-To cancel the requested future action, pass the value that @code{run-at-time}
-returned to the function @code{cancel-timer}.
-
-@section Profiling Lisp Programs
-
-You can now make execution-time profiles of Emacs Lisp programs using
-the @file{profile} library. See the file @file{profile.el} for
-instructions; if you have written a Lisp program big enough to be worth
-profiling, you can surely understand them.
-
-@section New Features for Lisp Debuggers
-
-@itemize @bullet
-@item
-You can now specify which kinds of errors should invoke the Lisp
-debugger by setting the variable @code{debug-on-error} to a list of error
-conditions. For example, if you set it to the list @code{(void-variable)},
-then only errors about a variable that has no value invoke the
-debugger.
-
-@item
-The variable @code{command-debug-status} is used by Lisp debuggers. It
-records the debugging status of current interactive command. Each time
-a command is called interactively, this variable is bound to
-@code{nil}. The debugger can set this variable to leave information for
-future debugger invocations during the same command.
-
-The advantage of this variable over some other variable in the debugger
-itself is that the data will not be visible for any other command
-invocation.
-
-@item
-The function @code{backtrace-frame} is intended for use in Lisp
-debuggers. It returns information about what a frame on the Lisp call
-stack is doing. You specify one argument, which is the number of stack
-frames to count up from the current execution point.
-
-If that stack frame has not evaluated the arguments yet (or is a special
-form), the value is @code{(nil @var{function} @var{arg-forms}@dots{})}.
-
-If that stack frame has evaluated its arguments and called its function
-already, the value is @code{(t @var{function}
-@var{arg-values}@dots{})}.
-
-In the return value, @var{function} is whatever was supplied as @sc{car}
-of evaluated list, or a @code{lambda} expression in the case of a macro
-call. If the function has a @code{&rest} argument, that is represented
-as the tail of the list @var{arg-values}.
-
-If the argument is out of range, @code{backtrace-frame} returns
-@code{nil}.
-@end itemize
-
-@ignore
-
-@item
-@code{kill-ring-save} now gives visual feedback to indicate the region
-of text being added to the kill ring. If the opposite end of the
-region is visible in the current window, the cursor blinks there.
-Otherwise, some text from the other end of the region is displayed in
-the message area.
-@end ignore
-
-@section Memory Allocation Changes
-
-The list that @code{garbage-collect} returns now has one additional
-element. This is a cons cell containing two numbers. It gives
-information about the number of used and free floating point numbers,
-much as the first element gives such information about the number of
-used and free cons cells.
-
-The new function @code{memory-limit} returns an indication of the last
-address allocated by Emacs. More precisely, it returns that address
-divided by 1024. You can use this to get a general idea of how your
-actions affect the memory usage.
-
-@section Hook Changes
-
-@itemize @bullet
-@item
-Expanding an abbrev first runs the new hook
-@code{pre-abbrev-expand-hook}.
-
-@item
-The editor command loop runs the normal hook @code{pre-command-hook}
-before each command, and runs @code{post-command-hook} after each
-command.
-
-@item
-Auto-saving runs the new hook @code{auto-save-hook} before actually
-starting to save any files.
-
-@item
-The new variable @code{revert-buffer-insert-file-contents-function}
-holds a function that @code{revert-buffer} now uses to read in the
-contents of the reverted buffer---instead of calling
-@code{insert-file-contents}.
-
-@item
-The variable @code{lisp-indent-hook} has been renamed to
-@code{lisp-indent-function}.
-
-@item
-The variable @code{auto-fill-hook} has been renamed to
-@code{auto-fill-function}.
-
-@item
-The variable @code{blink-paren-hook} has been renamed to
-@code{blink-paren-function}.
-
-@item
-The variable @code{temp-buffer-show-hook} has been renamed to
-@code{temp-buffer-show-function}.
-
-@item
-The variable @code{suspend-hook} has been renamed to
-@code{suspend-hooks}, because it is a list of functions but is not a
-normal hook.
-
-@item
-The new function @code{add-hook} provides a handy way to add a function
-to a hook variable. For example,
-
-@example
-(add-hook 'text-mode-hook 'my-text-hook-function)
-@end example
-
-@noindent
-arranges to call @code{my-text-hook-function}
-when entering Text mode or related modes.
-@end itemize
-
-@bye
diff --git a/etc/FAQ b/etc/FAQ
deleted file mode 100644
index 1d594cbf565..00000000000
--- a/etc/FAQ
+++ /dev/null
@@ -1,4469 +0,0 @@
- GNU Emacs FAQ: Introduction
-
-[To find what has changed, see the "Changes" posting.]
-
-[The FAQ post date slipped big-time this time. Now that school is over
- with and I can get on with the rest of my life, posting should become a
- lot more regular. - sbyrnes]
-
-This is the introduction to a list of frequently asked questions (FAQ) about
-GNU Emacs with answers. This article contains a listing of the questions;
-subsequent articles contain the questions and answers.
-
-The FAQ list is posted to reduce the noise level in the `gnu.emacs.help'
-newsgroup (which is also the `help-gnu-emacs' mailing list) which results from
-the repetition of frequently asked questions, wrong answers to these questions,
-corrections to the wrong answers, corrections to the corrections, debate, name
-calling, etc. Also, it serves as a repository of the canonical "best" answers
-to these questions. However, if you know a better answer or even a slight
-change that improves an answer, please tell us!
-
-If you know the answer of a question is in the FAQ list, please reply to the
-question by e-mail instead of posting. Help reduce noise!
-
-The FAQ list is crossposted to `comp.emacs' because some sites do not receive
-the `gnu.*' newsgroups. The FAQ list is also crossposted to `news.answers'.
-
-Please suggest new questions, answers, wording changes, deletions, etc. The
-most helpful form for suggestions is a context diff (ie., the output of `diff
--c'). Include `FAQ' in the subject of messages sent to us about the FAQ list.
-
-Please do not send questions to us just because you do not want to disturb a
-lot of people and you think we would know the answer. We do not have time to
-answer questions individually. :-(
-
-Full instructions for getting the latest FAQ are in question 22. Also see the
-`Introduction to news.answers' posting in the `news.answers' newsgroup, or send
-e-mail to `mail-server@rtfm.mit.edu' with `help' on a body line, or use FTP,
-WAIS, or Prospero to rtfm.mit.edu.
-
-These ideas have already been suggested, but we have not had time to
-implement them:
-
- * A Texinfo version.
- * Marking questions in the table of contents that have been changed
- recently.
-
---
-Steven Byrnes <sbyrnes@rice.edu> (and Joe Wells <jbw@cs.bu.edu>)
-
-E-mail lpf@uunet.uu.net for details about the League for Programming Freedom.
-
-----------------------------------------------------------------------
-
- GNU Emacs FAQ: Table of Contents
-
-Notation Used in FAQ
-
-1: What do these mean: C-h, M-C-a, RET, "ESC a", etc.?
-2: What does "M-x command" mean?
-3: How do I read topic XXX in the on-line manual?
-4: What do these mean: etc/SERVICE, src/config.h, lisp/default.el?
-5: What are FSF, LPF, OSF, GNU, RMS, FTP, and GPL?
-
-General Questions
-
-6: What is the LPF and why should I join it?
-7: What is the real legal meaning of the GNU copyleft?
-8: What are appropriate messages for gnu.emacs.help, gnu.emacs.bug,
- comp.emacs, etc.?
-9: Where can I get old postings to gnu.emacs.help and other GNU groups?
-10: Where should I report bugs and other problems with GNU Emacs?
-11: How do I unsubscribe to this mailing list?
-12: What is the current address of the FSF?
-
-On-line Help, Printed Manuals, Other Sources of Help
-
-13: I'm just starting GNU Emacs; how do I do basic editing?
-14: How do I find out how to do something in GNU Emacs?
-15: How do I get a printed copy of the GNU Emacs manual?
-16: Where can I get documentation on GNU Emacs Lisp?
-17: How do I install a piece of Texinfo documentation?
-18: How do I print a Texinfo file?
-19: Can I view Info files without using GNU Emacs?
-20: What informational files are available for GNU Emacs?
-21: Where can I get help in installing GNU Emacs?
-22: Where can I get the latest version of this document (the FAQ list)?
-
-Status of Emacs
-
-23: Where does the name "Emacs" come from?
-24: What is the latest version of GNU Emacs?
-25: When will GNU Emacs 19 be available?
-26: What is different about GNU Emacs 19?
-27: What variants of GNU Emacs exist?
-
-Common Things People Want To Do
-
-28: How do I set up a .emacs file properly?
-29: How do I debug a .emacs file?
-30: How do I make Emacs display the current line (or column) number?
-31: How do I turn on Abbrevs by default just in mode XXX?
-32: How do I turn on Auto-Fill mode by default?
-33: How do I make Emacs use a certain major mode for certain files?
-34: How do I search for, delete, or replace unprintable (8-bit or control)
- characters?
-35: How can I highlight a region of text in Emacs?
-36: How do I control Emacs's case-sensitivity when searching/replacing?
-37: How do I make Emacs wrap words for me?
-38: Where can I get a better spelling checker for Emacs?
-39: How can I spell-check TeX or *roff documents?
-40: How do I change load-path?
-41: How do I use an already running Emacs from another window?
-42: How do I make Emacs recognize my compiler's funny error messages?
-43: How do I indent switch statements like this?
-44: How can I make Emacs automatically scroll horizontally?
-45: How do I make Emacs "typeover" or "overwrite" instead of inserting?
-46: How do I stop Emacs from beeping on a terminal?
-47: How do I turn down the bell volume in Emacs running under X Windows?
-48: How do I tell Emacs to automatically indent a new line to the
- indentation of the previous line?
-49: How do I show which parenthesis matches the one I'm looking at?
-50: In C mode, can I show just the lines that will be left after #ifdef
- commands are handled by the compiler?
-51: Is there an equivalent to the `.' (dot) command of vi?
-52: What are the valid X resource settings (ie., stuff in .Xdefaults)?
-53: How do I execute a piece of Emacs Lisp code?
-54: How do I change Emacs's idea of the tab character's length?
-55: How do I insert `>' at the beginning of every line?
-56: How do I insert `_^H' before each character in a paragraph to get an
- underlined paragraph?
-57: How do I repeat a command as many times as possible?
-58: How do I make Emacs behave like this: when I go up or down, the cursor
- should stay in the same column even if the line is too short?
-59: How do I tell Emacs to iconify itself?
-60: How do I use regexps (regular expressions) in Emacs?
-61: How do I perform a replace operation across more than one file?
-62: Where is the documentation for `etags'?
-
-Bugs/Problems
-
-63: Does Emacs have problems with files larger than 8 megabytes?
-64: Why can't Emacs find files in current directory on startup?
-65: How do I get rid of the ^M junk in my Shell buffer?
-66: Why do I get `Process shell exited abnormally with code 1'?
-67: Why can't I cut from Emacs and paste in other X programs?
-68: Where is the termcap/terminfo entry for terminal type `emacs'?
-69: Why does Emacs spontaneously start displaying `I-search:' and beeping?
-70: Why can't Emacs talk to certain hosts (or certain hostnames)?
-71: Why does Emacs say `Error in init file'?
-72: Why does Emacs ignore my X resources (my .Xdefaults file)?
-73: Why does Emacs take 20 seconds to visit a file?
-74: How do I edit a file with a `$' in its name?
-75: Why does Shell mode lose track of the shell's current directory?
-76: Why doesn't my change to load-path work?
-77: Why does the cursor always go to the wrong column when I move up or
- down one line?
-78: Why does Emacs hang with message `Unknown XMenu error' with X11R4?
-79: Why doesn't display-time show the load average in the mode line
- anymore?
-80: Why does ispell sometimes ignore the local dictionary?
-81: Why does Ispell treat each line as a single word?
-82: Are there any security risks in GNU Emacs?
-
-Difficulties Building/Installing/Porting Emacs
-
-83: What should I do if I have trouble building Emacs?
-84: How do I stop Emacs from failing when the executable is stripped?
-85: Why does linking Emacs with -lX11 fail?
-86: Why does Emacs 18.55 say `Fatal error (6).Abort' under SunOS 4.1?
-
-Finding/Getting Emacs and Related Packages
-
-87: Where can I get GNU Emacs on the net (or by snail mail)?
-88: How do I find a GNU Emacs Lisp package that does XXX?
-89: Where can I get GNU Emacs Lisp packages that don't come with Emacs?
-90: How do I submit code to the Emacs Lisp Archive?
-91: Where can I get other up-to-date GNU stuff?
-92: Where can I get an Emacs with better mouse and X window support?
-93: What is the difference between GNU Emacs and Epoch?
-94: What is the difference between GNU Emacs and Lucid GNU Emacs?
-95: Where can I get the "unofficial HP GNU Emacs"?
-96: Where can I get Emacs for my PC running MS-DOS?
-97: Where can I get Emacs for my PC running Windows?
-98: Where can I get Emacs for my PC running OS/2?
-99: Where can I get Emacs for my Atari ST?
-100: Where can I get Emacs for my Amiga?
-101: Where can I get Emacs for my Apple computer?
-102: Where can I get Emacs with NeWS support?
-103: Where do I get Emacs that runs on VMS under DECwindows?
-104: Where can I get modes for Lex, Yacc/Bison, Bourne Shell, Csh, C++,
- Objective C, Pascal, Awk?
-105: What is the IP address of XXX.YYY.ZZZ?
-
-Major Emacs Lisp Packages, Emacs Extensions, and Related Programs
-
-106: VM (View Mail) -- another mail reader within Emacs
-107: Supercite -- mail and news citation package within Emacs
-108: GNUS -- news reader within Emacs
-109: Calc -- poor man's Mathematica within Emacs
-110: Calendar/Diary -- calendar manager within Emacs
-111: Ange-FTP -- transparent FTP access for Emacs's file access routines
-112: VIP -- vi emulation for Emacs
-113: Dired -- better directory editor for Emacs
-114: AUC TeX -- enhanced LaTeX mode with debugging facilities
-115: Hyperbole -- extensible hypertext management system within Emacs
-116: Byte Compiler -- enhanced version of Emacs's byte compiler
-117: comint -- hugely enhanced shell mode and other derived modes
-118: BBDB -- personal info rolodex integrated with mail/news readers
-119: Ispell -- spell checker in C with interface for Emacs
-120: Epoch -- enhanced GNU Emacs with better X interface
-121: Lucid GNU Emacs -- alternative Emacs 19 with better X interface
-122: Demacs -- GNU Emacs altered to run on MS-DOS on 386/486 machines
-123: Freemacs -- a small Emacs for MS-DOS
-124: Patch -- program to apply "diffs" for updating files
-
-Changing Key Bindings and Handling Key Binding Problems
-
-125: How do I bind keys (including function keys) to commands?
-126: Why does Emacs say `Key sequence XXX uses invalid prefix characters'?
-127: Why doesn't this [terminal or window-system setup] code work in my
- .emacs file, but it works just fine after Emacs starts up?
-128: How do I use function keys under X Windows?
-129: How do I tell what characters my function or arrow keys emit?
-130: How do I set the X key "translations" for Emacs?
-131: How do I handle C-s and C-q being used for flow control?
-132: How do I use commands bound to C-s and C-q (or any key) if these keys
- are filtered out?
-133: Why does the `BackSpace' key invoke help?
-134: Why doesn't Emacs look at the stty settings for Backspace vs. Delete?
-135: Why don't the arrow keys work?
-136: How do I "swap" two keys?
-137: How do I produce C-XXX with my keyboard?
-138: What if I don't have a Meta key?
-139: What if I don't have an Escape key?
-140: How do I type DEL on PC terminal emulators?
-141: Can I make my `Compose Character' key behave like a Meta key?
-142: How do I bind a combination of modifier key and function key?
-143: Why doesn't my Meta key work in an xterm window?
-144: Why doesn't my ExtendChar key work as a Meta key under HP-UX 8.0?
-145: Where can I get key bindings to make Emacs emulate WordStar?
-146: Where can I get an XEDIT emulator for Emacs?
-
-Using Emacs with Alternate Character Sets
-
-147: How do I make Emacs display 8-bit characters?
-148: How do I input 8-bit characters?
-149: Where can I get an Emacs that can handle kanji characters?
-150: Where can I get an Emacs that can handle Chinese?
-151: Where is an Emacs that can handle Semitic (right-to-left) alphabets?
-
-Mail and News
-
-152: How do I change the included text prefix in mail/news followups?
-153: How do I save a copy of outgoing mail?
-154: Why doesn't Emacs expand my aliases when sending mail?
-155: Why does RMAIL think all my saved messages are one big message?
-156: How can I sort the messages in my RMAIL folder?
-157: Why does RMAIL need to write to /usr/spool/mail?
-158: How do I recover my mail files after RMAIL munges their format?
-159: How do I make Emacs automatically start my mail/news reader?
-160: How do I read news under Emacs?
-161: Why does `rnews' say "No News is good news" when there is news?
-162: Why doesn't GNUS work anymore via NNTP?
-163: How do I view text with embedded underlining (eg., ClariNews)?
-164: When I try to post a long article in GNUS (about 10K or longer), I get
- the error, "Writing to process: no more processes, nntpd"
-165: How do I save all the items of a multi-part posting in GNUS?
-166: Why does GNUS put the subjects in replies beyond the 80th column?
-167: Why is GNUS so slow to start up?
-168: How do I catch up all newsgroups in GNUS?
-169: Why can't I kill in GNUS on the Newsgroups/Keywords/Control line?
-170: How do I get rid of flashing messages in GNUS for slow connections?
-171: Why is catch up slow in Gnews/GNUS?
-172: Why does GNUS hang for a long time when posting?
-173: Why don't my news postings in GNUS get past the local machine?
-174: Why is the GNUS-generated `Date:' header invalid?
-175: Why doesn't GNUS generate the `Lines:' header?
-176: Why do I get "Cannot open load file" "nntp" when compiling GNUS?
-177: How do I kill all articles in GNUS but those matching a pattern?
-
-
- GNU Emacs FAQ: Notation/General/Help/Status
-
-If you are viewing this text in a GNU Emacs Buffer, you can type "M-2 C-x $" to
-get an overview of just the questions. Then, when you want to look at the text
-of the answers, just type "C-x $".
-
-To search for a question numbered XXX, type "M-C-s ^XXX:", followed by a C-r if
-that doesn't work, then type ESC to end the search.
-
-A `+' in the 78th column means something was inserted on the line. A `-' means
-something was deleted and a `!' means some combination of insertions and
-deletions occurred.
-
-Full instructions for getting the latest FAQ are in question 22. Also see the
-`Introduction to news.answers' posting in the `news.answers' newsgroup, or send
-e-mail to `mail-server@rtfm.mit.edu' with `help' on a body line, or use FTP,
-WAIS, or Prospero to rtfm.mit.edu.
-
-
-
-Notation Used in FAQ
-
- Skip this section and then come back if you don't understand some of the
- later answers.
-
-1: What do these mean: C-h, M-C-a, RET, "ESC a", etc.?
-
- C-x means press the `x' key while holding down the Control key. M-x means
- press the `x' key while holding down the Meta key. M-C-x means press the
- `x' key while holding down both the Control key and the Meta key. C-M-a
- is a synonym for M-C-a. RET, LFD, DEL, ESC, and TAB respectively refer to
- pressing the Return, Linefeed (aka Newline), Delete, Escape, and Tab keys
- and are equivalent to C-m, C-j, C-?, C-[, and C-i. SPC means press the
- Space bar.
-
- I put any key sequence that is longer than one key (and some single-key
- sequences) inside double quotes or on a line by itself. Any real spaces
- in such a key sequence should be ignored; only SPC really means press the
- space key.
-
- The ASCII code sent by C-x (except for C-?) is the value that would be
- sent by pressing just `x' minus 96 (or 64 for uppercase `X') and will be
- from 0 to 31. The ASCII code sent by M-x is the sum of 128 and the ASCII
- code that would be sent by pressing just the `x' key. Essentially, the
- Control key turns off bits 5 and 6 and the Meta key turns on bit 7.
-
- For further information, see `Characters' and `Keys' in the online manual.
-
- NOTE: C-? (aka DEL) is ASCII code 127. It is a misnomer to call C-? a
- "control" key, since 127 has both bits 5 and 6 turned ON. Also, on very
- few keyboards does Control-? generate ASCII code 127.
-
-2: What does "M-x command" mean?
-
- "M-x command" means type M-x, then type the name of the command, then
- type RET.
-
- M-x (by default) invokes the command `execute-extended-command'. This
- command allows you to run any Emacs command if you can remember the
- command's name. If you can't remember the command's name, you can type
- TAB and SPC for completion, and "?" for a list of possibilities. An Emacs
- "command" is any "interactive" Emacs function.
-
- NOTE: Your system administrator may have bound other key sequences to
- invoke execute-extended-command. A function key labeled `Do' is a good
- candidate for this.
-
- To run non-interactive Emacs functions, see question 53.
-
-3: How do I read topic XXX in the on-line manual?
-
- When I refer you to topic XXX in the on-line manual, you can read this
- manual node inside Emacs (assuming nothing is broken) by typing this:
-
- C-h i m emacs RET m XXX RET
-
- This invokes the Info facility. If you don't already know how to use
- Info, type "?" from within Info.
-
- If I refer you to topic XXX:YYY, you need to type this:
-
- C-h i m emacs RET m XXX RET m YYY RET
-
- WARNING: Your system administrator may not have installed the Info files,
- or may have installed them properly. In this case you should complain.
-
-4: What do these mean: etc/SERVICE, src/config.h, lisp/default.el?
-
- These are files that come with GNU Emacs. The GNU Emacs distribution is
- divided into subdirectories; the important ones are `etc', `lisp', and
- `src'.
-
- If you use GNU Emacs, but don't know where it is kept on your system,
- start Emacs, then type "C-h v exec-directory RET". The directory name
- displayed by this will be the full pathname of the installed `etc'
- directory.
-
- Some of these files are available individually via FTP or e-mail, see
- question 20. All are available in the source distribution.
-
-5: What are FSF, LPF, OSF, GNU, RMS, FTP, and GPL?
-
- FSF == Free Software Foundation
- LPF == League for Programming Freedom
- OSF == Open Software Foundation
- GNU == GNU's Not Unix
- RMS == Richard Matthew Stallman
- FTP == File Transfer Protocol
- GPL == GNU General Public Licence
-
- NOTE: Avoid confusing the FSF, the LPF, and the OSF. The LPF opposes
- look-and-feel copyrights and software patents. The FSF aims to make high
- quality free software available for everyone. The OSF is a commercial
- organization which wants to provide an alternative, standardized version
- of Unix not controlled by AT&T.
-
- NOTE: The word "free" in the title of the Free Software Foundation refers
- to "freedom", not "zero dollars". Anyone can charge any price for
- GPL-covered software that they want to. However, in practice, the freedom
- enforced by the GPL leads to low prices, because you can always get the
- software for less money from someone else, because everyone has the right
- to resell or give away GPL-covered software.
-
-
-
-General Questions
-
-6: What is the LPF and why should I join it?
-
- The LPF opposes the expanding danger of software patents and look-and-feel
- copyrights. To get more information, feel free to contact the LPF via
- e-mail or otherwise. {You may also contact me, jbw@cs.bu.edu; I will be
- happy to talk with you about the LPF.} Here is the contact information:
-
- E-mail address: league@prep.ai.mit.edu
- Phone number: (617) 243-4091
- Postal address:
- League for Programming Freedom
- 1 Kendall Square, Number 143
- Post Office Box 9171
- Cambridge, MA 02139, USA
-
- Papers describing the LPF's views are available on the internet and also
- from the LPF:
-
- Anonymous FTP:
- /prep.ai.mit.edu:/pub/lpf/
- /archive.cis.ohio-state.edu:pub/lpf/
- Anonymous UUCP:
- osu-cis!~/lpf/*
-
-7: What is the real legal meaning of the GNU copyleft?
-
- The real legal meaning of the GNU General Public Licence (copyleft) is
- however it is interpreted by a judge. There has never been a copyright
- infringement case involving the GPL to set any precedents. Please take any
- discussion regarding this issue to the newsgroup gnu.misc.discuss, which
- was created to hold the extensive flame wars on the subject.
-
- RMS writes:
-
- The legal meaning of the GNU copyleft is less important than the spirit,
- which is that Emacs is a free software project and that work pertaining
- to Emacs should also be free software. "Free" means that all users have
- the freedom to study, share, change and improve Emacs. To make sure
- everyone has this freedom, pass along source code when you distribute
- any version of Emacs or a related program, and give the recipients the
- same freedom that you enjoyed.
-
-8: What are appropriate messages for gnu.emacs.help, gnu.emacs.bug,
- comp.emacs, etc.?
-
- The file etc/MAILINGLISTS discusses the purpose of each GNU mailing-list.
- (See question 20 on how to get a copy.) For those which are gatewayed
- with newsgroups, it lists both the newsgroup name and the mailing list
- address.
-
- comp.emacs is for discussion of Emacs programs in general. This
- includes GNU Emacs along with various other implementations like JOVE,
- MicroEmacs, Freemacs, MG, Unipress, CCA, Epsilon, etc.
-
- Many people post GNU Emacs questions to comp.emacs because they don't
- receive any of the gnu.* newsgroups. Arguments have been made both for
- and against posting GNU-Emacs-specific material to comp.emacs. You have
- to decide for yourself.
-
- Messages advocating "non-free" software are considered unacceptable on any
- of the gnu.* newsgroups except for gnu.misc.discuss, which was created to
- hold the extensive flame-wars on the subject. "non-free" software
- includes any software for which the end user can't freely modify the
- source code and exchange enhancements. Be careful to remove the gnu.*
- groups from the `Newsgroups:' line when posting a followup that recommends
- such software.
-
- gnu.emacs.bug is a place where bug reports appear, but avoid posting bug
- reports to this newsgroup, instead see question 10.
-
-9: Where can I get old postings to gnu.emacs.help and other GNU groups?
-
- The FSF has maintained archives of all of the GNU mailing lists for many
- years, although there may be some unintentional gaps in coverage. The
- archive is not particularly well organized or easy to retrieve individual
- postings from, but pretty much everything is there.
-
- Anonymous FTP:
- /prep.ai.mit.edu:/pub/gnu/MailingListArchives/
-
- There is a WAIS database named `comp.emacs' on wais.oit.unc.edu that
- makes available the last few days of articles in comp.emacs.
-
-10: Where should I report bugs and other problems with GNU Emacs?
-
- The correct way to report GNU Emacs bugs is by e-mail to
- bug-gnu-emacs@prep.ai.mit.edu. Anything sent here also appears in the
- newsgroup gnu.emacs.bug, but please use e-mail instead of news to submit
- the bug report. This way a reliable return address is available so you
- can be contacted for further details.
-
- RMS explains:
-
- Sending bug reports to help-gnu-emacs (which has the effect of posting
- on gnu.emacs.help) is undesirable because it takes the time of an
- unnecessarily large group of people, most of whom are just users and
- have no idea how to fix these problem. bug-gnu-emacs reaches a much
- smaller group of people who are more likely to know what to do and have
- expressed a wish to receive more messages about Emacs than the others.
-
- However, RMS says there are circumstances when it is okay to post to
- gnu.emacs.help:
-
- If you have reported a bug and you don't hear about a possible fix, then
- after a suitable delay (such as a week) it is okay to post on
- gnu.emacs.help asking if anyone can help you.
-
- If you are unsure whether you have a bug, RMS describes how to tell:
-
- ... if Emacs crashes, that is a bug. If Emacs gets compilation errors
- while building, that is a bug. If Emacs crashes while building, that is
- a bug. If Lisp code does not do what the documentation says it does,
- that is a bug.
-
-11: How do I unsubscribe to this mailing list?
-
- If you are receiving a GNU mailing list named `XXX', you might be able
- to unsubscribe to it by sending a request to the address
- `XXX-request@prep.ai.mit.edu'. However, this will not work if you are
- not listed on the main mailing list, but instead receive the mail from a
- distribution point. In that case, you will have to track down at which
- distribution point you are listed. Inspecting the `Received:' headers
- on the mail messages may help, along with liberal use of the `EXPN' or
- `VRFY' sendmail commands through `telnet <site-address> smtp'. Ask your
- postmaster for help.
-
-12: What is the current address of the FSF?
-
- E-mail address: gnu@prep.ai.mit.edu
- Phone number: (617) 876-3296
- Postal address:
- Free Software Foundation, Inc.
- 675 Massachusetts Avenue
- Cambridge, MA 02139, USA
-
-
-
-On-line Help, Printed Manuals, Other Sources of Help
-
-13: I'm just starting GNU Emacs; how do I do basic editing?
-
- Type "C-h t" to invoke the self-paced tutorial. Typing just C-h is
- how to enter the help system.
-
- WARNING: Your system administrator may have changed C-h to act like DEL to
- deal local keyboards. You can use M-x help-for-help instead to invoke
- help. To discover what key (if any) invokes help on your system, type
- "M-x where-is RET help-for-help RET". This will print a comma-separated
- list of key sequences in the echo area. Ignore the last character in each
- key sequence listed. Each of the resulting key sequences invokes help.
-
- NOTE: Emacs's help facility works best if help is invoked by a single key
- whose value should be stored in the variable help-char. Andrew
- Arensburger <arensb@kong.gsfc.nasa.gov> wrote a patch that allows the help
- facility to work properly when invoked by multiple character sequences.
-
-14: How do I find out how to do something in GNU Emacs?
-
- There are several methods for finding out how to do things in Emacs.
-
- * The complete text of the Emacs manual is available online via the Info
- hypertext reader. Type "C-h i" to invoke Info.
-
- * You can order a hardcopy of the manual from the FSF. See question 15.
-
- * You can get a printed reference card listing commands and keys to invoke
- them. You can order one from the FSF for $1 (or 10 for $5), or you can
- print your own from the etc/refcard.tex file in the Emacs distribution.
- {Are PostScript versions of this available for FTP?}
-
- * You can list all of the commands whose names contain a certain word
- (actually which match a regular expression) using "C-h a"
- (M-x command-apropos).
-
- * You can list all of the functions and variables whose names contain a
- certain word using M-x apropos.
-
- * There are many other commands in Emacs for getting help and information.
- To get a list of these commands, type "C-h C-h C-h".
-
- NOTE: You may find that command-apropos and apropos are extremely slow
- on your system. This will be fixed in Emacs 19. If you can't wait that
- long, there is a fast-apropos.el file available in the Emacs Lisp
- Archive (see question 89) that contains the fix.
-
-15: How do I get a printed copy of the GNU Emacs manual?
-
- You can order a printed copy of the GNU Emacs manual from the FSF for
- $20. For 6 or more manuals the price is $13 each. The price may be
- tax-deductible as a business expense.
-
- The full TeX source for the manual also comes in the `man' directory of
- the Emacs distribution, if you're daring enough to try to print out this
- 300 page manual yourself (see question 18).
-
- If you absolutely have to print your own copy, and you don't have TeX, you
- can get a PostScript version via anonymous FTP:
-
- /cs.ubc.ca:pub/archive/gnu/manuals_ps/emacs-18.57.ps.Z !
-
- which site requests that you please CONFINE ANY MAJOR FTPING TO LATE
- EVENINGS OR EARLY MORNINGS OUR TIME (pacific time zone, GMT-8)). A DVI
- version is also available via FTP:
-
- /prep.ai.mit.edu:pub/gnu/emacs-manual-6.0.dvi.Z
-
- If you don't have TeX you can convert the Texinfo sources into
- {t,n,ps}roff format with the `texi2roff' program, which is available via
- anonymous FTP:
-
- /archive.cis.ohio-state.edu:pub/gnu/texi2roff/texi2roff.shar.Z
-
- See also question 14 for how to view the manual online.
-
-16: Where can I get documentation on GNU Emacs Lisp?
-
- Within Emacs, you can type "C-h f" to get the documentation for a
- function, "C-h v" for a variable.
-
- For more information, obtain the GNU Emacs Lisp Reference Manual for Emacs
- 18 under Unix. It is available from the FSF for $50 (or 5 for $200). The
- latest revision available for FTP is edition 1.03 dated 28 January 1991.
-
- For online use, a set of pregenerated Info files is available with the
- Texinfo source for the Emacs Lisp manual via anonymous FTP:
-
- /archive.cis.ohio-state.edu:pub/gnu/emacs/
- /prep.ai.mit.edu:pub/gnu/elisp-manual-1.03.tar.Z
-
- (You can also create the Info files from the Texinfo source.) See
- question 17 for details on how to install these files online.
-
- If you are daring enough to try to print this 550 page manual out
- yourself, for instructions see question 18.
-
- Also, as a popular USENET saying goes, "Use the Force, Read the Source".
-
-17: How do I install a piece of Texinfo documentation?
-
- First create Info files from the Texinfo files with the `makeinfo'
- program. makeinfo is available as part of the latest Texinfo package:
-
- /prep.ai.mit.edu:pub/gnu/texinfo-2.14.tar.Z
-
- For information about the Texinfo format, read the Texinfo manual which
- comes with Emacs. This manual also comes installed in Info format, so you
- can read it online.
-
- Neither texinfo-format-buffer nor the makeinfo program install the
- resulting Info files in Emacs's Info tree. To install Info files:
-
- 1. Move the files to the `info' directory in the installed Emacs
- distribution. See question 4 if you don't know where that
- is.
-
- 2. Edit the file info/dir in the installed Emacs distribution, and add a
- line for the top level node in the Info package that you are
- installing. Follow the examples are already in this file. The format
- is:
-
- * Topic: (relative-pathname). Short description of topic.
-
- If you want to install Info files and you don't have the necessary
- privileges, you have several options:
-
- * Info files don't actually need to be installed before being used. You
- can feed a file name to the Info-goto-node command (invoked by pressing
- "g" in Info mode) by typing the name of the file in parentheses. This
- goes to the node named `Top' in that file. For example, to view a Info
- file named `XXX' in your home directory, you can type this:
-
- C-h i g (~/XXX) RET
-
- * You can create your own Info directory. You can tell Emacs where the
- Info directory is by setting the value of the variable Info-directory
- to its pathname. For example, to use a private Info directory which
- is a subdirectory of your home directory named `Info', you could do
- this:
-
- (setq Info-directory (expand-file-name "~/Info"))
-
- You will need a top-level Info file named `dir' in this directory.
- You can include the system-wide Info directory in your private Info
- directory with symbolic links or by copying it.
-
- * You can use an enhanced version of lisp/info.el that handles multiple
- Info directories. Then you can more easily use a mix of private and
- shared Info files. Dave Gillespie <daveg@synaptics.com,
- daveg@csvax.cs.caltech.edu> has written one such enhancement and I
- believe there are others. Dave's info.el also handles compressed Info
- files.
-
- Anonymous FTP:
- /archive.cis.ohio-state.edu:modes/info.el.Z
- /ftp.uu.net:languages/emacs-lisp/modes/info.el.Z !
-
- According to Jay Bourland <jayb@math.stanford.edu>, a version of Dave's
- info.el comes with `xinfo' (see question 19).
-
-18: How do I print a Texinfo file?
-
- NOTE: You can't get nice printed output from Info files; you must still
- have the original Texinfo source file for the manual you want to print.
-
- 1. Make sure the first line of the Texinfo file looks like this:
-
- \input texinfo
-
- You may need to alter `texinfo' to the full pathname of the
- texinfo.tex file, which comes with Emacs as man/texinfo.tex (or copy
- or link it into the current directory).
-
- 2. tex XXX.texinfo
-
- 3. texindex XXX.??
-
- The `texindex' program comes with Emacs as man/texindex.c.
-
- 4. tex XXX.texinfo
-
- 5. Print the DVI file XXX.dvi in the normal way for printing DVI files
- at your site.
-
- To get more general instructions, retrieve the latest Texinfo package
- mentioned in question 17.
-
-19: Can I view Info files without using GNU Emacs?
-
- Yes, the `info', `xinfo', and `ivinfo' programs do this. info uses
- curses, xinfo uses standard X11 libraries, and ivinfo uses InterViews.
- You can get info as part of the latest Texinfo package (see question
- 17). xinfo is available separately:
-
- /prep.ai.mit.edu:pub/gnu/xinfo-1.01.01.tar.Z
- /export.lcs.mit.edu:
-
- ivinfo is available in a comp.sources.misc archive or from Tom Horsley
- <tom@ssd.csd.harris.com>. For ivinfo, you need Stanford's InterViews C++
- X library, available via anonymous FTP (interviews.stanford.edu).
-
-20: What informational files are available for GNU Emacs?
-
- This isn't a frequently asked question, but it should be! A variety of
- informational files about GNU Emacs and relevant aspects of the GNU
- project are available for you to read.
-
- The following files are available in the `etc' directory of the GNU
- Emacs distribution, and also the latest versions are available
- individually via anonymous FTP (prep.ai.mit.edu:/pub/gnu/GNUinfo/):
-
- APPLE -- Why the FSF doen't support GNU Emacs on Apple computers
- DISTRIB -- GNU Emacs Availability Information,
- including the popular "Free Software Foundation Order Form"
- FTP -- How to get GNU Software by Internet FTP or by UUCP
- GNU -- The GNU Manifesto
- INTERVIEW -- Richard Stallman discusses his public-domain
- UNIX-compatible software system
- with BYTE editors
- MACHINES -- Status of GNU Emacs on Various Machines and Systems
- MAILINGLISTS -- GNU Project Electronic Mailing Lists
- SERVICE -- GNU Service Directory
- SUN-SUPPORT -- including "Using Emacstool with GNU Emacs"
-
- These files are available in the `etc' directory of the GNU Emacs
- distribution:
-
- DIFF -- Differences between GNU Emacs and Twenex Emacs
- CCADIFF -- Differences between GNU Emacs and CCA Emacs
- GOSDIFF -- Differences between GNU Emacs and Gosling (Unipress??) Emacs
- COPYING -- GNU Emacs General Public License
- NEWS -- GNU Emacs News, a history of user-visible changes
- LPF -- Why you should join the League for Programming Freedom
- FAQ -- GNU Emacs Frequently Asked Questions (You're reading it)
- OPTIONS -- a complete explanation of startup option handling
-
- These files are available via anonymous FTP (prep.ai.mit.edu:/pub/gnu/):
-
- tasks -- GNU Task List
- standards.text -- GNU Coding Standards
-
- In addition, all of the above files are available directly from the FSF
- via e-mail. Of course, please try to get them from a local source
- first.
-
- These additional files are available from the FSF via e-mail:
-
- * GNU's Bulletin, June, 1991 -- this file includes:
- GNU'S Who
- What Is the Free Software Foundation?
- What Is Copyleft?
- A Small Way to Help Free Software
- GNUs Flashes (important recent developments for project GNU)
- Free Software Support (and how to get it!)
- Copyrighted Programming Languages
- AT&T Threatens Users of X Windows (and other software patent threats)
- Project Gutenberg
- GNU Project Status Report
- GNU in Japan
- GNU Wish List
- Help Keep Government Software Free
- GNU Software Available Now
- Contents of the Emacs Tape
- Contents of the Compiler Tape
- Contents of the X11 Tapes
- VMS Emacs and Compiler Tapes
- GNU Documentation
- How to Get GNU Software
- Free Software for Microcomputers
- GNU Software on Apple computers
- GNU Software on the Amiga
- GNU Software on the Atari
- GNUish MS-DOS project
- Freemacs, an Extensible Editor for MS-DOS
- GNU in Japan
- FSF Order Form
- Thank GNUs
- * Legal issues about contributing code to GNU
- * GNU Project Status Report
-
- A collection of past GNU's Bulletins is available via anonymous FTP:
-
- /ftp.funet.fi:pub/gnu/Bulletins/
-
-21: Where can I get help in installing GNU Emacs?
-
- Look in etc/SERVICE for names of companies and individuals who will sell
- you this type of service. An up-to-date version of the SERVICE file is
- available on prep.ai.mit.edu (also see question 20).
-
-22: Where can I get the latest version of this document (the FAQ list)?
-
- The GNU Emacs FAQ is available in several ways:
-
- * Via USENET. If you can read news, the FAQ should be available in your
- news spool, in both the gnu.emacs.help and comp.emacs newsgroups. Every
- news reader of which I know will allow you to read any news article that
- is still in the news spool, even if you have read the article before.
- You may need to read the instructions for your news reader to discover
- how to do this. In `rn', this command will do this for you at the
- article selection level:
-
- ?GNU Emacs FAQ?rc:m
-
- In GNUS, you should type "C-u G" from the *Subject* buffer or "C-u SPC"
- from the *Newsgroup* buffer to view all articles in a newsgroup.
-
- The FAQ articles' message IDs are:
-
- <GNU-Emacs-FAQ-0.1993.05.04.025218@rice.edu> !
- <GNU-Emacs-FAQ-1.1993.05.04.025218@rice.edu> !
- <GNU-Emacs-FAQ-2.1993.05.04.025218@rice.edu> !
- <GNU-Emacs-FAQ-3.1993.05.04.025218@rice.edu> !
- <GNU-Emacs-FAQ-4.1993.05.04.025218@rice.edu> !
- <GNU-Emacs-FAQ-5.1993.05.04.025218@rice.edu> !
-
- If you are viewing this in the GNUS *Article* buffer, you can move point
- within one of the above message IDs and type "r" to fetch the referenced
- article. Type "o" in the *Article* buffer to restore the previous
- contents. If this text is not in the GNUS *Article* buffer, use M-r
- from the *Subject* buffer instead.
-
- If the FAQ articles have expired and been deleted from your news spool,
- it might (or might not) do some good to complain to your news
- administrator, because the most recent FAQ should not expire before
- July 3, 1993. !
-
- * Via anonymous FTP. You can fetch the FAQ articles via anonymous FTP
-
- /rtfm.mit.edu:pub/usenet/news.answers/GNU-Emacs-FAQ/ part*
-
- * Via e-mail. You can send the following magical incantation in the body
- of a message to mail-server@rtfm.mit.edu:
-
- send usenet/news.answers/GNU-Emacs-FAQ/part0
- send usenet/news.answers/GNU-Emacs-FAQ/part1
- send usenet/news.answers/GNU-Emacs-FAQ/part2
- send usenet/news.answers/GNU-Emacs-FAQ/part3
- send usenet/news.answers/GNU-Emacs-FAQ/part4
- send usenet/news.answers/GNU-Emacs-FAQ/part5
-
- * Via WAIS. The GNU Emacs FAQ is available via WAIS indexed on a
- per-question basis from the `faq' database on bigbird.bu.edu on the
- non-standard IP port number of 2210. This is probably the best way to
- find out if there is something in the FAQ related to your question. I
- use this myself to answer questions I see posted on gnu.emacs.help.
-
- The articles of the GNU Emacs FAQ are also available from the `usenet'
- database on rtfm.mit.edu (on the standard IP port: 210), along with a
- lot of other FAQ articles. However, these are all indexed at the whole
- article level instead of at the question level. This is a better place
- to look if you want to fetch the entire FAQ.
-
- * In the GNU Emacs distribution. Since GNU Emacs 18.56, the latest
- available version of the FAQ at the time of release has been part of the
- GNU Emacs distribution as file etc/FAQ. 18.59 is the latest version,
- and it was released in October 1992.
-
- * There is an old version of the FAQ list available for FTP in the GNU
- archives at MIT:
-
- /prep.ai.mit.edu:pub/gnu/GNUinfo/FAQ.emacs
-
- * As the very last resort, you can e-mail a request to
- gnu-emacs-faq-maintainers@bigbird.bu.edu. Don't do this unless you have
- made a serious effort to obtain the FAQ list via one of the methods
- listed above.
-
-
-
-Status of Emacs
-
-23: Where does the name "Emacs" come from?
-
- Emacs originally was an acronym for Editor MACroS. RMS says he "picked
- the name `Emacs' because `E' was not in use as an abbreviation on ITS at
- the time.". The first Emacs was a set of macros written in 1976 at MIT by
- RMS for the editor TECO (Text Editor and COrrector (originally Tape Editor
- and COrrector)) under ITS on a PDP-10. RMS had already extended TECO with
- a "real-time" full screen mode with active keys. Emacs was started by Guy
- Steele <gls@think.com> as a project to unify the many divergent TECO
- command sets and keybindings at MIT.
-
- Many people have told me that TECO code looks a lot like line noise. See
- alt.lang.teco if you are interested. I think someone has written a TECO
- implementation in Emacs Lisp. It would be an interesting project to run
- the original TECO Emacs inside of GNU Emacs.
-
-24: What is the latest version of GNU Emacs?
-
- GNU Emacs 18.59 is the current version. Fixes from 18.57 include better
- mail address parsing, an X visual bell speedup, a call-process
- enhancement, a regexp matching change, the ability to apply a numeric
- argument to a self-inserting digit, getting X resource values from the
- RESOURCE_MANAGER property, more reliable shell mode job control, and a
- change to copy-keymap. Also, support has been added for many new system
- types. Fixes from 18.55 include the removal of arbitrary limits on the
- undo facility.
-
- According to the January 1992 GNU's Bulletin, "Emacs 18 maintenance
- continues for simple bug fixes.".
-
- To visit a file with information about what has changed in recent
- versions, type "C-h n".
-
-25: When will GNU Emacs 19 be available?
-
- Richard Stallman recently (February 19, 1993) posted in gnu.emacs.help !
- the following: !
- !
- People should keep in mind that the successor of Emacs 18 does not !
- come from Lucid. Its is GNU Emacs 19. I still can't say exactly when !
- public release is going to be, but we are about to start testing at a !
- number of sites. !
- !
- GNU Emacs 19 will support a broad spectrum of machines, like Emacs !
- 18. Ensuring this is the purpose of the testing we are about to do. !
- !
- (Please don't volunteer; we have enough pretesters, and if more people !
- offer, dealing with those messages will slow things down.) !
- !
- Once we make sure it is indeed working reliably on various different !
- systems, we will have a public beta test release. !
- !
- Emacs 19 does support adding properties to ranges of text, and using !
- these to switch fonts. In the future, the Epoch people will help !
- merge support for variable-width fonts. !
- !
- Meanwhile, I have almost finished updating the Emacs Lisp manual. Its !
- next edition will describe Emacs 19. There will be an announcement !
- when we know when this edition will be available. !
-
- Lucid has released Lucid GNU Emacs 19.6, which is based on an early !
- unreleased version of GNU Emacs 19. This will be similar to Emacs 19 when
- it finally arrives, but they are not the same. See question 121.
-
- Work has begun on features for Emacs 20.
-
-26: What is different about GNU Emacs 19?
-
- From the January 1992 GNU's Bulletin:
-
- Version 19 will enter beta test late this year. Among its new features
- are: before and after change hooks, source-level debugging of Emacs Lisp
- programs, X selection processing (including clipboard selections),
- scrollbars, support for European character sets, floating point numbers,
- per-buffer mouse commands, X resource manager interfacing,
- mouse-tracking, Lisp-level binding of function keys, multiple X windows
- (`screens' to Emacs), a new input system, and buffer allocation, which
- uses a new mechanism capable of returning storage to the system when a
- buffer is killed.
-
- The input stream is now a sequence of Lisp objects, instead of a
- sequence of characters. This allows a reasonable representation for
- mouse clicks, function keys, menu selections, etc.
-
- Thanks go to Alan Carroll and the people who worked on Epoch for
- generating initial feedback to a multi-windowed Emacs, and to Eric
- Raymond for help in polishing the Emacs 19 Lisp libraries.
-
- The June 1991 GNU's bulletin had this to say about future plans for Emacs:
-
- Features being considered for later releases of Emacs include:
- associating property lists with regions of text in a buffer; multiple
- fonts, color, and pixmaps defined by those properties; different
- visibility conditions for the regions, and for various windows showing
- one buffer; hooks to be run if point or mouse moves outside a certain
- range; incrementally saving undo history in a file; static menu bars;
- and better pop-up menus.
-
- Mention of this feature disappeared in the January 1992 GNU's bulletin:
-
- Emacs 19 supports two styles of multiple windows, one with a separate
- screen for the minibuffer, and another with a minibuffer attached to
- each screen.
-
- Mention of these two proposed features disappeared in the January 1991
- GNU's bulletin:
-
- * Incremental syntax analysis for various programming languages (Leif).
- * A more sophisticated emacsclient/server model, which would provide
- network transparent Emacs widget functionality.
-
-27: What variants of GNU Emacs exist?
-
- * Nemacs (Nihongo Emacs), which can handle Japanese text, is derived from
- GNU Emacs 18.55. See question 149.
-
- * Demacs, which can run under MS-DOS on 386 machines, is derived from
- Nemacs. See question 122.
-
- * Epoch, which has better X support, is derived from GNU Emacs 18.58.
- See question 120 and 92.
-
- * Nepoch (Nihongo Epoch), which can handle Japanese text, is derived from
- Epoch.
-
- * Mule (the MULtilingual Enhancement of GNU Emacs) can handle many
- character sets simultaneously. It is derived from Emacs 18.58. It is
- available for FTP:
-
- /sh.wide.ad.jp:/JAPAN/mule/
- /etlport.etl.go.jp:/pub/mule/
-
- * Lucid GNU Emacs is derived from an early unreleased version of GNU Emacs
- 19. See question 121 and 92.
-
-
-
- GNU Emacs FAQ: Common Requests/Problems
-
-If you are viewing this text in a GNU Emacs Buffer, you can type "M-2 C-x $" to
-get an overview of just the questions. Then, when you want to look at the text
-of the answers, just type "C-x $".
-
-To search for a question numbered XXX, type "M-C-s ^XXX:", followed by a C-r if
-that doesn't work, then type ESC to end the search.
-
-A `+' in the 78th column means something was inserted on the line. A `-' means
-something was deleted and a `!' means some combination of insertions and
-deletions occurred.
-
-Full instructions for getting the latest FAQ are in question 22. Also see the
-`Introduction to news.answers' posting in the `news.answers' newsgroup, or send
-e-mail to `mail-server@rtfm.mit.edu' with `help' on a body line, or use FTP,
-WAIS, or Prospero to rtfm.mit.edu.
-
-
-
-Common Things People Want To Do
-
-28: How do I set up a .emacs file properly?
-
- See `Init File' in the on-line manual.
-
- WARNING: In general, new Emacs users should not have .emacs files, because
- it causes confusing non-standard behavior. Then they send questions to
- help-gnu-emacs asking why Emacs isn't behaving as documented. :-)
-
-29: How do I debug a .emacs file?
-
- First start Emacs with the `-q' command line option. Then, in the
- *scratch* buffer, type the following:
-
- (setq debug-on-error t) LFD
- (load-file "~/.emacs") LFD
-
- (Type LFD by pressing C-j.)
-
- If you have an error in your .emacs file, this will invoke the debugger
- when the error occurs. If you don't know how to use the debugger do
- (setq stack-trace-on-error t) instead.
-
- WARNING: this will not discover errors caused by trying to do something
- that requires the terminal/window-system initialization code to have
- been loaded. See question 127.
-
-30: How do I make Emacs display the current line (or column) number?
-
- To find out what line of the buffer you are on right now, do "M-x
- what-line". Use "M-x goto-line" to go to a specific line. To find the
- current column number, type "M-ESC (current-column)".
-
- Typing "C-x l" will also tell you what line you are on, provided the
- buffer isn't separated into "pages" with C-l characters. In that case, it
- will only tell you what line of the current "page" you are on. WARNING:
- "C-x l" gives the wrong value when point is at the beginning of a line.
-
- There is no "correct" way to constantly display the current (or total)
- line (or column) number on the mode line in Emacs 18, or to display the
- line numbers next to the lines like vi can. Emacs is not a line-oriented
- editor, and really has no idea what "lines" of the buffer are displayed in
- the window. It would require a lot of work at the C code level to make
- Emacs keep track of this. It would not be that hard to get the column
- number, but it would still require changes at the C code level.
-
- None of the vi emulation modes provide the `set number' capability of vi
- (as far as I know).
-
- Emacs 19 will probably be able to show the line number on the mode-line,
- but probably very inefficiently.
-
- People have written various kludges to display line numbers. One is
- `display-line-numbers' by Wayne Mesard <wmesard@tofu.oracle.com,
- Mesard@bbn.com>. Look in the Lisp Code Directory. (See question
- 88.)
-
-31: How do I turn on Abbrevs by default just in mode XXX?
-
- Put this in your .emacs file:
-
- (condition-case ()
- (read-abbrev-file nil t)
- (file-error nil))
-
- (setq XXX-mode-hook
- (function
- (lambda ()
- (setq abbrev-mode t))))
-
-32: How do I turn on Auto-Fill mode by default?
-
- To turn on Auto-Fill mode just once for one buffer, use "M-x
- auto-fill-mode". To turn it on for every buffer in, for example, Text
- mode, do this:
-
- (setq text-mode-hook 'turn-on-auto-fill)
-
- If you want Auto-Fill mode on in all major modes, do this:
-
- (setq-default auto-fill-hook 'do-auto-fill)
-
-33: How do I make Emacs use a certain major mode for certain files?
-
- If you want to use XXX mode for all files which end with the extension
- `.YYY', this will do it for you:
-
- (setq auto-mode-alist (cons '("\\.YYY\\'" . XXX-mode) auto-mode-alist))
-
- Otherwise put this somewhere in the first line of any file you want to
- edit in XXX mode:
-
- -*-XXX-*-
-
-34: How do I search for, delete, or replace unprintable (8-bit or control)
- characters?
-
- To search for a single character that appears in the buffer as, for
- example, `\237', you can type "C-s C-q 2 3 7". (This assumes the value of
- search-quote-char is 17 (ie., C-q).) Searching for ALL unprintable
- characters is best done with a "regexp" search. The easiest regexp to use
- for the unprintable chars is the complement of the regexp for the
- printable chars.
-
- Regexp for the printable chars: [\t\n\r\f -~]
-
- Regexp for the unprintable chars: [^\t\n\r\f -~]
-
- To type some of these special characters in an interactive argument to
- isearch-forward-regexp or re-search-forward, you need to use C-q. (`\t',
- `\n', `\r', and `\f' stand respectively for TAB, LFD, RET, and C-l.) So,
- to search for unprintable characters using re-search-forward:
-
- M-x re-search-forward RET [^ TAB C-q LFD C-q RET C-q C-l SPC -~] RET
-
- Using isearch-forward-regexp:
-
- M-C-s [^ TAB RET C-q RET C-q C-l SPC -~]
-
- To delete all unprintable characters, simply use a replace-regexp:
-
- M-x replace-regexp RET [^ TAB C-q LFD C-q RET C-q C-l SPC -~] RET RET
-
- Replacing is similar to the above. {I need to write the text for this
- part of the answer!}
-
- Notes:
-
- * With isearch, you can type RET to get a quoted LFD (not a quoted RET).
-
- * You don't need to quote TAB with either isearch or typing something in
- the minibuffer.
-
- Here are the Emacs Lisp forms of the above regexps:
-
- ;; regexp matching all printable characters:
- "[\t\n\r\f -~]"
-
- ;; regexp matching all unprintable characters:
- "[^\t\n\r\f -~]"
-
-35: How can I highlight a region of text in Emacs?
-
- There are ways to get highlighting (reverse video, inverse video) in GNU
- Emacs 18.59, but either they require patching the C code of Emacs and
- rebuilding, or they are slow and the highlighting disappears if you scroll
- or redraw the screen and it can not follow the point. Howard Gayle's
- patches for 8-bit output appear to allow highlighting (see question
- ^8-bit-output). Another patch for highlighting is by Kenichi Handa
- <handa@etl.go.jp>. There is a patch for use with X by Andy Norman
- <ange@hplb.hpl.hp.com> (and modified for 18.57 by Matthieu Herrb
- <matthieu@laas.fr>), which is available for FTP:
-
- /laas.laas.fr:pub/emacs/patch-X11-18.55
- /laas.laas.fr:pub/emacs/patch-X11-18.57
-
- You can highlight regions in a variety of ways in Epoch and Lucid Emacs.
- GNU Emacs 19 may not be able to just temporarily highlight a region.
-
- Similar comments apply to displaying text in different fonts, except that
- it is even harder.
-
-36: How do I control Emacs's case-sensitivity when searching/replacing?
-
- For searching, the value of the variable case-fold-search determines
- whether they are case sensitive:
-
- (setq case-fold-search nil) ; make searches case sensitive
- (setq case-fold-search t) ; make searches case insensitive
-
- Similarly, for replacing the variable case-replace determines whether
- replacements preserve case.
-
- To change the case sensitivity just for one major mode, use the major
- mode's hook. For example:
-
- (setq XXX-mode-hook
- (function
- (lambda ()
- (setq case-fold-search nil))))
-
-37: How do I make Emacs wrap words for me?
-
- M-x auto-fill-mode. The default maximum line width is 74, determined by
- the variable fill-column. To find how to turn this on automatically see
- question 32.
-
-38: Where can I get a better spelling checker for Emacs?
-
- Use Ispell. See question 119.
-
-39: How can I spell-check TeX or *roff documents?
-
- If you want to spell-check TeX or *roff documents with Ispell, you need to
- arrange for a filter program that understands how to strip TeX or *roff
- formatting commands to be run. In the TeX distribution, there are several
- different programs named `detex', all with incompatible options, and a
- very old pair of programs named `detex' and `delatex', which should
- probably be avoided. The most useful one for Ispell is `detex' by Daniel
- Trinkle. A more recent version is available via FTP:
-
- /arthur.cs.purdue.edu:pub/trinkle/detex-2.4.tar
-
- Raphael Cerf <cerf@clipper.ens.fr> recently released a program for this
- named `xetal':
-
- /spi.ens.fr:pub/unix/tex/
-
- There is a program that comes with Unix named `deroff' for stripping
- formatting commands from *roff files.
-
- Here is an example of code you can put in a .emacs file to use these
- programs:
-
- ;; Based on suggestions by David G. Grubbs <dgg@ksr.com> and Paul Palmer
- ;; <palmerp@math.orst.edu>.
-
- ;; Assuming the use of detex 2.3 by Daniel Trinkle:
- ;; -w means one word per line.
- ;; -n means don't expand \input or \include commands.
- ;; -l means force LaTeX mode.
-
- (require 'ispell) ; for the make-variable-buffer-local statements
- (setq plain-TeX-mode-hook
- (function
- (lambda ()
- (setq ispell-filter-hook "detex")
- (setq ispell-filter-hook-args '("-nw")))))
- (setq LaTeX-mode-hook
- (function
- (lambda ()
- (setq ispell-filter-hook "detex")
- (setq ispell-filter-hook-args '("-lnw")))))
- (setq nroff-mode-hook
- (function
- (lambda ()
- (setq ispell-filter-hook "deroff")
- (setq ispell-filter-hook-args '("-w")))))
-
- You will have to adjust the arguments for programs other than Trinkle's
- detex or for other versions of deroff. Experiment running the command
- from the shell to find the correct options. If you don't have a filter
- that knows how to output one word per line, you must pipe its output
- through another filter to break up the output.
-
-40: How do I change load-path?
-
- In general, you should only *add* to the load-path. You can add
- directory /XXX/YYY to the load path like this:
-
- (setq load-path (append load-path '("/XXX/YYY/")))
-
- To do this relative to your home directory:
-
- (setq load-path (append load-path (list (expand-file-name "~/YYY/"))))
-
-41: How do I use an already running Emacs from another window?
-
- The `emacsclient' program is for editing a file using an already running
- Emacs rather than starting up a new Emacs. It does this by sending a
- request to the already running Emacs, which must be expecting the request.
-
- * Setup
-
- Emacs must have executed the `server-start' function for emacsclient to
- work. This can be done either by a command line option:
-
- emacs -f server-start
-
- or by invoking server-start from the .emacs file:
-
- (if (some conditions are met) (server-start))
-
- When this is done, Emacs starts a subprocess running a program called
- `server'. `server' creates a Unix domain socket in the user's home
- directory named `.emacs_server'.
-
- To get your news reader, mail reader, etc., to invoke emacsclient, try
- setting the environment variable EDITOR (or sometimes VISUAL) to the
- value `emacsclient'. You may have to specify the full pathname of the
- emacsclient program instead. Examples:
-
- # csh commands:
- setenv EDITOR emacsclient
- setenv EDITOR /usr/local/emacs/etc/emacsclient # using full pathname
-
- # sh command:
- EDITOR=emacsclient export EDITOR
-
- * Normal use
-
- When emacsclient is run, it connects to the `.emacs_server' socket and
- passes its command line options to `server'. When `server' receives
- these requests, it sends this information on the the Emacs process,
- which at the next opportunity will visit the files specified. (Line
- numbers can be specified just like with Emacs.) The user will have to
- switch to the Emacs window by hand. When the user is done editing a
- file, the user can type "C-x #" to indicate this. This will switch to
- another buffer created at the request of emacsclient if there are any.
- When "C-x #" has been invoked on all of the files that the emacsclient
- requested to be edited, Emacs will send notification of this to `server'
- which will pass this on to the emacsclient, which will then exit.
-
- NOTE: `emacsclient' and `server' must be running on machines which share
- the same filesystem for this to work. The pathnames that emacsclient
- specifies should be correct for the filesystem that the Emacs process
- sees. The Emacs process should not be suspended at the time emacsclient
- is invoked. emacsclient should either be invoked from another X window or
- from a shell window inside Emacs itself.
-
- There is an enhanced version of emacsclient/server called `gnuserv' by
- Andy Norman <ange@hplb.hpl.hp.com> which is available in the Emacs Lisp
- Archive. gnuserv uses Internet domain sockets, so it can work across most
- network connections. It also supports the execution of arbitrary Emacs
- Lisp forms and also does not require the client program to wait for
- completion. It is available via anonymous FTP (Emacs Lisp Archive:
- packages/gnuserv.shar).
-
-42: How do I make Emacs recognize my compiler's funny error messages?
-
- Write a program which runs the compiler as a child and filters its output,
- rearranging as necessary. Install with same name as compiler somewhere in
- path.
-
- Keith Moore <moore@cs.utk.edu> wrote one such for a C compiler under AIX.
- Available via FTP:
-
- /cs.utk.edu:readonly/aixcc.lex
-
- Jim Frost <jimf@saber.com> wrote another for the IBM xlc compiler on the
- RS/6000. (I don't know if these are both for the same compiler.)
- Johnathan Vail <vail@tegra.COM> wrote something for a High C compiler
- (`hc', which is one of the compilers on the RS/6000, although I think
- Johnathan wrote his program for hc on a different computer).
-
-43: How do I indent switch statements like this?
-
- Many people want to indent their switch statements like this:
-
- f()
- {
- switch(x) {
- case A:
- x1;
- break;
- case B:
- x2;
- break;
- default:
- x3;
- }
- }
-
- I don't believe there is any way to do this exactly without modifying the
- Lisp code in c-mode.el. You can set c-indent-level to 4 and
- c-label-offset to -2, but this has bad effects elsewhere. {Anyone have a
- solution?}
-
-44: How can I make Emacs automatically scroll horizontally?
-
- There is no completely correct way of doing this that does not involve
- rewriting all commands or writing your own top-level command loop (not a
- completely bad idea). Wayne Mesard <wmesard@pescadero.stanford.edu> has
- written a particularly advanced kludge called `hscroll.el' that checks
- once a second to make sure point is visible.
-
-45: How do I make Emacs "typeover" or "overwrite" instead of inserting?
-
- M-x overwrite-mode (a minor mode).
-
-46: How do I stop Emacs from beeping on a terminal?
-
- Martin R. Frank <martin@cc.gatech.edu> writes:
-
- Tell Emacs to use the 'visible bell' instead of the audible bell, and
- set the visible bell to nothing.
-
- Put this in your TERMCAP environment variable:
-
- ... :vb=: ...
-
- And evaluate this:
-
- (setq visible-bell t)
-
-47: How do I turn down the bell volume in Emacs running under X Windows?
-
- Under versions of Emacs before 18.58, the bell volume was annoying loud
- and difficult to turn off. So upgrading to 18.58 or higher will reduce
- the volume. If you want to turn it off completely, use `xset'. There is
- no way to turn the bell off just for Emacs without affecting all other
- programs.
-
- Under Epoch you can do:
-
- (setq epoch::bell-volume 20)
-
- Stu Grossman <grossman@sunburn.stanford.edu> wrote a patch that allows the
- bell volume to be adjusted from inside Emacs just for Emacs.
-
-48: How do I tell Emacs to automatically indent a new line to the
- indentation of the previous line?
-
- One solution is Indented Text Mode (M-x indented-text-mode).
-
- If you have Auto-Fill mode on (a minor mode, see question 32), you can
- tell Emacs to prefix every line with a certain character sequence, the
- "fill prefix". Type the prefix at the beginning of a line, position point
- after it, and then type "C-x ." (set-fill-prefix) to set the fill prefix.
- Thereafter, auto-filling will automatically put the fill prefix at the
- beginning of new lines, and M-q (fill-paragraph) will maintain any fill
- prefix when refilling the paragraph.
-
- NOTE: If you have paragraphs with different levels of indentation, you
- will have to set the fill prefix to the correct value each time you move
- to a new paragraph. To avoid this hassle, try one of the many packages
- available from the Emacs Lisp Archive. Look up `fill' and `indent' in the
- Lisp Code Directory for guidance.
-
-49: How do I show which parenthesis matches the one I'm looking at?
-
- If you're looking at a right parenthesis (or brace or bracket) you can
- delete it and reinsert it. Emacs will blink the cursor on the matching
- parenthesis.
-
- M-C-f (forward-sexp) and M-C-b (backward-sexp) will skip over balanced
- parentheses, so you can see which parentheses match. (You can train it to
- skip over balanced brackets and braces at the same time by modifying the
- syntax table.)
-
- Here is some Emacs Lisp that will make the % key show the matching
- parenthesis, like in vi. In addition, if the cursor isn't over a
- parenthesis, it simply inserts a % like normal.
-
- ;; By an unknown contributor
-
- (global-set-key "%" 'match-paren)
-
- (defun match-paren (arg)
- "Go to the matching parenthesis if on parenthesis otherwise insert %."
- (interactive "p")
- (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1))
- ((looking-at "\\s\)") (forward-char 1) (backward-list 1))
- (t (self-insert-command (or arg 1)))))
-
-50: In C mode, can I show just the lines that will be left after #ifdef
- commands are handled by the compiler?
-
- M-x hide-ifdef-mode. (This is a minor mode.)
-
- You may have to (load "hideif") first. If you want to do this regularly,
- put this in your .emacs file:
-
- (autoload 'hide-ifdef-mode "hideif" nil t)
-
- {Yes, I know, this should be in lisp/loaddefs.el already.}
-
-51: Is there an equivalent to the `.' (dot) command of vi?
-
- (`.' is the redo command in vi. It redoes the last insertion/deletion.)
-
- No, not really.
-
- You can type "C-x ESC" (repeat-complex-command) to reinvoke commands that
- used the minibuffer to get arguments. In repeat-complex-command you can
- type M-p and M-n to scan through all the different complex commands you've
- typed.
-
- To repeat something on each line I recommend using keyboard macros.
-
-52: What are the valid X resource settings (ie., stuff in .Xdefaults)?
-
- See the Emacs man page, or the etc/OPTIONS file. Ignore the information
- in etc/XDOC which is way out of date.
-
-53: How do I execute a piece of Emacs Lisp code?
-
- There are a number of ways to execute (called "evaluate") an Emacs Lisp
- "form":
-
- * If you want it evaluated every time you run Emacs, put it in a file
- named `.emacs' in your home directory.
-
- * You can type the form in the *scratch* buffer, and then type LFD (or
- C-j) after it. The result of evaluating the form will be inserted in
- the buffer.
-
- * In Emacs-Lisp mode, typing M-C-x evaluates a top-level form before or
- around point.
-
- * Typing "C-x C-e" in any buffer evaluates the Lisp form immediately
- before point and prints its value in the echo area.
-
- * Typing M-ESC or M-x eval-expression allows you to type a Lisp form in
- the minibuffer which will be evaluated.
-
- * You can use M-x load-file to have Emacs evaluate all the Lisp forms in
- a file. (To do this from Lisp use the function `load' instead.)
-
- These functions are also used for evaluating Lisp forms:
-
- load-library, eval-region, eval-current-buffer, require, autoload
-
-54: How do I change Emacs's idea of the tab character's length?
-
- Example: (setq default-tab-width 10).
-
-55: How do I insert `>' at the beginning of every line?
-
- Type "M-x replace-regexp RET ^ RET > RET".
-
- To do this only in the region, type "C-x n M-x replace-regexp RET ^ RET
- > RET C-x w".
-
- WARNING: The command narrow-to-region (C-x n) is disabled by default
- because it can be very confusing (ie., "Oh no! Where did my file go?").
-
-56: How do I insert `_^H' before each character in a paragraph to get an
- underlined paragraph?
-
- M-x underline-region.
-
-57: How do I repeat a command as many times as possible?
-
- Use "C-x (" and "C-x )" to make a keyboard macro that invokes the command
- and then type "M-0 C-x e".
-
- WARNING: any messages your command prints in the echo area will be
- suppressed.
-
-58: How do I make Emacs behave like this: when I go up or down, the cursor
- should stay in the same column even if the line is too short?
-
- M-x picture-mode. (This is a minor mode, in theory anyway ...)
-
-59: How do I tell Emacs to iconify itself?
-
- You need to modify C source and recompile. Either that or get Epoch or
- Lucid Emacs instead. Patches have been written by Robert Forsman
- <thoth@reef.cis.ufl.edu> and Johan Vromans <jv@mh.nl> to allow Emacs to
- iconify itself and by Matt Wette <mwette@mr-ed.jpl.nasa.gov> and
- Manavendra K. Thakur <thakur@zerkalo.harvard.edu> (for 18.57, plus icon
- geometry) to allow Emacs to start up iconified. I don't know which of
- these patches work together.
-
- Anonymous FTP:
- /csi.jpl.nasa.gov:pub/emax.patch1 (Matt Wette)
- /ftp.eu.net:gnu/emacs/FP-Xfun.Z (Johan Vromans)
- /ftp.urc.tue.nl:/pub/tex/emacs/FP-Xfun (Johan Vromans)
-
-60: How do I use regexps (regular expressions) in Emacs?
-
- See `Regexps' in the online manual.
-
- WARNING: The "or" operator is `\|', not `|', and the grouping operators
- are `\(' and `\)'. Also, the string syntax for a backslash is "\\".
- Thus, the string syntax for a regular expression like xxx\(foo\|bar\) is
- "xxx\\(foo\\|bar\\)". Notice the duplicated backslashes!
-
- WARNING: Unlike in Unix grep, sed, etc., a complement character set
- ([^...]) can match a newline character (LFD aka C-j aka \n), unless
- newline is mentioned as one of the characters not to match.
-
- WARNING: The character syntax regexps (eg. `\sw') are not meaningful
- inside character set regexps (eg. `[aeiou]'). (This is actually typical
- for regexp syntax.)
-
-61: How do I perform a replace operation across more than one file?
-
- The "tags" feature of Emacs includes the command tags-query-replace which
- performs a query-replace across all the files mentioned in the TAGS file.
- See `Tags:Tags Search' in the online manual.
-
- In addition, Martin Boyer has written a package named global-replace which
- will perform a query-replace across all the files mentioned in the
- *compilation* buffer (usually done after a `grep'), which is available via
- anonymous FTP:
-
- /ireq-robot.hydro.qc.ca:pub/emacs/lisp/compile.el.Z
- /ireq-robot.hydro.qc.ca:pub/emacs/lisp/global-replace.el.Z
- /ireq-robot.hydro.qc.ca:pub/emacs/lisp/query.el.Z
-
-62: Where is the documentation for `etags'?
-
- `etags' takes options just like a prior version of ctags, so your ctags
- manual (if any) may be useful. Eoin Woods, in comp.emacs, writes the !
- following: !
- !
- From reading the source (!) the way I use it is: !
- !
- for f in `find <args>` !
- do !
- etags -at -f ETAGS $f !
- done !
- !
- The "-t" option means to create tags for typedefs as well as functions. !
- The "-a" option tells it to append to the output file. If you have a !
- small number of files (up to a few hundred I think) you can use it !
- direct as: !
- !
- etags -f ETAGS file1 file2 file3 ... filen !
- !
- The option list is: !
- !
- -f file - Specify the output file name (Default is "TAGS") !
- -a - Append to the output file. (Default is to rewrite it) !
- -t - Create tags for typedefs (default is just functions) !
- -u - Update the output file. Do not re-create it. !
- -w - Suppress warnings !
- -v - Create vgrind style indexed output (What is vgrind??) !
- -x - Create cxref style output (default is Emacs Tags) !
- -e - Emacs tags style output (the default the way I !
- compile it) !
- !
- Having got it working, it works fine! !
-
-
-
-Bugs/Problems
-
-63: Does Emacs have problems with files larger than 8 megabytes?
-
- Most installed versions of GNU Emacs will use 24-bit signed integers (and
- 24-bit pointers) internally. This limits the file size that Emacs can
- handle to 8,388,607 bytes (2^23 - 1).
-
- Leonard N. Zubkoff <lnz@lucid.com> suggests putting the following two
- lines in src/config.h before compiling Emacs to allow for 26-bit integers
- and pointers (and thus filesizes of up to 33,554,431 bytes):
-
- #define VALBITS 26
- #define GCTYPEBITS 5
-
- WARNING: This method may result in `ILLEGAL DATATYPE' and other random
- errors on some machines.
-
- David Gillespie <daveg@csvax.cs.caltech.edu> gives an explanation of why
- Emacs uses 24 bit integers and pointers:
-
- Emacs is largely written in a dialect of Lisp; Lisp is a freely-typed
- language in the sense that you can put any value of any type into any
- variable, or return it from a function, and so on. So each value must
- carry a "tag" along with it identifying what kind of thing it is, eg.,
- integer, pointer to a list, pointer to an editing buffer, and so on.
- Emacs uses standard 32-bit integers for data objects, taking the top 8
- bits for the tag and the bottom 24 bits for the value. So integers (and
- pointers) are somewhat restricted compared to true C integers and
- pointers.
-
- Emacs uses 8-bit tags because that's a little faster on byte-oriented
- machines, but there are only really enough tags to require 6 bits.
-
-64: Why can't Emacs find files in current directory on startup?
-
- The PWD bug has been fixed as of GNU Emacs 18.59. Read on if you are
- running an older version of Emacs.
-
- Most likely, you have an environment variable named PWD that is set to a
- value other than the name of your current directory. This is most
- likely caused by using two different shell programs. `ksh' and (some
- versions of) `csh' set and maintain the value of the PWD environment
- variable, but `sh' doesn't. If you start sh from ksh, change your
- current directory inside sh, and then start Emacs from inside sh, PWD
- will have the wrong value but Emacs will use this value. An invalid
- setting for PWD can also be a problem if you use X Windows and csh on an
- RS/6000. See the etc/OPTIONS file for more details.
-
- Perhaps an easier solution is not to use two shells. The `chsh' program
- can often be used to change one's default login shell.
-
- You may have PWD set for other reasons. Another possibility is that you
- are setting default-directory from your .emacs file.
-
- Here is a fix by Jim Blandy <jimb@occs.cs.oberlin.edu>:
-
- >--- emacs/jjj/emacs-18.58/lisp/startup.el Tue Jan 15 23:19:04 1991
- >+++ startup.el Mon Apr 20 00:21:01 1992
- >@@ -81,5 +81,7 @@
- > ;; In presence of symlinks, switch to cleaner form of default directory.
- > (if (and (not (eq system-type 'vax-vms))
- >- (getenv "PWD"))
- >+ (getenv "PWD")
- >+ (equal (nthcdr 10 (file-attributes default-directory))
- >+ (nthcdr 10 (file-attributes (getenv "PWD")))))
- > (setq default-directory (file-name-as-directory (getenv "PWD"))))
- > (unwind-protect
-
-65: How do I get rid of the ^M junk in my Shell buffer?
-
- For tcsh, put this in your `.cshrc' (or `.tcshrc') file:
-
- if ($?EMACS) then
- if ("$EMACS" == t) then
- if ($?tcsh) unset edit
- stty nl
- endif
- endif
-
- Or put this in your .emacs_tcsh file:
-
- unset edit
- stty nl
-
- Alternatively, use csh in your Shell buffers instead of tcsh. One way
- is:
-
- (setq explicit-shell-file-name "/bin/csh")
-
- and another is to do this in your .cshrc (or .tcshrc) file:
-
- setenv ESHELL /bin/csh
-
- (You must start Emacs over again with the environment variable properly
- set for this to take effect.)
-
-66: Why do I get `Process shell exited abnormally with code 1'?
-
- The most likely reason for this message is that the `env' program is not
- properly installed. This program should be compiled (for the correct
- architecture!) and installed with execute permission for everyone in
- Emacs's program directory, which is normally /usr/local/emacs/etc. You
- can find what this directory is at your site by inspecting the value of
- the variable exec-directory by typing "C-h v exec-directory RET". `env'
- should also be for the correct architecture (check using `file' command).
-
- You should also check for other programs named `env' in your path (eg.,
- SunOS has a program named /usr/bin/env). I don't understand why this can
- cause a failure and I don't know a general solution for working around the
- problem in this case.
-
- The `make clean' command will remove `env' and other vital programs, so be
- careful when using it.
-
- It has been reported that this sometimes happened when Emacs was started
- as an X client from an xterm window (ie. had a controlling tty) but the
- xterm was later terminated.
-
- See also etc/PROBLEMS for other possible causes of this message.
-
-67: Why can't I cut from Emacs and paste in other X programs?
-
- Emacs stores things you "cut" in the X "cut buffers". It also pastes from
- the cut buffer `CUT_BUFFER0'. This is obsolete. Most modern X programs
- now expect to work with "selections" instead of cut buffers, although some
- like `xterm' will try to use the cut buffers if the selection is null.
-
- Emacs 18.58 contains a "fix" that makes xterm work by default. This
- "fix" is that Emacs clears the `PRIMARY' selection when it stores
- something in the cut buffer. By making the selection null, xterm will
- then fetch from the cut buffer when you try to paste.
-
- For versions of Emacs prior to 18.58, you can make pasting from Emacs into
- xterm work with the following X resources:
-
- ! Solution by Thomas Narten, should work under X11R3 and later GNU
- ! Emacs only copies to CUT_BUFFER0. xterm by default wants to paste
- ! from the PRIMARY selection.
- XTerm*VT100.Translations: #override \
- ~Meta <Btn2Up>: insert-selection(CUT_BUFFER0,PRIMARY)
-
- You may have problems copying between Emacs and programs other than xterm
- that won't store cut text in the cut buffers or look in the cut buffers
- for text to paste (for backwards compatibility with obsolete applications
- like Emacs :-). The best workaround is to use the `xcutsel' program as an
- intermediary.
-
- This problem does not exist for Epoch or Lucid Emacs.
-
-68: Where is the termcap/terminfo entry for terminal type `emacs'?
-
- The termcap entry for terminal type `emacs' is ordinarily put in the
- TERMCAP environment variable of subshells. It may help in certain
- situations (eg., using rlogin from shell buffer) to add an entry for
- `emacs' to the system-wide termcap file. Here is a correct termcap entry
- for `emacs':
-
- emacs:tc=unknown:
-
- To make a terminfo entry for `emacs', use `tic' or `captoinfo'. You need
- to generate /usr/lib/terminfo/e/emacs. It may work to simply copy
- /usr/lib/terminfo/d/dumb to /usr/lib/terminfo/e/emacs.
-
- Having a termcap/terminfo entry will not enable the use of full screen
- programs in shell buffers. Use M-x terminal-emulator for that instead.
-
- A workaround to the problem of missing termcap/terminfo entries is to
- change terminal type `emacs' to type `dumb' or `unknown' in your shell
- start up file. `csh' users could put this in their .cshrc files:
-
- if ("$term" == emacs) set term=dumb
-
-69: Why does Emacs spontaneously start displaying `I-search:' and beeping?
-
- Your terminal (or something between your terminal and the computer) is
- sending C-s and C-q for flow control, and Emacs is receiving these
- characters and interpreting them as commands. (The C-s character normally
- invokes the isearch-forward command.) For possible solutions, see
- question 131.
-
-70: Why can't Emacs talk to certain hosts (or certain hostnames)?
-
- The problem may be that Emacs is linked with a wimpier version of
- gethostbyname than the rest of the programs on the machine. This is often
- manifested as a message on startup of `X server not responding. Check
- your DISPLAY environment variable.' or a message of `Unknown host' from
- open-network-stream.
-
- On a Sun, this may be because Emacs had to be linked with the static C
- library. The version of gethostbyname in the static C library may only
- look in /etc/hosts and the NIS (YP) maps, while the version in the dynamic
- C library may be smart enough to check DNS in addition to or instead of
- NIS. On a Motorola Delta running System V R3.6, the version of
- gethosbyname in the standard library works, but the one that works with
- NIS doesn't (the one you get with -linet). Other operating systems have
- similar problems.
-
- Try these options:
-
- * Explicitly add the host you want to communicate with to /etc/hosts.
-
- * Relink Emacs with this line in src/config.h:
-
- #define LIBS_SYSTEM -lresolv
-
- * Replace gethostbyname and friends in libc.a with more useful versions
- such as the ones in libresolv.a. Then relink Emacs.
-
- * If you are actually running NIS, make sure that `ypbind' is properly
- told to do DNS lookups with the correct command line switch.
-
- * Use tcp.el and tcp.c from GNUS. This has the additional advantage that
- you can use numeric IP addresses instead of names. open-network-stream
- currently can't handle numeric addresses. Brian Thomson
- <thomson@hub.toronto.edu> has a enhancement to open-network-stream to
- allow it to handle numeric addresses.
-
-71: Why does Emacs say `Error in init file'?
-
- An error occurred while loading either your .emacs file or the system-wide
- lisp/default.el file. For information on how to debug your .emacs file,
- see question 29.
-
- It may be the case that you may need to load some package first, or use a
- hook that will be evaluated after the package is loaded. A common case of
- this is explained in question 127.
-
-72: Why does Emacs ignore my X resources (my .Xdefaults file)?
-
- * Try compiling Emacs with the XBACKWARDS macro defined. There is a bug
- in some implementations of XGetDefault, which do not correspond to the
- documentation or the header files.
-
- * Make sure you are either using the class name of `Emacs' (oops,
- apparently this is buggy in Emacs 18.58!) or the correct instance name.
- The instance name is normally the same as the name of the file Emacs is
- in (ie., the last part of argv[0]), but this can be overridden by -rn
- command line option or the WM_RES_NAME environment variable.
-
- WARNING: Reports say using the class name fails in Emacs 18.58.
-
- WARNING: The advice the man page gives to use `emacs' is often wrong.
-
- WARNING: Older versions of Emacs got the class name wrong.
-
- * Emacs currently ignores the -xrm command line argument.
-
- * Emacs does not yet handle X11R5 screen-specific resources.
-
- * Emacs has a bug where it ignores color specifications if running on a
- 1-bit display (ie. a non-color display).
-
- * I don't think Emacs will use either of the application-specific resource
- files. Thus these environment variables don't affect it: XAPPLRESDIR,
- XUSERFILESEARCHPATH, XFILESEARCHPATH. {Correct?}
-
-73: Why does Emacs take 20 seconds to visit a file?
-
- The usual cause is that the master lock file, `!!!SuperLock!!!' has been
- left in the lock directory somehow. Delete it.
-
- Mark Meuer <meuer@geom.umn.edu> says that NeXT NFS has a bug where an
- exclusive create succeeds but returns an error status. This can cause the
- same problem. Since Emacs's file locking doesn't work over NFS anyway,
- the best solution is to recompile Emacs with CLASH_DETECTION undefined.
-
-74: How do I edit a file with a `$' in its name?
-
- When entering a filename in the minibuffer, Emacs will attempt to expand
- a `$' followed by a word as an environment variable. To suppress this
- behavior, type "$$" instead.
-
-75: Why does Shell mode lose track of the shell's current directory?
-
- Emacs has no way of knowing when the shell actually changes its directory.
- This is an intrinsic limitation of Unix. So it tries to guess by
- recognizing `cd' commands. If you type `cd' followed by a directory name
- with a variable reference (`cd $HOME/bin') or with a shell metacharacter
- (`cd ../lib*'), Emacs will fail to correctly guess the shell's new current
- directory. A huge variety of fixes and enhancements to Shell mode for
- this problem have been written to handle this problem. Check the Lisp
- Code Directory (see question 88).
-
-76: Why doesn't my change to load-path work?
-
- If you added a directory name containing a tilde (~) to your load-path,
- expecting the tilde to be interpreted as your home directory, then you
- need to do something like this:
-
- (setq load-path (mapcar 'expand-file-name load-path))
-
-77: Why does the cursor always go to the wrong column when I move up or
- down one line?
-
- You have inadvertently typed "C-x C-n" (set-goal-column) which sets the
- "goal column" to the column where the cursor was. To undo this type
- "C-u C-x C-n".
-
- If you make this mistake frequently, you might want to unbind or disable
- this command by doing one of these two:
-
- (define-key ctl-x-map "\C-n" nil)
- (put 'set-goal-column 'disabled t)
-
-78: Why does Emacs hang with message `Unknown XMenu error' with X11R4?
-
- Many different X errors can produce this message. Here is the solution
- to one problem:
-
- X11 Release 4 (and later, including OpenWindows) enforces some conditions
- in the X protocol that were previously allowed to pass unnoticed. You
- need to put the X11R4 server into X11R3 bug compatibility mode for Emacs's
- Xmenu code to work. You can do this with the command `xset bc'.
-
-79: Why doesn't display-time show the load average in the mode line
- anymore?
-
- In GNU Emacs 18.56, a change was made in the display-time code.
- Formerly, in version 18.55, Emacs used a program named `loadst' to
- notify Emacs of the change in time every minute. loadst also sent Emacs
- the system load average if it was installed with sufficient privilege to
- get that information (or was on a system where no such privilege was
- needed). Emacs then displayed this information in the mode line.
-
- In version 18.56, this code was changed to use a program named `wakeup'.
- wakeup doesn't send Emacs any information, it's only purpose is to send
- Emacs *something* every minute, thus invoking the filter function in
- Emacs once a minute. The filter function in Emacs does all the work of
- finding the time, date, and load average. However, getting the load
- average requires the privilege to read kernel memory on most systems.
- Since giving Emacs this privilege would destroy any security a system
- might have, for almost everyone this is not an option. In addition,
- Emacs does not have the code built into it to get this information on
- the systems which have special system calls for this purpose, even
- though loadst had code for this.
-
- The solution I use is to get the files lisp/display-time.el and
- etc/loadst.c from version 18.55 and use those with 18.58. (I have heard
- a rumor that loadst disappeared because of the legal action Unipress
- threatened against IBM.)
-
- WARNING: Do not install Emacs setgid kmem unless you wish to destroy
- any security your system might have!!!!!!!!!!
-
- If you are using Emacs 18.55 or earlier, or already using the solution I
- describe above, read further:
-
- The most likely cause of the problem is that `loadst' can't read the
- special file /dev/kmem. To properly install loadst, it should be either
- setuid to the owner of /dev/kmem, or is should be setgid to the group to
- which /dev/kmem belongs. In either case, /dev/kmem should be readable by
- its owner or its group, respectively. Assuming the existence of a group
- named `kmem', here is an example of how to do this:
-
- chgrp kmem /dev/kmem
- chmod g+r /dev/kmem
- chgrp kmem /usr/local/emacs/etc/loadst
- chmod g+s /usr/local/emacs/etc/loadst
-
- Another possibility is that your version of Unix doesn't have the load
- average data available in /dev/kmem. Your version of Unix might have a
- special system call to retrieve this information (eg., inq_stats under
- UMAX), and loadst might not have been enhanced to cope with this.
-
-80: Why does ispell sometimes ignore the local dictionary?
-
- You need to update the version of Ispell to 2.0.02. (Or you can switch to
- version 3.0 which is still in beta-testing.) A patch is available via
- anonymous FTP:
-
- /archive.cis.ohio-state.edu:pub/gnu/ispell/patch2.Z
-
- You also need to change a line in ispell.el from:
-
- (defconst ispell-version "2.0.01") ; Check against output of "ispell -v".
-
- to:
-
- (defconst ispell-version "2.0.02") ; Check against output of "ispell -v".
-
-81: Why does Ispell treat each line as a single word?
-
- Ispell expects to get its input one word per line. The ispell filter,
- which is specified by the variables ispell-filter-hook and
- ispell-filter-hook-args, should output at most one word per line.
-
-82: Are there any security risks in GNU Emacs?
-
- * the `movemail' incident (No, this is not a risk.)
-
- Cliff Stoll in his book `The Cuckoo's Egg' describes this in chapter 4.
- The site at LBL had installed the `etc/movemail' program setuid root.
- Since `movemail' had not been designed for this situation, a security
- hole was created and users could get root privileges.
-
- `movemail' has since been changed so that even if it is installed setuid
- root this security hole will not be a result.
-
- I have heard unverified reports that the Internet worm took advantage of
- this configuration problem.
-
- * the file-local-variable feature (Yes, a risk, but easy to change.)
-
- There is an Emacs feature that allows the setting of local values for
- variables when editing a file by including specially formatted text near
- the end of the file. This feature also includes the ability to have
- arbitrary Emacs Lisp code evaluated when the file is visited.
- Obviously, there is a potential for Trojan horses to exploit this
- feature.
-
- If you set the variable inhibit-local-variables to a non-nil value,
- Emacs will display the special local variable settings of a file that
- you visit and ask you if you really want them. This variable is not
- mentioned in the manual.
-
- It is wise to do this in lisp/site-init.el before building Emacs:
-
- (setq inhibit-local-variables t)
-
- If Emacs has already been built, the expression can be put in
- lisp/default.el instead, or an individual can put it in their own .emacs
- file.
-
- The ability to exploit this feature by sending e-mail to an RMAIL user
- was fixed sometime after Emacs 18.52. However, any new package that
- uses find-file or find-file-noselect has to be careful about this.
-
- For more information, see `File Variables' in the online manual (which,
- incidentally, does not describe how to disable the feature).
-
- There is a new variable in Emacs 18.58 named ignore-local-eval which
- turns out to be useless as currently implemented. Ignore it.
-
- * synthetic X events (Yes, a risk, use MIT-MAGIC-COOKIE-1 or better.)
-
- Emacs accepts synthetic X events generated by the SendEvent request as
- though they were regular events. As a result, if you are using the
- trivial host-based authentication, other users who can open X
- connections to your X workstation can make your Emacs process do
- anything, including run other processes with your privileges.
-
- The only fix for this is to prevent other users from being able to open
- X connections. The standard way to prevent this is to use a real
- authentication mechanism, such as MIT-MAGIC-COOKIE-1. If using the
- `xauth' program has any effect, then you are probably using
- MIT-MAGIC-COOKIE-1. Your site may be using a superior authentication
- method; ask your system administrator.
-
- If real authentication is not a possibility, you may be satisfied by
- just allowing hosts access for brief intervals while you start your X
- programs, then removing the access. This reduces the risk somewhat by
- narrowing the time window when hostile users would have access, but DOES
- NOT ELIMINATE THE RISK.
-
- Lucid GNU Emacs does not accept synthetic X events unless you set a
- variable.
-
- * autosave file permissions (Yes, a risk, hard to work around.)
-
- The file permissions for autosave files are determined solely by the
- Emacs process's `umask' value. The permissions of the file being
- autosaved are not used. The easiest workaround is to keep sensitive
- files in protected directories. Sebastian Kremer has written an
- enhanced version of the autosave file name picking code that can avoid
- this problem by keeping autosave files in a protected directory. {FTP
- information please?} This problem will be fixed in Emacs 19.
-
-
-
-Difficulties Building/Installing/Porting Emacs
-
-83: What should I do if I have trouble building Emacs?
-
- First look in the file etc/PROBLEMS to see if there is already a solution
- for your problem. Next check the FAQ (you're reading it). If you don't
- find a solution, then report your problem via e-mail to
- bug-gnu-emacs@prep.ai.mit.edu. Please do not post it to gnu.emacs.help or
- e-mail it to help-gnu-emacs@prep.ai.mit.edu. For further guidelines, see
- question 8.
-
-84: How do I stop Emacs from failing when the executable is stripped?
-
- Don't do that.
-
- This problem has been reported on SGI Indigo machines running Irix 4.0.*
- and RS/6000 machines. Scott Henry <scotth@hoshi.corp.SGi.COM> posted a
- patch that fixes the problem for Irix.
-
-85: Why does linking Emacs with -lX11 fail?
-
- Emacs needs to be linked with the static version of the X11 library,
- libX11.a. This may be missing.
-
- Under OpenWindows, you may need to use `add_services' to add the
- `OpenWindows Programmers' optional software category from the CD-ROM.
-
- Under HP-UX 8.0, you may need to run `update' again to load the
- X11-PRG `fileset'. This may be missing even if you specified `all
- filesets' the first time. If libcurses.a is missing, you may need to load
- the `Berkeley Development Option' {???}.
-
- If you are building the MIT X11 sources, you may need to modify your
- `site.cf' file to get static versions of the libraries. (Info from David
- Zuhn <zoo@cygnus.com>.)
-
- Other systems may have similar problems. You can always define
- CANNOT_DUMP and link with the shared libraries instead.
-
- To get the Xmenu stuff to work, you need to find a copy of MIT's
- liboldX.a.
-
-86: Why does Emacs 18.55 say `Fatal error (6).Abort' under SunOS 4.1?
-
- I had hoped this question would go away after Emacs 18.57 was released,
- but people continue to compile 18.55. Easiest solution: upgrade.
-
- This is a result of the SunOS localtime/tzsetwall malloc bug, which was
- (finally!) fixed in SunOS 4.1.2. If you actually need the full
- explanation, send me e-mail. If you absolutely must compile Emacs 18.55
- (eg., you are compiling Nemacs), the easiest workaround was to put
- `#define SYSTEM_MALLOC' in src/config.h.
-
-
-
- GNU Emacs FAQ: Getting Emacs/Packages
-
-If you are viewing this text in a GNU Emacs Buffer, you can type "M-2 C-x $" to
-get an overview of just the questions. Then, when you want to look at the text
-of the answers, just type "C-x $".
-
-To search for a question numbered XXX, type "M-C-s ^XXX:", followed by a C-r if
-that doesn't work, then type ESC to end the search.
-
-A `+' in the 78th column means something was inserted on the line. A `-' means
-something was deleted and a `!' means some combination of insertions and
-deletions occurred.
-
-Full instructions for getting the latest FAQ are in question 22. Also see the
-`Introduction to news.answers' posting in the `news.answers' newsgroup, or send
-e-mail to `mail-server@rtfm.mit.edu' with `help' on a body line, or use FTP,
-WAIS, or Prospero to rtfm.mit.edu.
-
-
-
-Finding/Getting Emacs and Related Packages
-
-87: Where can I get GNU Emacs on the net (or by snail mail)?
-
- Look in the files etc/DISTRIB and etc/FTP for information on nearby
- archive sites. If you don't already have GNU Emacs, see question 20
- for how to get these two files.
-
- The latest version is always available via anonymous FTP at MIT:
-
- /prep.ai.mit.edu:pub/gnu/emacs-18.59.tar.Z
-
- See question 91.
-
-88: How do I find a GNU Emacs Lisp package that does XXX?
-
- A listing of Emacs Lisp packages, called the Lisp Code Directory, is being
- maintained by Dave Brennan <brennan@hal.com> and Dave Sill <de5@ornl.gov>.
- You can search through this list to find if someone has written something
- that fits your needs.
-
- This list is file LCD-datafile.Z in the Emacs Lisp Archive. (See
- question 89 for methods for getting this file.) The files lispdir.el.Z
- and lispdir.doc.Z in the archive contain information to help you use the
- list. Once you have installed lispdir.el and LCD-datafile, then you can
- use the "M-x lisp-dir-apropos" command to look things up in the database.
- For example, the command "M-x lisp-dir-apropos RET ange-ftp RET" produces
- this (outdated) output:
-
- GNU Emacs Lisp Code Apropos -- "ange-ftp"
-
- ange-ftp (3.112) 91-08-12
- Andy Norman, <ange@hplb.hpl.hp.com>
- archive.cis.ohio-state.edu:
- /pub/gnu/emacs/elisp-archive/as-is/ange-ftp.el.Z
- transparent FTP Support for GNU Emacs
-
-89: Where can I get GNU Emacs Lisp packages that don't come with Emacs?
-
- First, check the Lisp Code Directory to find the name of the package you
- are looking for. (See question 88). Then check local archives and
- the Emacs Lisp Archive to find a copy of the relevant files. Then, if
- you still haven't found it, you can send e-mail to the author asking for
- a copy.
-
- You can access the Emacs Lisp Archive via anonymous FTP:
-
- /archive.cis.ohio-state.edu:/pub/gnu/emacs/elisp-archive/
-
- Fetch the file README first.
-
- NOTE: The archive maintainers do not have time to answer individual
- requests for packages or the list of packages in the archive. If you
- cannot use FTP or UUCP to access the archive yourself, try to find a
- friend who can, but please don't ask the maintainers.
-
- NOTE: Any files with names ending in `.Z' are compressed, and you should
- use `binary' mode in FTP to retrieve them. You should also use binary
- mode whenever you retrieve any files with names ending in `.elc'.
-
-90: How do I submit code to the Emacs Lisp Archive?
-
- Submissions should be mailed to elisp-archive@cis.ohio-state.edu. The
- lispdir.el package has a function named submit-lcd-entry which will help
- you with this. Mail messages (submissions) are automatically saved and
- periodically archived. Urgent mail may be sent directly to Dave Sill
- <de5@ornl.gov> or Dave Brennan <brennan@hal.com> or should contain the
- string `urgent' in the subject. The incoming ftp directory is no longer
- available at the request of Ohio State. {Is this still true?}
-
- However, if someone has a submission with multiple files (which would be
- archived as a tar file) or binary files, then FTP transfer is preferred
- and can be arranged via an anonymous FTP site. This is faster than
- uudecoding, unsharing, etc., and re-packaging files.
-
- Before submitting anything, please read the file guidelines.Z, which is
- available in the archive. Whenever possible, submissions should contain a
- complete LCD entry since this helps reduce administrative overhead for the
- maintainers. You can include an entry in this format:
-
- ;; LCD Archive Entry:
- ;; package name|author's name|email address
- ;; |description
- ;; |date|version|archive path
-
- For example:
-
- ;; LCD Archive Entry:
- ;; tex-complete|Sebastian Kremer|sk@thp.Uni-Koeln.DE
- ;; |Minibuffer name completion for editing [La]TeX.
- ;; |91-03-26|$Revision: 1.4 $|~/packages/tex-complete.el.Z !
-
- Dave Brennan has software which automatically looks for data in this
- format. The format is fairly flexible. The entry ends when a line is
- reached with a different prefix or the seventh field terminator is
- seen.
-
- If you are submitting a multi-file submission you should include a file
- named "LCD-entry" which contains the archive entry, instead of placing
- it in one or more of the individual files.
-
-91: Where can I get other up-to-date GNU stuff?
-
- The most up-to-date official GNU stuff is normally kept on prep.ai.mit.edu
- and is available for anonymous FTP in the pub/gnu directory. See the
- files etc/DISTRIB and etc/FTP for more information. (To get copies of
- these files, see question 20.)
-
- The following sites are all mirror images of the GNU distribution area:
-
- /prep.ai.mit.edu:pub/gnu/
- /ftp.uu.net:packages/gnu/
- /src.doc.ic.ac.uk:gnu/ (available via FTP, NIFTP, FTAM)
- /ftp.win.tue.nl:pub/gnu/
- /utsun.s.u-tokyo.ac.jp:ftpsync/prep/
- /nic.funet.fi:pub/gnu/
-
- The directory at ftp.uu.net is a mirror of prep.ai.mit.edu:pub/gnu,
- except that files larger than 1 megabyte {right?} are automatically
- split into multiple parts. If you have trouble transferring large
- files, you should try here. A file normally named `XXX' is split into
- files XXX-split/part[0-9][0-9], and there will be a file named
- XXX-split/README which contains the list of parts (especially helpful
- when FTP-ing by e-mail), their checksums, and reassembly instructions.
- Some of the other mirror sites may have the same property. {Can someone
- check this out? Thanks!}
-
- Information was provided by Lee McLoughlin <lmjm@doc.ic.ac.uk>, Jonathan
- R. Ferro <jf41+@ANDREW.CMU.EDU>, Arjan de Vet <devet@win.tue.nl>, and
- Simon Marshall <S.Marshall@sequent.cc.hull.ac.uk>.
-
-92: Where can I get an Emacs with better mouse and X window support?
-
- Emacs 18 has some limited X Window System support, but there are
- problems. Emacs 19 will have amazing mouse and window support. Right
- now, there are Epoch which is derived from GNU Emacs 18.58 and Lucid GNU
- Emacs which is derived from an early unreleased version of GNU Emacs 19,
- both of which have greatly improved mouse and window support. See
- questions 120 and 121.
-
- The HP unofficial GNU Emacs also has nice mouse support. See question
- 95.
-
- There are numerous Emacs Lisp packages that have been written to extend
- Emacs 18's mouse handling capabilities. Some of these packages also have
- patches to the C code to provide enhanced capabilities. Look up `mouse'
- in the Lisp Code Directory (see question 88).
-
- There is a package called BAM (Born Again Menus) which provides menus for
- GNU Emacs via an external C program. It does not provide mouse support in
- the Emacs window such as scrollbars, cut-and-paste, etc.
-
- NOTE: Epoch only works with the X Window System; it works on ordinary
- terminals by invoking regular GNU Emacs. Lucid Emacs does not currently
- work on ordinary terminals, although there are plans to fix this.
-
-93: What is the difference between GNU Emacs and Epoch?
-
- Marc Andreessen <marca@ncsa.uiuc.edu> writes:
-
- Epoch is GNU Emacs on steroids: an adaptation of GNU Emacs with lots of
- additional support for features made possible by the X11 windowing
- system. These features include multiple editing windows, arbitrary
- colors and fonts (fixed-width and proportional), selectable zones per
- buffer with arbitrary display styles (font, color, underline, stipple,
- pixmap), an optional separate minibuffer window, improved keyboard and
- mouse handling, full 8-bit character set support, and more.
-
-94: What is the difference between GNU Emacs and Lucid GNU Emacs?
-
- This information is condensed from the release notice:
-
- Lucid GNU Emacs is based on an early version of GNU Emacs version 19
- with many enhancements. It currently requires X Windows to run. For
- information on where to get Lucid GNU Emacs see 121. X Windows support
- is greatly enhanced over GNU Emacs version 18, including support for
- multiple X Windows (a.k.a. screens in Emacs), Zmacs/Lispm style region
- highlighting, a customizable, Motif-like menubar, more powerful keymap
- support (allowing different actions to be associated with Backspace,
- Control-h, etc.), flexible text attribute (e.g. font, color) support on
- regional and screen-local basis through X resources and/or lisp, and
- support for the X11 selection mechanism. Some other features include
- run-time computation of the load-path, support for floating point
- numbers, native timer support, and sound file support on Sun
- SPARCstations. To build Lucid GNU Emacs, an ANSI C compiler (e.g. gcc)
- is required.
-
-95: Where can I get the "unofficial HP GNU Emacs"?
-
- The unofficial HP GNU Emacs is available via anonymous FTP:
-
- /ee.utah.edu:HUGE/ (PLEASE FTP DURING NON-WORK HOURS!!!)
-
- and takes about 35 megabytes of disk space to build. It is useful for
- non-HP machines, but some of the added features will only work under
- HP-UX.
-
- You will need to get patches to work with HP-UX 8.0 or on 700 series
- machines via e-mail from Darryl Okahata <darrylo@sr.hp.com>.
-
-96: Where can I get Emacs for my PC running MS-DOS?
-
- * Demacs
-
- For 386 or 486 PCs running MS-DOS, there is a version of GNU Emacs
- called Demacs. To get Demacs see question 122.
-
- From the announcement message:
-
- Demacs is almost a full set of GNU Emacs but does not support some
- features: asynchronous process, locking a file, etc.
-
- Demacs provides following DOS specific features:
-
- * File type: text or binary file translation.
- * "8-bit clean" display mode.
- * 8086 software interrupt call by int86 lisp function.
- * Machine specific features such as function key support.
- * File name completion with drive name.
- * Child process (suspend-emacs, call-process).
- * Enhanced dired mode which can work without 'ls.exe'.
-
- To our regret `shell-mode' does not work, but `compile' command works
- properly.
-
- Demacs was developed using an MS-DOS version of gcc called djgpp by
- D. J. Delorie <dj@ctron.com> which can compile and run large programs
- under MS-DOS, but not under MS Windows. Demacs was derived from Nemacs
- rather than straight from GNU Emacs.
-
- There are a variety of other Emacses for MS-DOS including among them the
- following.
-
- * Freemacs
-
- Russ Nelson <nelson@sun.soe.clarkson.edu>, the author, describes
- Freemacs:
-
- * Freemacs is free, and it was designed from the start to be
- programmable.
- * Freemacs is the only IBM-PC editor that tries to be like GNU Emacs.
- * Freemacs can only edit files less than 64K in length.
- * Freemacs doesn't have undo.
-
- Carl Witty <cwitty@cs.stanford.edu> reviews Freemacs:
-
- Better is Freemacs, which follows the tradition of ITS and GNU Emacs
- by having an full, turing-complete extension language which is
- incompatible with everything else. In fact, it's even closer to ITS
- Emacs than GNU Emacs is, because Mint (Freemacs' extension language)
- is absolutely illegible without weeks of study, much like TECO.
-
- To get Freemacs see question 123.
-
- * MicroEmacs
-
- MicroEmacs is a descendant of Microemacs {originally by Dave Conroy?}.
- It is programmable in a BASIC-like language. Many of the keybindings
- are different from GNU Emacs. The author is Daniel Lawrence -
- <dan@mdbs.uucp, mdbs!dan@ee.ecn.purdue.edu>. The latest version is 3.12 !
- and it is available via anonymous FTP:
-
- /midas.mgmt.purdue.edu:dist/uemacs312/ (outside business hours) !
- !
- Version 3.12 includes Windows and Windows NT versions and a DOS !
- protected mode (DMPI) version. !
-
- * JOVE
-
- Another Emacs for small machines is JOVE (Jonathan's Own Version of
- Emacs). The latest official version is 4.14. There appears to be a
- newer version. People rumored to be working on JOVE include Mark Moraes
- <moraes@cs.toronto.edu> and Bill Marsh <bmarsh@cod.nosc.mil>. It is
- available via anonymous FTP:
-
- /cs.toronto.edu:/pub/moraes/jove4.14.7.tar.Z
-
- * MG
-
- MG is another descendant of Microemacs. MG used to stand for
- MicroGNUEmacs, but now just stands for MG. The look-and-feel of MG is
- intended to be close to that of GNU Emacs. It is rumored that MG can
- not correctly edit files larger than memory. The current version is
- rumored to be 2. There is a version 3 in beta which works on the Amiga.
- It is also available via anonymous FTP:
-
- /ftp.white.toronto.edu:pub/mg/
- /wuarchive.wustl.edu:/mirrors/unix-c/editors/
- /procyon.cis.ksu.edu: (source and executable)
-
-97: Where can I get Emacs for my PC running Windows?
-
- I believe that no version of GNU Emacs runs under Windows. Pierre Perret
- <pap@myths.az05.bull.com> has ported MicroEMACS 3.11c to Windows.
-
- Anonymous FTP:
- /ftp.cica.indiana.edu:pub/pc/win3/util/mewin10.zip
- /ftp.cica.indiana.edu:pub/pc/win3/util/mewin10s.zip
- /ftp.cica.indiana.edu:pub/pc/win3/util/mewri.zip
-
-98: Where can I get Emacs for my PC running OS/2?
-
- From the OS/2 Programmer's FAQ:
-
- GNU Emacs 18.58 is available. It requires you to have EMX installed
- on your machine, but it comes with all the EMX files you will need.
- Emacs is available on ftp-os2 in /pub/os2/2.0/gnu/emacs. (If you want
- to recompile emacs, you will need the full EMX distribution see
- question 1.2.)
-
- The above quote may be out of date. See the latest OS/2 Programmer's FAQ
- {perhaps in comp.os.os2.misc?} for the latest news. Anonymous FTP info:
-
- /ftp-os2.nmsu.edu:pub/os2/2.0/gnu/emacs/
- ("ftp-os2" was formerly named "hobbes")
-
- Thanks go to Stephen Simpson <simpson@symcom.math.uiuc.edu>, Jonathan
- Miller <jem+@andrew.cmu.edu>, Terry Kane <terryk@cc.gatech.edu>, J. D.
- Baldwin <baldwin@csservera.usna.navy.mil>, and Ken Bass
- <kbass@gmuvax2.gmu.edu>.
-
-99: Where can I get Emacs for my Atari ST?
-
- Emacs 18.57 is the latest version for TOS. Stefan Mueller-Pfeiffer
- <iff327@zam001.zam.kfa-juelich.de> says:
-
- There is also a version for MiNT, the multitasking enhancement for
- ATARI's TOS, which behaves almost like EMACS on a "real computer". This
- port was done by Erling Henanger <erlingh@idt.unit.no>.
-
- Anonymous FTP:
- /atari.archive.umich.edu:atari/gnustuff/tos/ (TOS Emacs 18.57)
- /atari.archive.umich.edu:atari/new/mntemacs.zoo (MiNT Emacs)
- /cs.uni-sb.de:/pub/atari/emacs/
-
-100: Where can I get Emacs for my Amiga?
-
- All of the files are lharc-ed.
-
- Anonymous FTP:
- /oes.orst.edu:/pub/almanac/comp/amiga/software/gnuemacs-1.10/
-
- Via e-mail:
- To: almanac@oes.orst.edu
- body:
- mode uuencode
- send computer amiga software gnuemacs <file>
- <file> is replaced by one of the following:
- Required: d1.lzh d2.lzh
- Recommended: d3_info.lzh d3_infolisp.lzh
- Optional: d3_autoloaded.lzh d3_entertainmentetc.lzh
- d3_entertainmentlisp.lzh d4_src.lzh d5_languagelisp.lzh
- d5_viclone.lzh d6_gnulibsrc.lzh d6_mailpackage.lzh
- d6_mathpackage.lzh d6_misc.lzh d6_textformat.lzh
- The `d#' at the beginning of each file is its disk number, which is
- referred to by the documentation.
-
-101: Where can I get Emacs for my Apple computer?
-
- The FSF is a participant in a boycott of Apple because of Apple's "look
- and feel" copyright suits. See the file etc/APPLE for more details.
- Because of this boycott, the FSF doesn't include support in GNU software
- for Apple computers such as the Macintosh.
-
- Please don't help people port or develop software for Apple computers.
-
-102: Where can I get Emacs with NeWS support?
-
- Chris Maio's NeWS support package for GNU Emacs is available via anonymous
- FTP:
-
- /columbia.edu:pub/ps-emacs.tar.Z
- /archive.cis.ohio-state.edu:pub/gnu/emacs/ps-emacs.tar.Z
-
- and via e-mail:
-
- To: archive-server@columbia.edu
- body: send NeWS emacs-support
-
-103: Where do I get Emacs that runs on VMS under DECwindows?
-
- Hal R. Brand <BRAND@addvax.llnl.gov> is said to have a VMS save set with a
- ready-to-run VMS version of Emacs 18.55 for X Windows. It is available
- via anonymous FTP (addvax.llnl.gov). It is possible that the VMS versions
- of Emacs at other sites have X support compiled in. See etc/FTP for
- locations.
-
- Johan Vromans <jv@mh.nl> writes:
-
- Getting Emacs to run on VMS with DECwindows requires a number of changes
- to the sources. Fortunately this has been done already. Joshua Marantz
- <josh@viewlogic.com> did most of the work for Emacs 18.52, and the mods
- were ported to 18.55 by Johan Vromans <jv@mh.nl>. Also included is the
- handling of DEC's LK201 keyboard. You need to apply the changes to a
- fresh Emacs 18.55 distribution on a Unix system, and then you can copy
- the sources to VMS to perform the compile/link/build.
-
- The set of changes have been posted a number of times three times the
- last 12 months, so they should be widely available.
-
- Richard Levitte <levitte@e.kth.se> tells us that there are patches for
- Emacs 18.57, 18.58, and 18.59 available via e-mail: !
-
- To: EMACS-FILESERV@e.kth.se !
- body: SEND EMACS-1857-PATCHES
- or: SEND EMACS-1858-PATCHES
- or: SEND EMACS-1859-PATCHES +
- +
- or via anonymous ftp at: +
- +
- /lucy.merrimack.edu:emacs-1859-patches.share +
- +
- The set of patches weighs in at around 2.7 MB. +
-
-104: Where can I get modes for Lex, Yacc/Bison, Bourne Shell, Csh, C++,
- Objective C, Pascal, Awk?
-
- As usual, look in the Lisp Code Directory (see question 88). For C++,
- if you use lisp-dir-apropos, you must specify the pattern like this:
-
- M-x lisp-dir-apropos RET c\+\+ RET
-
-105: What is the IP address of XXX.YYY.ZZZ?
-
- If you are at a site with a deficient nameserver, you may need to know
- the IP address of a host to FTP files from it. You can get this
- information in two ways:
-
- * By telnet:
-
- telnet nic.ddn.mil hostnames (or `telnet 192.112.36.5 101')
- hname XXX.YYY.ZZZ
-
- * By e-mail:
-
- To: service@nic.ddn.mil
- Subject: host XXX.YYY.ZZZ
- or: whois XXX.YYY.ZZZ
- or: help
-
- or:
-
- To: resolve@cs.widener.edu
- body: site XXX.YYY.ZZZ
-
- Information from Brendan Kehoe <brendan@cs.widener.edu>.
-
-
-
-
-Major Emacs Lisp Packages, Emacs Extensions, and Related Programs
-
- This section lists version numbers, FTP sites, mailing lists, newsgroups,
- and other information for many important packages, extensions, and related
- programs. There is some overlap with the Lisp Code Directory, but these
- entries give more detailed information.
-
- If you know of any other packages that are so substantial that they
- deserve to be mentioned here, please tell me. Having its own mailing list
- or newsgroup or more than half a megabyte of source code are good signs.
-
-106: VM (View Mail) -- another mail reader within Emacs
-
- Author: Kyle Jones <kyle@uunet.uu.net>
- Latest released version: 4.41
- Beta test version: 5.32
- Anonymous FTP:
- /archive.cis.ohio-state.edu:pub/gnu/emacs/elisp-archive/packages/vm-4.41.tar.Z
- /archive.cis.ohio-state.edu:pub/gnu/emacs/elisp-archive/as-is/timer.shar.Z
- /ftp.uu.net:mail/vm-4.41.tar.Z
- /ftp.uu.net:mail/vm-5.32beta.tar.Z
- Newsgroups and mailing lists:
- Info-VM:
- gnu.emacs.vm.info
- info-vm-request@uunet.uu.net (for subscriptions)
- info-vm@uunet.uu.net (for submissions)
- Bug-VM:
- gnu.emacs.vm.bug
- bug-vm-request@uunet.uu.net (for subscriptions)
- bug-vm@uunet.uu.net (for submissions)
-
-107: Supercite -- mail and news citation package within Emacs
-
- Author: Barry Warsaw <bwarsaw@cen.com>
- Mailing list: supercite-request@anthem.nlm.nih.gov (for subscriptions)
- supercite@anthem.nlm.nih.gov (for submissions)
- Latest version: 2.3 !
- Anonymous FTP:
- /archive.cis.ohio-state.edu:pub/gnu/emacs/elisp-archive/packages/sc-2.3.tar.Z !
- /ftp.cme.nist.gov:pub/gnu/sc2.3.tar.Z !
- Via e-mail:
- To: library@cme.nist.gov
- Subject: help
- NOTE: Superyank is an old version of Supercite.
-
-108: GNUS -- news reader within Emacs
-
- Author: Masanobu Umeda <umerin@mse.kyutech.ac.jp>
- Latest official version: 3.13
- Unofficial test version: 3.14.1
- Anonymous FTP:
- /aun.uninett.no:pub/gnus-3.14.1.tar.Z -
- /wnoc-fuk.wide.ad.jp:pub/GNU/etc/gnus-3.14.1.tar.Z
- /liasun3.epfl.ch:pub/gnu/emacs/gnus-3.14.1.tar.Z
- /aix370.rrz.uni-koeln.de:/pub/gnu/emacs/gnus-3.14.1.tar.Z
- /funet.fi:/networking/news/gnus-3.14.1.tar.Z
- /src.doc.ic.ac.uk:/gnu/EmacsBits/gnus/gnus-3.14.1.tar.Z
- /archive.cis.ohio-state.edu:pub/gnu/emacs/elisp-archive/packages/gnus-3.13.tar.Z
- Newsgroups and mailing lists:
- English-only:
- gnu.emacs.gnus
- info-gnus-english-request@cis.ohio-state.edu (for subscriptions)
- info-gnus-english@cis.ohio-state.edu (for submissions)
- Japanese (and some English):
- info-gnus-request@flab.fujitsu.co.jp (for subscriptions)
- info-gnus@flab.fujitsu.co.jp (for submissions)
-
-109: Calc -- poor man's Mathematica within Emacs
-
- Author: Dave Gillespie <daveg@csvax.cs.caltech.edu>
- Latest released version: 2.02
- Anonymous FTP:
- /csvax.cs.caltech.edu:pub/calc-2.02.tar.Z
- /prep.ai.mit.edu:pub/gnu/calc-2.02.tar.Z
- NOTE: Unlike Wolfram Research, Dave has never threatened to sue anyone
- for having a program with a similar command language to Calc. :-)
-
-110: Calendar/Diary -- calendar manager within Emacs
-
- Author: Edward M. Reingold <reingold@cs.uiuc.edu>
- Latest version: 4.02
- Anonymous FTP:
- /emr.cs.uiuc.edu:pub/emacs/calendar {???}
- Via e-mail:
- To: reingold@cs.uiuc.edu
- Subject: send-emacs-cal
- Put your best internet e-mail address in the body.
-
-111: Ange-FTP -- transparent FTP access for Emacs's file access routines
-
- Author: Andy Norman <ange@hplb.hpl.hp.com>
- Latest official version: 4.20
- Anonymous FTP:
- /alpha.gnu.ai.mit.edu:ange-ftp/ange-ftp.tar.Z
- /archive.cis.ohio-state.edu:pub/gnu/emacs/elisp-archive/packages/ange-ftp.tar.Z
- /ugle.unit.no:pub/gnu/emacs-lisp/ange-ftp.tar.Z
- Mailing lists:
- ange-ftp-lovers-request@anorman.hpl.hp.com (for subscriptions)
- Ange-FTP Lovers:
- ange-ftp-lovers@anorman.hpl.hp.com (for submissions)
- /ftp.reed.edu:pub/mailing-lists/ange-ftp/ (archives)
- Ange-FTP Announcements:
- ange-ftp-lovers-announce@anorman.hpl.hp.com
- NOTE: now with support for accessing VMS, CMS, and MTS systems
-
-112: VIP -- vi emulation for Emacs
-
- Author: Aamod Sane <sane@cs.uiuc.edu>
- Latest released version: 4.3
- Anonymous FTP:
- /cs.uiuc.edu:pub/vip4.3.tar.Z
- /archive.cis.ohio-state.edu:pub/gnu/emacs/elisp-archive/modes/vip-mode.tar.Z
- NOTE: This version much more closely emulates vi than the one
- distributed with Emacs.
-
-113: Dired -- better directory editor for Emacs
-
- Author: Sebastian Kremer <sk@thp.uni-koeln.de>
- Latest released version: 5.239
- Anonymous FTP: /ftp.cs.buffalo.edu:pub/Emacs/diredall.tar.Z
- /ftp.uni-koeln.de:pub/gnu/emacs/diredall.tar.Z
- NOTE: This is a huge improvement over the Dired distributed with Emacs.
- This version will be in Emacs 19.
-
-114: AUC TeX -- enhanced LaTeX mode with debugging facilities
-
- Author: Kresten Krab Thorup <krab@iesd.auc.dk>
- Latest released version: 6.1 {???}
- Anonymous FTP:
- /iesd.auc.dk:pub/emacs-lisp/auctex_6_1d.tar.Z
- /iesd.auc.dk:pub/emacs-lisp/auctex.tar.Z
- Mailing list:
- auc-tex-request@iesd.auc.dk (for subscriptions)
- auc-tex@iesd.auc.dk (for submissions)
- auc-tex_mgr@iesd.auc.dk (auc-tex development team)
-
-115: Hyperbole -- extensible hypertext management system within Emacs
-
- Author: Bob Weiner <rsw@cs.brown.edu>
- Anonymous FTP:
- /wilma.cs.brown.edu:pub/hyperbole/ h*.tar.Z
- Mailing lists:
- hyperbole-announce -- Hyperbole release announcements only.
- Subscriptions:
- To: hyperbole-request@cs.brown.edu
- Subject: Add <mailbox@domain.name> to hyperbole-announce
- hyperbole -- Hyperbole discussion.
- Subscriptions:
- To: hyperbole-request@cs.brown.edu
- Subject: Add <mailbox@domain.name> to hyperbole
- Submissions:
- hyperbole@cs.brown.edu
- NOTE: Any member of the hyperbole mailing list is automatically a
- member of the hyperbole-announce mailing list.
- NOTE: No .UUCP or ! addresses are allowed on these mailing lists.
-
-116: Byte Compiler -- enhanced version of Emacs's byte compiler
-
- Author: Jamie Zawinski <jwz@lucid.com>,
- Hallvard B. Furuseth <hallvard@ifi.uio.no>
- Anonymous FTP:
- /archive.cis.ohio-state.edu:pub/gnu/emacs/elisp-archive/packages/bytecomp.tar.Z
- /ftp.uu.net:languages/elisp/packages/bytecomp.tar.Z
- /src.doc.ic.ac.uk:gnu/EmacsBits/elisp-archive/packages/bytecomp.tar.Z
-
-117: comint -- hugely enhanced shell mode and other derived modes
-
- Author: Olin Shivers <Olin.Shivers@cs.cmu.edu>
- Anonymous FTP:
- /cs.cmu.edu:/afs/cs.cmu.edu/user/shivers/lib/emacs/
- {comint,cmu{tex,shell,scheme,lisp},ml}.el
- (anonymous password must contain `@',
- cannot cd to intermediate directories)
-
-118: BBDB -- personal info rolodex integrated with mail/news readers
-
- Author: Jamie Zawinski <jwz@lucid.com>
- Latest released version: 1.47
- Anonymous FTP:
- /archive.cis.ohio-state.edu:pub/gnu/emacs/elisp-archive/packages/bbdb.tar.Z
- Mailing list:
- info-bbdb-request@lucid.com (for subscriptions)
- info-bbdb@lucid.com
- bbdb-announce-request@lucid.com (to be informed of new releases)
- Note: BBDB does not work with VM 4. It does work with VM 5, RMAIL, GNUS,
- and MH-E.
-
-119: Ispell -- spell checker in C with interface for Emacs
-
- Author: Geoff Kuenning <geoff@itcorp.com>
- Latest released version: 2.0.02
- Beta test version: 3.0 (9 patches)
- Anonymous FTP:
- /archive.cis.ohio-state.edu:/pub/gnu/ispell/ (version 2.0.02)
- /ftp.cs.ucla.edu:/pub/ispell/ (version 3.0, patches, dictionaries)
- /argus.math.orst.edu:pub/ispell/ (version 3.0, patches, dictionaries)
- /ftp.th-darmstadt.de:pub/dicts/ispell/ (mirror of argus)
- NOTE: Do not send mail to Geoff asking him to send you the latest
- version of Ispell. He does not have free e-mail.
-
-120: Epoch -- enhanced GNU Emacs with better X interface
-
- Latest released version: 4.2
- Anonymous FTP:
- /cs.uiuc.edu:pub/epoch-files/epoch/epoch-4.2.tar.Z
- /cs.uiuc.edu:pub/epoch-files/epoch/epoch-diff-4.1-4.2.tar.Z
- /src.doc.ic.ac.uk:gnu/epoch/
- /aix370.rrz.uni-koeln.de:gnu/emacs/epoch/
- Newsgroup and mailing lists:
- Epoch:
- gnu.emacs.epoch
- epoch-request@cs.uiuc.edu (for subscriptions)
- epoch@cs.uiuc.edu (for submissions)
- Epoch-Design:
- epoch-design-request@cs.uiuc.edu (for subscriptions)
- epoch-design@cs.uiuc.edu (for submissions)
- FAQ list:
- Maintainer: Marc Andreessen <marca@ncsa.uiuc.edu>
- Anonymous FTP:
- /rtfm.mit.edu:pub/usenet/news.answers/epoch-faq
- /ftp.ncsa.uiuc.edu:outgoing/marca/epoch/Epoch.FAQ
-
-121: Lucid GNU Emacs -- alternative Emacs 19 with better X interface
-
- Primary Maintainer: Jamie Zawinski <jwz@lucid.com>
- Other Developers: Eric Benson <eb@lucid.com>
- Matthieu Devin <devin@lucid.com>
- Harlan Sexton <hbs@lucid.com>
- Latest released version: 19.6 !
- Anonymous FTP:
- /labrea.stanford.edu:pub/gnu/lucid/lemacs-19.6.tar.Z (source) !
- /labrea.stanford.edu:pub/gnu/lucid/lemacs-19.6-sun4.tar.Z (Sun4binaries) !
- Newsgroup and mailing lists:
- Bugs:
- alt.lucid-emacs.bug +
- bug-lucid-emacs-request@lucid.com (for subscriptions)
- bug-lucid-emacs@lucid.com (for submissions)
- Help:
- alt.lucid-emacs.help +
- help-lucid-emacs-request@lucid.com (for subscriptions)
- help-lucid-emacs@lucid.com (for submissions)
-
-122: Demacs -- GNU Emacs altered to run on MS-DOS on 386/486 machines
-
- Authors: Manabu Higashida <manabu@sigmath.osaka-u.ac.jp>
- HIRANO Satoshi <hirano@tkl.iis.u-tokyo.ac.jp>
- Latest released version: 1.2.0
- Anonymous FTP:
- /utsun.s.u-tokyo.ac.jp:GNU/demacs/ (nearest to U.S.A.)
- /ftp.sigmath.osaka-u.ac.jp:pub/Msdos/Demacs/
- /wnoc-fuk.wide.ad.jp:pub/msdos/Demacs/
- /ftp.3com.com:pub/gnu/msdos/demacs/
- /mindseye.berkeley.edu:pub/kanji/demacs/
- /ftp.hawaii.edu:pub/editors/demacs.tar.Z
- /ftp.math.ksu.edu:pub/pc/demacs/
- /wsmr-simtel20.army.mil:pd1:<msdos.demacs> {ange-ftp syntax?}
- /ftp.uni-koeln.de:msdos/gnuprogs/dem120e.zip (executables, lisp-code, doc)
- (PLEASE USE ONLY OUTSIDE WORKING HOURS!)
- /ftp.uni-koeln.de:msdos/gnuprogs/dem120s.zip (sources, diffs)
- (PLEASE USE ONLY OUTSIDE WORKING HOURS!)
- /ftp.lysator.liu.se:pub/msdos/gnu/emacs/
- /mizar.docs.uu.se:pub/gnu/demacs/
- /iamsun.unibe.ch:PC/demacs/
- /flop.informatik.tu-muenchen.de:outgoing/demacs.tar
- /ftp.funet.fi:pub/gnu/emacs/demacs/
- /garbo.uwasa.fi:pc/editor/dem120e.zip
- /garbo.uwasa.fi:pc/editor/dem120s.zip
- /ftp.win.tue.nl:pub/gnu/demacs/
- /ugle.unit.no:pub/gnu/Demacs/
- {Does anyone know which sites have the Kanji version?}
- Via e-mail:
- From garbo.uwasa.fi:
- To: mailserv@garbo.uwasa.fi
- Subject: garbo-request
- Body: send pc/editor/dem120e.zip
- send pc/editor/dem120s.zip
- quit
- Downloading:
- EXEC-PC (Milwaukee, WI) 414-789-4210 (2400 bps)
- in the Mahoney MS-DOS file area in its Editors/wordprocessors
- library (F), named GNUEMACS.ZIP
- Channel 1 (Cambridge, MA) 617-345-8873 (9600 bps)
- in the New Uploads file area, named GNUEMACS.ZIP
- NOTE: Use the -d option of [pk]unzip for all .zip archives. Some sites
- have Demacs lharc'ed. If you need to find programs to unpack lharc and
- zip format archives, Chris Dean <ctdean@talaris.com> points out that you
- should see the comp.compression FAQ, available for FTP:
- /rtfm.mit.edu:pub/usenet/comp.compression/
- Mailing list:
- NOTE: There is no mailing list for Demacs. However, there is a list
- for DJGPP, which is the environment that Demacs runs in. Many
- Demacs problems are actually issues with DJGPP.
- DJGPP:
- Subscriptions:
- To: listserv@sun.soe.clarkson.edu
- body: add <your-address> djgpp
- or put `help' in the body.
- If this fails, mail to djgpp-request@sun.soe.clarkson.edu.
- Submissions:
- djgpp@sun.soe.clarkson.edu
- FAQ list:
- Maintainer: Dave Steibel <steibel@cs.umbc.edu>
- Anonymous FTP: algol.cs.umbc.edu:pub/demacs/demacs.faq
-
-123: Freemacs -- a small Emacs for MS-DOS
-
- Author: Russ Nelson <nelson@sun.soe.clarkson.edu>
- Latest released version: 1.6a
- Anonymous FTP:
- /simtel20.army.mil:PD:<MSDOS.FREEMACS> {ange-ftp syntax?}
- /grape.ecs.clarkson.edu:pub/msdos/freemacs/
- Via e-mail:
- To: archive-server@sun.soe.clarkson.edu
- body: help
- Via snail mail:
- address: Russell Nelson, 11 Grant St., Potsdam, NY 13676
- Send $15 copying fee, and specify preferred floppy disk format:
- 5.25", 360K, or 3.50", 720K
- Mailing lists:
- Subscriptions:
- To: listserv@sun.soe.clarkson.edu
- body: add <your-address> <name-of-list>
- or put `help' in the body.
- List distribution addresses:
- freemacs-announce@sun.soe.clarkson.edu
- freemacs-help@sun.soe.clarkson.edu
- freemacs-workers@sun.soe.clarkson.edu (send bug reports here)
-
-124: Patch -- program to apply "diffs" for updating files
-
- Author: Larry Wall <lwall@netlabs.com>
- Latest version: 2.0 patchlevel 12u8
- (This is the version that supports the new unified diff format.)
- Anonymous FTP:
- /prep.ai.mit.edu:pub/gnu/patch-2.0.12u8.tar.Z
- /prep.ai.mit.edu:pub/gnu/patch-2.0.12g8.tar.Z (GNU version)
-
-
-
- GNU Emacs FAQ: Keybindings/Output
-
-If you are viewing this text in a GNU Emacs Buffer, you can type "M-2 C-x $" to
-get an overview of just the questions. Then, when you want to look at the text
-of the answers, just type "C-x $".
-
-To search for a question numbered XXX, type "M-C-s ^XXX:", followed by a C-r if
-that doesn't work, then type ESC to end the search.
-
-A `+' in the 78th column means something was inserted on the line. A `-' means
-something was deleted and a `!' means some combination of insertions and
-deletions occurred.
-
-Full instructions for getting the latest FAQ are in question 22. Also see the
-`Introduction to news.answers' posting in the `news.answers' newsgroup, or send
-e-mail to `mail-server@rtfm.mit.edu' with `help' on a body line, or use FTP,
-WAIS, or Prospero to rtfm.mit.edu.
-
-
-
-Changing Key Bindings and Handling Key Binding Problems
-
-125: How do I bind keys (including function keys) to commands?
-
- 1. Find out what character sequence is generated by the keystroke sequence
- you wish to bind to a command. See question 129 for how to do this.
- Keep in mind that the character sequences generated by a keystroke
- sequence varies from one terminal to another. You may also get
- different results depending on what type of machine you are running on
- (see question 128). For example, these keystrokes may generate these
- character sequences:
-
- F1 ---> ESC [ 2 2 4 z
- Shift-R10 ---> ESC O t
- L7 ---> ESC [ 3 1 ~
- Remove ---> C-@
-
- 2. Figure out what the Emacs Lisp syntax is for this character sequence.
- Inside an Emacs Lisp string, RET, LFD, DEL, ESC, SPC, and TAB are
- specified with `\r', `\n', `\C-?', `\e', ` ', and `\t'. C-x is
- specified by `\C-x'. M-x is specified the same was as "ESC x".
- (Control characters may also be specified as themselves, but I don't
- recommend it.) An Emacs Lisp string begins and ends with the double
- quote character, `"'. Here are some examples:
-
- ESC [ D ---> "\e[D"
- ESC [ 2 2 7 z ---> "\e[227z"
- ESC [ 1 8 ~ ---> "\e[18~"
- C-M-r ---> "\e\C-r"
-
- 3. If some prefix of the character sequence is already bound, you must
- unbind it by binding it to `nil'. For example:
-
- (global-set-key "\e[" nil)
-
- 4. Pick a command to bind your key sequence to. A command can be a
- "symbol" with a function definition, or a "lambda list", or a string
- (which is treated as a macro). For example:
-
- (global-set-key "\e[D" 'backward-char)
- (global-set-key "\e[227~" "\exgoto-line\r") ; macro
-
- See `Key Bindings' and `Rebinding' in the online manual.
-
- In Emacs 19 (including Lucid Emacs), you can bind function key F24 like
- this:
-
- (global-set-key 'f24 'some-command)
-
-126: Why does Emacs say `Key sequence XXX uses invalid prefix characters'?
-
- A prefix of the character sequence you were trying to bind was already
- bound. Usually, the sequence is "ESC [", in which case you should
- evaluate this form first:
-
- (define-key esc-map "[" nil)
-
- NOTE: By default, "ESC [" is bound to backward-paragraph, and if you do
- this you will lose this key binding. For most people, this is not a
- problem.
-
- See question 125.
-
-127: Why doesn't this [terminal or window-system setup] code work in my
- .emacs file, but it works just fine after Emacs starts up?
-
- This is because you're trying to do something in your .emacs file that
- needs to be postponed until after the terminal/window-system setup code
- is loaded. This is a result of the order in which things are done
- during the startup of Emacs. For more details see question 135.
-
- In order to postpone the execution of Emacs Lisp code until after the
- terminal/window-system setup, set the value of the variable
- term-setup-hook or window-setup-hook to be a function which does what
- you want.
-
- See etc/OPTIONS for a complete explanation of what Emacs does every time
- it is started.
-
- Here is a simple example of how to set term-setup-hook:
-
- (setq term-setup-hook
- (function
- (lambda ()
- (cond ((string-match "\\`vt220" (or (getenv "TERM") ""))
- ;; Make vt220's "Do" key behave like M-x:
- (define-key CSI-map "29~" 'execute-extended-command))
- ))))
-
-128: How do I use function keys under X Windows?
-
- This depends on whether you are running Emacs inside a terminal emulator
- window, or whether you are allowing Emacs to create its own X window.
- You can tell which you are doing by noticing whether Emacs creates a new
- window when you start it.
-
- If you are running Emacs inside a terminal emulator window, then it
- behaves exactly as it does on any other tty. In this case, for function
- keys to be useful, they must generate character sequences that are sent
- to the programs running inside the window as input. The `xterm' program
- has two different sets of character sequences that it generates when
- function keys are pressed, depending on the sunFunctionKeys X resource
- and the -sf and +sf command line options. (To find out what these key
- sequences are, see question 129.) In addition, with xterm,
- you can override what key sequence a specific function key (or any other
- key) will generate with the `translations' resource. This, for example:
-
- XTerm.VT100.Translations: #override \
- <KeyPress>F1: string(0x1b) string("[xyzzy")
-
- makes the function key F1 generate the character sequence "ESC [xyzzy".
-
- On the other hand, if Emacs is managing its own X window, the following
- description applies. Emacs receives `KeyPress' events from the X server
- when a key is pressed while the keyboard focus is in its window. The
- KeyPress event contains an X "keysym" code, which is simply an arbitrary
- number corresponding to the name of the keysym, and information on which
- "modifiers" such as `control' and `shift' are active. For example, the
- `Tab' keysym is 0xff09. (Generally, a key on the keyboard will generate a
- keysym whose name is the same as the label on the key, ie. the `Tab' key
- will normally generate the `Tab' keysym. This can be changed with the
- xmodmap program.) Emacs recognizes all the keysyms that correspond to
- standard ASCII characters and internally uses the ASCII character instead.
-
- (WARNING: I am about to describe a gross, disgusting hack to you, have
- your barf bag ready.)
-
- When Emacs receives the X keysym of one of the arrow keys, it behaves
- the same as if it had received a letter key with the control modifier
- down as follows (this is hard-coded):
-
- Up becomes C-p
- Down becomes C-n
- Right becomes C-f
- Left becomes C-b
-
- The way Emacs treats other keysyms depends on what kind of machine it was
- compiled on. The type of the display machine is irrelevant! Function
- keys are mapped internally to escape sequences, while other keys are
- completely ignored.
-
- 1. If compiled on a Sun, Emacs recognizes these X keysyms that
- are normally on a Sun keyboard:
-
- F1 through F9
- L1 through L10 (same as F11 through F20)
- R1 through R15 (same as F21 through F35)
- (The keys labelled R8, R10, R12, and R14 usually are mapped to the
- X keysyms Up, Left, Right, and Down.)
- Break (the `Alternate' key is given this keysym)
-
- These keys work like Sun function keys. When Emacs receives the
- keysym, it will internally use character sequences that look like "ESC
- [ ### z", where ### is replaced by a number. The character sequences
- are identical to those generated by Sun's keyboard under SunView. Any
- function key not listed above generates "ESC [ - 1 z".
-
- In order to use these key sequences, they should be bound to commands
- using the standard key binding methods, just as if Emacs were running
- on a regular terminal.
-
- WARNING: F11 and L1 are the same keysym in X, as are F12 and L2, etc.
- {Yes, this is stupid. Complain to the X consortium.}
-
- 2. If not compiled on a Sun, the function keys will appear to Emacs in a
- way remarkably similar to the keys of a DEC LK201 keyboard (used on
- some VT series terminals). These X keysyms will be recognized:
-
- F1 through F20
- Help (treated same as F15)
- Menu (treated same as F16, is the LK201 `Do' key)
- Find
- Insert (LK201 `Insert Here' key)
- Select
- Prior (LK201 `Prev Screen' key *** ONLY IN 18.58 AND LATER ***)
- Next (LK201 `Next Screen' key *** ONLY IN 18.58 AND LATER ***)
-
- And finally, the LK201 key labelled `Remove' (or `Delete') is often
- mapped to the Delete keysym which generates the DEL character (C-?)
- instead of the key sequence given by the LK201 `Remove' key. It may
- also be mapped to some other keysym, such as `_Remove', in which case
- you can't use it from within Emacs at all.
-
- Each function key will be internally converted to a character sequence
- that looks like "ESC [ ## ~", where ## is replaced by a number. The
- character sequences are identical to those generated by a LK201
- keyboard. Any function key not listed above generates "ESC [ - 1 ~".
-
- For the complete list of the numbers which are generated by the function
- keys, look in the file src/x11term.c at the definitions of the function
- stringFuncVal.
-
- If you are running Emacs on a Sun machine, even if your X display is
- running on a non-Sun machine (eg., an X terminal), you get the setup
- described above for Suns. The determining factor is what type of
- machine Emacs is running (was compiled) on, not what type of machine
- your X display is on.
-
- If you have function keys not listed above on your keyboard, you can use
- `xmodmap' to change their keysym assignments to get keys that Emacs will
- recognize, but that may screw up other programs.
-
- X resources are not used by Emacs to affect the key sequences generated.
- In particular, there are no X key "translations" for Emacs.
-
- If you have function keys not listed above and you don't want to use
- xmodmap to change their names, you might want to make a modification to
- your Emacs. Johan Vromans <jv@mh.nl> has made available a patch for Emacs
- that adds the x-rebind-key function of Epoch to Emacs 18.58. This allows
- another layer of key rebinding before Emacs even sees the keys, and in
- this layer you can rebind all of the keys and modifier combinations as
- well.
-
- Anonymous FTP:
- /ftp.eu.net:gnu/emacs/FP-Xfun.Z
- /ftp.urc.tue.nl:pub/tex/emacs/FP-Xfun
-
- Johan Vromans explains what this buys for you:
-
- After implementing this, all keyboard keys can be configured to send
- user definable sequences, eg.,
-
- (x-rebind-key "KP_F1" 0 "\033OP")
-
- This will have the keypad key PF1 send the sequence "ESC O P", just like
- an ordinary VT series terminal.
-
-129: How do I tell what characters my function or arrow keys emit?
-
- Use this function by Randal L. Schwartz <merlyn@iwarp.intel.com>:
-
- (defun see-chars ()
- "Displays characters typed, terminated by a 3-second timeout."
- (interactive)
- (let ((chars "")
- (inhibit-quit t))
- (message "Enter characters, terminated by 3-second timeout.")
- (while (not (sit-for 3))
- (setq chars (concat chars (list (read-char)))
- quit-flag nil)) ; quit-flag maybe set by C-g
- (message "Characters entered: %s" (key-description chars))))
-
- Alternatively, use the "C-h l" view-lossage command, which will display
- the last 100 characters Emacs has seen in its input stream. Kevin
- Gallagher <kgallagh@digi.lonestar.org> suggests typing some unique string
- like "wxyz", typing the key in question, then typing "C-h l". The
- characters that appear between "wxyz" and "C-h l" were generated by the
- key.
-
-130: How do I set the X key "translations" for Emacs?
-
- Sorry, you can't; there are no "translations" to be set. Emacs is not
- written using the Xt library. The only way to affect the behavior of keys
- within Emacs is through `xmodmap' (outside Emacs) or `define-key' (inside
- Emacs).
-
-131: How do I handle C-s and C-q being used for flow control?
-
- C-s and C-q are used in the XON/XOFF flow control protocol. This screws
- up Emacs because it binds these characters to commands. Also, by default
- Emacs will not honor them as flow control characters and may overwhelm
- output buffers. Sometimes, intermediate software using XON/XOFF flow
- control will prevent Emacs from ever seeing C-s and C-q.
-
- Possible solutions:
-
- * Disable the use of C-s and C-q for flow control.
-
- You need to determine what is the cause of the flow control.
-
- * your terminal
-
- Your terminal may use XON/XOFF flow control to have time to display
- all the characters it receives. For example, VT series terminals do
- this. It may be possible to turn this off from a setup menu. For
- example, on a VT220 you may select `No XOFF' in the setup menu. This
- is also true for some terminal emulation programs on PCs.
-
- When you turn off flow control at the terminal, you will also need to
- turn it off at the other end, which might be at the computer you are
- logged in to or at some terminal server in between.
-
- If you turn off flow control, characters may be lost; using a printer
- connected to the terminal may fail. You may be able to get around
- this problem by modifying the `termcap' entry for your terminal to
- include extra NUL padding characters.
-
- * a modem
-
- If you are using a dialup connection, the modems may be using XON/XOFF
- flow control. I don't know how to get around this.
-
- * a router or terminal server
-
- Some network box between the terminal and your computer may be using
- XON/XOFF flow control. It may be possible to make it use some other
- kind of flow control. You will probably have to ask your local
- network experts for help with this.
-
- * tty and/or pty devices
-
- If your connection to Emacs goes through multiple tty and/or pty
- devices, they may be using XON/XOFF flow control even when it is not
- necessary.
-
- Eirik Fuller <eirik@theory.tn.cornell.edu> writes:
-
- Some versions of `rlogin' (and possibly telnet) do not pass flow
- control characters to the remote system to which they connect. On
- such systems, Emacs on the remote system cannot disable flow control
- on the local system. Sometimes `rlogin -8' will avoid this problem.
-
- One way to cure this is to disable flow control on the local host
- (the one running rlogin, not the one running rlogind) using the stty
- command, before starting the rlogin process. On many systems, `stty
- start u stop u' will do this.
-
- Some versions of `tcsh' will prevent even this from working. One
- way around this is to start another shell before starting rlogin,
- and issue the stty command to disable flow control from that shell.
-
- Use `stty -ixon' instead of `stty start u stop u' on some systems.
-
- * Make Emacs speak the XON/XOFF flow control protocol.
-
- You can make Emacs treat C-s and C-q as flow control characters by
- evaluating this form:
-
- (set-input-mode nil t)
-
- If you are fixing this for yourself, simply put the form in your .emacs
- file. If you are fixing this for your entire site, the best place to
- put it is unclear. I don't know if this has any effect when used in
- lisp/site-init.el when building Emacs; I've never tried that. {Can
- someone tell me whether it works?} Putting things in users' .emacs files
- has a number of problems.
-
- Putting this form in lisp/default.el has the problem that if the user's
- .emacs file has an error, this will prevent lisp/default.el from being
- loaded and Emacs may be unusable for the user, even for correcting their
- .emacs file (unless they're smart enough to move it to another name). A
- possible solution is to initially disable C-s and C-q by setting
- keyboard-translate-table in lisp/site-init.el, either with swap-keys
- (see question 136) or with the following form:
-
- ;; by Roger Crew <crew@cs.stanford.edu>:
- (setq keyboard-translate-table
- "\C-@\C-a\C-b\C-c\C-d\C-e\C-f\C-g\C-h\C-i\C-j\C-k\C-l\C-m\C-n\C-o\C-p\C-^\C-r\C-\\\C-t\C-u\C-v\C-w\C-x\C-y\C-z\C-[\C-s\C-]\C-q\C-_")
-
- This will at least prevent Emacs from being confused by the flow control
- characters, even if lisp/default.el cannot be loaded. Then, in
- lisp/default.el, enable XON/XOFF flow control with set-input-mode.
-
- For further discussion of this issue, read the file PROBLEMS in the
- Emacs distribution.
-
-132: How do I use commands bound to C-s and C-q (or any key) if these keys
- are filtered out?
-
- I suggest swapping C-s with C-\ and C-q with C-^:
-
- (swap-keys ?\C-s ?\C-\\)
- (swap-keys ?\C-q ?\C-^)
-
- See question 136 for the implementation of swap-keys. This method
- has the advantage that it simultaneously swaps the characters everywhere
- throughout Emacs, while just switching the keybindings will miss important
- places where the character codes are stored (eg., the search-repeat-char
- variable, major mode keymaps, etc.).
-
- To do this for an entire site, you may want to swap the keys in
- lisp/default.el. If only some of your users are connecting through
- XON/XOFF flow-controlled connections, you will want to do this
- conditionally. I suggest pre-swapping them in lisp/site-init.el when
- Emacs is built, and then in lisp/default.el, if it is determined to be
- safe, they can be reenabled (being careful not to screw up any other key
- mappings users might have established using keyboard-translate-table).
- See question 131 for an easy way to pre-swap these keys.
-
- WARNING: If you do this for an entire site, the users will be confused by
- the disparity between what the documentation says and how Emacs actually
- behaves.
-
-133: Why does the `BackSpace' key invoke help?
-
- The BackSpace key (on every keyboard I've used) generates ASCII code 8.
- C-h sends the same code. In Emacs by default C-h invokes help-command.
- This is intended to be easy to remember since the first letter of "help"
- is "h". The easiest solution to this problem is to use C-h (and
- BackSpace) for help and DEL (the Delete key) for deleting the previous
- character.
-
- For many people this solution may be problematic:
-
- * They normally use BackSpace outside of Emacs for deleting the previous
- character typed. This can be solved by making DEL be the command for
- deleting the previous character outside of Emacs. This command will do
- this on many Unix systems:
-
- stty erase '^?'
-
- * The person may prefer using the BackSpace key for deleting the previous
- character because it is more conveniently located on their keyboard or
- because they don't even have a separate Delete key. In this case, the
- BackSpace key should be made to behave like Delete. There are several
- methods.
-
- * Under X Windows, the easiest solution is to change the BackSpace key
- into a Delete key like this:
-
- xmodmap -e "keysym BackSpace = Delete"
-
- * Some terminals (eg., VT3## terminals) allow the character generated by
- the BackSpace key to be changed from a setup menu.
-
- * You may be able to get a keyboard that is completely programmable.
-
- * Under X or on a dumb terminal, it is possible to swap the BackSpace
- and Delete keys inside Emacs:
-
- (swap-keys ?\C-h ?\C-?)
-
- See question 136 for the implementation of swap-keys.
-
- * Another approach is to switch keybindings and put help on "C-x h"
- instead:
-
- (global-set-key "\C-h" 'delete-backward-char)
- (global-set-key "\C-xh" 'help-command) ; override mark-whole-buffer
-
- Other popular key bindings for help are M-? and "C-x ?".
-
- WARNING: Don't try to bind DEL to help-command, because there are many
- modes that have local bindings of DEL that will interfere.
-
-134: Why doesn't Emacs look at the stty settings for Backspace vs. Delete?
-
- Good question!
-
-135: Why don't the arrow keys work?
-
- When Emacs starts up, it doesn't know anything about arrow keys at all
- (except when running under X, see question 128). During the process of
- starting up, Emacs will load a terminal-specific initialization file for
- your terminal type (as determined by the environment variable TERM), if
- one exists. This file has the responsibility for enabling the arrow keys.
-
- There are several things that can go wrong:
-
- 1. There is no initialization file for your terminal.
-
- You can determine this by looking in the lisp/term directory. If your
- terminal type (as determined by the TERM environment variable) is
- xxx-yy-z, then the first of these files in the lisp/term directory will
- be loaded as the terminal-specific initialization file: xxx-yy-z.el,
- xxx-yy.el, or xxx.el.
-
- There are two major cases of this problem:
-
- * Your terminal type is very similar to one that has an init file.
-
- In this case, there are several techniques suggested by Colin Jensen
- <cjensen@ampex.com>, Ben Liblit <Liblit@cs.psu.edu>, and Marc
- Auslander <marc@watson.ibm.com>:
-
- A. Add a symbolic link in lisp/term for your terminal type that
- points to the similar type. For example, you could make VT102
- terminals work with this command:
-
- ln -s vt100.el vt102.el
-
- This fixes things for everyone on the system who uses the terminal
- type.
-
- B. If you can't do the solution in part A, you can add code to your
- term-setup-hook that loads the correct file like this:
-
- (setq term-setup-hook
- (function
- (lambda ()
- (cond ((equal "vt102" (or (getenv "TERM") ""))
- (load (concat term-file-prefix "vt100")))
- (;; Code for other terminal types goes here ...
- )))))
-
- C. If you use `tset' to set your TERM environment variable when you
- login, you can use the `-m' switch to tell tset to use a terminal
- type known by Emacs instead of another similar one. For example,
- specifying this:
-
- tset ... -m 'dec-vt220:vt220' ...
-
- will make tset say you are on a `vt220' instead of a `dec-vt220'.
-
- D. Interactively, you can type "M-x load-library RET term/vt100" to
- load the terminal-specific initialization files for VT100
- terminals.
-
- * Your terminal type is not similar to one that has an init file.
-
- One can be made for your terminal, or you can just add code to your
- own .emacs to handle this problem for yourself. For example, if your
- terminal's arrow keys send these character sequences:
-
- Up: ESC [ A
- Down: ESC [ B
- Right: ESC [ C
- Left: ESC [ D
-
- then you can bind these keys to the appropriate commands with code in
- your .emacs like this:
-
- (setq term-setup-hook
- (function
- (lambda ()
- (cond ((string-match "\\`xyzzy" (or (getenv "TERM") ""))
- ;; First, must unmap the binding for left bracket
- (or (keymapp (lookup-key global-map "\e\["))
- (define-key global-map "\e\[" nil))
- ;; Enable terminal type xyzzy's arrow keys:
- (define-key global-map "\e\[A" 'previous-line)
- (define-key global-map "\e\[B" 'next-line)
- (define-key global-map "\e\[C" 'forward-char)
- (define-key global-map "\e\[D" 'backward-char))
- ((string-match "\\`abcde" (or (getenv "TERM") ""))
- ;; Do something different for terminal type abcde
- ;; .....
- )))))
-
- NOTE: You may have to restart Emacs to get changes to take effect.
-
- NOTE: Your arrow keys may send sequences beginning with "ESC O" when
- Emacs is running, even if they send sequences beginning with "ESC [" at
- all other times. This is because Emacs uses any command there may be
- in your terminal's termcap entry for putting the terminal into
- "Application Keypad Mode". Just map these sequences the same way as
- above.
-
- The next two cases are problems even if there is a initialization file for
- your terminal type.
-
- 2. The initialization file for your terminal doesn't bind arrow keys.
-
- If your terminal type is `xterm', you will have to bind the arrow keys
- as in part 1 above, since the xterm.el file doesn't do anything useful.
- There may be other terminal types with the same problem.
-
- 3. Your terminal's arrow keys send individual control characters.
-
- For example, the arrow keys on an ADM-3 send C-h, C-j, C-k, and C-l.
-
- There is not much Emacs can do in this situation, since all the control
- characters except for C-^ and C-\ are already used as Emacs commands.
- It may be possible to convince the terminal to send something else when
- you press the arrow keys; it is worth investigating.
-
- You have to make the hard choices of how to rebind keys to commands to
- make things work the way you want. Another alternative is to start
- learning the standard Emacs keybindings for moving point around: C-b,
- C-f, C-p, and C-n. Personally, I no longer use the arrow keys when
- editing because I have switched keyboards so many times.
-
- 4. Your terminal's arrow keys send sequences beginning with "ESC [".
-
- Due to an extremely poor design decision (ie., these sequences are ANSI
- standard), none of the the terminal-specific initialization files that
- are distributed with Emacs will bind these character sequences to the
- appropriate commands by default. (This also applies to any other
- function keys which generate character sequences starting with "ESC
- [".) This is because it was deemed far more important to preserve the
- binding of M-[ to the backward-paragraph command. It appears that this
- will change in Emacs 19.
-
- Some of the terminal-specific initialization files that come with Emacs
- provide a command enable-arrow-keys that will fix this problem. To get
- this automatically invoked, put this in your .emacs:
-
- (setq term-setup-hook
- (function
- (lambda ()
- (if (fboundp 'enable-arrow-keys) (enable-arrow-keys)))))
-
- We put this in our lisp/default.el file, so users don't have to worry
- about it:
-
- ;; don't override a user's term-setup-hook
- (or term-setup-hook
- (setq term-setup-hook
- (function
- (lambda ()
- (and (fboundp 'enable-arrow-keys)
- ;; don't override a user key mapping
- (eq 'backward-paragraph (lookup-key esc-map "["))
- (enable-arrow-keys))))))
-
- If your terminal type is `sun', you should put this in your .emacs
- instead (or in addition to the above):
-
- (setq sun-esc-bracket t)
-
- It is possible that the terminal-specific initialization file for your
- terminal type was written locally and does not follow the rule
- mentioned above. In this case you may need to inspect it to find out
- how to enable the arrow keys. (Actually, if it was written locally, it
- probably enables the arrow keys by default.)
-
-136: How do I "swap" two keys?
-
- When Emacs receives a character, you can make Emacs behave as though it
- received another character by setting the value of
- keyboard-translate-table. The following Emacs Lisp will do this for you,
- allowing you to "swap" keys. After arranging for this Lisp to be
- evaluated by Emacs, you can evaluate `(swap-keys ?A ?B)' to swap A and B.
-
- (defun swap-keys (key1 key2)
- "Swap keys KEY1 and KEY2 using map-key."
- (map-key key1 key2)
- (map-key key2 key1))
-
- (defun map-key (from to)
- "Make key FROM behave as though key TO was typed instead."
- (setq keyboard-translate-table
- (concat keyboard-translate-table
- (let* ((i (length keyboard-translate-table))
- (j from)
- (k i)
- (str (make-string (max 0 (- j (1- i))) ?X)))
- (while (<= k j)
- (aset str (- k i) k)
- (setq k (1+ k)))
- str)))
- (aset keyboard-translate-table from to)
- (let ((i (1- (length keyboard-translate-table))))
- (while (and (>= i 0) (eq (aref keyboard-translate-table i) i))
- (setq i (1- i)))
- (setq keyboard-translate-table
- (if (eq i -1)
- nil
- (substring keyboard-translate-table 0 (1+ i))))))
-
- NOTE: You must evaluate the definition of these functions before calling
- them! For example, list the function definitions before their use in your
- .emacs file.
-
- NOTE: These functions take two numbers as arguments. The example above,
- `(swap-keys ?A ?B)' is actually `(swap-keys 65 66)', because `?A' is
- merely notation for 65, the ASCII value of `A'.
-
- NOTE: These functions only work for single characters. You cannot swap
- two multi-character sequences.
-
-137: How do I produce C-XXX with my keyboard?
-
- For C-@ and C-^, often you can just type Control-2 and Control-6. For
- C-_, you may have to hold down the shift key, typing Control-Shift-Hyphen.
- C-@ can often be generated by typing Control-Space. C-@ is often called
- the NUL character, and has ASCII value 0. C-_ can often be generated by
- typing Control-7 or Control-/. C-? (aka DEL) may be generated by typing
- Shift-BackSpace or Control-BackSpace or a key labelled Delete or Del.
-
- Try Control with all of the digits on your keyboard to see what gets
- generated.
-
-138: What if I don't have a Meta key?
-
- Instead of typing M-a, you can type "ESC a" instead. In fact, Emacs
- converts M-a internally into "ESC a" anyway (depending on the value of
- meta-prefix-char).
-
-139: What if I don't have an Escape key?
-
- Type C-[ instead. This should send ASCII code 27 just like an Escape
- key would. Try also C-;.
-
-140: How do I type DEL on PC terminal emulators?
-
- Some IBM PC compatibles do not have a key labeled `Del' or `Delete' {is
- this true?}. Those that do generally have it in an inconvenient location.
- (Also, in some terminal emulators, the `Del' key does not transmit DEL.)
- The result is the standard "BackSpace invoking help" problem (see question
- 133).
-
- The usual solution, suggested by Michael Covington
- <mcovingt@aisun1.ai.uga.edu>, is to somehow tell the terminal emulator
- program that BackSpace should transmit DEL. Read the program's manual.
- Shift-BackSpace or Control-BackSpace may send DEL. The `Del' key may only
- send DEL if the NumLock key hasn't been pressed.
-
-141: Can I make my `Compose Character' key behave like a Meta key?
-
- On a dumb terminal such as a VT220, no. It is rumored that certain VT220
- clones could have their Compose key configured this way. If you're using
- X, you might be able to do this with the `xmodmap' program (this is
- what I do).
-
-142: How do I bind a combination of modifier key and function key?
-
- Unless you're using Emacs under emacstool (or xvetool?), have a working
- version of x-rebind-key (see question 128), or are using Emacs 19 (Lucid
- Emacs), you can't do this with Emacs alone.
-
- If you are using emacstool, Emacs sees different character sequences for
- the combination of a modifier and a function key from what it sees for the
- function key alone. See etc/emacstool.1 for more information. Since
- Emacs sees different character sequences, you can bind these different
- sequences to different commands.
-
- If you are running Emacs inside a terminal emulator window like xterm, you
- can modify its translation tables to make it generate different character
- sequences for the combination of a modifier and a function key. For
- example, this X resource setting:
-
- XTerm.VT100.Translations: #override \
- Shift<KeyPress>F1: string(0x1b) string("[xyzzy")
-
- makes Shift-F1 generate the character sequence "ESC [ xyzzy". You can
- bind these character sequences in Emacs as normal. Nick Ruprecht
- <ruprecht@informatik.uni-freiburg.de> has written an extensive X
- translation mapping for xterm that does this. {Does this have an FTP
- site?}
-
- If you have x-rebind-key, you can have any arbitrary combination of
- modifiers with a key replaced by any sequence of "normal" characters. For
- example, this makes Shift-Return behave as though you had typed "C-x C-e"
- (example from Jerry Graves):
-
- (x-rebind-key "Return" 'shift "\C-x\C-e")
-
- In Emacs 19 (Lucid Emacs), you can bind Meta-Left-Arrow like this (example
- from Jamie Zawinski):
-
- (global-set-key '(meta left) 'backward-word)
-
- With the last two methods, use `xmodmap' and `xev' to discover the keysym
- and modifier names.
-
-143: Why doesn't my Meta key work in an xterm window?
-
- Try all of these methods before asking for further help:
-
- * You may have big problems using `mwm' as your window manager. {Does
- anyone know a good generic solution to allow the use of the Meta key in
- Emacs with mwm?}
-
- * For X11R4: Make sure it really is a Meta key. Use `xev' to find out
- what keysym your Meta key generates. It should be either Meta_L or
- Meta_R. If it isn't, use xmodmap to fix the situation.
-
- * Make sure the pty the xterm is using is passing 8 bit characters.
- `stty -a' (or `stty everything') should show `cs8' somewhere. If it
- shows `cs7' instead, use `stty cs8 -istrip' (or `stty pass8') to fix
- it.
-
- * If there is an rlogin connection between the xterm and the Emacs, the
- `-8' argument may need to be given to rlogin to make it pass all 8
- bits of every character.
-
- * If the Emacs is running under Ultrix, it is reported that evaluating
- (set-input-mode t nil) helps.
-
- * If all else fails, you can make xterm generate "ESC W" when you type
- M-W, which is the same conversion Emacs would make if it got the M-W
- anyway. In X11R4, the following resource specification will do this:
-
- XTerm.VT100.EightBitInput: false
-
- (This changes the behavior of the insert-eight-bit action.)
-
- With older xterms, you can specify this behavior with a translation:
-
- XTerm.VT100.Translations: #override \
- Meta<KeyPress>: string(0x1b) insert()
-
- You might have to replace `Meta' with `Alt'.
-
-144: Why doesn't my ExtendChar key work as a Meta key under HP-UX 8.0?
-
- This is a result of an internationalization extension in X11R4 and the
- fact that HP is now using this extension. Emacs assumes that
- XLookupString returns the same result regardless of the Meta key state
- which is no longer necessarily true. Until Emacs is fixed, the temporary
- kludge is to run this command after each time the X server is started but
- preferably before any xterm clients are:
-
- xmodmap -e 'remove mod1 = Mode_switch'
-
- NOTE: This will disable the use of the extra keysyms systemwide, which
- may be undesirable if you actually intend to use them.
-
-145: Where can I get key bindings to make Emacs emulate WordStar?
-
- There is a package `wordstar' by Jim Frost <jimf@saber.com> and
- `ws-mode.el' by Juergen Nickelsen <nickel@cs.tu-berlin.de>. Check in the
- Emacs Lisp Archive (see question 89).
-
-146: Where can I get an XEDIT emulator for Emacs?
-
- This question comes up once every couple of months. I have never seen a
- positive reply, so I presume no one has ever written one.
-
-
-
-Using Emacs with Alternate Character Sets
-
-147: How do I make Emacs display 8-bit characters?
-
- There is a patch called the `8-bit ctl-arrow patch' that allows Emacs to
- display characters with codes from 128 to 255. {The original appears to
- have been by Kenneth Cline <cline@proof.ergo.cs.cmu.edu>.} Partially based
- on Johan Widen's earlier work, Johan Vromans <jv@mh.nl> has updated this
- patch for Emacs 18.58 along with some other 8-bit improvements.
-
- Anonymous FTP:
- /ftp.eu.net:gnu/emacs/FP-EightBit.Z
- /ftp.urc.tue.nl:/pub/tex/emacs/FP-EightBit
- /cs.purdue.edu:pub/ygz/cemacs.tar.Z:cemacs/8bit-patch-18.57
- /sics.se:archive/emacs-18.55-8bit-diff
- /laas.laas.fr:pub/emacs/patch-8bit-18.55
- /laas.laas.fr:pub/emacs/patch-8bit-18.57
-
- Via e-mail:
- To: mail-server@sics.se
- body: send emacs-18.55-8bit-diff
-
- Anders Edenbrandt <anderse@dna.lth.se> has produced a more comprehensive
- patch for Emacs 18.59 that allows for 8-bit input and output.
-
- Anonymous FTP:
- /ftp.efd.lth.se:pub/gnu/emacs_8-bit.patch
-
- In the words of the author:
-
- With these patches, Emacs becomes fully 8-bit operational. There is
- support for displaying 8-bit characters, as well as for entering such
- characters from the keyboard. In addition, upcase/lowcase translation
- is supported, accented characters are recognized as "letters" (important
- when doing 'forward-word', for example), and text with 8-bit characters
- can be sorted correctly.
-
- A Meta-shift key can still be used, provided that you run in an
- environment where it is possible to distinguish between a character
- entered using the Meta-shift key and one entered directly. The diffs
- include patches to make this work under SunView (with emacstool) as
- well as under X. If you can't use a Meta-shift key, you have to enter
- Meta-commands with the ESC-prefix.
-
- The most comprehensive patches for 8-bit output are by Howard Gayle
- (originally for Emacs 18.55. These patches allow displaying any arbitrary
- string for a given 8-bit character (except TAB and C-j). Also supported
- is defining the sorting order and the uppercase and lowercase
- translations. It is reported that the 8-bit character support in Emacs 19
- is largely based on these patches. Thomas Bellman
- <Bellman@lysator.liu.se> has updated these patches for Emacs 18.59.
-
- Anonymous FTP:
- /sics.se:archive/emacs-gayle.tar.Z (patches for 18.55)
- /ftp.lysator.liu.se:pub/emacs/gayle-18.58.diff.tar.Z (patches)
- /ftp.lysator.liu.se:pub/emacs/emacs-18.59-gayle.tar.Z (patched Emacs)
-
- Epoch's 8-bit character support is based on Anders Edenbrandt's patches.
- Lucid Emacs has the ctl-arrow patch installed. Nemacs displays 8-bit
- characters, and it may be useful for displaying the 8-bit ISO-8859
- alphabet, but I don't know for sure (see question 149).
-
-148: How do I input 8-bit characters?
-
- Minor modes for ISO Latin-1 that allow one to easily input this character
- set have been written by several people. Such modes have been written by
- Matthieu Herrb <matthieu@laas.fr> (laas.laas.fr:pub/emacs/iso-latin-1.el),
- Johan Vromans <jv@mh.nl> {FTP site??}, and Marc Shapiro
- <shapiro@sor.inria.fr> {FTP site??}.
-
- These approaches differ from the one taken by Anders Edenbrandt in that
- his method uses direct 8-bit input, while these methods use a compose
- sequence for 8-bit characters. {I have heard conflicting reports on
- whether this results in losing the Meta key. Perhaps this depends on
- whether Emacs is running under X. Can someone resolve this?}
-
- Karl Heuer <karl@haddock.ima.isc.com> is said to have a patch to allow
- 8-bit input. Georg-Wilhelm Koltermann <gwk@crmunich0.cray.com> also has a
- patch for either 18.57 or 18.58 that allows 8-bit input.
-
- Epoch comes with a patch that allows it to input 8-bit characters, but it
- is not enabled by default. {Is this right?}
-
- Jamie Zawinski says:
-
- Lucid GNU Emacs allows the input of any ISO-8859/1 keysyms that your
- keyboard generates (see xmodmap), and contains a package that implements
- a DEC/OpenWindows-like "Compose" key for systems which don't have one.
-
-149: Where can I get an Emacs that can handle kanji characters?
-
- Nemacs 3.3.2 (Nihongo GNU Emacs) is a modified version of GNU Emacs 18.55
- that handles kanji characters. It is available via anonymous FTP:
-
- /crl.nmsu.edu:pub/misc/nemacs-3.3.2.tar.Z
- /miki.cs.titech.ac.jp:JAPAN/nemacs/nemacs-3.3.2.tar.Z
-
- You might also need files for "wnn", a kanji input method
- (wnn-4.0.3{-README,.tar.Z} {on which machine?}). You need a terminal (or
- terminal emulator) that can display text encoded in JIS, Shift-JIS, or EUC
- (Extended Unix Code), or the ability to run Nemacs as a direct X Window
- client.
-
-150: Where can I get an Emacs that can handle Chinese?
-
- `cemacs' by Stephen G. Simpson <simpson@math.psu.edu> is a patch to Emacs
- 18.57 (the ctl-arrow patch) and some Emacs Lisp code that combined with
- Cxterm allows using Chinese characters. It is available via anonymous
- FTP:
-
- /crl.nmsu.edu:pub/chinese/cemacs.tar.Z
- /cs.purdue.edu:pub/ygz/cemacs.tar.Z
-
- Cxterm is available from the same place:
-
- /cs.purdue.edu:pub/ygz/cxterm-11.5.1.tar.Z
-
-151: Where is an Emacs that can handle Semitic (right-to-left) alphabets?
-
- Joel M. Hoffman <joel@wam.umd.edu> writes:
-
- A couple of years ago a wrote a hebrew.el file that allows right-to-left
- editing of Hebrew. I relied on the hardware to display the Hebrew
- letters, given the right codes, but not for any right-to-left support;
- the hardware also doesn't have to send any specific char. codes. Emacs
- keeps track of when the user is typing Hebrew vs. English. (The VT-*
- terminals in Israel contain built-in support for Hebrew.)
-
- To get it to work I had to modify only a few lines of GNU Emacs's source
- code --- just enough to make it 8-bit clean.
-
- [and in a separate message:]
-
- It doesn't produce time-order ["sefer" format] (I wouldn't recommend
- trying that with emacs, because converting time-order to screen-order
- with arbitrarily long lines is a bit tricky), but I also concocted a
- quick filter to convert screen-order into time-order. I'll be happy to
- send you the requisite files if you want them. If you're using it for
- anything large, however, you'll want something that works better.
-
- Joel Hoffman has also written a "bi-directional bi-lingual Emacs-like"
- editor for MS-DOS named Ibelbe (Itty Bitty Emacs-Like Bidirectional
- Editor). Ibelbe is written in Turbo Pascal and comes with source code.
- Here is the description:
-
- Ibelbe looks like emacs (it even has a minibuffer and filename
- completion), and fully supports both right-to-left and left-to-right
- editing. Other than an EGA monitor or better, no special hardware is
- required. You will need an EGA Hebrew font to use Ibelbe with Hebrew.
-
- Anonymous FTP:
- /israel.nysernet.org:israel/msdos/ibelbe.zip
- /israel.nysernet.org:israel/msdos/hebfont.zip
-
- Joseph Friedman <yossi@deshaw.com, yossi@Neon.Stanford.EDU> has written
- patches for Emacs 18.55 and 18.58 that provide Semitic language support
- under X Windows.
-
- Warren Burstein <warren@itex.jct.ac.il> says he has mapped 7-bit keys by
- modifying self-insert-command "for Hebrew input on 7-bit keyboards".
-
- A good suggestion is to query archie for files named with `hebrew'.
-
- GNU Emacs FAQ: Mail and News
-
-This portion of the GNU Emacs FAQ list is cross-posted to `gnu.emacs.gnus'
-because many of the questions herein deal with GNUS. See `gnu.emacs.help' for
-the rest of the FAQ list.
-
-If you are viewing this text in a GNU Emacs Buffer, you can type "M-2 C-x $" to
-get an overview of just the questions. Then, when you want to look at the text
-of the answers, just type "C-x $".
-
-To search for a question numbered XXX, type "M-C-s ^XXX:", followed by a C-r if
-that doesn't work, then type ESC to end the search.
-
-A `+' in the 78th column means something was inserted on the line. A `-' means
-something was deleted and a `!' means some combination of insertions and
-deletions occurred.
-
-Full instructions for getting the latest FAQ are in question 22. Also see the
-`Introduction to news.answers' posting in the `news.answers' newsgroup, or send
-e-mail to `mail-server@rtfm.mit.edu' with `help' on a body line, or use FTP,
-WAIS, or Prospero to rtfm.mit.edu.
-
-
-
-Mail and News
-
-152: How do I change the included text prefix in mail/news followups?
-
- Many people want Emacs to prefix included text with something like ` > '
- instead of with three spaces. One way is to change the code of the
- function `mail-yank-original' in lisp/sendmail.el that prefixes with
- spaces. A more flexible solution is to use Supercite, which provides wide
- configurability in how you format included text in replies. See question
- 107. Both of these solutions work for RMAIL and GNUS.
-
- A related problem is how to prevent Emacs from including various headers
- of the replied-to message. For this, you should set the value of
- mail-yank-ignored-headers, which takes a regexp value.
-
-153: How do I save a copy of outgoing mail?
-
- Two methods:
-
- 1. (setq mail-self-blind t) will result in a `BCC:' header line with your
- address being added to mail composition buffers. This will cause the
- mail system to send a copy of the mail back to you.
-
- 2. (setq mail-archive-file-name (expand-file-name "~/outgoing")) will
- result in an `FCC:' header line with the pathname of ~/outgoing being
- added to mail composition buffers. When you send the mail, Emacs will
- save a copy of the mail in the file ~/outgoing and then strip off the
- `FCC:' line before actually sending.
-
- WARNING: There is a bug in Emacs 18.58 that prevents mail readers such
- as RMAIL from reading the saved mail messages individually. See
- question 155.
-
- WARNING: If you are visiting the file ~/outgoing at the time you send
- the mail, this can cause a variety of horrible problems. Jamie
- Zawinski has written a solution for this.
-
- It does not work to put `set record filename' in the .mailrc file.
-
-154: Why doesn't Emacs expand my aliases when sending mail?
-
- * You must separate multiple addresses in the headers of the mail buffer
- with commas. This is because Emacs supports RFC822 standard addresses
- like this one:
-
- To: Willy Smith <wks@xpnsv.lwyrs.com>
-
- However, you do not need to separate addresses with commas in your
- .mailrc file.
-
- WARNING: Emacs breaks up aliases in the .mailrc file into multiple
- addresses both on commas and on whitespace, regardless of any use of
- quotes. This is probably a bug. You can get around this by directly
- setting the value of mail-aliases.
-
- * Emacs normally only reads the `.mailrc' file once per session, when you
- start to compose your first mail message. If you edit .mailrc, you can
- type "M-ESC (build-mail-aliases) RET" to make Emacs reread .mailrc.
- (You have to include the parentheses where they are shown!)
-
- * Emacs does not interpret vendor-specific additions to the format of the
- .mailrc file such as the `source' command. It also ignores any `set'
- commands. The only commands it looks at are `alias' and `group'
- commands.
-
-155: Why does RMAIL think all my saved messages are one big message?
-
- There is a bug for FCC-ed messages in Emacs 18.58 where it adds a timezone
- on the "From " line after the year instead of before the year. (Before it
- didn't add the timezone at all.) This is incompatible with the standard
- format for the "From " line, and RMAIL in particular can no longer
- distinguish between the messages. Karl Berry <karl@cs.umb.edu>, Felix Lee
- <flee@cs.psu.edu>, Nick Gianniotis <nico@japan.sbi.com> and many
- others have all posted patches for this. Karl's is the simplest and just
- stops Emacs from adding the timezone:
-
- >*** ./ORIG/sendmail.el Tue Jan 28 16:22:56 1992
- >--- ./sendmail.el Thu May 14 18:23:48 1992
- >***************
- >*** 285,287 ****
- > (insert "\nFrom " (user-login-name) " "
- >! (current-time-string) " " timezone "\n")
- > (insert-buffer-substring rmailbuf)
- >--- 285,287 ----
- > (insert "\nFrom " (user-login-name) " "
- >! (current-time-string) "\n")
- > (insert-buffer-substring rmailbuf)
-
-156: How can I sort the messages in my RMAIL folder?
-
- Use rmailsort.el by Masanobu Umeda.
-
-157: Why does RMAIL need to write to /usr/spool/mail?
-
- This is the behavior of the `movemail' program which RMAIL uses. This
- indicates that movemail is configured to use lock files.
-
- RMS writes:
-
- Certain systems require lock files to interlock access to mail files.
- On these systems, movemail must write lock files, or you risk losing
- mail. You simply must arrange to let movemail write them.
-
- Other systems use the flock system call to interlock access. On these
- systems, you should configure movemail to use flock.
-
-158: How do I recover my mail files after RMAIL munges their format?
-
- Users who just want to try RMAIL out to see how it works end up trapped
- using it because saved mail in their `mbox' file has been converted into
- an incompatible format (BABYL) that only RMAIL understands. RMAIL
- provides no obvious way to reverse this transformation. Kyle Jones has
- aptly named this "the great Emacs Mail Eating Monster". To convert a mail
- file back to standard Unix format, there are several methods:
-
- * Use the rmail-output ("C-o") command within RMAIL on each message in the
- file. First use M-x rmail or M-x rmail-input to visit the RMAIL file in
- Rmail mode. Type "1 j" to go to the first message. Use the C-o command
- to output the message to a Unix format file. Type "n" to go to the next
- message. Repeat.
-
- * If the file contains hundreds of messages, you may not want to repeat
- this for all of them. Instead of the above, after getting to the first
- message type this (where "mbox" is the file you want to put the messages
- in):
-
- C-x ( C-o mbox RET M-s ^From: RET M-0 C-x )
-
- (The rmail-search command ("M-s") is used instead of just "n" because it
- is the only command which will cause an error when it reaches the last
- message in the file, which is necessary to terminate the keyboard macro.
- This will fail if there are messages in the file that don't have a
- `From:' header. This assumes rmail-delete-after-output is nil.)
-
- It is wise to save a copy of the RMAIL file first, in case you make a
- mistake.
-
- * There are software packages available for converting files or even
- entire directories of BABYL files to standard Unix format. These are
- helpful in this situation, but are intended mainly for people who have
- used RMAIL for a long time and are converting to some other mail reader.
- Lookup `rmail', `vm', and `babyl' in the Emacs Lisp Archive (see
- question 89).
-
- You may wish to disable RMAIL to avoid accidentally destroying your mbox
- file (I have this in my .emacs):
-
- (put 'rmail 'disabled t) ; avoid mbox destruction
-
-159: How do I make Emacs automatically start my mail/news reader?
-
- Example:
-
- emacs -f gnus
-
- Also:
-
- alias gnus 'emacs -f gnus'
-
- It is probably unwise to automatically start your mail or news reader from
- your .emacs file. This would cause problems if you needed to run two
- copies of Emacs at one time. Also, this would make it difficult for you
- to start Emacs quickly when you needed to.
-
-160: How do I read news under Emacs?
-
- There are at least three news reading packages that operate inside Emacs.
- `rnews' comes with Emacs. GNUS and Gnews come separately. rnews will
- be replaced by GNUS in Emacs 19.
-
- rnews works only with a local news spool directory. Both GNUS and Gnews
- handle reading news remotely via NNTP in addition to reading from a local
- news spool. GNUS supports reading mail stored in MH folders or articles
- saved by GNUS.
-
- Gnews is styled after `rn' and seems to work like RMAIL. GNUS feels more
- like VM. People have complained that GNUS uses a lot of CPU time (it
- does). Some people have complained that Gnews is slower than GNUS.
-
- For more information about GNUS, see question 108.
-
- Gnews was written by Matthew P. Wiener <weemba@libra.wistar.upenn.edu>.
- The latest version seems to be 2.0, posted October 3, 1988. Matthew
- posted some fixes on October 26, 1988. Gnews does not appear to have been
- supported after this date. In particular, it has been reported that Gnews
- does not work with Emacs 18.57. There is a newsgroup for Gnews called
- gnu.emacs.gnews.
-
-161: Why does `rnews' say "No News is good news" when there is news?
-
- rnews doesn't speak NNTP. You may need to use GNUS or Gnews.
-
-162: Why doesn't GNUS work anymore via NNTP?
-
- There is a bug in NNTP version 1.5.10, such that when multiple requests
- are sent to the NNTP server, the server only handles the first one before
- blocking waiting for more input which never comes. NNTP version 1.5.11
- claims to fix this.
-
- You can work around the bug inside Emacs like this:
-
- (setq nntp-maximum-request 1)
-
- I also have a patch for NNTP 1.5.10 by Mike Pelletier
- <stealth@engin.umich.edu> that is based on the timeout code that was in
- 1.5.9. However, please try to upgrade to 1.5.11 first.
-
- You can find out what version of NNTP your news server is running by
- telnetting to the NNTP port (usually 119) on the news server machine (ie.,
- `telnet server-machine 119'). The server should give its version number
- in the welcome message. Type `quit' to get out.
-
-163: How do I view text with embedded underlining (eg., ClariNews)?
-
- Underlining appears like this:
-
- _^Hu_^Hn_^Hd_^He_^Hr_^Hl_^Hi_^Hn_^Hi_^Hn_^Hg
-
- You can destructively remove underlining with M-x ununderline-region.
-
- For ClariNews articles, clari-clean.el by David N. Blank-Edelman
- <dnb@meshugge.media.mit.edu> will remove both underlining and overstriking
- automatically.
-
-164: When I try to post a long article in GNUS (about 10K or longer), I get
- the error, "Writing to process: no more processes, nntpd"
-
- Upgrade to Emacs 18.58 or higher.
-
-165: How do I save all the items of a multi-part posting in GNUS?
-
- Use gnus-mark.el by Jamie Zawinski <jwz@lucid.com>.
-
-166: Why does GNUS put the subjects in replies beyond the 80th column?
-
- This is a feature. If you set gnus-thread-hide-subject to non-nil, GNUS
- will only display the subject of the first posting in a thread, even if
- some of the replies use different subjects. It hides the subjects by
- putting them past the edge of the window and setting truncate lines to t.
-
- If your screen looks messed up, then for some reason truncate-lines in
- your `*Subject*' buffer has been set to nil. It should be set to t.
-
- (I have an enhancement to GNUS 3.13 that will make it only hide the subject
- of a posting when it is unchanged from the followed-up-to posting. Thus,
- you can use the subject hiding feature and still know when someone changes
- the subject. (I have forgotten who originally gave me the idea for this.))
-
-167: Why is GNUS so slow to start up?
-
- GNUS does several things that take quadratic time of the number of
- newsgroups that are listed in .newsrc. The quick fix for this is to
- remove all the newsgroups in which you have no interest from your .newrc
- file by using GNUS's C-k command in the `*Newsgroup*' buffer after
- displaying all newsgroups with the L command. If you were to directly
- edit your .newsrc to remove the newsgroups, GNUS would add them back.
-
- GNUS uses a quadratic algorithm to check for duplicates when the .newsrc
- file is newer than the .newsrc.el file (ie., you edited your .newsrc).
- GNUS uses a quadratic algorithm to check for new newsgroups every time it
- connects to the news server. {There may be other quadratic algorithms
- that I am not aware of.}
-
- You can speed up GNUS by using the C-k command in the *Newsgroup* buffer
- to remove newsgroups from your .newsrc file.
-
- Of course, GNUS will run faster if you make sure it is byte-compiled.
-
- Felix Lee wrote some enhancements called `gnus-speedups.el' that fix some
- of the problems. See the Emacs Lisp Archive.
-
-168: How do I catch up all newsgroups in GNUS?
-
- In the `*Newsgroup*' buffer, type the following magical incantation:
-
- M-< C-x ( C-@ c y C-u C-@ C-e C-f C-f M-0 C-x )
-
- Leave off the "M-<" if you only want to catch up from point to the end of
- the `*Newsgroup' buffer.
-
-169: Why can't I kill in GNUS on the Newsgroups/Keywords/Control line?
-
- GNUS 3.14.1 will complain that the `Newsgroups:', `Keywords:', and
- `Control:' headers are `Unknown header field's.
-
- For the `Newsgroups:' header, there is an easy workaround: kill on the
- `Xref' header instead, which will be present on any cross-posted article.
-
- If you really want to kill on one of these headers, you can do it like
- this:
-
- (gnus-kill nil "^Newsgroups: .*\\(bad\\.group\\|worse\\.group\\)")
-
- Various people (eg., Greg Holley <holley@acuson.com>) have posted
- solutions to allow more efficient killing on these headers than the
- preceding solution. Masanobu Umeda plans to fix this problem.
-
-170: How do I get rid of flashing messages in GNUS for slow connections?
-
- GNUS outputs "NNTP: Reading..." message and then clears them, over and
- over. In version 3.14.1 there is a variable named nntp-debug-read that
- can help. Johan Vromans <jv@mh.nl> wrote a fix. Others have also written
- fixes.
-
-171: Why is catch up slow in Gnews/GNUS?
-
- Because GNUS is marking crosspostings read. {I think it should do this at
- the time the article is read to spread out the load. Maybe someone will
- write the code to do this.}
-
-172: Why does GNUS hang for a long time when posting?
-
- David Lawrence <tale@uunet.uu.net> explains:
-
- The problem is almost always interaction between NNTP and C News. NNTP
- POST asks C News's inews to not background itself but rather hang around
- and give its exit status so it knows whether the post was successful.
- (That wait will on some systems not return the exit status of the
- waited for job is a different sort of problem.) It ends up taking a
- long time because inews is calling relaynews, which often waits for
- another relaynews to free the lock on the news system so it can file the
- article.
-
- My preferred solution is to change inews to not call relaynews, but
- rather use newsspool. This loses some error-catching functionality, but
- is for the most part safe as inews will detect a lot of the errors on
- its own. The C News folks have sped up inews, too, so speed should look
- better to most folks as that update propagates around.
-
-173: Why don't my news postings in GNUS get past the local machine?
-
- Three possible reasons: local distribution, C News date problem (see
- question 174, and the path problem. This piece of code may fix the path
- problem for you:
-
- (setq gnus-use-generic-path t)
-
-174: Why is the GNUS-generated `Date:' header invalid?
-
- GNUS generates `Date:' headers without time zones. C-News's `inews'
- doesn't replace it with a valid header, but will generate it if not
- already there. If it is invalid, the article will not be forwarded
- properly. Quick fix:
-
- (defun gnus-inews-date () nil)
-
- This is not fixed as of GNUS 3.14.1.
-
-175: Why doesn't GNUS generate the `Lines:' header?
-
- GNUS was written for B news, which would generate the `Lines:' header. C
- news doesn't. There is a comment in C news's `inews' that you can
- uncomment to enable this functionality. Or you can have GNUS generate the
- header, for example:
-
- ;; idea by jbryans@beach.csulb.edu (Jack Bryans)
- (defun add-lines-header ()
- ;; Count the number of lines in the current posting and insert the
- ;; header line Lines into the message.
- (save-excursion
- (goto-char (point-min))
- (if (search-forward "\n\n") ;; ***** I suspect this is wrong *****
- (let ((lines (count-lines (point) (point-max))))
- (forward-line -1)
- (insert-string "Lines: " lines "\n")))))
-
- Mike Williams <mike-w@cs.aukuni.ac.nz> has written something similar.
-
- Ronald Florence <ron@mlfarm.com> has a patch for GNUS that makes it
- calculate the `Lines:' header for incoming articles when necessary that
- works for sites with local news spools.
-
- David Lawrence <tale@uunet.uu.net> says that GNUS 3.14.1 generates Lines
- if gnus-news-system is Cnews.
-
-176: Why do I get "Cannot open load file" "nntp" when compiling GNUS?
-
- Specifically, the error message is this:
-
- Error occurred processing gnus.el: File error (("Cannot open load file" "nntp"))
-
- This means that nntp.el is not in Emacs's load-path, which is easy to
- happen when compiling using the Makefile.
-
- Easiest solution: set EMACSLOADPATH in Makefile (idea from Glenn Gribble
- <glenn@netcom.com>):
-
- EMACSLOADPATH=/usr/local/emacs/lisp:.
- ELC= env EMACSLOADPATH=$(EMACSLOADPATH) emacs -batch -f batch-byte-compile
-
- Another solution, in hack.el put this:
-
- (defun gross-hack () (setq load-path (cons "/directory" load-path)))
-
- Then in Makefile:
-
- ELC= emacs -batch -l hack.el -f gross-hack -f batch-byte-compile
-
-177: How do I kill all articles in GNUS but those matching a pattern?
-
- Example:
-
- ;; kill everything
- (gnus-kill "subject" "" nil nil)
- ;; then restore stuff by our favorite poster
- (gnus-kill "from" "good-guy"
- (function
- (lambda ()
- (if (eq ?X (char-after (save-excursion
- (beginning-of-line 1)
- (point))))
- (gnus-Subject-clear-mark-forward 1))))
- t)
-
-
-
-----------------------------------------------------------------------
-Copyright (C) 1990, 1991, 1992 Joseph Brian Wells
-Copyright (C) 1992, 1993 Steven Byrnes
-
-This list of frequently asked questions about GNU Emacs with answers
-("FAQ") may be translated into other languages, transformed into other
-formats (e.g. Texinfo, Info, WWW, WAIS, etc.), and updated with new
-information. The same conditions apply to any derivative of the FAQ as
-apply to the FAQ itself. Every copy of the FAQ must include this notice
-or an approved translation, information on who is currently maintaining
-the FAQ and how to contact them (including their e-mail address), and
-information on where the latest version of the FAQ is archived (including
-FTP information). The FAQ may be copied and redistributed under these
-conditions, except that the FAQ may not be embedded in a larger literary
-work unless that work itself allows free copying and redistribution.
diff --git a/etc/Makefile b/etc/Makefile
deleted file mode 100644
index 1149d1cc23c..00000000000
--- a/etc/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-DESTDIR=
-LIBDIR=/usr/local/lib
-BINDIR=/usr/local/bin
-MANDIR=/usr/man/man1
-MANEXT=1
-
-all:
-
-mostlyclean clean:
- -rm -f core
-
-distclean realclean:
- -rm -f DOC* core
-
-SOURCES = [0-9A-QS-Z]* README *.[ch16] emacs.* etags.* ledit.l ms-* \
- news.texi rc2log refcard.tex spook-lines termcap.* ulimit.hack \
- vcdiff vipcard.tex xmouse.doc
-
-unlock:
- chmod u+w $(SOURCES)
-
-relock:
- chmod u-w $(SOURCES)
diff --git a/etc/README b/etc/README
deleted file mode 100644
index 1d32cc8c91f..00000000000
--- a/etc/README
+++ /dev/null
@@ -1,7 +0,0 @@
-This directory contains the architecture-independent files used by or
-with Emacs. This includes some text files of documentation for GNU
-Emacs or of interest to Emacs users, and the file of dumped docstrings
-for Emacs functions and variables.
-
-`termcap.dat' is for VMS. It is a copy of the `/etc/termcap' file
-used on Unix.
diff --git a/etc/TUTORIAL b/etc/TUTORIAL
deleted file mode 100644
index 59a797c9ca0..00000000000
--- a/etc/TUTORIAL
+++ /dev/null
@@ -1,879 +0,0 @@
-Copyright (c) 1985 Free Software Foundation, Inc; See end for conditions.
-
-You are looking at the Emacs tutorial.
-
-Emacs commands generally involve the CONTROL key (sometimes labelled
-CTRL or CTL) or the META key (sometimes labelled EDIT). Rather than
-write out META or CONTROL each time we want you to prefix a character,
-we'll use the following abbreviations:
-
- C-<chr> means hold the CONTROL key while typing the character <chr>
- Thus, C-f would be: hold the CONTROL key and type f.
- M-<chr> means hold the META or EDIT key down while typing <chr>.
- If there is no META or EDIT key, type <ESC>, release it,
- then type the character <chr>. "<ESC>" stands for the
- key labelled "ALT" or "ESC".
-
-Important note: to end the Emacs session, type C-x C-c. (Two characters.)
-The characters ">>" at the left margin indicate directions for you to
-try using a command. For instance:
-<<Blank lines inserted here by startup of help-with-tutorial>>
->> Now type C-v (View next screen) to move to the next screen.
- (go ahead, do it by depressing the control key and v together).
- From now on, you'll be expected to do this whenever you finish
- reading the screen.
-
-Note that there is an overlap when going from screen to screen; this
-provides some continuity when moving through the file.
-
-The first thing that you need to know is how to move around from
-place to place in the file. You already know how to move forward a
-screen, with C-v. To move backwards a screen, type M-v (depress the
-META key and type v, or type <ESC>v if you don't have a META or EDIT
-key).
-
->> Try typing M-v and then C-v to move back and forth a few times.
-
-
-* SUMMARY
----------
-
-The following commands are useful for viewing screenfuls:
-
- C-v Move forward one screenful
- M-v Move backward one screenful
- C-l Clear screen and redisplay everything
- putting the text near the cursor at the center.
- (That's control-L, not control-1.)
-
->> Find the cursor and remember what text is near it.
- Then type a C-l.
- Find the cursor again and see what text is near it now.
-
-
-* BASIC CURSOR CONTROL
-----------------------
-
-Getting from screenful to screenful is useful, but how do you
-reposition yourself within a given screen to a specific place?
-There are several ways you can do this. One way (not the best, but
-the most basic) is to use the commands previous, backward, forward
-and next. As you can imagine these commands (which are given to
-Emacs as C-p, C-b, C-f, and C-n respectively) move the cursor from
-where it currently is to a new place in the given direction. Here,
-in a more graphical form are the commands:
-
- Previous line, C-p
- :
- :
- Backward, C-b .... Current cursor position .... Forward, C-f
- :
- :
- Next line, C-n
-
->> Move the cursor to the line in the middle of that diagram
- and type C-l to see the whole diagram centered in the screen.
-
-You'll probably find it easy to think of these by letter. P for
-previous, N for next, B for backward and F for forward. These are
-the basic cursor positioning commands and you'll be using them ALL
-the time so it would be of great benefit if you learn them now.
-
->> Do a few C-n's to bring the cursor down to this line.
-
->> Move into the line with C-f's and then up with C-p's.
- See what C-p does when the cursor is in the middle of the line.
-
-Lines are separated by Newline characters. For most applications
-there should normally be a Newline character at the end of the text,
-as well, but it is up to you to make sure of this. A file can
-validly exist without a Newline at the end.
-
->> Try to C-b at the beginning of a line. Do a few more C-b's.
- Then do C-f's back to the end of the line and beyond.
-
-When you go off the top or bottom of the screen, the text beyond
-the edge is shifted onto the screen so that your instructions can
-be carried out while keeping the cursor on the screen.
-
->> Try to move the cursor off the bottom of the screen with C-n and
- see what happens.
-
-If moving by characters is too slow, you can move by words. M-f
-(Meta-f) moves forward a word and M-b moves back a word.
-
->> Type a few M-f's and M-b's. Intersperse them with C-f's and C-b's.
-
-Notice the parallel between C-f and C-b on the one hand, and M-f and
-M-b on the other hand. Very often Meta characters are used for
-operations related to English text whereas Control characters operate
-on the basic textual units that are independent of what you are
-editing (characters, lines, etc). There is a similar parallel between
-lines and sentences: C-a and C-e move to the beginning or end of a
-line, and M-a and M-e move to the beginning or end of a sentence.
-
->> Try a couple of C-a's, and then a couple of C-e's.
- Try a couple of M-a's, and then a couple of M-e's.
-
-See how repeated C-a's do nothing, but repeated M-a's keep moving
-farther. Do you think that this is right?
-
-Two other simple cursor motion commands are M-< (Meta Less-than),
-which moves to the beginning of the file, and M-> (Meta Greater-than),
-which moves to the end of the file. You probably don't need to try
-them, since finding this spot again will be boring. On most terminals
-the "<" is above the comma and you must use the shift key to type it.
-On these terminals you must use the shift key to type M-< also;
-without the shift key, you would be typing M-comma.
-
-The location of the cursor in the text is also called "point". To
-paraphrase, the cursor shows on the screen where point is located in
-the text.
-
-Here is a summary of simple moving operations including the word and
-sentence moving commands:
-
- C-f Move forward a character
- C-b Move backward a character
-
- M-f Move forward a word
- M-b Move backward a word
-
- C-n Move to next line
- C-p Move to previous line
-
- C-a Move to beginning of line
- C-e Move to end of line
-
- M-a Move back to beginning of sentence
- M-e Move forward to end of sentence
-
- M-< Go to beginning of file
- M-> Go to end of file
-
->> Try all of these commands now a few times for practice.
- Since the last two will take you away from this screen,
- you can come back here with M-v's and C-v's. These are
- the most often used commands.
-
-Like all other commands in Emacs, these commands can be given
-arguments which cause them to be executed repeatedly. The way you
-give a command a repeat count is by typing C-u and then the digits
-before you type the command. If you have a META or EDIT key, you can
-omit the C-u if you hold down the META or EDIT key while you type the
-digits. This is easier, but we recommend the C-u method because it
-works on any terminal.
-
-For instance, C-u 8 C-f moves forward eight characters.
-
->> Try giving a suitable argument to C-n or C-p to come as close
- as you can to this line in one jump.
-
-The only apparent exception to this is the screen moving commands,
-C-v and M-v. When given an argument, they scroll the screen up or
-down by that many lines, rather than screenfuls. This proves to be
-much more useful.
-
->> Try typing C-u 8 C-v now.
-
-Did it scroll the screen up by 8 lines? If you would like to
-scroll it down you can give an argument to M-v.
-
-If you are using X Windows, there is probably a rectangular area
-called a scroll bar at the right hand side of the Emacs window. You
-can scroll the text by clicking the mouse in the scroll bar.
-
->> Try pressing the middle button at the top of the highlighted area
-within the scroll bar, then moving the mouse while holding that button
-down.
-
->> Move the mouse to a point in the scroll bar about three lines from
-the top, and click the left button a couple of times. Then try the
-right button a couple of times.
-
-
-* WHEN EMACS IS HUNG
---------------------
-
-If Emacs gets into an infinite (or simply very long) computation which
-you don't want to finish, you can stop it safely by typing C-g.
-You can also use C-g to discard a numeric argument or the beginning of
-a command that you don't want to finish.
-
->> Type C-u 100 to make a numeric arg of 100, then type C-g.
- Now type C-f. How many characters does it move?
- If you have typed an <ESC> by mistake, you can get rid of it
- with a C-g.
-
-If you type <ESC> <ESC>, you get a new window appearing on
-the screen, telling you that M-ESC is a "disabled command"
-and asking whether you really want to execute it. The command
-M-ESC is marked as disabled because you probably don't want to
-use it until you know more about Emacs, and we expect it would
-confuse you if it were allowed to go ahead and run. If you really
-want to try the M-ESC command, you could type a Space in answer
-to the question and M-ESC would go ahead. Normally, if you do
-not want to execute M-ESC, you would type "n" to answer the question.
-
->> Type <ESC> <ESC>, then type n.
-
-
-* WINDOWS
----------
-
-Emacs can have several windows, each displaying its own text.
-At this stage it is better not to go into the techniques of
-using multiple windows. But you do need to know how to get
-rid of extra windows that may appear to display help or
-output from certain commands. It is simple:
-
- C-x 1 One window (i.e., kill all other windows).
-
-That is Control-x followed by the digit 1.
-C-x 1 makes the window which the cursor is in become
-the full screen, by getting rid of any other windows.
-
->> Move the cursor to this line and type C-u 0 C-l.
->> Type Control-h k Control-f.
- See how this window shrinks, while a new one appears
- to display documentation on the Control-f command.
-
->> Type C-x 1 and see the documentation listing window disappear.
-
-
-* INSERTING AND DELETING
-------------------------
-
-If you want to insert text, just type it. Characters which you can
-see, such as A, 7, *, etc. are taken by Emacs as text and inserted
-immediately. Type <Return> (the carriage-return key) to insert a
-Newline character.
-
-You can delete the last character you typed by typing <Rubout>.
-<Rubout> is a key on the keyboard, which might be labelled "Delete"
-instead of "Rubout" on some terminals. More generally, <Rubout>
-deletes the character immediately before the current cursor position.
-
->> Do this now, type a few characters and then delete them
- by typing <Rubout> a few times. Don't worry about this file
- being changed; you won't affect the master tutorial. This is just
- a copy of it.
-
->> Now start typing text until you reach the right margin, and keep
- typing. When a line of text gets too big for one line on the
- screen, the line of text is "continued" onto a second screen line.
- The backslash at the right margin indicates a line which has
- been continued.
->> Use <Rubout>s to delete the text until the line fits on one screen
- line again. The continuation line goes away.
-
->> Move the cursor to the beginning of a line and type <Rubout>. This
- deletes the newline before the line and merges the line onto
- the previous line. The resulting line may be too long to fit, in
- which case it has a continuation line.
->> Type <Return> to reinsert the Newline you deleted.
-
-Remember that most Emacs commands can be given a repeat count;
-this includes characters which insert themselves.
-
->> Try that now -- type C-u 8 * and see what happens.
-
-You've now learned the most basic way of typing something in
-Emacs and correcting errors. You can delete by words or lines
-as well. Here is a summary of the delete operations:
-
- <Rubout> delete the character just before the cursor
- C-d delete the next character after the cursor
-
- M-<Rubout> kill the word immediately before the cursor
- M-d kill the next word after the cursor
-
- C-k kill from the cursor position to end of line
- M-k kill to the end of the current sentence
-
-Notice that <Rubout> and C-d vs M-<Rubout> and M-d extend the parallel
-started by C-f and M-f (well, <Rubout> isn't really a control
-character, but let's not worry about that). C-k and M-k are like C-e
-and M-e, sort of, in that lines are opposite sentences.
-
-Now suppose you kill something, and then you decide that you want to
-get it back? Well, whenever you kill something bigger than a
-character, Emacs saves it for you. To yank it back, use C-y. You
-can kill text in one place, move elsewhere, and then do C-y; this is
-a good way to move text around. Note that the difference
-between "Killing" and "Deleting" something is that "Killed" things
-can be yanked back, and "Deleted" things cannot. Generally, the
-commands that can destroy a lot of text save it, while the ones that
-attack only one character, or nothing but blank lines and spaces, do
-not save.
-
-For instance, type C-n a couple times to position the cursor
-at some line on this screen.
-
->> Do this now, move the cursor and kill that line with C-k.
-
-Note that a single C-k kills the contents of the line, and a second
-C-k kills the line itself, and make all the other lines move up. If
-you give C-k a repeat count, it kills that many lines AND their
-contents.
-
-The text that has just disappeared is saved so that you can
-retrieve it. To retrieve the last killed text and put it where
-the cursor currently is, type C-y.
-
->> Try it; type C-y to yank the text back.
-
-Think of C-y as if you were yanking something back that someone
-took away from you. Notice that if you do several C-k's in a row
-the text that is killed is all saved together so that one C-y will
-yank all of the lines.
-
->> Do this now, type C-k several times.
-
-Now to retrieve that killed text:
-
->> Type C-y. Then move the cursor down a few lines and type C-y
- again. You now see how to copy some text.
-
-What do you do if you have some text you want to yank back, and then
-you kill something else? C-y would yank the more recent kill. But
-the previous text is not lost. You can get back to it using the M-y
-command. After you have done C-y to get the most recent kill, typing
-M-Y replaces that yanked text with the previous kill. Typing M-y
-again and again brings in earlier and earlier kills. When you
-have reached the text you are looking for, you can just go away and
-leave it there. If you M-y enough times, you come back to the
-starting point (the most recent kill).
-
->> Kill a line, move around, kill another line.
- Then do C-y to get back the second killed line.
- Then do M-y and it will be replaced by the first killed line.
- Do more M-y's and see what you get. Keep doing them until
- the second kill line comes back, and then a few more.
- If you like, you can try giving M-y positive and negative
- arguments.
-
-
-* UNDO
-------
-
-Any time you make a change to the text and wish you had not done so,
-you can undo the change (return the text to its previous state)
-with the undo command, C-x u. Normally, C-x u undoes one command's
-worth of changes; if you repeat the C-x u several times in a row,
-each time undoes one more command. There are two exceptions:
-commands that made no change (just moved the cursor) do not count,
-and self-inserting characters are often lumped together in groups
-of up to 20. This is to reduce the number of C-x u's you have to type.
-
->> Kill this line with C-k, then type C-x u and it should reappear.
-
-C-_ is another command for undoing; it is just the same as C-x u
-but easier to type several times in a row. The problem with C-_ is
-that on some keyboards it is not obvious how to type it. That is
-why C-x u is provided as well. On some DEC terminals, you can type
-C-_ by typing / while holding down CTRL. Illogical, but what can
-you expect from DEC?
-
-Giving a numeric argument to C-_ or C-x u is equivalent to repeating
-it as many times as the argument says.
-
-
-* FILES
--------
-
-In order to make the text you edit permanent, you must put it in a
-file. Otherwise, it will go away when your invocation of Emacs goes
-away. You put your editing in a file by "finding" the file. What
-finding means is that you see the contents of the file in your Emacs;
-and, loosely speaking, what you are editing is the file itself.
-However, the changes still don't become permanent until you "save" the
-file. This is so you can have control to avoid leaving a half-changed
-file around when you don't want to. Even then, Emacs leaves the
-original file under a changed name in case your changes turn out
-to be a mistake.
-
-If you look near the bottom of the screen you will see a line that
-begins and ends with dashes, and contains the string "Emacs: TUTORIAL".
-Your copy of the Emacs tutorial is called "TUTORIAL". Whatever
-file you find, that file's name will appear in that precise
-spot.
-
-The commands for finding and saving files are unlike the other
-commands you have learned in that they consist of two characters.
-They both start with the character Control-x. There is a whole series
-of commands that start with Control-x; many of them have to do with
-files, buffers, and related things, and all of them consist of
-Control-x followed by some other character.
-
-Another thing about the command for finding a file is that you have
-to say what file name you want. We say the command "reads an argument
-from the terminal" (in this case, the argument is the name of the
-file). After you type the command
-
- C-x C-f Find a file
-
-Emacs asks you to type the file name. It echoes on the bottom
-line of the screen. You are using the minibuffer now! this is
-what the minibuffer is for. When you type <Return> to end the
-file name, the minibuffer is no longer needed, so it disappears.
-
->> Type C-x C-f, then type C-g. This cancels the minibuffer,
- and also cancels the C-x C-f command that was using the
- minibuffer. So you do not find any file.
-
-In a little while the file contents appear on the screen. You can
-edit the contents. When you wish to make the changes permanent,
-issue the command
-
- C-x C-s Save the file
-
-The contents of Emacs are written into the file. The first time you
-do this, the original file is renamed to a new name so that it
-is not lost. The new name is made by appending "~" to the end
-of the original file's name.
-
-When saving is finished, Emacs prints the name of the file written.
-You should save fairly often, so that you will not lose very much
-work if the system should crash.
-
->> Type C-x C-s, saving your copy of the tutorial.
- This should print "Wrote .../TUTORIAL" at the bottom of the screen.
- On VMS it will print "Wrote ...[...]TUTORIAL."
-
-To make a new file, just find it "as if" it already existed. Then
-start typing in the text. When you ask to "save" the file, Emacs
-will really create the file with the text that you have inserted.
-From then on, you can consider yourself to be editing an already
-existing file.
-
-
-* BUFFERS
----------
-
-If you find a second file with C-x C-f, the first file remains
-inside Emacs. You can switch back to it by finding it again with
-C-x C-f. This way you can get quite a number of files inside Emacs.
-
-The object inside Emacs which holds the text read from one file
-is called a "buffer." Finding a file makes a new buffer inside Emacs.
-To see a list of the buffers that exist in Emacs, type
-
- C-x C-b List buffers
-
->> Try C-x C-b now.
-
-See how each buffer has a name, and it may also have a file name
-for the file whose contents it holds. Some buffers do not correspond
-to files. For example, the buffer named "*Buffer List*" does
-not have any file. It is the buffer which contains the buffer
-list that was made by C-x C-b. ANY text you see in an Emacs window
-has to be in some buffer.
-
->> Type C-x 1 to get rid of the buffer list.
-
-If you make changes to the text of one file, then find another file,
-this does not save the first file. Its changes remain inside Emacs,
-in that file's buffer. The creation or editing of the second file's
-buffer has no effect on the first file's buffer. This is very useful,
-but it also means that you need a convenient way to save the first
-file's buffer. It would be a nuisance to have to switch back to
-it with C-x C-f in order to save it with C-x C-s. So we have
-
- C-x s Save some buffers
-
-C-x s goes through the list of all the buffers you have
-and finds the ones that contain files you have changed.
-For each such buffer, C-x s asks you whether to save it.
-
-
-* EXTENDING THE COMMAND SET
----------------------------
-
-There are many, many more Emacs commands than could possibly be put
-on all the control and meta characters. Emacs gets around this with
-the X (eXtend) command. This comes in two flavors:
-
- C-x Character eXtend. Followed by one character.
- M-x Named command eXtend. Followed by a long name.
-
-These are commands that are generally useful but used less than the
-commands you have already learned about. You have already seen two
-of them: the file commands C-x C-f to Find and C-x C-s to Save.
-Another example is the command to tell Emacs that you'd like to stop
-editing and get rid of Emacs. The command to do this is C-x C-c.
-(Don't worry; it offers to save each changed file before it kills the
-Emacs.)
-
-C-z is the usual way to exit Emacs, because it is always better not to
-kill the Emacs if you are going to do any more editing. On systems
-which allow it, C-z exits from Emacs to the shell but does not destroy
-the Emacs; if you use the C shell, you can resume Emacs with the `fg'
-command (or, more generally, with `%emacs', which works even if your
-most recent job was some other). On systems where suspending is not
-possible, C-z creates a subshell running under Emacs to give you the
-chance to run other programs and return to Emacs afterward, but it
-does not truly "exit" from Emacs. In this case, the shell command
-`exit' is the usual way to get back to Emacs from the subshell.
-
-You would use C-x C-c if you were about to log out. You would
-also use it to exit an Emacs invoked under mail handling programs
-and other random utilities, since they may not believe you have
-really finished using the Emacs if it continues to exist.
-
-There are many C-x commands. The ones you know are:
-
- C-x C-f Find file.
- C-x C-s Save file.
- C-x C-b List buffers.
- C-x C-c Quit Emacs.
- C-x u Undo.
-
-Named eXtended commands are commands which are used even less
-frequently, or commands which are used only in certain modes. These
-commands are usually called "functions". An example is the function
-replace-string, which globally replaces one string with another. When
-you type M-x, Emacs prompts you at the bottom of the screen with
-M-x and you should type the name of the function you wish to call; in
-this case, "replace-string". Just type "repl s<TAB>" and Emacs will
-complete the name. End the command name with <Return>.
-Then type the two "arguments"--the string to be replaced, and the string
-to replace it with--each one ended with a Return.
-
->> Move the cursor to the blank line two lines below this one.
- Then type M-x repl s<Return>changed<Return>altered<Return>.
-
- Notice how this line has changed: you've replaced
- the word c-h-a-n-g-e-d with "altered" wherever it occurred
- after the cursor.
-
-
-* MODE LINE
------------
-
-If Emacs sees that you are typing commands slowly it shows them to you
-at the bottom of the screen in an area called the "echo area." The echo
-area contains the bottom line of the screen. The line immediately above
-it is called the MODE LINE. The mode line says something like
-
---**-Emacs: TUTORIAL (Fundamental)--58%----------------------
-
-This is a very useful "information" line.
-
-You already know what the filename means--it is the file you have
-found. What the --NN%-- means is that NN percent of the file is
-above the top of the screen. If the top of the file is on the screen,
-it will say --Top-- instead of --00%--. If the bottom of the file is
-on the screen, it will say --Bot--. If you are looking at a file so
-small it all fits on the screen, it says --All--.
-
-The stars near the front mean that you have made changes to the text.
-Right after you visit or save a file, there are no stars, just dashes.
-
-The part of the mode line inside the parentheses is to tell you what
-modes you are in. The default mode is Fundamental which is what you
-are in now. It is an example of a "major mode". There are several
-major modes in Emacs for editing different languages and text, such as
-Lisp mode, Text mode, etc. At any time one and only one major mode is
-active, and its name can always be found in the mode line just where
-"Fundamental" is now. Each major mode makes a few commands behave
-differently. For example, there are commands for creating comments in
-a program, and since each programming language has a different idea of
-what a comment should look like, each major mode has to insert
-comments differently. Each major mode is the name of an extended
-command, which is how you get into the mode. For example,
-M-x fundamental-mode is how to get into Fundamental mode.
-
-If you are going to be editing English text, such as this file, you
-should probably use Text Mode.
->> Type M-x text-mode<Return>.
-
-Don't worry, none of the commands you have learned changes Emacs in
-any great way. But you can observe that apostrophes are now part of
-words when you do M-f or M-b. Major modes are usually like that:
-commands don't change into completely unrelated things, but they work
-a little bit differently.
-
-To get documentation on your current major mode, type C-h m.
-
->> Use C-u C-v once or more to bring this line near the top of screen.
->> Type C-h m, to see how Text mode differs from Fundamental mode.
->> Type C-x 1 to remove the documentation from the screen.
-
-Major modes are called major because there are also minor modes.
-They are called minor because they aren't alternatives to the major
-modes, just minor modifications of them. Each minor mode can be
-turned on or off by itself, regardless of what major mode you are in,
-and regardless of the other minor modes. So you can use no minor
-modes, or one minor mode, or any combination of several minor modes.
-
-One minor mode which is very useful, especially for editing English
-text, is Auto Fill mode. When this mode is on, Emacs breaks the line
-in between words automatically whenever the line gets too long. You
-can turn this mode on by doing M-x auto-fill-mode<Return>. When the
-mode is on, you can turn it off by doing M-x auto-fill-mode<Return>.
-If the mode is off, this function turns it on, and if the mode is on,
-this function turns it off. This is called "toggling".
-
->> Type M-x auto-fill-mode<Return> now. Then insert a line of "asdf "
- over again until you see it divide into two lines. You must put in
- spaces between them because Auto Fill breaks lines only at spaces.
-
-The margin is usually set at 70 characters, but you can change it
-with the C-x f command. You should give the margin setting you want
-as a numeric argument.
-
->> Type C-x f with an argument of 20. (C-u 2 0 C-x f).
- Then type in some text and see Emacs fill lines of 20
- characters with it. Then set the margin back to 70 using
- C-x f again.
-
-If you makes changes in the middle of a paragraph, Auto Fill mode
-does not re-fill it for you.
-To re-fill the paragraph, type M-q (Meta-q) with the cursor inside
-that paragraph.
-
->> Move the cursor into the previous paragraph and type M-q.
-
-* SEARCHING
------------
-
-Emacs can do searches for strings (these are groups of contiguous
-characters or words) either forward through the file or backward
-through it. To search for the string means that you are trying to
-locate it somewhere in the file and have Emacs show you where the
-occurrences of the string exist. This type of search is somewhat
-different from what you may be familiar with. It is a search that is
-performed as you type in the thing to search for. The command to
-initiate a search is C-s for forward search, and C-r for reverse
-search. BUT WAIT! Don't do them now. When you type C-s you'll
-notice that the string "I-search" appears as a prompt in the echo
-area. This tells you that Emacs is in what is called an incremental
-search waiting for you to type the thing that you want to search for.
-<RET> terminates a search.
-
->> Now type C-s to start a search. SLOWLY, one letter at a time,
- type the word 'cursor', pausing after you type each
- character to notice what happens to the cursor.
->> Type C-s to find the next occurrence of "cursor".
->> Now type <Rubout> four times and see how the cursor moves.
->> Type <RET> to terminate the search.
-
-Did you see what happened? Emacs, in an incremental search, tries to
-go to the occurrence of the string that you've typed out so far. To go
-to the next occurrence of 'cursor' just type C-s again. If no such
-occurrence exists Emacs beeps and tells you that it is a failing
-search. C-g would also terminate the search.
-
-If you are in the middle of an incremental search and type <Rubout>,
-you'll notice that the last character in the search string is erased
-and the search backs up to the last place of the search. For
-instance, suppose you currently have typed 'cu' and you see that your
-cursor is at the first occurrence of 'cu'. If you now type <Rubout>,
-the 'u' on the search line is erased and you'll be repositioned in the
-text to the occurrence of 'c' where the search took you before you
-typed the 'u'. This provides a useful means for backing up while you
-are searching.
-
-If you are in the middle of a search and type a control or meta
-character (with a few exceptions--characters that are special in
-a search, such as C-s and C-r), the search is terminated.
-
-The C-s starts a search that looks for any occurrence of the search
-string AFTER the current cursor position. But what if you want to
-search for something earlier in the text? To do this, type C-r for
-Reverse search. Everything that applies to C-s applies to C-r except
-that the direction of the search is reversed.
-
-
-* MULTIPLE WINDOWS
-------------------
-
-One of the nice features of Emacs is that you can display more than one
-window on the screen at the same time.
-
->> Move the cursor to this line and type C-u 0 C-l.
-
->> Now type C-x 2 which splits the screen into two windows.
- Both windows display this tutorial. The cursor stays in the top window.
-
->> Type C-M-v to scroll the bottom window.
- (If you don't have a real Meta key, type ESC C-v.)
-
->> Type C-x o ("o" for "other") to move the cursor to the bottom window.
->> Use C-v and M-v in the bottom window to scroll it.
- Keep reading these directions in the top window.
-
->> Type C-x o again to move the cursor back to the top window.
- The cursor is still just where it was in the top window before.
-
-You can keep using C-x o to switch between the windows. Each
-window has its own cursor position, but only one window actually
-shows the cursor. All the ordinary editing commands apply to the
-window that the cursor is in.
-
-The command C-M-v is very useful when you are editing text in one
-window and using the other window just for reference. You can keep
-the cursor always in the window where you are editing, and edit
-there as you advance through the other window.
-
->> Type C-x 1 (in the top window) to get rid of the bottom window.
-
-(If you had typed C-x 1 in the bottom window, that would get rid
-of the top one. Think of this command as "Keep just one
-window--the window I am already in.")
-
-You don't have to display the same buffer in both windows. If
-you use C-x C-f to find a file in one window, the other window
-doesn't change. You can pick a file in each window
-independently.
-
-Here is another way to use two windows to display two different
-things:
-
->> Type C-x 4 C-f followed by the name of one of your files.
- End with <RETURN>. See the specified file appear in the bottom
- window. The cursor goes there, too.
-
->> Type C-x o to go back to the top window, and C-x 1 to delete
- the bottom window.
-
-
-* RECURSIVE EDITING LEVELS
---------------------------
-
-Sometimes you will get into what is called a "recursive editing
-level". This is indicated by square brackets in the mode line,
-surrounding the parentheses around the major mode name. For
-example, you might see [(Fundamental)] instead of (Fundamental).
-
-To get out of the recursive editing level, type
- M-x top-level<Return>.
-
->> Try that now; it should display "Back to top level"
- at the bottom of the screen.
-
-In fact, you were ALREADY at top level (not inside a recursive editing
-level) if you have obeyed instructions. M-x top-level does not care;
-it gets out of any number of recursive editing levels, perhaps zero,
-to get back to top level.
-
-You can't use C-g to get out of a recursive editing level because C-g
-is used for discarding numeric arguments and partially typed commands
-WITHIN the recursive editing level.
-
-
-* GETTING MORE HELP
--------------------
-
-In this tutorial we have tried to supply just enough information to
-get you started using Emacs. There is so much available in Emacs that
-it would be impossible to explain it all here. However, you may want
-to learn more about Emacs since it has numerous desirable features
-that you don't know about yet. Emacs has a great deal of internal
-documentation. All of these commands can be accessed through
-the character Control-h, which we call "the Help character"
-because of the function it serves.
-
-To use the HELP features, type the C-h character, and then a
-character saying what kind of help you want. If you are REALLY lost,
-type C-h ? and Emacs will tell you what kinds of help it can give.
-If you have typed C-h and decide you don't want any help, just
-type C-g to cancel it.
-
-(Some sites rebind the character C-h. They really shouldn't do this
-as a blanket measure, so complain to the operator. Meanwhile, if C-h
-does not display a message about help at the bottom of the screen, try
-typing M-x help RET instead.)
-
-The most basic HELP feature is C-h c. Type C-h, a c, and a
-command character or sequence, and Emacs displays a very brief
-description of the command.
-
->> Type C-h c Control-p.
- The message should be something like
-
- C-p runs the command previous-line
-
-This tells you the "name of the function". That is important in
-writing Lisp code to extend Emacs; it also is enough to remind
-you of what the command does if you have seen it before but did
-not remember.
-
-Multi-character commands such as C-x C-s and (if you have no META or
-EDIT key) <ESC>v are also allowed after C-h c.
-
-To get more information on the command, use C-h k instead of C-h c.
-
->> Type C-h k Control-p.
-
-This displays the documentation of the function, as well as its
-name, in an Emacs window. When you are finished reading the
-output, type C-x 1 to get rid of the help text. You do not have
-to do this right away. You can do some editing while referring
-to the help text and then type C-x 1.
-
-Here are some other useful C-h options:
-
- C-h f Describe a function. You type in the name of the
- function.
-
->> Try typing C-h f previous-line<Return>.
- This prints all the information Emacs has about the
- function which implements the C-p command.
-
- C-h a Command Apropos. Type in a keyword and Emacs will list
- all the commands whose names contain that keyword.
- These commands can all be invoked with Meta-x.
- For some commands, Command Apropos will also list a one
- or two character sequence which has the same effect.
-
->> Type C-h a file<Return>.
-
-This displays in another window a list of all M-x commands with
-"file" in their names. You will also see commands like C-x C-f
-and C-x C-w, listed beside the command names find-file and
-write-file.
-
->> Type C-M-v to scroll the help window. Do this a few times.
-
->> Type C-x 1 to delete the help window.
-
-
-* CONCLUSION
-------------
-
-Remember, to exit Emacs permanently use C-x C-c. To exit to a shell
-temporarily, so that you can come back in, use C-z.
-
-This tutorial is meant to be understandable to all new users, so if
-you found something unclear, don't sit and blame yourself - complain!
-
-
-COPYING
--------
-
-This tutorial descends from a long line of Emacs tutorials
-starting with the one written by Stuart Cracraft for the original Emacs.
-
-This version of the tutorial, like GNU Emacs, is copyrighted, and
-comes with permission to distribute copies on certain conditions:
-
-Copyright (c) 1985 Free Software Foundation
-
- Permission is granted to anyone to make or distribute verbatim copies
- of this document as received, in any medium, provided that the
- copyright notice and permission notice are preserved,
- and that the distributor grants the recipient permission
- for further redistribution as permitted by this notice.
-
- Permission is granted to distribute modified versions
- of this document, or of portions of it,
- under the above conditions, provided also that they
- carry prominent notices stating who last altered them.
-
-The conditions for copying Emacs itself are slightly different
-but in the same spirit. Please read the file COPYING and then
-do give copies of GNU Emacs to your friends.
-Help stamp out software obstructionism ("ownership") by using,
-writing, and sharing free software!
diff --git a/etc/sex.6 b/etc/sex.6
deleted file mode 100644
index edff05c1e6b..00000000000
--- a/etc/sex.6
+++ /dev/null
@@ -1,115 +0,0 @@
-SEX(6) EUNUCH Programmer's Manual SEX(6)
-
-
-
-NAME
- sex - have sex
-
-SYNOPSIS
- sex [ options ] ... [ username ] ...
-
-DESCRIPTION
- _s_e_x allows the invoker to have sex with the user(s) speci-
- fied in the command line. If no users are specified, they
- are taken from the LOVERS environment variable. Options to
- make things more interesting are as follows:
-
- -1 masturbate
-
- -a external stimulus (aphrodisiac) option
-
- -b buggery
-
- -B<animal>
- bestiality with <animal>
-
- -c chocolate sauce option
-
- -C chaining option (cuffs included) (see also -m -s -W)
-
- -d<file>
- get a date with the features described in <file>
-
- -e exhibitionism (image sent to all machines on the net)
-
- -f foreplay option
-
- -F nasal sex with plants
-
- -i coitus interruptus (messy!)
-
- -j jacuzzi option (California sites only)
-
- -l leather option
-
- -m masochism (see -s)
-
- -M triple parallel (Menage a Trois) option
-
- -n necrophilia (if target process is not dead, program
- kills it)
-
- -o oral option
-
- -O parallel access (orgy)
-
- -p debug option (proposition only)
-
- -P pedophilia (must specify a child process)
-
-
-
-Printed 2/15/87 2/15/87 1
-
-
-
-
-
-
-SEX(6) EUNUCH Programmer's Manual SEX(6)
-
-
-
- -q quickie (wham, bam, thank you, ma'am)
-
- -s sadism (target must set -m)
-
- -S sundae option
-
- -T<number>
- voice-net sex via standard uucp autodialer facilities;
- area code prefix of 900 is assumed.
-
- -v voyeurism (surveys the entire net)
-
- -w whipped cream option
-
- -W whips (see also -s, -C, and -m)
-
-ENVIRONMENT
- LOVERS
- is a list of default partners which will be used if
- none are specified in the command line. If any are
- specified, the values in LOVERS is ignored.
-
-FILES
- /usr/lib/sex/animals animals for bestiality
-
- /usr/lib/sex/blackbook possible dates
-
- /usr/lib/sex/sundaes sundae recipes
-
- /usr/lib/sex/s&m sado-masochistic equipment
-
-
-
-BUGS
- ^C (quit process) may leave the user very unsatisfied.
-
- ^Z (stop process) is usually quite messy.
-
-MAN AUTHOR
- Author prefers to be anonymous.
-
-HISTORY
- Oldest program ever.
diff --git a/etc/spook.lines b/etc/spook.lines
deleted file mode 100644
index 01ad7e2996c..00000000000
--- a/etc/spook.lines
+++ /dev/null
Binary files differ
diff --git a/etc/tasks.texi b/etc/tasks.texi
deleted file mode 100644
index faa9860693e..00000000000
--- a/etc/tasks.texi
+++ /dev/null
@@ -1,398 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename tasks.info
-@settitle GNU Task List
-@c UPDATE THIS DATE WHENEVER YOU MAKE CHANGES!
-@set lastupdate 16 July 1993
-@c %**end of header
-
-@setchapternewpage off
-
-@titlepage
-@title GNU Task List
-@author Free Software Foundation
-@author last updated @value{lastupdate}
-@end titlepage
-
-@ifinfo
-@node Top, Documentation, (dir), (dir)
-@top GNU Task list
-
-This file is updated automatically from @file{tasks.texi}, which was
-last updated on @value{lastupdate}.
-@end ifinfo
-
-Check with gnu@@prep.ai.mit.edu, for a possibly more current copy.
-This task list is not exclusive; any other useful program might be a
-good project---but it might instead be something we already have, so
-check with gnu@@prep before you start writing it.
-
-@menu
-* Documentation::
-* Unix-Related Projects::
-* Kernel Projects::
-* Extensions::
-* X Windows Projects::
-* Other Projects::
-* Compilers::
-* Games and Recreations::
-@end menu
-
-If you start working steadily on a project, please let gnu@@prep know.
-We might have information that could help you; we'd also like to send
-you the GNU coding standards.
-
-Because of the natural tendency for most volunteers to write
-programming tools or programming languages, we have a comparative
-shortage of applications useful for non-programmer users. Therefore,
-we ask you to consider writing such a program.
-
-In general, a new program that does a completely new job advances the
-GNU project more than an improvement to an existing program.
-
-@node Documentation
-@chapter Documentation
-
-We very urgently need documentation for some parts of the system
-that already exist or will exist very soon:
-
-@itemize @bullet
-
-@item
-A C reference manual. (RMS has written half of one which you could
-start with).
-
-@item
-A manual for Ghostscript.
-
-@item
-A manual for CSH.
-
-@item
-A manual for PIC (the graphics formatting language).
-
-@item
-A manual for Perl. (The manual that exists is not free, and
-is thus not available to be part of the GNU system.)
-
-@item
-A manual for Oleo.
-
-@item
-A book on how GCC works and why various machine descriptions
-are written as they are.
-
-@item
-A manual for programming X-window applications.
-
-@item
-Manuals for various X window managers.
-
-@item
-Reference cards for those manuals that don't have them: Gawk, C
-Compiler, Make, Texinfo, Termcap and maybe the C Library.
-
-@item
-Many utilities need documentation, including @code{grep}, @code{cpio},
-@code{find}, @code{less}, and the other small utilities.
-
-@end itemize
-
-@node Unix-Related Projects
-@chapter Unix-Related projects
-
-@itemize
-
-@item
-We could use an emulation of Unix @code{spell}, which would run by
-invoking @code{ispell}.
-
-@item
-Less urgent: @code{diction}, @code{explain}, @code{style}.
-
-@item
-An improved version of the POSIX utility @code{pax}. There is one on
-the usenet, but it is said to be poorly written. Talk with
-mib@@gnu.ai.mit.edu about this project.
-
-@item
-Modify the GNU @code{dc} program to use the math routines of GNU
-@code{bc}.
-
-@item
-A @code{grap} preprocessor program for @code{troff}.
-
-@item
-Various other libraries.
-
-@item
-An emulation of SCCS that works using RCS.
-
-@end itemize
-
-@node Kernel Projects
-@chapter Kernel-Related projects
-
-@itemize
-
-@item
-An over-the-ethernet debugger that will allow the kernel to be
-debugged from GDB running on another machine.
-
-@item
-A shared memory X11 server to run under MACH is very desirable. The
-machine specific parts should be kept well separated.
-
-@end itemize
-
-@node Extensions
-@chapter Extensions to existing GNU software
-
-@itemize
-
-@item
-Enhance GCC. See files PROJECTS and PROBLEMS in the GCC distribution.
-
-@item
-GNU @code{sed} probably needs to be rewritten completely just to make it
-cleaner.
-
-@item
-Add a few features to GNU @code{diff}, such as handling large input
-files without reading entire files into core.
-
-@item
-Extend GDB with an X-based graphical interface better than @code{xxgdb}.
-
-@item
-An @code{nroff} macro package to simplify @code{texi2roff}.
-
-@item
-A queueing system for the mailer Smail that groups pending work by
-destination rather than by original message. This makes it possible
-to schedule retries coherently for each destination. Talk to
-tron@@veritas.com about this.
-
-@item
-Cross-referencing, flow graph, and execution trace programs for C and
-other languages, like @code{cxref}, @code{cflow}, and @code{ctrace}.
-
-@end itemize
-
-@node X Windows Projects
-@chapter X windows projects
-
-@itemize
-
-@item
-An emulator for Macintosh graphics calls on top of X Windows.
-
-@item
-An emulator for Microsoft windows calls on top of X Windows. (A
-commercial program to do this took just three months to write.)
-
-@item
-A music playing and editing system.
-
-@item
-A program to edit dance notation (such as labanotation) and display
-dancers moving on the screen.
-
-@item
-A library for displaying circle-shaped menus with X windows.
-
-@item
-A program to display and edit Hypercard stacks.
-
-@item
-An interface-builder program to make it easy to design graphical
-interfaces for applications. This could work with the dynamic linker
-DLD and C++, loading in the same class definitions that will be used
-by the application program.
-
-@item
-A desktop program with icons and such, for X-windows.
-
-@item
-A paint program, supporting both bitmap-oriented operations and
-component-oriented operations. @code{xpaint} exists, but isn't very
-usable.
-
-@end itemize
-
-@node Other Projects
-@chapter Other Projects
-
-If you think of others that should be added, please
-send them to gnu@@prep.ai.mit.edu.
-
-@itemize
-
-@item
-[This seems to be being done:]
-A program to convert Postscript to plain ASCII text. Ghostscript will
-soon have a mode to output all the text strings in a document, each with
-its coordinates. You could write a program to start with this output
-and ``layout the page'' in ASCII. The program will be both easier and
-more useful if you don't worry pedantically about how the output text
-should be formatted. Instead, try to make it look reasonable as plain
-ASCII.
-
-@item
-A program to convert compiled programs represented in OSF ANDF
-(``Architecture Neutral Distribution Format'') into ANSI C.
-
-@item
-An imitation of Page Maker or Ventura Publisher.
-
-@item
-An imitation of @code{dbase2} or @code{dbase3} (How dbased!)
-
-@item
-A program to reformat Fortran programs in a way that is pretty.
-
-@item
-A bulletin board system. There are a few free ones, but they don't have
-all the features that people want in such systems. It would make sense
-to start with an existing one and add the other features.
-
-@item
-A general ledger program.
-
-@item
-A single command language that could be suitable for use in a shell, in
-GDB for programming debugging commands, in a program like @code{awk}, in
-a calculator like @code{bc}, and so on. The fact that all these
-programs are similar but different in peculiar details is a great source
-of confusion. We are stuck with maintaining compatibility with Unix in
-our shell, @code{awk}, and @code{bc}, but nothing prevents us from
-having alternative programs using our new, uniform language. This would
-make GNU far better for new users.
-
-@item
-A program to typeset C code for printing.
-For ideas on what to do, see the forthcoming book,
-
-@display
-Human Factors and Typography for More Readable Programs,
-Ronald M. Baecker and Aaron Marcus,
-Addison-Wesley, ISBN 0-201-10745-7
-@end display
-
-(I don't quite agree with a few of the details they propose.)
-
-@item
-Speech-generation programs (there is a program from Brown U that you
-could improve).
-
-@item
-Speech-recognition programs (single-speaker, disconnected speech).
-
-@item
-Scientific mathematical subroutines, including clones of SPSS.
-
-@item
-Statistical tools.
-
-@item
-Software to replace card catalogues in libraries.
-
-@item
-Grammar and style checking programs.
-
-@item
-An implementation of the S language.
-
-@item
-A translator from Scheme to C.
-
-@item
-Optical character recognition programs; especially if suitable for
-scanning documents with multiple fonts and capturing font info as well
-as character codes. This may not be very difficult if you let it
-@emph{train} on part of the individual document to be scanned, so as to
-learn what fonts are in use in that document. We would particularly
-like to scan the Century Dictionary, an unabridged dictionary now in the
-public domain.
-
-You don't need scanning hardware to work on OCR. We can send you
-bitmaps you can use as test data.
-
-@item
-A program to scan a line drawing and convert it to Postscript.
-
-@item
-A program to recognize handwriting.
-
-@item
-A pen based interface.
-
-@item
-Software suitable for creating virtual reality user interfaces.
-
-@item
-CAD software, such as a vague imitation of Autocad.
-
-@item
-Software for displaying molecules.
-
-@item
-Software for comparing DNA sequences, and finding matches and
-alignments.
-
-@end itemize
-
-@node Compilers
-@chapter Compilers for Other Batch Languages
-
-Volunteers are needed to write parsers/front ends for languages such
-as Algol 60, Algol 68, PL/I, or whatever, to be used with the
-code generation phases of the GNU C compiler. (C++ is done, and
-Ada, Fortran, Pascal and Modula are being worked on.)
-
-@node Games and Recreations
-@chapter Games and Recreations
-
-@itemize
-
-@item
-Video-oriented games should work with the X window system.
-
-@item
-Empire (there is a free version but it needs upgrading)
-
-@item
-Imitations of popular video games:
-
-@itemize
-@item
-Space war, Asteroids, Pong, Columns.
-@item
-Defending cities from missiles.
-@item
-Plane shoots at lots of other planes.
-@item
-Wizard fights fanciful monster.
-@item
-A golf game.
-@item
-Program a robot by sticking building blocks together,
-then watch it explore a world.
-@item
-Biomorph evolution (as in Scientific American).
-@item
-A program to display effects of moving at relativistic speeds.
-@end itemize
-
-@item
-Intriguing screen-saver programs to make interesting pictures.
-Other such programs that are simply entertaining to watch.
-For example, an aquarium.
-
-@end itemize
-
-We do not need @code{rogue}, as we have @code{hack}.
-
-@contents
-
-@bye
diff --git a/etc/termcap.dat b/etc/termcap.dat
deleted file mode 100644
index b86869c1fa7..00000000000
--- a/etc/termcap.dat
+++ /dev/null
@@ -1,1246 +0,0 @@
-
-# This is termcap.dat, a copy of the /etc/termcap file included here
-# for use on VMS.
-
-# I know that many terminals are missing from this version of the file
-# because they were deleted at MIT.
-# I hope that someone will add in all the missing terminal types
-# and send me a corrected, larger file.
-
-# These are local terminals.
-
-v1|tvi912|912|920|tvi920|old televideo:\
- :ct=\E3:st=\E1:cr=^M:do=^J:nl=^J:bl=^G:\
- :al=33*\EE:le=^H:ce=\ET:cm=\E=%+ %+ :cl=^Z:co#80:dc=\EW:dl=33*\ER:ei=:\
- :kb=^h:ku=^K:kd=^J:kl=^H:kr=^L:k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:\
- :bs:am:k4=^AD\r:k5=^AE\r:k6=^AF\r:k7=^AG\r:k8=^AH\r:k9=^AI\r:\
- :ho=^^:im=:ic=\EQ:li#24:nd=^L:ta=^I:pt:se=\Ek:so=\Ej:up=^K:us=\El:ue=\Em:\
- :ma=^K^P^L :sg#1:ug#1:
-ZV|bobcat|sbobcat|HP 9000 model 300 console:\
- :al=10*\EL:am:bs:\
- :cd=\EJ:ce=\EK:ch=6\E&a%dC:cl=\EH\EJ:\
- :co#128:da:db:dc=\EP:dl=10*\EM:do=\EB:ei=\ER:\
- :kb=^H:kd=\EB:kh=\Eh:kl=\ED:kr=\EC:ku=\EA:\
- :ke=\E&s0A:ks=\E&s1A:\
- :li#47:mi:nd=\EC:pt:\
- :se=\E&d@:so=\E&dB:\
- :up=\EA:xs:\
- :cm=6\E&a%dy%dC:cv=6\E&a%dY:\
- :im=\EQ:ml=\El:mu=\Em:\
- :ue=\E&d@:us=\E&dD:bt=\Ei:sg#0:
-ZX|gator-t|HP 9000 model 237 emulating extra-tall AAA:\
- :cr=^M:do=^J:nl=^J:bl=^G:al=\E[L:le=^H:bs:\
- :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:co#128:li#94:\
- :dc=\E[P:dl=\E[M:ho=\E[H:ic=\E[@:\
- :AL=1*\E[%dL:DL=1*\E[%dM:IC=4\E[%d@:DC=4\E[%dP:rp=1*%.\E[%db:mr=\E[7m:me=\E[m:\
- :km:ch=\E[%i%d`:\
- :ul:ei=:im=:pt:bw:bt=\E[Z:\
- :mi:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:us=\E[4m:up=\EM:
-ZW|gator|HP 9000 model 237 emulating AAA:\
- :cr=^M:do=^J:nl=^J:bl=^G:al=\E[L:le=^H:bs:\
- :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:co#128:li#47:\
- :dc=\E[P:dl=\E[M:ho=\E[H:ic=\E[@:\
- :AL=1*\E[%dL:DL=1*\E[%dM:IC=4\E[%d@:DC=4\E[%dP:rp=1*%.\E[%db:mr=\E[7m:me=\E[m:\
- :km:ch=\E[%i%d`:\
- :ul:ei=:im=:pt:bw:bt=\E[Z:\
- :mi:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:us=\E[4m:up=\EM:
-ZY|gator-52|HP 9000 model 237 emulating VT52:\
- :cr=^M:do=^J:nl=^J:bl=^G:\
- :le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#128:li#47:nd=\EC:\
- :ta=^I:pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H:\
- :ce=\EK:ho=\EH:
-ZZ|gator-52t|HP 9000 model 237 emulating extra-tall VT52:\
- :cr=^M:do=^J:nl=^J:bl=^G:\
- :le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#128:li#94:nd=\EC:\
- :ta=^I:pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H:\
- :ce=\EK:ho=\EH:
-#
-# N: ANN ARBOR
-#
-N0|aa|annarbor|4080|ann arbor 4080:\
- :cr=^M:do=^J:nl=^J:bl=^G:pt:ct=^\^P^P:st=^]^P1:\
- :cm=^O%r%\066%.%>^S^L%+@:\
- :co#80:li#40:le=^H:bs:cl=2^L:up=^N:nd=^_:ho=^K:am:\
- :kb=^^:kd=^J:ku=^N:kl=^H:kr=^_:kh=^K:ma=^_ ^N^P:
-# Needs function keys added.
-# Originally from Mike O'Brien@Rand and Howard Katseff at Bell Labs.
-# Highly modified 6/22 by Mike O'Brien.
-# split out into several for the various screen sizes by dave-yost@rand
-# Modifications made 3/82 by Mark Horton
-# Modified by Tom Quarles at UCB for greater efficiency and more diversity
-# status line moved to top of screen, vb removed 5/82
-#
-# assumes the following setup:
-# A: 0000 1010 0001 0000
-# B: 9600 0100 1000 0000 0000 1000 0000 17 19
-# C: 56 66 0 0 9600 0110 1100
-# D: 0110 1001 1 0
-#
-# Briefly, the settings are for the following modes:
-# (values are for bit set/clear with * indicating our preference
-# and the value used to test these termcaps)
-# Note that many of these settings are irrelevant to the termcap
-# and are just set to the default mode of the terminal as shipped
-# by the factory.
-#
-# A menu: 0000 1010 0001 0000
-# Block/underline cursor*
-# blinking/nonblinking cursor*
-# key click/no key click*
-# bell/no bell at column 72*
-#
-# key pad is cursor control*/key pad is numeric
-# return and line feed/return for <cr> key *
-# repeat after .5 sec*/no repeat
-# repeat at 25/15 chars per sec. *
-#
-# hold data until pause pressed/process data unless pause pressed*
-# slow scroll/no slow scroll*
-# Hold in area/don't hold in area*
-# functions keys have default*/function keys disabled on powerup
-#
-# show/don't show position of cursor during page transmit*
-# unused
-# unused
-# unused
-#
-# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19
-# Baud rate (9600*)
-#
-# 2 bits of parity - 00=odd,01=even*,10=space,11=mark
-# 1 stop bit*/2 stop bits
-# parity error detection off*/on
-#
-# keyboard local/on line*
-# half/full duplex*
-# disable/do not disable keyboard after data transmission*
-#
-# transmit entire page/stop transmission at cursor*
-# transfer/do not transfer protected characters*
-# transmit all characters/transmit only selected characters*
-# transmit all selected areas/transmit only 1 selected area*
-#
-# transmit/do not transmit line separators to host*
-# transmit/do not transmit page tab stops tabs to host*
-# transmit/do not transmit column tab stop tabs to host*
-# transmit/do not transmit graphics control (underline,inverse..)*
-#
-# enable*/disable auto XON/XOFF control
-# require/do not require receipt of a DC1 from host after each LF*
-# pause key acts as a meta key/pause key is pause*
-# unused
-#
-# unused
-# unused
-# unused
-# unused
-#
-# XON character (17*)
-# XOFF character (19*)
-#
-# C menu: 56 66 0 0 9600 0110 1100
-# number of lines to print data on (printer) (56*)
-#
-# number of lines on a sheet of paper (printer) (66*)
-#
-# left margin (printer) (0*)
-#
-# number of pad chars on new line to printer (0*)
-#
-# printer baud rate (9600*)
-#
-# printer parity: 00=odd,01=even*,10=space,11=mark
-# printer stop bits: 2*/1
-# print/do not print guarded areas*
-#
-# new line is: 01=LF,10=CR,11=CRLF*
-# unused
-# unused
-#
-# D menu: 0110 1001 1 0
-# LF is newline/LF is down one line, same column*
-# wrap to preceding line if move left from col 1*/don't wrap
-# wrap to next line if move right from col 80*/don't wrap
-# backspace is/is not destructive*
-#
-# display*/ignore DEL character
-# display will not/will scroll*
-# page/column tab stops*
-# erase everything*/erase unprotected only
-#
-# editing extent: 0=display,1=line*,2=field,3=area
-#
-# unused
-#
-N1|aaa-29-np|aaa-29 with no padding (for psl):\
- :al=\E[L:ce=\E[K:cl=\E[H\E[J:\
- :dc=\E[P:dl=\E[M:ic=\E[@:
-tc=aaa-29:
-N2|aaa-unk|ann arbor ambassador (internal - don't use this directly):\
- :cr=^M:do=^J:nl=^J:bl=^G:al=1*\E[L:am:le=^H:bs:km:\
- :cd=7.2*\E[J:ce=5\E[K:cl=7.2*\E[H\E[J:cm=\E[%i%d;%dH:co#80:\
- :dc=4\E[P:dl=1*\E[M:ho=\E[H:ic=4\E[@:\
- :md=\E[1m:mr=\E[7m:mb=\E[5m:mk=\E[8m:me=\E[m:\
- :ku=\EM:kd=\ED:kl=\E[D:kr=\E[C:kh=\E[H:ce=\E[K:\
- :ks=\EP`?z~[H~[[J`>z~[[J`8xz~[M`4xz~[[D`6xz~[[C`2xz~[D\E\\:\
- :ke=\EP`?y~[H~[[J`>y~[[2J`8xy~[M`4xy~[[D`6xy~[[C`2xy~[D\E\\:\
- :ch=\E[%i%d`:\
- :ei=:im=:pt:bw:bt=\E[Z:\
- :mi:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:us=\E[4m:up=\EM:\
- :AL=1*\E[%dL:DL=1*\E[%dM:IC=4\E[%d@:DC=4\E[%dP:\
- :cS=\E[%d;%d;%d;%dp:\
- :vs=\E[>52;54h\E[>30;37;38;39l:ve=\E[>52l\E[>37h:
-# All the ti strings used to start with \E[2J, which cleared the screen.
-# But this was so slow that it caused ^S/^Q lossage.
-# So I removed the \E[2J's. -- rms, 1/29/86
-N3|aaa-18|ann arbor ambassador/18 lines:\
- :ti=\E[18;0;0;18p:\
- :te=\E[60;0;0;18p\E[18;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#18:tc=aaa-unk:
-N4|aaa-20|ann arbor ambassador/20 lines:\
- :ti=\E[20;0;0;20p:\
- :te=\E[60;0;0;20p\E[20;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#20:tc=aaa-unk:
-N5|aaa-22|ann arbor ambassador/22 lines:\
- :ti=\E[22;0;0;22p:\
- :te=\E[60;0;0;22p\E[22;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#22:tc=aaa-unk:
-N6|aaa-24|ann arbor ambassador/24 lines:\
- :ti=\E[24;0;0;24p:\
- :te=\E[60;0;0;24p\E[24;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#24:tc=aaa-unk:
-N7|aaa-26|ann arbor ambassador/26 lines:\
- :ti=\E[26;0;0;26p:\
- :te=\E[60;0;0;26p\E[26;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#26:tc=aaa-unk:
-N8|aaa-28|ann arbor ambassador/28 lines:\
- :ti=\E[28;0;0;28p:\
- :te=\E[60;0;0;28p\E[28;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#28:tc=aaa-unk:
-N9|aaa|ambassador|aaa-30|ann arbor ambassador/30 lines:\
- :ti=\E[30;0;0;30p:\
- :te=\E[60;0;0;30p\E[30;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[30;0;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#30:tc=aaa-unk:
-NA|aaa-36|ann arbor ambassador/36 lines:\
- :ti=\E[36;0;0;36p:\
- :te=\E[60;0;0;36p\E[36;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#36:tc=aaa-unk:
-NB|aaa-40|ann arbor ambassador/40 lines:\
- :ti=\E[40;0;0;40p:\
- :te=\E[60;0;0;40p\E[40;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#40:tc=aaa-unk:
-NC|aaa-48|ann arbor ambassador/48 lines:\
- :ti=\E[48;0;0;48p:\
- :te=\E[60;0;0;48p\E[48;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#48:tc=aaa-unk:
-ND|aaa-60|ann arbor ambassador/60 lines:\
- :ti=\E[60;0;0;60p:\
- :te=\E[60;0;0;60p\E[60;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#60:tc=aaa-unk:
-NE|aaa-unk-s|ann arbor ambassador unknown with/status:\
- :hs:es:i2=\E7\E[>51h\E[H\E[2K\E[>51l\E8:\
- :ts=\E7\E[>51h\E[H\E[2K\E[%i%d`:fs=\E[>51l\E8:\
- :ds=\E7\E[>51h\E[H\E[2K\E[>51l\E8:\
- :tc=aaa-unk:
-NF|aaa-18-s|ann arbor ambassador/18 lines + status line:\
- :ti=\E[18;1;0;18p:\
- :te=\E[60;1;0;18p\E[17;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#17:tc=aaa-unk-s:
-NG|aaa-20-s|ann arbor ambassador/20 lines + status line:\
- :ti=\E[20;1;0;20p:\
- :te=\E[60;1;0;20p\E[19;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#19:tc=aaa-unk-s:
-NH|aaa-22-s|ann arbor ambassador/22 lines + status line:\
- :ti=\E[22;1;0;22p:\
- :te=\E[60;1;0;22p\E[21;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#21:tc=aaa-unk-s:
-NI|aaa-24-s|ann arbor ambassador/24 lines + status line:\
- :ti=\E[24;1;0;24p:\
- :te=\E[60;1;0;24p\E[23;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#23:tc=aaa-unk-s:
-NJ|aaa-26-s|ann arbor ambassador/26 lines + status line:\
- :ti=\E[26;1;0;26p:\
- :te=\E[60;1;0;26p\E[25;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#25:tc=aaa-unk-s:
-NK|aaa-28-s|ann arbor ambassador/28 lines + status line:\
- :ti=\E[28;1;0;28p:\
- :te=\E[60;1;0;28p\E[27;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#27:tc=aaa-unk-s:
-NL|aaa-30-s|ann arbor ambassador/30 lines + status line:\
- :ti=\E[30;1;0;30p:\
- :te=\E[60;1;0;30p\E[29;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#29:tc=aaa-unk-s:
-NM|aaa-36-s|ann arbor ambassador/36 lines + status line:\
- :ti=\E[36;1;0;36p:\
- :te=\E[60;1;0;36p\E[35;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#35:tc=aaa-unk-s:
-NN|aaa-40-s|ann arbor ambassador/40 lines + status line:\
- :ti=\E[40;1;0;40p:\
- :te=\E[60;1;0;40p\E[39;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#39:tc=aaa-unk-s:
-NO|aaa-48-s|ann arbor ambassador/48 lines+sl:\
- :ti=\E[48;1;0;48p:te=\E[60;1;0;48p\E[47;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\EP`?y~[[2J~[[H\E7\E[60;1;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#47:tc=aaa-unk-s:
-NP|aaa-60-s|ann arbor ambassador/60 lines + status line:\
- :ti=\E[60;1;0;60p:te=\E[60;1;0;60p\E[59;1H\E[J:\
- :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :li#59:tc=aaa-unk-s:
-NQ|aaa-18-rv|ambassador/18 lines+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-18:
-NR|aaa-20-rv|ambassador/20 lines+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-20:
-NS|aaa-22-rv|ambassador/22 lines+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-22:
-NT|aaa-24-rv|ambassador/24 lines+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-24:
-NU|aaa-26-rv|ambassador/26 lines+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-26:
-NV|aaa-28-rv|ambassador/28 lines+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-28:
-NW|aaa-30-rv|ann arbor ambassador/30 lines in reverse video:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-30:
-NX|aaa-36-rv|ann arbor ambassador/36 lines in reverse video:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-36:
-NY|aaa-40-rv|ann arbor ambassador/40 lines in reverse video:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-40:
-NZ|aaa-48-rv|ann arbor ambassador/48 lines in reverse video:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-48:
-Na|aaa-60-rv|ann arbor ambassador/60 lines in reverse video:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-60:
-Nb|aaa-18-rv-s|aaa-18-s-rv|ambassador/18 lines+sl+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-18-s:
-Nc|aaa-20-rv-s|aaa-20-s-rv|ambassador/20 lines+sl+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-20-s:
-Nd|aaa-22-rv-s|aaa-22-s-rv|ambassador/22 lines+sl+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-22-s:
-Ne|aaa-24-rv-s|aaa-24-s-rv|ambassador/24 lines+sl+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-24-s:
-Nf|aaa-26-rv-s|aaa-26-s-rv|ambassador/26 lines+sl+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-26-s:
-Ng|aaa-28-rv-s|aaa-28-s-rv|ambassador/28 lines+sl+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-28-s:
-Nh|aaa-30-rv-s|aaa-30-s-rv|ambassador/30 lines+sl+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-30-s:
-Ni|aaa-36-rv-s|aaa-36-s-rv|ambassador/36 lines+sl+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-36-s:
-Nj|aaa-40-rv-s|aaa-40-s-rv|ambassador/40 lines+sl+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-40-s:
-Nk|aaa-48-rv-s|aaa-48-s-rv|ambassador/48 lines+sl+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-48-s:
-Nl|aaa-60-rv-s|aaa-60-s-rv|ambassador/60 lines+sl+rv:\
- :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
- :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
- :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
- :tc=aaa-60-s:
-Nm|aaa-24-ctxt:\
- :ti=\E[30;1H\E[K\E[24;0;0;24p:te=\E[60;1;0;24p\E[60;1H\E[K:tc=aaa-24:
-Nn|aaa-24-rv-ctxt:\
- :ti=\E[30;1H\E[K\E[24;0;0;24p:te=\E[60;1;0;24p\E[60;1H\E[K:tc=aaa-24-rv:
-No|aaa-30-s-ctxt:\
- :ti=\E[30;1H\E[K\E[30;1;0;30p:te=\E[60;1;0;30p\E[59;1H\E[K:tc=aaa-30-s:
-Np|aaa-30-s-rv-ctxt:\
- :ti=\E[30;1H\E[K\E[30;1;0;30p:\
- :te=\E[60;1;0;30p\E[59;1H\E[K:tc=aaa-30-s-rv:
-Nq|aaa-ctxt|aaa-30-ctxt:\
- :ti=\E[30;0;0;30p:te=\E[60;0;0;30p\E[60;1H\E[K:tc=aaa-30:
-Nr|aaa-rv-ctxt|aaa-30-rv-ctxt:\
- :ti=\E[30;0;0;30p:te=\E[60;0;0;30p\E[60;1H\E[K:tc=aaa-30-rv:
-Ns|aaa-db|ann arbor ambassador 30/destructive backspace:\
- :ti=\E[H\E[J\E[30;0;0;30p:te=\E7\E[60;0;0;30p\E8:li#30:\
- :is=\E[60;0;0;30p\E[H\E[J\E[1Q\E[m\E[20l\E[>30h:le=\E[D:bc=\E[D:bs@:\
- :tc=aaa-unk:
-#Kludge for supdup
-aaa-supdup|ann arbor ambassador 30/ for supdup :\
- :ns:tc=aaa-30:
-
-#
-# yet another attempt at the aaa terminal from CCA:
-#
-ZJ|aaax|ambasx|ambassadorx|ann arbor ambassador base descriptor/:\
- :al=\E[L:bs:bt=\E[Z:bw:\
- :cd=\E[J:ce=\E[K:ch=\E[%i%d`:cl=\E[H\E[2J:cm=\E[%i%d;%dH:co#80:\
- :cv=\E[%i%dd:da:db:dc=\E[P:dl=\E[M:ho=\E[H:ic=\E[@:\
- :mi:nd=\E[C:pt:sf=\E[S:sr=\E[T:se=\E[m:so=\E[7m:\
- :km:mm=\E[>52h:mo=\E[>52l:\
- :ue=\E[m:up=\E[A:us=\E[4m:
-ZK|aaa48|ambas|ambassador|ann arbor ambassador/48 lines:\
- :is=\E[48;0;0;48p\E[H\E[J\E[1Q\E[m\E[>30l\E[>26l\E[>32h\E[>33h\E[>52h:\
- :li#48:mi:tc=aaax:
-ZL|aaa24|ambas24|ambassador24|ann arbor ambassador/24 lines:\
- :is=\E[24;0;0;24p\E[H\E[J\E[1Q\E[m\E[>30l\E[>26l\E[>32h\E[>33h\E[>52h:\
- :li#24:mi:tc=aaax:
-ZM|aaa30|ambas30|ambassador30|ann arbor ambassador/30 lines:\
- :is=\E[30;0;0;30p\E[H\E[J\E[1Q\E[m\E[>30l\E[>26l\E[>32h\E[>33h\E[>52h:\
- :li#30:mi:tc=aaax:
-ZN|aaa60|ambas60|ambassador60|ann arbor ambassador/60 lines:\
- :is=\E[60;0;0;60p\E[H\E[J\E[1Q\E[m\E[>30l\E[>26l\E[>32h\E[>33h\E[>52h:\
- :li#60:mi:tc=aaax:
-# vt100 -- this has been changed to delete the "pt" ("real tabs")
-# option, which was losing. -- walter 10/84
-d0|vt100-132|vt125-132|dec vt100 with 132 columns:\
- :co#132:tc=vt100:
-d0|vt100|vt100-am|vt100-80|vt125|vt125-80|dec vt100:\
- :cr=^M:bl=^G:le=^H:do=\ED:ho=\E[H:\
- :co#80:li#24:cl=45\E[H\E[2J:bs:am:cm=5\E[%i%d;%dH:nd=\E[C:up=\E[A:\
- :ce=2\E[K:cd=2*\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\
- :md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:\
- :is=\E<\E[m\E>\E[?7h\E[?3;4;6l\200\200\200\200\200\200\200\200:\
- :rs=\E<\E[m\E>\E[?7h\E[?3;4;6l\200\200\200\200\200\200\200\200:\
- :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\
- :cs=\E[%i%d;%dr:ks=\E[?1h\E=:ke=\E[?1l\E>:\
- :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:ta=^I:sf=5\ED:sr=5\EM:xn:\
- :dN#4:vt#3:sc=\E7:rc=\E8:
-d0|vt132-132|dec vt132 with 132 columns:\
- :al=99\E[L:dl=99\E[M:ip=7:dc=7\E[P:ei=\E[4l:im=\E[4h:xn:dN#30:\
- :co#132:tc=vt100:
-d0|vt132|vt132-80|dec vt132 with 80 columns:\
- :al=99\E[L:dl=99\E[M:ip=7:dc=7\E[P:ei=\E[4l:im=\E[4h:xn:dN#30:tc=vt100:
-
-dw|vt52|vt52-80|dec vt52:\
- :cr=^M:do=^J:nl=^J:bl=^G:\
- :le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#24:nd=\EC:\
- :ta=^I:pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H:
-
-# Sun workstation consoles
-Mu|sun|Sun Microsystems Workstation console:\
- :li#34:co#80:cl=^L:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\
- :am:bs:km:mi:ms:pt:\
- :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:rs=\E[s:\
- :kd=\E[B:kl=\E[D:ku=\E[A:kr=\E[C:kh=\E[H:\
- :k1=\E[224z:k2=\E[225z:k3=\E[226z:k4=\E[227z:k5=\E[228z:\
- :k6=\E[229z:k7=\E[230z:k8=\E[231z:k9=\E[232z:\
- :al=\E[L:dl=\E[M:im=:ei=:ic=\E[@:dc=\E[P:\
- :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:
-# From john@ucbrenoir Tue Sep 24 13:14:44 1985
-Mu|sun-s|Sun Microsystems Workstation window with status line:\
- :hs:ts=\E]l:fs=\E\\:ds=\E]l\E\\:tc=sun
-Mu|sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs:\
- :hs:ts=\E]l:fs=\E\\:ds=\E]l\E\\:tc=sun-e:
-M0|sun-48|Sun 48-line window:\
- :li#48:co#80:tc=sun:
-M1|sun-34|Sun 34-line window:\
- :li#34:co#80:tc=sun:
-M2|sun-24|Sun 24-line window:\
- :li#24:co#80:tc=sun:
-M3|sun-17|Sun 17-line window:\
- :li#17:co#80:tc=sun:
-M4|sun-12|Sun 12-line window:\
- :li#12:co#80:tc=sun:
-M5|sun-1|Sun 1-line window for sysline:\
- :li#1:co#80:es:hs:ts=\r:fs=\E[K:ds=^L:tc=sun:
-M6|sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character:\
- :ic@:im@:ei@:tc=sun:
-
-# Nu machine parameters taken from mit-vax.
-# smc - 5/21/85
-#
-dg|nuterminal:\
- :al=1*\EL:am:bs:cd=60\EJ:ce=10\EK:cl=60\EE:cm=10\EY%+ %+ :\
- co#80:dc=2.5*\EN:\
- :dl=1*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:ip=2.5*:li#24:mi:nd=\EC:\
- :as=\EF:ae=\EG:\
- :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\
- :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#8:\
- :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:\
- :l6=blue:l7=red:l8=white:k6=\EP:k7=\EQ:k8=\ER:
-nu|nu24|nuwindow:\
- :al=1*\EL:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#86:\
- :dl=1*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:ip=2.5*:li#24:mi:nd=\EC:\
- :as=\EF:ae=\EG:\
- :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\
- :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:
-bnu|nu51|bnuwindow:\
- :co#86:li#51:tc=nu:
-fnu|nu61|fnuwindow:\
- :co#86:li#61:tc=nu:
-nunix-30|nu-telnet-30|nu-half: Half nu screen thru telnet:\
- :am:al=\EL:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#78:\
- :dl=\EM:do=\EB:ip=2.5*:ho=\EH:li#30:nd=\EC:\
- :pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:
-nunix-61|nu-telnet-61|nu-full| Full nu screen thru telnet:\
- :co#78:li#61:tc=nunix-30:
-
-## VT200 entry for VMS. Also for VT300.
-# Make sure not to use \n for nl or anything else.
-# It is bad form to use ^J,^L,^K to scroll the screen.
-# If the VT2xx doesn't have newline mode set those characters
-# donot move the cursor down a line. Use \ED instead.
-d0|vt200-80|vt200|vt300-80|VT 200 with 80 columns, on VMS:\
- :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
- :LE=\E[%dD:RI=\E[%dC:SR=1*\E[%dM:UP=\E[%dA:al=\E[L:\
- :am:bl=^G:bs:cd=2*\E[J:ce=2*\E[K:cl=45\E[H\E[2J:\
- :cm=%i\E[%d;%dH:co#80:cr=\r:cs=\E[%i%d;%dr:ct=\E[3g:\
- :dc=\E[P:dl=\E[M:dm=:do=\ED:ec=\E[%dX:ed=:ei=\E[4l:\
- :ho=\E[H:ic:im=\E[4h:it#8:k1=\EOP:k2=\EOQ:k3=\EOR:\
- :k4=\EOS:kd=\E[B:ke=\E[?1l\E>:kl=\E[D:kn#4:kr=\E[C:ks=\E[?1h\E=:\
- :ku=\E[A:le=^H:li#24:mb=\E[5m:md=\E[1m:me=\E[0m:mi:\
- :mr=\E[7m:ms:nd=\E[C:nl=\ED:nw=\EE:pf=\E[?4i:po=\E[?5i:\
- :ps=\E[i:rc=\E8:sc=\E7:se=\E[27m:sf=1*\ED:so=\E[7m:\
- :sr=1*\EM:st=\EH:ue=\E[24m:up=\EM:us=\E[4m:xn:
-d0|vt200-132|vt300-132|VT 200 with 132 columns, on VMS:\
- :co#132:tc=vt200-80:
-
-aP|apollo_15P|apollo 15 inch display:\
- :dN@:tc=vt132:
-aQ|apollo_19L|apollo 19 inch display:\
- :dN@:tc=vt132:
-aR|apollo_color|apollo color display:\
- :dN@:tc=vt132:
-aS|apollo_800_color|apollo 800 line color display:\
- :dN@:tc=vt132:
-d3|vt132|vt-132:\
- :al=99\E[L:dl=99\E[M:ip=7:dc=7\E[P:ei=\E[4l:im=\E[4h:xn:dN#30:tc=vt100:
-d0|vt100|vt100n|vt100 with no init:\
- :co#80:li#24:am:bs:pt:xn:cl=45\E[H\E[2J:\
- :cm=%i\E[%d;%dH:nd=\E[C:up=\EM:ho=\E[H:ce=2\E[K:cd=2*\E[J:\
- :nl=\EE:cr=\r:sr=5\EM:sf=30\E7\E[200H\ED\E8:\
- :sc=\E7:rc=\E8:cs=\E[%i%d;%dr:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:LC:\
- :kl=\E[D:kr=\E[C:ku=\E[A:kd=\E[B:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:
-# *************************************************************************
-# Added for del to use a 132 char width terminal
-#
-d0|vt100l|vt100n|vt100 with no init:\
- :co#132:li#24:am:bs:pt:xn:cl=45\E[H\E[2J:\
- :cm=%i\E[%d;%dH:nd=\E[C:up=\EM:ho=\E[H:ce=2\E[K:cd=2*\E[J:\
- :nl=\EE:cr=\r:sr=5\EM:sf=30\E7\E[200H\ED\E8:\
- :sc=\E7:rc=\E8:cs=\E[%i%d;%dr:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:LC:\
- :kl=\E[D:kr=\E[C:ku=\E[A:kd=\E[B:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:
-#
-# End of "Add for del"
-# **************************************************************************
-df|vt100|vt-100|vt100f|pt100|pt-100|dec vt100 (fast scroll, reverse video):\
- :is=\E>\E[?4l\E[?5h\E[?7h\E[?8h:\
- :if=/usr/lib/tabset/vt100:tc=vt100n:
-d1|vt100|vt100fnv|dec vt100 (fast scroll, normal video):\
- :is=\E>\E[?4l\E[?5l\E[?7h\E[?8h:\
- :if=/usr/lib/tabset/vt100:tc=vt100n:
-ds|vt100|vt100s|dec vt100 (smooth scroll, reverse video):\
- :is=\E>\E[?4h\E[?5h\E[?7h\E[?8h:\
- :if=/usr/lib/tabset/vt100:tc=vt100n:
-dn|vt100|vt100snv|dec vt100 (smooth scroll, normal video):\
- :is=\E>\E[?4h\E[?5l\E[?7h\E[?8h:\
- :if=/usr/lib/tabset/vt100:tc=vt100n:
-# This was designed for a VT320 emulator, but it is probably a good start
-# at support for the VT320 itself.
-# Please send changes with explanations to bug-gnu-emacs@prep.ai.mit.edu.
-k3|vt320|vt320-k3|kermit|MS-Kermit 3.00's vt320 emulation:\
- :AL=\E[%dL:CC=\E:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:DO=\E[%dB:LE=\E[%dD:\
- :RI=\E[%dC:SR=\E[%dL:UP=\E[%dA:ae=\E(B:al=\E[L:am:as=\E(0:bl=^G:\
- :cd=\E[J:ce=\E[K:ch=\E[%i%dG:cl=\E[H\E[J:cm=\E[%i%d;%dH:co#80:cr=^M:\
- :cs=\E[%i%d;%dr:ct=\E[3g:cv=\E[%i%dd:dc=\E[P:do=^J:dl=\E[M:ds=\E[0$~:\
- :ec=\E[%dX:ei=\E[4l:es:fs=\E[0$}:ho=\E[H:hs:im=\E[4h:\
- :is=\E>\E F\E[?1l\E[?7h\E[r\E[2$~:k1=\EOP:k2=\EOQ:\
- :k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k0=\E[21~:\
- :kI=\E[2~:kL=\E[3~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:\
- :kl=\EOD:km:kn#20:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:\
- :le=^H:li#49:mb=\E[5m:md=\E[1m:me=\E[m:mi:mr=\E[7m:ms:nd=\E[C:\
- :nl=^J:pb#9600:po=\E[5i:pf=\E[4i:ps=\E[0i:pt:rc=\E8:\
- :rs=\E(B\E)B\E>\E F\E[4;20l\E[12h\E[?1;5;6;38;42l\E[?7;25h\E4i\E?4i\E[m\E[r\E[2$~:\
- :sc=\E7:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
- :ts=\E[1$}^M\E[K:ue=\E[24m:\
- :up=\E[A:us=\E[4m:vb=\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l:ve=\E[?25h:\
- :vi=\E[?25l:vt#3:xn:
-sw|switch|intelligent switch:co#80:os:am:
-su|dumb|un|unknown:co#80:os:am:
-sp|plugboard:co#80:os:am:
-sa|arpanet|network:co#80:os:am:
-sd|du|dialup:co#80:os:am:
-sb|bussiplexer:co#80:os:am:
-# Note that all of these claim to be "c100" in order to please the
-# pen and emacs editors. If the user does a "tset c100" he will get co.
-co|c100|concept|concept100|concept 100:\
- :is=\EU\Ef\E7\E5\E8\El\ENH\EK\E\200\Eo&\200\Eo\47\E:\
- :al=3*\E^R:am:bs:cd=16*\E^C:ce=16\E^S:cl=2*^L:cm=\Ea%+ %+ :co#80:\
- :dc=16\E^A:dl=3*\E^B:ei=\E\200:eo:im=\E^P:in:ip=16*:li#24:mi:nd=\E=:\
- :pt:kb=^h:so=\ENh:se=\ENH:ta=8\t:ul:up=\E;:db:xn:vs=\EW:ve=\Ew:\
- :vb=\Ek\200\200\200\200\200\200\200\200\200\200\200\200\200\200\EK:\
- :us=\EG:ue=\Eg:ks=\EX\ES:ke=\Ex\Es:ku=\E;:kd=\E<:kl=\E>:kr=\E=:kh=\E?:\
- :k1=\E5:k2=\E6:k3=\E7:.dN#9:dC#9:
-c4|c100|c1004p|c100 w/4 pages:\
- :ti=\EU\Ev 8p\Ep\r:te=\Ev ~p\Ep\r\n:vs@:ve@:tc=concept:
-cP|c100|c100rv4ppp|c100 with printer port:\
- :is=\EU\Ef\E7\E5\E8\El\ENH\Ek\E\200\Eo&\200\Eo!\200\EQ"\EY(^W\Eo\47\E:\
- :tc=c100rv4p:
-cR|c100|c100rv4p|c100 w/4 pages:\
- :ti=\EU\Ev 8p\Ep\r:te=\Ev ~p\Ep\r\n:tc=c100rv:
-# Some tty drivers use cr3 for concept, others use nl3, hence dN/dC below.
-cd|c100|c100rvs|slow reverse concept 100:\
- :vb=\EK\200\Ek:pt:dC@:dN@:tc=c100rv:
-cn|c100|c100rv4pna|c100 with no arrows:ks@:ke@:tc=c100rv4p:
-cr|c100|c100rv|c100 rev video:\
- :is=\EU\Ef\E7\E5\E8\El\ENH\Ek\E\200\Eo&\200\Eo\47\E:vs@:ve@:\
- :vb=\EK\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ek:\
- :tc=concept:
-cs|c100|c100s|slowconcept|slowconcept100|slow concept 100:\
- :vb=\Ek\200\EK:pt:dC@:dN@:tc=concept:
-# vt100 and vt132 are still untested
-# Note that all of these claim to be "vt100", so the first one wins.
-dG|gigi|GIGI|dec gigi (naively treated as a straight vt100):\
- :tc=vt100n:
-dR|vt125|dec vt125 (naively treated as a straight vt100; R for ReGIS):\
- :tc=vt100n:
-kA|h19A|heathA|h19A|heathkitA|heathkit h19 ansi mode:\
- :al=1*\E[1L:am:bs:cd=\E[J:ce=\E[K:cl=\E[2J:cm=\E[%i%2;%2H:co#80:\
- :dc=\E[1P:dl=1*\E[1M:dn=\E[1B:ei=\E[4l:ho=\E[H:im=\E[4h:li#24:mi:\
- :nd=\E[1C:as=\E[10m:ae=\E[11m:ms:pt:se=\E[0m:so=\E[7m:up=\E[1A:\
- :vs=\E[>4h:ve=\E[>4l:kb=^h:ku=\E[1A:kd=\E[1B:kl=\E[1D:kr=\E[1C:\
- :kh=\E[H:kn#8:k1=\EOS:k2=\EOT:k3=\EOU:k4=\EOV:k5=\EOW:l6=blue:\
- :l7=red:l8=white:k6=\EOP:k7=\EOQ:k8=\EOR:\
- :sr=\EM:is=\E<\E[>1;2;3;4;5;6;7;8;9l\E[0m\E[11m\E[?7h:
-kB|h19bs|heathkit w/keypad shifted:ks=\Et:ke=\Eu:tc=h19b:
-kU|h19us|heathkit w/keypad shifted/underscore cursor:ks=\Et:ke=\Eu:tc=h19u:
-kb|h19|heath|h19b|heathkit|heath-19|z19|zenith|heathkit h19:\
- :al=1*\EL:am:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:dc=\EN:\
- :dl=1*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:li#24:mi:nd=\EC:as=\EF:ae=\EG:\
- :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\
- :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#8:\
- :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:\
- :l6=blue:l7=red:l8=white:k6=\EP:k7=\EQ:k8=\ER:
-ke|e19|winston edmond special:vb=\Eg\Eh:tc=h19:
-ku|h19u|heathkit with underscore cursor:vs@:ve@:tc=h19b:
-Ma|aa|annarbor|ann arbor:\
- :cm=^O%r%B%.%>^S^L%+@:co#80:li#40:bs:cl=2^L:up=^N:nd=^_:ho=^K:am:\
- :kb=^^:kd=^J:ku=^N:kl=^H:kr=^_:kh=^K:ma=^_ ^N^P:
-# The A manufacturer represents Diablo, DTC, Xerox, Qume, and other Daisy
-# wheel terminals until such time as termcap distinguishes between them
-# enough to justify separate codes.
-# 1620 uses all 132 columns, 1640 sets left margin to 8 and uses snazzy
-# binary tabset file. Both should work on both terminals.
-A6|1620|450|diablo 1620:\
- :if=/usr/lib/tabset/std:\
- :kb=^H:bs:co#132:ff=^L:hc:hu=\EU:hd=\ED:os:pt:up=\E\n:
-A7|1640|diablo 1640:\
- :co#124:if=/usr/lib/tabset/diablo:tc=1620:
-Ad|dtc300s|300|300s|gsi|dtc|dtc 300s:\
- :if=/usr/lib/tabset/std:\
- :kb=^h:bs:co#132:ff=^L:hc:hu=\EH:hd=\Eh:os:pt:up=^Z:
-Ag|gsi:bs:co#132:hc:hd=\Eh:hu=\EH:os:pt:up=^Z:
-Aj|aj830|aj832|aj|anderson jacobson:\
- :bs:hc:hd=\E9:hu=\E8:os:pl:up=\E7:
-Aq|qume5|qume|Qume Sprint 5:\
- :if=/usr/lib/tabset/std:\
- :kb=^h:bs:co#80:ff=^L:hc:hu=\EH:hd=\Eh:os:pt:up=^Z:
-Ax|x1720|xerox 1720:co#132:bs:ff=^L:hc:os:pt:if=/usr/lib/tabset/xerox1720
-Ca|cdc456|cdc:\
- :li#24:co#80:cl=^Y^X:nd=^L:up=^Z:bs:\
- :cm=\E1%+ %+ :ho=^Y:al=\E\114:dl=\E\112:ce=^V:cd=^X:am:
-Cc|cdc456tst:\
- :li#24:co#80:cl=^y^x:bs:cm=\E1%+ %+ :am:
-D0|dm1520|1520|datamedia 1520:\
- :am:bs:cd=^K:ce=^]:cl=^L:cm=^^%r%+ %.:co#80:ho=^Y:\
- :ku=^_:kd=^J:kl=^H:kr=^\:kh=^Y:\
- :li#24:nd=^\:up=^_:xn:ma=^\ ^_^P^YH:pt:
-D1|dm1521|1521|datamedia 1521:\
- :am:bs:cd=^K:ce=^]:cl=^L:cm=^^%r%+ %.:co#80:ho=^Y:\
- :ku=^_:kd=^J:kl=^H:kr=^\:kh=^Y:\
- :li#24:nd=^\:up=^_:xn:ma=^\ ^_^P^YH:pt:
-D2|dm2500|datamedia2500|2500|datamedia 2500:\
- :al=15^P\n^X^]^X^]:bs:ce=^W:cl=^^^^\177:cm=^L%r%n%.%.:co#80:\
- :dc=10*\b:dl=10*^P^Z^X^]:dm=^P:ed=^X^]:ei=10\377\377^X^]:ho=^B:ic10*^\:\
- :im=^P:li#24:nc:nd=^\:pc=\377:so=^N:se=^X^]:up=^Z:
-D3|dm3025|datamedia 3025a:is=\EQ\EU\EV:\
- :al=130\EP\n\EQ:bs:cd=2\EJ:ce=\EK:cl=2\EM:cm=\EY%r%+ %+ :\
- :co#80:dc=6\b:dl=130\EP\EA\EQ:dm=\EP:ed=\EQ:ei=\EQ:ho=\EH:\
- :im=\EP:ip=6:li#24:nd=\EC:pt:so=\EOA:se=\EO@:up=\EA:
-D4|3045|dm3045|datamedia 3045a:is=\EU\EV:\
- :am:bs:cd=2\EJ:ce=\EK:cl=2\EM:cm=\EY%r%+ %+ :co#80:\
- :dc=6\EB:dm=:ed=:ei=\EP:ho=\EH:ic=:im=\EP:ip=6:\
- :k0=\Ey\r:k1=\Ep\r:k2=\Eq\r:k3=\Er\r:k4=\Es\r:\
- :k5=\Et\r:k6=\Eu\r:k7=\Ev\r:k8=\Ew\r:k9=\Ex\r:\
- :kh=\EH:ku=\EA:kr=\EC:li#24:nd=\EC:pc=\177:pt:eo:ul:up=\EA:xn:
-D5|dt80|dmdt80|dm80|datamedia dt80/1:\
- :is=\E<\E[2J\E[H\E[?1;3;5;6;9l\E[?7;8h:\
- :am:bs:cd=\E[J:co#80:li#24:ce=\E[K:cl=\E[2J\E[H:\
- :cm=%i\E[%d;%dH:ho=\E[H:nd=\E[C:\
- :so=\E[7m:se=\E[m:\
- :up=\E[A:us=\E[4m:ue=\E[m:\
- :vb=\E[?5h\E[?5l:\
- :vs=\E[1;2;3;4q\E[?4l:ve=\E[0q\E?4h:\
- :kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:\
- :sr=\EM:\
- :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:
-D6|dt80132|dmdt80132|datamedia dt80/1 in 132 char mode:\
- :bs:cd=20^[[0J:co#132:ce=20^[[0K:kd=^[[B:kl=^[[D:kr=^[[C:ku=^[[A:\
- :li#24:cm=5^[[%i%d;%dH:cl=50^[[H^[[2J:nd=^[[C:up=5^[[A:
-ED|delta|dd5000|delta data 5000:\
- :am:bs:cl=^NR:cm=^O%D%+9%D%+9:co#80:li#27:ho=^NQ:nc:nd=^Y:\
- :up=^Z:ce=^NU:dc=^NV:ma=^K^J^Z^P^Y :xr:
-# Note: the h1552 appears to be the first Hazeltine terminal which
-# is not braindamaged. It has tildes and backprimes and everything!
-# Be sure the auto lf/cr switch is set to cr.
-H2|h1552|hazeltine 1552:\
- :al=\EE:dl=\EO:f1=\EP:l1=blue:f2=\EQ:l2=red:f3=\ER:l3=green:tc=vt52:
-H3|h1552rv|hazeltine 1552 reverse video:\
- :so=\ES:se=\ET:tc=h1552:
-H5|h1500|hazeltine 1500:\
- :al=40~^Z:am:bs:cd=10~^X:ce=~^O:cl=~^\:cm=~^Q%r%.%.:co#80:\
- :dl=40~^S:do=~^K:hz:li#24:nd=^P:.se=~^_:.so=~^Y:up=~^L:
-H6|h1510|hazeltine 1510:\
- :al=\E^Z:am:bs:cd=\E^X:ce=\E^O:cl=\E^\:cm=\E^Q%r%.%.:co#80:\
- :dl=\E^S:do=\E^K:hz:li#24:nd=^P:.se=\E^_:.so=\E^Y:up=\E^L:
-H8|h1520|hazeltine 1520:\
- :al=~^Z:am:bs:cd=~^X:ce=~^O:cl=~\034:cm=~^Q%r%.%.\200:co#80:\
- :dl=~^S:do=~^K:hz:li#24:nd=^P:se=~^Y:so=~\037:up=~^L:ho=~^R:
-# Note: h2000 won't work because of a clash between upper case and ~'s.
-H7|h2000|hazeltine 2000:\
- :al=6~^z:am:bs:cl=6~^\:cm=~^q%r%.%.:co#74:\
- :dl=6~^s:ho=~^r:li#27:nc:pc=\177:
-# One of these should go in the misc category, IBM and ISC can't
-# both have I. I will wait to see who comes out with more terminals.
-I8|8001|ISC8001:al=\EU:am:bc=^Z:cl=3*^L:cm=^C%r%.%.:co#80:\
- :cd=\EQ:dm=\EQ:ed=\EF:\
- :dc=\177:dl=\EV:ei=\EF:im=\EQ:li#40:nd=1^Y:ta=8\t:\
- :up=^\:ho=1^H:pc=^@:
-It|intext|ISC modified owl 1200:\
- :al=5.5*\020:am:bc=\037:bs:cd=5.5*\026J:cl=132\014:\
- :cm=\017%+ %+ :co#80:dc=5.5*\022:dl=5.5*\021:\
- :ei=\026\074:im=\026\073:ip=5.5*:in:li#24:nd=\036:up=\034:\
- :ma=^K^P^R^L^L :kl=^H:kd=^J:kr=^L:ku=^K:
-I9|ibm|ibm3101|3101|i3101|IBM 3101-10:\
- :if=/usr/lib/tabset/3101:\
- :am:bs:cl=^[K:li#24:co#80:nd=^[C:up=^[A:cd=^[J:ce=^[I:\
- :kd=\EB:kl=\ED:kr=\EC:ku=\EA:ho=^[H:cm=\EY%+\40%+\40:
-L3|digilog|333|digilog 333:bs:co#80:ce=\030:ho=^n:li#16:nd=^i:up=^o:
-MA|ampex|d80|dialogue|dialogue80|ampex dialogue 80:\
- :am:bs:pt:if=/usr/lib/tabset/stdcrt:cl=\E*:cm=\E=%+ %+ :\
- :al=\EE:bt=\EI:ic=\EQ:im=:ei=:dl=\ER:dc=\EW:\
- :ce=\Et:cd=\Ey:so=\Ej:se=\Ek:li#24:co#80:nd=^L:up=^K:
-MB|aaadb|ann arbor ambassador 48/destructive backspace:\
- :is=\E[48;0;0;48p\E[H\E[J\E[>30h\E[1Q\E[m:bs@:\
- :vs=\E[>30l:ve=\E[>30h:tc=aaa:
-MC|compucolor|compucolorII:\
- :pt:am:cm=%r^C%.%.:bc=^Z:li#32:co#64:\
- :cl=^L:ho=^H:nd=^Y:up=^\:
-MD|d132|datagraphix|datagraphix 132a:\
- :co#80:li#30:cl=^l:ho=\Et:da:db:sf=\Ev:sr=\Ew:\
- :up=\Ek:nd=\El:vs=\ex:ve=\Em\En:\
- :al=\E3:ic=\E5:dc=\E6:in:ic=\E5:
-MS|soroc|Soroc 120:\
- :cd=\EY:ce=\ET:cl=2\E*:ma=^K^P^R^L^L :\
- :kl=^H:ku=^K:kr=^L:kd=^J:tc=adm3a:
-# Needs function keys added. Also can't use 60 line mode because it needs
-# too much nl delay - can fix for nl but not out of vi.
-# The cl delay is sufficient, but a smaller one could do.
-# This entry is merged from Mike O'Brien@Rand and Howard Katseff at
-# Bell Labs, and is untested.
-Mb|aaa|ambas|ambassador|ann arbor ambassador/48 lines:\
- :al=\E[L:am:bs:\
- :cd=\E[0J:ce=\E[0K:cl=400\E[;H\E[0J:cm=\E[%i%d;%dH:co#80:\
- :da:db:dc=\E[4h\E[1Q\E[P\E[4l\E[0Q:dc=\E[P:dl=\E[M:dm=\E[1Q:\
- :ed=\E[0Q:ei=\E[0Q:ho=\E[;H:ic=\E[@:if=/usr/lib/tabset/aa:im=\E[1Q:\
- :is=\E[48;0;0;48p\E[H\E[J\E[1Q\E[m:li#48:mi:\
- :nd=\E[C:nl=\ED:pt:sf=\E[S:sr=\E[T:se=\E[m:so=\E[7m:up=\E[A:
-Md|datapoint|dp3|dp3360|datapoint 3360:\
- :am:bs:cd^_:ce=^^:cl=^]^_:co#82:ho=^]:li#25:nd=^x:up=^z:
-Mg|dg|dg6053|data general 6053:\
- ca:am:bs:cm=^P%r%.%.:cl=^L:ho=^H:nd=^S\
- up=^W:ce=^K:co#80:li#24:
-Mi|cdi|cdi1203:am:bs:hc:os:co#80:cD#200:
-Mk|teletec|tec|Teletec Datascreen:\
- :am:bs:co#80:cl=^l:ho=^^:li#24:nd=^_:up=^k:
-# ^S is an arrow key! Boy is this guy in for a surprise on v7!
-Ml|sol:\
- :am:bs:cm=\E^1%.\E^2%.:cl=^K:ho=^N:co#64:li#16:nd=^S:up=^W:\
- :kl=^A:kr=^S:ku=^W:kd=^Z:ma=^A^H^S ^W^P^Z^N:
-Mo|omron|Omron 8025AG:\
- :al=\EL:am:bs:cd=\ER:co#80:ce=\EK:cl=\EJ:da:db:dc=\EP:dl=\EM:\
- :ho=\EH:li#24:nd=\EC:se=\E4:sf=\ES:so=\Ef:sr=\ET:up=\EA:ve=:vs=\EN:
-Mp|plasma|plasma panel:am:bs:cl=^L:co#85:ho=^^:li#45:nd=\030:up=\026:
-Ms|swtp|ct82|southwest technical products ct82:\
- :am:bs:bc=^d:al=^\^y:cd=^v:ce=^F:cl=^L:cm=%r^k%.%.:co#82:li#20:\
- :dl=^z:nd=^s:up=^a:so=^^^v:se=^^^F:dc=^\^h:ic=^\^x:ho=^p:\
- :ei=:sf=^n:sr=^o:ll=^c:im=:\
- :is=^\^r^^^s^^^d^]^w^i^s^^^]^^^o^]^w^r^i:
-Mt|terak|Terak emulating Datamedia 1520:tc=dm1520:
-My|mdl110|cybernex mdl-110:cm=^P%+ %+ :co#80:li#24:am:cl=70^X:bs:\
- :nd=^U:up=^Z:ho=^Y:ce=145^N@^V:cd=145^NA^W:al=65^NA^N^]:\
- :dl=40^NA^N^^:im=:\
- :ei=:ic=3.5^NA^]:dm:ed:dc=3.5^NA^^:so=^NF:se=^NG:ta=43\t:\
- :ma=^Z^P:cd=6^N@^V
-Mz|zen30|z30|zentec 30:\
- :mi:co#80:li#24:ma=^L ^R^L^K^P:ul:\
- :al=1.5*\EE:bs:ce=1.0*\ET:cm=\E=%+ %+ :cl=\E*:\
- :ho=^^:nd=^L:se=\EG0;so=\EG6:up=^K:im=\Eq:ei=\Er:\
- :am:dc=\EW:dl=1.5*\ER:cd=\EY:
-T3|33|tty33|tty|model 33 teletype:\
- :co#72:hc:os:
-T4|43|tty43|model 43 teletype:\
- :kb=^h:am:bs:hc:os:co#132:
-T7|37|tty37|model 37 teletype:\
- :bs:hc:hu=\E8:hd=\E9:up=\E7:os:
-# The Visual 200 beeps when you type a character in insert mode.
-# This is a horribly obnoxious misfeature, and some of the entries
-# below try to get around the problem by ignoring the feature or
-# turning it off when inputting a character. They are said not to
-# work well at 300 baud. (You could always cut the wire to the bell!)
-V2|vi200|v200|visual 200 with function keys:\
- :al=\EL:am:bs:cd=\Ey:ce=4*\Ex:cl=\Ev:\
- :cm=\EY%+ %+ :co#80:dc=4*\EO:dl=4*\EM:ho=\EH:\
- :im=:ei=:ic=\Ei \b\Ej:\
- :is=\E3\Eb\Ej\E\\\El\EG\Ed\Ek:\
- :k0=\EP:k1=\EQ:k2=\ER:k3=\E :k4=\E!:k5=\E":k6=\E#:\
- :k7=\E$:k8=\E%:k9=\E&:kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:\
- :li#24:nd=\EC:pt:sr=\EI:up=\EA:vs=\Ed:ve=\Ec:
-VR|vi200rvic|visual 200 reverse video using insert char:\
- :ei=\Ej:im=\Ei:ic@:tc=vi200rv:
-# The older Visuals didn't come with function keys. This entry uses
-# ks and ke so that the keypad keys can be used as function keys.
-# If your version of vi doesn't support function keys you may want
-# to use V2.
-Vf|vi200f|visual|visual 200 no function keys:\
- :al=\EL:am:bs:cd=\Ey:ce=4*\Ex:cl=\Ev:\
- :cm=\EY%+ %+ :co#80:dc=4*\EO:dl=4*\EM:ho=\EH:\
- :im=:ei=:ic=\Ei \b\Ej:\
- :is=\E3\Eb\Ej\E\\\El\EG\Ed\Ek:ks=\E=:ke=\E>:\
- :k0=\E?p:k1=\E?q:k2=\E?r:k3=\E?s:k4=\E?t:k5=\E?u:k6=\E?v:\
- :k7=\E?w:k8=\E?x:k9=\E?y:kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:\
- :li#24:nd=\EC:pt:sr=\EI:up=\EA:vs=\Ed:ve=\Ec:
-Vr|vi200rv|visual 200 reverse video:\
- :so=\E4:se=\E3:sr@:vs@:ve@:tc=vi200:
-Vt|vi200ic|visual 200 using insert char:\
- :ei=\Ej:im=\Ei:ic@:tc=vi200:
-Xa|tek4012|4012|tektronix 4012:\
- :is=\E^O:bs:cl=1000\E^L:co#75:ns:li#35:os:
-Xb|tek4013|4013|tektronix 4013:\
- :as=\E^N:ae=\E^O:tc=4012:
-Xc|tek4014|4014|tektronix 4014:\
- :is=\E^O\E9:co#81:li#38:dF#1000:tc=tek4012:
-Xd|tek4015|4015|tektronix 4015:\
- :as=\E^N:ae=\E^O:tc=4014:
-Xe|tek4014sm|4014sm|tektronix 4014 in small font:\
- :is=\E^O\E\072:co#121:li#58:tc=tek4014:
-Xf|tek4015sm|4015sm|tektronix 4015 in small font:\
- :as=\E^N:ae=\E^O:tc=4014sm:
-# I think the 1000UP is supposed to be so expensive it never happens.
-X4|tek4023|4023|tektronix 4023:\
- :so=^_P:se=^_@:cm=\034%r%+ %+ :nd=\t:bs:cl=4\E^L:co#80:li#24:am:\
- :up=1000UP:
-# Can't use cursor motion because it's memory relative, and because
-# it only works in the workspace, not the monitor. Same for home.
-# Likewise, standout only works in the workspace.
-X5|tek|4025|4027|4024|tek4025|tek4027|tek4024|4025cu|4027cu|tektronix 4024/4025/4027:\
- :is=\41com 31\r\n^_sto 9,17,25,33,41,49,57,65,73\r:\
- :ks=^_lea p4 /h/\r^_lea p8 /k/\r^_lea p6 / /\r^_lea p2 /j/\r^_lea f5 /H/\r:\
- :ke=^_lea p2\r^_lea p4\r^_lea p6\r^_lea p8\r^_lea f5\r:\
- :am:bs:da:db:pt:li#34:co#80:cl=^_era\r\n\n:up=^K:nd=^_rig\r:\
- :al=145^_up\r^_ili\r:dl=^_dli\r:\
- :dc=^_dch\r:im=^_ich\r:ei=^F\n^K:nl=^F\n:\
- :ce=^_dch 80\r:cd=^_dli 50\r:CC=^_:
-X7|4025-17|4027-17|tek 4025 17 line window:li#17:tc=4025:
-X8|4025-17ws|4027-17ws|tek 4025 17 line window in workspace:\
- :is=\41com 31\r\n^_sto 9,17,25,33,41,49,57,65,73\r^_wor 17\r^_mon 17\r:\
- :ti=^_wor h\r:te=^_mon h\r:so=^_att e\r:se=^_att s\r:tc=4025-17:
-Xe|4025ex|4027ex|tek 4025 w/!:ti=\41com 31\r:te=^_com 33\r:\
- :is=^_com 33\r\n\41sto 9,17,25,33,41,49,57,65,73\r:tc=4025:
-# Regent: lowest common denominator, works on all regents.
-a0|regent|adds regent series:\
- :am:bs:cl=^L:cm=^K%+ ^P%B%.:co#80:ho=^A:li#24:ll=^A^Z:nd=^F:up=^Z:
-# Regent 100 has a bug where if computer sends escape when user is holding
-# down shift key it gets confused, so we avoid escape.
-a1|regent100|adds regent 100:\
- :cm=^K%+ ^P%B%.:k1=^B1\r:k2=^B2\r:k3=^B3\r:k4=^B4\r:\
- :k5=^B5\r:k6=^B6\r:k7=^B7\r:k8=^B8\r:\
- :kh=^A:kl=^U:kr=^F:ku=^Z:kd=^J:tc=regent:
-# Regent 20, untested
-a2|regent20|adds regent 20:\
- :cd=\Ek:ce=\EK:cm=\EY%+ %+ :tc=regent:
-a3|regent25|adds regent 25:\
- :k0=^B0\r:k1=^B1\r:k2=^B2\r:k3=^B3\r:k4=^B4\r:\
- :k5=^B5\r:k6=^B6\r:k7=^B7\r:k8=^B8\r:k9=^B9\r:\
- :kh=^A:kl=^U:kr=^F:ku=^Z:kd=^J:tc=regent20:
-# Regent 40: untested
-a4|regent40|adds regent 40:\
- :al=\EM:dl=\El:is=\EB:se=\E0@:so=\EOP:ue=\EO@:us=\E0`:vb=\ED\Ed:\
- :tc=regent25:
-# If you have standout problem with regent 200, try so=\ER\EOP:se=\E0@\EV:
-a6|regent60|regent200|adds Regent 60:\
- :dc=\EE:ei=\EF:im=\EF:is=\EV\EB:ko=dc,im,ei:tc=regent40:
-a7|regent60na|regent 60 w/no arrow keys:\
- kl@:kr@:ku@:kd@:tc=regent60:
-# Note: if return acts weird on a980, check internal switch #2
-# on the top chip on the CONTROL pc board.
-ac|a980|adds consul 980:\
- :al=13\E^N:am:bs:cl=^L\200^K@:cm=^K%+@\E^E%2:co#80:dl=13\E^O:\
- :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\
- :li#24:nd=\E^E01:so=^Y^^^N:se=^O:up=9:
-b2|sb2|sb3|fixed superbee:xb@:tc=superbee:
-bh|bh3m|beehiveIIIm:if=/usr/lib/tabset/beehive:\
- :al=160^S:am:bs:cd=^R:ce=^P:cl=^E^R:co#80:dl=300^Q:ho=^E:li#20:ll=^E^K:\
- :nd=^L:pt:se= ^_:so=^] :up=^K:
-# This loses on lines > 80 chars long, use at your own risk
-bi|superbeeic|super bee with insert char:\
- :ic=:im=\EQ:ei=\ER:tc=superbee:
-bm|microb|microbee|micro bee series:\
- :am:bs:cd=\EJ:ce=\EK:cl=\EE:co#80:cm=\EF%+ %+ :\
- :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:k9=\Ex:\
- :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:\
- :li#24:nd=\EC:pt:se=\Ed@ :so= \EdP:ue=\Ed@:up=\EA:us=\Ed`:
-# Superbee - f1=escape, f2=^C.
-# Note: there are at least 3 kinds of superbees in the world. The sb1
-# holds onto escapes and botches ^C's. The sb2 is the best of the 3.
-# The sb3 puts garbage on the bottom of the screen when you scroll with
-# the switch in the back set to CRLF instead of AEP. This description
-# is tested on the sb2 but should work on all with either switch setting.
-# The f1/f2 business is for the sb1 and the :xb: can be taken out for
-# the other two if you want to try to hit that tiny escape key.
-# This description is tricky: being able to use cm depends on there being
-# 2048 bytes of memory and the hairy nl string.
-bs|sb1|superbee|superb|beehive super bee:if=/usr/lib/tabset/stdcrt:is=\EE:\
- :am:bs:cd=3\EJ:ce=3\EK:cl=3\EH\EJ:co#80:cm=\EF%r%3%3:cr=1000\r:\
- :dC#10:da:db:xb:dc=3\EP:dl=100\EM:so=\E_1:se=\E_0:\
- :li#25:nl=\n\200\200\200\n\200\200\200\EA\EK\200\200\200\ET\ET:\
- :nd=\EC:pt:up=\EA:ho=\EH:ve=\n:\
- :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:\
- :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:
-d2|gt42|dec gt42:\
- :bs:co#72:ns:li#40:os:
-d4|gt40|dec gt40:\
- :bs:co#72:ns:li#30:os:
-d5|vt50|dec vt50:\
- :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:co#80:li#12:nd=\EC:pt:up=\EA:
-dI|dw1|decwriter I:\
- :bs:co#72:hc:os:
-dh|vt50h|dec vt50h:\
- :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#12:nd=\EC:\
- :pt:sr=\EI:up=\EA:
-#
-# ds|vt100s|vt-100s|pt100s|pt-100s|dec vt100 132 cols 14 lines:\
-# :li#14:tc=vt100w:
-#
-dt|vt100w|vt-100w|pt100w|pt-100w|dec vt100 132 cols:\
- :co#128:li#24:is=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h:tc=vt100:
-dv|vt52|dec vt52:\
- :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#24:nd=\EC:\
- :pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:
-dw|dw2|dw3|dw4|decwriter II:\
- :kb=^h:bs:co#132:hc:os:
-e1|ep48|ep4080|execuport 4080:am:bs:os:co#80:hu=\036:hd=\034:
-e2|ep40|ep4000|execuport 4000:am:bs:os:co#136:hu=\036:hd=\034:
-g2|1200|tn1200|terminet 1200:\
- :co#120:hc:os:
-g3|300|tn300|terminet 300:\
- :co#120:hc:os:
-# Note: no "ho" on HP's since that homes to top of memory, not screen.
-# Due to severe braindamage, the only way to get the arrow keys to
-# transmit anything at all is to turn on the function key labels
-# (f1-f8) with ks, and even then the poor user has to hold down shift!
-# The default 2621 turns off the labels except when it has to to enable
-# the function keys. If your installation prefers labels on all the time,
-# or off all the time (at the "expense" of the function keys) move the
-# 2621nl or 2621wl labels to the front using reorder.
-# 2621k45: untested
-h2|2621|hp2621|hp2621a|hp2621p|2621|2621a|2621p|hp 2621:\
- :is=\E&j@\r\E3\r:bt=\Ei:cm=\E&a%r%dc%dY:dc=2\EP:ip=2:\
- :kh=\Ep\r:ku=\Et\r:kl=\Eu\r:kr=\Ev\r:kd=\Ew\r:\
- :kn#8:k1=\Ep\r:k2=\Eq\r:k3=\Er\r:k4=\Es\r:k5=\Et\r:k6=\Eu\r:k7=\Ev\r:\
- :k8=\Ew\r:ks=\E&jB:ke=\E&j@:ta=2^I:tc=hp:
-h3|2621k45|hp2621k45|k45|hp 2621 with 45 keyboard:\
- :kb=^H:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:ks=\E&s1A:ke=\E&s0A:tc=2621:
-h4|hp|hp2645|2645|hp 264x series:\
- :if=/usr/lib/tabset/stdcrt:\
- :al=\EL:am:bs:cd=\EJ:ce=\EK:ch=\E&a%dC:cl=\EH\EJ:cm=6\E&a%r%dc%dY:\
- :co#80:cv=\E&a%dY:da:db:dc=\EP:dl=\EM:ei=\ER:im=\EQ:\
- :kb=^H:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:ks=\E&s1A:ke=\E&s0A:\
- :li#24:mi:ml=\El:mu=\Em:nd=\EC:pt:se=\E&d@:so=\E&dJ:\
- :us=\E&dD:ue=\E&d@:up=\EA:xs:
-h6|hp2626|hp2626a|hp2626p|2626|2626a|2626p|hp 2626:\
- :is=\E&j@\r\E3\r:if=/usr/lib/tabset/stdcrt:\
- :al=\EL:am:bs:bt=\Ei:cd=\EJ:ce=\EK:cl=\EH\EJ:\
- :cm=\E&a%r%dc%dY:co#80:da:db:dc=2\EP:dl=\EM:ei=\ER:\
- :im=\EQ:ip=2:li#24:mi:nd=\EC:pt:se=\E&d@:so=\E&dB:up=\EA:\
- :kh=\Eh:ku=\EA:kl=\ED:kr=\EC:kd=\EB:\
- :ma=j^Jk^P^K^Pl :sf=\ES:\
- :ta=2^I:xs:
-# cD a pain - only screw up at 9600 baud.
-h8|hp2648|hp2648a|2648a|2648|HP 2648a graphics terminal:\
- :cl=50\EH\EJ:cm=20\E&a%r%dc%dY:dc=7\EP:ip#5:is=130\Eg:tc=2645:
-# 2640a doesn't have the Y cursor addressing feature, and C is memory relative
-# instead of screen relative, as we need .
-ha|2640|hp2640a|2640a|hp 2640a:cm@:ks@:ke@:tc=2645:
-hb|2640b|hp2640b|2644a|hp2644a|hp 264x series:ks@:ke@:tc=2645:
-# 2621 using all 48 lines of memory, only 24 visible at any time. Untested.
-hb|big2621|48 line 2621:li#48:ho=\EH:cm=\E&a%r%dc%dR:tc=2621:
-hn|2621nl|hp2621nl|2621|hp 2621 with no labels:ks@:ke@:kh@:ku@:kl@:kr@:kd@:tc=hp2621:
-hw|2621wl|hp2621wl|2621|hp 2621 with labels:is=\E&jA\r\E3\r:ke=\E&jA:tc=hp2621:
-# Infoton is now called General Terminal Corp. or some such thing.
-# gt100 sounds like something DEC would come out with. Lets hope they don't.
-i1|i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100):\
- :cl=^L:cd=\EJ:ce=\EK:li#24:co#80:\
- :al=\EL:dl=\EM:up=\EA:nd=\EC:ho=\EH:cm=\Ef%r%+ %+ :vb=\Eb\Ea:am:bs:\
- :so=\Eb:se=\Ea:
-i4|i400|400|infoton 400:\
- :if=/usr/lib/tabset/infoton_tabs:\
- :al=\E[L:am:bs:ce=\E[N:cl=\E[2J:cm=%i\E[%3;%3H:co#80:dl=\E[M:li#25:\
- :nd=\E[C:up=\E[A:im=\E[4h\E[2Q:ei=\E[4l\E[0Q:\
- :dc=\E[4h\E[2Q\E[P\E[4l\E[0Q:
-ia|addrinfo:\
- :li#24:co#80:cl=^L:ho=^H:nd=^Y:cd=^K:\
- :up=^\:am:bc=^Z:cm=\037%+\377%+\377:ll=^H^\:
-ik|infotonKAS:\
- :am:bc=^Z:cd=^K:cl=^L:co#80:li#24:nd=^Y:up=^\:ll=^H^\:
-l1|adm31|31|lsi adm31:is=\Eu\E0:\
- :al=\EE:am:bs:ce=\ET:cm=\E=%+ %+ :cl=\E*:co#80:dc=\EW:dl=\ER:\
- :ei=\Er:ho=^^:im=\Eq:li#24:mi:nd=^L:se=\EG0:so=\EG4:up=^K:\
- :kl=^H:kd=^J:ku=^K:kr=^L:ma=^K^P^L :
-l2|adm2|lsi adm2:\
- :al=\EE:am:bs:cd=\EY:ce=\ET:cl=\E;:cm=\E=%+ %+ :co#80:dc=\EW:dl=\ER:\
- :ei=:ho=^^:ic=\EQ:im=:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:li#24:nd=^L:up=^K:
-l3|adm3|3|lsi adm3:\
- :am:bs:cl=^Z:li#24:ma=^K^P:co#80:
-l4|adm42|42|lsi adm42:vs=\EC\E3 \E3(:\
- :al=270\EE:am:bs:cd=\EY:ce=\ET:cl=\E;:cm=\E=%+ %+ :co#80:\
- :dc=\EW:dl=\ER:ei=\Er:im=\Eq:ip=6*:li#24:\
- :bt=\EI:nd=^L:se=\EG0:so=\EG4:ta=\t:up=^k:\
- :ma=^K^P:pc=\177:
-la|adm3a|3a|lsi adm3a:\
- :am:bs:cm=\E=%+ %+ :cl=1^Z:co#80:ho=^^:li#24:ma=^K^P:nd=^L:up=^K:
-lb|adm3a+|3a+:kl=^H:kd=^J:ku=^K:kr=^L:tc=adm3a:
-# These mime1 entries refer to the Microterm Mime I or Mime II.
-# The default mime is assumed to be in enhanced act iv mode.
-m3|mime3a|mime1 emulating 3a:\
- :am@:ma=^X ^K^J^Z^P:ku=^Z:kd=^K:kl=^H:kr=^X:tc=adm3a:
-m4|microterm|act4|microterm act iv:\
- :am:bs:cd=^_:ce=^^:cl=^L:cm=^T%.%.:co#80:li#24:nd=^X:up=^Z:ho=^]:
-# The padding on sr and ta for act5 and mime is a guess and not final.
-m5|microterm5|act5|microterm act v:\
- :uc=\EA:pt:ta=2^I:sr=3\EH:ku=^Z:kd=^K:kl=^H:kr=^X:ma=^Z^P^Xl^Kj:tc=act4:
-# act5s is not tested and said not to work.
-mS|act5s|skinny act5:ti=\EP:te=\EQ:li#48:co#39:tc=act5:
-# Mimes using brightness for standout. Half bright is really dim unless
-# you turn up the brightness so far that lines show up on the screen.
-# uc is disabled to get around a curses bug, and should be put back in someday.
-mf|mimefb|full bright mime1:so=^Y:se=^S:uc@:is=^S\E:tc=mime:
-mh|mimehb|half bright mime1:so=^S:se=^Y:uc@:is=^Y\E:tc=mime:
-mm|mime|mime1|mime2|mimei|mimeii|microterm mime1:\
- :al=80^A:am:bs:cd=^_:ce=^^:cl=\035^C:cm=^T%+^X%> 0%+P:co#80:\
- :dl=80^W:ta=2^I:li#24:nd=^X:pt:uc=^U:up=^z:ho=\035:do=^K:is=^S\E:\
- :ma=^X ^K^J^Z^P:ku=^Z:kd=^K:kl=^H:kr=^X:sr=3^R:
-# These termcaps (for mime 2a) put the terminal in low intensity mode
-# since high intensity mode is so obnoxious.
-ms|mime2as|microterm mime2a (emulating an enhanced soroc iq120):\
- :al=20*^A:am:bs:cd=20*\EJ:ce=\EK:cl=\EL:cm=\E=%+ %+ :co#80:dc=\ED:\
- :dl=20*^W:kl=^H:kr=^L:ku=^K:kd=^J:ho=^^:is=\E):sr=\EI\
- :im=\EE:ei=^Z:ip=2:li#24:nd=^L:so=\E\072:se=\E;:up=\EI:\
- :us=\E6:ue=\E7:
-# This is the preferred mode (but ^X can't be used as a kill character)
-mv|mime2a|mime2av|microterm mime2a (emulating an enhanced vt52):\
- :al=20*^A:bs:cd=20*\EQ:co#80:ce=\EP:cl=\EL:cm=\EY%+ %+ :is=^Y\
- :dc=^N:dl=20*^W:ip=2:ei=^Z:ho=\EH:im=^O:kd=\EB:kl=\ED:kr=\EC:ku=\EA:\
- :li#24:nd=\EC:pt:se=\E9:so=\E8:up=\EA:sr=\EA:us=\E4:ue=\E5:
-mx|mime3ax|mime1 emulating enhanced 3a:\
- :al=80^A:dl=80^W:pt:ce=^X:cd=^_:tc=mime3a:
-n2|spin|nec spinwriter 5525|spinwriter:\
- :bs:co#136:hc:hd=\EU:hu=\ED:os:pt:so=\EA:se=\EB:\
- :if=/usr/lib/tabset/spinwriter:
-pf|fox|perkin elmer 1100:if=/usr/lib/tabset/stdcrt:\
- :am:bs:cd=5.5*\EJ:ce=\EI:cl=132\EH\EJ:co#80:ho=\EH:li#24:\
- :ll=\EH\EA:nd=\EC:cm=\EX%+ \EY%+ :up=\EA:vb=^P^B^P^C:
-po|owl|perkin elmer 1200:if=/usr/lib/tabset/stdcrt:\
- :al=5.5*\EL:am:bs:cd=5.5*\EJ:ce=5.5\EI:cl=132\EH\EJ:ho=\EH:ll=\EH\EA:\
- :cm=\EX%+ \EY%+ :co#80:dc=5.5*\EO:dl=5.5*\EM:ei=:ic=\EN:im=:ip=5.5*:\
- :kb=^h:in:li#24:nd=\EC:up=\EA:se?=\E!\200:so?=\E!^H:vb=^P^B^P^C:\
- :k1=\ERA:k2=\ERB:k3=\ERC:k4=\ERD:k5=\ERE:k6=\ERF:\
- :k7=\ERG:k8=\ERH:k9=\ERI:k0=\ERJ:
-#
-# qB|bc|bill croft homebrew:\
-# :am:bs:cm=\E=%+ %+ :cl=^Z:co#96:ho=^^:li#72:\
-# :nd=^L:up=^K:vb=:
-#
-#NOTE: bg can scroll, it just would rather not (ns) - rwells 3/13/81.
-qB|bg|bg2.0|bgn|BBN BitGraph Terminal (no init):\
- :al=2*\E[L:bs:cd=150\E[J:ce=2\E[K:cl=150\E[H\E[J:cm=%i\E[%d;%dH:\
- :co#85:cs=\E[%i%d;%dr:dl=2*\E[M:\
- :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
- :kd=\E[B:ke=\E>:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:\
- :l1=PF1:l2=PF2:l3=PF3:l4=PF4:\
- :li#64:nd=\E[C:ns:pt:se=\E[0m:so=\E[7m:up=\E[A:\
- :sc=\E7:rc=\E8:xn:
-qB|bg|bg2.0nv|bgnv:BBN BitGraph Terminal (normal video):\
- :is=\E>\E[?5l\E[?7h:\
- :if=/usr/lib/tabset/vt100:tc=bgn:
-qB|bg|bg2.0rv|bgrv:BBN BitGraph Terminal (reverse video):\
- :is=\E>\E[?5h\E[?7h:\
- :if=/usr/lib/tabset/vt100:tc=bgn:
-qB|bg|bg1.25|BBN BitGraph terminal:\
- :al=2*\E[L:bs:cd=150\E[J:ce=2\E[K:cl=150\E[H\E[J:cm=%i\E[%d;%dH:\
- :co#85:dl=2*\E[M:\
- :is=\E<:\
- :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
- :kd=\E[B:ke=\E>:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:\
- :l1=PF1:l2=PF2:l3=PF3:l4=PF4:\
- :li#64:nd=\E[C:ns:pt:se=\E[0m:so=\E[7m:up=\E[A:
-qB|bg|bg1.25nv|:BBN BitGraph Terminal (normal video):\
- :is=\E<\E>\E[?5l\E[?7h:tc=bg1.25:
-qB|bg|bg1.25rv|:BBN BitGraph Terminal (reverse video):\
- :is=\E<\E>\E[?5h\E[?7h:tc=bg1.25:
-qN|nucterm|rayterm|NUC homebrew:\
- :am:bs:cl=1^L:li#24:co#80:nd=^C:up=^N:ho=^B:ll=^K:ce=^A:cd=^E:
-qb|ex3000:\
- :li#24:co#80:ho=^Q:
-qc|carlock|klc:\
- :al=^E:am:bs:ce=^U:cl=100^Z:cm=\E=%+ %+ :co#80:dc=\177:dl=^D:dm=:\
- :ed=:ei=^T:ho=^^:im=^T:li#24:nd=^L:se=^V:so=^V:up=^K:vb=\EV\EV:
-qe|exidy|exidy2500|exidy sorcerer as dm2500:\
- :al=^P^J^X:am:bs:ce=^W:cl=^^:cm=^L%r%n%.%.:co#64:\
- :dc=\b:dl=^P^Z^X:dm=^P:ed=^X:ei=^X:ho=^B:ic=^\:\
- :im=^P:li#30:nd=^\:pt:so=^N:se=^X:up=^Z:
-qn|netx|netronics:\
- :bs:cd=2000^F^E:ce=1600^E:cl=466^L:cm=\E=%+@%+@:co#64:ho=^D:\
- :li#16:ma=j^Jk^Pl :nd=\E+@A:pc=\200:sr=\E=@@^K:up=^K:
-# This came from the comp ctr who got it from some user. Smart indeed!
-qs|sexidy|exidy smart:\
- :li#24:co#64:cl=^l:ho=^q:nd=^s:up=^w:bs:bc=^a:ma=^x^J:kd=^S:
-qu|ubell|ubellchar:if=/usr/staff/michael/term/startup:\
- :am:bs:pt:ce=\Ed:cl=^Z:cm=\E=%+ %+ :co#80:li#24:nd=^L:up=^K:\
- :ma=j^Jk^P^K^Pl :ho=^^:
-qw|ttyWilliams:\
- :co#80:li#12:bc=^Y:do=^K:up=^Z:cl=^^:ce=^_:am:ho=^]:nd=^X:
-qx|xitex|xitex sct-100:\
- :bs:cd=2000^F^E:ce=1600^E:cl=400^L:cm=\E=%+@%+@:co#64:ho=^D:\
- :li#16:ma=j^Jk^Pl :nd=\E+@A:pc=\200:sr=\E=@@^K:up=^K:
-t3|ti|ti700|ti733|735|ti735|ti silent 700:\
- :bs:co#80:hc:os:dC#162:
-t4|ti745|745|743|ti silent 745:\
- :bs:co#80:hc:os:
-# There are some tvi's that require incredible amounts of padding and
-# some that don't. I'm assuming 912 and 920 are the old slow ones,
-# and 912b, 912c, 920b, 920c are the new ones that don't need padding.
-v1|tvi912|912|920|tvi920|old televideo:if=/usr/lib/tabset/stdcrt:\
- :al=33*\EE:am:bs:ce=\ET:cm=\E=%+ %+ :cl=^Z:co#80:dc=\EW:dl=33*\ER:ei=:\
- :kb=^h:ku=^K:kd=^J:kl=^H:kr=^L:k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:\
- :k4=^AD\r:k5=^AE\r:k6=^AF\r:k7=^AG\r:k8=^AH\r:k9=^AI\r:\
- :ho=^^:im=:ic=\EQ:li#24:nd=^L:pt:se=\Ek:so=\Ej:up=^K:us=\El:ue=\Em:\
- :ma=^K^P^L :sg=1:ug=1:
-v2|912b|912c|920b|920c|tvi|new televideo:\
- :al=5*\EE:dl=5*\ER:tc=912:
-# Note two things called "teleray". Reorder should move the common one
-# to the front if you have either. A dumb teleray with the cursor stuck
-# on the bottom and no obvious model number is probably a 3700.
-y1|t3700|teleray|dumb teleray 3700:\
- :bs:cl=^L:co#80:li#24:
-y3|t3800|teleray 3800 series: \
- :bs:cd=\EJ:ce=\EK:cl=^L:cm=\EY%+ %+ :co#80: \
- :do=\n:ho=\EH:li#24:ll=\EY7 :nd=\EC:pt:up=^K:
-y6|t1061|t10|teleray|teleray 1061:if=/usr/lib/tabset/teleray:\
- :al=2*\EL:am:bs:cd=1\EJ:ce=\EK:cl=1^L:cm=\EY%+ %+ :co#80:\
- :dc=\EQ:dl=2*\EM:ei=:ho=\EH:ic=\EP:im=:ip=0.4*:\
- :k1=^Z1:k2=^Z2:k3=^Z3:k4=^Z4:k5=^Z5:k6=^Z6:k7=^Z7:k8=^Z8:\
- :li#24:nd=\EC:pt:se=\ER@:so= \ERD:\
- :is=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5\EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef:\
- :up=\EA:us=\ERH:ue=\ER@:xs:xt:sg=2:ug=1:
-yf|t1061f|teleray 1061 with fast PROMs:\
- al=\EL:ip@:dl=\EM:tc=t1061:
-rv|vidtx|Radio Shack VIDEOTEX:\
- :cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#32:li#16:nd=\EC:up=\EA:
-ae|apple2e|Apple ][e with 80 column card:\
- :am:bs:cd=^K:ce=^]:cl=^L:cm=^^%r%+ %.:co#80:ho=^Y:\
- :ku=^_:kd=^J:kl=^H:kr=^\:kh=^Y:\
- :li#24:nd=^\:up=^_:xn:ma=^\ ^_^P^YH:pt:
-#
-# ----
-# Convention: First entry is two chars, first char is manufacturer,
-# second char is canonical abbreviation for model or mode.
-# Second entry is canonical abbreviation.
-# Third entry is the one the editor will print with "set" command.
-# Last entry is verbose description.
-# Others are mnemonic synonyms for the terminal.
-#
-# If you absolutely MUST check for a specific terminal (this is discouraged)
-# check for the 2nd entry (the canonical form) since all other codes are
-# subject to change. The two letter codes are there for version 6 and are
-# EXTREMELY subject to change, or even to go away if version 6 becomes for
-# all practical purposes obsolete.
-#
-# Special manufacturer codes:
-# M: Misc. (with only a few terminals)
-# q: Homemade
-# s: special (dialup, etc.)
-#
-# This file is to be installed with an editor script that moves the most
-# common terminals to the front of the file. If the source is not available,
-# it can be constructed by sorting
-# the above entries by the 2 char initial code.
diff --git a/etc/yow.lines b/etc/yow.lines
deleted file mode 100644
index 5b321620403..00000000000
--- a/etc/yow.lines
+++ /dev/null
Binary files differ