diff options
Diffstat (limited to 'etc')
-rw-r--r-- | etc/=MACHINES | 894 | ||||
-rw-r--r-- | etc/=TO-DO | 83 | ||||
-rw-r--r-- | etc/=news.texi | 3380 | ||||
-rw-r--r-- | etc/FAQ | 4469 | ||||
-rw-r--r-- | etc/Makefile | 23 | ||||
-rw-r--r-- | etc/README | 7 | ||||
-rw-r--r-- | etc/TUTORIAL | 879 | ||||
-rw-r--r-- | etc/sex.6 | 115 | ||||
-rw-r--r-- | etc/spook.lines | bin | 950 -> 0 bytes | |||
-rw-r--r-- | etc/tasks.texi | 398 | ||||
-rw-r--r-- | etc/termcap.dat | 1246 | ||||
-rw-r--r-- | etc/yow.lines | bin | 38353 -> 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 Binary files differdeleted file mode 100644 index 01ad7e2996c..00000000000 --- a/etc/spook.lines +++ /dev/null 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 Binary files differdeleted file mode 100644 index 5b321620403..00000000000 --- a/etc/yow.lines +++ /dev/null |