This file contains diffs between versions 19.8 and 19.9 of GNU Emacs. Before applying them, run the following commands in the top directory of the Emacs tree: rm etc/emacs.names (cd lisp rm pending-del.elc rmailsumo.elc term1.el tmenu.elc) diff -cprP emacs-19.8/ChangeLog emacs-19.9/ChangeLog *** emacs-19.8/ChangeLog Thu May 27 03:37:10 1993 --- emacs-19.9/ChangeLog Thu May 27 03:41:53 1993 *************** *** 1,3 **** --- 1,45 ---- + Thu May 27 02:35:32 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.9 released. + + Wed May 26 14:23:27 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Makefile.in (${SUBDIR}): Pass the value of the make variable to + subdirectory makes. + + * make-dist: Check for .elc files with no corresponding .el file. + + * Makefile.in (mkdir): Make all the directories in locallisppath. + + * config.guess: New file. + * configure.in: Use it, tentatively. + * INSTNALL: Mention its usage. + + * configure.in (hppa-hp-hpux): Use uname -r instead of uname -m; + the former gives you the operating system rev directly. Use + s/hpux.h if we don't recognize what we got. + + * Makefile.in (do-install): Don't remove a destination directory + if it's the same as the source. If ${srcdir}/info == ${infodir}, + don't try to copy the info files. + + * Makefile.in (COPYDIR, COPYDESTS): Don't mention etc twice; this + doesn't work if you're not using a separate source directory. + (do-install): Copy the build tree's etc directory only after + making sure it's not also the source tree's etc directory. + + Wed May 26 13:43:01 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * configure.in: Handle sunos4.1.3 specially. + + Tue May 25 12:47:10 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile.in (INSTALL): Add definition. + + * configure.in: Fix some messages. Support -with-gnu-cc. + At the end, use `set --', not `set -'. + Delete spurious `.h' in hpux alternatives. + Tue May 25 05:15:14 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * Version 19.8 released. diff -cprP emacs-19.8/INSTALL emacs-19.9/INSTALL *** emacs-19.8/INSTALL Thu May 27 03:37:09 1993 --- emacs-19.9/INSTALL Thu May 27 03:41:52 1993 *************** *** 38,44 **** ./configure CONFIGURATION-NAME [--OPTION[=VALUE]] ... The CONFIGURATION-NAME argument should be a configuration name given ! in `./etc/MACHINES'. The `--with-x', `--with-x11', and `--with-x10' options specify which window system Emacs should support. If you don't want X support, --- 38,47 ---- ./configure CONFIGURATION-NAME [--OPTION[=VALUE]] ... The CONFIGURATION-NAME argument should be a configuration name given ! in `./etc/MACHINES'. If omitted, `configure' will try to guess your ! system type by inspecting its environment; if it cannot, you must find ! the appropriate configuration name in `./etc/MACHINES' and specify it ! explicitly. The `--with-x', `--with-x11', and `--with-x10' options specify which window system Emacs should support. If you don't want X support, diff -cprP emacs-19.8/Makefile.in emacs-19.9/Makefile.in *** emacs-19.8/Makefile.in Thu May 27 03:37:10 1993 --- emacs-19.9/Makefile.in Thu May 27 03:41:54 1993 *************** *** 182,187 **** --- 182,188 ---- # ==================== Utility Programs for the Build ==================== # Allow the user to specify the install program. + INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ *************** SUBDIR_MAKEFILES = lib-src/Makefile src/ *** 203,210 **** # When installing the info files, we need to do special things to # avoid nuking an existing dir file, so we don't do that here; # instead, we have written out explicit code in the `install' targets. ! COPYDIR = etc ${srcdir}/etc ${srcdir}/lisp ${srcdir}/external-lisp ! COPYDESTS = ${etcdir} ${etcdir} ${lispdir} ${externallispdir} all: src/paths.h ${SUBDIR} --- 204,211 ---- # When installing the info files, we need to do special things to # avoid nuking an existing dir file, so we don't do that here; # instead, we have written out explicit code in the `install' targets. ! COPYDIR = ${srcdir}/etc ${srcdir}/lisp ${srcdir}/external-lisp ! COPYDESTS = ${etcdir} ${lispdir} ${externallispdir} all: src/paths.h ${SUBDIR} *************** src: lib-src *** 235,242 **** ${SUBDIR}: ${SUBDIR_MAKEFILES} FRC cd $@; $(MAKE) all ${MFLAGS} \ ! CC='${CC}' CFLAGS='${CFLAGS}' prefix='${prefix}' \ ! srcdir='${srcdir}/$@' libdir='${libdir}' ## We build the makefiles for the subdirectories here so that we can ## edit the values for the path variables into them. This means that --- 236,243 ---- ${SUBDIR}: ${SUBDIR_MAKEFILES} FRC cd $@; $(MAKE) all ${MFLAGS} \ ! CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' \ ! prefix='${prefix}' srcdir='${srcdir}/$@' libdir='${libdir}' ## We build the makefiles for the subdirectories here so that we can ## edit the values for the path variables into them. This means that *************** do-install: mkdir *** 329,335 **** exec_prefix=${exec_prefix} bindir=${bindir} libdir=${libdir} \ archlibdir=${archlibdir}) -set ${COPYDESTS} ; \ ! rm -rf ${COPYDESTS} ; \ mkdir ${COPYDESTS} ; \ for dir in ${COPYDIR} ; do \ dest=$$1 ; shift ; \ --- 330,341 ---- exec_prefix=${exec_prefix} bindir=${bindir} libdir=${libdir} \ archlibdir=${archlibdir}) -set ${COPYDESTS} ; \ ! for dir in ${COPYDIR} ; do \ ! if [ `(cd $$1 ; pwd)` != `(cd $${dir} ; pwd)` ] ; then \ ! rm -rf $${dir} ; \ ! fi ; \ ! done ! -set ${COPYDESTS} ; \ mkdir ${COPYDESTS} ; \ for dir in ${COPYDIR} ; do \ dest=$$1 ; shift ; \ *************** do-install: mkdir *** 344,356 **** rm -f $${subdir}/*~ ; \ done) ; \ done ! -(cd ${srcdir}/info ; \ ! if [ ! -f ${infodir}/dir ] && [ -f dir ]; then \ ! ${INSTALL_DATA} dir ${infodir}/dir ; \ ! fi ; \ ! for f in cl* emacs* forms* info* vip* ; do \ ! ${INSTALL_DATA} $$f ${infodir}/$$f ; \ ! done) cd ${srcdir}/etc; for page in emacs etags ctags ; do \ ${INSTALL_DATA} $${page}.1 ${mandir}/$${page}${manext} ; \ done --- 350,372 ---- rm -f $${subdir}/*~ ; \ done) ; \ done ! -[ `(cd etc; /bin/pwd)` != `(cd ${etcdir}; /bin/pwd)` ] \ ! && (echo "Copying ./etc..." ; \ ! (cd ./etc; tar cf - . )|(cd ${etcdir}; umask 0; tar xvf - ); \ ! for subdir in `find ${etcdir} -type d ! -name RCS -print` ; do \ ! rm -rf $${subdir}/RCS ; \ ! rm -rf $${subdir}/CVS ; \ ! rm -f $${subdir}/\#* ; \ ! rm -f $${subdir}/*~ ; \ ! done) ! -[ `(cd ${srcdir}/info; /bin/pwd)` != `(cd ${infodir}; /bin/pwd)` ] \ ! && (cd ${srcdir}/info ; \ ! if [ ! -f ${infodir}/dir ] && [ -f dir ]; then \ ! ${INSTALL_DATA} dir ${infodir}/dir ; \ ! fi ; \ ! for f in cl* emacs* forms* info* vip* ; do \ ! ${INSTALL_DATA} $$f ${infodir}/$$f ; \ ! done) cd ${srcdir}/etc; for page in emacs etags ctags ; do \ ${INSTALL_DATA} $${page}.1 ${mandir}/$${page}${manext} ; \ done *************** do-install: mkdir *** 365,371 **** ### instead of mkdir. Not all systems' mkdirs have the `-p' flag. mkdir: FRC ./lib-src/make-path ${COPYDESTS} ${lockdir} ${infodir} ${mandir} \ ! ${bindir} ${datadir} ${libdir} ${sitelisp} chmod 777 ${COPYDESTS} ${lockdir} FRC: --- 381,388 ---- ### instead of mkdir. Not all systems' mkdirs have the `-p' flag. mkdir: FRC ./lib-src/make-path ${COPYDESTS} ${lockdir} ${infodir} ${mandir} \ ! ${bindir} ${datadir} ${libdir} \ ! `echo ${locallisppath} | sed 's/:/ /'` chmod 777 ${COPYDESTS} ${lockdir} FRC: diff -cprP emacs-19.8/README emacs-19.9/README *** emacs-19.8/README Thu May 27 03:37:09 1993 --- emacs-19.9/README Thu May 27 03:41:53 1993 *************** *** 1,4 **** ! This directory tree holds version 19.8 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. See the files `etc/NEWS' and `etc/news.texi' for information on new --- 1,4 ---- ! This directory tree holds version 19.9 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. See the files `etc/NEWS' and `etc/news.texi' for information on new diff -cprP emacs-19.8/configure.in emacs-19.9/configure.in *** emacs-19.8/configure.in Thu May 27 03:37:11 1993 --- emacs-19.9/configure.in Thu May 27 03:41:54 1993 *************** *** 71,79 **** Set compilation and installation parameters for GNU Emacs, and report. CONFIGURATION specifies the machine and operating system to build for. --with-x Support the X Window System. ! --with-x=no Don't support the X Window System. ! --x-includes=DIR Search for X Window System header files in DIR. ! --x-libraries=DIR Search for X Window System libraries in DIR. --with-gcc Use GCC to compile Emacs. --with-gcc=no Don't use GCC to compile Emacs. --run-in-place Use libraries and data files directly out of the --- 71,79 ---- Set compilation and installation parameters for GNU Emacs, and report. CONFIGURATION specifies the machine and operating system to build for. --with-x Support the X Window System. ! --with-x=no Don't support X. ! --x-includes=DIR Search for X header files in DIR. ! --x-libraries=DIR Search for X libraries in DIR. --with-gcc Use GCC to compile Emacs. --with-gcc=no Don't use GCC to compile Emacs. --run-in-place Use libraries and data files directly out of the *************** Set it to either \`yes' or \`no'." *** 148,154 **** ;; ## Has the user specified whether or not they want GCC? ! "with_gcc" ) ## Make sure the value given was either "yes" or "no". case "${val}" in y | ye | yes ) val=yes ;; --- 148,154 ---- ;; ## Has the user specified whether or not they want GCC? ! "with_gcc" | "with_gnu_cc" ) ## Make sure the value given was either "yes" or "no". case "${val}" in y | ye | yes ) val=yes ;; *************** Set it to either \`yes' or \`no'." *** 273,284 **** done if [ "${configuration}" = "" ]; then ! (echo "${progname}: You must specify a configuration name as an argument." ! echo "${short_usage}") >&2 ! exit 1 fi - #### Decide where the source is. case "${srcdir}" in --- 273,290 ---- done if [ "${configuration}" = "" ]; then ! echo '- You did not tell me what kind of host system you want to configure. ! - I will attempt to guess the kind of system this is.' 1>&2 ! guesssys=`echo ${progname} | sed 's/configure$/config.guess/'` ! if configuration=`${guesssys}` ; then ! echo "- Looks like this is a ${configuration}" 1>&2 ! else ! echo '- Failed to guess the system type. You need to tell me.' 1>&2 ! echo "${short_usage}") >&2 ! exit 1 ! fi fi #### Decide where the source is. case "${srcdir}" in *************** case "${configuration}" in *** 519,534 **** ## HP 9000 series 700 and 800, running HP/UX hppa1.0-hp-hpux* ) ! machine=hp9000s800 opsys=hpux.h ;; hppa1.1-hp-hpux* ) ! machine=hp9000s800 opsys=hpux8.h ;; hppa*-hp-hpux* ) ## Cross-compilation? Nah! ! case "`uname -m`" in ! 9000/8?? ) machine=hp9000s800 opsys=hpux.h ;; ! 9000/7?? ) machine=hp9000s800 opsys=hpux8.h ;; esac ;; --- 525,541 ---- ## HP 9000 series 700 and 800, running HP/UX hppa1.0-hp-hpux* ) ! machine=hp9000s800 opsys=hpux ;; hppa1.1-hp-hpux* ) ! machine=hp9000s800 opsys=hpux8 ;; hppa*-hp-hpux* ) ## Cross-compilation? Nah! ! case "`uname -r`" in ! *.08.* ) machine=hp9000s800 opsys=hpux ;; ! *.09.* ) machine=hp9000s800 opsys=hpux8 ;; ! *) machine=hp9000s800 opsys=hpux ;; esac ;; *************** case "${configuration}" in *** 725,730 **** --- 732,738 ---- esac case "${configuration}" in *-sunos4.0* ) opsys=sunos4-0 ;; + *-sunos4.1.3* ) opsys=sunos4-1-3 ;; *-sunos4* | *-sunos ) opsys=sunos4-1 ;; *-sunos5* | *-solaris* ) opsys=sol2 ;; * ) opsys=bsd4-2 ;; *************** esac *** 912,918 **** case "${window_system}" in "none" | "x11" | "x10" ) ;; "" ) ! echo " No window system specifed. Looking for X Windows." window_system=none if [ -r /usr/lib/libX11.a \ -o -d /usr/include/X11 \ --- 920,926 ---- case "${window_system}" in "none" | "x11" | "x10" ) ;; "" ) ! echo " No window system specifed. Looking for X window system." window_system=none if [ -r /usr/lib/libX11.a \ -o -d /usr/include/X11 \ *************** case "${window_system}" in *** 922,928 **** fi ;; * ) ! echo "Don\'t specify the window system more than once." >&2 exit 1 ;; esac --- 930,936 ---- fi ;; * ) ! echo "Don't specify the window system more than once." >&2 exit 1 ;; esac *************** Configured for \`${configuration}'. *** 1101,1106 **** ### Restore the arguments to this script, so autoconf can record them ### in the config.status file. ! set - ${arguments} ] AC_OUTPUT(Makefile) --- 1109,1114 ---- ### Restore the arguments to this script, so autoconf can record them ### in the config.status file. ! set -- ${arguments} ] AC_OUTPUT(Makefile) diff -cprP emacs-19.8/etc/ChangeLog emacs-19.9/etc/ChangeLog *** emacs-19.8/etc/ChangeLog Thu May 27 03:40:51 1993 --- emacs-19.9/etc/ChangeLog Thu May 27 03:45:49 1993 *************** *** 1,3 **** --- 1,7 ---- + Thu May 27 02:35:32 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.9 released. + Mon May 24 12:14:41 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * Version 19.8 released. diff -cprP emacs-19.8/etc/JOKES emacs-19.9/etc/JOKES *** emacs-19.8/etc/JOKES Thu May 27 03:40:54 1993 --- emacs-19.9/etc/JOKES Thu May 27 03:45:51 1993 *************** *** 622,624 **** --- 622,636 ---- Everyday Material Almost Compiled Successfully now enough bashing for today :-) + + + Elvis + Masterminds + All + Computer + Software + + Just so you boys know the score. + + Thank you very Much, + The King diff -cprP emacs-19.8/etc/LNEWS emacs-19.9/etc/LNEWS *** emacs-19.8/etc/LNEWS Thu May 27 03:40:56 1993 --- emacs-19.9/etc/LNEWS Thu May 27 03:45:52 1993 *************** *** 521,528 **** is usually a symbol, and an associated value, which can be any Lisp object--just as for properties of symbols. ! You can use the property `face-code' to control the font and color ! of text. Several other property names have special meanings. You can create properties of any name and examine them later for your own purposes. --- 521,528 ---- is usually a symbol, and an associated value, which can be any Lisp object--just as for properties of symbols. ! You can use the property `face' to control the font and color of ! text. Several other property names have special meanings. You can create properties of any name and examine them later for your own purposes. *************** Special Properties *** 617,626 **** 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 `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 `local-map' property. The property's value, for the character --- 617,624 ---- 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 `face' to control the font and color of ! text. You can specify a different keymap for a portion of the text by means of a `local-map' property. The property's value, for the character diff -cprP emacs-19.8/etc/MACHINES emacs-19.9/etc/MACHINES *** emacs-19.8/etc/MACHINES Thu May 27 03:40:56 1993 --- emacs-19.9/etc/MACHINES Thu May 27 03:45:53 1993 *************** *** 175,181 **** 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. --- 175,181 ---- DECstation (mips-dec-ultrix or mips-dec-osf) ! Emacs runs under Ultrix and OSF/1 as of 19.7. See under Ultrix for problems using X windows on Ultrix. Note that this is a MIPS machine. *************** DECstation (mips-dec-ultrix or mips-dec- *** 189,196 **** 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) --- 189,198 ---- Motorola Delta 147 (m68k-motorola-sysv) + Emacs runs as of version 19.6. + Motorola Delta boxes running System V/68 release 3. ! (tested on sys1147 with SVR3V5). Motorola Delta 187 (m88k-motorola-sysv or m88k-motorola-m88kbcs) *************** Honeywell XPS100 (xps100-honeywell-sysv) *** 255,261 **** Config file added in version 19. ! HP 9000 series 200 or 300 (m68k-hp-bsd or m68k-hp-hpux7.) Version 19 works under BSD. --- 257,263 ---- Config file added in version 19. ! Hewlett-Packard 9000 series 200 or 300 (m68k-hp-bsd or m68k-hp-hpux7.) Version 19 works under BSD. *************** HP 9000 series 500: not supported. *** 297,307 **** which relocates data in memory during execution of a program, and support for it would be difficult to implement. ! HP 9000 series 700 or 800 (Spectrum) (hppa-hp-hpux) These files support HP's Precision Architecture machines running HP-UX. It has been moderately tested on the Series ! 840. It hasn't been tested on the 700's at all. If you try it out on this system, please send us comments and patches. --- 299,310 ---- which relocates data in memory during execution of a program, and support for it would be difficult to implement. ! HP 9000 series 700 or 800 (Spectrum) (hppa1.0-hp-hpux or hppa1.1-hp-hpux) These files support HP's Precision Architecture machines running HP-UX. It has been moderately tested on the Series ! 840. Use hppa1.1 for the 700 series and hppa1.0 for the 800 ! series machines. (Emacs may not actually care which one you use.) It hasn't been tested on the 700's at all. If you try it out on this system, please send us comments and patches. *************** IBM PS/2 (i386-ibm-aix1.1 or i386-ibm-ai *** 334,341 **** 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. --- 337,347 ---- IBM RS/6000 (rs6000-ibm-aix) ! Emacs 19.7 runs. ! ! At last report, Emacs didn't run well on terminals. Informed ! persons say that the tty VMIN and VTIME settings have been ! corrupted; if you have a fix, please send it to us. Compiling with -O using the IBM compiler has been known to make Emacs work incorrectly. *************** Integrated Solutions `Optimum V' (m68k-i *** 369,391 **** 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-unknown-linux, 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-unknown-linux for Linux. 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 at end under Xenix. If you are using Esix, see notes at end under Esix. Some sysV.3 systems seem to have bugs in `opendir'; for them, alter `config.h' to define NONSYSTEM_DIR_LIBRARY --- 375,400 ---- 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-unknown-linux, ! i386-intsys-sysv, i386-unknown-sysv5.2.2, ! i386-unknown-sysv5.3, i386-unknown-bsd4.2, ! i386-unknown-sco3.2v4) 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; Emacs runs as of version 19.6. ! Use i386-unknown-linux for Linux; Emacs runs as of version 19.7. Use i386-intsys-sysv for Integrated Solutions 386 machines. It may also be correct for Microport systems. ! Use i386-unknown-sco3.2v4 for SCO 3.2v4; Emacs runs as of version 19.6. If you are using Xenix, see notes at end under Xenix. If you are using Esix, see notes at end under Esix. + + Note that use with Linux requires the experimental "net 2" network + software (no relation to Berkeley Net 2). Some sysV.3 systems seem to have bugs in `opendir'; for them, alter `config.h' to define NONSYSTEM_DIR_LIBRARY *************** Iris 4D (mips-sgi-irix3.3 or mips-sgi-ir *** 434,442 **** #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 --- 443,453 ---- #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. Irix versions 4.0 and later with GNU Emacs ! versions 18.59 and later fix this bug. ! Macintosh *************** Stride (m68k-stride-sysv) *** 617,626 **** 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. --- 628,640 ---- Sun 1, 2 and 3 (m68k-sun-sunos, sparc-sun-sunos, i386-sun-sunos) + Emacs runs on Sparcs and Sun 3's, as of version 19.7. + 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'. For SunOS release 4.1.3 on a Sparc, use ! `sparc-sun-sunos4.1.3'. Use `m68k' for the 68000-based Sun boxes, `sparc' for Sparcstations, and `i386' for Sun Roadrunners. *************** Sun 1, 2 and 3 (m68k-sun-sunos, sparc-su *** 629,637 **** 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 --- 643,648 ---- *************** Sun 1, 2 and 3 (m68k-sun-sunos, sparc-su *** 658,692 **** 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) --- 669,674 ---- diff -cprP emacs-19.8/etc/NEWS emacs-19.9/etc/NEWS *** emacs-19.8/etc/NEWS Thu May 27 03:40:59 1993 --- emacs-19.9/etc/NEWS Thu May 27 03:45:55 1993 *************** *** 111,116 **** --- 111,121 ---- `query-replace'. There are also very specific history lists, such as the one that `compile' uses for compilation commands. + * You can now display text in a mixture of fonts and colors, using the + "face" feature, together with the overlay and text property features. + See the Emacs Lisp manual for details. The Emacs Users Manual describes + how to change the colors and font of standard predefined faces. + * You can refer to files on other machines using special file name syntax: /HOST:FILENAME *************** buffer with a particular name. *** 375,381 **** If `compare-ignore-case' is non-nil, then differences in case are also ignored. ! * `forward-paragraph' is now bound to M-{ by default, and `backward-paragraph' to M-}. Originally, these commands were bound to M-[ and M-], but they were running into conflicts with the use of function keys. On many terminals, function keys send a sequence beginning ESC-[, so many users have defined this --- 380,386 ---- If `compare-ignore-case' is non-nil, then differences in case are also ignored. ! * `backward-paragraph' is now bound to M-{ by default, and `forward-paragraph' to M-}. Originally, these commands were bound to M-[ and M-], but they were running into conflicts with the use of function keys. On many terminals, function keys send a sequence beginning ESC-[, so many users have defined this diff -cprP emacs-19.8/etc/ORDERS emacs-19.9/etc/ORDERS *** emacs-19.8/etc/ORDERS Thu May 27 03:41:05 1993 --- emacs-19.9/etc/ORDERS Thu May 27 03:46:01 1993 *************** *** 395,401 **** The following reference cards, unit price, without the manuals: ! ____ @ $ 2 = $ ______ GNU Emacs reference card. ____ @ $ 2 = $ ______ GNU Emacs Calc reference card. --- 395,403 ---- The following reference cards, unit price, without the manuals: ! ____ @ $ 2 = $ ______ GNU Emacs reference card - version 18. ! ! ____ @ $ 2 = $ ______ GNU Emacs reference card - version 19. ____ @ $ 2 = $ ______ GNU Emacs Calc reference card. diff -cprP emacs-19.8/etc/ORDERS.JAPAN emacs-19.9/etc/ORDERS.JAPAN *** emacs-19.8/etc/ORDERS.JAPAN Thu May 27 03:41:05 1993 --- emacs-19.9/etc/ORDERS.JAPAN Thu May 27 03:46:01 1993 *************** *** 100,106 **** Prices and contents may change without notice after January 31, 1994. ! Fax toll-free to 0066-3382-0158. For use in Japan only. Free Software Foundation 675 Massachusetts Avenue --- 100,106 ---- Prices and contents may change without notice after January 31, 1994. ! Fax toll-free to 0066-3382-0158 or 0031-13-2473. For use in Japan only. Free Software Foundation 675 Massachusetts Avenue Only in emacs-19.8/etc: emacs.names diff -cprP emacs-19.8/etc/news.texi emacs-19.9/etc/news.texi *** emacs-19.8/etc/news.texi Thu May 27 03:41:12 1993 --- emacs-19.9/etc/news.texi Thu May 27 03:46:06 1993 *************** *** 576,582 **** which is usually a symbol, and an associated value, which can be any Lisp object---just as for properties of symbols. ! You can use the property @code{face-code} to control the font and color of text. Several other property names have special meanings. You can create properties of any name and examine them later for your own purposes. --- 576,582 ---- which is usually a symbol, and an associated value, which can be any Lisp object---just as for properties of symbols. ! You can use the property @code{face} to control the font and color of text. Several other property names have special meanings. You can create properties of any name and examine them later for your own purposes. *************** that property only. The property is the *** 679,685 **** @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. You can specify a different keymap for a portion of the text by means --- 679,685 ---- @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} to control the font and color of text. You can specify a different keymap for a portion of the text by means diff -cprP emacs-19.8/info/emacs emacs-19.9/info/emacs *** emacs-19.8/info/emacs Thu May 27 03:41:19 1993 --- emacs-19.9/info/emacs Thu May 27 03:46:11 1993 *************** *** 9,29 **** emacs-4: 142237 emacs-5: 181939 emacs-6: 231552 ! emacs-7: 280500 ! emacs-8: 328239 ! emacs-9: 377172 ! emacs-10: 425527 ! emacs-11: 474595 ! emacs-12: 522218 ! emacs-13: 569279 ! emacs-14: 619038 ! emacs-15: 667678 ! emacs-16: 717370 ! emacs-17: 766801 ! emacs-18: 810034 ! emacs-19: 844363 ! emacs-20: 871777 ! emacs-21: 912891  Tag Table: (Indirect) --- 9,29 ---- emacs-4: 142237 emacs-5: 181939 emacs-6: 231552 ! emacs-7: 280505 ! emacs-8: 328244 ! emacs-9: 377177 ! emacs-10: 425532 ! emacs-11: 474600 ! emacs-12: 522223 ! emacs-13: 569284 ! emacs-14: 619043 ! emacs-15: 667683 ! emacs-16: 717375 ! emacs-17: 766806 ! emacs-18: 810163 ! emacs-19: 844492 ! emacs-20: 871906 ! emacs-21: 913020  Tag Table: (Indirect) *************** Node: File Aliases245374 *** 129,404 **** Node: Version Control246526 Node: Concepts of VC247606 Node: Editing with VC249067 ! Node: Variables for Check-in/out253623 ! Node: Log Entries255294 ! Node: Change Logs and VC256467 ! Node: Comparing Versions259732 ! Node: VC Status261120 ! Node: Renaming and VC262816 ! Node: Snapshots263491 ! Node: Making Snapshots263983 ! Node: Snapshot Caveats265242 ! Node: Version Headers266908 ! Node: ListDir269364 ! Node: Comparing Files270866 ! Node: Misc File Ops272483 ! Node: Buffers275467 ! Node: Select Buffer277741 ! Node: List Buffers279024 ! Node: Misc Buffer280500 ! Node: Kill Buffer283064 ! Node: Several Buffers284520 ! Node: Windows288781 ! Node: Basic Window289473 ! Node: Split Window291313 ! Node: Other Window293278 ! Node: Pop Up Window295039 ! Node: Change Window296506 ! Node: Frames298380 ! Node: Mouse Commands299271 ! Node: Creating Frames300640 ! Node: Frame Parameters301993 ! Node: Scroll Bars303387 ! Node: Menu Bars304855 ! Node: Faces305332 ! Node: Misc X307774 ! Node: Major Modes308355 ! Node: Choosing Modes310623 ! Node: Indentation313276 ! Node: Indentation Commands315457 ! Node: Tab Stops318390 ! Node: Just Spaces320298 ! Node: Text321103 ! Node: Words323116 ! Node: Sentences326060 ! Node: Paragraphs328239 ! Node: Pages330540 ! Node: Filling333130 ! Node: Auto Fill333697 ! Node: Fill Commands335842 ! Node: Fill Prefix338473 ! Node: Case341886 ! Node: Text Mode344190 ! Node: Outline Mode346275 ! Node: Outline Format347891 ! Node: Outline Motion350671 ! Node: Outline Visibility352237 ! Node: TeX Mode355198 ! Node: TeX Editing356670 ! Node: LaTeX Editing359998 ! Node: TeX Print361436 ! Node: TeX Distrib367649 ! Node: Nroff Mode368761 ! Node: Programs370305 ! Node: Program Modes372995 ! Node: Lists375209 ! Node: List Commands377172 ! Node: Defuns380684 ! Node: Program Indent383341 ! Node: Basic Indent383974 ! Node: Multi-line Indent385971 ! Node: Lisp Indent387606 ! Node: C Indent390992 ! Node: Matching396242 ! Node: Comments397791 ! Node: Balanced Editing405174 ! Node: Symbol Completion406185 ! Node: Documentation407570 ! Node: Change Log409032 ! Node: Tags411410 ! Node: Tag Syntax412747 ! Node: Create Tag Table413928 ! Node: Select Tag Table415521 ! Node: Find Tag417049 ! Node: Tags Search420023 ! Node: Tags Stepping422888 ! Node: List Tags423430 ! Node: Emerge424585 ! Node: Overview of Emerge425527 ! Node: Submodes of Emerge428628 ! Node: State of Difference430308 ! Node: Merge Commands432822 ! Node: Exiting Emerge435379 ! Node: Combining in Emerge436227 ! Node: Fine Points of Emerge437086 ! Node: C Mode438031 ! Node: Fortran439971 ! Node: Fortran Motion441263 ! Node: Fortran Indent442050 ! Node: ForIndent Commands442793 ! Node: ForIndent Cont444244 ! Node: ForIndent Num446582 ! Node: ForIndent Conv447551 ! Node: ForIndent Vars448598 ! Node: Fortran Comments450415 ! Node: Fortran Autofill454319 ! Node: Fortran Columns455929 ! Node: Fortran Abbrev457455 ! Node: Asm Mode458361 ! Node: Building458903 ! Node: Compilation459869 ! Node: Debuggers465050 ! Node: Starting GUD465673 ! Node: Debugger Operation467161 ! Node: Commands of GUD468447 ! Node: GUD Customization470916 ! Node: Executing Lisp472667 ! Node: Lisp Libraries474595 ! Node: Lisp Eval478236 ! Node: Lisp Interaction481861 ! Node: External Lisp483030 ! Node: Abbrevs485206 ! Node: Defining Abbrevs487415 ! Node: Expanding Abbrevs489847 ! Node: Editing Abbrevs492877 ! Node: Saving Abbrevs494763 ! Node: Dynamic Abbrevs496752 ! Node: Picture498048 ! Node: Basic Picture500413 ! Node: Insert in Picture502871 ! Node: Tabs in Picture504287 ! Node: Rectangles in Picture505790 ! Node: Sending Mail507527 ! Node: Mail Format509876 ! Node: Mail Headers511217 ! Node: Mail Aliases514742 ! Node: Mail Mode516674 ! Node: Distracting NSA521450 ! Node: Rmail522218 ! Node: Rmail Scrolling525486 ! Node: Rmail Motion526462 ! Node: Rmail Deletion529611 ! Node: Rmail Inbox532358 ! Node: Rmail Files534629 ! Node: Rmail Output537105 ! Node: Rmail Labels540226 ! Node: Rmail Reply543991 ! Node: Rmail Summary548317 ! Node: Rmail Make Summary549300 ! Node: Rmail Summary Edit551067 ! Node: Rmail Editing553615 ! Node: Rmail Digest555846 ! Node: Out of Rmail556942 ! Node: Rmail Rot13557426 ! Node: Dired558045 ! Node: Dired Enter559426 ! Node: Dired Commands560340 ! Node: Dired Deletion561357 ! Node: Dired Visiting565356 ! Node: Marks vs. Flags566622 ! Node: Operating on Files569279 ! Node: Shell Commands in Dired572603 ! Node: Transforming File Names574287 ! Node: Comparison in Dired576704 ! Node: Subdirectories in Dired577523 ! Node: Subdirectory Motion579138 ! Node: Hiding Subdirectories580074 ! Node: Dired Updating581285 ! Node: Dired and Find583102 ! Node: Calendar/Diary584321 ! Node: Calendar Motion585681 ! Node: Calendar Unit Motion586439 ! Node: Move to Beginning or End588731 ! Node: Specified Dates589746 ! Node: Scroll Calendar590630 ! Node: Counting Days592647 ! Node: General Calendar593079 ! Node: Holidays594038 ! Node: Sunrise/Sunset596355 ! Node: Lunar Phases598959 ! Node: Other Calendars600345 ! Node: Calendar Systems601520 ! Node: To Other Calendar603372 ! Node: From Other Calendar604502 ! Node: Mayan Calendar606319 ! Node: Diary609475 ! Node: Diary Commands610981 ! Node: Format of Diary File613721 ! Node: Date Formats616494 ! Node: Adding to Diary619038 ! Node: Special Diary Entries620666 ! Node: Appointments624949 ! Node: Daylight Savings626891 ! Node: GNUS628447 ! Node: Buffers of GNUS629178 ! Node: GNUS Startup630189 ! Node: Summary of GNUS631163 ! Node: Sorting634643 ! Node: Shell639615 ! Node: Single Shell640606 ! Node: Interactive Shell642262 ! Node: Shell Mode645410 ! Node: Shell History648338 ! Node: Narrowing650110 ! Node: Hardcopy652396 ! Node: Two-Column653524 ! Node: Editing Binary Files656708 ! Node: Emacs Server658041 ! Node: Recursive Edit660730 ! Node: Dissociated Press664054 ! Node: Amusements666750 ! Node: Emulation667678 ! Node: Customization670319 ! Node: Minor Modes672013 ! Node: Variables674992 ! Node: Examining677112 ! Node: Edit Options678679 ! Node: Hooks680331 ! Node: Locals682447 ! Node: File Variables685854 ! Node: Keyboard Macros690477 ! Node: Basic Kbd Macro692658 ! Node: Save Kbd Macro695350 ! Node: Kbd Macro Query697024 ! Node: Key Bindings698982 ! Node: Keymaps700176 ! Node: Prefix Keymaps703583 ! Node: Local Keymaps704868 ! Node: Minibuffer Maps707033 ! Node: Rebinding707651 ! Node: Init Rebinding710719 ! Node: Function Keys712205 ! Node: Mouse Buttons714889 ! Node: Disabling717370 ! Node: Keyboard Translations719109 ! Node: Syntax720616 ! Node: Init File721746 ! Node: Init Syntax723176 ! Node: Init Examples725270 ! Node: Terminal Init729199 ! Node: Find Init730874 ! Node: Quitting731734 ! Node: Lossage735292 ! Node: DEL Gets Help735989 ! Node: Stuck Recursive736357 ! Node: Screen Garbled737063 ! Node: Text Garbled738182 ! Node: Unasked-for Search738821 ! Node: Emergency Escape740305 ! Node: Total Frustration742056 ! Node: Bugs742675 ! Node: Bug Criteria743376 ! Node: Understanding Bug Reporting745970 ! Node: Checklist748467 ! Node: Sending Patches758650 ! Node: Service763521 ! Node: Command Arguments764117 ! Node: Ordinary Arguments766049 ! Node: Initial Options766801 ! Node: Command Example768733 ! Node: Resume Arguments769583 ! Node: Display X771234 ! Node: Font X773615 ! Node: Colors X774945 ! Node: Window Size X776165 ! Node: Borders X778549 ! Node: Icons X779480 ! Node: Resources X780440 ! Node: Manifesto784024 ! Node: Glossary810034 ! Node: Key Index844363 ! Node: Command Index871777 ! Node: Variable Index912891 ! Node: Concept Index925026  End Tag Table --- 129,404 ---- Node: Version Control246526 Node: Concepts of VC247606 Node: Editing with VC249067 ! Node: Variables for Check-in/out253628 ! Node: Log Entries255299 ! Node: Change Logs and VC256472 ! Node: Comparing Versions259737 ! Node: VC Status261125 ! Node: Renaming and VC262821 ! Node: Snapshots263496 ! Node: Making Snapshots263988 ! Node: Snapshot Caveats265247 ! Node: Version Headers266913 ! Node: ListDir269369 ! Node: Comparing Files270871 ! Node: Misc File Ops272488 ! Node: Buffers275472 ! Node: Select Buffer277746 ! Node: List Buffers279029 ! Node: Misc Buffer280505 ! Node: Kill Buffer283069 ! Node: Several Buffers284525 ! Node: Windows288786 ! Node: Basic Window289478 ! Node: Split Window291318 ! Node: Other Window293283 ! Node: Pop Up Window295044 ! Node: Change Window296511 ! Node: Frames298385 ! Node: Mouse Commands299276 ! Node: Creating Frames300645 ! Node: Frame Parameters301998 ! Node: Scroll Bars303392 ! Node: Menu Bars304860 ! Node: Faces305337 ! Node: Misc X307779 ! Node: Major Modes308360 ! Node: Choosing Modes310628 ! Node: Indentation313281 ! Node: Indentation Commands315462 ! Node: Tab Stops318395 ! Node: Just Spaces320303 ! Node: Text321108 ! Node: Words323121 ! Node: Sentences326065 ! Node: Paragraphs328244 ! Node: Pages330545 ! Node: Filling333135 ! Node: Auto Fill333702 ! Node: Fill Commands335847 ! Node: Fill Prefix338478 ! Node: Case341891 ! Node: Text Mode344195 ! Node: Outline Mode346280 ! Node: Outline Format347896 ! Node: Outline Motion350676 ! Node: Outline Visibility352242 ! Node: TeX Mode355203 ! Node: TeX Editing356675 ! Node: LaTeX Editing360003 ! Node: TeX Print361441 ! Node: TeX Distrib367654 ! Node: Nroff Mode368766 ! Node: Programs370310 ! Node: Program Modes373000 ! Node: Lists375214 ! Node: List Commands377177 ! Node: Defuns380689 ! Node: Program Indent383346 ! Node: Basic Indent383979 ! Node: Multi-line Indent385976 ! Node: Lisp Indent387611 ! Node: C Indent390997 ! Node: Matching396247 ! Node: Comments397796 ! Node: Balanced Editing405179 ! Node: Symbol Completion406190 ! Node: Documentation407575 ! Node: Change Log409037 ! Node: Tags411415 ! Node: Tag Syntax412752 ! Node: Create Tag Table413933 ! Node: Select Tag Table415526 ! Node: Find Tag417054 ! Node: Tags Search420028 ! Node: Tags Stepping422893 ! Node: List Tags423435 ! Node: Emerge424590 ! Node: Overview of Emerge425532 ! Node: Submodes of Emerge428633 ! Node: State of Difference430313 ! Node: Merge Commands432827 ! Node: Exiting Emerge435384 ! Node: Combining in Emerge436232 ! Node: Fine Points of Emerge437091 ! Node: C Mode438036 ! Node: Fortran439976 ! Node: Fortran Motion441268 ! Node: Fortran Indent442055 ! Node: ForIndent Commands442798 ! Node: ForIndent Cont444249 ! Node: ForIndent Num446587 ! Node: ForIndent Conv447556 ! Node: ForIndent Vars448603 ! Node: Fortran Comments450420 ! Node: Fortran Autofill454324 ! Node: Fortran Columns455934 ! Node: Fortran Abbrev457460 ! Node: Asm Mode458366 ! Node: Building458908 ! Node: Compilation459874 ! Node: Debuggers465055 ! Node: Starting GUD465678 ! Node: Debugger Operation467166 ! Node: Commands of GUD468452 ! Node: GUD Customization470921 ! Node: Executing Lisp472672 ! Node: Lisp Libraries474600 ! Node: Lisp Eval478241 ! Node: Lisp Interaction481866 ! Node: External Lisp483035 ! Node: Abbrevs485211 ! Node: Defining Abbrevs487420 ! Node: Expanding Abbrevs489852 ! Node: Editing Abbrevs492882 ! Node: Saving Abbrevs494768 ! Node: Dynamic Abbrevs496757 ! Node: Picture498053 ! Node: Basic Picture500418 ! Node: Insert in Picture502876 ! Node: Tabs in Picture504292 ! Node: Rectangles in Picture505795 ! Node: Sending Mail507532 ! Node: Mail Format509881 ! Node: Mail Headers511222 ! Node: Mail Aliases514747 ! Node: Mail Mode516679 ! Node: Distracting NSA521455 ! Node: Rmail522223 ! Node: Rmail Scrolling525491 ! Node: Rmail Motion526467 ! Node: Rmail Deletion529616 ! Node: Rmail Inbox532363 ! Node: Rmail Files534634 ! Node: Rmail Output537110 ! Node: Rmail Labels540231 ! Node: Rmail Reply543996 ! Node: Rmail Summary548322 ! Node: Rmail Make Summary549305 ! Node: Rmail Summary Edit551072 ! Node: Rmail Editing553620 ! Node: Rmail Digest555851 ! Node: Out of Rmail556947 ! Node: Rmail Rot13557431 ! Node: Dired558050 ! Node: Dired Enter559431 ! Node: Dired Commands560345 ! Node: Dired Deletion561362 ! Node: Dired Visiting565361 ! Node: Marks vs. Flags566627 ! Node: Operating on Files569284 ! Node: Shell Commands in Dired572608 ! Node: Transforming File Names574292 ! Node: Comparison in Dired576709 ! Node: Subdirectories in Dired577528 ! Node: Subdirectory Motion579143 ! Node: Hiding Subdirectories580079 ! Node: Dired Updating581290 ! Node: Dired and Find583107 ! Node: Calendar/Diary584326 ! Node: Calendar Motion585686 ! Node: Calendar Unit Motion586444 ! Node: Move to Beginning or End588736 ! Node: Specified Dates589751 ! Node: Scroll Calendar590635 ! Node: Counting Days592652 ! Node: General Calendar593084 ! Node: Holidays594043 ! Node: Sunrise/Sunset596360 ! Node: Lunar Phases598964 ! Node: Other Calendars600350 ! Node: Calendar Systems601525 ! Node: To Other Calendar603377 ! Node: From Other Calendar604507 ! Node: Mayan Calendar606324 ! Node: Diary609480 ! Node: Diary Commands610986 ! Node: Format of Diary File613726 ! Node: Date Formats616499 ! Node: Adding to Diary619043 ! Node: Special Diary Entries620671 ! Node: Appointments624954 ! Node: Daylight Savings626896 ! Node: GNUS628452 ! Node: Buffers of GNUS629183 ! Node: GNUS Startup630194 ! Node: Summary of GNUS631168 ! Node: Sorting634648 ! Node: Shell639620 ! Node: Single Shell640611 ! Node: Interactive Shell642267 ! Node: Shell Mode645415 ! Node: Shell History648343 ! Node: Narrowing650115 ! Node: Hardcopy652401 ! Node: Two-Column653529 ! Node: Editing Binary Files656713 ! Node: Emacs Server658046 ! Node: Recursive Edit660735 ! Node: Dissociated Press664059 ! Node: Amusements666755 ! Node: Emulation667683 ! Node: Customization670324 ! Node: Minor Modes672018 ! Node: Variables674997 ! Node: Examining677117 ! Node: Edit Options678684 ! Node: Hooks680336 ! Node: Locals682452 ! Node: File Variables685859 ! Node: Keyboard Macros690482 ! Node: Basic Kbd Macro692663 ! Node: Save Kbd Macro695355 ! Node: Kbd Macro Query697029 ! Node: Key Bindings698987 ! Node: Keymaps700181 ! Node: Prefix Keymaps703588 ! Node: Local Keymaps704873 ! Node: Minibuffer Maps707038 ! Node: Rebinding707656 ! Node: Init Rebinding710724 ! Node: Function Keys712210 ! Node: Mouse Buttons714894 ! Node: Disabling717375 ! Node: Keyboard Translations719114 ! Node: Syntax720621 ! Node: Init File721751 ! Node: Init Syntax723181 ! Node: Init Examples725275 ! Node: Terminal Init729204 ! Node: Find Init730879 ! Node: Quitting731739 ! Node: Lossage735297 ! Node: DEL Gets Help735994 ! Node: Stuck Recursive736362 ! Node: Screen Garbled737068 ! Node: Text Garbled738187 ! Node: Unasked-for Search738826 ! Node: Emergency Escape740310 ! Node: Total Frustration742061 ! Node: Bugs742680 ! Node: Bug Criteria743381 ! Node: Understanding Bug Reporting745975 ! Node: Checklist748472 ! Node: Sending Patches758655 ! Node: Service763526 ! Node: Command Arguments764122 ! Node: Ordinary Arguments766054 ! Node: Initial Options766806 ! Node: Command Example768738 ! Node: Resume Arguments769588 ! Node: Display X771239 ! Node: Font X773620 ! Node: Colors X774950 ! Node: Window Size X776167 ! Node: Borders X778551 ! Node: Icons X779482 ! Node: Resources X780442 ! Node: Manifesto784153 ! Node: Glossary810163 ! Node: Key Index844492 ! Node: Command Index871906 ! Node: Variable Index913020 ! Node: Concept Index925155  End Tag Table diff -cprP emacs-19.8/info/emacs-1 emacs-19.9/info/emacs-1 *** emacs-19.8/info/emacs-1 Thu May 27 03:41:20 1993 --- emacs-19.9/info/emacs-1 Thu May 27 03:46:11 1993 *************** *** 9,15 **** Emacs is the extensible, customizable, self-documenting real-time display editor. This Info file describes how to edit with Emacs and some of how to customize it, but not how to extend it. It corresponds ! to GNU Emacs version 19.8. * Menu: --- 9,15 ---- Emacs is the extensible, customizable, self-documenting real-time display editor. This Info file describes how to edit with Emacs and some of how to customize it, but not how to extend it. It corresponds ! to GNU Emacs version 19.9. * Menu: diff -cprP emacs-19.8/info/emacs-17 emacs-19.9/info/emacs-17 *** emacs-19.8/info/emacs-17 Thu May 27 03:41:23 1993 --- emacs-19.9/info/emacs-17 Thu May 27 03:46:15 1993 *************** *** 212,218 **** parts of the Emacs display. To find out what colors are available on your system, look at the `/usr/lib/X11/rgb.txt' file. If you do not specify colors, the default for the background is white and the default ! for all other resources is black. On a monochrome (black and white) display, the foreground is black, the background is white, and the border is grey. You can reverse the --- 212,218 ---- parts of the Emacs display. To find out what colors are available on your system, look at the `/usr/lib/X11/rgb.txt' file. If you do not specify colors, the default for the background is white and the default ! for all other colors is black. On a monochrome (black and white) display, the foreground is black, the background is white, and the border is grey. You can reverse the *************** resource file. *** 399,406 **** name is `Emacs'. To specify options for all Emacs jobs, no matter what name is used to run them, write `Emacs' instead of `emacs', like this: ! Emacs.Borderwidth: 2 ! Emacs.borderwidth: 4 The following table lists the resource names that designate options for Emacs, each with the class that it belongs to: --- 399,406 ---- name is `Emacs'. To specify options for all Emacs jobs, no matter what name is used to run them, write `Emacs' instead of `emacs', like this: ! Emacs.BorderWidth: 2 ! Emacs.borderWidth: 4 The following table lists the resource names that designate options for Emacs, each with the class that it belongs to: *************** for Emacs, each with the class that it b *** 436,441 **** --- 436,444 ---- `internalBorder' (class `BorderWidth') Width in pixels of internal border. + `paneFont' (class `Font') + Font name for menu pane titles. + `pointerColor' (class `Foreground') Color of mouse cursor. *************** for Emacs, each with the class that it b *** 442,447 **** --- 445,453 ---- `reverseVideo' (class `ReverseVideo') Switch foreground and background default colors if `on', use colors as specified if `off'. + + `selectionFont' (class `Font') + Font name for menu items. `title' (class `Title') Name to display in title bar of initial Emacs frame. diff -cprP emacs-19.8/info/emacs-21 emacs-19.9/info/emacs-21 *** emacs-19.8/info/emacs-21 Thu May 27 03:41:25 1993 --- emacs-19.9/info/emacs-21 Thu May 27 03:46:17 1993 *************** *** 219,225 **** * vc-initial-comment: Editing with VC. * vc-keep-workfiles: Editing with VC. * vc-log-mode-hook: Log Entries. ! * vc-make-backups: Editing with VC. * vc-mistrust-permissions: Variables for Check-in/out. * vc-static-header-alist: Version Headers. * vc-suppress-confirm: Variables for Check-in/out. --- 219,225 ---- * vc-initial-comment: Editing with VC. * vc-keep-workfiles: Editing with VC. * vc-log-mode-hook: Log Entries. ! * vc-make-backup-files: Editing with VC. * vc-mistrust-permissions: Variables for Check-in/out. * vc-static-header-alist: Version Headers. * vc-suppress-confirm: Variables for Check-in/out. diff -cprP emacs-19.8/info/emacs-6 emacs-19.9/info/emacs-6 *** emacs-19.8/info/emacs-6 Thu May 27 03:41:26 1993 --- emacs-19.9/info/emacs-6 Thu May 27 03:46:18 1993 *************** *** 438,444 **** Emacs does not save backup files for source files that are maintained with version control. If you want to make backup files despite version ! control, set the variable `vc-make-backups' to a non-`nil' value. Normally the work file exists all the time, whether it is locked or not. If you set `vc-keep-workfiles' to `nil', then checking in a new --- 438,444 ---- Emacs does not save backup files for source files that are maintained with version control. If you want to make backup files despite version ! control, set the variable `vc-make-backup-files' to a non-`nil' value. Normally the work file exists all the time, whether it is locked or not. If you set `vc-keep-workfiles' to `nil', then checking in a new diff -cprP emacs-19.8/info/emacs-8 emacs-19.9/info/emacs-8 *** emacs-19.8/info/emacs-8 Thu May 27 03:41:27 1993 --- emacs-19.9/info/emacs-8 Thu May 27 03:46:19 1993 *************** *** 776,782 **** In LaTeX input, `\begin' and `\end' commands are used to group blocks of text. To insert a `\begin' and a matching `\end' (on a new ! line following the `\begin'), use `C-c C-f' (`tex-latex-block'). A blank line is inserted between the two, and point is left there. Emacs knows all of the standard LaTeX block names and will --- 776,782 ---- In LaTeX input, `\begin' and `\end' commands are used to group blocks of text. To insert a `\begin' and a matching `\end' (on a new ! line following the `\begin'), use `C-c C-o' (`tex-latex-block'). A blank line is inserted between the two, and point is left there. Emacs knows all of the standard LaTeX block names and will diff -cprP emacs-19.8/lib-src/ChangeLog emacs-19.9/lib-src/ChangeLog *** emacs-19.8/lib-src/ChangeLog Thu May 27 03:40:46 1993 --- emacs-19.9/lib-src/ChangeLog Thu May 27 03:45:41 1993 *************** *** 1,3 **** --- 1,24 ---- + Thu May 27 02:35:32 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.9 released. + + Wed May 26 22:45:39 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Makefile.in (install): Do install the programs listed in + INSTALLABLE_SCRIPTS. Make the renaming loop use INSTALLABLES and + INSTALLABLE_SCRIPTS, instead of writing the programs out. + + * Makefile.in (ALL_CFLAGS): Include -I${srcdir}. + (getopt.o, getopt1.c): Use ${srcdir} as appropriate. + + Tue May 25 16:07:07 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * etags.c: Include ../src/config.h. + + * Makefile.in (install): Don't handle INSTALLABLE_SCRIPTS + in first loop. Delete files from bindir before installing new ones. + (ALL_CFLAGS): Use ${srcdir} to find .../src dir. + Mon May 24 12:14:41 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * Version 19.8 released. diff -cprP emacs-19.8/lib-src/Makefile.in emacs-19.9/lib-src/Makefile.in *** emacs-19.8/lib-src/Makefile.in Thu May 27 03:40:46 1993 --- emacs-19.9/lib-src/Makefile.in Thu May 27 03:45:41 1993 *************** *** 42,51 **** # data. ${archlibdir} is usually below this. libdir=${exec_prefix}/lib ! # Where to find the source code. The source code for Emacs's C kernel is ! # expected to be in ${srcdir}/src, and the source code for Emacs's ! # utility programs is expected to be in ${srcdir}/lib-src. This is # set by the configure script's `--srcdir' option. srcdir=@srcdir@/lib-src VPATH=@srcdir@/lib-src --- 42,52 ---- # data. ${archlibdir} is usually below this. libdir=${exec_prefix}/lib ! # Where to find the source code. This is # set by the configure script's `--srcdir' option. + # However, the value of ${srcdir} in this makefile + # is not identical to what was specified with --srcdir. + # The variable here has `/lib-src' added at the end. srcdir=@srcdir@/lib-src VPATH=@srcdir@/lib-src *************** SOURCES = COPYING ChangeLog Makefile.in *** 102,108 **** ### Some other files - those shared with other GNU utilities - need ### HAVE_CONFIG_H #defined before they know they can take advantage of ### the information in ../src/config.h. ! ALL_CFLAGS = ${C_SWITCH_SYSTEM} -Demacs -DHAVE_CONFIG_H -I../src ${CFLAGS} .c.o: ${CC} -c ${CPPFLAGS} ${ALL_CFLAGS} $< --- 103,109 ---- ### Some other files - those shared with other GNU utilities - need ### HAVE_CONFIG_H #defined before they know they can take advantage of ### the information in ../src/config.h. ! ALL_CFLAGS = ${C_SWITCH_SYSTEM} -Demacs -DHAVE_CONFIG_H -I${srcdir} -I${srcdir}/../src ${CFLAGS} .c.o: ${CC} -c ${CPPFLAGS} ${ALL_CFLAGS} $< *************** ${archlibdir}: all *** 137,143 **** install: ${archlibdir} @echo @echo "Installing utilities for users to run." ! for file in ${INSTALLABLES} ${INSTALLABLE_SCRIPTS} ; do \ cp $${file} ${bindir}/$${file}.new ; \ chmod 755 ${bindir}/$${file}.new ; \ done --- 138,144 ---- install: ${archlibdir} @echo @echo "Installing utilities for users to run." ! for file in ${INSTALLABLES} ${INSTALLABLE_SCRIPTS}; do \ cp $${file} ${bindir}/$${file}.new ; \ chmod 755 ${bindir}/$${file}.new ; \ done *************** install: ${archlibdir} *** 144,152 **** @echo @echo "Changing the owner and group of utility programs to \`bin'." @echo "(You may ignore errors here if you don't care about this.)" ! -for file in emacsclient etags ctags b2m ; do \ chgrp bin ${bindir}/$${file}.new ; \ chown bin ${bindir}/$${file}.new ; \ mv ${bindir}/$${file}.new ${bindir}/$${file} ; \ done --- 145,154 ---- @echo @echo "Changing the owner and group of utility programs to \`bin'." @echo "(You may ignore errors here if you don't care about this.)" ! -for file in ${INSTALLABLES} ${INSTALLABLE_SCRIPTS} ; do \ chgrp bin ${bindir}/$${file}.new ; \ chown bin ${bindir}/$${file}.new ; \ + rm -f ${bindir}/$${file} ; \ mv ${bindir}/$${file}.new ${bindir}/$${file} ; \ done *************** test-distrib: ${srcdir}/test-distrib.c *** 185,192 **** GETOPTOBJS = getopt.o getopt1.o $(ALLOCA) GETOPTDEPS = $(GETOPTOBJS) ${srcdir}/getopt.h ! getopt.o: getopt.c getopt.h ! getopt1.o: getopt1.c getopt.h etags: ${srcdir}/etags.c $(GETOPTDEPS) $(CC) ${ALL_CFLAGS} -DETAGS ${srcdir}/etags.c $(GETOPTOBJS) $(LOADLIBES) -o etags --- 187,194 ---- GETOPTOBJS = getopt.o getopt1.o $(ALLOCA) GETOPTDEPS = $(GETOPTOBJS) ${srcdir}/getopt.h ! getopt.o: ${srcdir}/getopt.c ${srcdir}/getopt.h ! getopt1.o: ${srcdir}/getopt1.c ${srcdir}/getopt.h etags: ${srcdir}/etags.c $(GETOPTDEPS) $(CC) ${ALL_CFLAGS} -DETAGS ${srcdir}/etags.c $(GETOPTOBJS) $(LOADLIBES) -o etags diff -cprP emacs-19.8/lib-src/etags.c emacs-19.9/lib-src/etags.c *** emacs-19.8/lib-src/etags.c Thu May 27 03:40:43 1993 --- emacs-19.9/lib-src/etags.c Thu May 27 03:45:37 1993 *************** *** 31,36 **** --- 31,38 ---- #include #include + #include "../src/config.h" + #include "getopt.h" #ifdef __GNUC__ diff -cprP emacs-19.8/lisp/ChangeLog emacs-19.9/lisp/ChangeLog *** emacs-19.8/lisp/ChangeLog Thu May 27 03:39:48 1993 --- emacs-19.9/lisp/ChangeLog Thu May 27 03:44:34 1993 *************** *** 1,3 **** --- 1,105 ---- + Thu May 27 02:35:32 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.9 released. + + Wed May 26 23:32:25 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * isearch.el (isearch-forward): Remove the claim that + isearch-whitespace-chars matches any string of whitespace. + + Wed May 26 16:26:16 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * completion.el: Comment out handling of shell-send-input. + Delete the "local thinking machines" definitions at the end + since they caused compilation failure. + + * cl.el (cl-member): Renamed from member. + + * time.el (display-time-day-and-date): Use defvar, not defconst. + + * subr.el (listify-key-sequence): Avoid the constant ?\M-\200. + + * files.el (find-file-noselect): Expand buffer-file-truename + before copying it to anything else. + + * dired.el (dired-other-frame): New function, with binding. + + * compile.el: Make C-x ` binding just once. + + * help.el (finder-by-keyword): Autoload from `finder', not `finder.el'. + + * nroff-mode.el (nroff-mode): Don't leave nroff-electric-mode void. + + * byte-opt.el (byte-optimize-divide): + Don't optimize to less than two arguments. + + * hexl.el (hexlify-command, dehexlify-command): Use exec-directory. + + * rmailsort.el: New version from Umeda. Needs detailed entry. + + * paths.el (gnus-local-organization): Renamed from ...-your-... + (gnus-local-domain): Likewise. + + Wed May 26 02:49:13 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * faces.el (x-resolve-font-name): If PATTERN is nil, return the + frame's face. + (set-face-font): Only use x-resolve-font-name if FONT is a string. + Copying a faces shouldn't resolve the font. + + * paths.el (Info-default-directory-list): Add + configure-info-directory to this list. + + Wed May 26 00:18:13 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * scroll-bar.el (scroll-bar-mode): Make default value t. + + * help-macro.el (make-help-screen): Handle mouse events. + Be smart about window configurations--when and whether to restore. + + * info.el (Info-follow-nearest-node): Omit 4th arg to Info-get-token. + + * sgml-mode.el (sgml-validate): compile1 renamed to compile-internal. + (sgml-mode): Add autoload cookie. + * files.el (auto-mode-alist): Recognize .sgm, .sgml, .dtd. + + * files.el (auto-mode-alist): Treat .H and .hh as C++ files. + + * mouse.el (mouse-set-mark): Activate the mark. + Don't bounce the cursor if Transient Mark mode. + (mouse-save-then-kill): Pass explicit args to kill-ring-save. + (mouse-kill-ring-save): Likewise. + + * mail-utils.el (mail-strip-quoted-names): + Catch errors from forward-sexp. + + * comint.el (comint-filter): Restore buffer-read-only in proper buffer. + + * ispell.el: Provide `ispell'. + + * ange-ftp.el (ange-ftp-set-buffer-mode): Do nothing unless + visited name is an ange ftp magic name. + + * advice.el: New version from Chalupsky. + + Tue May 25 11:47:35 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * dired.el (dired-unmark-all-files): Read arg as a string. + + * rmailsum.el (rmail-summary-mark-deleted): Check for end of buffer. + Pass t as NOWARN when calling rmail-summary-goto-msg. + + * dired-aux.el (dired-compress-file): Test the return value + of dired-check-process properly. + Fix use of nonexistent var `name'. + + * info.el (Info-edit, Info-last-search, Info-enable-edit): + Correct case in `Info-mode-map'. + + * rmail.el (rmail-bury): Fix call to set-window-buffer. + + * loaddefs.el: copy-to-register now on C-x r s. + Tue May 25 05:15:14 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * Version 19.8 released. diff -cprP emacs-19.8/lisp/advice.el emacs-19.9/lisp/advice.el *** emacs-19.8/lisp/advice.el Thu May 27 03:37:25 1993 --- emacs-19.9/lisp/advice.el Thu May 27 03:42:10 1993 *************** *** 4,10 **** ;; Author: Hans Chalupsky ;; Created: 12 Dec 1992 ! ;; Version: advice.el,v 2.0 1993/05/18 01:29:02 hans Exp ;; Keywords: advice, function hooks ;; This file is part of GNU Emacs. --- 4,10 ---- ;; Author: Hans Chalupsky ;; Created: 12 Dec 1992 ! ;; Version: advice.el,v 2.1 1993/05/26 00:07:58 hans Exp ;; Keywords: advice, function hooks ;; This file is part of GNU Emacs. *************** *** 26,32 **** ;; LCD Archive Entry: ;; advice|Hans Chalupsky|hans@cs.buffalo.edu| ;; Advice mechanism for Emacs Lisp functions| ! ;; 1993/05/18 01:29:02|2.0|~/packages/advice.el.Z| ;;; Commentary: --- 26,32 ---- ;; LCD Archive Entry: ;; advice|Hans Chalupsky|hans@cs.buffalo.edu| ;; Advice mechanism for Emacs Lisp functions| ! ;; 1993/05/26 00:07:58|2.1|~/packages/advice.el.Z| ;;; Commentary: *************** *** 92,102 **** ;; didn't have the time yet to do all the necessary formatting. So, ;; until I do have the time or some kind soul does it for me I cramped ;; everything into the source file. Because about 50% of this file is ! ;; documentation it is in outline-mode by default. Use `M-x hide-body' ! ;; to see just the headings. Use the various other outline-mode functions ! ;; to move around in the text. If you use Lucid Emacs, you'll just have ! ;; to wait until `selective-display' works properly in order to be ! ;; able to use outline-mode, sorry. ;; ;; And yes, I know: Documentation is for wimps. ;; --- 92,103 ---- ;; didn't have the time yet to do all the necessary formatting. So, ;; until I do have the time or some kind soul does it for me I cramped ;; everything into the source file. Because about 50% of this file is ! ;; documentation it should be in outline-mode by default, but it is not. ! ;; If you choose to use outline-mode set `outline-regexp' to `";; @+"' ! ;; and use `M-x hide-body' to see just the headings. Use the various ! ;; other outline-mode functions to move around in the text. If you use ! ;; Lucid Emacs, you'll just have to wait until `selective-display' ! ;; works properly in order to be able to use outline-mode, sorry. ;; ;; And yes, I know: Documentation is for wimps. ;; *************** *** 121,128 **** ;; + advised macros which were expanded during byte-compilation before ;; their advice was activated. ;; - This package was developed under GNU Emacs 18.59 and Lucid Emacs 19.6. ! ;; It was adapted and tested for GNU Emacs alpha 19.5 and seems to work ok ! ;; for Epoch 4.2. For different Emacs environments your mileage may vary. ;; @ Credits: ;; ========== --- 122,129 ---- ;; + advised macros which were expanded during byte-compilation before ;; their advice was activated. ;; - This package was developed under GNU Emacs 18.59 and Lucid Emacs 19.6. ! ;; It was adapted and tested for GNU Emacs 19.8 and seems to work ok for ! ;; Epoch 4.2. For different Emacs environments your mileage may vary. ;; @ Credits: ;; ========== *************** *** 1966,1971 **** --- 1967,1979 ---- ;;; Change Log: + ;; advice.el,v + ;; Revision 2.1 1993/05/26 00:07:58 hans + ;; * advise `defalias' and `define-function' to properly handle forward + ;; advice in GNU Emacs-19.7 and later + ;; * fix minor bug in `ad-preactivate-advice' + ;; * merge with FSF installation of version 2.0 + ;; ;; Revision 2.0 1993/05/18 01:29:02 hans ;; * Totally revamped: Now also works with v19s, function indirection ;; instead of body copying for original function calls, caching of *************** *** 2010,2016 **** ;; @@ Variable definitions: ;; ======================== ! (defconst ad-version "2.0") (defconst ad-emacs19-p (not (or (and (boundp 'epoch::version) epoch::version) --- 2018,2024 ---- ;; @@ Variable definitions: ;; ======================== ! (defconst ad-version "2.1") (defconst ad-emacs19-p (not (or (and (boundp 'epoch::version) epoch::version) *************** advised definition from scratch." *** 3545,3555 **** (defun ad-preactivate-advice (function advice class position) ;;"Preactivates FUNCTION and returns the constructed cache." ! (let ((old-definition ! (if (fboundp function) ! (symbol-function function))) ! (old-advice-info (ad-copy-advice-info function)) ! (ad-advised-functions ad-advised-functions)) (unwind-protect (progn (ad-add-advice function advice class position) --- 3553,3564 ---- (defun ad-preactivate-advice (function advice class position) ;;"Preactivates FUNCTION and returns the constructed cache." ! (let* ((function-defined-p (fboundp function)) ! (old-definition ! (if function-defined-p ! (symbol-function function))) ! (old-advice-info (ad-copy-advice-info function)) ! (ad-advised-functions ad-advised-functions)) (unwind-protect (progn (ad-add-advice function advice class position) *************** advised definition from scratch." *** 3561,3567 **** (list (ad-get-cache-definition function) (ad-get-cache-id function)))) (ad-set-advice-info function old-advice-info) ! (ad-real-fset function old-definition)))) (defun ad-activate-advised-definition (function compile) ;;"Redefines FUNCTION with its advised definition from cache or scratch. --- 3570,3579 ---- (list (ad-get-cache-definition function) (ad-get-cache-id function)))) (ad-set-advice-info function old-advice-info) ! ;; Don't `fset' function to nil if it was previously unbound: ! (if function-defined-p ! (ad-real-fset function old-definition) ! (fmakunbound function))))) (defun ad-activate-advised-definition (function compile) ;;"Redefines FUNCTION with its advised definition from cache or scratch. *************** in `ad-definition-hooks' will be run aft *** 3990,4001 **** in `ad-definition-hooks' will be run after the re/definition with `ad-defined-function' bound to the name of the function. This advice was mainly created to handle forward-advice for byte-compiled files created ! by Jamie Zawinski's byte-compiler (as used in Emacs v19s). CAUTION: If you need the primitive `fset' behavior either deactivate its advice or use `ad-real-fset' instead!" (let ((ad-defined-function (ad-get-arg 0))) (run-hooks 'ad-definition-hooks))) (defadvice documentation (after ad-advised-docstring first disable preact) "Builds an advised docstring if FUNCTION is advised." ;; Because we get the function name from the advised docstring --- 4002,4039 ---- in `ad-definition-hooks' will be run after the re/definition with `ad-defined-function' bound to the name of the function. This advice was mainly created to handle forward-advice for byte-compiled files created ! by jwz's byte-compiler used in Lemacs. CAUTION: If you need the primitive `fset' behavior either deactivate its advice or use `ad-real-fset' instead!" (let ((ad-defined-function (ad-get-arg 0))) (run-hooks 'ad-definition-hooks))) + ;; Needed for GNU Emacs-19 (in v18s and Lemacs this is just a noop): + (defadvice defalias (after ad-definition-hooks first disable preact) + "Whenever a function gets re/defined with `defalias' all hook functions + in `ad-definition-hooks' will be run after the re/definition with + `ad-defined-function' bound to the name of the function. This advice was + mainly created to handle forward-advice for byte-compiled files created + by jwz's byte-compiler used in GNU Emacs-19." + (let ((ad-defined-function (ad-get-arg 0))) + ;; The new `byte-compile' uses `defalias' to set the definition which + ;; leads to infinite recursion if it gets to use the advised version + ;; (with `fset' this didn't matter because the compiled `byte-compile' + ;; called it via its byte-code). Should there be a general provision to + ;; avoid recursive application of definition hooks? + (ad-with-originals (defalias) + (run-hooks 'ad-definition-hooks)))) + + ;; Needed for GNU Emacs-19 (seems to be an identical copy of `defalias', + ;; it is used by simple.el and might be used later, hence, advise it): + (defadvice define-function (after ad-definition-hooks first disable preact) + "Whenever a function gets re/defined with `define-function' all hook + functions in `ad-definition-hooks' will be run after the re/definition with + `ad-defined-function' bound to the name of the function." + (let ((ad-defined-function (ad-get-arg 0))) + (ad-with-originals (define-function) + (run-hooks 'ad-definition-hooks)))) + (defadvice documentation (after ad-advised-docstring first disable preact) "Builds an advised docstring if FUNCTION is advised." ;; Because we get the function name from the advised docstring *************** code in a v19 Emacs with definition hook *** 4203,4209 **** ;;`byte-code' if a v19 byte-compiler is used. Redefining these primitives ;;might lead to problems. Use `ad-disable-definition-hooks' or ;;`ad-stop-advice' in such a case to establish a safe state." ! (ad-dolist (definer '(defun defmacro fset)) (ad-enable-advice definer 'after 'ad-definition-hooks) (ad-activate definer 'compile)) (cond (ad-use-jwz-byte-compiler --- 4241,4247 ---- ;;`byte-code' if a v19 byte-compiler is used. Redefining these primitives ;;might lead to problems. Use `ad-disable-definition-hooks' or ;;`ad-stop-advice' in such a case to establish a safe state." ! (ad-dolist (definer '(defun defmacro fset defalias define-function)) (ad-enable-advice definer 'after 'ad-definition-hooks) (ad-activate definer 'compile)) (cond (ad-use-jwz-byte-compiler *************** code in a v19 Emacs with definition hook *** 4220,4226 **** (defun ad-disable-definition-hooks () ;;"Disables definition hooks by resetting definition primitives." (ad-recover-byte-code) ! (ad-dolist (definer '(defun defmacro fset)) (ad-disable-advice definer 'after 'ad-definition-hooks) (ad-update definer)) (if (not ad-emacs19-p) --- 4258,4264 ---- (defun ad-disable-definition-hooks () ;;"Disables definition hooks by resetting definition primitives." (ad-recover-byte-code) ! (ad-dolist (definer '(defun defmacro fset defalias define-function)) (ad-disable-advice definer 'after 'ad-definition-hooks) (ad-update definer)) (if (not ad-emacs19-p) *************** Use only in REAL emergencies." *** 4281,4290 **** (ad-real-byte-codify 'ad-recover-normality) ! ;; It only counts if we are compiled: ! (cond ((ad-compiled-p (symbol-function 'ad-execute-defadvices)) ! (provide 'advice) ! (if ad-start-advice-on-load (ad-start-advice)))) (provide 'advice) --- 4319,4328 ---- (ad-real-byte-codify 'ad-recover-normality) ! (if (and ad-start-advice-on-load ! ;; ...but only if we are compiled: ! (ad-compiled-p (symbol-function 'ad-execute-defadvices))) ! (ad-start-advice)) (provide 'advice) diff -cprP emacs-19.8/lisp/ange-ftp.el emacs-19.9/lisp/ange-ftp.el *** emacs-19.8/lisp/ange-ftp.el Thu May 27 03:37:26 1993 --- emacs-19.9/lisp/ange-ftp.el Thu May 27 03:42:12 1993 *************** *** 1326,1338 **** (signal 'ftp-error (list (format "FTP Error: %s" msg)))) (defun ange-ftp-set-buffer-mode () ! "Set the correct modes for the current buffer if it is visiting a remote ! file." ! (make-local-variable 'make-backup-files) ! (setq make-backup-files ange-ftp-make-backup-files) (if (and (stringp buffer-file-name) (ange-ftp-ftp-name buffer-file-name)) (progn (auto-save-mode ange-ftp-auto-save)))) (defun ange-ftp-kill-ftp-process (buffer) --- 1326,1337 ---- (signal 'ftp-error (list (format "FTP Error: %s" msg)))) (defun ange-ftp-set-buffer-mode () ! "Set correct modes for the current buffer if visiting a remote file." (if (and (stringp buffer-file-name) (ange-ftp-ftp-name buffer-file-name)) (progn + (make-local-variable 'make-backup-files) + (setq make-backup-files ange-ftp-make-backup-files) (auto-save-mode ange-ftp-auto-save)))) (defun ange-ftp-kill-ftp-process (buffer) diff -cprP emacs-19.8/lisp/byte-opt.el emacs-19.9/lisp/byte-opt.el *** emacs-19.8/lisp/byte-opt.el Thu May 27 03:37:31 1993 --- emacs-19.9/lisp/byte-opt.el Thu May 27 03:42:16 1993 *************** *** 663,669 **** (setq form (byte-optimize-delay-constants-math form 2 '*)) (let ((last (car (reverse (cdr (cdr form)))))) (if (numberp last) ! (cond ((= last 1) (setq form (byte-compile-butlast form))) ((numberp (nth 1 form)) (setq form (cons (car form) --- 663,672 ---- (setq form (byte-optimize-delay-constants-math form 2 '*)) (let ((last (car (reverse (cdr (cdr form)))))) (if (numberp last) ! (cond ((= (length form) 3) ! ;; Don't shrink to less than two arguments--would get an error. ! nil) ! ((= last 1) (setq form (byte-compile-butlast form))) ((numberp (nth 1 form)) (setq form (cons (car form) diff -cprP emacs-19.8/lisp/cl.el emacs-19.9/lisp/cl.el *** emacs-19.8/lisp/cl.el Thu May 27 03:37:39 1993 --- emacs-19.9/lisp/cl.el Thu May 27 03:42:21 1993 *************** *** 1417,1423 **** ;;;; Both list and sequence functions are considered here together. This ;;;; doesn't fit any more with the original split of functions in files. ! (defun member (item list &rest kargs) "Look for ITEM in LIST; return first tail of LIST the car of whose first cons cell tests the same as ITEM. Admits arguments :key, :test, and :test-not." --- 1417,1423 ---- ;;;; Both list and sequence functions are considered here together. This ;;;; doesn't fit any more with the original split of functions in files. ! (defun cl-member (item list &rest kargs) "Look for ITEM in LIST; return first tail of LIST the car of whose first cons cell tests the same as ITEM. Admits arguments :key, :test, and :test-not." diff -cprP emacs-19.8/lisp/comint.el emacs-19.9/lisp/comint.el *** emacs-19.8/lisp/comint.el Thu May 27 03:37:40 1993 --- emacs-19.9/lisp/comint.el Thu May 27 03:42:23 1993 *************** *** 651,663 **** ;; when output is inserted. (defun comint-filter (process string) (let ((obuf (current-buffer)) - ordonly opoint obeg oend) (set-buffer (process-buffer process)) (setq opoint (point)) (setq obeg (point-min)) (setq oend (point-max)) - (setq ordonly buffer-read-only) (let ((buffer-read-only nil) (nchars (length string))) (widen) --- 651,661 ---- *************** *** 677,688 **** (set-marker comint-last-input-end (- comint-last-input-end nchars))) (set-marker (process-mark process) (point) nil) ! (force-mode-line-update) ! (narrow-to-region obeg oend) ! (setq buffer-read-only ordonly) ! (goto-char opoint) ! (set-buffer obuf)))) (defun comint-get-old-input-default () "Default for comint-get-old-input. --- 675,685 ---- (set-marker comint-last-input-end (- comint-last-input-end nchars))) (set-marker (process-mark process) (point) nil) ! (force-mode-line-update)) ! (narrow-to-region obeg oend) ! (goto-char opoint) ! (set-buffer obuf))) (defun comint-get-old-input-default () "Default for comint-get-old-input. diff -cprP emacs-19.8/lisp/compile.el emacs-19.9/lisp/compile.el *** emacs-19.8/lisp/compile.el Thu May 27 03:37:41 1993 --- emacs-19.9/lisp/compile.el Thu May 27 03:42:24 1993 *************** *** 1054,1061 **** (setq compilation-error-list (nreverse compilation-error-list)) (message "Parsing error messages...done")) - (define-key ctl-x-map "`" 'next-error) - (provide 'compile) ;;; compile.el ends here --- 1054,1059 ---- diff -cprP emacs-19.8/lisp/completion.el emacs-19.9/lisp/completion.el *** emacs-19.8/lisp/completion.el Thu May 27 03:37:43 1993 --- emacs-19.9/lisp/completion.el Thu May 27 03:42:24 1993 *************** *** 5,10 **** --- 5,18 ---- ;;; Commentary: + ;;; This file is very badly designed in that it redefines + ;;; standard functions of Emacs. This is bad design, because + ;;; this file cannot be updated to correspond to the latest + ;;; versions of those functions. Therefore, you must expect + ;;; it to produce unpredictable and undesirable results. + ;;; This file needs to be redesigned to work in a modular fashion. + ;;; -- rms. + ;;; This is a Completion system for GNU Emacs ;;; ;;; E-Mail: *************** TYPE is the type of the wrapper to be ad *** 2952,2959 **** ;;;----------------------------------------------- (def-completion-wrapper newline :separator) (def-completion-wrapper newline-and-indent :separator) ! (if (function-defined-and-loaded 'shell-send-input) ! (def-completion-wrapper shell-send-input :separator)) (def-completion-wrapper exit-minibuffer :minibuffer-separator) (def-completion-wrapper eval-print-last-sexp :separator) (def-completion-wrapper eval-last-sexp :separator) --- 2960,2967 ---- ;;;----------------------------------------------- (def-completion-wrapper newline :separator) (def-completion-wrapper newline-and-indent :separator) ! ;;;(if (function-defined-and-loaded 'shell-send-input) ! ;;; (def-completion-wrapper shell-send-input :separator)) (def-completion-wrapper exit-minibuffer :minibuffer-separator) (def-completion-wrapper eval-print-last-sexp :separator) (def-completion-wrapper eval-last-sexp :separator) *************** and KILLP is t if prefix arg is was spec *** 3099,3116 **** ;;;----------------------------------------------- ;;; Local Thinking Machines stuff ;;;----------------------------------------------- - - (if (fboundp 'up-ten-lines) - (def-completion-wrapper up-ten-lines :under-or-before)) - (if (fboundp 'down-ten-lines) - (def-completion-wrapper down-ten-lines :under-or-before)) - (if (fboundp 'tmc-scroll-up) - (def-completion-wrapper tmc-scroll-up :under-or-before)) - (if (fboundp 'tmc-scroll-down) - (def-completion-wrapper tmc-scroll-down :under-or-before)) - (if (fboundp 'execute-extended-command-and-check-for-bindings) - (def-completion-wrapper execute-extended-command-and-check-for-bindings - :under-or-before)) ;;; Tests -- ;;; foobarbiz --- 3107,3112 ---- diff -cprP emacs-19.8/lisp/dired-aux.el emacs-19.9/lisp/dired-aux.el *** emacs-19.8/lisp/dired-aux.el Thu May 27 03:37:49 1993 --- emacs-19.9/lisp/dired-aux.el Thu May 27 03:42:28 1993 *************** *** 487,499 **** ((file-symlink-p file) nil) ((string-match "\\.Z$" file) ! (if (dired-check-process (concat "Uncompressing " file) ! "uncompress" file) (substring file 0 -2))) (t ! (if (dired-check-process (concat "Compressing " file) ! "compress" "-f" file) ! (concat name ".Z")))))) (defun dired-mark-confirm (op-symbol arg) ;; Request confirmation from the user that the operation described --- 487,499 ---- ((file-symlink-p file) nil) ((string-match "\\.Z$" file) ! (if (not (dired-check-process (concat "Uncompressing " file) ! "uncompress" file)) (substring file 0 -2))) (t ! (if (not (dired-check-process (concat "Compressing " file) ! "compress" "-f" file)) ! (concat file ".Z")))))) (defun dired-mark-confirm (op-symbol arg) ;; Request confirmation from the user that the operation described diff -cprP emacs-19.8/lisp/dired.el emacs-19.9/lisp/dired.el *** emacs-19.8/lisp/dired.el Thu May 27 03:37:50 1993 --- emacs-19.9/lisp/dired.el Thu May 27 03:42:28 1993 *************** *** 346,352 **** --- 346,359 ---- (interactive (dired-read-dir-and-switches "in other window ")) (switch-to-buffer-other-window (dired-noselect dirname switches))) + ;;;###autoload (define-key ctl-x-5-map "d" 'dired-other-frame) ;;;###autoload + (defun dired-other-frame (dirname &optional switches) + "\"Edit\" directory DIRNAME. Like `dired' but makes a new frame." + (interactive (dired-read-dir-and-switches "in other frame ")) + (switch-to-buffer-other-frame (dired-noselect dirname switches))) + + ;;;###autoload (defun dired-noselect (dir-or-list &optional switches) "Like `dired' but returns the dired buffer as value, does not select it." (or dir-or-list (setq dir-or-list default-directory)) *************** OLD and NEW are both characters used to *** 1752,1773 **** (delete-region (point) (1+ (point))) (insert-char new 1))))) ! (defun dired-unmark-all-files (flag &optional arg) "Remove a specific mark or any mark from every file. With prefix arg, query for each marked file. Type \\[help-command] at that time for help." ! (interactive ! (let* ((cursor-in-echo-area t)) ! (list (progn (message "Remove marks (RET means all): ") (read-char)) ! current-prefix-arg))) (let ((count 0) ! (re (if (zerop (length flag)) dired-re-mark ! (concat "^" (regexp-quote flag))))) (save-excursion (let (buffer-read-only case-fold-search query (help-form "\ ! Type SPC or `y' to unflag one file, DEL or `n' to skip to next, ! `!' to unflag all remaining files with no more questions.")) (goto-char (point-min)) (while (re-search-forward re nil t) (if (or (not arg) --- 1759,1777 ---- (delete-region (point) (1+ (point))) (insert-char new 1))))) ! (defun dired-unmark-all-files (mark &optional arg) "Remove a specific mark or any mark from every file. With prefix arg, query for each marked file. Type \\[help-command] at that time for help." ! (interactive "sRemove marks (RET means all): \nP") (let ((count 0) ! (re (if (zerop (length mark)) dired-re-mark ! (concat "^" (regexp-quote mark))))) (save-excursion (let (buffer-read-only case-fold-search query (help-form "\ ! Type SPC or `y' to unmark one file, DEL or `n' to skip to next, ! `!' to unmark all remaining files with no more questions.")) (goto-char (point-min)) (while (re-search-forward re nil t) (if (or (not arg) *************** Type SPC or `y' to unflag one file, DEL *** 1775,1781 **** (dired-get-filename t))) (progn (delete-char -1) (insert " ") (setq count (1+ count)))) (forward-line 1)))) ! (message "%s" (format "Flags removed: %d %s" count flag) ))) ;; Logging failures operating on files, and showing the results. --- 1779,1785 ---- (dired-get-filename t))) (progn (delete-char -1) (insert " ") (setq count (1+ count)))) (forward-line 1)))) ! (message "%s" (format "Marks removed: %d %s" count mark)))) ;; Logging failures operating on files, and showing the results. diff -cprP emacs-19.8/lisp/faces.el emacs-19.9/lisp/faces.el *** emacs-19.8/lisp/faces.el Thu May 27 03:37:55 1993 --- emacs-19.9/lisp/faces.el Thu May 27 03:42:33 1993 *************** *** 85,92 **** If the optional FRAME argument is provided, change only in that frame; otherwise change each frame." (interactive (internal-face-interactive "font")) ! (internal-set-face-1 face 'font (x-resolve-font-name font face frame) ! 3 frame)) (defsubst set-face-foreground (face color &optional frame) "Change the foreground color of face FACE to COLOR (a string). --- 85,92 ---- If the optional FRAME argument is provided, change only in that frame; otherwise change each frame." (interactive (internal-face-interactive "font")) ! (if (stringp font) (setq font (x-resolve-font-name font face frame))) ! (internal-set-face-1 face 'font font 3 frame)) (defsubst set-face-foreground (face color &optional frame) "Change the foreground color of face FACE to COLOR (a string). *************** set its foreground and background to the *** 416,430 **** (defun x-resolve-font-name (pattern &optional face frame) "Return a font name matching PATTERN. All wildcards in PATTERN become substantiated. Given optional arguments FACE and FRAME, try to return a font which is ! also the same size as FACE on FRAME," ! (let ((fonts (x-list-fonts pattern face frame))) ! (or fonts ! (if face ! (error "no fonts match `%S'." pattern) ! (error "no fonts matching pattern are the same size as `%s'." ! pattern face))) ! (car fonts))) (defun x-frob-font-weight (font which) (if (or (string-match x-font-regexp font) --- 416,434 ---- (defun x-resolve-font-name (pattern &optional face frame) "Return a font name matching PATTERN. All wildcards in PATTERN become substantiated. + If PATTERN is nil, return the name of the frame's base font, which never + contains wildcards. Given optional arguments FACE and FRAME, try to return a font which is ! also the same size as FACE on FRAME." ! (if pattern ! (let ((fonts (x-list-fonts pattern face frame))) ! (or fonts ! (if face ! (error "no fonts match `%S'." pattern) ! (error "no fonts matching pattern are the same size as `%s'." ! pattern face))) ! (car fonts)) ! (cdr (assq 'font (frame-parameters (selected-frame)))))) (defun x-frob-font-weight (font which) (if (or (string-match x-font-regexp font) diff -cprP emacs-19.8/lisp/files.el emacs-19.9/lisp/files.el *** emacs-19.8/lisp/files.el Thu May 27 03:37:56 1993 --- emacs-19.9/lisp/files.el Thu May 27 03:42:34 1993 *************** *** 608,614 **** (not (member logical find-file-not-true-dirname-list))) (setq buffer-file-name buffer-file-truename)) (if find-file-visit-truename ! (setq buffer-file-name (setq filename buffer-file-truename))) ;; Set buffer's default directory to that of the file. (setq default-directory (file-name-directory filename)) ;; Turn off backup files for certain file names. Since --- 608,616 ---- (not (member logical find-file-not-true-dirname-list))) (setq buffer-file-name buffer-file-truename)) (if find-file-visit-truename ! (setq buffer-file-name ! (setq filename ! (expand-file-name buffer-file-truename)))) ;; Set buffer's default directory to that of the file. (setq default-directory (file-name-directory filename)) ;; Turn off backup files for certain file names. Since *************** run `normal-mode' explicitly." *** 706,712 **** --- 708,716 ---- ("\\.mss\\'" . scribe-mode) ("\\.pl\\'" . prolog-mode) ("\\.cc\\'" . c++-mode) + ("\\.hh\\'" . c++-mode) ("\\.C\\'" . c++-mode) + ("\\.H\\'" . c++-mode) ;;; ("\\.mk\\'" . makefile-mode) ;;; ("[Mm]akefile" . makefile-mode) ;;; Less common extensions come here *************** run `normal-mode' explicitly." *** 740,745 **** --- 744,752 ---- ("\\.lex\\'" . c-mode) ("\\.oak\\'" . scheme-mode) ("\\.scm.[0-9]*\\'" . scheme-mode) + ("\\.sgm\\'" sgml-mode) + ("\\.sgml\\'" sgml-mode) + ("\\.dtd\\'" sgml-mode) ;; .emacs following a directory delimiter ;; in either Unix or VMS syntax. ("[]>:/]\\..*emacs\\'" . emacs-lisp-mode) diff -cprP emacs-19.8/lisp/help-macro.el emacs-19.9/lisp/help-macro.el *** emacs-19.8/lisp/help-macro.el Thu May 27 03:38:02 1993 --- emacs-19.9/lisp/help-macro.el Thu May 27 03:42:42 1993 *************** *** 81,110 **** (let ((line-prompt (substitute-command-keys (, help-line)))) (message line-prompt) ! (let ((char (read-char))) ! (if (or (= char ??) (= char help-char)) ! (save-window-excursion ! (switch-to-buffer-other-window "*Help*") ! (erase-buffer) ! (insert (documentation (quote (, fname)))) ! (goto-char (point-min)) ! (while (memq char (cons help-char '(?? ?\C-v ?\ ?\177 ?\M-v))) ! (if (memq char '(?\C-v ?\ )) ! (scroll-up)) ! (if (memq char '(?\177 ?\M-v)) ! (scroll-down)) ! (message "%s%s: " ! line-prompt ! (if (pos-visible-in-window-p (point-max)) ! "" " or Space to scroll")) ! (let ((cursor-in-echo-area t)) ! (setq char (read-char)))))) ! (let ((defn (cdr (assq (downcase char) (, helped-map))))) ! (if defn ! (if (keymapp defn) ! (error "sorry, this command cannot be run from the help screen. Start over.") ! (call-interactively defn)) ! (ding)))))) )) ;;; help-macro.el --- 81,125 ---- (let ((line-prompt (substitute-command-keys (, help-line)))) (message line-prompt) ! (let ((char (read-event)) ! config) ! (unwind-protect ! (progn ! (if (or (eq char ??) (eq char help-char)) ! (progn ! (setq config (current-window-configuration)) ! (switch-to-buffer-other-window "*Help*") ! (erase-buffer) ! (insert (documentation (quote (, fname)))) ! (goto-char (point-min)) ! (while (memq char (cons help-char '(?? ?\C-v ?\ ?\177 ?\M-v))) ! (if (memq char '(?\C-v ?\ )) ! (scroll-up)) ! (if (memq char '(?\177 ?\M-v)) ! (scroll-down)) ! (message "%s%s: " ! line-prompt ! (if (pos-visible-in-window-p (point-max)) ! "" " or Space to scroll")) ! (let ((cursor-in-echo-area t)) ! (setq char (read-event)))))) ! ! (let ((defn (cdr (assq (if (integerp char) (downcase char) char) (, helped-map))))) ! (if defn ! (if (keymapp defn) ! (error "sorry, this command cannot be run from the help screen. Start over.") ! (if config ! (progn ! (set-window-configuration config) ! (setq config nil))) ! (call-interactively defn)) ! (if (listp char) ! (setq unread-command-events ! (cons char unread-command-events) ! config nil) ! (ding))))) ! (if config ! (set-window-configuration config)))))) )) ;;; help-macro.el diff -cprP emacs-19.8/lisp/help.el emacs-19.9/lisp/help.el *** emacs-19.8/lisp/help.el Thu May 27 03:38:02 1993 --- emacs-19.9/lisp/help.el Thu May 27 03:42:42 1993 *************** *** 66,72 **** (define-key help-map "n" 'view-emacs-news) (define-key help-map "p" 'finder-by-keyword) ! (autoload 'finder-by-keyword "finder.el") (define-key help-map "s" 'describe-syntax) --- 66,72 ---- (define-key help-map "n" 'view-emacs-news) (define-key help-map "p" 'finder-by-keyword) ! (autoload 'finder-by-keyword "finder") (define-key help-map "s" 'describe-syntax) diff -cprP emacs-19.8/lisp/hexl.el emacs-19.9/lisp/hexl.el *** emacs-19.8/lisp/hexl.el Thu May 27 03:38:03 1993 --- emacs-19.9/lisp/hexl.el Thu May 27 03:42:42 1993 *************** *** 1,4 **** ! ;;; hexl-mode.el --- edit a file in a hex dump format using the hexl filter. ;; Copyright (C) 1989 Free Software Foundation, Inc. --- 1,4 ---- ! ;;; hexl.el --- edit a file in a hex dump format using the hexl filter. ;; Copyright (C) 1989 Free Software Foundation, Inc. *************** and \"-de\" when dehexlfying a buffer.") *** 62,72 **** (defvar hexl-options (format "-hex %s" hexl-iso) "Options to hexl-program that suit your needs.") ! (defvar hexlify-command (format "%s %s" hexl-program hexl-options) "The command to use to hexlify a buffer. It is the concatination of `hexl-program' and `hexl-options'.") ! (defvar dehexlify-command (format "%s -de %s" hexl-program hexl-options) "The command to use to unhexlify a buffer. It is the concatination of `hexl-program', the option \"-de\", and `hexl-options'.") --- 62,74 ---- (defvar hexl-options (format "-hex %s" hexl-iso) "Options to hexl-program that suit your needs.") ! (defvar hexlify-command ! (format "%s%s %s" exec-directory hexl-program hexl-options) "The command to use to hexlify a buffer. It is the concatination of `hexl-program' and `hexl-options'.") ! (defvar dehexlify-command ! (format "%s%s -de %s" exec-directory hexl-program hexl-options) "The command to use to unhexlify a buffer. It is the concatination of `hexl-program', the option \"-de\", and `hexl-options'.") diff -cprP emacs-19.8/lisp/info.el emacs-19.9/lisp/info.el *** emacs-19.8/lisp/info.el Thu May 27 03:38:06 1993 --- emacs-19.9/lisp/info.el Thu May 27 03:42:46 1993 *************** *** 32,38 **** Each element of list is a list (FILENAME NODENAME BUFFERPOS).") (defvar Info-enable-edit nil ! "*Non-nil means the \\\\[Info-edit] command in Info can edit the current node. This is convenient if you want to write info files by hand. However, we recommend that you not do this. It is better to write a Texinfo file and generate the Info file from that, --- 32,38 ---- Each element of list is a list (FILENAME NODENAME BUFFERPOS).") (defvar Info-enable-edit nil ! "*Non-nil means the \\\\[Info-edit] command in Info can edit the current node. This is convenient if you want to write info files by hand. However, we recommend that you not do this. It is better to write a Texinfo file and generate the Info file from that, *************** to read a file name from the minibuffer. *** 496,502 **** (Info-restore-point (cdr hl))))) (defvar Info-last-search nil ! "Default regexp for \\\\[Info-search] command to search for.") (defun Info-search (regexp) "Search for REGEXP, starting from point, and select node it's found in." --- 496,502 ---- (Info-restore-point (cdr hl))))) (defvar Info-last-search nil ! "Default regexp for \\\\[Info-search] command to search for.") (defun Info-search (regexp) "Search for REGEXP, starting from point, and select node it's found in." *************** At end of the node's text, moves to the *** 1075,1093 **** (goto-char pos)) (let (node) (cond ! ((setq node (Info-get-token (point) "\\*note[ \n]" "\\*note[ \n]\\([^:]*\\):" t)) (Info-follow-reference node)) ! ((setq node (Info-get-token (point) "\\* " "\\* \\([^:]*\\)::" t)) (Info-goto-node node)) ! ((setq node (Info-get-token (point) "\\* " "\\* \\([^:]*\\):" t)) (Info-menu node)) ! ((setq node (Info-get-token (point) "Up: " "Up: \\([^,\n\t]*\\)" t)) (Info-goto-node node)) ! ((setq node (Info-get-token (point) "Next: " "Next: \\([^,\n\t]*\\)" t)) (Info-goto-node node)) ! ((setq node (Info-get-token (point) "File: " "File: \\([^,\n\t]*\\)" t)) (Info-goto-node "Top")) ! ((setq node (Info-get-token (point) "Prev: " "Prev: \\([^,\n\t]*\\)" t)) (Info-goto-node node)) ((save-excursion (forward-line 1) (eobp)) (Info-next))) --- 1075,1093 ---- (goto-char pos)) (let (node) (cond ! ((setq node (Info-get-token (point) "\\*note[ \n]" "\\*note[ \n]\\([^:]*\\):")) (Info-follow-reference node)) ! ((setq node (Info-get-token (point) "\\* " "\\* \\([^:]*\\)::")) (Info-goto-node node)) ! ((setq node (Info-get-token (point) "\\* " "\\* \\([^:]*\\):")) (Info-menu node)) ! ((setq node (Info-get-token (point) "Up: " "Up: \\([^,\n\t]*\\)")) (Info-goto-node node)) ! ((setq node (Info-get-token (point) "Next: " "Next: \\([^,\n\t]*\\)")) (Info-goto-node node)) ! ((setq node (Info-get-token (point) "File: " "File: \\([^,\n\t]*\\)")) (Info-goto-node "Top")) ! ((setq node (Info-get-token (point) "Prev: " "Prev: \\([^,\n\t]*\\)")) (Info-goto-node node)) ((save-excursion (forward-line 1) (eobp)) (Info-next))) *************** topics. Info has commands to follow the *** 1151,1157 **** Selecting other nodes: \\[Info-next] Move to the \"next\" node of this node. ! \\[Info-previous] Move to the \"previous\" node of this node. \\[Info-up] Move \"up\" from this node. \\[Info-menu] Pick menu item specified by name (or abbreviation). Picking a menu item causes another node to be selected. --- 1151,1157 ---- Selecting other nodes: \\[Info-next] Move to the \"next\" node of this node. ! \\[Info-prev] Move to the \"previous\" node of this node. \\[Info-up] Move \"up\" from this node. \\[Info-menu] Pick menu item specified by name (or abbreviation). Picking a menu item causes another node to be selected. *************** Allowed only if variable `Info-enable-ed *** 1228,1234 **** ;; Make mode line update. (set-buffer-modified-p (buffer-modified-p)) (message (substitute-command-keys ! "Editing: Type \\\\[Info-cease-edit] to return to info"))) (defun Info-cease-edit () "Finish editing Info node; switch back to Info proper." --- 1228,1234 ---- ;; Make mode line update. (set-buffer-modified-p (buffer-modified-p)) (message (substitute-command-keys ! "Editing: Type \\\\[Info-cease-edit] to return to info"))) (defun Info-cease-edit () "Finish editing Info node; switch back to Info proper." diff -cprP emacs-19.8/lisp/isearch.el emacs-19.9/lisp/isearch.el *** emacs-19.8/lisp/isearch.el Thu May 27 03:38:07 1993 --- emacs-19.9/lisp/isearch.el Thu May 27 03:42:47 1993 *************** *** 4,10 **** ;; Author: Daniel LaLiberte ! ;; |$Date: 1993/05/19 04:44:42 $|$Revision: 1.36 $ ;; This file is not yet part of GNU Emacs, but it is based almost ;; entirely on isearch.el which is part of GNU Emacs. --- 4,10 ---- ;; Author: Daniel LaLiberte ! ;; |$Date: 1993/05/27 03:33:12 $|$Revision: 1.37 $ ;; This file is not yet part of GNU Emacs, but it is based almost ;; entirely on isearch.el which is part of GNU Emacs. *************** Type \\[isearch-yank-word] to yank word *** 408,414 **** Type \\[isearch-yank-line] to yank rest of line onto end of search string\ and search for it. Type \\[isearch-quote-char] to quote control character to search for it. - Type \\[isearch-whitespace-chars] to match all whitespace chars in regexp. \\[isearch-abort] while searching or when search has failed cancels input\ back to what has been found successfully. --- 408,413 ---- diff -cprP emacs-19.8/lisp/ispell.el emacs-19.9/lisp/ispell.el *** emacs-19.8/lisp/ispell.el Thu May 27 03:38:08 1993 --- emacs-19.9/lisp/ispell.el Thu May 27 03:42:47 1993 *************** *** 575,578 **** --- 575,580 ---- (kill-emacs 1)) (write-region (point-min) (point-max) "ispell.info")) + (provide 'ispell) + ;;; ispell.el ends here diff -cprP emacs-19.8/lisp/loaddefs.el emacs-19.9/lisp/loaddefs.el *** emacs-19.8/lisp/loaddefs.el Thu May 27 03:38:11 1993 --- emacs-19.9/lisp/loaddefs.el Thu May 27 03:42:51 1993 *************** *** 359,365 **** (define-key ctl-x-map [?r ?\C-\ ] 'point-to-register) (define-key ctl-x-map "r " 'point-to-register) (define-key ctl-x-map "rj" 'jump-to-register) ! (define-key ctl-x-map "rp" 'copy-to-register) (define-key ctl-x-map "rx" 'copy-to-register) (define-key ctl-x-map "ri" 'insert-register) (define-key ctl-x-map "rg" 'insert-register) --- 359,365 ---- (define-key ctl-x-map [?r ?\C-\ ] 'point-to-register) (define-key ctl-x-map "r " 'point-to-register) (define-key ctl-x-map "rj" 'jump-to-register) ! (define-key ctl-x-map "rs" 'copy-to-register) (define-key ctl-x-map "rx" 'copy-to-register) (define-key ctl-x-map "ri" 'insert-register) (define-key ctl-x-map "rg" 'insert-register) *************** Use \\[dired-hide-subdir] to (un)hide a *** 2074,2081 **** ;;;*** ! ;;;### (autoloads (dired-noselect dired-other-window dired) "dired" "dired.el" (11223 36949)) ! ;;; Generated autoloads from dired.el (defvar dired-listing-switches "-al" "\ *Switches passed to `ls' for dired. MUST contain the `l' option. --- 2074,2081 ---- ;;;*** ! ;;;### (autoloads (dired-noselect dired-other-frame dired-other-window dired) "dired" "/home/fsf/rms/e19/lisp/dired.el" (11267 62528)) ! ;;; Generated autoloads from /home/fsf/rms/e19/lisp/dired.el (defvar dired-listing-switches "-al" "\ *Switches passed to `ls' for dired. MUST contain the `l' option. *************** If DIRNAME is already in a dired buffer, *** 2154,2160 **** --- 2154,2164 ---- (autoload (quote dired-other-window) "dired" "\ \"Edit\" directory DIRNAME. Like `dired' but selects in another window." t nil) + (define-key ctl-x-5-map "d" 'dired-other-frame) + (autoload (quote dired-other-frame) "dired" "\ + \"Edit\" directory DIRNAME. Like `dired' but makes a new frame." t nil) + (autoload (quote dired-noselect) "dired" "\ Like `dired' but returns the dired buffer as value, does not select it." nil nil) *************** value of texinfo-mode-hook." t nil) *** 4731,4740 **** ;;;*** ! ;;;### (autoloads (display-time) "time" "time.el" (11261 43012)) ! ;;; Generated autoloads from time.el ! (defconst display-time-day-and-date nil "\ *Non-nil means \\[display-time] should display day and date as well as time.") (autoload (quote display-time) "time" "\ --- 4735,4744 ---- ;;;*** ! ;;;### (autoloads (display-time) "time" "/home/fsf/rms/e19/lisp/time.el" (11268 15748)) ! ;;; Generated autoloads from /home/fsf/rms/e19/lisp/time.el ! (defvar display-time-day-and-date nil "\ *Non-nil means \\[display-time] should display day and date as well as time.") (autoload (quote display-time) "time" "\ diff -cprP emacs-19.8/lisp/mail-utils.el emacs-19.9/lisp/mail-utils.el *** emacs-19.8/lisp/mail-utils.el Thu May 27 03:38:14 1993 --- emacs-19.9/lisp/mail-utils.el Thu May 27 03:42:54 1993 *************** *** 75,81 **** (forward-char -1) (skip-chars-backward " \t") (delete-region (point) ! (save-excursion (forward-sexp 1) (point)))) (setq address (buffer-string)) (erase-buffer)) ;; Strip non-nested comments an easier way. --- 75,85 ---- (forward-char -1) (skip-chars-backward " \t") (delete-region (point) ! (save-excursion ! (condition-case () ! (forward-sexp 1) ! (error (goto-char (point-max)))) ! (point)))) (setq address (buffer-string)) (erase-buffer)) ;; Strip non-nested comments an easier way. diff -cprP emacs-19.8/lisp/mouse.el emacs-19.9/lisp/mouse.el *** emacs-19.8/lisp/mouse.el Thu May 27 03:38:22 1993 --- emacs-19.9/lisp/mouse.el Thu May 27 03:43:00 1993 *************** *** 167,174 **** (let ((point-save (point))) (unwind-protect (progn (mouse-set-point click) ! (push-mark nil t) ! (sit-for 1)) (goto-char point-save)))) (defun mouse-kill (click) --- 167,175 ---- (let ((point-save (point))) (unwind-protect (progn (mouse-set-point click) ! (push-mark nil t t) ! (or transient-mark-mode ! (sit-for 1))) (goto-char point-save)))) (defun mouse-kill (click) *************** Prefix arguments are interpreted as with *** 192,198 **** This does not delete the region; it acts like \\[kill-ring-save]." (interactive "e") (mouse-set-mark click) ! (call-interactively 'kill-ring-save)) ;;; This function used to delete the text between point and the mouse ;;; whenever it was equal to the front of the kill ring, but some --- 193,199 ---- This does not delete the region; it acts like \\[kill-ring-save]." (interactive "e") (mouse-set-mark click) ! (kill-ring-save (point) (mark t))) ;;; This function used to delete the text between point and the mouse ;;; whenever it was equal to the front of the kill ring, but some *************** which prepares for a second click to del *** 225,231 **** (cons (cons (car kill-ring) (point)) buffer-undo-list)))) ;; Otherwise, save this region. (mouse-set-mark click) ! (call-interactively 'kill-ring-save) (setq mouse-save-then-kill-posn (list (car kill-ring) (point) click-posn))))) --- 226,232 ---- (cons (cons (car kill-ring) (point)) buffer-undo-list)))) ;; Otherwise, save this region. (mouse-set-mark click) ! (kill-ring-save (point) (mark t)) (setq mouse-save-then-kill-posn (list (car kill-ring) (point) click-posn))))) diff -cprP emacs-19.8/lisp/nroff-mode.el emacs-19.9/lisp/nroff-mode.el *** emacs-19.8/lisp/nroff-mode.el Thu May 27 03:38:24 1993 --- emacs-19.9/lisp/nroff-mode.el Thu May 27 03:43:01 1993 *************** *** 61,66 **** --- 61,67 ---- (set-syntax-table text-mode-syntax-table) (setq local-abbrev-table nroff-mode-abbrev-table) (make-local-variable 'nroff-electric-mode) + (setq nroff-electric-mode nil) ;; now define a bunch of variables for use by commands in this mode (make-local-variable 'page-delimiter) (setq page-delimiter "^\\.\\(bp\\|SK\\|OP\\)") diff -cprP emacs-19.8/lisp/paths.el emacs-19.9/lisp/paths.el *** emacs-19.8/lisp/paths.el Thu May 27 03:38:25 1993 --- emacs-19.9/lisp/paths.el Thu May 27 03:43:03 1993 *************** *** 62,74 **** Go to a local news spool if its value is nil, in which case `gnus-nntp-server' should be set to `(system-name)'.") ! (defvar gnus-your-domain nil "Your domain name without your host name like: \"stars.flab.Fujitsu.CO.JP\" The DOMAINNAME environment variable is used instead if defined. If the function `system-name' returns a fully qualified domain name, there is no need to define the name.") ! (defvar gnus-your-organization "" "Your organization like: \"Fujitsu Laboratories Ltd., Kawasaki, Japan.\" The `ORGANIZATION' environment variable is used instead if defined.") --- 62,74 ---- Go to a local news spool if its value is nil, in which case `gnus-nntp-server' should be set to `(system-name)'.") ! (defvar gnus-local-domain nil "Your domain name without your host name like: \"stars.flab.Fujitsu.CO.JP\" The DOMAINNAME environment variable is used instead if defined. If the function `system-name' returns a fully qualified domain name, there is no need to define the name.") ! (defvar gnus-local-organization "" "Your organization like: \"Fujitsu Laboratories Ltd., Kawasaki, Japan.\" The `ORGANIZATION' environment variable is used instead if defined.") diff -cprP emacs-19.8/lisp/rmail.el emacs-19.9/lisp/rmail.el *** emacs-19.8/lisp/rmail.el Thu May 27 03:38:29 1993 --- emacs-19.9/lisp/rmail.el Thu May 27 03:43:08 1993 *************** *** 1788,1794 **** (if (rmail-summary-exists) (let (window) (while (setq window (get-buffer-window rmail-summary-buffer)) ! (set-window-buffer (other-buffer rmail-summary-buffer))) (bury-buffer rmail-summary-buffer))) (switch-to-buffer (other-buffer (current-buffer))) (bury-buffer rmail-buffer))) --- 1788,1794 ---- (if (rmail-summary-exists) (let (window) (while (setq window (get-buffer-window rmail-summary-buffer)) ! (set-window-buffer window (other-buffer rmail-summary-buffer))) (bury-buffer rmail-summary-buffer))) (switch-to-buffer (other-buffer (current-buffer))) (bury-buffer rmail-buffer))) diff -cprP emacs-19.8/lisp/rmailsort.el emacs-19.9/lisp/rmailsort.el *** emacs-19.8/lisp/rmailsort.el Thu May 27 03:38:30 1993 --- emacs-19.9/lisp/rmailsort.el Thu May 27 03:43:09 1993 *************** *** 1,7 **** ;;; rmailsort.el --- Rmail: sort messages. ! ;; Copyright (C) 1990 Free Software Foundation, Inc. ;; Keywords: mail ;; This file is part of GNU Emacs. --- 1,9 ---- ;;; rmailsort.el --- Rmail: sort messages. ! ;; Copyright (C) 1990, 1993 Free Software Foundation, Inc. + ;; Author: Masanobu UMEDA + ;; Version: $Header: /home/fsf/rms/e19/lisp/RCS/rmailsort.el,v 1.14 1993/05/26 20:28:11 rms Exp $ ;; Keywords: mail ;; This file is part of GNU Emacs. *************** *** 20,38 **** ;; along with GNU Emacs; see the file COPYING. If not, write to ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ;;; Code: (require 'rmail) (require 'sort) ;; GNUS compatible key bindings. (define-key rmail-mode-map "\C-c\C-s\C-d" 'rmail-sort-by-date) (define-key rmail-mode-map "\C-c\C-s\C-s" 'rmail-sort-by-subject) (define-key rmail-mode-map "\C-c\C-s\C-a" 'rmail-sort-by-author) (define-key rmail-mode-map "\C-c\C-s\C-r" 'rmail-sort-by-recipient) (define-key rmail-mode-map "\C-c\C-s\C-c" 'rmail-sort-by-correspondent) ! (define-key rmail-mode-map "\C-c\C-s\C-l" 'rmail-sort-by-size-lines) (defun rmail-sort-by-date (reverse) "Sort messages of current Rmail file by date. If prefix argument REVERSE is non-nil, sort them in reverse order." --- 22,70 ---- ;; along with GNU Emacs; see the file COPYING. If not, write to ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + ;;; Commentary: + + ;; LCD Archive Entry: + ;; rmailsort|Masanobu UMEDA|umerin@mse.kyutech.ac.jp| + ;; Rmail: sort messages.| + ;; $Date: 1993/05/26 20:28:11 $|$Revision: 1.14 $|~/misc/rmailsort.el.Z| + ;;; Code: (require 'rmail) (require 'sort) + (autoload 'timezone-make-date-sortable "timezone") + ;; GNUS compatible key bindings. + (define-key rmail-mode-map "\C-c\C-s\C-d" 'rmail-sort-by-date) (define-key rmail-mode-map "\C-c\C-s\C-s" 'rmail-sort-by-subject) (define-key rmail-mode-map "\C-c\C-s\C-a" 'rmail-sort-by-author) (define-key rmail-mode-map "\C-c\C-s\C-r" 'rmail-sort-by-recipient) (define-key rmail-mode-map "\C-c\C-s\C-c" 'rmail-sort-by-correspondent) ! (define-key rmail-mode-map "\C-c\C-s\C-l" 'rmail-sort-by-lines) ! ! ;; Key binding may not be installed unless Rmail Summary mode is loaded. ! (if (boundp 'rmail-summary-mode-map) ! (progn ! (define-key rmail-summary-mode-map ! "\C-c\C-s\C-d" 'rmail-summary-sort-by-date) ! (define-key rmail-summary-mode-map ! "\C-c\C-s\C-s" 'rmail-summary-sort-by-subject) ! (define-key rmail-summary-mode-map ! "\C-c\C-s\C-a" 'rmail-summary-sort-by-author) ! (define-key rmail-summary-mode-map ! "\C-c\C-s\C-r" 'rmail-summary-sort-by-recipient) ! (define-key rmail-summary-mode-map ! "\C-c\C-s\C-c" 'rmail-summary-sort-by-correspondent) ! (define-key rmail-summary-mode-map ! "\C-c\C-s\C-l" 'rmail-summary-sort-by-lines) ! )) + + ;; Sorting messages in Rmail buffer + (defun rmail-sort-by-date (reverse) "Sort messages of current Rmail file by date. If prefix argument REVERSE is non-nil, sort them in reverse order." *************** If prefix argument REVERSE is non-nil, s *** 40,46 **** (rmail-sort-messages reverse (function (lambda (msg) ! (rmail-sortable-date-string (rmail-fetch-field msg "Date")))))) (defun rmail-sort-by-subject (reverse) --- 72,78 ---- (rmail-sort-messages reverse (function (lambda (msg) ! (rmail-make-date-sortable (rmail-fetch-field msg "Date")))))) (defun rmail-sort-by-subject (reverse) *************** If prefix argument REVERSE is non-nil, s *** 63,71 **** (rmail-sort-messages reverse (function (lambda (msg) ! (mail-strip-quoted-names ! (or (rmail-fetch-field msg "From") ! (rmail-fetch-field msg "Sender") "")))))) (defun rmail-sort-by-recipient (reverse) "Sort messages of current Rmail file by recipient. --- 95,104 ---- (rmail-sort-messages reverse (function (lambda (msg) ! (downcase ;Canonical name ! (mail-strip-quoted-names ! (or (rmail-fetch-field msg "From") ! (rmail-fetch-field msg "Sender") ""))))))) (defun rmail-sort-by-recipient (reverse) "Sort messages of current Rmail file by recipient. *************** If prefix argument REVERSE is non-nil, s *** 74,83 **** (rmail-sort-messages reverse (function (lambda (msg) ! (mail-strip-quoted-names ! (or (rmail-fetch-field msg "To") ! (rmail-fetch-field msg "Apparently-To") "") ! ))))) (defun rmail-sort-by-correspondent (reverse) "Sort messages of current Rmail file by other correspondent. --- 107,117 ---- (rmail-sort-messages reverse (function (lambda (msg) ! (downcase ;Canonical name ! (mail-strip-quoted-names ! (or (rmail-fetch-field msg "To") ! (rmail-fetch-field msg "Apparently-To") "") ! )))))) (defun rmail-sort-by-correspondent (reverse) "Sort messages of current Rmail file by other correspondent. *************** If prefix argument REVERSE is non-nil, s *** 92,124 **** (defun rmail-select-correspondent (msg fields) (let ((ans "")) ! (while (and fields (string= ans "")) ! (setq ans ! (rmail-dont-reply-to ! (mail-strip-quoted-names ! (or (rmail-fetch-field msg (car fields)) "")))) ! (setq fields (cdr fields))) ! ans)) ! (defun rmail-sort-by-size-lines (reverse) ! "Sort messages of current Rmail file by message size. If prefix argument REVERSE is non-nil, sort them in reverse order." (interactive "P") (rmail-sort-messages reverse (function (lambda (msg) ! (format "%9d" ! (count-lines (rmail-msgbeg msgnum) ! (rmail-msgend msgnum))))))) ! (defun rmail-sort-messages (reverse keyfunc) "Sort messages of current Rmail file. ! 1st argument REVERSE is non-nil, sort them in reverse order. ! 2nd argument KEYFUNC is called with message number, and should return a key." ! (or (eq major-mode 'rmail-mode) ! (error "Current buffer not in Rmail mode")) (let ((buffer-read-only nil) (sort-lists nil)) (message "Finding sort keys...") (widen) --- 126,196 ---- (defun rmail-select-correspondent (msg fields) (let ((ans "")) ! (while (and fields (string= ans "")) ! (setq ans ! (rmail-dont-reply-to ! (mail-strip-quoted-names ! (or (rmail-fetch-field msg (car fields)) "")))) ! (setq fields (cdr fields))) ! ans)) ! (defun rmail-sort-by-lines (reverse) ! "Sort messages of current Rmail file by lines of the message. If prefix argument REVERSE is non-nil, sort them in reverse order." (interactive "P") (rmail-sort-messages reverse (function (lambda (msg) ! (count-lines (rmail-msgbeg msgnum) ! (rmail-msgend msgnum)))))) ! ! ;; Sorting messages in Rmail Summary buffer. ! ! (defun rmail-summary-sort-by-date (reverse) ! "Sort messages of current Rmail summary by date. ! If prefix argument REVERSE is non-nil, sort them in reverse order." ! (interactive "P") ! (rmail-sort-from-summary (function rmail-sort-by-date) reverse)) ! ! (defun rmail-summary-sort-by-subject (reverse) ! "Sort messages of current Rmail summary by subject. ! If prefix argument REVERSE is non-nil, sort them in reverse order." ! (interactive "P") ! (rmail-sort-from-summary (function rmail-sort-by-subject) reverse)) ! ! (defun rmail-summary-sort-by-author (reverse) ! "Sort messages of current Rmail summary by author. ! If prefix argument REVERSE is non-nil, sort them in reverse order." ! (interactive "P") ! (rmail-sort-from-summary (function rmail-sort-by-author) reverse)) ! ! (defun rmail-summary-sort-by-recipient (reverse) ! "Sort messages of current Rmail summary by recipient. ! If prefix argument REVERSE is non-nil, sort them in reverse order." ! (interactive "P") ! (rmail-sort-from-summary (function rmail-sort-by-recipient) reverse)) ! ! (defun rmail-summary-sort-by-correspondent (reverse) ! "Sort messages of current Rmail summary by other correspondent. ! If prefix argument REVERSE is non-nil, sort them in reverse order." ! (interactive "P") ! (rmail-sort-from-summary (function rmail-sort-by-correspondent) reverse)) ! ! (defun rmail-summary-sort-by-lines (reverse) ! "Sort messages of current Rmail summary by lines of the message. ! If prefix argument REVERSE is non-nil, sort them in reverse order." ! (interactive "P") ! (rmail-sort-from-summary (function rmail-sort-by-lines) reverse)) ! + ;; Basic functions ! (defun rmail-sort-messages (reverse keyfun) "Sort messages of current Rmail file. ! If 1st argument REVERSE is non-nil, sort them in reverse order. ! 2nd argument KEYFUN is called with a message number, and should return a key." (let ((buffer-read-only nil) + (predicate nil) ;< or string-lessp (sort-lists nil)) (message "Finding sort keys...") (widen) *************** If prefix argument REVERSE is non-nil, s *** 125,161 **** (let ((msgnum 1)) (while (>= rmail-total-messages msgnum) (setq sort-lists ! (cons (cons (funcall keyfunc msgnum) ;A sort key. ! (buffer-substring ! (rmail-msgbeg msgnum) (rmail-msgend msgnum))) sort-lists)) (if (zerop (% msgnum 10)) (message "Finding sort keys...%d" msgnum)) (setq msgnum (1+ msgnum)))) (or reverse (setq sort-lists (nreverse sort-lists))) (setq sort-lists (sort sort-lists (function (lambda (a b) ! (string-lessp (car a) (car b)))))) (if reverse (setq sort-lists (nreverse sort-lists))) ! (message "Reordering buffer...") ! (delete-region (rmail-msgbeg 1) (rmail-msgend rmail-total-messages)) ! (let ((msgnum 1)) (while sort-lists ! (insert (cdr (car sort-lists))) ! (if (zerop (% msgnum 10)) ! (message "Reordering buffer...%d" msgnum)) (setq sort-lists (cdr sort-lists)) ! (setq msgnum (1+ msgnum)))) ! (rmail-set-message-counters) ! (rmail-show-message 1))) (defun rmail-fetch-field (msg field) ! "Return the value of the header field FIELD of MSG. Arguments are MSG and FIELD." ! (let ((next (rmail-msgend msg))) ! (save-restriction (goto-char (rmail-msgbeg msg)) (narrow-to-region (if (search-forward "\n*** EOOH ***\n" next t) (point) --- 197,267 ---- (let ((msgnum 1)) (while (>= rmail-total-messages msgnum) (setq sort-lists ! (cons (list (funcall keyfun msgnum) ;Make sorting key ! (eq rmail-current-message msgnum) ;True if current ! (aref rmail-message-vector msgnum) ! (aref rmail-message-vector (1+ msgnum))) sort-lists)) (if (zerop (% msgnum 10)) (message "Finding sort keys...%d" msgnum)) (setq msgnum (1+ msgnum)))) (or reverse (setq sort-lists (nreverse sort-lists))) + ;; Decide predicate: < or string-lessp + (if (numberp (car (car sort-lists))) ;Is a key numeric? + (setq predicate (function <)) + (setq predicate (function string-lessp))) (setq sort-lists (sort sort-lists (function (lambda (a b) ! (funcall predicate (car a) (car b)))))) (if reverse (setq sort-lists (nreverse sort-lists))) ! ;; Now we enter critical region. So, keyboard quit is disabled. ! (message "Reordering messages...") ! (let ((inhibit-quit t) ;Inhibit quit ! (current-message nil) ! (msgnum 1) ! (msginfo nil)) ! ;; There's little hope that we can easily undo after that. ! (buffer-flush-undo (current-buffer)) ! (goto-char (rmail-msgbeg 1)) ! ;; To force update of all markers. ! (insert-before-markers ?Z) ! (backward-char 1) ! ;; Now reorder messages. (while sort-lists ! (setq msginfo (car sort-lists)) ! ;; Swap two messages. ! (insert-buffer-substring ! (current-buffer) (nth 2 msginfo) (nth 3 msginfo)) ! (delete-region (nth 2 msginfo) (nth 3 msginfo)) ! ;; Is current message? ! (if (nth 1 msginfo) ! (setq current-message msgnum)) (setq sort-lists (cdr sort-lists)) ! (if (zerop (% msgnum 10)) ! (message "Reordering messages...%d" msgnum)) ! (setq msgnum (1+ msgnum))) ! ;; Delete the garbage inserted before. ! (delete-char 1) ! (setq quit-flag nil) ! (buffer-enable-undo) ! (rmail-set-message-counters) ! (rmail-show-message current-message)) ! )) ! ! (defun rmail-sort-from-summary (sortfun reverse) ! "Sort Rmail messages from Summary buffer and update it after sorting." ! (pop-to-buffer rmail-buffer) ! (funcall sortfun reverse) ! (rmail-summary)) (defun rmail-fetch-field (msg field) ! "Return the value of the header FIELD of MSG. Arguments are MSG and FIELD." ! (save-restriction ! (widen) ! (let ((next (rmail-msgend msg))) (goto-char (rmail-msgbeg msg)) (narrow-to-region (if (search-forward "\n*** EOOH ***\n" next t) (point) *************** Arguments are MSG and FIELD." *** 164,229 **** (progn (search-forward "\n\n" nil t) (point))) (mail-fetch-field field)))) ! ;; Copy of the function gnus-comparable-date in gnus.el ! ! (defun rmail-sortable-date-string (date) ! "Make sortable string by string-lessp from DATE." ! (let ((month '(("JAN" . " 1")("FEB" . " 2")("MAR" . " 3") ! ("APR" . " 4")("MAY" . " 5")("JUN" . " 6") ! ("JUL" . " 7")("AUG" . " 8")("SEP" . " 9") ! ("OCT" . "10")("NOV" . "11")("DEC" . "12") ! ("JANUARY" . " 1") ("FEBRUARY" . " 2") ! ("MARCH" . " 3") ("APRIL" . " 4") ! ("MAY" . " 5") ("JUNE" . " 6") ! ("JULY" . " 7") ("AUGUST" . " 8") ! ("SEPTEMBER" " 9") ("OCTOBER" . "10") ! ("NOVEMBER" "11") ("DECEMBER" . "12"))) ! (date (or date ""))) ! ;; Can understand the following styles: ! ;; (1) 14 Apr 89 03:20:12 GMT ! ;; (2) Fri, 17 Mar 89 4:01:33 GMT ! (if (string-match ! "\\([0-9]+\\) +\\([^ ,]+\\) +\\([0-9]+\\) +\\([0-9:]+\\)" date) ! (concat ! ;; Year ! (rmail-date-full-year ! (substring date (match-beginning 3) (match-end 3))) ! ;; Month ! (cdr ! (assoc ! (upcase (substring date (match-beginning 2) (match-end 2))) month)) ! ;; Day ! (format "%2d" (string-to-int ! (substring date ! (match-beginning 1) (match-end 1)))) ! ;; Time ! (substring date (match-beginning 4) (match-end 4))) ! ! ;; Handles this format Fri May 10 21:51:55 1991 ! (if (string-match ! " \\([a-z][a-z][a-z]\\) +\\([0-9]+\\) \\([0-9:]+\\) \\([0-9]+\\)" date) ! (concat ! ;; Year ! (rmail-date-full-year ! (substring date (match-beginning 4) (match-end 4))) ! ;; Month ! (cdr ! (assoc ! (upcase (substring date (match-beginning 1) (match-end 1))) month)) ! ;; Day ! (format "%2d" (string-to-int ! (substring date ! (match-beginning 2) (match-end 2)))) ! ;; Time ! (substring date (match-beginning 3) (match-end 3))) ! ! ;; Cannot understand DATE string. ! date)))) ! ! (defun rmail-date-full-year (year-string) ! (if (<= (length year-string) 2) ! (concat "19" year-string) ! year-string)) (provide 'rmailsort) --- 270,311 ---- (progn (search-forward "\n\n" nil t) (point))) (mail-fetch-field field)))) ! (defun rmail-make-date-sortable (date) ! "Make DATE sortable using the function string-lessp." ! ;; Assume the default time zone is GMT. ! (timezone-make-date-sortable date "GMT" "GMT")) ! ! ;; Copy of the function gnus-comparable-date in gnus.el version 3.13 ! ; ! ;(defun rmail-make-date-sortable (date) ! ; "Make sortable string by string-lessp from DATE." ! ; (let ((month '(("JAN" . " 1")("FEB" . " 2")("MAR" . " 3") ! ; ("APR" . " 4")("MAY" . " 5")("JUN" . " 6") ! ; ("JUL" . " 7")("AUG" . " 8")("SEP" . " 9") ! ; ("OCT" . "10")("NOV" . "11")("DEC" . "12"))) ! ; (date (or date ""))) ! ; ;; Can understand the following styles: ! ; ;; (1) 14 Apr 89 03:20:12 GMT ! ; ;; (2) Fri, 17 Mar 89 4:01:33 GMT ! ; (if (string-match ! ; "\\([0-9]+\\) \\([^ ,]+\\) \\([0-9]+\\) \\([0-9:]+\\)" date) ! ; (concat ! ; ;; Year ! ; (substring date (match-beginning 3) (match-end 3)) ! ; ;; Month ! ; (cdr ! ; (assoc ! ; (upcase (substring date (match-beginning 2) (match-end 2))) month)) ! ; ;; Day ! ; (format "%2d" (string-to-int ! ; (substring date ! ; (match-beginning 1) (match-end 1)))) ! ; ;; Time ! ; (substring date (match-beginning 4) (match-end 4))) ! ; ;; Cannot understand DATE string. ! ; date ! ; ) ! ; )) (provide 'rmailsort) diff -cprP emacs-19.8/lisp/rmailsum.el emacs-19.9/lisp/rmailsum.el *** emacs-19.8/lisp/rmailsum.el Thu May 27 03:38:31 1993 --- emacs-19.9/lisp/rmailsum.el Thu May 27 03:43:09 1993 *************** *** 392,406 **** (rmail-summary-delete-forward t)) (defun rmail-summary-mark-deleted (&optional n undel) ! (and n (rmail-summary-goto-msg n nil t)) ! (let ((buffer-read-only nil)) ! (skip-chars-forward " ") ! (skip-chars-forward "[0-9]") ! (if undel ! (if (looking-at "D") ! (progn (delete-char 1) (insert " "))) ! (delete-char 1) ! (insert "D"))) (beginning-of-line)) (defun rmail-summary-mark-undeleted (n) --- 392,407 ---- (rmail-summary-delete-forward t)) (defun rmail-summary-mark-deleted (&optional n undel) ! (and n (rmail-summary-goto-msg n t t)) ! (or (eobp) ! (let ((buffer-read-only nil)) ! (skip-chars-forward " ") ! (skip-chars-forward "[0-9]") ! (if undel ! (if (looking-at "D") ! (progn (delete-char 1) (insert " "))) ! (delete-char 1) ! (insert "D")))) (beginning-of-line)) (defun rmail-summary-mark-undeleted (n) diff -cprP emacs-19.8/lisp/scroll-bar.el emacs-19.9/lisp/scroll-bar.el *** emacs-19.8/lisp/scroll-bar.el Thu May 27 03:38:33 1993 --- emacs-19.9/lisp/scroll-bar.el Thu May 27 03:43:11 1993 *************** *** 48,54 **** ;;;; Helpful functions for enabling and disabling scroll bars. ! (defvar scroll-bar-mode nil) (defun scroll-bar-mode (flag) "Toggle display of vertical scroll bars on each frame. --- 48,56 ---- ;;;; Helpful functions for enabling and disabling scroll bars. ! ;;; This is not documented because you can't change the ! ;;; mode properly by setting it. ! (defvar scroll-bar-mode t) (defun scroll-bar-mode (flag) "Toggle display of vertical scroll bars on each frame. diff -cprP emacs-19.8/lisp/sgml-mode.el emacs-19.9/lisp/sgml-mode.el *** emacs-19.8/lisp/sgml-mode.el Thu May 27 03:38:33 1993 --- emacs-19.9/lisp/sgml-mode.el Thu May 27 03:43:14 1993 *************** *** 64,69 **** --- 64,70 ---- (define-key sgml-mode-map "/" 'sgml-slash) (define-key sgml-mode-map "\C-c\C-v" 'sgml-validate)) + ;;;###autoload (defun sgml-mode () "Major mode for editing SGML. Makes > display the matching <. Makes / display matching /. *************** Any terminating > or / is not matched.") *** 125,132 **** (modify-syntax-entry ?\' "\"" sgml-mode-markup-syntax-table)) (defconst sgml-angle-distance 4000 ! "*If non-nil, is the maximum distance to search for matching < ! when > is inserted.") (defun sgml-close-angle (arg) "Insert > and display matching <." --- 126,132 ---- (modify-syntax-entry ?\' "\"" sgml-mode-markup-syntax-table)) (defconst sgml-angle-distance 4000 ! "*If non-nil, is the maximum distance to search for matching <.") (defun sgml-close-angle (arg) "Insert > and display matching <." *************** when > is inserted.") *** 202,209 **** ;;; I doubt that null end tags are used much for large elements, ;;; so use a small distance here. (defconst sgml-slash-distance 1000 ! "*If non-nil, is the maximum distance to search for matching / ! when / is inserted.") (defun sgml-slash (arg) "Insert / and display any previous matching /. --- 202,208 ---- ;;; I doubt that null end tags are used much for large elements, ;;; so use a small distance here. (defconst sgml-slash-distance 1000 ! "*If non-nil, is the maximum distance to search for matching /.") (defun sgml-slash (arg) "Insert / and display any previous matching /. *************** and move to the line in the SGML documen *** 263,268 **** (and name (file-name-nondirectory name)))))))) (setq sgml-saved-validate-command command) ! (compile1 command "No more errors")) ;;; sgml-mode.el ends here --- 262,267 ---- (and name (file-name-nondirectory name)))))))) (setq sgml-saved-validate-command command) ! (compile-internal command "No more errors")) ;;; sgml-mode.el ends here diff -cprP emacs-19.8/lisp/subr.el emacs-19.9/lisp/subr.el *** emacs-19.8/lisp/subr.el Thu May 27 03:38:36 1993 --- emacs-19.9/lisp/subr.el Thu May 27 03:43:18 1993 *************** *** 230,235 **** --- 230,242 ---- ;;;; Event manipulation functions. + ;; This code exists specifically to make sure that the + ;; resulting number does not appear in the .elc file. + ;; The number is negative on most machines, but not on all! + (defconst listify-key-sequence-1 + (lsh 1 7)) + (setq listify-key-sequence-1 (logior (lsh 1 23) listify-key-sequence-1)) + (defun listify-key-sequence (key) "Convert a key sequence to a list of events." (if (vectorp key) *************** *** 236,242 **** (append key nil) (mapcar (function (lambda (c) (if (> c 127) ! (logxor c ?\M-\200) c))) (append key nil)))) --- 243,249 ---- (append key nil) (mapcar (function (lambda (c) (if (> c 127) ! (logxor c listify-key-sequence-1) c))) (append key nil)))) diff -cprP emacs-19.8/lisp/term/ChangeLog emacs-19.9/lisp/term/ChangeLog *** emacs-19.8/lisp/term/ChangeLog Thu May 27 03:37:22 1993 --- emacs-19.9/lisp/term/ChangeLog Thu May 27 03:42:04 1993 *************** *** 1,3 **** --- 1,19 ---- + Thu May 27 02:35:32 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.9 released. + + Thu May 27 01:37:30 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * x-win.el: Check for a geometry resource, and apply it to the + initial frame. + + Tue May 25 11:06:28 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * x-win.el: Pass x-command-line-resources to x-open-connection. + (x-command-line-resources): New variable. + (x-handle-rn-switch): New function. + (command-switch-alist): Add -rn. + Tue May 25 05:15:14 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * Version 19.8 released. diff -cprP emacs-19.8/lisp/term/x-win.el emacs-19.9/lisp/term/x-win.el *** emacs-19.8/lisp/term/x-win.el Thu May 27 03:37:20 1993 --- emacs-19.9/lisp/term/x-win.el Thu May 27 03:42:01 1993 *************** *** 76,81 **** --- 76,83 ---- (require 'select) (require 'menu-bar) + (defvar x-command-line-resources nil) + (setq command-switch-alist (append '(("-bw" . x-handle-numeric-switch) ("-d" . x-handle-display) *************** *** 98,103 **** --- 100,106 ---- ("-itype" . x-handle-switch) ("-i" . x-handle-switch) ("-iconic" . x-handle-switch) + ("-rn" . x-handle-rn-switch) ("-cr" . x-handle-switch) ("-vb" . x-handle-switch) ("-hb" . x-handle-switch) *************** *** 152,157 **** --- 155,165 ---- x-invocation-args (cdr x-invocation-args))))) + ;; Handle the -rn option. + (defun x-handle-rn-switch (switch) + (setq x-command-line-resources (car x-invocation-args)) + (setq x-invocation-args (cdr x-invocation-args))) + ;; Handle the geometry option (defun x-handle-geometry (switch) (setq initial-frame-alist *************** This returns ARGS with the arguments tha *** 508,516 **** (setq command-line-args (x-handle-args command-line-args)) (x-open-connection (or x-display-name ! (setq x-display-name (getenv "DISPLAY")))) (setq frame-creation-function 'x-create-frame-with-faces) (defun x-win-suspend-error () (error "Suspending an emacs running under X makes no sense")) --- 516,533 ---- (setq command-line-args (x-handle-args command-line-args)) (x-open-connection (or x-display-name ! (setq x-display-name (getenv "DISPLAY"))) ! x-command-line-resources) (setq frame-creation-function 'x-create-frame-with-faces) + + ;; Apply a geometry resource to the initial frame. Put it at the end + ;; of the alist, so that anything specified on the command line takes + ;; precedence. + (let ((res-geometry (x-get-resource "geometry" "Geometry"))) + (if res-geometry + (setq initial-frame-alist (append initial-frame-alist + (x-parse-geometry res-geometry))))) (defun x-win-suspend-error () (error "Suspending an emacs running under X makes no sense")) diff -cprP emacs-19.8/lisp/term-nasty.el emacs-19.9/lisp/term-nasty.el *** emacs-19.8/lisp/term-nasty.el --- emacs-19.9/lisp/term-nasty.el Thu May 27 03:43:21 1993 *************** *** 0 **** --- 1,29 ---- + ;;; term-nasty.el --- Damned Things from terminfo.el + ;;; This file is in the public domain, and was written by Stallman and Mlynarik + + ;;; Commentary: + + ;; Some people used to be bothered by the following comments that were + ;; found in terminal.el. We decided they were distracting, and that it + ;; was better not to have them there. On the other hand, we didn't want + ;; to appear to be giving in to the pressure to censor obscenity that + ;; currently threatens freedom of speech and of the press in the US. + ;; So we decided to put the comments here. + + ;;; Code: + + These comments were removed from te-losing-unix. + ;(what lossage) + ;(message "fucking-unix: %d" char) + + This was before te-process-output. + ;; fucking unix has -such- braindamaged lack of tty control... + + And about the need to handle output characters such as C-m, C-g, C-h + and C-i even though the termcap doesn't say they may be used: + ;fuck me harder + ;again and again! + ;wa12id!! + ;(spiked) + + ;;; term-nasty.el ends here Only in emacs-19.8/lisp: term1.el diff -cprP emacs-19.8/lisp/time.el emacs-19.9/lisp/time.el *** emacs-19.8/lisp/time.el Thu May 27 03:38:43 1993 --- emacs-19.9/lisp/time.el Thu May 27 03:43:24 1993 *************** *** 32,38 **** Default is system-dependent, and is the same as used by Rmail.") ;;;###autoload ! (defconst display-time-day-and-date nil "\ *Non-nil means \\[display-time] should display day and date as well as time.") (defvar display-time-process nil) --- 32,38 ---- Default is system-dependent, and is the same as used by Rmail.") ;;;###autoload ! (defvar display-time-day-and-date nil "\ *Non-nil means \\[display-time] should display day and date as well as time.") (defvar display-time-process nil) Only in emacs-19.8/lisp: tmenu.el diff -cprP emacs-19.8/lisp/version.el emacs-19.9/lisp/version.el *** emacs-19.8/lisp/version.el Thu May 27 03:38:46 1993 --- emacs-19.9/lisp/version.el Thu May 27 03:43:27 1993 *************** *** 25,31 **** ;; The following line is modified automatically ;; by loading inc-version.el, each time a new Emacs is dumped. ! (defconst emacs-version "19.8.0" "\ Version numbers of this version of Emacs.") (defconst emacs-build-time (current-time-string) "\ --- 25,31 ---- ;; The following line is modified automatically ;; by loading inc-version.el, each time a new Emacs is dumped. ! (defconst emacs-version "19.9.0" "\ Version numbers of this version of Emacs.") (defconst emacs-build-time (current-time-string) "\ diff -cprP emacs-19.8/make-dist emacs-19.9/make-dist *** emacs-19.8/make-dist Thu May 27 03:37:11 1993 --- emacs-19.9/make-dist Thu May 27 03:41:54 1993 *************** *** 87,92 **** --- 87,102 ---- exit 1 fi + ### Check for .elc files with no corresponding .el file. + ls -1 lisp/*.el | sed 's/\.el$/.elc/' > /tmp/el + ls -1 lisp/*.elc > /tmp/elc + bogosities="`comm -13 /tmp/el /tmp/elc`" + if [ "${bogosities}" != "" ]; then + echo "The following .elc files have no corresponding .el files:" + echo "${bogosities}" + fi + rm -f /tmp/el /tmp/elc + echo "Creating staging directory: \`${tempparent}'" mkdir ${tempparent} emacsname="emacs-${version}${new_extension}" diff -cprP emacs-19.8/man/ChangeLog emacs-19.9/man/ChangeLog *** emacs-19.8/man/ChangeLog Thu May 27 03:41:43 1993 --- emacs-19.9/man/ChangeLog Thu May 27 03:46:35 1993 *************** *** 1,3 **** --- 1,7 ---- + Thu May 27 02:35:32 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.9 released. + Tue May 25 05:15:14 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * Version 19.8 released. diff -cprP emacs-19.8/man/cmdargs.texi emacs-19.9/man/cmdargs.texi *** emacs-19.8/man/cmdargs.texi Thu May 27 03:41:32 1993 --- emacs-19.9/man/cmdargs.texi Thu May 27 03:46:23 1993 *************** *** 304,310 **** parts of the Emacs display. To find out what colors are available on your system, look at the @file{/usr/lib/X11/rgb.txt} file. If you do not specify colors, the default for the background is white and the ! default for all other resources is black. On a monochrome (black and white) display, the foreground is black, the background is white, and the border is grey. You can reverse the foreground --- 304,310 ---- parts of the Emacs display. To find out what colors are available on your system, look at the @file{/usr/lib/X11/rgb.txt} file. If you do not specify colors, the default for the background is white and the ! default for all other colors is black. On a monochrome (black and white) display, the foreground is black, the background is white, and the border is grey. You can reverse the foreground *************** what name is used to run them, write @sa *** 497,504 **** @samp{emacs}, like this: @example ! Emacs.Borderwidth: 2 ! Emacs.borderwidth: 4 @end example The following table lists the resource names that designate options --- 497,504 ---- @samp{emacs}, like this: @example ! Emacs.BorderWidth: 2 ! Emacs.borderWidth: 4 @end example The following table lists the resource names that designate options *************** Name to display in icon. *** 536,545 **** @item @code{internalBorder} (class @code{BorderWidth}) Width in pixels of internal border. ! @ignore ! @item @code{PaneFont} (class is not usable) Font name for menu pane titles. - @end ignore @item @code{pointerColor} (class @code{Foreground}) Color of mouse cursor. --- 536,543 ---- @item @code{internalBorder} (class @code{BorderWidth}) Width in pixels of internal border. ! @item @code{paneFont} (class @code{Font}) Font name for menu pane titles. @item @code{pointerColor} (class @code{Foreground}) Color of mouse cursor. *************** Color of mouse cursor. *** 548,557 **** Switch foreground and background default colors if @samp{on}, use colors as specified if @samp{off}. ! @ignore ! @item @code{SelectionFont} (class is not usable) Font name for menu items. - @end ignore @item @code{title} (class @code{Title}) Name to display in title bar of initial Emacs frame. --- 546,553 ---- Switch foreground and background default colors if @samp{on}, use colors as specified if @samp{off}. ! @item @code{selectionFont} (class @code{Font}) Font name for menu items. @item @code{title} (class @code{Title}) Name to display in title bar of initial Emacs frame. diff -cprP emacs-19.8/man/emacs.texi emacs-19.9/man/emacs.texi *** emacs-19.8/man/emacs.texi Thu May 27 03:41:33 1993 --- emacs-19.9/man/emacs.texi Thu May 27 03:46:25 1993 *************** *** 75,81 **** Emacs is the extensible, customizable, self-documenting real-time display editor. This Info file describes how to edit with Emacs and some of how to customize it, but not how to extend it. It ! corresponds to GNU Emacs version 19.8. @end ifinfo @menu --- 75,81 ---- Emacs is the extensible, customizable, self-documenting real-time display editor. This Info file describes how to edit with Emacs and some of how to customize it, but not how to extend it. It ! corresponds to GNU Emacs version 19.9. @end ifinfo @menu diff -cprP emacs-19.8/man/files.texi emacs-19.9/man/files.texi *** emacs-19.8/man/files.texi Thu May 27 03:41:34 1993 --- emacs-19.9/man/files.texi Thu May 27 03:46:25 1993 *************** *** 925,934 **** Once you have checked in your changes, the file is unlocked, so that other users can lock it and modify it. ! @vindex vc-make-backups Emacs does not save backup files for source files that are maintained with version control. If you want to make backup files despite version ! control, set the variable @code{vc-make-backups} to a non-@code{nil} value. @vindex vc-keep-workfiles Normally the work file exists all the time, whether it is locked or --- 925,935 ---- Once you have checked in your changes, the file is unlocked, so that other users can lock it and modify it. ! @vindex vc-make-backup-files Emacs does not save backup files for source files that are maintained with version control. If you want to make backup files despite version ! control, set the variable @code{vc-make-backup-files} to a ! non-@code{nil} value. @vindex vc-keep-workfiles Normally the work file exists all the time, whether it is locked or diff -cprP emacs-19.8/man/text.texi emacs-19.9/man/text.texi *** emacs-19.8/man/text.texi Thu May 27 03:41:42 1993 --- emacs-19.9/man/text.texi Thu May 27 03:46:33 1993 *************** *** 1038,1044 **** In La@TeX{} input, @samp{\begin} and @samp{\end} commands are used to group blocks of text. To insert a @samp{\begin} and a matching @samp{\end} (on a new line following the @samp{\begin}), use @kbd{C-c ! C-f} (@code{tex-latex-block}). A blank line is inserted between the two, and point is left there.@refill @vindex latex-block-names --- 1038,1044 ---- In La@TeX{} input, @samp{\begin} and @samp{\end} commands are used to group blocks of text. To insert a @samp{\begin} and a matching @samp{\end} (on a new line following the @samp{\begin}), use @kbd{C-c ! C-o} (@code{tex-latex-block}). A blank line is inserted between the two, and point is left there.@refill @vindex latex-block-names diff -cprP emacs-19.8/oldXMenu/ChangeLog emacs-19.9/oldXMenu/ChangeLog *** emacs-19.8/oldXMenu/ChangeLog Thu May 27 03:40:50 1993 --- emacs-19.9/oldXMenu/ChangeLog Thu May 27 03:45:47 1993 *************** *** 1,3 **** --- 1,11 ---- + Thu May 27 02:35:32 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.9 released. + + Thu May 27 01:17:08 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Create.c (XMenuCreate): Use x_get_resource_string, not XGetDefault. + Mon May 24 12:14:41 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * Version 19.8 released. diff -cprP emacs-19.8/oldXMenu/Create.c emacs-19.9/oldXMenu/Create.c *** emacs-19.8/oldXMenu/Create.c Thu May 27 03:40:48 1993 --- emacs-19.9/oldXMenu/Create.c Thu May 27 03:45:45 1993 *************** *** 77,82 **** --- 77,83 ---- int atoi(); double atof(); + char *x_get_resource_string (); XMenu * XMenuCreate(display, parent, def_env) *************** XMenuCreate(display, parent, def_env) *** 208,226 **** /* * Get default values from X. */ ! def_val = XGetDefault(display, def_env, "MenuFreeze"); if (def_val != NULL) { if (strcmp(def_val, "on") == 0) freeze = 1; else if (strcmp(def_val, "off") == 0) freeze = 0; } ! def_val = XGetDefault(display, def_env, "MenuReverseVideo"); if (def_val != NULL) { if (strcmp(def_val, "on") == 0) reverse = 1; else if (strcmp(def_val, "off") == 0) reverse = 0; } ! def_val = XGetDefault(display, def_env, "MenuStyle"); if (def_val != NULL) { if (strcmp(def_val, "right_hand") == 0) menu_style = RIGHT; else if (strcmp(def_val, "left_hand") == 0) menu_style = LEFT; --- 209,227 ---- /* * Get default values from X. */ ! def_val = x_get_resource_string ("menuFreeze", "MenuFreeze"); if (def_val != NULL) { if (strcmp(def_val, "on") == 0) freeze = 1; else if (strcmp(def_val, "off") == 0) freeze = 0; } ! def_val = x_get_resource_string ("menuReverseVideo", "MenuReverseVideo"); if (def_val != NULL) { if (strcmp(def_val, "on") == 0) reverse = 1; else if (strcmp(def_val, "off") == 0) reverse = 0; } ! def_val = x_get_resource_string ("menuStyle", "MenuStyle"); if (def_val != NULL) { if (strcmp(def_val, "right_hand") == 0) menu_style = RIGHT; else if (strcmp(def_val, "left_hand") == 0) menu_style = LEFT; *************** XMenuCreate(display, parent, def_env) *** 227,239 **** else if (strcmp(def_val, "center") == 0) menu_style = CENTER; } ! def_val = XGetDefault(display, def_env, "MenuMode"); if (def_val != NULL) { if (strcmp(def_val, "box") == 0) menu_mode = BOX; else if (strcmp(def_val, "invert") == 0) menu_mode = INVERT; } ! def_val = XGetDefault(display, def_env, "MenuMouse"); if ( def_val != NULL && DisplayCells(display, DefaultScreen(display)) > 2 && --- 228,240 ---- else if (strcmp(def_val, "center") == 0) menu_style = CENTER; } ! def_val = x_get_resource_string ("menuMode", "MenuMode"); if (def_val != NULL) { if (strcmp(def_val, "box") == 0) menu_mode = BOX; else if (strcmp(def_val, "invert") == 0) menu_mode = INVERT; } ! def_val = x_get_resource_string ("menuMouse", "MenuMouse"); if ( def_val != NULL && DisplayCells(display, DefaultScreen(display)) > 2 && *************** XMenuCreate(display, parent, def_env) *** 257,263 **** else ; ! def_val = XGetDefault(display, def_env, "MenuBackground"); if ( def_val != NULL && DisplayCells(display, DefaultScreen(display)) > 2 && --- 258,264 ---- else ; ! def_val = x_get_resource_string ("menuBackground", "MenuBackground"); if ( def_val != NULL && DisplayCells(display, DefaultScreen(display)) > 2 && *************** XMenuCreate(display, parent, def_env) *** 279,285 **** ); else; ! def_val = XGetDefault(display, def_env, "MenuInactivePattern"); if (def_val != NULL) { if (strcmp(def_val, "dimple1") == 0) inact_pnum = 0; else if (strcmp(def_val, "dimple3") == 0) inact_pnum = 1; --- 280,286 ---- ); else; ! def_val = x_get_resource_string ("menuInactivePattern", "MenuInactivePattern"); if (def_val != NULL) { if (strcmp(def_val, "dimple1") == 0) inact_pnum = 0; else if (strcmp(def_val, "dimple3") == 0) inact_pnum = 1; *************** XMenuCreate(display, parent, def_env) *** 288,294 **** else if (strcmp(def_val, "cross_weave") == 0) inact_pnum = 4; } ! def_val = XGetDefault(display, def_env, "PaneStyle"); if (def_val != NULL) { if (strcmp(def_val, "flush_left") == 0) p_style = LEFT; else if (strcmp(def_val, "flush_right") == 0) p_style = RIGHT; --- 289,295 ---- else if (strcmp(def_val, "cross_weave") == 0) inact_pnum = 4; } ! def_val = x_get_resource_string ("paneStyle", "PaneStyle"); if (def_val != NULL) { if (strcmp(def_val, "flush_left") == 0) p_style = LEFT; else if (strcmp(def_val, "flush_right") == 0) p_style = RIGHT; *************** XMenuCreate(display, parent, def_env) *** 295,304 **** else if (strcmp(def_val, "center") == 0) p_style = CENTER; } ! def_val = XGetDefault(display, def_env, "PaneFont"); if (def_val != NULL) p_fnt_name = def_val; ! def_val = XGetDefault(display, def_env, "PaneForeground"); if ( def_val != NULL && DisplayCells(display, DefaultScreen(display)) > 2 --- 296,305 ---- else if (strcmp(def_val, "center") == 0) p_style = CENTER; } ! def_val = x_get_resource_string ("paneFont", "Font"); if (def_val != NULL) p_fnt_name = def_val; ! def_val = x_get_resource_string ("paneForeground", "PaneForeground"); if ( def_val != NULL && DisplayCells(display, DefaultScreen(display)) > 2 *************** XMenuCreate(display, parent, def_env) *** 318,324 **** "black", &p_frg_color, &color_def); ! def_val = XGetDefault(display, def_env, "PaneBorder"); if ( def_val != NULL && DisplayCells(display, DefaultScreen(display)) > 2 && --- 319,325 ---- "black", &p_frg_color, &color_def); ! def_val = x_get_resource_string ("paneBorder", "PaneBorder"); if ( def_val != NULL && DisplayCells(display, DefaultScreen(display)) > 2 && *************** XMenuCreate(display, parent, def_env) *** 338,350 **** "black", &p_bdr_color, &color_def); ! def_val = XGetDefault(display, def_env, "PaneBorderWidth"); if (def_val != NULL) p_bdr_width = atoi(def_val); ! def_val = XGetDefault(display, def_env, "PaneSpread"); if (def_val != NULL) p_spread = atof(def_val); ! def_val = XGetDefault(display, def_env, "SelectionStyle"); if (def_val != NULL) { if (strcmp(def_val, "flush_left") == 0) s_style = LEFT; else if (strcmp(def_val, "flush_right") == 0) s_style = RIGHT; --- 339,351 ---- "black", &p_bdr_color, &color_def); ! def_val = x_get_resource_string ("paneBorderWidth", "PaneBorderWidth"); if (def_val != NULL) p_bdr_width = atoi(def_val); ! def_val = x_get_resource_string ("paneSpread", "PaneSpread"); if (def_val != NULL) p_spread = atof(def_val); ! def_val = x_get_resource_string ("selectionStyle", "SelectionStyle"); if (def_val != NULL) { if (strcmp(def_val, "flush_left") == 0) s_style = LEFT; else if (strcmp(def_val, "flush_right") == 0) s_style = RIGHT; *************** XMenuCreate(display, parent, def_env) *** 351,360 **** else if (strcmp(def_val, "center") == 0) s_style = CENTER; } ! def_val = XGetDefault(display, def_env, "SelectionFont"); if (def_val != NULL) s_fnt_name = def_val; ! def_val = XGetDefault(display, def_env, "SelectionForeground"); if ( def_val != NULL && DisplayCells(display, DefaultScreen(display)) > 2 && --- 352,361 ---- else if (strcmp(def_val, "center") == 0) s_style = CENTER; } ! def_val = x_get_resource_string ("selectionFont", "Font"); if (def_val != NULL) s_fnt_name = def_val; ! def_val = x_get_resource_string ("selectionForeground", "SelectionForeground"); if ( def_val != NULL && DisplayCells(display, DefaultScreen(display)) > 2 && *************** XMenuCreate(display, parent, def_env) *** 377,383 **** else ; ! def_val = XGetDefault(display, def_env, "SelectionBorder"); if ( def_val != NULL && DisplayCells(display, DefaultScreen(display)) > 2 && --- 378,384 ---- else ; ! def_val = x_get_resource_string ("selectionBorder", "SelectionBorder"); if ( def_val != NULL && DisplayCells(display, DefaultScreen(display)) > 2 && *************** XMenuCreate(display, parent, def_env) *** 399,408 **** ) ; else ; ! def_val = XGetDefault(display, def_env, "SelectionBorderWidth"); if (def_val != NULL) s_bdr_width = atoi(def_val); ! def_val = XGetDefault(display, def_env, "SelectionSpread"); if (def_val != NULL) s_spread = atof(def_val); /* --- 400,409 ---- ) ; else ; ! def_val = x_get_resource_string ("selectionBorderWidth", "SelectionBorderWidth"); if (def_val != NULL) s_bdr_width = atoi(def_val); ! def_val = x_get_resource_string ("selectionSpread", "SelectionSpread"); if (def_val != NULL) s_spread = atof(def_val); /* diff -cprP emacs-19.8/src/ChangeLog emacs-19.9/src/ChangeLog *** emacs-19.8/src/ChangeLog Thu May 27 03:40:41 1993 --- emacs-19.9/src/ChangeLog Thu May 27 03:45:35 1993 *************** *** 1,3 **** --- 1,152 ---- + Thu May 27 02:35:32 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.9 released. + + Thu May 27 02:02:40 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * keyboard.c (read_char): Correct previous change. + + Thu May 27 01:04:33 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * systty.h: Always terminate comments, to avoid confusion. + + * xfns.c: Make resource manager work correctly even when + Vinvocation_name has periods and asterisks in it. + (Vxrdb_name): New variable. + (Fx_get_resource): Use it instead of Vinvocation_name. + (Fx_open_connection): Initialize it to a copy of Vinvocation_name, + with the dots and stars replaced by hyphens. + (syms_of_xfns): staticpro it here. + + * xfns.c (Fx_get_resource): Use the proper format string when the + attribute has been specified. + + Thu May 27 01:09:16 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * xfns.c (x_get_resource_string): New function. + + * ymakefile (ALL_CFLAGS): Put CFLAGS last. + + Wed May 26 19:53:16 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * s/sol2.h: (SOLARIS_BROKEN_ACCESS): Don't define this. + + * s/aix3-2.h (C_SWITCH_SYSTEM): Don't define this to be "-ma" if + we're using GCC - that's an XLC switch. + + * s/aix3-2.h (LIBS_SYSTEM): Put -LIM -Liconv here. + + * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if + we have those structures, but *don't* define them if we have + TERMIOS, whose functions take care of those parameters; that + screws up AIX. + (struct emacs_tty): Test those symbols, instead of the ioctl + commands. + * sysdep.c (emacs_get_tty, emacs_set_tty, new_ltchars, new_tchars, + init_sys_modes): Same. + + * config.h.in (HAVE_RENAME): Include an #undef for this, so + configure will have something to edit. + + Wed May 26 19:12:10 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * window.c (window_loop, case GET_LRU_WINDOW): + Get frame's width properly. + + * xselect.c (x_get_local_selection): If no conversion function + exists for the requested type, just return nil. + + * s/linux.h (HAVE_TCATTR): Defined. + + * sysdep.c [HAVE_SOCKETS]: Include socket.h, netdb.h. + (get_system_name) [HAVE_SOCKETS]: Use gethostbyname. + + Wed May 26 19:00:00 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * s/hpux8.h (LIB_X11_LIB, C_SWITCH_SYSTEM, LD_SWITCH_SYSTEM, + LD_SWITCH_SYSTEM, OLDXMENU_OPTIONS): Add X11R5 directories to the + search paths in these lists; they shouldn't do any harm if they + don't have X11R5. + + * s/aix3-2.h (C_SWITCH_SYSTEM): Don't #define this if we're using + GCC. + + Wed May 26 01:09:50 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * xrdb.c (magic_searchpath_decoder): Fix typos. + + * xdisp.c (display_text_line): Don't call compute_char_face + for a non-X frame. + + * xfns.c (Fx_rebind_key, Fx_rebind_keys): X10 definitions deleted. + (syms_of_xfns): Install them only if X11. + + * ralloc.c (r_alloc_sbrk): Declare already_available as long, not SIZE. + + * xfns.c (x_set_cursor_type): If arg not recognized, use box cursor. + + * s/hpux8.h (LD_SWITCH_SYSTEM) [__GNUC__]: Pass -a archive to ld. + (HAVE_RANDOM): Defined. + + * s/hpux.h (rand, srand): Definitions deleted. + + * keyboard.c (Fcurrent_input_mode): Fix the call to Flist. + (make_lispy_event): Fix off-by-1 error with hpos in menu bar. + + * s/sunos4-1-3.h: New file. + + * ymakefile (XOBJ) [!HAVE_X_MENU]: Add xfaces.o. + + * s/irix4-0.h (SIGNALS_VIA_CHARACTERS): Defined. + + * xterm.c (x_wm_set_size_hint): Don't set hints for max size. + + Tue May 25 11:19:46 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * m/ibmrs6000.h (LIBS_MACHINE): Add -lIM and -liconv. + (HAVE_GETTIMEOFDAY): Deleted. + + * sysdep.c (wait_for_termination): Don't use the BSD alternative + for LINUX. Use the UNIPLUS alternative. + + * keyboard.c (read_char): If kbd_buffer_get_event returns nil, + redisplay and retry. + (kbd_buffer_get_event): If event is handled here, return nil. + (swallow_events): New function. + * process.c (wait_reading_process_input): Call that. + + * ralloc.c (POINTER): Always use char *. + + * s/sol2.h (C_SWITCH_X_SYSTEM): Deleted. + (LD_SWITCH_SYSTEM): Delete the -L option, leave just -R. + + * m/symmetry.h (PTY_TTY_NAME_SPRINTF, PTY_NAME_SPRINTF): + Use pty_name, not ptyname. + + * syntax.c (Fforward_comment): Arg is a Lisp_Object. + Convert it to an int. + + * ymakefile (alloca.o): Get alloca.c and alloca.s from ${srcdir}. + + * floatfns.c (logb): Don't declare if hpux. + + * syntax.c (Fforward_comment): Always set point. + + * s/dgux.h, s/hpux.h, s/esix.h (HAVE_GETTIMEOFDAY): Deleted. + + * s/irix4-0.h (C_ALLOCA, alloca): Definitions deleted. + [!NOT_C_CODE]: Include alloca.h. + (NEED_SIOCTL): #undef this. + + * xterm.h (PIXEL_TO_CHAR_COL, PIXEL_TO_CHAR_ROW): + Fix mismatch in arg names. + + * xfns.c (Fx_open_connection): Set xrm_option correctly. + + Tue May 25 18:09:03 1993 David J. MacKenzie (djm@wiki.eng.umd.edu) + + * xfns.c (x_figure_window_size): Make the default frame coords (0,0). + Tue May 25 05:15:14 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * Version 19.8 released. diff -cprP emacs-19.8/src/config.h.in emacs-19.9/src/config.h.in *** emacs-19.8/src/config.h.in Thu May 27 03:40:41 1993 --- emacs-19.9/src/config.h.in Thu May 27 03:45:35 1993 *************** *** 86,91 **** --- 86,92 ---- #undef HAVE_GETTIMEOFDAY #undef HAVE_GETHOSTNAME #undef HAVE_DUP2 + #undef HAVE_RENAME #undef HAVE_TM_ZONE #undef TM_IN_SYS_TIME #undef STDC_HEADERS diff -cprP emacs-19.8/src/floatfns.c emacs-19.9/src/floatfns.c *** emacs-19.8/src/floatfns.c Thu May 27 03:40:10 1993 --- emacs-19.9/src/floatfns.c Thu May 27 03:45:00 1993 *************** *** 55,62 **** --- 55,64 ---- #include + #ifndef hpux /* These declarations are omitted on some systems, like Ultrix. */ extern double logb (); + #endif #if defined(DOMAIN) && defined(SING) && defined(OVERFLOW) /* If those are defined, then this is probably a `matherr' machine. */ diff -cprP emacs-19.8/src/keyboard.c emacs-19.9/src/keyboard.c *** emacs-19.8/src/keyboard.c Thu May 27 03:40:12 1993 --- emacs-19.9/src/keyboard.c Thu May 27 03:45:03 1993 *************** *** 1485,1495 **** } /* Actually read a character, waiting if necessary. */ ! if (NILP (c)) ! c = kbd_buffer_get_event (); ! ! if (NILP (c)) ! abort (); /* Don't think this can happen. */ /* Terminate Emacs in batch mode if at eof. */ if (noninteractive && XTYPE (c) == Lisp_Int && XINT (c) < 0) --- 1485,1498 ---- } /* Actually read a character, waiting if necessary. */ ! while (NILP (c)) ! { ! c = kbd_buffer_get_event (); ! if (!NILP (c)) ! break; ! if (commandflag >= 0 && !input_pending && !detect_input_pending ()) ! redisplay (); ! } /* Terminate Emacs in batch mode if at eof. */ if (noninteractive && XTYPE (c) == Lisp_Int && XINT (c) < 0) *************** kbd_buffer_get_event () *** 1852,1858 **** #ifdef HAVE_X11 x_handle_selection_request (event); kbd_fetch_ptr = event + 1; - goto retry; #else /* We're getting selection request events, but we don't have a window system. */ --- 1855,1860 ---- *************** kbd_buffer_get_event () *** 1860,1871 **** #endif } ! if (event->kind == selection_clear_event) { #ifdef HAVE_X11 x_handle_selection_clear (event); kbd_fetch_ptr = event + 1; - goto retry; #else /* We're getting selection request events, but we don't have a window system. */ --- 1862,1872 ---- #endif } ! else if (event->kind == selection_clear_event) { #ifdef HAVE_X11 x_handle_selection_clear (event); kbd_fetch_ptr = event + 1; #else /* We're getting selection request events, but we don't have a window system. */ *************** kbd_buffer_get_event () *** 1876,1912 **** #ifdef MULTI_FRAME /* If this event is on a different frame, return a switch-frame this time, and leave the event in the queue for next time. */ ! { ! Lisp_Object frame = event->frame_or_window; ! Lisp_Object focus; ! if (XTYPE (frame) == Lisp_Window) ! frame = WINDOW_FRAME (XWINDOW (frame)); ! focus = FRAME_FOCUS_FRAME (XFRAME (frame)); ! if (! NILP (focus)) ! frame = focus; ! ! if (! EQ (frame, internal_last_event_frame) ! && XFRAME (frame) != selected_frame) ! obj = make_lispy_switch_frame (frame); ! internal_last_event_frame = frame; ! } ! #endif ! /* If we didn't decide to make a switch-frame event, go ahead ! and build a real event from the queue entry. */ ! if (NILP (obj)) ! { ! obj = make_lispy_event (event); ! ! /* Wipe out this event, to catch bugs. */ ! event->kind = no_event; ! (XVECTOR (kbd_buffer_frame_or_window)->contents[event - kbd_buffer] ! = Qnil); ! kbd_fetch_ptr = event + 1; } } else if (do_mouse_tracking && mouse_moved) { --- 1877,1915 ---- #ifdef MULTI_FRAME /* If this event is on a different frame, return a switch-frame this time, and leave the event in the queue for next time. */ ! else ! { ! Lisp_Object frame = event->frame_or_window; ! Lisp_Object focus; ! if (XTYPE (frame) == Lisp_Window) ! frame = WINDOW_FRAME (XWINDOW (frame)); ! focus = FRAME_FOCUS_FRAME (XFRAME (frame)); ! if (! NILP (focus)) ! frame = focus; ! if (! EQ (frame, internal_last_event_frame) ! && XFRAME (frame) != selected_frame) ! obj = make_lispy_switch_frame (frame); ! internal_last_event_frame = frame; ! /* If we didn't decide to make a switch-frame event, go ahead ! and build a real event from the queue entry. */ ! ! if (NILP (obj)) ! { ! obj = make_lispy_event (event); ! ! /* Wipe out this event, to catch bugs. */ ! event->kind = no_event; ! (XVECTOR (kbd_buffer_frame_or_window)->contents[event - kbd_buffer] ! = Qnil); ! ! kbd_fetch_ptr = event + 1; ! } } + #endif } else if (do_mouse_tracking && mouse_moved) { *************** kbd_buffer_get_event () *** 1948,1957 **** --- 1951,1962 ---- something for us to read! */ abort (); + #if 0 /* If something gave back nil as the Lispy event, it means the event was discarded, so try again. */ if (NILP (obj)) goto retry; + #endif input_pending = readable_events (); *************** kbd_buffer_get_event () *** 1962,1967 **** --- 1967,2018 ---- return (obj); } + /* Process any events that are not user-visible. */ + + void + swallow_events () + { + while (kbd_fetch_ptr != kbd_store_ptr) + { + struct input_event *event; + + event = ((kbd_fetch_ptr < kbd_buffer + KBD_BUFFER_SIZE) + ? kbd_fetch_ptr + : kbd_buffer); + + last_event_timestamp = event->timestamp; + + /* These two kinds of events get special handling + and don't actually appear to the command loop. */ + if (event->kind == selection_request_event) + { + #ifdef HAVE_X11 + x_handle_selection_request (event); + kbd_fetch_ptr = event + 1; + #else + /* We're getting selection request events, but we don't have + a window system. */ + abort (); + #endif + } + + else if (event->kind == selection_clear_event) + { + #ifdef HAVE_X11 + x_handle_selection_clear (event); + kbd_fetch_ptr = event + 1; + #else + /* We're getting selection request events, but we don't have + a window system. */ + abort (); + #endif + } + else + break; + } + + get_input_pending (&input_pending); + } /* Caches for modify_event_symbol. */ static Lisp_Object func_key_syms; *************** make_lispy_event (event) *** 2170,2177 **** Lisp_Object pos, string; pos = Fcdr (Fcdr (Fcar (items))); string = Fcar (Fcdr (Fcar (items))); ! if (XINT (event->x) > XINT (pos) ! && XINT (event->x) <= XINT (pos) + XSTRING (string)->size) break; } position --- 2221,2228 ---- Lisp_Object pos, string; pos = Fcdr (Fcdr (Fcar (items))); string = Fcar (Fcdr (Fcar (items))); ! if (XINT (event->x) >= XINT (pos) ! && XINT (event->x) < XINT (pos) + XSTRING (string)->size) break; } position *************** The elements of this list correspond to *** 4580,4586 **** val[2] = meta_key == 2 ? make_number (0) : meta_key == 1 ? Qt : Qnil; XFASTINT (val[3]) = quit_char; ! return Flist (val, sizeof (val) / sizeof (val[0])); } --- 4631,4637 ---- val[2] = meta_key == 2 ? make_number (0) : meta_key == 1 ? Qt : Qnil; XFASTINT (val[3]) = quit_char; ! return Flist (sizeof (val) / sizeof (val[0]), val); } diff -cprP emacs-19.8/src/m/ibmrs6000.h emacs-19.9/src/m/ibmrs6000.h *** emacs-19.8/src/m/ibmrs6000.h Thu May 27 03:39:51 1993 --- emacs-19.9/src/m/ibmrs6000.h Thu May 27 03:44:37 1993 *************** *** 117,125 **** #define OBJECTS_MACHINE hftctl.o #define C_SWITCH_MACHINE -D_BSD ! #define LIBS_MACHINE -lrts #define START_FILES - #define HAVE_GETTIMEOFDAY #define HAVE_SYSVIPC #define HAVE_SETSID #define HAVE_GETWD --- 117,125 ---- #define OBJECTS_MACHINE hftctl.o #define C_SWITCH_MACHINE -D_BSD ! /* cdfwz@r2d2.giss.nasa.gov says -lIM -liconv is needed. */ ! #define LIBS_MACHINE -lrts -lIM -liconv #define START_FILES #define HAVE_SYSVIPC #define HAVE_SETSID #define HAVE_GETWD diff -cprP emacs-19.8/src/m/symmetry.h emacs-19.9/src/m/symmetry.h *** emacs-19.8/src/m/symmetry.h Thu May 27 03:39:58 1993 --- emacs-19.9/src/m/symmetry.h Thu May 27 03:44:40 1993 *************** *** 98,103 **** for (ma = 0; ma < sizeof(PTY_MAJOR) - 1; ma++) \ for (mi = 0; mi < sizeof(PTY_MINOR) - 1; mi++) #define PTY_NAME_SPRINTF \ ! sprintf (ptyname, "/dev/pty%c%c", PTY_MAJOR[ma], PTY_MINOR[mi]); #define PTY_TTY_NAME_SPRINTF \ ! sprintf (ptyname, "/dev/tty%c%c", PTY_MAJOR[ma], PTY_MINOR[mi]); --- 98,103 ---- for (ma = 0; ma < sizeof(PTY_MAJOR) - 1; ma++) \ for (mi = 0; mi < sizeof(PTY_MINOR) - 1; mi++) #define PTY_NAME_SPRINTF \ ! sprintf (pty_name, "/dev/pty%c%c", PTY_MAJOR[ma], PTY_MINOR[mi]); #define PTY_TTY_NAME_SPRINTF \ ! sprintf (pty_name, "/dev/tty%c%c", PTY_MAJOR[ma], PTY_MINOR[mi]); diff -cprP emacs-19.8/src/process.c emacs-19.9/src/process.c *** emacs-19.8/src/process.c Thu May 27 03:40:15 1993 --- emacs-19.9/src/process.c Thu May 27 03:45:07 1993 *************** *** 1875,1881 **** to give it higher priority than subprocesses */ if (XINT (read_kbd) && detect_input_pending ()) ! break; /* Exit now if the cell we're waiting for became non-nil. */ if (wait_for_cell && ! NILP (*wait_for_cell)) --- 1875,1885 ---- to give it higher priority than subprocesses */ if (XINT (read_kbd) && detect_input_pending ()) ! { ! swallow_events (); ! if (detect_input_pending ()) ! break; ! } /* Exit now if the cell we're waiting for became non-nil. */ if (wait_for_cell && ! NILP (*wait_for_cell)) diff -cprP emacs-19.8/src/ralloc.c emacs-19.9/src/ralloc.c *** emacs-19.8/src/ralloc.c Thu May 27 03:40:15 1993 --- emacs-19.9/src/ralloc.c Thu May 27 03:45:07 1993 *************** *** 33,38 **** --- 33,39 ---- /* The important properties of this type are that 1) it's a pointer, and 2) arithmetic on it should work as if the size of the object pointed to has a size of 1. */ + #if 0 /* Arithmetic on void* is a GCC extension. */ #ifdef __STDC__ typedef void *POINTER; #else *************** typedef void *POINTER; *** 44,50 **** --- 45,55 ---- typedef char *POINTER; #endif + #endif /* 0 */ + /* Unconditionally use char * for this. */ + typedef char *POINTER; + typedef unsigned long SIZE; /* Declared in dispnew.c, this version doesn't screw up if regions *************** r_alloc_sbrk (size) *** 346,352 **** /* This is the first address not currently available for the heap. */ POINTER top; /* Amount of empty space below that. */ ! SIZE already_available; POINTER ptr; if (! use_relocatable_buffers) --- 351,360 ---- /* This is the first address not currently available for the heap. */ POINTER top; /* Amount of empty space below that. */ ! /* It is not correct to use SIZE here, because that is usually unsigned. ! ptrdiff_t would be okay, but is not always available. ! `long' will work in all cases, in practice. */ ! long already_available; POINTER ptr; if (! use_relocatable_buffers) diff -cprP emacs-19.8/src/s/aix3-2.h emacs-19.9/src/s/aix3-2.h *** emacs-19.8/src/s/aix3-2.h Thu May 27 03:39:59 1993 --- emacs-19.9/src/s/aix3-2.h Thu May 27 03:44:42 1993 *************** *** 6,12 **** --- 6,14 ---- and that's supposedly what 3.2 will come with. */ #undef SPECIFY_X11R4 + #ifndef __GNUC__ #define C_SWITCH_SYSTEM -ma + #endif #define HAVE_ALLOCA #undef rindex #undef index *************** *** 17,19 **** --- 19,26 ---- 3.2, and a cc-compiled Emacs works with this undefined. --karl@cs.umb.edu. */ #undef SYSTEM_MALLOC + + /* + IBM's X11R5 use these libraries in AIX 3.2.2. */ + + #define LIBS_SYSTEM -lIM -liconv diff -cprP emacs-19.8/src/s/dgux.h emacs-19.9/src/s/dgux.h *** emacs-19.8/src/s/dgux.h Thu May 27 03:39:59 1993 --- emacs-19.9/src/s/dgux.h Thu May 27 03:44:43 1993 *************** *** 174,185 **** 4800, 9600, 19200, 38400 } /* - * Define HAVE_GETTIMEOFDAY if gettimeofday() system call is available. - */ - - #define HAVE_GETTIMEOFDAY - - /* * Define NLIST_STRUCT if the system has nlist.h */ --- 174,179 ---- diff -cprP emacs-19.8/src/s/esix.h emacs-19.9/src/s/esix.h *** emacs-19.8/src/s/esix.h Thu May 27 03:39:59 1993 --- emacs-19.9/src/s/esix.h Thu May 27 03:44:43 1993 *************** *** 15,21 **** /* If using Roell's X server, define X11R4 */ #ifdef X11R4 /* Roell's X server */ - #define HAVE_GETTIMEOFDAY /* Thomas Roell's X11R4 lib defines gettimeofday */ #define select sys_select /* Emacs select() not good enough? */ #undef LIBX11_SYSTEM #define LIBX11_SYSTEM -lpt --- 15,20 ---- diff -cprP emacs-19.8/src/s/hpux.h emacs-19.9/src/s/hpux.h *** emacs-19.8/src/s/hpux.h Thu May 27 03:40:00 1993 --- emacs-19.9/src/s/hpux.h Thu May 27 03:44:43 1993 *************** *** 193,202 **** --- 193,204 ---- /* Use the system provided termcap(3) library */ #define TERMINFO + #if 0 /* The 48-bit versions are more winning for Emacs. */ #define rand lrand48 #define srand srand48 + #endif /* In hpux, the symbol SIGIO is defined, but the feature doesn't work in the way Emacs needs it to. *************** *** 223,230 **** #endif /* Some additional system facilities exist. */ - - #define HAVE_GETTIMEOFDAY #define HAVE_VFORK #define HAVE_PERROR /* Delete this line for version 6. */ --- 225,230 ---- diff -cprP emacs-19.8/src/s/hpux8.h emacs-19.9/src/s/hpux8.h *** emacs-19.8/src/s/hpux8.h Thu May 27 03:40:00 1993 --- emacs-19.9/src/s/hpux8.h Thu May 27 03:44:43 1993 *************** *** 8,31 **** #define HPUX8 ! #define LIB_X11_LIB -L/usr/lib/X11R4 -lX11 ! #define C_SWITCH_SYSTEM -I/usr/include/X11R4 /* Don't use shared libraries. unexec doesn't handle them. Note GCC automatically passes -a archive to ld, and it has its own conflicting -a. */ #ifdef __GNUC__ ! #define LD_SWITCH_SYSTEM -L/usr/lib/X11R4 /* No need to specify roundabout way of linking temacs. */ #define ORDINARY_LINK #else ! #define LD_SWITCH_SYSTEM -a archive -L/usr/lib/X11R4 #endif /* Specify compiler options for compiling oldXMenu. */ ! #define OLDXMENU_OPTIONS CFLAGS=-I/usr/include/X11R4 /* Some hpux 8 machines seem to have TIOCGWINSZ, and none have sioctl.h, so might as well define this. */ #define NO_SIOCTL_H --- 8,33 ---- #define HPUX8 ! #define LIB_X11_LIB -L/usr/lib/X11R5 -L/usr/lib/X11R4 -lX11 ! #define C_SWITCH_SYSTEM -I/usr/lib/X11R5 -I/usr/include/X11R4 /* Don't use shared libraries. unexec doesn't handle them. Note GCC automatically passes -a archive to ld, and it has its own conflicting -a. */ #ifdef __GNUC__ ! #define LD_SWITCH_SYSTEM -L/usr/lib/X11R5 -L/usr/lib/X11R4 -Xlinker -a -Xlinker archive /* No need to specify roundabout way of linking temacs. */ #define ORDINARY_LINK #else ! #define LD_SWITCH_SYSTEM -a archive -L/usr/lib/X11R5 -L/usr/lib/X11R4 #endif /* Specify compiler options for compiling oldXMenu. */ ! #define OLDXMENU_OPTIONS CFLAGS=-I/usr/include/X11R5 -I/usr/include/X11R4 /* Some hpux 8 machines seem to have TIOCGWINSZ, and none have sioctl.h, so might as well define this. */ #define NO_SIOCTL_H + + #define HAVE_RANDOM diff -cprP emacs-19.8/src/s/irix4-0.h emacs-19.9/src/s/irix4-0.h *** emacs-19.8/src/s/irix4-0.h Thu May 27 03:40:00 1993 --- emacs-19.9/src/s/irix4-0.h Thu May 27 03:44:44 1993 *************** *** 2,12 **** #define USG5_3 - /* Define HAVE_ALLOCA to say that the system provides a properly - working alloca function and it should be used. */ #define HAVE_ALLOCA ! #undef C_ALLOCA ! #define alloca __builtin_alloca /* use K&R C */ #ifndef __GNUC__ --- 2,16 ---- #define USG5_3 #define HAVE_ALLOCA ! #ifndef NOT_C_CODE ! #include ! #endif ! ! #undef NEED_SIOCTL ! ! /* Make process_send_signal work by "typing" a signal character on the pty. */ ! #define SIGNALS_VIA_CHARACTERS /* use K&R C */ #ifndef __GNUC__ diff -cprP emacs-19.8/src/s/linux.h emacs-19.9/src/s/linux.h *** emacs-19.8/src/s/linux.h Thu May 27 03:40:00 1993 --- emacs-19.9/src/s/linux.h Thu May 27 03:44:44 1993 *************** *** 167,172 **** --- 167,173 ---- #define HAVE_VFORK #define HAVE_SYS_SIGLIST #define HAVE_GETWD /* cure conflict with getcwd? */ + #define HAVE_TCATTR /* faith@cs.unc.edu says this is needed. */ #define USE_UTIME /* don't have utimes */ #define SYSV_SYSTEM_DIR /* use dirent.h */ diff -cprP emacs-19.8/src/s/sol2.h emacs-19.9/src/s/sol2.h *** emacs-19.8/src/s/sol2.h Thu May 27 03:40:01 1993 --- emacs-19.9/src/s/sol2.h Thu May 27 03:44:44 1993 *************** *** 2,14 **** #define POSIX ! /* Here is how to find X Windows. The -L option tells the linker where ! to find the libraries at link time, the -R option at run time. */ ! #define C_SWITCH_X_SYSTEM -I/usr/openwin/include #ifndef __GNUC__ ! #define LD_SWITCH_SYSTEM -L/usr/openwin/lib -R/usr/openwin/lib #else /* GCC */ ! #define LD_SWITCH_SYSTEM -L/usr/openwin/lib -Xlinker -R/usr/openwin/lib #endif /* GCC */ /* Compile in non-ansi fashion to work around bugs in system header files. */ --- 2,13 ---- #define POSIX ! /* Here is how to find X Windows. The -R option says where ! to find X windows at run time. */ #ifndef __GNUC__ ! #define LD_SWITCH_SYSTEM -R/usr/openwin/lib #else /* GCC */ ! #define LD_SWITCH_SYSTEM -Xlinker -R/usr/openwin/lib #endif /* GCC */ /* Compile in non-ansi fashion to work around bugs in system header files. */ *************** If you have the misfortune to be running *** 24,27 **** noticed that the access system call does not check the readonlyness of the filesystem the path refers to. This is a bug, according to access(2), but in the meantime, some of us need the right behavior. */ ! #define SOLARIS_BROKEN_ACCESS --- 23,30 ---- noticed that the access system call does not check the readonlyness of the filesystem the path refers to. This is a bug, according to access(2), but in the meantime, some of us need the right behavior. */ ! ! /* Well, we released Emacs with this change, and fixed a typo, but ! people keep saying that it doesn't work, and that the patch is easy ! to install. */ ! #undef SOLARIS_BROKEN_ACCESS diff -cprP emacs-19.8/src/s/sunos4-1-3.h emacs-19.9/src/s/sunos4-1-3.h *** emacs-19.8/src/s/sunos4-1-3.h --- emacs-19.9/src/s/sunos4-1-3.h Thu May 27 03:44:44 1993 *************** *** 0 **** --- 1,5 ---- + #include "sunos4-1.h" + + /* The bug that corrupts GNU malloc's memory pool is fixed in SunOS 4.1.3. */ + + #undef SYSTEM_MALLOC diff -cprP emacs-19.8/src/syntax.c emacs-19.9/src/syntax.c *** emacs-19.8/src/syntax.c Thu May 27 03:40:17 1993 --- emacs-19.9/src/syntax.c Thu May 27 03:45:09 1993 *************** *** 570,576 **** If N comments are found as expected, with nothing except whitespace\n\ between them, return t; otherwise return nil.") (count) ! int count; { register int from; register int stop; --- 570,576 ---- If N comments are found as expected, with nothing except whitespace\n\ between them, return t; otherwise return nil.") (count) ! Lisp_Object count; { register int from; register int stop; *************** between them, return t; otherwise return *** 577,590 **** register int c; register enum syntaxcode code; int comstyle = 0; /* style of comment encountered */ immediate_quit = 1; QUIT; from = PT; ! while (count > 0) { stop = ZV; while (from < stop) { --- 577,597 ---- register int c; register enum syntaxcode code; int comstyle = 0; /* style of comment encountered */ + int found; + int count1; + CHECK_NUMBER (count, 0); + count1 = XINT (count); + immediate_quit = 1; QUIT; from = PT; + found = from; ! while (count1 > 0) { + found = from; stop = ZV; while (from < stop) { *************** *** 612,617 **** --- 619,625 ---- if (from == stop) { immediate_quit = 0; + SET_PT (found); return Qnil; } c = FETCH_CHAR (from); *************** *** 636,651 **** else if (code != Swhitespace) { immediate_quit = 0; return Qnil; } } /* End of comment reached */ ! count--; } ! while (count < 0) { stop = BEGV; while (from > stop) { --- 644,662 ---- else if (code != Swhitespace) { immediate_quit = 0; + SET_PT (found); return Qnil; } } /* End of comment reached */ ! count1--; } ! while (count1 < 0) { + found = from; + stop = BEGV; while (from > stop) { *************** *** 685,690 **** --- 696,702 ---- if (from == stop) { immediate_quit = 0; + SET_PT (found); return Qnil; } from--; *************** *** 808,818 **** else if (code != Swhitespace || quoted) { immediate_quit = 0; return Qnil; } } ! count++; } SET_PT (from); --- 820,831 ---- else if (code != Swhitespace || quoted) { immediate_quit = 0; + SET_PT (found); return Qnil; } } ! count1++; } SET_PT (from); diff -cprP emacs-19.8/src/sysdep.c emacs-19.9/src/sysdep.c *** emacs-19.8/src/sysdep.c Thu May 27 03:40:18 1993 --- emacs-19.9/src/sysdep.c Thu May 27 03:45:10 1993 *************** *** 314,320 **** status = SYS$FORCEX (&pid, 0, 0); break; #else /* not VMS */ ! #if defined (BSD) || (defined (HPUX) && !defined (HPUX_5)) /* Note that kill returns -1 even if the process is just a zombie now. But inevitably a SIGCHLD interrupt should be generated and child_sig will do wait3 and make the process go away. */ --- 314,320 ---- status = SYS$FORCEX (&pid, 0, 0); break; #else /* not VMS */ ! #if (defined (BSD) && !defined (LINUX)) || (defined (HPUX) && !defined (HPUX_5)) /* Note that kill returns -1 even if the process is just a zombie now. But inevitably a SIGCHLD interrupt should be generated and child_sig will do wait3 and make the process go away. */ *************** *** 333,344 **** sleep (1); else sigpause (SIGEMPTYMASK); ! #else /* not BSD, and not HPUX version >= 6 */ ! #ifdef UNIPLUS if (0 > kill (pid, 0)) break; wait (0); ! #else /* neither BSD nor UNIPLUS: random sysV */ #ifdef HAVE_SYSV_SIGPAUSE sighold (SIGCHLD); if (0 > kill (pid, 0)) --- 333,344 ---- sleep (1); else sigpause (SIGEMPTYMASK); ! #else /* not BSD, not LINUX, and not HPUX version >= 6 */ ! #if defined (UNIPLUS) || defined (LINUX) if (0 > kill (pid, 0)) break; wait (0); ! #else /* neither BSD nor UNIPLUS nor LINUX: random sysV */ #ifdef HAVE_SYSV_SIGPAUSE sighold (SIGCHLD); if (0 > kill (pid, 0)) *************** emacs_get_tty (fd, settings) *** 765,777 **** #endif /* Suivant - Do we have to get struct ltchars data? */ ! #ifdef TIOCGLTC if (ioctl (fd, TIOCGLTC, &settings->ltchars) < 0) return -1; #endif /* How about a struct tchars and a wordful of lmode bits? */ ! #ifdef TIOCGETC if (ioctl (fd, TIOCGETC, &settings->tchars) < 0 || ioctl (fd, TIOCLGET, &settings->lmode) < 0) return -1; --- 765,777 ---- #endif /* Suivant - Do we have to get struct ltchars data? */ ! #ifdef HAVE_LTCHARS if (ioctl (fd, TIOCGLTC, &settings->ltchars) < 0) return -1; #endif /* How about a struct tchars and a wordful of lmode bits? */ ! #ifdef HAVE_TCHARS if (ioctl (fd, TIOCGETC, &settings->tchars) < 0 || ioctl (fd, TIOCLGET, &settings->lmode) < 0) return -1; *************** emacs_set_tty (fd, settings, waitp) *** 846,858 **** #endif /* Suivant - Do we have to get struct ltchars data? */ ! #ifdef TIOCGLTC if (ioctl (fd, TIOCSLTC, &settings->ltchars) < 0) return -1; #endif /* How about a struct tchars and a wordful of lmode bits? */ ! #ifdef TIOCGETC if (ioctl (fd, TIOCSETC, &settings->tchars) < 0 || ioctl (fd, TIOCLSET, &settings->lmode) < 0) return -1; --- 846,858 ---- #endif /* Suivant - Do we have to get struct ltchars data? */ ! #ifdef HAVE_LTCHARS if (ioctl (fd, TIOCSLTC, &settings->ltchars) < 0) return -1; #endif /* How about a struct tchars and a wordful of lmode bits? */ ! #ifdef HAVE_TCHARS if (ioctl (fd, TIOCSETC, &settings->tchars) < 0 || ioctl (fd, TIOCLSET, &settings->lmode) < 0) return -1; *************** unsigned char _sobuf[BUFSIZ+8]; *** 888,897 **** char _sobuf[BUFSIZ]; #endif ! #ifdef TIOCGLTC static struct ltchars new_ltchars = {-1,-1,-1,-1,-1,-1}; #endif ! #ifdef TIOCGETC static struct tchars new_tchars = {-1,-1,-1,-1,-1,-1}; #endif --- 888,897 ---- char _sobuf[BUFSIZ]; #endif ! #ifdef HAVE_LTCHARS static struct ltchars new_ltchars = {-1,-1,-1,-1,-1,-1}; #endif ! #ifdef HAVE_TCHARS static struct tchars new_tchars = {-1,-1,-1,-1,-1,-1}; #endif *************** init_sys_modes () *** 1042,1048 **** control for user coming over network on 4.2; in this case, only t_stopc and t_startc really matter. */ #ifndef HAVE_TERMIO ! #ifdef TIOCGETC /* Note: if not using CBREAK mode, it makes no difference how we set this */ tty.tchars = new_tchars; --- 1042,1048 ---- control for user coming over network on 4.2; in this case, only t_stopc and t_startc really matter. */ #ifndef HAVE_TERMIO ! #ifdef HAVE_TCHARS /* Note: if not using CBREAK mode, it makes no difference how we set this */ tty.tchars = new_tchars; *************** init_sys_modes () *** 1068,1079 **** lmode = tty.lmode; #endif ! #endif /* TIOCGETC */ #endif /* not HAVE_TERMIO */ ! #ifdef TIOCGLTC tty.ltchars = new_ltchars; ! #endif /* TIOCGLTC */ EMACS_SET_TTY (input_fd, &tty, 0); --- 1068,1079 ---- lmode = tty.lmode; #endif ! #endif /* HAVE_TCHARS */ #endif /* not HAVE_TERMIO */ ! #ifdef HAVE_LTCHARS tty.ltchars = new_ltchars; ! #endif /* HAVE_LTCHARS */ EMACS_SET_TTY (input_fd, &tty, 0); *************** static struct utsname get_system_name_na *** 1712,1717 **** --- 1712,1728 ---- #endif /* not HAVE_GETHOSTNAME */ #endif /* USG */ + #ifndef BSD4_1 + #ifndef USG + #ifndef VMS + #ifdef HAVE_SOCKETS + #include + #include + #endif /* HAVE_SOCKETS */ + #endif /* not VMS */ + #endif /* not USG */ + #endif /* not BSD4_1 */ + char * get_system_name () { *************** get_system_name () *** 1742,1747 **** --- 1753,1772 ---- strcpy (system_name_saved, sp); #else /* not VMS */ gethostname (system_name_saved, sizeof (system_name_saved)); + #ifdef HAVE_SOCKETS + /* Turn the hostname into the official, fully-qualified hostname. + Don't do this if we're going to dump; this can confuse system + libraries on some machines and make the dumped emacs core dump. */ + #ifndef CANNOT_DUMP + if (initialized) + #endif /* not CANNOT_DUMP */ + { + struct hostent *hp; + hp = gethostbyname (system_name_saved); + if (hp && strlen (hp->h_name) < sizeof(system_name_saved)) + strcpy (system_name_saved, hp->h_name); + } + #endif /* HAVE_SOCKETS */ #endif /* not VMS */ return system_name_saved; #endif /* not USG, not 4.1 */ diff -cprP emacs-19.8/src/systty.h emacs-19.9/src/systty.h *** emacs-19.8/src/systty.h Thu May 27 03:40:35 1993 --- emacs-19.9/src/systty.h Thu May 27 03:45:28 1993 *************** *** 157,162 **** --- 157,173 ---- #undef SIGIO #endif + /* On TERMIOS systems, the tcmumbleattr calls take care of these + parameters, and it's a bad idea to use them (on AIX, it makes the + tty hang for a long time). */ + #if defined (TIOCGLTC) && !defined (HAVE_TERMIOS) + #define HAVE_LTCHARS + #endif + + #if defined (TIOCGETC) && !defined (HAVE_TERMIOS) + #define HAVE_TCHARS + #endif + /* Try to establish the correct character to disable terminal functions in a system-independent manner. Note that USG (at least) define *************** struct emacs_tty { *** 286,297 **** #endif #endif #endif ! #ifdef TIOCGLTC struct ltchars ltchars; #endif ! #ifdef TIOCGETC struct tchars tchars; int lmode; #endif }; --- 297,314 ---- #endif #endif #endif ! ! /* If we have TERMIOS, we don't need to do this - they're taken care of ! by the tc*attr calls. */ ! #ifndef HAVE_TERMIOS ! #ifdef HAVE_LTCHARS struct ltchars ltchars; #endif ! ! #ifdef HAVE_TCHARS struct tchars tchars; int lmode; + #endif #endif }; diff -cprP emacs-19.8/src/window.c emacs-19.9/src/window.c *** emacs-19.8/src/window.c Thu May 27 03:40:25 1993 --- emacs-19.9/src/window.c Thu May 27 03:45:17 1993 *************** *** 1131,1137 **** case GET_LRU_WINDOW: /* t as arg means consider only full-width windows */ if (!NILP (obj) && XFASTINT (XWINDOW (w)->width) ! != FRAME_WIDTH (frame)) break; #if 0 /* Ignore invisible and iconified frames. */ --- 1131,1137 ---- case GET_LRU_WINDOW: /* t as arg means consider only full-width windows */ if (!NILP (obj) && XFASTINT (XWINDOW (w)->width) ! != FRAME_WIDTH (XFRAME (WINDOW_FRAME (XWINDOW (w))))) break; #if 0 /* Ignore invisible and iconified frames. */ diff -cprP emacs-19.8/src/xdisp.c emacs-19.9/src/xdisp.c *** emacs-19.8/src/xdisp.c Thu May 27 03:40:23 1993 --- emacs-19.9/src/xdisp.c Thu May 27 03:45:15 1993 *************** *** 1790,1796 **** /* Did we hit a face change? Figure out what face we should use now. We also hit this the first time through the loop, to see what face we should start with. */ ! if (pos == next_face_change) current_face = compute_char_face (f, w, pos, region_beg, region_end, &next_face_change); --- 1790,1796 ---- /* Did we hit a face change? Figure out what face we should use now. We also hit this the first time through the loop, to see what face we should start with. */ ! if (pos == next_face_change && FRAME_X_P (f)) current_face = compute_char_face (f, w, pos, region_beg, region_end, &next_face_change); diff -cprP emacs-19.8/src/xfns.c emacs-19.9/src/xfns.c *** emacs-19.8/src/xfns.c Thu May 27 03:40:26 1993 --- emacs-19.9/src/xfns.c Thu May 27 03:45:19 1993 *************** *** 54,59 **** --- 54,62 ---- /* The class of this X application. */ #define EMACS_CLASS "Emacs" + /* The name we're using for this X application. */ + Lisp_Object Vxrdb_name; + /* Title name and application name for X stuff. */ extern char *x_id_name; *************** x_set_cursor_type (f, arg, oldval) *** 758,768 **** { if (EQ (arg, Qbar)) FRAME_DESIRED_CURSOR (f) = bar_cursor; ! else if (EQ (arg, Qbox)) ! FRAME_DESIRED_CURSOR (f) = filled_box_cursor; else error ("the `cursor-type' frame parameter should be either `bar' or `box'"); /* Make sure the cursor gets redrawn. This is overkill, but how often do people change cursor types? */ --- 761,778 ---- { if (EQ (arg, Qbar)) FRAME_DESIRED_CURSOR (f) = bar_cursor; ! else ! #if 0 ! if (EQ (arg, Qbox)) ! #endif ! FRAME_DESIRED_CURSOR (f) = filled_box_cursor; ! /* Error messages commented out because people have trouble fixing ! .Xdefaults with Emacs, when it has something bad in it. */ ! #if 0 else error ("the `cursor-type' frame parameter should be either `bar' or `box'"); + #endif /* Make sure the cursor gets redrawn. This is overkill, but how often do people change cursor types? */ *************** and the class is `Emacs.CLASS.SUBCLASS'. *** 1097,1103 **** { /* Allocate space for the components, the dots which separate them, and the final '\0'. */ ! name_key = (char *) alloca (XSTRING (Vinvocation_name)->size + XSTRING (attribute)->size + 2); class_key = (char *) alloca ((sizeof (EMACS_CLASS) - 1) --- 1107,1113 ---- { /* Allocate space for the components, the dots which separate them, and the final '\0'. */ ! name_key = (char *) alloca (XSTRING (Vxrdb_name)->size + XSTRING (attribute)->size + 2); class_key = (char *) alloca ((sizeof (EMACS_CLASS) - 1) *************** and the class is `Emacs.CLASS.SUBCLASS'. *** 1105,1111 **** + 2); sprintf (name_key, "%s.%s", ! XSTRING (Vinvocation_name)->data, XSTRING (attribute)->data); sprintf (class_key, "%s.%s", EMACS_CLASS, --- 1115,1121 ---- + 2); sprintf (name_key, "%s.%s", ! XSTRING (Vxrdb_name)->data, XSTRING (attribute)->data); sprintf (class_key, "%s.%s", EMACS_CLASS, *************** and the class is `Emacs.CLASS.SUBCLASS'. *** 1113,1119 **** } else { ! name_key = (char *) alloca (XSTRING (Vinvocation_name)->size + XSTRING (component)->size + XSTRING (attribute)->size + 3); --- 1123,1129 ---- } else { ! name_key = (char *) alloca (XSTRING (Vxrdb_name)->size + XSTRING (component)->size + XSTRING (attribute)->size + 3); *************** and the class is `Emacs.CLASS.SUBCLASS'. *** 1124,1133 **** + 3); sprintf (name_key, "%s.%s.%s", ! XSTRING (Vinvocation_name)->data, XSTRING (component)->data, XSTRING (attribute)->data); ! sprintf (class_key, "%s.%s", EMACS_CLASS, XSTRING (class)->data, XSTRING (subclass)->data); --- 1134,1143 ---- + 3); sprintf (name_key, "%s.%s.%s", ! XSTRING (Vxrdb_name)->data, XSTRING (component)->data, XSTRING (attribute)->data); ! sprintf (class_key, "%s.%s.%s", EMACS_CLASS, XSTRING (class)->data, XSTRING (subclass)->data); *************** and the class is `Emacs.CLASS.SUBCLASS'. *** 1141,1146 **** --- 1151,1181 ---- return Qnil; } + /* Used when C code wants a resource value. */ + + char * + x_get_resource_string (attribute, class) + char *attribute, *class; + { + register char *value; + char *name_key; + char *class_key; + + /* Allocate space for the components, the dots which separate them, + and the final '\0'. */ + name_key = (char *) alloca (XSTRING (Vinvocation_name)->size + + strlen (attribute) + 2); + class_key = (char *) alloca ((sizeof (EMACS_CLASS) - 1) + + strlen (class) + 2); + + sprintf (name_key, "%s.%s", + XSTRING (Vinvocation_name)->data, + attribute); + sprintf (class_key, "%s.%s", EMACS_CLASS, class); + + return x_get_string_resource (xrdb, name_key, class_key); + } + #else /* X10 */ DEFUN ("x-get-default", Fx_get_default, Sx_get_default, 1, 1, 0, *************** x_figure_window_size (f, parms) *** 1357,1364 **** window manager prompting. */ f->width = DEFAULT_COLS; f->height = DEFAULT_ROWS; ! f->display.x->top_pos = 1; ! f->display.x->left_pos = 1; tem0 = x_get_arg (parms, Qheight, 0, 0, number); tem1 = x_get_arg (parms, Qwidth, 0, 0, number); --- 1392,1401 ---- window manager prompting. */ f->width = DEFAULT_COLS; f->height = DEFAULT_ROWS; ! /* Window managers expect that if program-specified ! positions are not (0,0), they're intentional, not defaults. */ ! f->display.x->top_pos = 0; ! f->display.x->left_pos = 0; tem0 = x_get_arg (parms, Qheight, 0, 0, number); tem1 = x_get_arg (parms, Qwidth, 0, 0, number); *************** See the documentation of `x-rebind-key' *** 3324,3411 **** } return Qnil; } ! #else ! DEFUN ("x-rebind-key", Fx_rebind_key, Sx_rebind_key, 3, 3, 0, ! "Rebind KEYCODE, with shift bits SHIFT-MASK, to new string NEWSTRING.\n\ ! KEYCODE and SHIFT-MASK should be numbers representing the X keyboard code\n\ ! and shift mask respectively. NEWSTRING is an arbitrary string of keystrokes.\n\ ! If SHIFT-MASK is nil, then KEYCODE's key will be bound to NEWSTRING for\n\ ! all shift combinations.\n\ ! Shift Lock 1 Shift 2\n\ ! Meta 4 Control 8\n\ ! \n\ ! For values of KEYCODE, see /usr/lib/Xkeymap.txt (remember that the codes\n\ ! in that file are in octal!)\n\ ! \n\ ! NOTE: due to an X bug, this function will not take effect unless one has\n\ ! a `~/.Xkeymap' file. (See the documentation for the `keycomp' program.)\n\ ! This problem will be fixed in X version 11.") ! ! (keycode, shift_mask, newstring) ! register Lisp_Object keycode; ! register Lisp_Object shift_mask; ! register Lisp_Object newstring; ! { ! char *rawstring; ! int keysym, rawshift; ! int i, strsize; ! ! CHECK_NUMBER (keycode, 1); ! if (!NILP (shift_mask)) ! CHECK_NUMBER (shift_mask, 2); ! CHECK_STRING (newstring, 3); ! strsize = XSTRING (newstring)->size; ! rawstring = (char *) xmalloc (strsize); ! bcopy (XSTRING (newstring)->data, rawstring, strsize); ! ! keysym = ((unsigned) (XINT (keycode))) & 255; ! ! if (NILP (shift_mask)) ! { ! for (i = 0; i <= 15; i++) ! XRebindCode (keysym, i<<11, rawstring, strsize); ! } ! else ! { ! rawshift = (((unsigned) (XINT (shift_mask))) & 15) << 11; ! XRebindCode (keysym, rawshift, rawstring, strsize); ! } ! return Qnil; ! } ! ! DEFUN ("x-rebind-keys", Fx_rebind_keys, Sx_rebind_keys, 2, 2, 0, ! "Rebind KEYCODE to list of strings STRINGS.\n\ ! STRINGS should be a list of 16 elements, one for each shift combination.\n\ ! nil as element means don't change.\n\ ! See the documentation of `x-rebind-key' for more information.") ! (keycode, strings) ! register Lisp_Object keycode; ! register Lisp_Object strings; ! { ! register Lisp_Object item; ! register char *rawstring; ! KeySym rawkey, modifier[1]; ! int strsize; ! register unsigned i; ! ! CHECK_NUMBER (keycode, 1); ! CHECK_CONS (strings, 2); ! rawkey = (KeySym) ((unsigned) (XINT (keycode))) & 255; ! for (i = 0; i <= 15; strings = Fcdr (strings), i++) ! { ! item = Fcar (strings); ! if (!NILP (item)) ! { ! CHECK_STRING (item, 2); ! strsize = XSTRING (item)->size; ! rawstring = (char *) xmalloc (strsize); ! bcopy (XSTRING (item)->data, rawstring, strsize); ! XRebindCode (rawkey, i << 11, rawstring, strsize); ! } ! } ! return Qnil; ! } ! #endif /* not HAVE_X11 */ #ifdef HAVE_X11 Visual * --- 3361,3367 ---- } return Qnil; } ! #endif /* HAVE_X11 */ #ifdef HAVE_X11 Visual * *************** arg XRM_STRING is a string of resources *** 3476,3482 **** if (!EQ (xrm_string, Qnil)) { CHECK_STRING (xrm_string, 1); ! xrm_option = (unsigned char *) XSTRING (xrm_string); } else xrm_option = (unsigned char *) 0; --- 3432,3438 ---- if (!EQ (xrm_string, Qnil)) { CHECK_STRING (xrm_string, 1); ! xrm_option = (unsigned char *) XSTRING (xrm_string)->data; } else xrm_option = (unsigned char *) 0; *************** arg XRM_STRING is a string of resources *** 3487,3492 **** --- 3443,3461 ---- x_current_display->db = xrdb; #endif + /* Make a version of Vinvocation_name suitable for use in xrdb + queries - i.e. containing no dots or asterisks. */ + Vxrdb_name = Fcopy_sequence (Vinvocation_name); + { + int i; + int len = XSTRING (Vxrdb_name)->size; + char *data = XSTRING (Vxrdb_name)->data; + + for (i = 0; i < len; i++) + if (data[i] == '.' || data[i] == '*') + data[i] = '-'; + } + x_screen = DefaultScreenOfDisplay (x_current_display); screen_visual = select_visual (x_screen, &n_planes); *************** Changing the value does not affect exist *** 3639,3644 **** --- 3608,3615 ---- unless you set the mouse color."); Vx_pointer_shape = Qnil; + staticpro (&Vxrdb_name); + #if 0 DEFVAR_INT ("x-nontext-pointer-shape", &Vx_nontext_pointer_shape, "The shape of the pointer when not over text."); *************** unless you set the mouse color."); *** 3685,3690 **** --- 3656,3663 ---- defsubr (&Sx_display_visual_class); defsubr (&Sx_display_backing_store); defsubr (&Sx_display_save_under); + defsubr (&Sx_rebind_key); + defsubr (&Sx_rebind_keys); #if 0 defsubr (&Sx_track_pointer); defsubr (&Sx_grab_pointer); *************** unless you set the mouse color."); *** 3702,3709 **** #if 0 defsubr (&Sx_horizontal_line); #endif - defsubr (&Sx_rebind_key); - defsubr (&Sx_rebind_keys); defsubr (&Sx_open_connection); defsubr (&Sx_close_current_connection); defsubr (&Sx_synchronize); --- 3675,3680 ---- diff -cprP emacs-19.8/src/xrdb.c emacs-19.9/src/xrdb.c *** emacs-19.8/src/xrdb.c Thu May 27 03:40:26 1993 --- emacs-19.9/src/xrdb.c Thu May 27 03:45:20 1993 *************** *** 204,215 **** string = (char *) alloca (string_size * sizeof (*string)); } bcopy (s, string, len); ! string[len + 1] = '\0'; if (decode_magic (string, file, return_path)) return 1; } ! if (p) s = p + 1; else return 0; --- 204,215 ---- string = (char *) alloca (string_size * sizeof (*string)); } bcopy (s, string, len); ! string[len] = '\0'; if (decode_magic (string, file, return_path)) return 1; } ! if (p && *p != 0) s = p + 1; else return 0; diff -cprP emacs-19.8/src/xselect.c emacs-19.9/src/xselect.c *** emacs-19.8/src/xselect.c Thu May 27 03:40:26 1993 --- emacs-19.9/src/xselect.c Thu May 27 03:45:21 1993 *************** *** 357,369 **** CHECK_SYMBOL (target_type, 0); handler_fn = Fcdr (Fassq (target_type, Vselection_converter_alist)); ! if (NILP (handler_fn)) ! Fsignal (Qerror, ! Fcons (build_string ("missing selection-conversion function"), ! Fcons (target_type, Fcons (value, Qnil)))); ! value = call3 (handler_fn, ! selection_symbol, target_type, ! XCONS (XCONS (local_value)->cdr)->car); unbind_to (count, Qnil); } --- 357,368 ---- CHECK_SYMBOL (target_type, 0); handler_fn = Fcdr (Fassq (target_type, Vselection_converter_alist)); ! if (!NILP (handler_fn)) ! value = call3 (handler_fn, ! selection_symbol, target_type, ! XCONS (XCONS (local_value)->cdr)->car); ! else ! value = Qnil; unbind_to (count, Qnil); } diff -cprP emacs-19.8/src/xterm.c emacs-19.9/src/xterm.c *** emacs-19.8/src/xterm.c Thu May 27 03:40:29 1993 --- emacs-19.9/src/xterm.c Thu May 27 03:45:22 1993 *************** *** 4493,4499 **** XSizeHints size_hints; Window window = FRAME_X_WINDOW (f); ! size_hints.flags = PResizeInc | PMinSize | PMaxSize; flexlines = f->height; --- 4493,4499 ---- XSizeHints size_hints; Window window = FRAME_X_WINDOW (f); ! size_hints.flags = PResizeInc | PMinSize /* | PMaxSize */; flexlines = f->height; *************** *** 4503,4511 **** size_hints.width = PIXEL_WIDTH (f); size_hints.width_inc = FONT_WIDTH (f->display.x->font); size_hints.height_inc = FONT_HEIGHT (f->display.x->font); size_hints.max_width = x_screen_width - CHAR_TO_PIXEL_WIDTH (f, 0); size_hints.max_height = x_screen_height - CHAR_TO_PIXEL_HEIGHT (f, 0); ! { int base_width, base_height; --- 4503,4512 ---- size_hints.width = PIXEL_WIDTH (f); size_hints.width_inc = FONT_WIDTH (f->display.x->font); size_hints.height_inc = FONT_HEIGHT (f->display.x->font); + #if 0 size_hints.max_width = x_screen_width - CHAR_TO_PIXEL_WIDTH (f, 0); size_hints.max_height = x_screen_height - CHAR_TO_PIXEL_HEIGHT (f, 0); ! #endif { int base_width, base_height; diff -cprP emacs-19.8/src/xterm.h emacs-19.9/src/xterm.h *** emacs-19.8/src/xterm.h Thu May 27 03:40:36 1993 --- emacs-19.9/src/xterm.h Thu May 27 03:45:30 1993 *************** *** 526,535 **** /* Return the row/column (zero-based) of the character cell containing the pixel on FRAME at ROW/COL. */ ! #define PIXEL_TO_CHAR_ROW(frame, row) \ (((row) - (f)->display.x->internal_border_width) \ / FONT_HEIGHT ((f)->display.x->font)) ! #define PIXEL_TO_CHAR_COL(frame, col) \ (((col) - (f)->display.x->internal_border_width) \ / FONT_WIDTH ((f)->display.x->font)) --- 526,535 ---- /* Return the row/column (zero-based) of the character cell containing the pixel on FRAME at ROW/COL. */ ! #define PIXEL_TO_CHAR_ROW(f, row) \ (((row) - (f)->display.x->internal_border_width) \ / FONT_HEIGHT ((f)->display.x->font)) ! #define PIXEL_TO_CHAR_COL(f, col) \ (((col) - (f)->display.x->internal_border_width) \ / FONT_WIDTH ((f)->display.x->font)) diff -cprP emacs-19.8/src/ymakefile emacs-19.9/src/ymakefile *** emacs-19.8/src/ymakefile Thu May 27 03:40:37 1993 --- emacs-19.9/src/ymakefile Thu May 27 03:45:30 1993 *************** *** 228,234 **** -DHAVE_CONFIG_H is needed for some other files to take advantage of the information in `config.h'. */ CFLAGS=-g ! ALL_CFLAGS=${CFLAGS} -Demacs -DHAVE_CONFIG_H $(MYCPPFLAG) -I${srcdir} -I. C_SWITCH_MACHINE C_SWITCH_X_MACHINE C_SWITCH_SYSTEM C_SWITCH_X_SYSTEM C_SWITCH_SITE C_SWITCH_X_SITE .c.o: $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $< --- 228,234 ---- -DHAVE_CONFIG_H is needed for some other files to take advantage of the information in `config.h'. */ CFLAGS=-g ! ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAG) -I${srcdir} -I. C_SWITCH_MACHINE C_SWITCH_X_MACHINE C_SWITCH_SYSTEM C_SWITCH_X_SYSTEM C_SWITCH_SITE C_SWITCH_X_SITE ${CFLAGS} .c.o: $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $< *************** LIBXMENU= -lXMenu *** 272,278 **** /* Otherwise, omit xmenu.o from the list of X object files, and don't worry about the menu library at all. */ ! XOBJ= xterm.o xfns.o xselect.o xrdb.o LIBXMENU= #endif /* ! defined (HAVE_X_MENU) */ --- 272,278 ---- /* Otherwise, omit xmenu.o from the list of X object files, and don't worry about the menu library at all. */ ! XOBJ= xterm.o xfns.o xfaces.o xselect.o xrdb.o LIBXMENU= #endif /* ! defined (HAVE_X_MENU) */ *************** config.h: config.h.in *** 609,621 **** users of alloca in Emacs. Check out ../lib-src/getopt.c. */ alloca.o : alloca.c $(CC) -c $(CPPFLAGS) -Dfree=xfree -Dmalloc=xmalloc \ ! $(ALL_CFLAGS) alloca.c #else #ifndef HAVE_ALLOCA alloca.o : alloca.s config.h /* $(CPP) is cc -E, which may get confused by filenames that do not end in .c. So copy file to a safe name. */ ! cp alloca.s allocatem.c /* remove any ^L, blank lines, and preprocessor comments, since some assemblers barf on them */ $(CPP) allocatem.c | \ --- 609,621 ---- users of alloca in Emacs. Check out ../lib-src/getopt.c. */ alloca.o : alloca.c $(CC) -c $(CPPFLAGS) -Dfree=xfree -Dmalloc=xmalloc \ ! $(ALL_CFLAGS) ${srcdir}/alloca.c #else #ifndef HAVE_ALLOCA alloca.o : alloca.s config.h /* $(CPP) is cc -E, which may get confused by filenames that do not end in .c. So copy file to a safe name. */ ! cp ${srcdir}/alloca.s allocatem.c /* remove any ^L, blank lines, and preprocessor comments, since some assemblers barf on them */ $(CPP) allocatem.c | \ diff -cprP emacs-19.8/vms/ChangeLog emacs-19.9/vms/ChangeLog *** emacs-19.8/vms/ChangeLog Thu May 27 03:41:46 1993 --- emacs-19.9/vms/ChangeLog Thu May 27 03:46:38 1993 *************** *** 1,3 **** --- 1,7 ---- + Thu May 27 02:35:32 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.9 released. + Mon May 24 12:14:41 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * Version 19.8 released.