#!/bin/sh #### Patch script - GNU Emacs - version 19.23 to 19.24 #### revised version of May 26 1994 #### This file contains patches to turn version 19.23 of GNU Emacs into #### 19.24. To apply them, cd to the top of the Emacs source tree, and #### then type 'sh '. #### After you apply the patches, you should run Emacs (an earlier 19 will do) #### and type M-x byte-recompile-directory RET lisp RET #### to recompile the changed Emacs Lisp files. #### Then you can build the new Emacs version. #### We don't include patches for Info files since you can #### regenerate them from the Texinfo files that we do include. #### To update the changed info files, do #### (cd man; makeinfo emacs.texi) ### Patchmaker's checklist: ### - update version numbers in comments and version.el tweak ### - diff -u ls -R listings, and decide on rm's and mv's. ### - apply rm's and mv's, and then do a diff -cprP --exclude=\*.elc ### to generate the body. ### - insert the body just before the line saying `end-of-emacs-patch-kit'. if [ -d lisp ] ; then true else if [ -d emacs-19.23/lisp ] ; then cd emacs-19.23 else (echo "$0: In order to apply this patch, the current directory" echo "must be the top of the Emacs distribution tree.") >&2 exit 1 fi fi patch -p1 << \end-of-emacs-patch-kit diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/ChangeLog emacs-19.24/ChangeLog *** emacs-19.23/ChangeLog Tue May 17 00:48:28 1994 --- emacs-19.24/ChangeLog Mon May 23 03:34:23 1994 *************** *** 1,2 **** --- 1,33 ---- + Mon May 23 03:07:50 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.24 released. + + * configure.in: New config hppa*-hp-hpux9shr*. + + Sun May 22 18:30:22 1994 Morten Welinder (terra@tyr.diku.dk) + + * config.bat: Doc fix. + + Sat May 21 03:17:49 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile.in (mostlyclean, clean, distclean, realclean) + (extraclean): Don't act on man subdir if it doesn't exist. + + Fri May 20 18:03:56 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * configure.in (GCC_TEST_OPTIONS, NON_GCC_TEST_OPTIONS): New vars. + Use them to set up CC. + (m68k-sun-sunos4.1.3): Set them. + + Thu May 19 11:54:43 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile.in (lib-src): Don't depend on src/paths.h. + + Wed May 18 01:35:38 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * build-ins.in (copydests): Get rid of spurious `-'s. + + * configure.in: Define EMACS_CONFIGURATION instead of CONFIGURATION. + Tue May 17 00:41:00 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/GETTING.GNU.SOFTWARE emacs-19.24/GETTING.GNU.SOFTWARE *** emacs-19.23/GETTING.GNU.SOFTWARE Sat May 14 00:28:49 1994 --- emacs-19.24/GETTING.GNU.SOFTWARE Wed May 18 18:33:49 1994 *************** *** 71,76 **** - an enhanced regex (regular expression) library. ! See `/pub/gnu/GNUinfo/MACHINES' for the status of porting Emacs to ! various machines and operating systems. ** C Scheme - a block structured dialect of LISP. --- 71,76 ---- - an enhanced regex (regular expression) library. ! See files `/pub/gnu/GNUinfo/MACHINES*' for the status of porting Emacs ! to various machines and operating systems. ** C Scheme - a block structured dialect of LISP. *************** *** 90,94 **** A full list of available software are in `/pub/gnu/GNUinfo/ORDERS' and ! `/pub/gnu/GNUinfo/DESCRIPTIONS'. * No Warranties --- 90,94 ---- A full list of available software are in `/pub/gnu/GNUinfo/ORDERS' and ! `/pub/gnu/DESCRIPTIONS'. * No Warranties *************** *** 108,112 **** system, called GNU (Gnu's Not Un*x), which will run Un*x user programs. Please note that donations and funds raised by selling ! tapes, cd-roms, and floppy diskettes are the major source of funding for our work. --- 108,112 ---- system, called GNU (Gnu's Not Un*x), which will run Un*x user programs. Please note that donations and funds raised by selling ! tapes, CD-ROMs, and floppy diskettes are the major source of funding for our work. diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/INSTALL emacs-19.24/INSTALL *** emacs-19.23/INSTALL Tue May 3 22:41:30 1994 --- emacs-19.24/INSTALL Sun May 22 15:56:27 1994 *************** *** 65,68 **** --- 65,71 ---- option --with-x-toolkit. + Note: on some systems, it does not work to use the toolkit with shared + libraries. + The `--run-in-place' option sets up default values for the path variables in `./Makefile' so that Emacs will expect to find its data *************** *** 160,165 **** See `./PROBLEMS' for more details on which systems this affects. ! This file is nonexistent in the distribution. You do not need to ! create it if you have nothing to put in it. 6) Refer to the file `./etc/TERMS' for information on fields you may --- 163,168 ---- See `./PROBLEMS' for more details on which systems this affects. ! The `site-*.el' files are nonexistent in the distribution. You do not ! need to create them if you have nothing to put in them. 6) Refer to the file `./etc/TERMS' for information on fields you may *************** *** 460,464 **** Strictly speaking, not all of the executables in `./lib-src' need be copied. ! - The programs `cvtmail', `emacsserver', `env', `fakemail', `hexl', `movemail', `timer', `vcdiff', `wakeup', and `yow' are used by Emacs; they do need to be copied. --- 463,467 ---- Strictly speaking, not all of the executables in `./lib-src' need be copied. ! - The programs `cvtmail', `emacsserver', `fakemail', `hexl', `movemail', `timer', `vcdiff', `wakeup', and `yow' are used by Emacs; they do need to be copied. *************** *** 508,513 **** Installation on MSDOG (a.k.a. MSDOS) ! To install on MSDOG, you need to have the GNU C compiler (also known ! as djgpp), GNU Make, rm, mv, chmod, and sed. Type these commands: config msdos --- 511,517 ---- Installation on MSDOG (a.k.a. MSDOS) ! To install on MSDOG, you need to have the GNU C compiler for MSDOG ! (also known as djgpp), GNU Make, rm, mv, chmod, and sed. Type these ! commands: config msdos *************** *** 514,522 **** make install ! To save disk space, Emacs is built in-place. As the /usr/local/ ! subtree does not exist on most MSDOG systems, the executables are ! placed in /emacs/bin/. ! ! MSDOG is a not a multi-tasking operating system, so Emacs features ! that depend on multitasking will not work. Synchronous subprocesses ! do work. --- 518,527 ---- make install ! To save disk space, Emacs is built with the idea that you will execute ! it from the same place in the file system where you built it. As the ! /usr/local/ subtree does not exist on most MSDOG systems, the ! executables are placed in /emacs/bin/. ! ! MSDOG is a not a multitasking operating system, so Emacs features such ! as asynchronous subprocesses that depend on multitasking will not ! work. Synchronous subprocesses do work. diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/Makefile.in emacs-19.24/Makefile.in *** emacs-19.23/Makefile.in Thu May 12 06:51:14 1994 --- emacs-19.24/Makefile.in Sat May 21 01:56:19 1994 *************** *** 222,226 **** src: lib-src FRC.src ! lib-src: FRC.lib-src src/paths.h .RECURSIVE: ${SUBDIR} --- 222,230 ---- src: lib-src FRC.src ! # This ought to depend on src/paths.h, so that in parallel make ! # src/paths.h will be available for the compilations in lib-src. ! # But that causes trouble in `make install' if a different prefix ! # is specified at that time. ! lib-src: FRC.lib-src .RECURSIVE: ${SUBDIR} *************** *** 383,387 **** (cd lwlib; $(MAKE) $(MFLAGS) mostlyclean) (cd lib-src; $(MAKE) $(MFLAGS) mostlyclean) ! -(cd man; $(MAKE) $(MFLAGS) mostlyclean) ### `clean' --- 387,391 ---- (cd lwlib; $(MAKE) $(MFLAGS) mostlyclean) (cd lib-src; $(MAKE) $(MFLAGS) mostlyclean) ! -(cd man && $(MAKE) $(MFLAGS) mostlyclean) ### `clean' *************** *** 398,402 **** (cd lwlib; $(MAKE) $(MFLAGS) clean) (cd lib-src; $(MAKE) $(MFLAGS) clean) ! -(cd man; $(MAKE) $(MFLAGS) clean) ### `distclean' --- 402,406 ---- (cd lwlib; $(MAKE) $(MFLAGS) clean) (cd lib-src; $(MAKE) $(MFLAGS) clean) ! -(cd man && $(MAKE) $(MFLAGS) clean) ### `distclean' *************** *** 415,419 **** (cd lwlib; $(MAKE) $(MFLAGS) distclean) (cd lib-src; $(MAKE) $(MFLAGS) distclean) ! (cd man; $(MAKE) $(MFLAGS) distclean) ${top_distclean} --- 419,423 ---- (cd lwlib; $(MAKE) $(MFLAGS) distclean) (cd lib-src; $(MAKE) $(MFLAGS) distclean) ! (cd man && $(MAKE) $(MFLAGS) distclean) ${top_distclean} *************** *** 435,439 **** (cd lwlib; $(MAKE) $(MFLAGS) realclean) (cd lib-src; $(MAKE) $(MFLAGS) realclean) ! -(cd man; $(MAKE) $(MFLAGS) realclean) ${top_distclean} --- 439,443 ---- (cd lwlib; $(MAKE) $(MFLAGS) realclean) (cd lib-src; $(MAKE) $(MFLAGS) realclean) ! -(cd man && $(MAKE) $(MFLAGS) realclean) ${top_distclean} diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/PROBLEMS emacs-19.24/PROBLEMS *** emacs-19.23/PROBLEMS Sun May 15 23:20:36 1994 --- emacs-19.24/PROBLEMS Sun May 22 23:34:00 1994 *************** *** 2,5 **** --- 2,66 ---- in compiling, installing and running GNU Emacs. + * Undefined symbols _dlopen, _dlsym and/or _dlclose on a Sun. + + If you see undefined symbols _dlopen, _dlsym, or _dlclose when linking + with -lX11, compile and link against the file mit/util/misc/dlsym.c in + the MIT X11R5 distribution. Alternatively, link temacs using shared + libraries with s/sunos4shr.h. (This doesn't work if you use the X + toolkit.) + + * Error messages `Wrong number of arguments: #, 5' + + This typically results from having the powerkey library loaded. + Powerkey was designed for Emacs 19.22. It is obsolete now because + Emacs 19 now has this feature built in; and powerkey also calls + where-is-internal in an obsolete way. + + So the fix is to arrange not to load powerkey. + + * In Shell mode, you get a ^M at the end of every line. + + This happens to people who use tcsh, because it is trying to be too + smart. It sees that the Shell uses terminal type `unknown' and turns + on the flag to output ^M at the end of each line. You can fix the + problem by adding this to your .cshrc file: + + if ($?EMACS) then + if ($EMACS == "t") then + unset edit + stty -icrnl -onlcr -echo susp ^Z + endif + endif + + * An error message such as `X protocol error: BadMatch (invalid + parameter attributes) on protocol request 93'. + + This comes from having an invalid X resource, such as + emacs*Cursor: black + (which is invalid because it specifies a color name for something + that isn't a color.) + + The fix is to correct your X resources. + + * Undefined symbols when linking on Sunos 4.1 using --with-x-toolkit. + + If you get the undefined symbols _atowc _wcslen, _iswprint, _iswspace, + _iswcntrl, _wcscpy, and _wcsncpy, then you need to add -lXwchar after + -lXaw in the command that links temacs. + + This problem seems to arise only when the international language + extensions to X11R5 are installed. + + * Typing C-c C-c in Shell mode kills your X server. + + This happens on Linux 1.0 thru 1.04, approximately. The workaround is + to define SIGNALS_VIA_CHARACTERS in config.h and recompile Emacs. + Newer Linux versions don't have this problem. + + * src/Makefile and lib-src/Makefile are truncated--most of the file missing. + + This can happen if configure uses GNU sed version 2.03. That version + had a bug. GNU sed version 2.05 works properly. + * Slow startup on X11R6 with X windows. diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/README emacs-19.24/README *** emacs-19.23/README Tue May 17 02:07:33 1994 --- emacs-19.24/README Mon May 23 05:50:36 1994 *************** *** 1,3 **** ! This directory tree holds version 19.23 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. --- 1,3 ---- ! This directory tree holds version 19.24 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. *************** *** 70,73 **** --- 70,75 ---- `man' holds the source code for the Emacs manual. + `msdos' holds configuration files for compiling Emacs under MSDOG. + See the file etc/MSDOS for more information. `cpp' holds a C preprocessor for use instead of the installed one when the installed one fails to distinguish more than 8 characters in a diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/build-ins.in emacs-19.24/build-ins.in *** emacs-19.23/build-ins.in Tue Sep 28 05:41:49 1993 --- emacs-19.24/build-ins.in Wed May 18 18:42:15 1994 *************** *** 97,102 **** ${emacsdir}/* ) if [ ! -d ${emacsdir} ]; then ! -mkdir ${emacsdir} ! -chmod 777 ${emacsdir} fi ;; --- 97,102 ---- ${emacsdir}/* ) if [ ! -d ${emacsdir} ]; then ! mkdir ${emacsdir} ! chmod 777 ${emacsdir} fi ;; *************** *** 103,108 **** ${statedir}/* ) if [ ! -d ${statedir} ]; then ! -mkdir ${statedir} ! -chmod 777 ${statedir} fi ;; --- 103,108 ---- ${statedir}/* ) if [ ! -d ${statedir} ]; then ! mkdir ${statedir} ! chmod 777 ${statedir} fi ;; diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/config.bat emacs-19.24/config.bat *** emacs-19.23/config.bat Sun May 8 16:30:13 1994 --- emacs-19.24/config.bat Sun May 22 15:04:41 1994 *************** *** 30,34 **** rem + sed. rem ! rem You must install in directory c:/emacs or change this script. rem ---------------------------------------------------------------------- if not "%2" == "" goto usage --- 30,36 ---- rem + sed. rem ! rem You must install in directory c:/emacs or change this script, the ! rem files msdos/sed*.inp, and lisp/dos-fns.el. (The latter must be ! rem recompiled.) rem ---------------------------------------------------------------------- if not "%2" == "" goto usage diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/config.sub emacs-19.24/config.sub *** emacs-19.23/config.sub Tue May 17 02:07:29 1994 --- emacs-19.24/config.sub Mon May 23 05:50:32 1994 *************** *** 546,550 **** | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -freebsd* | -riscix* \ ! | -lynxos* | -bosx* | -ns*) ;; -sunos5*) --- 546,550 ---- | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -freebsd* | -riscix* \ ! | -lynxos* | -bosx* | -ns* | -cxux*) ;; -sunos5*) *************** *** 597,601 **** *) # Get rid of the `-' at the beginning of $os. ! os=`echo $1 | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 --- 597,601 ---- *) # Get rid of the `-' at the beginning of $os. ! os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/configure emacs-19.24/configure *** emacs-19.23/configure Tue May 17 01:13:31 1994 --- emacs-19.24/configure Mon May 23 03:11:39 1994 *************** *** 279,283 **** ;; ! ## Should this use the "development configuration"? "run_in_place" ) single_tree= --- 279,283 ---- ;; ! ## Should this use the "development" file organization? "run_in_place" ) single_tree= *************** *** 285,289 **** ;; ! ## Should this use the "single tree" configuration? "single_tree" ) run_in_place= --- 285,289 ---- ;; ! ## Should this use the "single tree" file organization? "single_tree" ) run_in_place= *************** *** 683,686 **** --- 683,689 ---- machine=hp800 opsys=hpux9 ;; + hppa*-hp-hpux9shr* ) + machine=hp800 opsys=hpux9shr + ;; ## HP 9000 series 700 and 800, running HP/UX *************** *** 927,931 **** i386-*-sunos4 ) opsys=sunos4-0 ;; *-sunos4.0* ) opsys=sunos4-0 ;; ! *-sunos4.1.3* ) opsys=sunos4-1-3 ;; *-sunos4shr* ) opsys=sunos4shr ;; *-sunos4* | *-sunos ) opsys=sunos4-1 ;; --- 930,937 ---- i386-*-sunos4 ) opsys=sunos4-0 ;; *-sunos4.0* ) opsys=sunos4-0 ;; ! *-sunos4.1.3* ) opsys=sunos4-1-3 ! NON_GCC_TEST_OPTIONS=-Bstatic ! GCC_TEST_OPTIONS=-static ! ;; *-sunos4shr* ) opsys=sunos4shr ;; *-sunos4* | *-sunos ) opsys=sunos4-1 ;; *************** *** 1202,1205 **** --- 1208,1221 ---- fi + if [ x$GCC = x1 ] && [ "x$GCC_TEST_OPTIONS" != x ] + then + CC="$CC $GCC_TEST_OPTIONS" + fi + + if [ x$GCC = x ] && [ "x$NON_GCC_TEST_OPTIONS" != x ] + then + CC="$CC $NON_GCC_TEST_OPTIONS" + fi + #### Some other nice autoconf tests. If you add a test here which #### should make an entry in src/config.h, don't forget to add an *************** *** 2815,2824 **** { test -n "$verbose" && \ ! echo " defining" CONFIGURATION to be ""\"${configuration}\""" ! echo "#define" CONFIGURATION ""\"${configuration}\""" >> confdefs.h ! DEFS="$DEFS -DCONFIGURATION="\"${configuration}\""" ! ac_sed_defs="${ac_sed_defs}\${ac_dA}CONFIGURATION\${ac_dB}CONFIGURATION\${ac_dC}"\"${configuration}\""\${ac_dD} ! \${ac_uA}CONFIGURATION\${ac_uB}CONFIGURATION\${ac_uC}"\"${configuration}\""\${ac_uD} ! \${ac_eA}CONFIGURATION\${ac_eB}CONFIGURATION\${ac_eC}"\"${configuration}\""\${ac_eD} " } --- 2831,2840 ---- { test -n "$verbose" && \ ! echo " defining" EMACS_CONFIGURATION to be ""\"${configuration}\""" ! echo "#define" EMACS_CONFIGURATION ""\"${configuration}\""" >> confdefs.h ! DEFS="$DEFS -DEMACS_CONFIGURATION="\"${configuration}\""" ! ac_sed_defs="${ac_sed_defs}\${ac_dA}EMACS_CONFIGURATION\${ac_dB}EMACS_CONFIGURATION\${ac_dC}"\"${configuration}\""\${ac_dD} ! \${ac_uA}EMACS_CONFIGURATION\${ac_uB}EMACS_CONFIGURATION\${ac_uC}"\"${configuration}\""\${ac_uD} ! \${ac_eA}EMACS_CONFIGURATION\${ac_eB}EMACS_CONFIGURATION\${ac_eC}"\"${configuration}\""\${ac_eD} " } diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/configure.in emacs-19.24/configure.in *** emacs-19.23/configure.in Tue May 17 00:49:30 1994 --- emacs-19.24/configure.in Mon May 23 03:07:49 1994 *************** *** 287,291 **** ;; ! ## Should this use the "development configuration"? "run_in_place" ) single_tree= --- 287,291 ---- ;; ! ## Should this use the "development" file organization? "run_in_place" ) single_tree= *************** *** 293,297 **** ;; ! ## Should this use the "single tree" configuration? "single_tree" ) run_in_place= --- 293,297 ---- ;; ! ## Should this use the "single tree" file organization? "single_tree" ) run_in_place= *************** *** 691,694 **** --- 691,697 ---- machine=hp800 opsys=hpux9 ;; + hppa*-hp-hpux9shr* ) + machine=hp800 opsys=hpux9shr + ;; ## HP 9000 series 700 and 800, running HP/UX *************** *** 935,939 **** i386-*-sunos4 ) opsys=sunos4-0 ;; *-sunos4.0* ) opsys=sunos4-0 ;; ! *-sunos4.1.3* ) opsys=sunos4-1-3 ;; *-sunos4shr* ) opsys=sunos4shr ;; *-sunos4* | *-sunos ) opsys=sunos4-1 ;; --- 938,945 ---- i386-*-sunos4 ) opsys=sunos4-0 ;; *-sunos4.0* ) opsys=sunos4-0 ;; ! *-sunos4.1.3* ) opsys=sunos4-1-3 ! NON_GCC_TEST_OPTIONS=-Bstatic ! GCC_TEST_OPTIONS=-static ! ;; *-sunos4shr* ) opsys=sunos4shr ;; *-sunos4* | *-sunos ) opsys=sunos4-1 ;; *************** *** 1126,1129 **** --- 1132,1145 ---- fi + if [ x$GCC = x1 ] && [ "x$GCC_TEST_OPTIONS" != x ] + then + CC="$CC $GCC_TEST_OPTIONS" + fi + + if [ x$GCC = x ] && [ "x$NON_GCC_TEST_OPTIONS" != x ] + then + CC="$CC $NON_GCC_TEST_OPTIONS" + fi + #### Some other nice autoconf tests. If you add a test here which #### should make an entry in src/config.h, don't forget to add an *************** *** 1511,1515 **** AC_SUBST(opsysfile) ! AC_DEFINE_UNQUOTED(CONFIGURATION, "\"${configuration}\"") AC_DEFINE_UNQUOTED(config_machfile, "\"${machfile}\"") AC_DEFINE_UNQUOTED(config_opsysfile, "\"${opsysfile}\"") --- 1527,1531 ---- AC_SUBST(opsysfile) ! AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "\"${configuration}\"") AC_DEFINE_UNQUOTED(config_machfile, "\"${machfile}\"") AC_DEFINE_UNQUOTED(config_opsysfile, "\"${opsysfile}\"") diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/etc/ChangeLog emacs-19.24/etc/ChangeLog *** emacs-19.23/etc/ChangeLog Thu Apr 21 00:53:30 1994 --- emacs-19.24/etc/ChangeLog Mon May 23 03:37:44 1994 *************** *** 1,2 **** --- 1,10 ---- + Mon May 23 03:32:01 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.24 released. + + Mon May 16 03:25:22 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.23 released. + Thu Apr 21 00:53:20 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/etc/MACHINES emacs-19.24/etc/MACHINES *** emacs-19.23/etc/MACHINES Fri May 6 04:35:51 1994 --- emacs-19.24/etc/MACHINES Mon May 23 03:10:56 1994 *************** *** 354,358 **** 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 --- 354,359 ---- 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 ! or ...hpux9shr) These files support HP's Precision Architecture machines *************** *** 361,364 **** --- 362,372 ---- series machines. (Emacs may not actually care which one you use.) + Use hppa1.1-hp-hpux9shr to use shared libraries on HPUX version 9. + You may need to create the X libraries libXaw.a and libXmu.a from + the MIT X distribute, and you may need to edit src/Makefile's + definition of LIBXT to look like this: + + LIBXT= $(LIBW) -lXmu -lXt $(LIBXTR6) -lXext + As of version 19.16, Emacs is reported to build (using GCC) and run on HP 9000/700 series machines running HP/UX versions 8.07 and 9.01. *************** *** 484,487 **** --- 492,508 ---- Use i386-*-sco3.2v4 for SCO 3.2v4; Emacs runs as of version 19.6. + On Linux, Emacs 19.23 is said to work properly with libc version 4.5.21, + but not with 4.5.19. + + On Linux, configure may fail to put these definitions in config.h: + + #define HAVE_GETTIMEOFDAY + #define HAVE_MKDIR + #define HAVE_RMDIR + #define HAVE_XSCREENNUMBEROFSCREEN + + To work around the problem, add those definitions by hand. + It is possible that this problem happens only with X11R6. + Use i386-*-bsd386 for BSDI BSD/386; Emacs runs as of version 19.23. Make on that system is broken; use GNU make instead. *************** *** 605,609 **** Mips (mips-mips-riscos, mips-mips-riscos4.0, or mips-mips-bsd) ! Changes merged in 18.39. Some fixes in 18.56. Use mips-mips-riscos4.0 for RISCOS version 4. --- 626,637 ---- Mips (mips-mips-riscos, mips-mips-riscos4.0, or mips-mips-bsd) ! The C compiler on Riscos 4.51 dumps core trying to optimize ! parts of Emacs. Try without optimization or try GCC. ! ! Meanwhile, the linker on that system returns success even if ! there are undefined symbols; as a result, configure gets the ! wrong answers to various questions. No work-around is known ! except to edit src/config.h by hand to indicate which functions ! don't exist. Use mips-mips-riscos4.0 for RISCOS version 4. *************** *** 866,870 **** Tektronix 4300 (m68k-tektronix-bsd) ! Emacs 19.21 works. Titan P2 or P3 (titan-titan-sysv) --- 894,899 ---- Tektronix 4300 (m68k-tektronix-bsd) ! Emacs 19.23 works. However, for the toolkit version, you need to ! fix sys/time.h so that it won't cause errors if included twice. Titan P2 or P3 (titan-titan-sysv) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/etc/MSDOS emacs-19.24/etc/MSDOS *** emacs-19.23/etc/MSDOS Sat Jan 8 03:01:00 1994 --- emacs-19.24/etc/MSDOS Thu May 19 11:48:36 1994 *************** *** 5,12 **** a VGA monitor. ! * Ctrl-Break takes the place of C-g. As of djgpp 1.11.maint1 ! DON'T USE THIS unless you are running under DPMI (i.e., using ! Windows, Qemm, ...) This will probably be fixed in the next ! release of djgpp. * Character codes 0200-0237 are self-inserting. --- 5,15 ---- a VGA monitor. ! * Ctrl-Break takes the place of C-g. Using compilers prior to ! djgpp 1.11 maint 5, you should not use Ctrl-Break unless you ! run under DPMI (i.e., you are using Windows, Qdpmi, ...) ! ! Actually, if Emacs is in an endless loop, you might as well go ! ahead and try. Usually it works, but sometimes Emacs crashes ! with a stack trace. This is not an Emacs bug. * Character codes 0200-0237 are self-inserting. *************** *** 13,17 **** * The keyboard support is made as X-like as possible. This means ! that events like M-S-f1 will be generated (byte Shift + Alt + f1). * Mouse support is partially implemented. --- 16,20 ---- * The keyboard support is made as X-like as possible. This means ! that events like M-S-f1 will be generated (by Shift + Alt + f1). * Mouse support is partially implemented. *************** *** 37,44 **** commands `find-file-binary' and `find-file-text'. ! * A new variable `binary-process' control whether temporary files are ! opened as binary or as text files. nil means text, and t means ! binary. The difference is translation of CR+LF to LF and C-z ! handling. * Environment variables "HOME", "EMACSPATH", "TERM", "SHELL", --- 40,47 ---- commands `find-file-binary' and `find-file-text'. ! * New variables `binary-process-input' and `binary-process-output' ! control whether temporary files are opened as binary or as text ! files. nil means text, and t means binary. The difference is ! translation of CR+LF to LF and C-z handling. * Environment variables "HOME", "EMACSPATH", "TERM", "SHELL", diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/etc/NEWS emacs-19.24/etc/NEWS *** emacs-19.23/etc/NEWS Sun May 15 15:04:19 1994 --- emacs-19.24/etc/NEWS Mon May 23 19:25:45 1994 *************** *** 6,11 **** --- 6,44 ---- For older news, see the file ONEWS. + Changes in Emacs 19.24 + + Here is a list of new Lisp packages introduced since 19.22. + + derived.el Define new major modes based on old ones. + dired-x.el Extra Dired features. + double.el New mode for conveniently inputting non-beyond chars. + easymenu.el Create menus easily. + ediff.el Snazzy diff interface. + foldout.el A kind of outline mode designed for editing programs. + gnus-uu.el UUdecode in GNUS buffers. + ielm.el Interactively evaluate Lisp. + iso-cvt.el Conversion of beyond-ASCII characters between + various different representations. + jka-compr.el Automatic compression/decompression. + mldrag.el Drag modeline to change heights of windows. + mail-hist.el Provides history for headers of outgoing mail. + rsz-mini.el Automatically resizing minibuffers. + This is a replacement for Lisp Interaction Mode. + s-region.el Set region by holding shift. + skeleton.el Templates for statement insertion. + soundex.el Classifying words by how they sound. + tempo.el Template insertion with hotspots. + User Editing Changes in 19.23. + * Emacs 19.23 uses Ispell version 3. + + Previous Emacs 19 versions used Ispell version 4. That version had + improvements in storing the dictionary compactly, but these are not + very important nowadays. Meanwhile, in parallel to the work on Ispell + 4, many useful features were added to Ispell 3. Until a few months + ago, the terms on Ispell 3 did not let us use it; but they have now + been changed, so now we are using it. We are dropping Ispell 4. + * Emacs 19.23 can run on MS-DOG. See the file MSDOS in the same directory as this file. *************** *** 83,92 **** * C-x r d now runs the command delete-rectangle. ! * The new command imenu-choose-buffer-index shows you a menu of ! interesting places in the current buffer and lets you select one; then ! it moves point there. The definition of interesting places depends on ! the major mode, but typically this includes function definitions and ! such. Normally, imenu displays the menu in a buffer; but if you bind ! it to a mouse event, it shows a mouse popup menu. * You can make certain chosen buffers, that normally appear in a --- 116,125 ---- * C-x r d now runs the command delete-rectangle. ! * The new command imenu shows you a menu of interesting places in the ! current buffer and lets you select one; then it moves point there. ! The definition of interesting places depends on the major mode, but ! typically this includes function definitions and such. Normally, ! imenu displays the menu in a buffer; but if you bind it to a mouse ! event, it shows a mouse popup menu. * You can make certain chosen buffers, that normally appear in a diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/etc/ORDERS emacs-19.24/etc/ORDERS *** emacs-19.23/etc/ORDERS Fri Mar 11 00:58:52 1994 --- emacs-19.24/etc/ORDERS Sun May 22 19:31:54 1994 *************** *** 1,3 **** ! The actual order form follows the descriptions of media contents Please send suggestions for improvements to gnu@prep.ai.mit.edu or the postal --- 1,3 ---- ! The actual order form follows the descriptions of media contents. Please send suggestions for improvements to gnu@prep.ai.mit.edu or the postal *************** *** 4,8 **** address at the end of the order form. Thank You. ! Most of this file is excerpted from the January 1994 GNU's Bulletin. --------------------------------------------------------------------- --- 4,8 ---- address at the end of the order form. Thank You. ! Most of this file is excerpted from the June 1994 GNU's Bulletin. --------------------------------------------------------------------- *************** *** 9,14 **** ! FSF Order Form with Descriptions January, 1994 Free Software Foundation, Inc. Telephone: +1-617-876-3296 675 Massachusetts Avenue FAX: +1-617-492-9057 --- 9,16 ---- ! FSF Order Form with Descriptions June, 1994 + + Free Software Foundation, Inc. Telephone: +1-617-876-3296 675 Massachusetts Avenue FAX: +1-617-492-9057 *************** *** 18,44 **** ! Contents ! -------- Donations Translate Into Free Software Cygnus Matches Donations! GNU Documentation ! GNU Software Available Now ! Contents of the Emacs Tape ! Contents of the Languages Tape ! Contents of the Utilities Tape ! Contents of the Scheme Tape ! Contents of the X11 Tapes ! Berkeley Networking 2 Tape VMS Emacs and VMS Compiler Tapes ! Source Code CD-ROM ! Compiler Tools Binaries CD-ROM Tape & CD-ROM Subscription Service The Deluxe Distribution - MS-DOS Distribution - Contents of the Demacs diskettes - Contents of the DJGPP diskettes - Contents of the Selected Utilities diskettes - Contents of the Windows diskette FSF T-shirt Free Software Foundation Order Form --- 20,59 ---- ! There are some sections (e.g. ``Forthcoming GNUs'') which are not in this ! Order Form file. If you wish to see them, ask gnu@prep.ai.mit.edu for the ! complete June 1994 GNU's Bulletin. ! + Table of Contents + ----------------- + Donations Translate Into Free Software Cygnus Matches Donations! + Free Software Redistributors Donate + Help from Free Software Companies + Major Changes in GNU Software and Documentation GNU Documentation ! GNU Software ! Program/Package Cross Reference ! Tapes ! Languages Tape ! Utilities Tape ! Emacs Tape ! Scheme Tape ! X11 Tapes ! Berkeley 4.4BSD--Lite Tape VMS Emacs and VMS Compiler Tapes ! CD-ROMs ! Pricing of the GNU CD-ROMs ! May 1994 Source Code CD-ROM ! November 1993 Source Code CD-ROM ! Compiler Tools Binaries CD-ROM ! MS-DOS Diskettes ! DJGPP Diskettes ! Emacs Diskettes ! Selected Utilities Diskettes ! Windows Diskette Tape & CD-ROM Subscription Service The Deluxe Distribution FSF T-shirt Free Software Foundation Order Form *************** *** 50,64 **** If you appreciate Emacs, GNU CC, Ghostscript, and other free software, you ! may wish to help us make sure there is more in the future-remember, *donations translate into more free software!* Your donation to us is tax-deductible in the United States. We gladly accept ! *all* currencies, although the U.S. dollar is the most convenient. If your employer has a matching gifts program for charitable donations, ! please arrange to have your donation matched by your employer (or in some ! cases by Cygnus Support, see "Cygnus Matched Donations!"). If you do not know, please ask your personnel department. Also try and get the FSF listed ! on the any list of organizations for the matching gifts program. $500 $250 $100 $50 other $________ --- 65,79 ---- If you appreciate Emacs, GNU CC, Ghostscript, and other free software, you ! may wish to help us make sure there is more in the future--remember, *donations translate into more free software!* Your donation to us is tax-deductible in the United States. We gladly accept ! *any* currency, although the U.S. dollar is the most convenient. If your employer has a matching gifts program for charitable donations, ! please arrange to have your donation matched by your employer (or, in some ! cases, by Cygnus Support (see ``Cygnus Matches Donations!''). If you do not know, please ask your personnel department. Also try and get the FSF listed ! on the list of organizations for your company's matching gifts program. $500 $250 $100 $50 other $________ *************** *** 74,87 **** USA ! You can also charge a donation to either Visa, Mastercard, JCB, Diner's Club, ! or Carte Blanche. Charges may also be emailed to `gnu@prep.ai.mit.edu' or ! faxed to +1-617-492-9057; in Japan fax to: 0031-13-2473 (KDD) or ! 0066-3382-0158 (IDC) ! Card type: __________________ Expiration Date: _____________ ! Account Number: _____________________________________________ ! Your Signature: _____________________________________________ --- 89,102 ---- USA ! You can charge a donation to any of Visa, Mastercard, JCB, Diner's Club, or ! Carte Blanche. Charges may also be faxed to +1-617-492-9057; in Japan fax ! to: 0031-13-2473 (KDD) or 0066-3382-0158 (IDC). ! ! Card type: __________________ Expiration Date: _____________ ! Account Number: _____________________________________________ ! Your Signature: _____________________________________________ *************** *** 100,149 **** For more information, please contact Cygnus at `info@cygnus.com.' GNU Documentation ***************** ! GNU is dedicated to having quality, easy-to-use on-line and printed documentation. GNU manuals are intended to explain the underlying concepts, describe how to use all the features of each program, and give examples of command use. GNU manuals are distributed as Texinfo source files, which ! yield both typeset hardcopy and on-line hypertext-like display via the ! menu-driven Info system. These manuals, source for which is provided with ! our software, are also available in hardcopy; see the "Free Software ! Foundation Order Form." ! Several GNU manuals are bound as soft cover books with "lay-flat" bindings. This allows you to open them so they lie flat on a table without creasing the binding. Each book has an inner cloth spine and an outer cardboard cover ! that will not break or crease as an ordinary paperback will. The other GNU ! manuals are also bound so they lie flat when opened, using other ! technologies. See the "Free Software Foundation Order Form" for a list of ! each. ! Edition numbers of the manual and version number of the program listed after ! each manual's names were current at the time this Bulletin was published. The `Emacs Manual' (9th Edition for Version 19) describes editing with GNU ! Emacs. It also explains advanced features, such as outline mode and regular expression search, how to use special modes for programming in languages like C++ and TeX, how to use the `tags' utility, how to compile and correct code, ! and how to make your own keybindings and other elementary customizations. ! The `GNU Emacs Lisp Reference Manual' (Edition 2.1 for Version 19) covers ! this programming language in depth, including data types, control structures, ! functions, macros, syntax tables, searching and matching, modes, windows, ! keymaps, markers, byte compilation, and the operating system interface. ! The `Texinfo Manual' (Edition 2.19 for Version 3) explains the markup ! language used to generate both the online Info documentation and typeset ! hardcopies. It tells you how to make tables, lists, chapters, nodes, ! indexes, cross references, how to use Texinfo mode in GNU Emacs, and how to ! catch mistakes. The `GAWK Manual' (Edition 0.16 for Version 2.16) tells how to use the GNU ! implementation of `awk'. It is written for someone who has never used `awk' ! and describes all the features of this powerful string and record ! manipulation language. The `Make Manual' (Edition 0.43 for Version 3.68) describes GNU `make', a --- 115,362 ---- For more information, please contact Cygnus at `info@cygnus.com.' + Cygnus Support + 1937 Landings Drive + Mountain View, CA 94043 + USA + + Telephone: 415-903-1400 + +1-800-Cygnus1 + Fax: 415-903-0122 + Electronic-Mail: `info@cygnus.com' + FTP: `ftp.cygnus.com' + WWW: `http://www.cygnus.com/' + + + + Free Software Redistributors Donate + *********************************** + + by Richard Stallman + + Austin Code Works, a redistributor of free software, has agreed to support + free software development by giving the FSF 20% of the selling price for the + GNU software packages they produce and sell. + + The Sun Users Group Deutschland has agreed to add a donation to the FSF to + the price of their next CD-ROM of GNU software. Potential purchasers will + know precisely how much is for the FSF and how much is for SUGD. + + In the long run, the success of free software depends on how much new free + software people develop. Free software distribution offers an opportunity to + raise funds for such development in an ethical way. These two redistributors + have made use of the opportunity. Many others let it go to waste. + + You can help promote free software development by convincing for-a-fee + redistributors to contribute--either by doing development themselves, or by + donating to development organizations (the FSF and others). + + The way to convince distributors to contribute is to demand and expect this + of them. This means choosing among distributors partly by how much they give + to free software development. Then you can show distributors they must + compete to be the one who gives the most. + + To make this work, you must insist on numbers that you can compare, such as, + "We will give ten dollars to the Foobar project for each disk sold." A vague + commitment, such as "A portion of the profits are donated", doesn't give you + a basis for comparison. Even a precise fraction "of the profits from this + disk" is not very meaningful, since creative accounting and unrelated + business decisions can greatly alter what fraction of the sales price counts + as profit. + + Also, press developers for firm information about what kind of development + they do or support. Some kinds make much more long-term difference than + others. For example, maintaining a separate version of a GNU program + contributes very little; maintaining a program on behalf of the GNU project + contributes much. Easy new ports contribute little, since someone else would + surely do them; difficult ports such as adding a new CPU to the GNU compiler + contribute more; major new features and programs contribute the most. + + By establishing the idea that supporting further development is "the proper + thing to do" when distributing free software for a fee, we can assure a + steady flow of resources for making more free software. + + + + Help from Free Software Companies + ********************************* + + When choosing a free software business, ask those you are considering how + much they do to assist free software development, e.g., by contributing money + to free software development or by writing free software improvements + themselves for general use. By basing your decision partially on this + factor, you can help encourage those who profit from free software to + contribute to its growth. + + These free software support companies regularly donate a part of their income + to the Free Software Foundation to support the development of new GNU + programs. Listing them here is our way of thanking them. Also see + ``Cygnus Matches Donations!''. + + Contributed Software GbR + Graefestr. 76 + D-10967 Berlin + Germany + + Telephone: (+49-30) 694-69-07 + Fax: (+49-30) 694-68-09 + Electronic-Mail: `info@contrib.de' + BBS & no-charge free software archive: + Dialins: (+49-30) 693-40-51 (eight USR DS's) + (+49-30) 694-60-55 (five ZyXELs) + Telnet: `uropax.contrib.de' [192.109.39.2] + FTP: `ftp.contrib.de' + WWW: `http://www.contrib.de/' + + + Hundred Acre Consulting + 5301 Longley Lane, Suite D-144 + Reno, NV 89511 + USA + + Telephone: 702-829-9700 + +1-800-245-2885 + Fax: 702-829-9926 + Electronic-Mail: `info@pooh.com' + FTP: `ftp.pooh.com' + WWW: `http://www.pooh.com/' + Gopher: `gopher.pooh.com' + + + + Major Changes in GNU Software and Documentation + *********************************************** + + We don't list version number changes in this section, just major changes + since January 1994. + + * FSF Now Distributing X11R6, as well as X11R5 + + FSF updated the ``X11 Tapes'' and the ``May 1994 Source Code CD-ROM'' to + the just-released X11R6. This is the first major update since X11R5 was + released in September, 1991. We will distribute X11R5 on tape until + X11R6 is stable, and on the ``November 1993 Source Code CD-ROM'', + while supplies last. + + * 4.4BSD-Lite (Also see ``4.4BSD-Lite Tape''.) + + The FSF has begun distributing 4.4BSD-Lite and dropped the old Berkeley + Networking 2 tape. The "Lite" refers to the omittance of some + proprietary files that still remain in the full 4.4BSD distribution. + However, 4.4BSD-Lite is considerably more complete than the previous + Networking 2 release. + + * Common Lisp Freed! + + GNU Common Lisp (GCL) has been added. Previously, GCL had distribution + terms under which each user had to have a signed paper contract on file. + However, the authors recently decided to switch to the GPL. See ``GNU + Software'', and ``Emacs Tape'', for more information. + + * Manual Updated since Last Bulletin + + The GNU Emacs Lisp Reference Manual has been updated. The new edition + includes bug fixes and additional information. See ``GNU Documentation''. + + * New Program on the Languages Tape + + Octave has been added. See ``GNU Software'' and ``Languages Tape'', + for more information. + + * New Programs on the Utilities Tape + `ed' has been added. `elvis' has been replaced by `nvi'. See ``GNU + Software'' and ``Utilities Tape'', for more information. + * New Programs on the Source Code CD-ROM + + This CD-ROM has all the new programs and changes on the tapes. X11R6 has + also replaced X11R5. See ``Source Code CD-ROM'', for details. + + * Experimental Tape Takes a Recess + + We are not currently distributing the Experimental Tape because most of + the programs that were on it are now stable. GCC, GAS, Binutils, libg++, + and the C Library are now on the ``Languages Tape'', replacing prior + releases. Oleo & GNU Graphics are now on the ``Utilities Tape''. + + * Compiler Tools Binaries CD-ROM + + We now have a CD-ROM that contains executables for the GNU compiler tools + for some systems that don't normally come with a compiler. This allows + users of those systems to compile GNU and other free software without + having to buy a proprietary compiler. See ``Compiler Tools Binaries + CD-ROM'', for more details, including which platforms are supported. + + We hope to include more systems with each update of this CD-ROM. If you + can help build binaries for new systems, or have a system to suggest, + please contact us at either address on the front cover. + + * Source CD-ROM Subscriptions + + We are now offering a subscription service for the Source Code CD-ROM in + addition to our tape subscription service. For the price of 3 CD-ROMs + (plus any shipping costs) you get the next 4 that we make. Presently we + make two updates a year, but we may go to more frequent updates. See + ``Tape & CD-ROM Subscription Service''. + + * FSF Accepts Orders and Donations via Fax + + You can now send orders and donations to FSF by fax. Please fax in a + completed order form, including credit card information, since orders + must be prepaid. We do *not* accept purchase orders. The number is + +1-617-492-9057 in the U.S. and everywhere else except Japan. In Japan, + the fax numbers are toll-free: 0031-13-2473 (KDD) and + 0066-3382-0158 (IDC). + + * FSF T-shirts Improved! + + We have added a copy of the GNU General Public License to the back of our + T-shirt, which used to be blank. See ``FSF T-shirt''. + + + GNU Documentation ***************** ! GNU is dedicated to having quality, easy-to-use online and printed documentation. GNU manuals are intended to explain the underlying concepts, describe how to use all the features of each program, and give examples of command use. GNU manuals are distributed as Texinfo source files, which ! yield both typeset hardcopy via the TeX document formatting system, and online ! hypertext-like display via the menu-driven Info system. Source for these ! manuals comes with our software, and they are available in hardcopy; see the ! Free Software Foundation Order Form, in the centerfold. ! Most GNU manuals are bound as soft cover books with "lay-flat" bindings. This allows you to open them so they lie flat on a table without creasing the binding. Each book has an inner cloth spine and an outer cardboard cover ! that will not break or crease as an ordinary paperback will. Currently, the ! `Emacs', `GDB', `Emacs Lisp Reference', `GAWK', `Make', `Flex', `Bison', and ! `Texinfo' manuals have this binding. The other GNU manuals are also bound so ! they lie flat when opened, using a GBC binding. All of our manuals are 7in ! by 9.25in except the `Calc' manual, which is 8.5in by 11in. ! The edition number of the manual and version number of the program listed ! after each manual's name were current at the time this Bulletin was published. The `Emacs Manual' (9th Edition for Version 19) describes editing with GNU ! Emacs. It explains advanced features, including outline mode and regular expression search, how to use special modes for programming in languages like C++ and TeX, how to use the `tags' utility, how to compile and correct code, ! how to make your own keybindings, and other elementary customizations. ! `Debugging with GDB' (Edition 4.09 for Version 4.9) tells how to use the GNU ! Debugger, run your program under debugger control, examine and alter data, ! modify a program's flow of control, and use GDB through GNU Emacs. ! The `GNU Emacs Lisp Reference Manual' (Edition 2.3 for Version 19.23) covers ! this programming language in depth, including data types, control structures, ! functions, macros, syntax tables, searching/matching, modes, windows, ! keymaps, byte compilation, and the operating system interface. The `GAWK Manual' (Edition 0.16 for Version 2.16) tells how to use the GNU ! implementation of `awk'. It is written for those who have never used `awk' ! and describes the features of this powerful string and record manipulation ! language. The `Make Manual' (Edition 0.43 for Version 3.68) describes GNU `make', a *************** *** 153,159 **** users and a section about automatically generated dependencies. ! `Debugging with GDB' (Edition 4.09 for Version 4.9) tells how to use the GNU ! Debugger, run your program under debugger control, examine and alter data, ! modify the flow of control within a program, and use GDB through GNU Emacs. The `Bison Manual' (December 1993 Edition for Version 1.23) teaches you how --- 366,373 ---- users and a section about automatically generated dependencies. ! The `Flex Manual' (Edition 1.03 for Version 2.3.7) tells you how to write a ! lexical scanner definition for the `flex' program to create a C++ or C-coded ! scanner that will recognize the patterns described. You need no prior ! knowledge of scanner generators. The `Bison Manual' (December 1993 Edition for Version 1.23) teaches you how *************** *** 161,171 **** C-coded parsers. You need no prior knowledge of parser generators. ! The `Flex Manual' (Edition 1.03 for Version 2.3.7) tells you how to write a ! lexical scanner definition for the `flex' program to create a C ++ or C-coded ! scanner that will recognize the patterns described. You need no prior ! knowledge of scanner generators. ! `Using and Porting GNU CC' (June 1993 Edition for Version 2.4) explains how ! to run, install and port the GNU C compiler. The `Termcap Manual' (2nd Edition for Version 1.2), often described as "twice --- 375,389 ---- C-coded parsers. You need no prior knowledge of parser generators. ! `Using and Porting GNU CC' (October 1993 Edition for Version 2.5) explains ! how to run, install, and port the GNU C Compiler to new systems. It ! describes new features and incompatibilities of the compiler, but people not ! familiar with C will also need a good reference on the C programming ! language. This manual also covers G++. ! The `Texinfo Manual' (Edition 2.19 for Version 3) explains the markup ! language used to generate both the online Info documentation and typeset ! hardcopies. It tells you how to make tables, lists, chapters, nodes, ! indexes, cross references, how to use Texinfo mode in GNU Emacs, and how to ! catch mistakes. This second edition describes over 50 new commands. The `Termcap Manual' (2nd Edition for Version 1.2), often described as "twice *************** *** 175,248 **** programmers. The `Emacs Calc Manual' (Edition 2.02 for Version 2.02) includes both a tutorial and a reference manual for Calc. It describes how to do ordinary ! arithmetic, how to use Calc for algebra, calculus and other forms of mathematics, and how to extend Calc. - The `C Library Reference Manual' (June 93 Edition for Version 1.07) describes - most of the facilities of the GNU C library, including both what Unix calls - "library functions" and "system calls." We are doing limited copier runs of - this manual until it becomes more stable. It is new, and needs corrections - and improvements. Please send them to `bug-glibc-manual@prep.ai.mit.edu'. - - - - GNU Software Available Now - ************************** - - We offer: - - * Source Code CD-ROM (see "Source Code CD-ROM") - - * Compiler Tools Binaries CD-ROM (see "Compiler Tools Binaries CD-ROM") - - * MS-DOS Diskettes with some GNU software (see "MS-DOS Distribution") - - * VMS tapes (which include sources and executables) for GNU Emacs and the - GNU C compiler (see "VMS Emacs and VMS Compiler Tapes") - - We also offer Unix software source distributions tapes in `tar' format on the - following media: - * 4mm DAT cartridges ! * 8mm Exabyte cartridges ! * Sun QIC-24 cartridges (readable on some other systems) ! * Hewlett-Packard 16-track cartridges ! * IBM RS/6000 QIC-150 cartridges (readable on some other systems) (the ! RS/6000 Emacs tape has an Emacs binary as well) ! * 1600bpi 9-track reel tape ! The contents of the reel and various cartridge tapes for Unix systems are the ! same (except for the RS/6000 Emacs tape, which also has executables for ! Emacs); only the media are different (see the "Free Software Foundation Order ! Form"). Source code for the manuals is included in Texinfo format. We ! welcome all bug reports sent to the appropriate electronic mailing list (ask ! `gnu@prep.ai.mit.edu' for a list). ! Some of the files on the tapes may be compressed with `gzip' to make them ! fit. Refer to the top-level `README' file at the beginning of each tape for ! instructions on uncompressing them. `uncompress' and `unpack' *do not work*! ! Version numbers listed after program names, in the articles describing the ! contents of each media, were current at the time this Bulletin was published. ! When you order a distribution tape or diskette, some of the programs might ! be newer, and therefore the version number higher. Key to cross reference: BinCD Binaries CD-ROM - DemcsD - Demacs Diskettes - DjgppD Djgpp Diskettes EmcsT Emacs Tape --- 393,445 ---- programmers. + The `C Library Reference Manual' (June 1993 Edition for Version 1.07) + describes most of the facilities of the GNU C library, including both what + Unix calls "library functions" and "system calls." We are doing limited + copier runs of this manual until it becomes more stable. It is new, and + needs corrections and improvements. Please send them to + `bug-glibc-manual@prep.ai.mit.edu'. + The `Emacs Calc Manual' (Edition 2.02 for Version 2.02) includes both a tutorial and a reference manual for Calc. It describes how to do ordinary ! arithmetic, how to use Calc for algebra, calculus, and other forms of mathematics, and how to extend Calc. ! GNU Software ! ************ ! All our software is available via anonymous FTP; see ``How to Get GNU ! Software''. In addition we offer software on various media and printed ! documentation: ! * see ``CD-ROMs''. ! * see ``Tapes''. ! * see ``MS-DOS Diskettes''. ! * see ``GNU Documentation'', including manuals and reference cards. ! We welcome all bug reports sent to the appropriate electronic mailing list ! (see ``Free Software Support''). ! In the articles describing the contents of each medium, the version number ! listed after each program name was current when we published this Bulletin. ! When you order a distribution tape or diskette, some of the programs may be ! newer, and therefore the version number higher. Key to cross reference: + BinCD Binaries CD-ROM DjgppD Djgpp Diskettes + EmcsD + Emacs Diskettes + EmcsT Emacs Tape *************** *** 251,254 **** --- 448,454 ---- Language Tape + LiteT + 4.4BSD-Lite Tape + SchmT Scheme Tape *************** *** 278,291 **** X11 Required Tape GNU software currently available: ! * `acm' (SrcCD, UtilT) `acm' is a LAN-oriented, multiplayer aerial combat simulation that runs ! under the X Window System. Players engage in air to air combat against ! one another using heat seeking missiles and cannons. Eventually we hope ! to turn this into a more general purpose flight simulator. ! * Autoconf (SrcCD, UtilT) Autoconf produces shell scripts which automatically configure source code --- 478,508 ---- X11 Required Tape + Configuring GNU Software: + + We are using a uniform scheme for configuring GNU software packages in order + to compile them, which uses the `autoconf' program. All GNU software + supports the same alternatives for naming machine and system types. This + makes it possible to configure any and all GNU software in the same manner. + + The configuration scheme also supports configuring a directory containing + several GNU packages with one command. When the GNU system is complete it + will be possible to configure and build the entire system at once, + eliminating the need to separately configure each individual package. + + The configuration scheme can also specify both the host and target system, so + you can easily configure and build cross-compilation tools. + GNU software currently available: ! (For new features and coming programs, see ``Forthcoming GNUs''.) ! ! * `acm' (SrcCD, UtilT) `acm' is a LAN-oriented, multiplayer aerial combat simulation that runs ! under the MIT X Window System. Players engage in air to air combat ! against one another using heat seeking missiles and cannons. Eventually ! we hope to turn this into a more general purpose flight simulator. ! * Autoconf (SrcCD, UtilT) Autoconf produces shell scripts which automatically configure source code *************** *** 293,308 **** systems without manual user intervention. Autoconf creates a script for a package from a template file which lists the operating system features ! which the package can use, in the form of `m4' macro calls. Most GNU ! programs now use Autoconf-generated configure scripts. ! * BASH (SrcCD, UtilT) The GNU shell, BASH (Bourne Again SHell), is compatible with the Unix `sh' and offers many extensions found in `csh' and `ksh'. BASH has job control, `csh'-style command history, and command-line editing (with ! Emacs and `vi' modes built-in and the ability to rebind keys) via the ! readline library. ! * `bc' (SrcCD, UtilT) `bc' is an interactive algebraic language with arbitrary precision. GNU --- 510,528 ---- systems without manual user intervention. Autoconf creates a script for a package from a template file which lists the operating system features ! which the package can use, in the form of `m4' macro calls. Autoconf ! requires GNU `m4' to operate, but the resulting configure scripts it ! generates do not. ! Most GNU programs now use Autoconf-generated configure scripts. + * BASH (SrcCD, UtilT) + The GNU shell, BASH (Bourne Again SHell), is compatible with the Unix `sh' and offers many extensions found in `csh' and `ksh'. BASH has job control, `csh'-style command history, and command-line editing (with ! Emacs and `vi' modes built-in, and the ability to rebind keys) via the ! readline library. BASH conforms to the POSIX 1003.2 shell specification. ! * `bc' (SrcCD, UtilT) `bc' is an interactive algebraic language with arbitrary precision. GNU *************** *** 309,315 **** `bc' follows the POSIX 1003.2 draft standard, with several extensions including multi-character variable names, an `else' statement and full ! Boolean expressions. ! * BFD (BinCD, LangT, SrcCD) The Binary File Descriptor library allows a program which operates on --- 529,536 ---- `bc' follows the POSIX 1003.2 draft standard, with several extensions including multi-character variable names, an `else' statement and full ! Boolean expressions. GNU `bc' does not require the separate `dc' ! program. ! * BFD (BinCD, LangT, SrcCD) The Binary File Descriptor library allows a program which operates on *************** *** 316,329 **** object files (e.g. `ld' or GDB) to support many different formats in a clean way. BFD provides a portable interface, so that only BFD needs to ! know the actual details of a particular format. One consequence of this ! design is that all programs using BFD will support formats such as a.out, ! COFF, ELF & OSF-Rose. BFD comes with Texinfo documentation. ! Presently BFD is not distributed separately but is included with packages ! that use it, because it is not yet completely stable. ! * Binutils (BinCD, LangT, SrcCD) ! The Binutils includes the programs: `ar', `c++filt', `demangle', `gprof', `ld', `nlmconv', `nm', `objcopy', `objdump', `ranlib', `size', `strings', & `strip'. --- 537,551 ---- object files (e.g. `ld' or GDB) to support many different formats in a clean way. BFD provides a portable interface, so that only BFD needs to ! know the details of a particular format. One result is that all ! programs using BFD will support formats such as a.out, COFF, ELF & ! OSF-Rose. BFD comes with source for Texinfo documentation (not yet ! published on paper). ! Presently BFD is not distributed separately because it is not yet ! completely stable; however, it is included with packages that use it. ! * Binutils (BinCD, LangT, SrcCD) ! Binutils includes the programs: `ar', `c++filt', `demangle', `gprof', `ld', `nlmconv', `nm', `objcopy', `objdump', `ranlib', `size', `strings', & `strip'. *************** *** 331,380 **** Binutils Version 2 is completely rewritten to use the BFD library. The GNU linker `ld' emits source-line numbered error messages for ! multiply-defined symbols and undefined references. `nlmconv' converts ! object files into Novell NetWare Loadable Modules. The `objdump' ! program can disassemble code for a29k, ALPHA, H8/300, H8/500, HP-PA, ! i386, i960, m68k, m88k, MIPS, SH, SPARC, & Z8000 processors, and can ! display other data such as symbols and relocations from any file format ! understood by BFD. ! * Bison (BinCD, LangT, SrcCD, VMSCompT) Bison is an upwardly compatible replacement for the parser generator ! `yacc'. Sources for the `Bison Manual' and reference card are included. ! * GNU C Library (LangT, SrcCD) ! The library supports ANSI C-1989 and POSIX 1003.1-1990 and has most of ! the functions specified in POSIX 1003.2 draft 11.2. It is upward ! compatible with 4.4 BSD and includes many System V functions, plus GNU extensions. ! Version 1.07 uses a standard GNU `configure' script. It runs on Sun-3 ! (SunOS 4.1), Sun-4 (SunOS 4.1 & Solaris 2), HP 9000/300 (4.3 BSD), SONY ! News 800 (NewsOS 3 or 4), MIPS DECstation (Ultrix 4), DEC Alpha (OSF/1), ! i386/i486 (System V, SVR4, BSD, SCO 3.2 & SCO ODT 2.0) & Sequent Symmetry ! i386 (Dynix 3). Texinfo source for the `GNU C Library Reference Manual' ! is included. ! ! * Calc (EmcsT, SrcCD) ! ! Calc (written by Dave Gillespie in Emacs Lisp) is an extensible, ! advanced desk calculator and mathematical tool that runs as part of GNU ! Emacs. It comes with source for the `Calc Manual' and reference card, ! which serves as a tutorial and reference. If you wish, you can use Calc ! just as a simple four-function calculator, but it provides additional ! features including choice of algebraic or RPN (stack-based) entry, ! logarithmic functions, trigonometric and financial functions, arbitrary ! precision, complex numbers, vectors, matrices, dates, times, infinities, ! sets, algebraic simplification, differentiation, and integration. Calc ! also outputs to `gnuplot'. ! ! * GNU Chess (UtilT, SrcCD) ! ! GNU Chess is a program that plays chess with you. It is written ! entirely in the C language and has been ported to the PC, the Cray-2 & ! numerous other machines. It has also been ported to other operating ! systems, including Microsoft Windows and MS-DOS, though these versions ! are not supported by the maintainer. There are both text and X display interfaces. --- 553,629 ---- Binutils Version 2 is completely rewritten to use the BFD library. The GNU linker `ld' emits source-line numbered error messages for ! multiply-defined symbols and undefined references. It interprets a ! superset of the AT&T Linker Command Language, which gives general control ! over where segments are placed in memory. `nlmconv' converts object ! files into Novell NetWare Loadable Modules. The `objdump' program can ! disassemble code for a29k, ALPHA, H8/300, H8/500, HP-PA, i386, i960, ! m68k, m88k, MIPS, SH, SPARC, & Z8000 processors, and can display other ! data such as symbols and relocations from any file format understood by ! BFD. ! * Bison (BinCD, LangT, SrcCD, VMSCompT) Bison is an upwardly compatible replacement for the parser generator ! `yacc'. Texinfo source for the `Bison Manual' and reference card are ! included. See ``GNU Documentation''. ! * GNU C Library (LangT, SrcCD) ! The GNU C library supports ANSI C-1989 and POSIX 1003.1-1990 and has most ! of the functions specified in POSIX 1003.2-1992. It is upwardly ! compatible with 4.4BSD and includes many System V functions, plus GNU extensions. ! The C Library will perform many functions of the Unix system calls in ! the Hurd. Mike Haertel has written a fast `malloc' which wastes less ! memory than the old GNU version. The GNU regular-expression functions ! (regex) now nearly conform to the POSIX 1003.2 standard. ! ! GNU `stdio' lets you define new kinds of streams, just by writing a few ! C functions. The `fmemopen' function uses this to open a stream on a ! string, which can grow as necessary. You can define your own `printf' ! formats to use a C function you have written. For example, you can ! safely use format strings from user input to implement a `printf'-like ! function for another programming language. Extended `getopt' functions ! are already used to parse options, including long options, in many GNU ! utilities. ! ! Version 1.08 has just been released, adding support for Sun RPC, `mmap' ! and friends, and compatibility with several more traditional Unix ! functions. It runs on Sun-3 (SunOS 4.1), Sun-4 (SunOS 4.1 or Solaris 2), ! HP 9000/300 (4.3BSD), SONY News 800 (NewsOS 3 or 4), MIPS DECstation ! (Ultrix 4), DEC Alpha (OSF/1), i386/i486 (System V, SVR4, BSD, SCO 3.2 & ! SCO ODT 2.0), Sequent Symmetry i386 (Dynix 3) & SGI (Irix 4). Texinfo ! source for the `GNU C Library Reference Manual' is included (see ! ``GNU Documentation''.); the manual still needs updating. ! ! * GNU C++ Library (BinCD, LangT, SrcCD) ! ! The GNU C++ library (libg++) is an extensive collection of C++ `forest' ! classes, a new IOStream library for input/output routines, and support ! tools for use with G++. Among the classes supported are Obstacks, ! multiple-precision Integers and Rationals, Complex numbers, arbitrary ! length Strings, BitSets and BitStrings. There is also a set of ! pseudo-generic prototype files for generating common container classes. ! Texinfo source for partial documentation is included (not yet published ! on paper). ! ! * Calc (EmcsT, SrcCD) ! ! Calc (written by Dave Gillespie in Emacs Lisp) is an extensible, advanced ! desk calculator and mathematical tool that runs as part of GNU Emacs. If ! you wish, you can use Calc just as a simple four-function calculator, but ! it provides additional features including choice of algebraic or RPN ! (stack-based) entry, logarithmic functions, trigonometric and financial ! functions, arbitrary precision, complex numbers, vectors, matrices, ! dates, times, infinities, sets, algebraic simplification, ! differentiation, and integration. It also outputs to `gnuplot'. Calc ! comes with Texinfo source for a reference card and the `Calc Manual', ! which serves as a tutorial and reference. See ``GNU Documentation''. ! ! * GNU Chess (SrcCD, UtilT) ! ! GNU Chess lets the computer play a full game of chess with you. It runs ! on most platforms and has dumb terminal, "curses", and X terminal interfaces. *************** *** 382,417 **** heuristic, a hash table with aging, the history heuristic (another form of the earlier killer heuristic), caching of static evaluations, and a ! sophisticated database which lets it play the first several moves in the ! game quickly. ! GNU Chess won the Uniform Platform event held in August 1992 in London, ! England. Nine programs competed, running on identical hardware. ! GNU Chess is primarily supported by Stuart Cracraft on behalf of the FSF. ! Stuart Cracraft ! P.O. Box 2841 ! Laguna Hills, CA 92653 ! USA ! Phone: (714) 770-8532 ! E-mail: `cracraft@ai.mit.edu' ! ! * CLISP (EmcsT, SrcCD) ! ! CLISP is a Common Lisp implementation by Bruno Haible and Michael Stoll. ! It mostly supports the Common Lisp described by `Common LISP: The ! Language (1st edition)'. CLISP includes an interpreter, a byte-compiler ! and, for some machines, a screen editor. CLISP needs only 1.5 MB of ! memory and runs on many microcomputers (including the Atari ST, Amiga ! 500-2000, most MS-DOS systems & OS/2) & on some Unix workstations ! (Linux, SunOS (SPARC), Sun-386i, HP-UX (HP 9000/800) & others). ! * `cpio' (UtilD, UtilT, SrcCD) `cpio' is an alternative archive program with all the features of SVR4 `cpio', including support for the final POSIX 1003.1 `ustar' standard. ! `mt' a program to position magnetic tapes is included with `cpio'. ! * CVS (UtilT, SrcCD) CVS, the Concurrent Version System, manages software revision and release --- 631,698 ---- heuristic, a hash table with aging, the history heuristic (another form of the earlier killer heuristic), caching of static evaluations, and a ! database which lets it play the first several moves in the game quickly. ! ! Recent improvements include better heuristics, faster evaluation, ! thinking on opponent's time, Swedish and German language support, support ! for more book formats, a rudimentary Bobby Fischer clock, and bug fixes. ! ! GNU Chess is primarily supported by Stuart Cracraft, Mike McGann, Chua ! Kong Sian, and Tim Mann on behalf of the FSF. ! ! Stuart Cracraft ! 25682 Cresta Loma ! Laguna Niguel, CA 92677 ! USA ! Telephone: +1-714-347-8107 ! Electronic-Mail: `cracraft@ai.mit.edu' ! * CLISP (EmcsT, SrcCD) ! CLISP is a Common Lisp implementation (CLtL1 + parts of CLtL2) by Bruno ! Haible and Michael Stoll. It mostly supports the Lisp described by ! `Common LISP: The Language (1st edition)'. CLISP includes an ! interpreter, a byte-compiler, a subset of CLOS and, for some machines, a ! screen editor. It has user interfaces in English & German (& French ! soon), chooseable at compile time. Major packages that run in CLISP ! include PCL and, on Unix machines, CLX & Garnet. CLISP needs only 1.5 ! MB of memory and runs on many microcomputers (including the Atari ST, ! Amiga 500-4000, most MS-DOS systems & OS/2) & some Unix workstations ! (Linux, Sun4, Sun386, HP9000/800, SGI, Sun3 and others). ! ! * GNU Common Lisp (EmcsT, SrcCD) ! ! GNU Common Lisp (GCL) has a compiler and interpreter for Common Lisp. ! It is very portable and extremely efficient on a wide class of ! applications. It compares favorably in performance with commercial Lisps ! on several large theorem prover and symbolic algebra systems. It ! supports the CLtL1 specification but is moving towards the proposed ANSI ! definition. It is based on AKCL and KCL. KCL was written by Taiichi ! Yuasa and Masami Hagiya in 1984, and AKCL has been developed by William ! Schelter since 1987. ! ! GCL compiles to C and then uses the native optimizing C compilers (e.g. ! GCC). A function with a fixed number of args and one value turns into a ! C function of the same number of args and returning 1 value, so it cannot ! really be any more efficient on such calls. It has a conservative GC ! which allows great freedom for the C compiler to put Lisp values in ! arbitrary registers. It has a source level Lisp debugger for ! interpreted code, with display of source code in the other Emacs window. ! It has profiling tools based on the C profiling tools, which count ! function calls and percentage of time. CLX works with GCL. There is an ! Xlib interface via C. PCL worked with earlier versions. See ! ``Forthcoming GNUs'', for plans for about GCL. ! ! GCL version 1.0 is being released under the GNU Library General Public ! License. (FTP `/pub/gnu/gcl.README' on `prep.ai.mit.edu'.) Get source ! from `ftp.cli.com'. For details ask `schelter@math.utexas.edu'. ! * `cpio' (SrcCD, UtilD, UtilT) `cpio' is an alternative archive program with all the features of SVR4 `cpio', including support for the final POSIX 1003.1 `ustar' standard. ! `mt', a program to position magnetic tapes, is included with `cpio'. ! * CVS (SrcCD, UtilT) CVS, the Concurrent Version System, manages software revision and release *************** *** 420,426 **** parse older RCS formats with the loss of CVS's fancier features. See Berliner, Brian, "CVS-II: Parallelizing Software Development," ! `Proceedings of the Winter 1990 USENIX Association Conference'. ! * `dc' (UtilT, SrcCD) `dc' is an RPN calculator. GNU `bc' does not require a separate `dc' --- 701,708 ---- parse older RCS formats with the loss of CVS's fancier features. See Berliner, Brian, "CVS-II: Parallelizing Software Development," ! `Proceedings of the Winter 1990 USENIX Association Conference'. To find ! out how to get a copy of this report, ask `office@usenix.org'. ! * `dc' (SrcCD, UtilT) `dc' is an RPN calculator. GNU `bc' does not require a separate `dc' *************** *** 428,463 **** `bc'. ! * DejaGnu (LangT, SrcCD) DejaGnu is a framework for testing other programs that provides a single ! front end for all tests. The flexibility and consistency of the DejaGnu ! framework make it easy to write tests for any program. DejaGnu comes ! with `expect' and Tcl. ! ! * Diffutils (UtilD, UtilT, SrcCD) ! GNU `diff' compares files showing line-by-line changes in several ! flexible formats. It is much faster than traditional Unix versions. ! The Diffutils distribution contains `diff', `diff3', `sdiff', and `cmp'. ! ! * DJGPP (BinCD, DjgppD) ! DJ Delorie has ported GCC/G++ 2.5.7 to the i386 MS-DOS platform. The ! DJGPP package also contains a 32-bit 80386 DOS extender with symbolic ! debugger; development libraries; and ports of Bison, `flex', GAS, and ! the GNU binary utilities. Full source code is provided. ! DJGPP supports SVGA (up to 1024x768), XMS & VDISK memory allocation, ! `himem.sys', VCPI (e.g. QEMM, DESQview, & 386MAX), and DPMI (e.g. ! Windows 3.x, OS/2, QEMM, & QDPMI). ! ! It is available via FTP from `ftp.clarkson.edu' in `/pub/msdos/djgpp'. ! You can subscribe to a mailing list on DJGPP by sending your e-mail ! address to `djgpp-request@sun.soe.clarkson.edu'. In addition, the FSF ! distributes it on floppy disks and on the Compiler Tools Binaries CD-ROM. ! See the description for GCC in this section for more information. ! * `dld' (LangT, SrcCD) `dld' is a dynamic linker written by W. Wilson Ho. Linking your program --- 710,766 ---- `bc'. ! * DejaGnu (LangT, SrcCD) DejaGnu is a framework for testing other programs that provides a single ! front end for all tests. The framework's flexibility and consistency ! make it easy to write tests for any program. DejaGnu comes with ! `expect', which runs scripts to conduct dialogs with programs; and Tcl, ! which is an embeddable scripting language. The FSF hopes to replace Tcl ! with a cleaner programming language someday. ! ! * Demacs, GNU Emacs for MS-DOS (EmcsD) ! ! Manabu Higashida and Hirano Satoshi have released Demacs, a GNU Emacs ! port for 386/486 based MS-DOS machines. It is compatible with XMS ! memory managers and VCPI, but not yet with Microsoft Windows extended ! mode or other DPMI managers. Anonymous FTP it from `oak.oakland.edu' in ! `/pub/msdos/demacs' (USA) & `utsun.s.u-tokyo.ac.jp' in `/GNU/demacs' ! (Japan). For an FTP site list and the current status of Demacs, email to ! `demacs@sigmath.osaka-u.ac.jp'. For details, FTP the `README' file. ! The FSF is offering Demacs on diskette. We will replace it with GNU ! Emacs 19, as soon as the MS-DOS port is ready. See ``Emacs Diskettes''. ! * Diffutils (SrcCD, UtilD, UtilT) ! GNU `diff' compares files showing line-by-line changes in several ! flexible formats. It is much faster than traditional Unix versions. The ! Diffutils package contains `diff', `diff3', `sdiff', and `cmp'. ! These improvements have recently been made to Diffutils: A new heuristic ! for `diff' greatly reduces the time needed to compare large input files ! that contain many differences, and produces output that is usually ! smaller rather than larger. New `diff' options give detailed control ! over output format, e.g. to provide if-then-else output for programming ! languages other than C. Message wordings and the definition of "white ! space" have been revised for compatibility with the POSIX.2 standard ! (ISO/IEC 9945-2:1993). ! ! * DJGPP (BinCD, DjgppD) ! ! DJ Delorie has ported GCC/G++ 2.5.7 (see the GCC item in this section) to ! the i386 MS-DOS platform. The DJGPP package also contains a 32-bit 80386 ! DOS extender with symbolic debugger; development libraries; and ports of ! Bison, `flex', GAS, and the GNU Binutils. Full source code is provided. ! It requires at least 5MB of hard disk space to install and 512K of RAM to ! use. It supports SVGA (up to 1024x768), XMS & VDISK memory allocation, ! `himem.sys', VCPI (e.g. QEMM, DESQview, & 386MAX), and DPMI (e.g. Windows ! 3.x, OS/2, QEMM, & QDPMI). The FSF offers it on the ``DJGPP Diskettes'', ! and on the ``Compiler Tools Binaries CD-ROM''. Or FTP file ! `/pub/msdos/djgpp' from `oak.oakland.edu' (or another SimTel mirror ! site). Ask `djgpp-request@sun.soe.clarkson.edu' to join a mailing list ! for DJGPP users. ! * `dld' (LangT, SrcCD) `dld' is a dynamic linker written by W. Wilson Ho. Linking your program *************** *** 464,494 **** with the `dld' library allows you to dynamically load object files into the running binary. Currently supported are VAX (Ultrix), Sun 3 (SunOS ! 3.4 and 4.0), SPARC (SunOS 4.0), Sequent Symmetry (Dynix), and Atari ST. ! * `doschk' (UtilT, SrcCD) This program is intended as a utility to help software developers ensure that their source file names are distinguishable on System V platforms ! with 14-character filenames and on MS-DOS with 11 character filenames. ! * `ecc' (UtilT, SrcCD) `ecc' is a Reed-Solomon error correction checking program, which can correct three byte errors in a block of 255 bytes and detect more severe ! errors. ! * Elib (EmcsT, SrcCD) ! This is a small library of Emacs Lisp functions, including routines for ! using AVL trees and doubly-linked lists. ! * `elvis' (UtilT, SrcCD) ! `elvis' is a clone of the `vi'/`ex' Unix editor. It supports nearly all ! of the `vi'/`ex' commands in both visual and line mode. `elvis' runs ! under BSD, System V, Xenix, Minix, MS-DOS & Atari TOS, and should be ! easy to port to many other systems. ! * GNU Emacs 18 (DemcsD, EmcsT, SrcCD, VMSEmcsT) In 1975, Richard Stallman developed the first Emacs, an extensible, --- 767,794 ---- with the `dld' library allows you to dynamically load object files into the running binary. Currently supported are VAX (Ultrix), Sun 3 (SunOS ! 3.4 & 4.0), SPARC (SunOS 4.0), Sequent Symmetry (Dynix), & Atari ST. ! * `doschk' (SrcCD, UtilT) This program is intended as a utility to help software developers ensure that their source file names are distinguishable on System V platforms ! with 14-character filenames and on MS-DOS with 8+3 character filenames. ! * `ecc' (SrcCD, UtilT) `ecc' is a Reed-Solomon error correction checking program, which can correct three byte errors in a block of 255 bytes and detect more severe ! errors. Contact `paulf@Stanford.EDU' for more information. ! * `ed' (SrcCD, UtilT) ! Ed is the standard text editor. ! * Elib (EmcsT, SrcCD) ! This is a small library of Emacs Lisp functions, including routines for ! using AVL trees and doubly-linked lists. ! * GNU Emacs In 1975, Richard Stallman developed the first Emacs, an extensible, *************** *** 495,508 **** customizable real-time display editor. GNU Emacs is his second implementation. It offers true Lisp--smoothly integrated into the ! editor--for writing extensions, and provides an interface to MIT's X Window System. In addition to its powerful native command set, extensions which emulate other popular editors are distributed: vi, EDT (DEC's VMS editor) and Gosling (aka Unipress) Emacs. It has many other ! features which make it a full computing support environment. It is ! described by the `GNU Emacs Manual', the `GNU Emacs Lisp Reference ! Manual' and a reference card. Source for all three come with the ! software. ! GNU Emacs 18.59 runs on many Unix systems (in hardware order): Alliant FX/80 & FX/2800, Altos 3068, Amdahl (UTS), Apollo, AT&T (3Bs & 7300 PC), DG Aviion, Bull DPX/2 (2nn & 3nn) CCI 5/32 & 6/32, Celerity, Convex, --- 795,809 ---- customizable real-time display editor. GNU Emacs is his second implementation. It offers true Lisp--smoothly integrated into the ! editor--for writing extensions, and provides an interface to the MIT X Window System. In addition to its powerful native command set, extensions which emulate other popular editors are distributed: vi, EDT (DEC's VMS editor) and Gosling (aka Unipress) Emacs. It has many other ! features which make it a full computing support environment. Source for ! the `GNU Emacs Manual', the `GNU Emacs Lisp Reference Manual', and a ! reference card come with the software. See ``GNU Documentation''. ! ! * GNU Emacs 18 (EmcsD, EmcsT, SrcCD, VMSEmcsT) ! GNU Emacs 18.59 runs on many Unix systems. In hardware order: Alliant FX/80 & FX/2800, Altos 3068, Amdahl (UTS), Apollo, AT&T (3Bs & 7300 PC), DG Aviion, Bull DPX/2 (2nn & 3nn) CCI 5/32 & 6/32, Celerity, Convex, *************** *** 512,523 **** (original & 1/05), IBM (RS/6000 (AIX), RT/PC (4.2 & AIX) & PS/2 (AIX (386 only))), ISI (Optimum V, 80386), Intel 860 & 80386 (BSD, Esix, SVR3, ! SVR4, SCO, ISC, IX, AIX & others (see "MS-DOS Distribution")), Iris ! (2500, 2500 Turbo & 4D), Masscomp, MIPS, National Semiconductor 32000, ! NeXT (Mach), NCR Tower 32 (SVR2 & SVR3), Nixdorf Targon 31, Nu (TI & ! LMI), pfa50, Plexus, Prime EXL, Pyramid (original & MIPS), Sequent ! (Balance & Symmetry), SONY News (m68k & MIPS), Stride (system release 2), ! all Suns including 386i (all SunOS & some Solaris vers.), Tadpole, Tahoe, ! Tandem Integrity S2, Tektronix (16000 & 4300), Triton 88, Ustation E30 ! (SS5E), Whitechapel (MG1) & Wicat. In operating system order: AIX (RS/6000, RT/PC, 386-PS/2), BSD (vers. --- 813,825 ---- (original & 1/05), IBM (RS/6000 (AIX), RT/PC (4.2 & AIX) & PS/2 (AIX (386 only))), ISI (Optimum V, 80386), Intel 860 & 80386 (BSD, Esix, SVR3, ! SVR4, SCO, ISC, IX, AIX & others (see ``MS-DOS Diskettes''. & ``Free ! Software for Microcomputers'')), Iris (2500, 2500 Turbo & 4D), Masscomp, ! MIPS, National Semiconductor 32000, NeXT (Mach), NCR Tower 32 (SVR2 & ! SVR3), Nixdorf Targon 31, Nu (TI & LMI), pfa50, Plexus, Prime EXL, ! Pyramid (original & MIPS), Sequent (Balance & Symmetry), SONY News (m68k ! & MIPS), Stride (system release 2), all Suns including 386i (all SunOS & ! some Solaris vers.), Tadpole, Tahoe, Tandem Integrity S2, Tektronix ! (16000 & 4300), Triton 88, Ustation E30 (SS5E), Whitechapel (MG1) & ! Wicat. In operating system order: AIX (RS/6000, RT/PC, 386-PS/2), BSD (vers. *************** *** 528,545 **** (Dual machines), VMS (vers. 4.0, 4.2, 4.4, 5.5) & Xenix (386). ! * GNU Emacs 19 (EmcsT, SrcCD) - Unlike some other recent derivations of Emacs, GNU Emacs 19 continues to - work on character-only terminals as well as under the X Window System. New features in Emacs 19 include: multiple X windows ("frames" to ! Emacs), with a separate X window for the minibuffer or with a minibuffer ! attached to each X window; property lists associated with regions of ! text in a buffer; multiple fonts and colors defined by those properties; ! simplified and improved processing of function keys, mouse clicks and ! mouse movement; X selection processing, including clipboard selections; ! hooks to be run if point or mouse moves outside a certain range; menu ! bars and popup menus defined by keymaps; scrollbars; before and after ! change hooks; source-level debugging of Emacs Lisp programs; European ! character sets support; floating point numbers; improved buffer allocation, using a new mechanism capable of returning storage to the system when a buffer is killed; interfacing with the X resource manager; --- 830,845 ---- (Dual machines), VMS (vers. 4.0, 4.2, 4.4, 5.5) & Xenix (386). ! * GNU Emacs 19 (EmcsT, SrcCD) New features in Emacs 19 include: multiple X windows ("frames" to ! Emacs), with either a separate X window for the minibuffer or a ! minibuffer attached to each X window; property lists associated with ! regions of text in a buffer; multiple fonts and colors defined by those ! properties; simplified and improved processing of function keys, mouse ! clicks and mouse movement; X selection processing, including clipboard ! selections; hooks to be run if point or mouse moves outside a certain ! range; menu bars and popup menus defined by keymaps; scrollbars; before ! and after change hooks; source-level debugging of Emacs Lisp programs; ! European character sets support; floating point numbers; improved buffer allocation, using a new mechanism capable of returning storage to the system when a buffer is killed; interfacing with the X resource manager; *************** *** 547,668 **** libraries. ! GNU Emacs 19.22 is known to work on (in hardware order): Bull DPX/2 2nn ! & 3nn (SVR3) & sps7 (SVR2); Clipper; Cubix QBx (SysV); DEC MIPS (Ultrix ! 4.2 & OSF/1, not VMS); Motorola Delta 147 & 187 (SVR3, SVR4, & m88kbcs); ! Elxsi 6400 (SysV); Gould Power Node & NP1 (BSD 4.2 & 4.3); Honeywell ! XPS100 (SysV); HP9000 series 200, 300, 700, 800 (BSD 4.3 or HP-UX 7, 8, ! 9); i386 & i486 (386BSD, AIX, BSDI/386, FreeBSD, Esix, ISC, Linux, ! NetBSD, SCO3.2v4 with ODT, SysV, Xenix); RS6000 (AIX 3.2); RT/PC (AIX or ! BSD); Iris 4D (Irix 4.x & 5.x); National Semiconductor 32K (Genix); NeXT (BSD or Mach 2 w/ NeXTStep 3.0); Prime EXL (SysV); Pyramid (BSD); ! Sequent Symmetry (BSD); Sun 3 & 4, SPARC 1, 1+, 2, 10 & Classic (SunOS ! 4.0, 4.1, Solaris 2); Tadpole 68k (SysV); Tektronix XD88 (SVR3) & 4300 (BSD); & Titan P2 & P3 (SysV). ! In operating system order: AIX (i386, RS6000, RT/PC); BSD 4.1, 4.2, 4.3 (i386, Gould Power Node & NP1, HP9000 series 300, NeXT, Pyramid, ! Symmetry, Tektronix 4300, RT/PC); Esix (i386); Genix (ns32k); HP-UX 7, ! 8, 9 (HP 9000 series 200, 300, 700, 800, but not 500); Irix 4 & 5 (Iris ! 4D); ISC (i386); Linux (i386); NetBSD (i386, HP9000 series 300); Mach 2 ! & 3 (i386, NeXT); SCO 3.2v4 (i386); SVR2 (Bull sps7); SVR3 (Bull DPX/2 ! 2nn & 3nn, Motorola Delta 147 & 187, Tektronix XD88); SVR4 (Motorola ! Delta 147 & 187); Solaris 2 (SPARC 1, 1+, 2, 10, Classic); SunOS 4.0, ! 4.1 (Sun 3 & 4, SPARC 1, 1+, 2, 10 & Classic); Ultrix 4.2 (DEC MIPS); & ! Xenix (i386). ! ! Other configurations supported by Emacs 18 should work with few changes; ! as users tell us more about their experiences with different systems, we ! will augment the list. ! ! * `es' (UtilT, SrcCD) ! ! This is an extensible shell based on `rc' that has first class ! functions, lexical scope, an exception system, and rich return values ! (i.e. functions can return values other than just numbers). Like `rc', ! it is great for both interactive use and for scripting, particularly ! because its quoting rules are much less baroque than the C or Bourne ! shells. ! ! * `expect' (LangT, SrcCD) ! ! `expect' runs scripts to conduct dialogs with programs. It is ! distributed along with Tcl and DejaGnu. ! ! * `f2c' (LangT, SrcCD) ! `f2c' converts Fortran-77 source files into C or C++, which can then be ! compiled with GCC. ! * Fax (UtilT, SrcCD) ! ! Fax is the freely-available MIT AI Lab fax spooling system, which ! provides Group 3 fax transmission and reception services for a networked ! Unix system. It requires a faxmodem which conforms to the new EIA-592 ! Asynchronous Facsimile DCE Control Standard, Service Class 2. ! ! * Fileutils (UtilD, UtilT, SrcCD) ! ! Fileutils work on files: `chgrp', `chmod', `chown', `cp', `dd', `df', `dir', `du', `install', `ln', `ls', `mkdir', `mkfifo', `mknod', `mv', ! `mvdir', `rm', `rmdir', `touch', & `vdir'. Only some of these are on ! the Selected Utilities diskettes. ! * `find' (UtilD, UtilT, SrcCD) `find' is frequently used both interactively and in shell scripts to find files which match certain criteria and perform arbitrary operations ! on them. `xargs' and `locate' are also included. ! * `finger' (UtilT, SrcCD) ! GNU Finger, which serves as a direct replacement for existing finger ! programs, solves this problem. For sites with many hosts, a single host ! may be designated as the finger "server" host. This host collects ! information about who is logged in to other hosts at that site. If a ! user at site A wants to know about users logged on at site B, a single ! query to any machine at the site will return complete information. ! * `flex' (LangT, UtilD, SrcCD) ! `flex' is a mostly-compatible replacement for the `lex' scanner ! generator, written by Vern Paxson of the Lawrence Berkeley Laboratory. ! `flex' generates far more efficient scanners than `lex' does. Sources ! for the `Flex Manual' and reference card are included. ! * Fontutils (UtilT, SrcCD) ! The Fontutils can create fonts for use with Ghostscript or TeX, starting with a scanned type image and converting the bitmaps to outlines. They also contain general conversion programs and other utilities. ! * GAS (BinCD, LangT, SrcCD) ! ! The GNU assembler has been rewritten to use the BFD library. Native ! assembly works for: Sun 3, 4, & SPARC (SunOS 4.1 or Solaris 2); i386 ! (AIX, 386BSD, BSDI/386, Linux); m68k (BSD, HP-UX, Convergent ! Technologies SysV); MIPS (Ultrix, Irix); Hitachi H8/500; & VAX (BSD, ! Ultrix, VMS). ! ! Cross assembling can be done for: i386 (SCO, go32 MS-DOS/DJGPP); ! ebmon29k; Hitachi H8/300; i960 (COFF); MIPS ECOFF (Ultrix, Iris, MIPS ! Magnum); Nindy 960; vxworks (68k or 960); & Zilog Z8000. ! ! * GAWK (LangT, SrcCD) ! ! GAWK is upwardly compatible with the System V Release 4 version of ! `awk'. Texinfo source for the `GAWK Manual' comes with the software. ! ! * GCC (BinCD, DjgppD, LangT, SrcCD) ! ! Version 2 of the GNU C compiler supports three languages: C, C++ and ! Objective C; the source file name suffix or a compiler option selects ! the language. The front end support for Objective C was donated by NeXT. ! The runtime support needed to run Objective C programs is now distributed ! with GCC (this does not include any Objective C classes aside from ! `object'). As much as possible, G++ is kept compatible with the ! evolving draft ANSI standard, but not with `cfront' (AT&T's compiler), ! which has been diverging from ANSI. ! The GNU C compiler is a fairly portable optimizing compiler which performs automatic register allocation, common sub-expression elimination, invariant code motion from loops, induction variable --- 847,985 ---- libraries. ! New features in Emacs 19.23 include X toolkit support, dialog boxes, ! operation on MS-DOS, much faster text properties, keyboard equivalents ! shown automatically in menus, and text that highlights when you move the ! mouse over it. ! ! Unlike some other recent derivations of Emacs, Emacs 19 from the Free ! Software Foundation continues to work on character-only terminals as ! well as under the MIT X Window System. ! ! Emacs 19.23 is known to work on, in hardware order: Bull DPX/2 2nn & 3nn ! (SVR3) & sps7 (SVR2); Clipper; Cubix QBx (SysV); Data General Aviion ! (DGUX); DEC MIPS (Ultrix 4.2 & OSF/1, not VMS); Elxsi 6400 (SysV); Gould ! Power Node & NP1 (4.2 & 4.3BSD); Harris Night Hawk 1200 and 3000, 4000 ! and 5000 (cxux); Honeywell XPS100 (SysV); HP 9000 series 200, 300, 700, ! 800 (4.3BSD or HP-UX 7, 8, 9); Intel i386 & i486 (386BSD, AIX, BSDI/386, ! FreeBSD, Esix, ISC, Linux, MS-DOS, NetBSD, SCO3.2v4 with ODT, SysV, ! Xenix); IBM RS6000 (AIX 3.2); IBM RT/PC (AIX or BSD); Motorola Delta 147 ! & 187 (SVR3, SVR4, & m88kbcs); National Semiconductor 32K (Genix); NeXT (BSD or Mach 2 w/ NeXTStep 3.0); Prime EXL (SysV); Pyramid (BSD); ! Sequent Symmetry (BSD); SGI Iris 4D (Irix 4.x & 5.x); Sony News/RISC ! (NewsOS); Sun 3 & 4, SPARC 1, 1+, 2, 10 & Classic (SunOS 4.0, 4.1, ! Solaris 2.0-2.3); Tadpole 68k (SysV); Tektronix XD88 (SVR3) & 4300 (BSD); & Titan P2 & P3 (SysV). ! In operating system order: AIX (i386, RS6000, RT/PC); 4.1, 4.2, 4.3BSD (i386, Gould Power Node & NP1, HP9000 series 300, NeXT, Pyramid, ! Symmetry, Tektronix 4300, RT/PC); DG/UX (Aviion); Esix (i386); FreeBSD ! (i386); Genix (ns32k); HP-UX 7, 8, 9 (HP 9000 series 200, 300, 700, 800, ! but not 500); Irix 4 & 5 (Iris 4D); ISC (i386); Linux (i386); NetBSD ! (i386, HP9000 series 300); Mach 2 & 3 (i386, NeXT); SCO 3.2v4 (i386); ! SVR2 (Bull sps7); SVR3 (Bull DPX/2 2nn & 3nn, Motorola Delta 147 & 187, ! Tektronix XD88); SVR4 (Motorola Delta 147 & 187); Solaris 2 (SPARC 1, ! 1+, 2, 10, Classic); SunOS 4.0, 4.1 (Sun 3 & 4, SPARC 1, 1+, 2, 10 & ! Classic); Ultrix 4.2 (DEC MIPS); & Xenix (i386). ! ! Other configurations supported by Emacs 18 should work with few changes ! in Emacs 19; as users tell us more about their experiences with different ! systems, we will augment the list. Also see ``Forthcoming GNUs''. ! ! * `es' (SrcCD, UtilT) ! ! `es' is an extensible shell based on `rc' that has first class functions, ! lexical scope, an exception system, and rich return values (i.e. ! functions can return values other than just numbers). Like `rc', it is ! great for both interactive use and for scripting, particularly because ! its quoting rules are much less baroque than the C or Bourne shells. ! ! * `f2c' (LangT, SrcCD) ! ! `f2c' converts Fortran-77 source files into C or C++, which can be ! compiled with GCC. You can get bug fixes via FTP from `netlib.att.com' ! in the file `/netlib/f2c/changes.Z' or by email from ! `netlib@research.att.com'. See ``Forthcoming GNUs'', for information ! about GNU Fortran. ! ! * NetFax (SrcCD, UtilT) ! ! NetFax is a freely-available fax spooling system originally developed in ! the MIT AI Lab. It provides Group 3 fax transmission and reception ! services for a networked Unix system. It requires a faxmodem which ! accepts Class 2 fax commands. Contact `bug-fax@prep.ai.mit.edu' for ! more information. ! * Fileutils (SrcCD, UtilD, UtilT) ! The fileutils work on files: `chgrp', `chmod', `chown', `cp', `dd', `df', `dir', `du', `install', `ln', `ls', `mkdir', `mkfifo', `mknod', `mv', ! `mvdir', `rm', `rmdir', `touch', & `vdir'. Only some of these are on the ! ``Selected Utilities Diskettes''. ! * `find' (SrcCD, UtilD, UtilT) `find' is frequently used both interactively and in shell scripts to find files which match certain criteria and perform arbitrary operations ! on them. Also included are `xargs', which applies a command to a list ! of files, and `locate', which scans a database for file names that match ! a pattern. ! * Finger (SrcCD, UtilT) ! GNU Finger has more features than other finger programs. For sites with ! many hosts, a single host may be designated as the finger "server" host. ! This host collects information about who is logged in to other hosts at ! that site. If a user at site A wants to know about users logged on at ! site B, a single query to any machine at the site will return complete ! information. ! * `flex' (LangT, SrcCD, UtilD) ! `flex' is a replacement for the `lex' scanner generator. `flex' was ! written by Vern Paxson of the Lawrence Berkeley Laboratory and generates ! far more efficient scanners than `lex' does. Texinfo source for the ! `Flex Manual' and reference card are included. See ``GNU Documentation''. ! * Fontutils (SrcCD, UtilT) ! The fontutils create fonts for use with Ghostscript or TeX, starting with a scanned type image and converting the bitmaps to outlines. They also contain general conversion programs and other utilities. ! Fontutils programs include: `bpltobzr', `bzrto', `charspace', ! `fontconvert', `gsrenderfont', `imageto', `imgrotate', `limn', and ! `xbfe'. ! ! * GAS (BinCD, LangT, SrcCD) ! ! GAS is the GNU assembler. Native assembly works for many systems, ! including: Sun 3, 4, & SPARC (SunOS 4.1 or Solaris 2); i386 (AIX, ! 386BSD, BSDI/386, Linux, SCO, Unixware); m68k (BSD, HP-UX, Convergent ! Technologies SysV); MIPS (Ultrix, Irix); Hitachi H8/300 and H8/500; & ! VAX (BSD, Ultrix, VMS). Cross assembling can be done for most of the ! above systems, plus: i386 (SCO, go32 MS-DOS/DJGPP); ebmon29k; Hitachi ! H8/300; i960 (b.out, COFF); MIPS ECOFF (Ultrix, Iris, MIPS Magnum); ! Nindy 960; vxworks (68k or 960); & Zilog Z8000. See ``Forthcoming ! GNUs'', for plans for future releases of GAS. ! ! * GAWK (LangT, SrcCD) ! ! GAWK is upwardly compatible with the System V Release 4 and POSIX ! versions of `awk'. It also provides several useful extensions not found ! in other `awk' implementations. Texinfo source for the `GAWK Manual' ! comes with the software. See ``GNU Documentation''. ! ! * GCC (BinCD, DjgppD, LangT, SrcCD, VMSCompT) ! ! Version 2 of the GNU C Compiler supports three languages: C, C++ and ! Objective-C; the source file name suffix or a compiler option selects the ! language. The front end support for Objective-C was donated by NeXT. ! The runtime support needed to run Objective-C programs is now ! distributed with GCC (this does not include any Objective-C classes ! aside from `object'). As much as possible, G++ is kept compatible with ! the evolving draft ANSI standard, but not with `cfront' (AT&T's ! compiler), which has been diverging from ANSI. ! The GNU C Compiler is a fairly portable optimizing compiler which performs automatic register allocation, common sub-expression elimination, invariant code motion from loops, induction variable *************** *** 691,704 **** GCC can generate a.out, COFF, ELF & OSF-Rose files when used with a suitable assembler. It can produce debugging information in these ! formats: BSD stabs, COFF, ECOFF, ECOFF with stabs, & DWARF. ! GCC generates code for: a29k, Alpha, ARM, Convex cN, Clipper, Elxsi, ! H8300, HP-PA (1.0 and 1.1) i370, i386, i486, i860, i960, m68k, m68020, ! m88k, MIPS, ns32k, Pyramid, ROMP, RS6000, SH, SPARC, SPARClite, VAX, and ! we32k. Operating systems supported include: AIX, ACIS, AOS, BSD, Clix, Ctix, DG/UX, Dynix, Genix, HP-UX, ISC, Irix, Linux, Luna, LynxOS, Mach, Minix, ! NeWSOS, OSF, OSF-Rose, RISCOS, SCO, Solaris 2, SunOS 4, SysV, Ultrix, Unos, & VMS. --- 1008,1021 ---- GCC can generate a.out, COFF, ELF & OSF-Rose files when used with a suitable assembler. It can produce debugging information in these ! formats: BSD stabs, COFF, ECOFF, ECOFF with stabs & DWARF. ! GCC generates code for many CPUs, including: a29k, Alpha, ARM, Convex cN, ! Clipper, Elxsi, H8300, HP-PA (1.0 and 1.1) i370, i386, i486, i860, i960, ! m68k, m68020, m88k, MIPS, ns32k, Pyramid, ROMP, RS6000, SH, SPARC, ! SPARClite, VAX, and we32k. Operating systems supported include: AIX, ACIS, AOS, BSD, Clix, Ctix, DG/UX, Dynix, Genix, HP-UX, ISC, Irix, Linux, Luna, LynxOS, Mach, Minix, ! NewsOS, OSF, OSF-Rose, RISCOS, SCO, Solaris 2, SunOS 4, SysV, Ultrix, Unos, & VMS. *************** *** 714,726 **** values. ! Source for the GCC manual, `Using and Porting GNU CC', is included with ! the compiler. The manual describes how to run and install the GNU C ! compiler, and how to port it to new systems. It describes new features ! and incompatibilities of the compiler, but people not familiar with C ! will also need a good reference on the C programming language. ! * GDB (BinCD, LangT, SrcCD) In GDB, object files and symbol tables are now read via the BFD library, which allows a single copy of GDB to debug programs of multiple object --- 1031,1043 ---- values. ! We no longer distribute or maintain version 1 of GCC, G++, or libg++. + Texinfo source for the GCC manual, `Using and Porting GNU CC', is + included with the compiler. ! See ``Forthcoming GNUs'', for plans for later releases of GCC. + * GDB (BinCD, LangT, SrcCD) + In GDB, object files and symbol tables are now read via the BFD library, which allows a single copy of GDB to debug programs of multiple object *************** *** 731,740 **** inheritance are only supported when used with GCC version 2. ! Both X and GNU Emacs user interfaces to GDB are available, in addition to ! its command line interpreter. GDB uses a standard remote interface to a simulator library which (so ! far) contains simulators for the Zilog Z8001/2, the Hitachi H8/300, ! H8/500 & Super-H. GDB can perform cross-debugging. To say that GDB *targets* a platform --- 1048,1059 ---- inheritance are only supported when used with GCC version 2. ! GDB comes with a command line user interface; GNU Emacs is distributed ! with a GDB mode, and `xxgdb' provides an X interface (but it is not ! distributed or maintained by the FSF; it is available for anonymous FTP ! from `ftp.x.org' in the `/contrib' directory). GDB uses a standard remote interface to a simulator library which (so ! far) has simulators for the Zilog Z8001/2, Hitachi H8/300, H8/500 & ! Super-H. GDB can perform cross-debugging. To say that GDB *targets* a platform *************** *** 756,765 **** HP/Apollo 68k (BSD). ! In addition, GDB can use the symbol tables emitted by the compilers ! supplied by most vendors of MIPS-based machines, including DEC. (These ! symbol tables are in a format which almost nobody else uses.) Source for ! the manual `Debugging with GDB' and a reference card are included. ! * `gdbm' (LangT, UtilD, SrcCD) The `gdbm' library is the GNU replacement for the traditional `dbm' and --- 1075,1085 ---- HP/Apollo 68k (BSD). ! GDB can use the symbol tables emitted by the compilers supplied by most ! vendors of MIPS-based machines, including DEC. (These tables are in a ! format which almost nobody else uses.) Texinfo source for the manual ! `Debugging with GDB' and a reference card are included. See ! ``GNU Documentation''. ! * `gdbm' (LangT, SrcCD, UtilD) The `gdbm' library is the GNU replacement for the traditional `dbm' and *************** *** 768,800 **** counterparts). ! * Ghostscript (UtilT, SrcCD) Ghostscript is GNU's graphics language which is almost fully compatible ! with Postscript. ! ! * Ghostview (UtilT, SrcCD) ! Ghostview provides an X11 user interface for the Ghostscript interpreter. ! Ghostview and Ghostscript function as two cooperating programs; Ghostview ! creates a viewing window and Ghostscript draws in it. There is a port ! for Ghostview to MS-Windows. ! * `gmp' (LangT, SrcCD) ! GNU MP is a library for arbitrary precision arithmetic on signed integers and rational numbers. It has a rich set of functions with a regular interface. ! * GNATS (UtilT, SrcCD) ! Gnats (GNats: A Tracking System) is a bug-tracking system. It is based ! upon the paradigm of a central site or organization which receives ! problem reports and negotiates their resolution by electronic mail. ! Although it's been used primarily as a software bug-tracking system so ! far, it is sufficiently generalized so that it could be used for ! handling system administration issues, project management or any number ! of other applications. ! * `gnuplot' (UtilT, SrcCD) `gnuplot' is an interactive program for plotting mathematical --- 1088,1150 ---- counterparts). ! * Ghostscript (SrcCD, UtilT) Ghostscript is GNU's graphics language which is almost fully compatible ! with Postscript (see ``Forthcoming GNUs''). ! The current version of Ghostscript is 2.6.1. Features include the ! ability to use the fonts provided by the platform on which Ghostscript ! runs (MIT X Window System and Microsoft Windows), resulting in much ! better-looking screen displays; improved text file printing (like ! `enscript'); a utility to extract the text from a Postscript document; a ! much more reliable (and faster) Microsoft Windows implementation; ! support for Microsoft C/C++ 7.0; drivers for many new printers, ! including the SPARCprinter, and for TIFF/F (fax) file format; many more ! Postscript Level 2 facilities, including most of the color space ! facilities (but not patterns), and the ability to switch between Level 1 ! and Level 2 dynamically. ! ! Ghostscript accepts commands in Postscript and executes them by writing ! directly to a printer, drawing on an X window, or writing to a file that ! you can print later (or to a bitmap file that you can manipulate with ! other graphics programs). ! ! Ghostscript includes a C-callable graphics library (for client programs ! that do not want to deal with the Postscript language). It also supports ! IBM PCs and compatibles with EGA, VGA, or SuperVGA graphics (but please ! do *not* ask the FSF staff any questions about this; we do not use PCs). ! ! See ``Forthcoming GNUs'', for plans for later releases of Ghostscript. ! ! * Ghostview (SrcCD, UtilT) ! ! Tim Theisen, `ghostview@cs.wisc.edu', has created Ghostview, a previewer ! for multi-page files that runs on top of Ghostscript. Ghostview provides ! an X11 user interface for the Ghostscript interpreter. Ghostview and ! Ghostscript function as two cooperating programs; Ghostview creates a ! viewing window and Ghostscript draws in it. There is a port for ! Ghostview to MS-Windows called "GSview for Windows". For information ! about future releases of this program, see ``Forthcoming GNUs''. ! * `gmp' (LangT, SrcCD) ! GNU mp is a library for arbitrary precision arithmetic on signed integers and rational numbers. It has a rich set of functions with a regular interface. ! See ``Forthcoming GNUs'', for the plans for later releases of `gmp'. ! ! * GNATS (SrcCD, UtilT) ! GNATS (GNats: A Tracking System, not to be confused with GNAT, The GNU ! Ada Translator) is a bug-tracking system. It is based upon the paradigm ! of a central site or organization which receives problem reports and ! negotiates their resolution by electronic mail. Although it has been ! used primarily as a software bug-tracking system so far, it is ! sufficiently generalized so that it could be used for handling system ! administration issues, project management or any number of other ! applications. ! * `gnuplot' (SrcCD, UtilT) `gnuplot' is an interactive program for plotting mathematical *************** *** 803,811 **** the GNU Project; the name is a coincidence. ! * GnuGo (UtilT, SrcCD) GnuGo plays the game of Go (Wei-Chi); it is not yet very sophisticated. ! * `gperf' (LangT, SrcCD) `gperf' is a "perfect" hash-table generation utility. There are --- 1153,1161 ---- the GNU Project; the name is a coincidence. ! * GnuGo (SrcCD, UtilT) GnuGo plays the game of Go (Wei-Chi); it is not yet very sophisticated. ! * `gperf' (LangT, SrcCD) `gperf' is a "perfect" hash-table generation utility. There are *************** *** 813,824 **** C++. Both will produce hash functions in either C or C++. ! * GNU Graphics (UtilT, SrcCD) GNU Graphics is a set of programs which produce plots from ASCII or ! binary data. It supports output to Tektronix 4010, Postscript, and the X Window System or compatible devices. Features include support for output in ln03 and TekniCAD TDA file formats; a replacement for the ! `spline' program; examples of shell scripts using `graph' and `plot'; a ! statistics toolkit; and the use of `configure' for installation. Existing ports need retesting. Contact Rich Murphey, `Rich@rice.edu', --- 1163,1174 ---- C++. Both will produce hash functions in either C or C++. ! * GNU Graphics (SrcCD, UtilT) GNU Graphics is a set of programs which produce plots from ASCII or ! binary data. It supports output to Tektronix 4010, Postscript & the MIT X Window System or compatible devices. Features include support for output in ln03 and TekniCAD TDA file formats; a replacement for the ! `spline' program; examples of shell scripts using `graph' and `plot'; & a ! statistics toolkit. Existing ports need retesting. Contact Rich Murphey, `Rich@rice.edu', *************** *** 825,847 **** if you can help test/port it to anything beyond a SPARCstation. ! * `grep'/`egrep'/`fgrep' (UtilD, UtilT, SrcCD) ! The `[ef]grep' programs are GNU's versions of the Unix programs of the ! same name. They are much faster than the traditional Unix versions. ! * `groff' and `mgm' (UtilT, SrcCD) ! `groff' is a document formatting system, which includes implementations ! of `troff', `pic', `eqn', `tbl', `refer', the `man', `ms' and `mm' ! macros, as well as drivers for Postscript, TeX dvi format, and ! typewriter-like devices. Also included is a modified version of the ! Berkeley `me' macros and an enhanced version of the X11 `xditview' ! previewer. ! `mgm' is a macro package for `groff'. It is almost compatible with the ! DWB `mm' macros and has several extensions. - * `gzip' (DjgppD, EmcsT, LangT, SrcCD, UtilT) - Some of the contents of our tape and FTP distributions are compressed. We have software on our tapes and FTP sites to uncompress these files. --- 1175,1205 ---- if you can help test/port it to anything beyond a SPARCstation. ! * grep (SrcCD, UtilD, UtilT) ! This package contains GNU `grep', `egrep', and `fgrep'. They are much ! faster than the traditional Unix versions. ! * Groff (SrcCD, UtilT) ! Groff is a document formatting system, which includes drivers for ! Postscript, TeX `dvi' format, and typewriter-like devices, as well as ! implementations of `eqn', `nroff', `pic', `refer', `tbl', `troff', and ! the `man', `ms', and `mm' macros. Groff's `mm' macro package is almost ! compatible with the DWB `mm' macros and has several extensions. Also ! included is a modified version of the Berkeley `me' macros and an ! enhanced version of the X11 `xditview' previewer. Written in C++, these ! programs can be compiled with GNU C++ Version 2.5 or later. ! ! Groff users are encouraged to contribute enhancements. Most needed are ! complete Texinfo documentation, a `grap' emulation (a `pic' preprocessor ! for typesetting graphs), a page-makeup postprocessor similar to `pm' ! (see `Computing Systems', Vol. 2, No. 2; ask `office@usenix.org' for ! information on obtaining a copy) and an ASCII output class for `pic' so ! that `pic' can be integrated with Texinfo. Questions and bug reports ! from users who have read the documentation that is provided with the ! distribution can be sent to `bug-groff@prep.ai.mit.edu'. ! * `gzip' (DjgppD, EmcsT, LangT, SrcCD, UtilT) Some of the contents of our tape and FTP distributions are compressed. We have software on our tapes and FTP sites to uncompress these files. *************** *** 852,856 **** `pack' program. ! * `hello' (UtilT, SrcCD) The GNU `hello' program produces a familiar, friendly greeting. It --- 1210,1214 ---- `pack' program. ! * `hello' (SrcCD, UtilT) The GNU `hello' program produces a familiar, friendly greeting. It *************** *** 861,867 **** Like any truly useful program, `hello' provides a built-in mail reader. ! * `hp2xx' (UtilT, SrcCD) ! GNU hp2xx reads HP-GL files, decomposes all drawing commands into elementary vectors, and converts them into a variety of vector and raster output formats. It is also an HP-GL previewer. Currently supported --- 1219,1225 ---- Like any truly useful program, `hello' provides a built-in mail reader. ! * `hp2xx' (SrcCD, UtilT) ! GNU `hp2xx' reads HP-GL files, decomposes all drawing commands into elementary vectors, and converts them into a variety of vector and raster output formats. It is also an HP-GL previewer. Currently supported *************** *** 872,883 **** under X11 (Unix), OS/2 (PM & full screen), MS-DOS (SVGA, VGA, & HGC). ! * `indent' (UtilD, UtilT, SrcCD) ! GNU `indent' is a modified version of the freely-redistributable BSD ! program of the same name. It formats C source according to GNU coding ! standards by default, though the BSD default and other formats are ! available as options. ! * `ispell' (UtilT, SrcCD) Ispell is an interactive spell checker that suggests "near misses" as --- 1230,1242 ---- under X11 (Unix), OS/2 (PM & full screen), MS-DOS (SVGA, VGA, & HGC). ! * `indent' (SrcCD, UtilD, UtilT) ! GNU `indent' is a revision of the BSD version. By default, it formats C ! source according to the GNU coding standards. The BSD default, K&R and ! other formats are available as options. It is also possible to define ! your own format. GNU `indent' is more robust and provides more ! functionality than other versions, e.g., it handles C++ comments. ! * Ispell (SrcCD, UtilT) Ispell is an interactive spell checker that suggests "near misses" as *************** *** 886,903 **** available. ! * JACAL *Not available from the FSF* ! JACAL is a symbolic mathematics system for the simplification and ! manipulation of equations and single and multiple-valued algebraic expressions constructed of numbers, variables, radicals, and algebraic functions, differential operators and holonomic functions. In addition, ! vectors and matrices of the above objects are included. ! JACAL was written in Scheme by Aubrey Jaffer. It comes with an IEEE ! P1178 and R4RS compliant version of Scheme ("SCM") written in C. SCM ! runs on Amiga, Atari-ST, MS-DOS, NOS/VE, VMS, Unix and similar systems. ! SLIB is a portable Scheme library used by JACAL. Get JACAL, SLIB, and ! SCM sources via anonymous FTP from either `nexus.yorku.ca' in ! `/pub/scheme/new', `altdorf.ai.mit.edu' in `/archive/scm' or `prep.ai.mit.edu' in `/pub/gnu/jacal'. --- 1245,1262 ---- available. ! * JACAL *Not available from the FSF* ! JACAL is a symbolic mathematics system for the manipulation and ! simplification of equations and single and multiple-valued algebraic expressions constructed of numbers, variables, radicals, and algebraic functions, differential operators and holonomic functions. In addition, ! vectors, matrices, and tensors of the above objects are included. ! JACAL was written in Scheme by Aubrey Jaffer. It comes with SCM, an IEEE ! P1178 and R4RS compliant version of Scheme written in C. SCM runs on ! Amiga, Atari-ST, MS-DOS, OS/2, NOS/VE, Unicos, VMS, Unix, and similar ! systems. SLIB is a portable Scheme library used by JACAL. Get JACAL, ! SLIB and SCM sources via anonymous FTP from either `ftp.maths.tcd.ie' in ! `/pub/bosullvn/jacal', `altdorf.ai.mit.edu' in `/archive/scm', or `prep.ai.mit.edu' in `/pub/gnu/jacal'. *************** *** 905,931 **** floppy disk with the source and executable files, send $99.00 to: ! Aubrey Jaffer ! 84 Pleasant Street ! Wakefield, MA 01880 ! USA ! ! * `less' (UtilD, UtilT, SrcCD) ! ! `less' is a display paginator similar to `more' and `pg' but with ! various features (such as the ability to scroll backwards) that most ! pagers lack. ! ! * libg++ (BinCD, LangT, SrcCD) ! ! The GNU C++ library is an extensive collection of C++ `forest' classes, ! a new IOStream library for input/output routines, and support tools for ! use with G++. Among the classes supported are Obstacks, ! multiple-precision Integers and Rationals, Complex numbers, arbitrary ! length Strings, BitSets, and BitStrings. There is also a set of ! pseudo-generic prototype files available for generating common container ! classes. Partial documentation in Texinfo format is included (not yet ! published on paper). ! * `m4' (UtilD, UtilT, SrcCD) GNU `m4' is an implementation of the traditional Unix macro processor. --- 1264,1273 ---- floppy disk with the source and executable files, send $99.00 to: ! Aubrey Jaffer ! 84 Pleasant Street ! Wakefield, MA 01880 ! USA ! * `m4' (SrcCD, UtilD, UtilT) GNU `m4' is an implementation of the traditional Unix macro processor. *************** *** 935,939 **** doing arithmetic, etc. ! * `make' (BinCD, EmcsT, LangT, UtilD, UtilT, SrcCD) GNU `make' supports POSIX 1003.2 and has all but a few obscure features --- 1277,1281 ---- doing arithmetic, etc. ! * `make' (BinCD, EmcsT, LangT, SrcCD, UtilD, UtilT) GNU `make' supports POSIX 1003.2 and has all but a few obscure features *************** *** 940,956 **** of the BSD and System V versions of `make', as well as many of our own extensions. GNU extensions include long options, parallel compilation, ! conditional execution and functions for text manipulation. Texinfo ! source for the `Make Manual' comes with the program. ! GNU `make' is on several of our tapes because some native `make' ! programs lack the `VPATH' feature essential for using the GNU configure ! system to its full extent. A shell script is included to build GNU ! `make' on such systems. - * MandelSpawn (UtilT, SrcCD) - A parallel Mandelbrot generation program for the MIT X Window System. ! * mtools (UtilT, SrcCD) mtools is a set of public domain programs to allow Unix systems to read, --- 1282,1302 ---- of the BSD and System V versions of `make', as well as many of our own extensions. GNU extensions include long options, parallel compilation, ! flexible implicit pattern rules, conditional execution and powerful text ! manipulation functions. Recent versions have improved error reporting ! and added support for the popular `+=' syntax to append more text to a ! variable's definition. Texinfo source for the `Make Manual' comes with ! the program. See ``GNU Documentation''. ! ! GNU `make' is on several of our tapes because some system vendors supply ! no `make' utility at all, and some native `make' programs lack the ! `VPATH' feature essential for using the GNU configure system to its full ! extent. The GNU `make' sources have a shell script to build `make' ! itself on such systems. ! * MandelSpawn (SrcCD, UtilT) A parallel Mandelbrot generation program for the MIT X Window System. ! * mtools (SrcCD, UtilT) mtools is a set of public domain programs to allow Unix systems to read, *************** *** 957,961 **** write and manipulate files on an MS-DOS file system (usually a diskette). ! * MULE (SrcCD) MULE is a MULtilingual Enhancement to GNU Emacs 18. It can handle many --- 1303,1307 ---- write and manipulate files on an MS-DOS file system (usually a diskette). ! * MULE (SrcCD) MULE is a MULtilingual Enhancement to GNU Emacs 18. It can handle many *************** *** 965,972 **** contain a mixture of characters from these languages. To input any of these characters, you can use various input methods provided by MULE ! itself. In addition, if you use MULE under some terminal emulator ! (kterm, cxterm, or exterm), you can use its input methods. ! * NetHack (UtilT, SrcCD) NetHack is a display-oriented adventure game similar to Rogue. Both --- 1311,1319 ---- contain a mixture of characters from these languages. To input any of these characters, you can use various input methods provided by MULE ! itself. In addition, if you use MULE under some terminal emulators ! (kterm, cxterm, or exterm), you can use its input methods. See ``GNU ! and Other Free Software in Japan'', for more information about MULE. ! * NetHack (SrcCD, UtilT) NetHack is a display-oriented adventure game similar to Rogue. Both *************** *** 973,1040 **** ASCII and X displays are supported. ! * NIH Class Library (LangT, SrcCD) The NIH Class Library (formerly known as "OOPS", Object-Oriented Program ! Support) is a portable collection of G++ classes, similar to those in Smalltalk-80, which has been developed by Keith Gorlen of the National Institutes of Health (NIH), using the C++ programming language. ! * Octave (LangT) ! Octave is a high-level language, primarily intended for numerical computations. It provides a convenient command line interface for solving linear and nonlinear problems numerically. ! Octave can do arithmetic for real and complex scalars and matrices, solve sets of nonlinear algebraic equations, integrate functions over finite and infinite intervals, and integrate systems of ordinary differential ! and differential-algebraic equations. Octave is available via anonymous ftp from `ftp.che.utexas.edu' in the ! directory `/pub/octave'. The files are in gzipped tar format (see the ! file `README' on `prep.ai.mit.edu:/pub/gnu'). ! ! The Octave distribution includes a 150+ page Texinfo manual. ! * Oleo (UtilT, SrcCD) Oleo is a spreadsheet program (better for you than the more expensive ! spreadsheets). It supports the X Window System and character-based terminals, and can output Embedded Postscript renditions of spreadsheets. Keybindings should be familiar to Emacs users and are configurable. Under X and in Postscript output, Oleo supports multiple, variable width ! fonts. ! * `p2c' (LangT, SrcCD) ! `p2c' is a Pascal-to-C translator written by Dave Gillespie. It is ! intended primarily for use on 32-bit machines, though porting it to ! convert code to work on 16-bit machines may be possible. ! * `patch' (UtilT, SrcCD) ! `patch' is our version of Larry Wall's program to take `diff's output and apply those differences to an original file to generate the modified version. ! * PCL (EmcsT, SrcCD) PCL is a free implementation of a large subset of CLOS, the Common Lisp ! Object System. PCL was written by Xerox Corporation. ! * `perl' (LangT, SrcCD) Larry Wall's `perl' combines the features and capabilities of `sed', `awk', `sh' and C, as well as interfaces to all the system calls and ! many C library routines. Perl Mode for editing `perl' code comes with GNU Emacs 19. ! * `ptx' (UtilD, UtilT, SrcCD) ! `ptx' is the GNU version of `ptx', a permuted index generator. Among ! other things, it produces readable "KWIC" (KeyWords In Context) indexes ! without the need of `nroff'. There is an option to output TeX code. ! * `rc' (UtilT, SrcCD) `rc' is a shell that features a C-like syntax (much more so than `csh') --- 1320,1401 ---- ASCII and X displays are supported. ! * NIH Class Library (LangT, SrcCD) The NIH Class Library (formerly known as "OOPS", Object-Oriented Program ! Support) is a portable collection of C++ classes, similar to those in Smalltalk-80, which has been developed by Keith Gorlen of the National Institutes of Health (NIH), using the C++ programming language. ! * `nvi' (SrcCD, UtilT) ! ! `nvi' is a free implementation of the `vi'/`ex' Unix editor. It has ! most of the functionality of the original `vi'/`ex', except "open" mode ! & the `lisp' option, which will be added. Enhancements over `vi'/`ex' ! include split screens with multiple buffers, ability to handle 8-bit ! data, infinite file & line lengths, tag stacks, infinite undo & extended ! regular expressions. It runs under BSD, Linux, NetBSD, FreeBSD, BSDI, ! AIX, HP-UX, DGUX, IRIX, PSF, PTX, Solaris, SunOS, Ultrix, Unixware & ! should port easily to many other systems. ! * Octave (LangT, SrcCD) ! ! Octave is a high-level language that is primarily intended for numerical computations. It provides a convenient command line interface for solving linear and nonlinear problems numerically. ! Octave does arithmetic for real and complex scalars and matrices, solve sets of nonlinear algebraic equations, integrate functions over finite and infinite intervals, and integrate systems of ordinary differential ! and differential-algebraic equations. Send queries and bug reports to: ! `bug-octave@che.utexas.edu'. Octave is available via anonymous ftp from `ftp.che.utexas.edu' in the ! directory `/pub/octave'. The files are in gzipped `tar' format (see the ! file `/pub/gnu/README' on `prep.ai.mit.edu'). Source is included for a ! 150+ page Texinfo manual, which is not yet published by the FSF. ! * Oleo (SrcCD, UtilT) Oleo is a spreadsheet program (better for you than the more expensive ! spreadsheets). It supports the MIT X Window System and character-based terminals, and can output Embedded Postscript renditions of spreadsheets. Keybindings should be familiar to Emacs users and are configurable. Under X and in Postscript output, Oleo supports multiple, variable width ! fonts. See ``Forthcoming GNUs'', for the plans for later releases of ! Oleo. ! * `p2c' (LangT, SrcCD) ! `p2c' is a Pascal-to-C translator written by Dave Gillespie. It ! recognizes many Pascal dialects including Turbo, HP, VAX, and ISO, and ! produces readable, maintainable, portable C. ! * `patch' (SrcCD, UtilT) ! `patch' is our version of Larry Wall's program to take `diff''s output and apply those differences to an original file to generate the modified version. ! * PCL (EmcsT, SrcCD) PCL is a free implementation of a large subset of CLOS, the Common Lisp ! Object System. It runs under CLISP, mentioned above. ! * `perl' (LangT, SrcCD) Larry Wall's `perl' combines the features and capabilities of `sed', `awk', `sh' and C, as well as interfaces to all the system calls and ! many C library routines. A perl mode for editing `perl' code comes with GNU Emacs 19. ! * `ptx' (SrcCD, UtilD, UtilT) ! GNU `ptx' is the GNU version of the traditional permuted index ! generator. It can handle multiple input files at once, produce TeX ! compatible output, and produce readable "KWIC" (KeyWords In Context) ! indexes without needing to use `nroff'. This version does not handle ! input files that do not fit in memory all at once. ! * `rc' (SrcCD, UtilT) `rc' is a shell that features a C-like syntax (much more so than `csh') *************** *** 1043,1047 **** scripts. It inspired the shell `es'. ! * RCS (UtilD, UtilT, SrcCD) The Revision Control System, RCS, is used for version control and --- 1404,1408 ---- scripts. It inspired the shell `es'. ! * RCS (SrcCD, UtilD, UtilT) The Revision Control System, RCS, is used for version control and *************** *** 1048,1063 **** management of software projects. When used with GNU `diff', RCS can handle binary files (executables, object files, 8-bit data, etc). Also ! see the entry for "CVS". ! * `recode' (UtilT, SrcCD) ! `recode' converts files between character sets and usages. When exact ! transliterations are not possible, it may get rid of the offending characters or fall back on approximations. This program recognizes or ! produces nearly 150 different character sets and is able to transliterate ! files between almost any pair. Most RFC 1345 character sets are ! supported. ! * regex (LangT, SrcCD) The GNU regular expression library supports POSIX.2, except for --- 1409,1424 ---- management of software projects. When used with GNU `diff', RCS can handle binary files (executables, object files, 8-bit data, etc). Also ! see the item about CVS in this article. ! * `recode' (SrcCD, UtilT) ! GNU `recode' converts files between character sets and usages. When ! exact transliterations are not possible, it may get rid of the offending characters or fall back on approximations. This program recognizes or ! produces nearly 150 different character sets and is able to ! transliterate files between almost any pair. Most RFC 1345 character ! sets are supported. ! * regex (LangT, SrcCD) The GNU regular expression library supports POSIX.2, except for *************** *** 1064,1095 **** internationalization features. In the past, it has been included in many GNU programs which use regex routines. Now it is finally available ! separately. ! * Scheme (SchmT, SrcCD) ! For information about Scheme, see "Contents of the Scheme Tape". The ! version on the Source Code CD-ROM only works under MS-DOS. ! * `screen' (UtilT, SrcCD) ! `screen' is a terminal multiplexor that runs several separate "screens" ! (ttys) on a single physical terminal. Each virtual terminal emulates a ! DEC VT100 plus several ANSI X3.64 and ISO 2022 functions. `screen' ! sessions can be detached and resumed later on a different terminal. ! * `sed' (UtilD, UtilT, SrcCD) `sed' is a stream-oriented version of `ed'. It is used copiously in ! shell scripts. GNU sed comes with the rx library, which is a faster ! version of regex. ! * Shellutils (UtilT, SrcCD) ! Shellutils are used interactively or in shell scripts: `basename', ! `date', `dirname', `echo', `env', `expr', `false', `groups', `id', ! `nice', `nohup', `printenv', `printf', `sleep', `stty', `su', `tee', ! `test', `true', `tty', `uname', `who', `whoami', & `yes'. ! * GNU Shogi (UtilT, SrcCD) Shogi is a Japanese game similar to Chess; a major difference is that --- 1425,1456 ---- internationalization features. In the past, it has been included in many GNU programs which use regex routines. Now it is finally available ! separately. A faster version of this library comes with `sed'. ! * Scheme (SchmT) ! For information about Scheme, see ``Scheme Tape''. ! * `screen' (SrcCD, UtilT) ! `screen' is a terminal multiplexer that runs several separate "screens" ! (ttys) on a single physical character-based terminal. Each virtual ! terminal emulates a DEC VT100 plus several ANSI X3.64 and ISO 2022 ! functions. `screen' sessions can be detached and resumed later on a ! different terminal type. ! * `sed' (SrcCD, UtilD, UtilT) `sed' is a stream-oriented version of `ed'. It is used copiously in ! shell scripts. GNU `sed' comes with the rx library, which is a faster ! version of regex (see ``Forthcoming GNUs''). ! * Shellutils (SrcCD, UtilT) ! Use shellutils interactively or in shell scripts: `basename', `date', ! `dirname', `echo', `env', `expr', `false', `groups', `id', `nice', ! `nohup', `printenv', `printf', `sleep', `stty', `su', `tee', `test', ! `true', `tty', `uname', `who', `whoami', and `yes'. ! * GNU Shogi (SrcCD, UtilT) Shogi is a Japanese game similar to Chess; a major difference is that *************** *** 1100,1133 **** feature, sequences of partial board patterns can be introduced in order to help the program play a good order of moves towards specific opening ! patterns. There is both a text and X display interface. ! GNU Shogi is primarily supported by Matthias Mutz on behalf of FSF. ! Matthias Mutz ! Universitaet Passau, FMI ! 94030 Passau ! Germany ! E-mail: `mutz@kirk.fmi.uni-passau.de' ! * Smalltalk (LangT, SrcCD) GNU Smalltalk is an interpreted object-oriented programming language ! system written in portable C. Features include an incremental garbage ! collector, a binary image save capability, the ability to invoke ! user-written C code and pass parameters to it, a GNU Emacs editing mode, ! optional byte-code compilation tracing and byte-code execution tracing, ! and automatically loaded per-user initialization files. ! * superopt (LangT, SrcCD) Superopt is a function sequence generator that uses an exhaustive generate-and-test approach to find the shortest instruction sequence for ! a given function. You provide the GNU superoptimizer a function, a CPU ! to generate code for, and how many instructions you can accept. Its ! application in GCC is described in the `ACM SIGPLAN PLDI'92' ! proceedings. Superopt supports: SPARC, m68k, m68020, m88k, IBM RS/6000, ! AMD 29000, Intel 80x86, Pyramid, DEC Alpha, & HP-PA. ! * `tar' (UtilT, SrcCD) GNU `tar' includes multivolume support, the ability to archive sparse --- 1461,1502 ---- feature, sequences of partial board patterns can be introduced in order to help the program play a good order of moves towards specific opening ! patterns. There are both character and X display interfaces. ! GNU Shogi is primarily supported by Matthias Mutz on behalf of the FSF. ! Matthias Mutz ! Universitaet Passau, FMI ! 94030 Passau ! Germany ! Electronic-mail: `mutz@fmi.uni-passau.de' + * Smalltalk (LangT, SrcCD) + GNU Smalltalk is an interpreted object-oriented programming language ! system written in highly portable C. It has been successfully ported to ! many Unix and some other platforms, including DOS (but these non-Unix ! ports are not available from the FSF). Current features include a ! binary image save capability, the ability to invoke user-written C code ! and pass parameters to it, a GNU Emacs editing mode, a version of the X ! protocol invocable from Smalltalk, optional byte-code compilation ! tracing and byte-code execution tracing, and automatically loaded ! per-user initialization files. It implements all of the classes and ! protocol in the Smalltalk-80 book "Smalltalk-80: The Language", except ! for the graphic user interface (`GUI') related classes. ! ! See ``Forthcoming GNUs'', for plans for later releases of Smalltalk. ! * Superopt (LangT, SrcCD) Superopt is a function sequence generator that uses an exhaustive generate-and-test approach to find the shortest instruction sequence for ! a given function. You provide the GNU superoptimizer, `gso', a ! function, a CPU to generate code for, and how many instructions you can ! accept. Its application in GCC is described in the `ACM SIGPLAN ! PLDI'92' proceedings. Superopt supports: SPARC, m68k, m68020, m88k, IBM ! RS/6000, AMD 29000, Intel 80x86, Pyramid, DEC Alpha, & HP-PA. ! * `tar' (SrcCD, UtilT) GNU `tar' includes multivolume support, the ability to archive sparse *************** *** 1134,1143 **** files, automatic archive compression/decompression, remote archives and special features that allow `tar' to be used for incremental and full ! backups. Unfortunately GNU `tar' implements an early draft of the POSIX ! 1003.1 `ustar' standard which is different from the final standard. ! Adding support for the new changes in a backward-compatible fashion is ! not trivial. ! * Termcap Library (UtilT, SrcCD) The GNU Termcap library is a drop-in replacement for `libtermcap.a' on --- 1503,1512 ---- files, automatic archive compression/decompression, remote archives and special features that allow `tar' to be used for incremental and full ! backups. Unfortunately, GNU `tar' implements an early draft of the ! POSIX 1003.1 `ustar' standard which is different from the final ! standard. Adding support for the new changes in a backward-compatible ! fashion is not trivial. ! * Termcap Library (SrcCD, UtilT) The GNU Termcap library is a drop-in replacement for `libtermcap.a' on *************** *** 1144,1267 **** any system. It does not place an arbitrary limit on the size of Termcap entries, unlike most other Termcap libraries. Included is source for the ! `Termcap Manual' in Texinfo format. ! * TeX *Not available from the FSF* ! TeX is document formatting system that handles complicated typesetting, ! including mathematics. It is the standard formatter for the GNU system. ! We do not distribute TeX because you can get it from the University of ! Washington, who serve as the center for maintenance of the Unix version ! of TeX. ! To order a full distribution written in `tar' on either a 1/4-inch 4-track QIC-24 cartridge or a 4mm DAT cartridge, send $210.00 to: ! Northwest Computing Support Center ! DR-10, Thomson Hall 35 ! University of Washington ! Seattle, WA 98195 ! E-mail: `unixtex@u.washington.edu' ! Phone: (206) 543-6259 ! ! Please make checks payable to the University of Washington. Checks must ! be in U.S. Dollars, drawn on a U.S. bank. Prepaid orders are preferred ! but purchase orders are acceptable; however, purchase orders carry an ! extra charge of $10.00 to pay for invoice processing. Overseas sites: ! please add to the base cost $20.00 for shipment via air parcel post, or ! $30.00 for shipment via courier. Please check with the above for ! current prices and formats. ! ! * Texinfo (EmcsT, LangT, SrcCD, UtilD, UtilT) ! ! Texinfo is a set of utilities which generate printed manuals and online ! hypertext-style documentation (called "Info"), and provide means for ! reading the online versions. Version 3 contains both GNU Emacs Lisp and ! standalone C programs, as well as source for the `Texinfo Manual'. ! ! * Textutils (UtilT, SrcCD) ! ! The Textutils programs manipulate textual data: `cat', `cksum', `comm', ! `csplit', `cut', `expand', `fold', `head', `join', `nl', `od', `paste', ! `pr', `sort', `split', `sum', `tac', `tail', `tr', `unexpand', `uniq', & ! `wc'. ! * Tcl (LangT, SrcCD) ! Tcl is an embeddable tool command language. `expect' and DejaGnu work ! with and use Tcl. ! * Tile Forth (LangT, SrcCD) Tile Forth is a 32-bit implementation of the Forth-83 standard written in ! C, allowing it to be easily moved between different computers ! (traditionally, Forth implementations are written in assembler to use the underlying hardware as optimally as possible, but this also makes ! them less portable). ! * `time' (UtilT, SrcCD) `time' is used to report statistics (usually from a shell) about the ! amount of user, system and real time used by a process. ! ! * `tput' (UtilT, SrcCD) ! ! `tput' is a portable way to allow shell scripts to use special terminal ! capabilities. GNU `tput' uses the Termcap database, rather than ! Terminfo as most implementations do. ! ! * UUCP (UtilT, SrcCD) ! ! This version of UUCP was written by Ian Lance Taylor, and is the standard ! UUCP system for GNU. It currently supports the `f', `g' (in all window ! and packet sizes), `G', `t' and `e' protocols, as well a Zmodem protocol ! and two new bidirectional protocols. If you have a Berkeley sockets ! library, it can make TCP connections. If you have TLI libraries, it can ! make TLI connections. ! ! * `uuencode' (UtilT, SrcCD) ! ! Uuencode and uudecode are used to transmit binary files over ! transmission mediums that do not support other than simple ASCII data. ! * `wdiff' (UtilT, SrcCD) ! `wdiff' compares two files, finding which words have been deleted or ! added to the first in order to obtain the second. We hope eventually to ! integrate it, as well as some ideas from a similar program called ! `spiff', into future releases of GNU `diff'. - Contents of the Emacs Tape - -------------------------- - - This tape contains a Common Lisp implementation, GNU Emacs, assorted - extensions that work with GNU Emacs, and a few other important utilities. ! * Calc 2.02b ! * CLISP 1993.11.08 ! * Elib 0.06 ! * GNU Emacs 18.59 ! * GNU Emacs 19.22 ! * `GNU Emacs Lisp Reference Manual', Edition 2.02.1 ! * `gzip' 1.2.4 ! * `make' 3.70 ! * PCL 1993.03.18 ! * Texinfo 3.1 ! Contents of the Languages Tape ! ------------------------------ This tape contains programming tools: compilers, interpreters, and related --- 1513,2091 ---- any system. It does not place an arbitrary limit on the size of Termcap entries, unlike most other Termcap libraries. Included is source for the ! `Termcap Manual' in Texinfo format. See ``GNU Documentation''. ! * TeX (SrcCD) ! TeX is a document formatting system that handles complicated ! typesetting, including mathematics. It is GNU's standard text formatter. ! You can obtain TeX from the University of Washington, which maintains and ! supports a tape distribution of TeX for Unix systems. The core material ! consists of Karl Berry's `web2c' TeX package, the sources for which are ! available via anonymous ftp; retrieval instructions are in ! `pub/tex/FTP.nwc' on `ftp.cs.umb.edu'. If you receive any installation ! support from the University of Washington, please consider sending them ! a donation. ! To order a full distribution written in `tar' on either a 1/4inch 4-track QIC-24 cartridge or a 4mm DAT cartridge, send $210.00 to: ! Northwest Computing Support Center ! DR-10, Thomson Hall 35 ! University of Washington ! Seattle, WA 98195 ! USA ! Electronic-Mail: `unixtex@u.washington.edu' ! Telephone: +1-206-543-6259 ! Please make checks payable to the University of Washington. Checks must ! be in U.S. dollars, drawn on a U.S. bank. Prepaid orders are preferred ! but purchase orders are acceptable; however, they carry an extra charge ! of $10.00 to pay for invoice processing. Overseas sites: please add to ! the base cost $20.00 for shipment via air parcel post, or $30.00 for ! shipment via courier. Please check with the above for current prices ! and formats. ! ! * Texinfo (EmcsT, LangT, SrcCD, UtilD, UtilT) ! ! Texinfo is a set of utilities which generate both printed manuals and ! online hypertext-style documentation (called "Info"). There are also ! programs for reading online Info documents. Version 3 has both GNU Emacs ! Lisp and standalone programs written in C or shell script. Texinfo mode ! for GNU Emacs enables easy editing and updating of Texinfo files. ! Programs provided include `makeinfo', `info', `texi2dvi', `texindex', ! `tex2patch', and `fixfonts'. Source for the `Texinfo Manual' is ! included. See ``GNU Documentation''. ! ! * Textutils (SrcCD, UtilT) ! ! The Textutils programs manipulate textual data. They include: `cat', ! `cksum', `comm', `csplit', `cut', `expand', `fold', `head', `join', `nl', ! `od', `paste', `pr', `sort', `split', `sum', `tac', `tail', `tr', ! `unexpand', `uniq', and `wc'. ! * Tile Forth (LangT, SrcCD) Tile Forth is a 32-bit implementation of the Forth-83 standard written in ! C, allowing it to be easily moved between different computers. ! (Traditionally, Forth implementations are written in assembler to use the underlying hardware as optimally as possible, but this also makes ! them less portable.) ! * `time' (SrcCD, UtilT) `time' is used to report statistics (usually from a shell) about the ! amount of user, system and real time used by a process. On some systems ! it also reports memory usage, page faults, and other statistics. ! * `tput' (SrcCD, UtilT) ! `tput' is a portable way for shell scripts to use special terminal ! capabilities. Our `tput' uses the Termcap database, instead of Terminfo ! as most others do. ! ! * UUCP (SrcCD, UtilT) ! ! This version of UUCP was written by Ian Lance Taylor, and is GNU's ! standard UUCP system. It supports the `f', `g' and `v' (in all window ! and packet sizes), `G', `t', `e', Zmodem and two new bidirectional (`i' ! and `j') protocols. If you have a Berkeley sockets library, it can make ! TCP connections. If you have TLI libraries, it can make TLI ! connections. Source is included for a Texinfo manual, which is not yet ! published by the FSF. ! ! * `uuencode' and `uudecode' (SrcCD, UtilT) ! ! `uuencode' and `uudecode' are used to transmit binary files over ! transmission mediums that support only simple ASCII data. ! ! * `wdiff' (SrcCD, UtilT) ! ! `wdiff' is a front-end to GNU `diff'. It compares two files, finding ! which words have been deleted or added to the first in order to create ! the second. It has many output formats and interacts well with ! terminals and pagers. `wdiff' is particularly useful when two texts ! differ only by a few words and paragraphs have been refilled. ! ! ! ! Program/Package Cross Reference ! ******************************* ! ! Here is a list of what package each GNU program or library is in. Programs ! on the two X11 tapes and the 4.4BSD-Lite tapes are not included, due to lack ! of space in this Bulletin. You can anonymous FTP a full list from ! `prep.ai.mit.edu' in the file `/pub/gnu/ProgramIndex'. ! ! a2p perl ! acm acm ! acms acm ! addftinfo Groff ! afm2tfm TeX ! ar Binutils ! autoconf Autoconf ! autoheader Autoconf ! ! b2m Emacs ! basename Shellutils ! bash BASH ! bc bc ! bdftops Ghostscript ! bibtex TeX ! bison Bison ! bms MandelSpawn ! bpltobzr Fontutils ! build ispell ! bzrto Fontutils ! ! c++ GCC ! c++filt Binutils ! c2ph perl ! cat Textutils ! cbars wdiff ! cc GCC ! cc1 GCC ! cc1obj GCC ! cc1plus GCC ! cccp GCC ! charspace Fontutils ! chgrp Fileutils ! chmod Fileutils ! chown Fileutils ! ci RCS ! cksum Textutils ! clisp CLISP ! cmail xboard ! cmmf TeX ! cmp Diffutils ! co RCS ! comm Textutils ! cp Fileutils ! cpio cpio ! cpp GCC ! cppstdin perl ! csplit Textutils ! ctags Emacs ! cu UUCP ! cut Textutils ! cvs CVS ! cvscheck CVS ! cvtmail Emacs ! ! d Fileutils ! date Shellutils ! dc dc ! dd Fileutils ! delatex TeX ! demangle Binutils ! descend CVS ! detex TeX ! df Fileutils ! diff Diffutils ! diff3 Diffutils ! digest-doc Emacs ! dir Fileutils ! dirname Shellutils ! dld dld ! doschk doschk ! du Fileutils ! dvi2tty TeX ! dvicopy TeX ! dvips TeX ! dvitype TeX ! ! ecc ecc ! echo Shellutils ! ed ed ! edit-pr GNATS ! egrep grep ! emacs Emacs ! emacsclient Emacs ! emacsserver Emacs ! emacstool Emacs ! env Shellutils ! eqn Groff ! es es ! esdebug es ! etags Emacs ! ex nvi ! expand Textutils ! expect DejaGnu ! expr Shellutils ! ! f2c f2c ! fakemail Emacs ! false Shellutils ! fax NetFax ! faxenq NetFax ! faxmail NetFax ! faxps NetFax ! faxq NetFax ! faxrm NetFax ! faxsend NetFax ! faxspooler NetFax ! fc f2c ! fgrep grep ! find find ! find2perl perl ! finger finger ! fingerd finger ! fixfonts Texinfo ! fixinc.svr4 GCC ! fixincludes GCC ! flex flex ! fold Textutils ! font2c Ghostscript ! fontconvert Fontutils ! forth Tile Forth ! forthicon Tile Forth ! forthtool Tile Forth ! freq ispell ! freqtbl ispell ! ! g++ GCC ! gas GAS ! gawk Gawk ! gcc GCC ! gdb GDB ! genclass libg++ ! gftodvi TeX ! gftopk TeX ! gftype TeX ! ghostview Ghostview ! gnats GNATS ! gnuchess Chess ! gnuchessc Chess ! gnuchessn Chess ! gnuchessr Chess ! gnuchessx Chess ! gnupdisp Shogi ! gnuplot gnuplot ! gnuplot_x11 gnuplot ! gnushogi Shogi ! gnushogir Shogi ! gnushogix Shogi ! go GnuGo ! gperf gperf ! gperf libg++ ! gprof Binutils ! graph Graphics ! grep grep ! grodvi Groff ! groff Groff ! grops Groff ! grotty Groff ! groups Shellutils ! gs Ghostscript ! gsbj Ghostscript ! gsdj Ghostscript ! gslj Ghostscript ! gslp Ghostscript ! gsnd Ghostscript ! gsrenderfont Fontutils ! gunzip gzip ! gzexe gzip ! gzip gzip ! ! h2ph perl ! h2pl perl ! head Textutils ! hello hello ! hexl Emacs ! hp2xx hp2xx ! ! id Shellutils ! ident RCS ! imageto Fontutils ! imgrotate Fontutils ! indent indent ! indxbib Groff ! info Texinfo ! inimf TeX ! initex TeX ! install Fileutils ! ispell ispell ! ! join Textutils ! ! lasergnu gnuplot ! latex TeX ! ld Binutils ! less less ! lesskey less ! libbfd.a Binutils ! libbfd.a GAS ! libbfd.a GDB ! libbzr.a Fontutils ! libc.a C Library ! libcurses.a nvi ! libF77.a f2c ! libg++.a libg++ ! libgdbm.a gdbm ! libgf.a Fontutils ! libgmp.a gmp ! libI77.a f2c ! libnihcl.a NIHCL ! libnihclmi.a NIHCL ! libnihclvec.a NIHCL ! liboctave.a Octave ! libpbm.a Fontutils ! libpk.a Fontutils ! libtcl.a DejaGnu ! libtermcap.a Termcap ! libtfm.a Fontutils ! libwidgets.a Fontutils ! limn Fontutils ! lkbib Groff ! ln Fileutils ! locate find ! look ispell ! lookbib Groff ! ls Fileutils ! ! m4 m4 ! make Make ! make-docfile Emacs ! make-path Emacs ! makeindex TeX ! makeinfo Texinfo ! MakeTeXPK TeX ! man-macros Groff ! mattrib mtools ! mcd mtools ! mcopy mtools ! mdel mtools ! mdir mtools ! me-macros Groff ! merge RCS ! mf TeX ! mformat mtools ! mft TeX ! mkdir Fileutils ! mkfifo Fileutils ! mkmanifest mtools ! mkmodules CVS ! mknod Fileutils ! mlabel mtools ! mm-macros Groff ! mmd mtools ! movemail Emacs ! mrd mtools ! mread mtools ! mren mtools ! ms-macros Groff ! mslaved MandelSpawn ! mt cpio ! mtype mtools ! mv Fileutils ! mvdir Fileutils ! mwrite mtools ! ! nethack Nethack ! nice Shellutils ! nl Textutils ! nlmconv Binutils ! nm Binutils ! nohup Shellutils ! nroff Groff ! ! objc GCC ! objcopy Binutils ! objdump Binutils ! objective-c GCC ! octave Octave ! od Textutils ! oleo Oleo ! ! p2c p2c ! paste Textutils ! patch patch ! patgen TeX ! pathchk Shellutils ! perl perl ! pfbtops Groff ! pic Groff ! pktogf TeX ! pktype TeX ! plot2fig Graphics ! plot2plot Graphics ! plot2ps Graphics ! plot2tek Graphics ! pltotf TeX ! pooltype TeX ! pr Textutils ! pr-addr GNATS ! pr-edit GNATS ! printenv Shellutils ! printf Shellutils ! protoize GCC ! ps2ascii Ghostscript ! ps2epsi Ghostscript ! psbb Groff ! ptx ptx ! ! query-pr GNATS ! ! ranlib Binutils ! rc rc ! rcs RCS ! rcs-to-cvs CVS ! rcs2log Emacs ! rcsdiff RCS ! rcsfreeze RCS ! rcsmerge RCS ! recode recode ! refer Groff ! rlog RCS ! rm Fileutils ! rmdir Fileutils ! rmt cpio ! rmt tar ! runtest DejaGnu ! runtest.exp DejaGnu ! ! s2p perl ! sccs2rcs CVS ! screen screen ! sdiff Diffutils ! sed sed ! send-pr GNATS ! shogi Shogi ! size Binutils ! sleep Shellutils ! soelim Groff ! sort Textutils ! split Textutils ! strings Binutils ! strip Binutils ! stty Shellutils ! su Shellutils ! sum Textutils ! superopt Superopt ! ! tac Textutils ! tail Textutils ! taintperl perl ! tangle TeX ! tar tar ! tbl Groff ! tcp Emacs ! tee Shellutils ! tek2plot Graphics ! test Shellutils ! test-g++ DejaGnu ! test-tool DejaGnu ! tex TeX ! tex3patch Texinfo ! texi2dvi Texinfo ! texindex Texinfo ! texspell TeX ! tfmtodit Groff ! tftopl TeX ! tgrind TeX ! time time ! timer Emacs ! touch Fileutils ! tput tput ! tr Textutils ! troff Groff ! true Shellutils ! tty Shellutils ! ! uname Shellutils ! uncompress gzip ! unexpand Textutils ! uniq Textutils ! unprotoize GCC ! uuchk UUCP ! uucico UUCP ! uuconv UUCP ! uucp UUCP ! uudecode uuencode ! uudir UUCP ! uuencode uuencode ! uulog UUCP ! uuname UUCP ! uupick UUCP ! uurate UUCP ! uusched UUCP ! uustat UUCP ! uuto UUCP ! uux UUCP ! uuxqt UUCP ! ! v Fileutils ! vcdiff Emacs ! vdir Fileutils ! vftovp TeX ! vi nvi ! virmf TeX ! virtex TeX ! vptovf TeX ! ! wakeup Emacs ! wc Textutils ! wdiff wdiff ! weave TeX ! who Shellutils ! whoami Shellutils ! ! x2p perl ! xargs find ! xbfe Fontutils ! xboard xboard ! xditview Groff ! xdvi TeX ! xms MandelSpawn ! xplot Graphics ! xshogi xshogi ! ! yes Shellutils ! yow Emacs ! ! zcat gzip ! zcmp gzip ! zdiff gzip ! zforce gzip ! zgrep gzip ! zmore gzip ! znew gzip + [ Shellutils ! Tapes ! ***** ! We offer Unix source code on tapes in `tar' format on these media: ! * 4mm DAT cartridges ! * 8mm Exabyte cartridges ! * Sun DC300XLP QIC-24 1/4in cartridges (readable on some other systems) ! * Hewlett-Packard 16-track DC600HC 1/4in cartridges ! * IBM RS/6000 QIC-150 1/4in cartridges (readable on some other systems) ! * 1600bpi 9-track 1/2in reel tape ! The contents of the reel and various cartridge tapes for Unix systems are the ! same (except for the RS/6000 Emacs tape, which also has executables for ! Emacs); only the media are different. For pricing information, see the Free ! Software Foundation Order Form in the centerfold. Source code for the ! manuals is included, in Texinfo format. See ``GNU Documentation''. ! Some of the files on the tapes may be compressed with `gzip' to make them ! fit. Refer to the top-level `README' file at the beginning of each tape for ! instructions on uncompressing them. `uncompress' and `unpack' *do not work*! ! Languages Tape ! -------------- This tape contains programming tools: compilers, interpreters, and related *************** *** 1268,1451 **** programs (parsers, conversion programs, debuggers, etc.). ! * Binutils 2.3 ! ! * Bison 1.22 ! ! * C Library 1.06.7 ! ! * DejaGnu 1.1.1 ! ! * `dld' 3.2.3 ! ! * `expect' 4.7.6 ! ! * `ecc' 1.2.1 ! ! * `f2c' 1993.04.28 ! ! * `flex' 2.4.5 ! ! * GAS 2.2 ! ! * GAWK 2.15.3 ! ! * GCC 2.5.7 (includes G++ & Objective C) ! ! * GDB 4.11 ! ! * `gdbm' 1.7.1 ! ! * `gmp' 1.3.2 ! ! * `gperf' 2.1a ! ! * `gzip' 1.2.4 ! ! * `indent' 1.8 ! ! * libg++ 2.5.3 ! ! * `make' 3.70 ! ! * NIH Class Library 3.0 ! ! * Octave 1.0 ! ! * `p2c' 1.20 ! ! * `perl' 4.036 ! ! * regex 0.12 ! ! * Smalltalk 1.1.1 ! ! * Superopt 2.3 - * Tcl 6.7 - * Texinfo 3.1 ! * Tile Forth 2.1 ! ! ! Contents of the Utilities Tape ! ------------------------------ ! ! This tape consists mostly of smaller utilities and miscellaneous applications ! not available on the other GNU tapes. ! ! * `acm' 4.2 ! ! * Autoconf 1.7 ! ! * BASH 1.13.5 ! ! * `bc' 1.02 ! ! * Chess 4.0.pl62 ! ! * `cpio' 2.3 ! ! * CVS 1.3 ! ! * `dc' 0.2 ! ! * Diffutils 2.6 ! ! * `doschk' 1.1 ! ! * `elvis' 1.7 ! ! * `es' 0.84 ! ! * Fax 3.2.1 ! ! * Fileutils 3.9 ! ! * `find' 3.8 ! ! * `finger' 1.37 ! ! * Fontutils 0.6 ! ! * Ghostscript 2.6.1 ! ! * Ghostview 1.5 ! ! * GNATS 3.2 ! ! * `gnuplot' 3.5 ! ! * GnuGo 1.1 ! ! * Graphics 0.17 ! ! * `grep'/`egrep'/`fgrep' 2.0 ! ! * Groff 1.08 ! ! * `gzip' 1.2.4 ! ! * `hello' 1.3 ! ! * `hp2xx' 3.1.4 ! ! * `ispell' 4.0 ! ! * `less' 177 ! ! * `m4' 1.1 ! ! * `make' 3.70 ! ! * MandelSpawn 0.07 ! ! * mtools 2.0.7 ! ! * NetHack 3.1.3 ! ! * Oleo 1.5 ! ! * `patch' 2.1 ! ! * `ptx' 0.3 ! ! * `rc' 1.4 ! ! * RCS 5.6.0.1 ! ! * `recode' 3.3 ! ! * `screen' 3.5.2 ! ! * `sed' 2.03 ! ! * Shellutils 1.9.2 ! ! * Shogi 1.1.pl02 ! ! * `tar' 1.11.2 ! ! * Termcap 1.2 ! ! * Texinfo 3.1 ! ! * Textutils 1.9 ! ! * `time' 1.6 ! ! * `tput' 1.0 ! ! * UUCP 1.04 ! ! * `uuencode' 1.0 ! * `wdiff' 0.4 ! Contents of the Scheme Tape ! --------------------------- Scheme is a simplified, lexically-scoped dialect of Lisp. It was designed at --- 2092,2214 ---- programs (parsers, conversion programs, debuggers, etc.). ! * Binutils 2.3 ! * Bison 1.22 ! * C Library 1.08 ! * DejaGnu 1.2 ! * dld 3.2.3 ! * ecc 1.2.1 ! * f2c 1994.04.14 ! * flex 2.4.6 ! * GAS 2.2 ! * Gawk 2.15.4 ! * GCC 2.5.8 (includes G++ & Objective-C) ! * GDB 4.12 ! * gdbm 1.7.1 ! * gmp 1.3.2 ! * gperf 2.1a ! * gzip 1.2.4 ! * indent 1.9.1 ! * libg++ 2.5.3 ! * Make 3.71 ! * NIH Class Library 3.0 ! * Octave 1.0 ! * p2c 1.20 ! * perl 4.036 ! * regex 0.12 ! * Smalltalk 1.1.1 ! * Superopt 2.3 ! * Texinfo 3.1 ! * Tile Forth 2.1 ! ! ! ! Utilities Tape ! -------------- ! ! This tape consists mostly of smaller utilities and miscellaneous applications. ! ! * acm 4.5 ! * Autoconf 1.10 ! * BASH 1.13.5 ! * bc 1.02 ! * Chess 4.0.69 ! * cpio 2.3 ! * CVS 1.3 ! * dc 0.2 ! * Diffutils 2.6 ! * doschk 1.1 ! * ed 0.1 ! * es 0.84 ! * Fileutils 3.9 ! * find 3.8 ! * finger 1.37 ! * Fontutils 0.6 ! * Ghostscript 2.6.1 ! * Ghostview 1.5 ! * Ghostview for Windows 1.0 ! * GNATS 3.2 ! * GnuGo 1.1 ! * gnuplot 3.5 ! * Graphics 0.17 ! * grep 2.0 (with egrep and fgrep) ! * Groff 1.09 ! * gzip 1.2.4 ! * hello 1.3 ! * hp2xx 3.1.4 ! * Ispell 4.0 ! * m4 1.1 ! * Make 3.71 ! * MandelSpawn 0.07 ! * mtools 2.0.7 ! * NetFax 3.2.1 ! * Nethack 3.1.3 ! * nvi 1.11 ! * Oleo 1.5 ! * patch 2.1 ! * ptx 0.3 ! * rc 1.4 ! * RCS 5.6.0.1 ! * recode 3.3 ! * screen 3.5.2 ! * sed 1.18 ! * sed 2.05 ! * Shellutils 1.9.4 ! * Shogi 1.1.02 ! * tar 1.11.2 ! * Termcap 1.2 ! * Texinfo 3.1 ! * Textutils 1.9 ! * time 1.6 ! * tput 1.0 ! * UUCP 1.05 ! * uuencode 1.0 ! * wdiff 0.04 ! * xboard 3.0.9 ! * xshogi 1.2.02 ! Emacs Tape ! ---------- ! This tape has Common Lisp systems and libraries, GNU Emacs, assorted ! extensions that work with GNU Emacs, and a few other important utilities. ! * Calc 2.02c ! * CLISP 1994.01.08 ! * GNU Common Lisp 1.0 ! * elib 0.06 ! * Emacs 18.59 ! * Emacs 19.23 ! * GNU Emacs Lisp Reference Manual 2.3 ! * gzip 1.2.4 ! * Make 3.71 ! * PCL 1993.03.18 ! * Texinfo 3.1 ! Scheme Tape ! ----------- Scheme is a simplified, lexically-scoped dialect of Lisp. It was designed at *************** *** 1456,1461 **** the Algorithmic Language Scheme" (MIT AI Lab Memo 848b), for which TeX source is included. It is written partly in C, but is presently hard to bootstrap. ! Binaries which can be used to bootstrap Scheme are available for the ! following systems: * HP 9000 series 300, 400, 700 & 800 running HP-UX 7.0 or 8.0 --- 2219,2223 ---- the Algorithmic Language Scheme" (MIT AI Lab Memo 848b), for which TeX source is included. It is written partly in C, but is presently hard to bootstrap. ! Binaries that can be used to bootstrap Scheme are available for: * HP 9000 series 300, 400, 700 & 800 running HP-UX 7.0 or 8.0 *************** *** 1467,1503 **** * DECstation 3100/5100 running Ultrix 4.0 ! * Sony NWS-3250 running NEWS OS 5.01 ! * Vax running 4.3 BSD If your system is not on this list and you don't enjoy the bootstrap ! challenge, see the "JACAL" entry in the "GNU Software Available Now." ! Contents of the X11 Tapes ! ------------------------- ! The two X11 tapes contain Version 11, Release 5 of the MIT X Window System. ! The first FSF tape contains all of the core software, documentation and some contributed clients. We call this the "required" X tape since it is ! necessary for running X or running GNU Emacs under X. The second, ! "optional", FSF tape contains contributed libraries and other toolkits, the ! Andrew User Interface System, games, and other programs. The X11 Required tape also contains all fixes and patches released to date. ! We update this tape as new fixes and patches are released. ! Berkeley Networking 2 Tape ! -------------------------- ! The Berkeley "Net2" release contains the second 4.3 BSD distribution and is ! newer than both 4.3 BSD-Tahoe and 4.3 BSD-Reno. It includes most of the BSD ! software system except for a few utilities, some parts of the kernel and some ! library routines which your own C library is likely to provide (we have ! replacements on other tapes for many of the missing programs). This release ! also contains third party software including Kerberos and some GNU software. --- 2229,2267 ---- * DECstation 3100/5100 running Ultrix 4.0 ! * Sony NeWS-3250 running NEWS OS 5.01 ! * Vax running 4.3BSD If your system is not on this list and you don't enjoy the bootstrap ! challenge, see the JACAL item in ``GNU Software''. ! X11 Tapes ! --------- ! The two X11 tapes contain Version 11, Release 6 of the MIT X Window System. ! The first tape contains all of the core software, documentation and some contributed clients. We call this the "required" X tape since it is ! necessary for running X or running GNU Emacs under X. The second, "optional" ! tape contains contributed libraries and other toolkits, the Andrew User ! Interface System, games, and other programs. The X11 Required tape also contains all fixes and patches released to date. ! We update this tape as new fixes and patches are released for programs on ! both tapes. See ``Tape & CD-ROM Subscription Service''. + We will distribute X11R5 on tape until X11R6 is stable, and on the + ``November 1993 Source Code CD-ROM'', while supplies last. ! ! Berkeley 4.4BSD-Lite Tape ! ------------------------- ! The "4.4BSD-Lite" release is the last from the Computer Systems Research ! Group at the University of California at Berkeley. It includes most of the ! BSD software system except for a few proprietary files that still remain in ! the full 4.4BSD distribution. *************** *** 1506,1724 **** -------------------------------- ! We offer two VMS tapes. One has just the GNU Emacs editor ( none of the other ! software on the Emacs Tape, described above, is included). The other has the ! GNU C compiler, Bison (to compile GCC), GAS (to assemble GCC's output) and ! some library and include files (none of the other software on the Languages ! Tape, described above, is included.). We are not aware of a GDB port for VMS. ! Both VMS tapes have executables from which you can bootstrap, as the DEC VMS C ! compiler cannot compile GCC. Please do not ask us to devote effort to VMS ! support, because it is peripheral to the GNU Project. ! ! ! ! Source Code CD-ROM ! ****************** ! ! The Free Software Foundation has produced its third source CD-ROM. It ! contains the following: ! ! * `acm' 3.1 ! ! * Autoconf 1.7 ! ! * BASH 1.13.4 ! ! * `bc' 1.02 ! ! * Binutils 1.9 & 2.3 ! ! * Bison 1.22 ! ! * GNU C Library 1.06.7 ! ! * Calc 2.02b ! ! * GNU Chess 4.0p62 ! ! * CLISP 1993.11.08 ! ! * `cperf' 2.1a ! ! * `cpio' 2.3 ! ! * CVS 1.3 ! ! * `dc' 0.2 ! ! * DejaGnu 1.0.1 ! ! * diffutils 2.6 ! ! * `dld' 3.2.3 ! ! * `doschk' 1.1 ! ! * `ecc' 1.2.1 ! ! * elib 0.06 ! ! * `elvis' 1.7 ! ! * Emacs 18.59 & Emacs 19.21 ! ! * `es' 0.84 ! ! * `f2c' 1993.04.28 ! ! * Fax 3.2.1 ! ! * Fileutils 3.9 ! ! * `find' 3.8 ! ! * `finger' 1.37 ! ! * `flex' 2.3.8 ! ! * Fontutils 0.6 ! ! * GAS 1.36.utah, 1.38.1, & 2.2 ! ! * Gawk 2.15.3 ! ! * GCC 2.5.4 ! ! * GDB 4.11 ! ! * `gdbm' 1.7.1 ! ! * Ghostscript 2.6.1 ! ! * Ghostview 1.5 ! ! * Ghostview for Windows 1.0 ! ! * `gmp' 1.3.2 ! ! * GNATS 3.01 ! ! * `gnuplot' 3.5 ! ! * GnuGo 1.1 ! ! * Graphics 0.17 ! ! * `grep'/`egrep'/`fgrep' 2.0 ! ! * Groff 1.08 ! ! * `gzip' 1.2.4 ! ! * `hello' 1.3 ! ! * `hp2xx' 3.1.3a ! ! * `indent' 1.8 ! ! * `ispell' 4.0 ! ! * `less' 177 ! ! * `libg++' 2.5.1 ! ! * `m4' 1.1 ! ! * `make' 3.69.1 - * MandelSpawn 0.06 - * mtools 2.0.7 ! * MULE 1.0 ! * Nethack 3.1.3 ! * NIHCL 3.0 ! * Oleo 1.5 ! * `p2c' 1.20 ! * `patch' 2.1 ! ! * PCL 1993.03.18 ! ! * `perl' 4.036 ! ! * `ptx' 0.3 ! ! * `rc' 1.4 ! ! * RCS 5.6.0.1 ! ! * `recode' 3.2.4 ! ! * regex 0.12 ! ! * MIT Scheme (MS-DOS) 7.2 ! ! * `screen' 3.5.2 ! ! * `sed' 1.18 & 2.03 ! ! * Shellutils 1.9.1 ! ! * GNU Shogi 1.1p02 ! ! * Smalltalk 1.1.1 ! ! * Superopt 2.3 ! ! * `tar' 1.11.2 ! ! * Termcap library 1.2 ! ! * Texinfo 3.1 ! ! * Textutils 1.9.1 ! ! * Tile Forth 2.1 ! ! * `time' 1.6 ! ! * `tput' 1.0 ! ! * UUCP 1.04 ! ! * `uuencode' 1.0 ! ! * `wdiff' 0.04 ! ! * X11R5 ! ! The CD-ROM also contains Texinfo source for the `GNU Emacs Lisp Reference ! Manual' Edition 2.02 for version 19 and a snapshot of the Emacs Lisp Archive ! at Ohio State University. (You can get libraries in this archive by UUCP ! (ask `staff@cis.ohio-state.edu' for directions) or by anonymous FTP from ! `archive.cis.ohio-state.edu' in `/pub/gnu/emacs/elisp-archive'.) ! ! The contents of the MIT Scheme, VMS, and Net2 tapes are not included ! ! The CD-ROM is in ISO 9660 format and can be mounted as a read-only file system on most operating systems. If your driver supports it you can mount ! the CD-ROM with "Rock Ridge" extensions and it will look just like an ordinary Unix file system, rather than one full of truncated and otherwise mangled names that fit the vanilla ISO 9660 specifications. ! You can build most of this software without needing to copy the sources off ! the CD. Only sufficient disk space for object files and intermediate build ! targets is required. Except for the MIT Scheme binaries for MS-DOS and the ! Ghostview for Windows executable, there are no precompiled programs on this ! CD. You will need a C compiler (programs which need some other interpreter ! or compiler normally provide the C source for a bootstrapping program). - If a business is ultimately paying, the CD costs $400. It costs $100 if you, - an individual, are paying out of your own pocket. * What do the individual and company prices mean? --- 2270,2315 ---- -------------------------------- ! We offer two VMS tapes. One has just GNU Emacs 18.59 (none of the other ! software on the ``Emacs Tape'', is included). The other has GCC 2.3.3, Bison ! 1.19 (to compile GCC), GAS 1.38 (to assemble GCC's output) and some library ! and include files (none of the other software on the ``Languages Tape'', is ! included). We are not aware of a GDB port for VMS. Both VMS tapes have ! executables from which you can bootstrap, as the DEC VMS C compiler cannot ! compile GCC. Please do not ask us to devote effort to VMS support, because it ! is peripheral to the GNU Project. ! CD-ROMs ! ******* ! We currently offer these CD-ROMs: ! * see ``May 1994 Source Code CD-ROM''. ! * see ``November 1993 Source Code CD-ROM''. ! * see ``Compiler Tools Binaries CD-ROM''. ! Our CD-ROMs are in ISO 9660 format and can be mounted as a read-only file system on most operating systems. If your driver supports it you can mount ! each CD-ROM with "Rock Ridge" extensions and it will look just like an ordinary Unix file system, rather than one full of truncated and otherwise mangled names that fit the vanilla ISO 9660 specifications. ! You can build most of the software without copying the sources off the CD. ! You only need enough disk space for object files and intermediate build ! targets. ! + Pricing of the GNU CD-ROMs + -------------------------- + + If a business or organization is ultimately paying, the May 1994 Source CD + costs $400. It costs $100 if you, an individual, are paying out of your own + pocket. The Compiler Tools Binaries CD-ROM costs $240 for a business or + organization, and $60 for an individual. + * What do the individual and company prices mean? *************** *** 1728,1733 **** We charge two different prices depending on who is buying. When a ! company or other organization buys the disk, we charge $400. When an ! individual buys the same disk, we charge just $100. This distinction is not a matter of who is allowed to use the software. --- 2319,2324 ---- We charge two different prices depending on who is buying. When a ! company or other organization buys the May 1994 Source CD-ROM, we charge ! $400. When an individual buys the same disk, we charge just $100. This distinction is not a matter of who is allowed to use the software. *************** *** 1740,1750 **** buying a disk "in person", then you are probably doing so as an individual. But if you expect to be reimbursed by your employer, then ! the disk is really for the company, so please pay the company price and ! get reimbursed for the company price. We won't try to check up on ! you--we use the honor system--so please cooperate. ! ! Buying CDs at the company price is especially helpful for the GNU ! project; just 80 CDs at the company price will support an FSF programmer ! or tech writer for a year. * Why is there an individual price? --- 2331,2341 ---- buying a disk "in person", then you are probably doing so as an individual. But if you expect to be reimbursed by your employer, then ! the disk is really for the company; so please pay the company price and ! get reimbursed for it. We won't try to check up on you--we use the honor ! system--so please cooperate. ! ! Buying CDs at the company price is especially helpful for Project GNU; ! just 80 May 1994 Source CDs at that price supports an FSF programmer or ! tech writer for a year. * Why is there an individual price? *************** *** 1754,1758 **** software for a much lower price than they would previously have paid for six different tapes. To lower the price more would cut into the FSF's ! funds very badly. However, for individuals, $400 is too high a price; hardly anyone could --- 2345,2349 ---- software for a much lower price than they would previously have paid for six different tapes. To lower the price more would cut into the FSF's ! funds very badly, and decrease the software development we can do. However, for individuals, $400 is too high a price; hardly anyone could *************** *** 1764,1769 **** Our stated prices are minimums. Feel free to pay a higher price if you wish to support GNU development more. The sky's the limit; we will ! accept as high a price as you can offer. Or simply give a ! tax-deductible donation to the Free Software Foundation, which is a tax-exempt public charity. --- 2355,2360 ---- Our stated prices are minimums. Feel free to pay a higher price if you wish to support GNU development more. The sky's the limit; we will ! accept as high a price as you can offer. Or simply give a donation ! (tax-deductible in the U.S.) to the Free Software Foundation, a tax-exempt public charity. *************** *** 1770,1824 **** Compiler Tools Binaries CD-ROM ! ****************************** We are now offering a CD-ROM that contains executables for GNU compiler tools ! for some systems which lack a compiler. This will allow users of those ! systems to compile GNU and other free software without having to buy a ! proprietary compiler. ! The CD-ROM is in ISO 9660 format and can be mounted as a read-only file ! system on most operating systems. If your driver supports it you can mount ! the CD-ROM with "Rock Ridge" extensions and it will look just like an ! ordinary Unix file system, rather than one full of truncated and otherwise ! mangled names that fit the vanilla ISO 9660 specifications. ! We hope to have more systems included with each update of this CD-ROM. If ! you can help build binaries for new systems (especially for systems that ! don't come with a C compiler), or have a system to suggest, please contact us ! at either address on the front cover. ! These programs: ! * DJGPP 1.11.m1 - * GCC/G++/Objective C 2.5.7 - * GDB 4.11 ! * GAS 2.2 ! * Binutils 2.3 - * Bison 1.22 - * Flex 2.4.5 ! * Make 3.70 ! * libg++ 2.5.3 ! For these platforms: ! * `i386-msdos' ! * `hppa1.1-hp-hpux9' ! * `sparc-sun-solaris2' - * `sparc-sun-sunos4.1' Tape & CD-ROM Subscription Service ********************************** --- 2361,2678 ---- + May 1994 Source Code CD-ROM + --------------------------- + + The Free Software Foundation has produced the fourth edition of its Source + Code CD-ROM. It contains the following: + + * acm 4.5 + * Autoconf 1.10 + * BASH 1.13.5 + * bc 1.02 + * Binutils 2.3 + * Bison 1.22 + * C Library 1.08 + * Calc 2.02c + * Chess 4.0.69 + * CLISP 1994.01.08 + * cpio 2.3 + * CVS 1.3 + * dc 0.2 + * DejaGnu 1.2 + * Diffutils 2.6 + * dld 3.2.3 + * doschk 1.1 + * ecc 1.2.1 + * ed 0.1 + * elib 0.06 + * Emacs 18.59 & Emacs 19.23 + * es 0.84 + * f2c 1994.04.14 + * Fileutils 3.9 + * find 3.8 + * finger 1.37 + * flex 2.4.6 + * Fontutils 0.6 + * GAS 1.36.utah & GAS 2.2 + * Gawk 2.15.4 + * GCC 2.5.8 + * GCL 1.0 + * GDB 4.12 + * gdbm 1.7.1 + * Ghostscript 2.6.1 + * Ghostview 1.5 + * Ghostview for Windows 1.0 + * gmp 1.3.2 + * GNATS 3.2 + * GnuGo 1.1 + * gnuplot 3.5 + * gperf 2.1a + * Graphics 0.17 + * grep 2.0 + * Groff 1.09 + * gzip 1.2.4 + * hello 1.3 + * hp2xx 3.1.4 + * indent 1.9.1 + * Ispell 4.0 + * libg++ 2.5.3 + * m4 1.1 + * Make 3.71 + * MandelSpawn 0.07 + * mtools 2.0.7 + * MULE 1.0 + * NetFax 3.2.1 + * Nethack 3.1.3 + * NIHCL 3.0 + * nvi 1.11 + * Octave 1.0 + * Oleo 1.5 + * p2c 1.20 + * patch 2.1 + * PCL 1993.03.18 + * perl 4.036 + * ptx 0.3 + * rc 1.4 + * RCS 5.6.0.1 + * recode 3.3 + * regex 0.12 + * screen 3.5.2 + * sed 2.05 + * Shellutils 1.9.4 + * Shogi 1.1.02 + * Smalltalk 1.1.1 + * Superopt 2.3 + * tar 1.11.2 + * Termcap 1.2 + * TeX 3.1 + * Texinfo 3.1 + * Textutils 1.9.1 + * Tile Forth 2.1 + * time 1.6 + * tput 1.0 + * UUCP 1.05 + * uuencode 1.0 + * wdiff 0.04 + * X11R6-Required + * xboard 3.0.9 + * xshogi 1.2.02 + + The CD-ROM also contains Texinfo source for the `GNU Emacs Lisp Reference + Manual' Edition 2.3 for version 19, and other manuals listed in + ``GNU Documentation''; as well as a snapshot of the Emacs Lisp Archive at Ohio + State University. (You can get the libraries in this archive by anonymous FTP + from `archive.cis.ohio-state.edu' in `/pub/gnu/emacs/elisp-archive'.) + + The contents of the MIT Scheme, X11 Optional and VMS tapes are not included. + Programs that are only on MS-DOS diskettes and not on the tapes are also not + included. See ``Tapes'' and ``MS-DOS Diskettes''. + + Except for the Ghostview for Windows executable, there are no precompiled + programs on this CD. You will need a C compiler. (Programs which need some + other interpreter or compiler normally provide the C source for a + bootstrapping program.) + + + + November 1993 Source Code CD-ROM + -------------------------------- + + The Free Software Foundation is still distributing the third edition of its + Source Code CD-ROM. We are doing so because it contains X11R5, and we feel + that people should have a choice between X11R5 and X11R6 until the latter is + stable. Because the other software on the third edition is older than that + on the fourth edition, we have reduced the price of the third edition. The + third edition contains the following: + + * acm 3.1 + * Autoconf 1.7 + * BASH 1.13.4 + * bc 1.02 + * Binutils 1.9 & Binutils 2.3 + * Bison 1.22 + * C Library 1.06.7 + * Calc 2.02b + * Chess 4.0p62 + * CLISP 1993.11.08 + * cperf 2.1a + * cpio 2.3 + * CVS 1.3 + * dc 0.2 + * DejaGnu 1.0.1 + * diffutils 2.6 + * dld 3.2.3 + * doschk 1.1 + * ecc 1.2.1 + * elib 0.06 + * Emacs 18.59 & Emacs 19.21 + * es 0.84 + * f2c 1993.04.28 + * NetFax 3.2.1 + * Fileutils 3.9 + * find 3.8 + * finger 1.37 + * flex 2.3.8 + * Fontutils 0.6 + * GAS 1.36.utah, 1.38.1, & 2.2 + * Gawk 2.15.3 + * GCC 2.5.4 + * GDB 4.11 + * gdbm 1.7.1 + * Ghostscript 2.6.1 + * Ghostview 1.5 + * Ghostview for Windows 1.0 + * gmp 1.3.2 + * GNATS 3.01 + * gnuplot 3.5 + * GnuGo 1.1 + * Graphics 0.17 + * grep 2.0 (with egrep and fgrep) + * Groff 1.08 + * gzip 1.2.4 + * hello 1.3 + * hp2xx 3.1.3a + * indent 1.8 + * Ispell 4.0 + * less 177 + * libg++ 2.5.1 + * m4 1.1 + * Make 3.69.1 + * MandelSpawn 0.06 + * mtools 2.0.7 + * MULE 1.0 + * Nethack 3.1.3 + * NIHCL 3.0 + * Oleo 1.5 + * p2c 1.20 + * patch 2.1 + * PCL 1993.03.18 + * perl 4.036 + * ptx 0.3 + * rc 1.4 + * RCS 5.6.0.1 + * recode 3.2.4 + * regex 0.12 + * MIT Scheme 7.2 (for MS-DOS) + * screen 3.5.2 + * sed 1.18 & sed 2.03 + * Shellutils 1.9.1 + * GNU Shogi 1.1p02 + * Smalltalk 1.1.1 + * Superopt 2.3 + * tar 1.11.2 + * Termcap library 1.2 + * TeX 3.1 + * Texinfo 3.1 + * Textutils 1.9.1 + * Tile Forth 2.1 + * time 1.6 + * tput 1.0 + * UUCP 1.04 + * uuencode 1.0 + * wdiff 0.04 + * X11R5-Required + + The CD-ROM also contains Texinfo source for the `GNU Emacs Lisp Reference + Manual' Edition 2.02 for version 19, and other manuals listed in + ``GNU Documentation''; as well as a snapshot of the Emacs Lisp Archive at Ohio + State University. (You can get the libraries in this archive by anonymous + FTP from `archive.cis.ohio-state.edu' in `/pub/gnu/emacs/elisp-archive'.) + + The contents of the MIT Scheme, X11 Optional and VMS tapes are not included. + Programs that are only on MS-DOS diskettes and not on the tapes are also not + included. See ``Tapes'' and ``MS-DOS Diskettes''. + + Except for the MIT Scheme binaries for MS-DOS and the Ghostview for Windows + executable, there are no precompiled programs on this CD. You will need a C + compiler (programs which need some other interpreter or compiler normally + provide the C source for a bootstrapping program). + + + Compiler Tools Binaries CD-ROM ! ------------------------------ We are now offering a CD-ROM that contains executables for GNU compiler tools ! for some systems which lack a compiler. This helps people with 80386 and ! 80486 machines running MS-D0S, not to mention HP-PA machines running HP-UX 9, ! and Sparcs running SunOS 4.1 & Solaris 2. ! ! This enables the people who use these systems to compile GNU and other free ! software without having to buy a proprietary compiler. ! ! We hope to have more systems on each update of this CD-ROM. If you can help ! build binaries for new systems (especially those that don't come with a C ! compiler), or have one to suggest, please contact us at the addresses on page ! 1. ! These programs: ! * DJGPP 1.11.m1 ! * GCC/G++/Objective-C 2.5.7 ! * GDB 4.11 ! * GAS 2.2 ! * Binutils 2.3 ! * Bison 1.22 ! * Flex 2.4.5 ! * Make 3.70 ! * libg++ 2.5.3 ! For these platforms: ! * `i386-msdos' ! * `hppa1.1-hp-hpux9' ! * `sparc-sun-solaris2' ! * `sparc-sun-sunos4.1' ! MS-DOS Diskettes ! **************** ! The FSF distributes, on 3.5inch 1.44MB diskettes, some of the GNU software ! ported to MS-DOS. The disks have both sources and executables. ! DJGPP Diskettes ! --------------- ! We offer DJGPP on 21 diskettes. For details, see ``GNU Software''. ! ! Emacs Diskettes ! --------------- ! Demacs is a version of GNU Emacs. Two versions are included on the six ! diskettes we distribute: one handles 8-bit character sets; the other, based ! on an early version of MULE, handles 16-bit character sets including Kanji. ! We will be replacing Demacs with the MS-DOS port of GNU Emacs 19, as soon as ! the port is ready. The number of diskettes is not yet known. See ``GNU ! Software'', for details about both programs. + Selected Utilities Diskettes + ---------------------------- + The GNUish MS-DOS Project releases GNU software ported to PC compatibles. We + offer these programs on five diskettes. In general, this software will run + on 8086 and 80286-based machines; an 80386 is not required. Some of these + utilities are necessarily missing features. Included are: `cpio', `diff', + `find', `flex', `gdbm', `grep', `indent', `less', `m4', `make', `ptx', RCS, + `sed', `shar', `sort', & Texinfo. + + + + Windows Diskette + ---------------- + + We offer GNU Chess and `gnuplot' for Microsoft Windows on a single diskette. + + + Tape & CD-ROM Subscription Service ********************************** *************** *** 1826,1851 **** If you do not have net access, our subscription service enables you to stay current with the latest FSF developments. For a one-time cost equivalent to ! three tapes or CD-ROMs, we will mail you four new versions of the tape of ! your choice or the Source Code CD-ROM. The tapes are sent each quarter, the ! Source Code CD-ROMs are sent as they are issued. (The Source Code CD-ROM is ! currently issued twice a year, but we may issue it more frequently in the ! future.) Regularly, we will send you a new version of an Emacs, Languages, Utilities, ! or MIT X Window System Required tape or the Source CD-ROM. The BSD Net-2, ! MIT Scheme, and MIT X Window System Optional tapes are not changed often ! enough to warrant quarterly updates. The Compiler Tools Binaries CD-ROM is ! so new we do not yet know if we will be offering subscriptions to it. ! ! Since Emacs 19 is now on the Emacs Tape and the Source CD-ROM, a subscription ! to either will be a convenient way to keep current with Emacs 19 updates as ! it moves through beta-test. A subscription is also an easy way to keep up with the regular bug fixes to ! the MIT X Window System. We update the X11 Required tape, as fixes and ! patches for the X Window System are issued throughout the year. Each new ! edition of the Source CD-ROM also has updated sources for the X Window System. ! See sections "Tape Subscriptions" and "CD-ROM Subscriptions" on the "Free ! Software Foundation Order Form". --- 2680,2708 ---- If you do not have net access, our subscription service enables you to stay current with the latest FSF developments. For a one-time cost equivalent to ! three tapes or CD-ROMs (plus shipping in some cases), we will ship you four ! new versions of the tape of your choice or the Source Code CD-ROM. The tapes ! are sent each quarter, the CD-ROMs are sent as they are issued (which is ! currently twice a year, but we may issue it more frequently in the future.) Regularly, we will send you a new version of an Emacs, Languages, Utilities, ! or MIT X Window System (X11R6) Required tape or the Source CD-ROM. The MIT ! Scheme and MIT X Window System Optional tapes are not changed often enough to ! warrant quarterly updates. We do not yet know if we will be offering ! subscriptions to the Compiler Tools Binaries CD-ROM. ! ! Since Emacs 19 is on the Emacs Tape and the Source CD-ROM, a subscription to ! either is an easy way to keep current with Emacs 19 as it evolves. A subscription is also an easy way to keep up with the regular bug fixes to ! the MIT X Window System. We will update the X11R6 Required tape as fixes and ! patches are issued throughout the year. Each new edition of the ``Source ! Code CD-ROM'', also has updated sources for the MIT X Window System. ! ! Please note: In two cases, you must pay 4 times the normal shipping required ! for a single order when you pay for each subscription. If you're in Alaska, ! Hawaii, or Puerto Rico you must add $20.00 for shipping for each ! subscription. If you're outside of U.S., Canada, and Puerto Rico, you have ! to add $120.00 for shipping subscription. See "Unix and VMS Software" & ! "Shipping Instructions" on the FSF Order Form, in the centerfold. *************** *** 1855,1861 **** The Free Software Foundation has been repeatedly asked to create a package ! that provides executables for all of our software. Usually we offer only sources. In addition to providing binaries with the source code, the Deluxe ! Distribution includes copies of all our printed manuals and reference cards. The FSF Deluxe Distribution contains the binaries and sources to hundreds of --- 2712,2719 ---- The Free Software Foundation has been repeatedly asked to create a package ! that provides executables for all of our software. Normally we offer only sources. In addition to providing binaries with the source code, the Deluxe ! Distribution includes a complete set of our printed manuals and reference ! cards. The FSF Deluxe Distribution contains the binaries and sources to hundreds of *************** *** 1864,1954 **** You may choose one of these machines and operating systems: HP 9000 series ! 300, 700 or 800 (4.3 BSD or HP-UX); RS/6000 (AIX); SONY News 68k (4.3 BSD or NewsOS 4); Sun-3, Sun-4, or SPARC (SunOS 4 or Solaris). If your machine or system is not listed, or if a specific program has not been ported to that machine, please call the FSF office at the phone number below or send e-mail ! to `gnu@prep.ai.mit.edu'. ! We supply the software on one of these media in Unix tar format: 1600 or 6250 ! bpi, 1/2 inch, reel to reel tape; Sun DC300XLP 1/4 inch cartridge, QIC-24; HP ! 16 track DC600HC 1/4 inch cartridge; IBM RS/6000 1/4 inch cartridge, QIC-150; ! Exabyte 8mm cartridge; DAT 4mm cartridge. If your computer cannot read any ! of these, please call us. ! ! The manuals included are one each of the Bison, Calc, Gawk, GNU C Compiler, ! GNU C Library, GNU Debugger, Flex, GNU Emacs Lisp Reference, Make, Texinfo & ! Termcap manuals; six copies of the manual for GNU Emacs; & a packet of ! reference cards each for GNU Emacs, Calc, the GNU Debugger, Bison, & Flex. ! ! In addition, every Deluxe Distribution includes CD-ROMs (in ISO 9660 format ! with Rock Ridge extensions) that contains sources of our software & compiler ! tool binaries for some systems. ! ! The Deluxe Distribution costs $5000. It is for people who want to get ! everything compiled for them or who want to make a purchase that helps the ! FSF in a large way. To order, please fill out the "Deluxe Distribution" ! sections in the "Free Software Foundation Order Form" and send it to: Free Software Foundation, Inc. 675 Massachusetts Avenue ! Cambridge, MA 02139-3309 USA - Electronic mail: gnu@prep.ai.mit.edu - Phone: +1-617-876-3296 - FAX: +1-617-492-9057 - FAX (in Japan): - 0031-13-2473 (KDD) - 0066-3382-0158 (IDC) - - - - MS-DOS Distribution - ******************* - - The FSF distributes, on 3.5 inch 1.44MB diskettes, some of the GNU software - ported to MS-DOS. The disks have both sources and executables. - - - - Contents of the Demacs diskettes - -------------------------------- - - Demacs is a version of GNU Emacs 18.55 ported to MS-DOS, with some changes - from Emacs 18.57. Two versions are actually included: one which handles - 8-bit character sets; and one based on an early version of MULE which handles - 16-bit character sets including Kanji. We distribute them on five diskettes. - - Demacs runs on Intel 80386 and 80486-based machines running MS-DOS. It is - compatible with XMS memory managers and VCPI, but not yet with Microsoft - Windows extended mode or other DPMI managers. - - - - Contents of the DJGPP diskettes - ------------------------------- - - We distribute DJGPP on 22 diskettes. DJGPP requires at least 5MB of hard - disk space to install, and 512K of RAM to use. See `GNU Software Available - Now" for more information on DJGPP. - - - - Contents of the Selected Utilities diskettes - -------------------------------------------- - - The GNUish MS-DOS Project releases GNU software ported to PC compatibles. In - general, this software will run on 8086 and 80286-based machines; an 80386 is - not required. Some of these utilities are necessarily missing features. - Included are: `cpio', `diff', some file utilities, `find', `flex', `gdbm', - `grep', `indent', `less', `m4', `make', MAWK, MicroEmacs, `ptx', RCS, `sed', - `shar', `sort', & Texinfo. - ! ! Contents of the Windows diskette ! -------------------------------- ! ! We are distributing versions of GNU Chess and `gnuplot' ported to Microsoft ! Windows on a single diskette. --- 2722,2764 ---- You may choose one of these machines and operating systems: HP 9000 series ! 300, 700 or 800 (4.3BSD or HP-UX); RS/6000 (AIX); SONY News 68k (4.3BSD or NewsOS 4); Sun-3, Sun-4, or SPARC (SunOS 4 or Solaris). If your machine or system is not listed, or if a specific program has not been ported to that machine, please call the FSF office at the phone number below or send e-mail ! to `gnu@prep.ai.mit.edu' to see what we can do. ! We supply the software on one of these tape formats in Unix `tar' format: ! 1600 or 6250bpi 1/2in reel; Sun DC300XLP 1/4in cartridge, QIC-24; ! Hewlett-Packard 16-track DC600HC 1/4in cartridge; IBM RS/6000 1/4in ! cartridge, QIC-150; Exabyte 8mm cartridge; DAT 4mm cartridge. If your ! computer cannot read any of these, please contact us to see if we can handle ! your format. ! ! The manuals included are one each of the `Bison', `Calc', `Gawk', `GNU C ! Compiler', `GNU C Library', `GDB', `Flex', `GNU Emacs 19 Lisp Reference', ! `Make', `Texinfo', and `Termcap' manuals; six copies of the `GNU Emacs 19' ! manual; and packets of ten reference cards each for GNU Emacs, Calc, GDB, ! Bison, & Flex. In addition, every Deluxe Distribution includes CD-ROMs (in ! ISO 9660 format with Rock Ridge extensions) that contain sources of our ! software & compiler tool binaries for some systems. ! ! The price of the Deluxe Distribution is $5000 (shipping included). It is ! designed for people who want to have everything compiled for them. These ! sales provide enormous financial assistance towards helping the FSF develop ! more free software. To order, please fill out the "Deluxe Distribution" ! section on the Free Software Foundation Order Form in the centerfold and send ! it to: Free Software Foundation, Inc. 675 Massachusetts Avenue ! Cambridge, MA 02139--3309 USA ! Telephone: +1-617-876-3296 ! Fax: +1-617-492-9057 ! Fax (in Japan): ! 0031-13-2473 (KDD) ! 0066-3382-0158 (IDC) ! Electronic mail: gnu@prep.ai.mit.edu *************** *** 1957,1977 **** *********** ! We still have our Free Software Foundation T-shirts available, designed by ! Cambridge artist Jamal Hannah. The front of the t-shirt has an image of a ! GNU hacking at a workstation with the text "GNU's Not Unix" above and the ! text "Free Software Foundation" below. They are available in two colors, ! Natural and Black. Natural is an off-white, unbleached, undyed, ! environment-friendly cotton, printed with black ink, and is great for ! tye-dyeing or displaying as is. Black is printed with white ink and is ! perfect for late night hacking. All shirts are thick 100% cotton, and are ! available in sizes M, L, XL and XXL. ! The front of the t-shirt has an image of a GNU hacking at a workstation with the text "GNU's Not Unix" above and the text "Free Software Foundation" below. ! We have just added a copy of the GNU General Public License to the back of ! the t-shirt, which use to be blank. ! Use the "Free Software Foundation Order Form" to order your shirt, and ! consider getting one as a present for your favorite hacker! --- 2767,2784 ---- *********** ! We have Free Software Foundation T-shirts, with a drawing by Cambridge artist ! Jamal Hannah. They are available in two colors, Natural and Black. Natural ! is an off-white, unbleached, undyed, environment-friendly cotton, printed ! with black ink, and is great for tye-dyeing or displaying as is. Black is ! printed with white ink and is perfect for late night hacking. All shirts are ! thick 100% cotton, and are available in sizes M, L, XL and XXL. ! The front of the T-shirt has an image of a GNU hacking at a workstation with the text "GNU's Not Unix" above and the text "Free Software Foundation" below. ! We have added a copy of the GNU General Public License to the T-shirt's back, ! which used to be blank. ! Use the Free Software Foundation Order Form, in the centerfold, to order your ! shirt, and consider getting one as a present for your favorite hacker! *************** *** 1981,2003 **** All items are distributed with permission to copy and to redistribute. ! Texinfo source for each manual is on the appropriate tape, diskette, or ! CD-ROM; the prices for these magnetic media do not include printed ! documentation. All items are provided on an "as is" basis, with no warranty ! of any kind. Please allow six weeks for delivery (though it won't usually ! take that long). ! PRICE AND CONTENTS MAY CHANGE WITHOUT NOTICE AFTER June 30, 1994. - The following tapes in the formats indicated (see sub-section for each tape in - "GNU Software Available Now" for contents): ! Please circle the dollar amount for each tape you order. ! *** NEW !!! *** *** 4mm DAT tapes *** ! Reel to Sun (1) HP IBM (2) Exabyte DAT ! reel RS/6000 NEW!! Unix tar Unix tar Unix tar Unix tar Unix tar Unix tar 9-track QIC-24 16-track QIC-150 --- 2788,2811 ---- All items are distributed with permission to copy and to redistribute. ! Texinfo source for each manual and source for each reference card is on the ! appropriate tape, diskette, or CD-ROM; the prices for these magnetic media do ! not include printed documentation. All items are provided on an "as is" ! basis, with no warranty of any kind. Please allow six weeks for delivery ! (though it won't usually take that long). ! PRICE AND CONTENTS MAY CHANGE WITHOUT NOTICE AFTER January 31, 1995. ! Unix and VMS Software ! --------------------- ! ! The following tapes in the formats indicated (see "Tapes" for contents): ! Please circle the dollar amount for each tape you order. ! Reel to Sun (1) HP IBM (2) Exabyte DAT ! reel RS/6000 Unix tar Unix tar Unix tar Unix tar Unix tar Unix tar 9-track QIC-24 16-track QIC-150 *************** *** 2004,2016 **** 1600 bpi DC300XLP DC600HC DC600A 1/2" reel 1/4" c.t. 1/4" c.t. 1/4" c.t. 8mm c.t. 4mm c.t. ! (c.t. = cartridge tape) ! (n/a = not available) Emacs $200 $210 $230 $215 (3) $205 $225 ! Languages $200 $210 $230 n/a $205 $225 Utilities $200 $210 $230 $215 $205 $225 ! BSD-Net2 $200 $210 $230 $215 $205 $225 Scheme $200 $210 $230 $215 $205 $225 X11r5-Required $200 $210 $230 $215 $205 $225 X11r5-Optional $200 $210 $230 $215 $205 $225 (1) Sun tapes can be read on some other Unix systems. --- 2812,2827 ---- 1600 bpi DC300XLP DC600HC DC600A 1/2" reel 1/4" c.t. 1/4" c.t. 1/4" c.t. 8mm c.t. 4mm c.t. ! ! (c.t. = cartridge tape) ! Emacs $200 $210 $230 $215 (3) $205 $225 ! Languages $200 $210 $230 $215 $205 $225 Utilities $200 $210 $230 $215 $205 $225 ! 4.4BSD-Lite $200 $210 $230 $215 $205 $225 Scheme $200 $210 $230 $215 $205 $225 X11r5-Required $200 $210 $230 $215 $205 $225 X11r5-Optional $200 $210 $230 $215 $205 $225 + X11r6-Required $200 $210 $230 $215 $205 $225 + X11r6-Optional $200 $210 $230 $215 $205 $225 (1) Sun tapes can be read on some other Unix systems. *************** *** 2023,2029 **** Emacs $600 $630 $690 $645 $615 $675 ! Languages $600 $630 $690 n/a $615 $675 Utilities $600 $630 $690 $645 $615 $675 ! X11r5-Required $600 $630 $690 $645 $615 $675 Subtotal $ ______ Please put total of the above circled amounts here. --- 2834,2840 ---- Emacs $600 $630 $690 $645 $615 $675 ! Languages $600 $630 $690 $645 $615 $675 Utilities $600 $630 $690 $645 $615 $675 ! X11r6-Required $600 $630 $690 $645 $615 $675 Subtotal $ ______ Please put total of the above circled amounts here. *************** *** 2039,2065 **** ! FSF Deluxe Distribution (see "The Deluxe Distribution" and end of order form): ! ____ @ $5000 = $ ______ The Deluxe Distribution, with manuals, and ! executables. ! Compiler Tools Binaries CD-ROM, in ISO 9660 format (see "Compiler Tools ! Binaries CD-ROM"): ! *** NEW !!! *** ____ @ $240 = $ ______ GNU Compiler Tools Binaries CD-ROM for ! corporations and other organizations. NEW!! ____ @ $60 = $ ______ GNU Compiler Tools Binaries CD-ROM for individuals. ! NEW!! ! Source Code CD-ROM, in ISO 9660 format (see "Source Code CD-ROM"): ! ____ @ $400 = $ ______ GNU Source Code CD-ROM for corporations and ! other organizations. ! ____ @ $100 = $ ______ GNU Source Code CD-ROM for individuals. --- 2850,2893 ---- ! FSF Deluxe Distribution (see "The Deluxe Distribution"): ! ____ @ $5000 = $ ______ The Deluxe Distribution, with manuals, etc. + Machine: _____________________________________________________________________ ! Operating system: ____________________________________________________________ ! Media type: __________________________________________________________________ ! ! + CD-ROM, in ISO 9660 format (see "Compiler Tools Binaries CD-ROM"): + ____ @ $240 = $ ______ GNU Compiler Tools Binaries CD-ROM for ! corporations and other organizations. ____ @ $60 = $ ______ GNU Compiler Tools Binaries CD-ROM for individuals. ! + Source Code CD-ROM, in ISO 9660 format (see "May 1994 Source Code CD-ROM"): ! *** NEW !!! *** ! ____ @ $400 = $ ______ GNU Source Code CD-ROM, May 1994 edition with X11r6, ! for corporations and other organizations. NEW !!! ! ____ @ $100 = $ ______ GNU Source Code CD-ROM, May 1994 edition with X11r6, ! for individuals. NEW !!! ! ! ! Source Code CD-ROM, in ISO 9660 format (see "November 1993 Source Code ! CD-ROM"): ! ! *** PRICE REDUCED !!! *** ! ! ____ @ $260 = $ ______ GNU Source Code CD-ROM, November 1993 edition with ! X11r5, for corporations & other organizations. ! PRICE REDUCED !!! ! ____ @ $65 = $ ______ GNU Source Code CD-ROM, November 1993 edition with ! X11r5, for individuals. PRICE REDUCED !!! *************** *** 2067,2077 **** (see "Tape & CD-ROM Subscription Service"): - *** NEW !!! *** - ____ @ $1200 = $ ______ Subscription to the GNU Source Code CD-ROM for ! corporations and other organizations. NEW!! ____ @ $300 = $ ______ Subscription to the GNU Source Code CD-ROM for ! individuals. NEW!! The following source and executables for MS-DOS, on 3.5" 1.44MB diskettes --- 2895,2906 ---- (see "Tape & CD-ROM Subscription Service"): ____ @ $1200 = $ ______ Subscription to the GNU Source Code CD-ROM for ! corporations and other organizations. ____ @ $300 = $ ______ Subscription to the GNU Source Code CD-ROM for ! individuals. ! + MS-DOS Software + --------------- The following source and executables for MS-DOS, on 3.5" 1.44MB diskettes *************** *** 2078,2085 **** (see "MS-DOS Distribution"): ! ____ @ $ 90 = $ ______ Demacs diskettes, GNU Emacs, for 80386 and up. ! ! ____ @ $ 80 = $ ______ DJGPP diskettes, GCC version 2, for 80386 and up. ! ____ @ $ 85 = $ ______ Selected Utilities diskettes, 8086 and up. --- 2907,2915 ---- (see "MS-DOS Distribution"): ! *** BEING UPDATED !!! *** ! ____ @ $ 90 = $ ______ Emacs diskettes, GNU Emacs, for 80386 and up. ! BEING UPDATED !!! ! ____ @ $ 80 = $ ______ DJGPP diskettes, GCC version 2, for 80386 and up ! (also on the "Compiler Tools Binaries CD-ROM"). ____ @ $ 85 = $ ______ Selected Utilities diskettes, 8086 and up. *************** *** 2088,2117 **** ! The following manuals, 7 by 9.25 inches, soft cover with an illustration, ! offset printed, "lay-flat" binding (see "GNU Documentation"): ! ____ @ $ 25 = $ ______ GNU Emacs version 18 manual, unit price for 1 to 5 ! copies, about 410 pages, with a reference card. ! ____ @ $ 17 = $ ______ GNU Emacs version 18 manuals, unit price for 6 or ! more. ! ____ @ $ 50 = $ ______ GNU Emacs Lisp Reference version 18 manual, about ! 614 pages in 2 volumes. ! ____ @ $200 = $ ______ A box of 5 GNU Emacs Lisp Reference version 18 ! manuals. - *** NEW !!! *** ____ @ $ 25 = $ ______ GNU Emacs version 19 manual, unit price for 1 to 5 copies, about 418 pages, new 9th edition with a ! reference card. NEW!! ____ @ $ 17 = $ ______ GNU Emacs version 19 manuals, unit price for 6 or more. ____ @ $ 50 = $ ______ GNU Emacs Lisp Reference version 19 manual, about ! 756 pages in 2 volumes. ____ @ $200 = $ ______ A box of 5 GNU Emacs Lisp Reference version 19 ! manuals. ____ @ $ 20 = $ ______ Debugging with GDB, about 182 pages, with a reference card. ! ____ @ $ 20 = $ ______ Texinfo manual, about 248 pages. ____ @ $ 20 = $ ______ Gawk manual, about 188 pages. --- 2918,2947 ---- ! Manuals ! ------- ! The following manuals (see "GNU Documentation"): ____ @ $ 25 = $ ______ GNU Emacs version 19 manual, unit price for 1 to 5 copies, about 418 pages, new 9th edition with a ! reference card. ____ @ $ 17 = $ ______ GNU Emacs version 19 manuals, unit price for 6 or more. + *** UPDATED !!! *** ____ @ $ 50 = $ ______ GNU Emacs Lisp Reference version 19 manual, about ! 756 pages in 2 volumes. UPDATED for Emacs 19.23!! ____ @ $200 = $ ______ A box of 5 GNU Emacs Lisp Reference version 19 ! manuals. UPDATED for Emacs 19.23!! ! *** UPDATED !!! *** ! ____ @ $ 50 = $ ______ Using and Porting GNU CC version 2.5, about 428 ! pages. UPDATED !!! ! ____ @ $ 50 = $ ______ GNU C Library Reference Manual, about 670 pages. + ____ @ $ 50 = $ ______ GNU Emacs Calc manual, about 596 pages, with a + reference card. ____ @ $ 20 = $ ______ Debugging with GDB, about 182 pages, with a reference card. ! *** UPDATED !!! *** ! ____ @ $ 20 = $ ______ Texinfo manual, about 248 pages. UPDATED !!! ____ @ $ 20 = $ ______ Gawk manual, about 188 pages. *************** *** 2123,2134 **** ____ @ $ 20 = $ ______ Flex manual, about 124 pages, with a reference card. - - - The following manuals, 7 by 9.25 inches, soft cover, photocopied, GBC binding: - - ____ @ $ 50 = $ ______ Using and Porting GNU CC version 2.3, about 428 - pages. - ____ @ $ 50 = $ ______ GNU C Library Reference Manual, about 670 pages. - ____ @ $ 15 = $ ______ Termcap manual, 68 pages. --- 2953,2956 ---- *************** *** 2135,2143 **** ! The following manual, 8.5 by 11 inches, soft cover, photocopied, GBC binding: ! ____ @ $ 50 = $ ______ GNU Emacs Calc manual, about 596 pages, with a ! reference card. The following reference cards, unit price, without the manuals: --- 2957,2975 ---- ! Older Manuals ! ------------- ! ____ @ $ 25 = $ ______ GNU Emacs version 18 manual, unit price for 1 to 5 ! copies, about 410 pages, with a reference card. ! ____ @ $ 17 = $ ______ GNU Emacs version 18 manuals, unit price for 6 or ! more. ! ____ @ $ 50 = $ ______ GNU Emacs Lisp Reference version 18 manual, about ! 614 pages in 2 volumes. ! ____ @ $200 = $ ______ A box of 5 GNU Emacs Lisp Reference version 18 ! manuals. ! + Reference Cards + --------------- The following reference cards, unit price, without the manuals: *************** *** 2173,2182 **** ! GNU/FSF T-shirts, thick 100% cotton (see "FSF T-shirts"): ! *** NEW !!! *** The back of the t-shirt, which used to be blank, now has a copy of the GNU ! General Public License on it. NEW!! ____ @ $ 15 = $ ______ Size M ____ natural ____ black. --- 3005,3015 ---- ! T-shirts ! -------- ! GNU/FSF T-shirts, thick 100% cotton (see "FSF T-shirt"): The back of the t-shirt, which used to be blank, now has a copy of the GNU ! General Public License on it. ____ @ $ 15 = $ ______ Size M ____ natural ____ black. *************** *** 2191,2194 **** --- 3024,3032 ---- Subtotal $ ______ + + + Tax and Shipping Costs + ---------------------- + + $ ______ In Massachusetts: add 5% sales tax, or give tax exempt number. *************** *** 2199,2202 **** --- 3037,3041 ---- reference cards; i.e., shipping for all other items = $5 + $1 * n. + Add $20 for each tape or CD-ROM subscription. + $ ______ Outside of U.S., Canada, and Puerto Rico for shipping: Add $20 base charge, and then add $10 *************** *** 2204,2207 **** --- 3043,3047 ---- order; i.e., shipping for all other items = $20 + $10 * n. + Add $120 for each tape or CD-ROM subscription. + $ ______ Optional (tax-deductible in the U.S.) donation. ------ *************** *** 2212,2253 **** ! Please answer the following questions: ! ! How did you hear about the GNU Project? ____________________________________ ! ! ____________________________________________________________________________ - ____________________________________________________________________________ - - Do you also have network access to GNU software? Yes ______ No ______ - - - - If you are ordering a CD-ROM, please answer the following questions: - - Is this a replacement for a previous edition of the GNU Source Code CD-ROM? - - Yes ______ No ______ - - If FSF offered a less expensive CD-ROM, which had only GNU Emacs on it, but - also included binaries for several platforms, would you purchase it: (check - one) - ______ instead of the Source Code CD-ROM? - - ______ in addition to the Source Code CD-ROM? - - ______ Would not purchase it. - - - - Orders filled only upon receipt of check, money order or credit card order in - U.S. dollars. We do not have the staff to handle the billing of unpaid - orders. Please help keep our lives simple by including your payment with your - order. - - - Please make checks payable to the "Free Software Foundation". - - Name: ________________________________________________________________________ --- 3052,3058 ---- ! Shipping Information ! -------------------- Name: ________________________________________________________________________ *************** *** 2263,2268 **** Telephone number in case of a problem with your order. ! For international orders, please include a FAX numbers. ______________________ For orders from outside the U.S.: --- 3068,3079 ---- Telephone number in case of a problem with your order. ! For international orders, please include a FAX number. _______________________ ! + Orders filled only upon receipt of check, money order or credit card order in + U.S. dollars. Unpaid orders will be returned to the sender. We do not have + the staff to handle the billing of unpaid orders. Please help keep our lives + simple by including your payment with your order. + For orders from outside the U.S.: *************** *** 2273,2284 **** ! For Deluxe Distributions: ! ! Machine: _____________________________________________________________________ ! ! Operating system: ____________________________________________________________ ! ! Media type: __________________________________________________________________ ! --- 3084,3088 ---- ! Please make checks payable to the "Free Software Foundation". *************** *** 2285,2293 **** For Credit Card Orders: ! FSF takes these credit cards: Visa, Mastercard, JCB, Diner's Club, and Carte ! Blanche. Please note that we are charged about 5% of an order's total amount ! in credit card processing fees. Please consider paying by check instead, or ! adding on a 5% donation to make up the difference. To place a credit card ! order, please give us this information: Card type: ___________________________________________________________________ --- 3089,3097 ---- For Credit Card Orders: ! The Free Software Foundation takes these credit cards: Visa, Mastercard, JCB, ! Diner's Club, and Carte Blanche. Please note that we are charged about 5% of ! an order's total amount in credit card processing fees. Please consider ! paying by check instead, or adding on a 5% donation to make up the difference. ! To place a credit card order, please give us this information: Card type: ___________________________________________________________________ *************** *** 2300,2312 **** Please mail orders to: Free Software Foundation 675 Massachusetts Avenue ! Version: Jan 1994 ASCII etc/ORDERS Cambridge, MA 02139 USA ! +1 617 876 3296 ! FAX: +1 617 492 9057 FAX numbers in Japan: PRICES AND CONTENTS MAY CHANGE 0031-13-2473 (KDD) ! WITHOUT NOTICE AFTER June 30, 1994. 0066-3382-0158 (IDC) --------------------------------------------------------------------- --- 3104,3118 ---- + For wire transfers orders: Call or write us for details. + Please mail orders to: Free Software Foundation 675 Massachusetts Avenue ! Version: June 1994 ASCII etc/ORDERS Cambridge, MA 02139 USA ! +1-617-876-3296 ! FAX: +1-617-492-9057 FAX numbers in Japan: PRICES AND CONTENTS MAY CHANGE 0031-13-2473 (KDD) ! WITHOUT NOTICE AFTER January 31, 1995. 0066-3382-0158 (IDC) --------------------------------------------------------------------- diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/etc/ORDERS.JAPAN emacs-19.24/etc/ORDERS.JAPAN *** emacs-19.23/etc/ORDERS.JAPAN Fri Mar 11 00:11:12 1994 --- emacs-19.24/etc/ORDERS.JAPAN Sun May 22 19:32:41 1994 *************** *** 5,22 **** * indicates New or Substantially Updated items. ! * Compiler Tools Binaries CD-ROM version 1, if a Y36,000 ________ __________ corporation or other organization is ultimately paying. ! * Compiler Tools Binaries CD-ROM version 1, if an Y9,000 ________ __________ individual is ultimately paying. ! * Source Code CD-ROM version 3, if a corporation Y49,000 ________ __________ ! or other organization is ultimately paying. ! * Source Code CD-ROM version 3, if an individual Y15,000 ________ __________ ! is ultimately paying. ! * Subscription to next four versions of the Y180,000 ________ __________ Source Code CD-ROMs. (There is no subscription yet to the Compiler Tools Binaries CD-ROM.) --- 5,30 ---- * indicates New or Substantially Updated items. ! Compiler Tools Binaries CD-ROM edition 1, if a Y36,000 ________ __________ corporation or other organization is ultimately paying. ! Compiler Tools Binaries CD-ROM edition 1, if an Y9,000 ________ __________ individual is ultimately paying. ! * Source Code CD-ROM edition 4, with X11R6, if a Y49,000 ________ __________ ! corporation or other organization is ultimately ! paying. ! ! * Source Code CD-ROM edition 4, with X11R6, if Y15,000 ________ __________ ! an individual is ultimately paying. ! ! Source Code CD-ROM edition 3, with X11R5, if a Y49,000 ________ __________ ! corporation or other organization is ultimately ! paying. ! Source Code CD-ROM edition 3, with X11R5, if Y15,000 ________ __________ ! an individual is ultimately paying. ! Subscription to next four editions of the Y180,000 ________ __________ Source Code CD-ROMs. (There is no subscription yet to the Compiler Tools Binaries CD-ROM.) *************** *** 25,32 **** (per tape; see the next page for more details.) ! * Emacs manual, with reference card Y4,600 ________ __________ (Ninth Edition for version 19) ! * Emacs Lisp Reference manual (Ed. 2.1 for v. 19) Y8,900 ________ __________ Emacs Calc manual, with reference card Y9,300 ________ __________ --- 33,44 ---- (per tape; see the next page for more details.) ! Emacs manual, with reference card Y4,600 ________ __________ (Ninth Edition for version 19) ! Emacs manual, with reference card Y4,600 ________ __________ ! (Edition for version 18) ! ! * Emacs Lisp Reference manual Y8,900 ________ __________ ! (Edition 2.3 for version 19.23) Emacs Calc manual, with reference card Y9,300 ________ __________ *************** *** 33,38 **** (Edition 2.02 for version 2.02) ! Using and Porting GNU CC manual Y8,900 ________ __________ ! (June 93 Edition for version 2.4) GNU C Library Reference manual Y9,300 ________ __________ --- 45,50 ---- (Edition 2.02 for version 2.02) ! * Using and Porting GNU CC manual Y8,900 ________ __________ ! (October 93 Edition for version 2.5) GNU C Library Reference manual Y9,300 ________ __________ *************** *** 39,46 **** (June 93 Edition for version 1.07) ! * Debugging with GDB manual, with reference card Y3,900 ________ __________ (Edition 4.09 for version 4.9) ! * Texinfo manual (Edition 2.16 for version 3) Y3,500 ________ __________ Termcap manual (Second edition for version 1.2) Y2,700 ________ __________ --- 51,58 ---- (June 93 Edition for version 1.07) ! Debugging with GDB manual, with reference card Y3,900 ________ __________ (Edition 4.09 for version 4.9) ! * Texinfo manual (Edition 2.19 for version 3) Y3,500 ________ __________ Termcap manual (Second edition for version 1.2) Y2,700 ________ __________ *************** *** 56,61 **** (Edition 1.03 for version 2.3.7) ! Packet of ten Emacs reference cards Y1,500 ________ __________ Packet of ten GDB reference cards Y1,500 ________ __________ --- 68,75 ---- (Edition 1.03 for version 2.3.7) ! Packet of ten Emacs 19 reference cards Y1,500 ________ __________ + Packet of ten Emacs 18 reference cards Y1,500 ________ __________ + Packet of ten GDB reference cards Y1,500 ________ __________ *************** *** 66,79 **** Packet of ten Flex reference cards Y1,500 ________ __________ ! * FSF T-shirt (size M) Y5,500 ________ __________ Color: Natural or Black (circle) ! * FSF T-shirt (size L) Y5,500 ________ __________ Color: Natural or Black (circle) ! * FSF T-shirt (size XL) Y5,500 ________ __________ Color: Natural or Black (circle) ! * FSF T-shirt (size XXL) Y5,500 ________ __________ Color: Natural or Black (circle) --- 80,93 ---- Packet of ten Flex reference cards Y1,500 ________ __________ ! FSF T-shirt (size M) Y5,500 ________ __________ Color: Natural or Black (circle) ! FSF T-shirt (size L) Y5,500 ________ __________ Color: Natural or Black (circle) ! FSF T-shirt (size XL) Y5,500 ________ __________ Color: Natural or Black (circle) ! FSF T-shirt (size XXL) Y5,500 ________ __________ Color: Natural or Black (circle) *************** *** 98,102 **** with your order. ! Tel: __________________ Fax: __________________ E-Mail: _________________ ____ Please add my name to the mailing list for future FSF events in --- 112,116 ---- with your order. ! Telephone: ________________ Fax: ________________ E-Mail: _________________ ____ Please add my name to the mailing list for future FSF events in *************** *** 110,118 **** ____ I am interested in working as a volunteer for the FSF. ! Prices and contents may change without notice after June 30, 1994. ! Version: Jan 1994 ASCII etc/ORDERS.JAPAN ! Fax toll-free to 0031-13-2473 or 0066-3382-0158. For use in Japan only. Free Software Foundation --- 124,133 ---- ____ I am interested in working as a volunteer for the FSF. ! Prices and contents may change without notice after January 31, 1995. ! Version: June 1994 ASCII etc/ORDERS.JAPAN ! Fax toll-free to 0031-13-2473 (KDD) or 0066-3382-0158 (IDC). For ! use in Japan only. Free Software Foundation *************** *** 125,133 **** GNU ORDER FORM ADDITIONAL INSTRUCTIONS ! Within Japan, you may fax your order toll-free to 0031-13-2473 or to ! 0066-3382-0158. If you are able to pay for international direct dial, please ! fax your order directly to 001-1-617-492-9057. This will save the FSF the ! toll charges. Inquires may be made to gnu@prep.ai.mit.edu. Orders may also ! be sent by e-mail to japan-fsf-orders@prep.ai.mit.edu or by ordinary mail to: Free Software Foundation --- 140,148 ---- GNU ORDER FORM ADDITIONAL INSTRUCTIONS ! Within Japan, you may fax your order toll-free to 0031-13-2473 (KDD) or to ! 0066-3382-0158 (IDC). If you are able to pay for international direct dial, ! please fax your order directly to 001-1-617-492-9057. This will save the FSF ! the toll charges. Inquires may be made to gnu@prep.ai.mit.edu. Orders may ! also be sent by ordinary mail to: Free Software Foundation *************** *** 145,149 **** Account number: 3683216 ! Prices and contents may change without notice after June 30, 1994. All software and publications are distributed with permission to copy and to redistribute. Texinfo source for each manual is on the Source Code CD-ROM --- 160,164 ---- Account number: 3683216 ! Prices and contents may change without notice after January 31, 1995. All software and publications are distributed with permission to copy and to redistribute. Texinfo source for each manual is on the Source Code CD-ROM *************** *** 164,173 **** Software may also be ordered on magnetic tape. The following tape titles are ! available: Emacs, Languages, Utilities, BSD NET2, Scheme, X11R5-Required, and ! X11R5-Optional. The following tape formats are available: ! Generic Unix tar 9-track 1600bpi 1/2" reel ! * Generic Unix tar DAT 4mm cartridge tape Generic Unix tar Exabyte 8mm cartridge tape --- 179,198 ---- Software may also be ordered on magnetic tape. The following tape titles are ! available: ! * Emacs ! * Languages ! * Utilities ! Scheme ! * 4.4BSD-Lite ! * X11R6-Required ! * X11R6-Optional ! * X11R5-Required ! X11R5-Optional ! ! The following tape formats are available: ! Generic Unix tar 9-track 1600bpi 1/2" reel tape ! Generic Unix tar DAT 4mm cartridge tape Generic Unix tar Exabyte 8mm cartridge tape *************** *** 182,186 **** (may also be read on other systems) ! VMS backup 9-track 1600bpi 1/2" reel (only two titles: GNU Emacs and GCC/GAS/Bison) --- 207,211 ---- (may also be read on other systems) ! VMS backup 9-track 1600bpi 1/2" reel tape (only two titles: GNU Emacs and GCC/GAS/Bison) *************** *** 188,192 **** paper and fax that along with your order. If you need information regarding which programs are on which tapes, please consult the Japanese edition of the ! January 1994 GNU Bulletin. If you do not have a copy of the Japanese edition of the GNU Bulletin, please contact the FSF. --- 213,217 ---- paper and fax that along with your order. If you need information regarding which programs are on which tapes, please consult the Japanese edition of the ! June 1994 GNU Bulletin. If you do not have a copy of the Japanese edition of the GNU Bulletin, please contact the FSF. *************** *** 199,203 **** All sales are final. ! Prices and contents may change without notice after June 30, 1994. Please do not fax this page. --- 224,228 ---- All sales are final. ! Prices and contents may change without notice after January 31, 1995. Please do not fax this page. diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lib-src/ChangeLog emacs-19.24/lib-src/ChangeLog *** emacs-19.23/lib-src/ChangeLog Mon May 16 18:02:40 1994 --- emacs-19.24/lib-src/ChangeLog Thu May 19 17:04:45 1994 *************** *** 1,2 **** --- 1,19 ---- + Thu May 19 17:04:36 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * make-docfile.c (write_c_args): Put `default' in upper case. + + Tue May 17 21:15:20 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * etags.c (etags_getcwd): Cast result of popen. + (popen): Declaration deleted. + + Tue May 17 19:42:44 1994 Karl Heuer (kwzh@hal.gnu.ai.mit.edu) + + * etags.c [!MSDOS]: Declare popen. + + Tue May 17 15:12:17 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * b2m.c (main): Avoid crash if argc is 1. + Mon May 16 03:25:22 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lib-src/b2m.c emacs-19.24/lib-src/b2m.c *** emacs-19.23/lib-src/b2m.c Thu Apr 28 00:44:39 1994 --- emacs-19.24/lib-src/b2m.c Tue May 17 15:12:13 1994 *************** *** 51,55 **** (stdin)->_flag &= ~_IOTEXT; #endif ! if (strcmp (argv[1], "--help") == 0) { fprintf (stderr, "Usage: %s unixmailbox\n", argv[0]); --- 51,55 ---- (stdin)->_flag &= ~_IOTEXT; #endif ! if (argc >= 2 && strcmp (argv[1], "--help") == 0) { fprintf (stderr, "Usage: %s unixmailbox\n", argv[0]); diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lib-src/etags.c emacs-19.24/lib-src/etags.c *** emacs-19.23/lib-src/etags.c Tue May 3 21:42:19 1994 --- emacs-19.24/lib-src/etags.c Tue May 17 21:16:07 1994 *************** *** 57,61 **** extern char *getenv (); - /* Define CTAGS to make the program "ctags" compatible with the usual one. Let it undefined to make the program "etags", which makes emacs-style --- 57,60 ---- *************** *** 3154,3158 **** buf = xnew (bufsize, char); ! pipe = popen ("pwd 2>/dev/null", "r"); if (pipe == NULL) { --- 3153,3157 ---- buf = xnew (bufsize, char); ! pipe = (FILE *) popen ("pwd 2>/dev/null", "r"); if (pipe == NULL) { diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lib-src/make-docfile.c emacs-19.24/lib-src/make-docfile.c *** emacs-19.23/lib-src/make-docfile.c Sun Jan 16 03:33:25 1994 --- emacs-19.24/lib-src/make-docfile.c Thu May 19 17:04:35 1994 *************** *** 218,222 **** || p[6] == '_')) { ! fprintf (out, "default"); p += 5; in_ident = 0; --- 218,222 ---- || p[6] == '_')) { ! fprintf (out, "DEFAULT"); p += 5; in_ident = 0; diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/ChangeLog emacs-19.24/lisp/ChangeLog *** emacs-19.23/lisp/ChangeLog Mon May 16 19:08:12 1994 --- emacs-19.24/lisp/ChangeLog Mon May 23 18:44:06 1994 *************** *** 1,5 **** ! Mon May 16 03:23:48 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) * Version 19.23 released. * man.el (Man-heading-regexp): Accept multiple whitespace chars. --- 1,202 ---- ! Mon May 23 03:32:01 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) ! ! * Version 19.24 released. ! ! * ange-ftp.el (ange-ftp-gwp-start): Call internal-ange-ftp-mode. ! ! Mon May 23 00:50:00 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) ! ! * files.el (interpreter-mode-alist): Add wishx, tclsh. ! Delete form, scope, shell. ! (set-auto-mode): Don't get confused by args after #! shell name. ! ! * frame.el (frame-initialize): Record in frame-initial-frame-alist ! the actual settings of vertical-scroll-bars. ! ! * buff-menu.el (Buffer-menu-mouse-select): Handle dedicated window. ! ! * lmenu.el (popup-menu): Bind cmd with let. ! (popup-dialog-box): Bind meaning with let. ! (current-menubar): Add defvar. ! ! * etags.el (select-tags-table-mode): New function, a major mode. ! (select-tags-table): Call that. ! (select-tags-table-mode-map): New variable. ! ! * mouse-sel.el (mouse-insert-selection): Test mouse-yank-at-point. ! (mouse-sel-insert-at-point): Variable deleted. ! ! * files.el (hack-one-local-variable): Check properly for `defun. ! ! * sendmail.el (mail-mailer-swallows-blank-line): Don't die ! if /etc/sendmail.cf does not exist. ! ! * lmenu.el (popup-menu): Use mouse-pixel-position. ! ! Sun May 22 02:47:47 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) ! ! * subr.el (posn-col-row): Use let*. ! ! * allout.el, cal-french.el, complete.el, diary.el: Doc fix. ! * edebug.el, ediff.el, forms.el, gnus.el, hippie-exp.el: Doc fix. ! * holidays.el, imenu.el, inf-lisp.el, ispell.el, mail-hist.el: Doc fix. ! * makefile.el, nntp.el, refbib.el, refer.el, simula.el: Doc fix. ! * supercite.el, vip.el, ws-mode.el, term/x-win.el: Doc fix. ! ! * mouse.el (mouse-split-window-vertically): Treat scroll bar ! events just like others. ! ! * subr.el (posn-col-row): Do something useful for scroll bar event. ! ! * paths.el (rmail-spool-directory): Maybe use /var/mail. ! ! * jka-compr.el (jka-compr-compression-info-list): Doc fix. ! (jka-compr-op-table, jka-compr-file-name-handler-entry): Move defvars. ! ! * subr.el (substitute-key-definition): Skip cached menu key-equivs. ! ! * easymenu.el (easy-menu-create-keymaps): ! Renamed from easy-menu-keymap. Callers changed. ! ! Sat May 21 20:50:00 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) ! ! * shell.el (shell-strip-ctrl-m): Strip multiple ^Ms. ! ! Sat May 21 11:38:20 1994 Michael D. Ernst (mernst@research.microsoft.com) ! ! * dired.el (dired-mark-pop-up): Clear mouse-face property. ! ! Sat May 21 09:26:47 1994 Kevin Broadey (KevinB@mended_drum) ! ! * foldout.el (foldout-exit-fold): Make numeric argument work; ! before, it always exited one fold. Replace the Common Lisp `loop' ! construct with `while'. ! ! Sat May 21 01:28:13 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) ! ! * startup.el (command-line-1): Precompute menu bar before startup msg. ! ! * ispell.el: Doc fixes. ! ! * ispell.el: Lucid menu added. ! (ispell): New function. ! (ispell-region): Assure choices and checked buffer selections correct. ! reindented. ! (ispell-highlight-spelling-errors): Prefix ispell- to highlght fns. ! (ispell-complete-word): Heuristic to respect case of completed words. ! (ispell-command-loop): Non-character events ignored. Reindented. ! (ispell-message): Various improvements. ! (ispell-init-process): `ispell-extra-args' added to allow personal ! customizations. ! ! Fri May 20 17:21:57 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) ! ! * paren.el (show-paren-command-hook): ! Always set show-paren-mismatch-face to symbol, not face vector. ! ! * dired.el (dired-readin): Clear modified flag at the very end. ! ! * server.el (server-done-hook): New hook. ! (server-buffer-done): Run it. ! ! * mouse.el (mouse-choose-completion): ! Include words separated by single spaces in the completion. ! ! * simple.el (choose-completion): ! Include words separated by single spaces in the completion. + * ispell.el: Lots of doc fixes and message syntax fixes. + (ispell-command-loop): For X, put point before + the word being considered, and mention C-u M-$ in message. + + * bookmark.el (bookmark-file): Alternate default on ms-dos. + + Fri May 20 13:43:51 1994 Noah Friedman (friedman@kropotkin.gnu.ai.mit.edu) + + * rsz-mini.el: Enable resize-minibuffer-mode when this file is + loaded. + + Fri May 20 03:40:12 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * mouse.el (mouse-drag-secondary): Handle mouse motion out of window + as in mouse-drag-region. + + * ispell.el (ispell-word): Implement C-u $ as in ispell4.el. + (ispell-command-loop): Make quit-char work like X. + For C-z, run whatever it's bound to. + + Thu May 19 16:39:23 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * cal-menu.el (calendar-mode-map): Use calendar-goto-astro-day-number. + + * simple.el (completion-setup-function): Make highlight span + single spaces. + (choose-completion-delete-max-match): Handle completion-ignore-case. + + * gnus.el (gnus-group-unsubscribe-current-group): + Fail nicely if no current group name. + + * avoid.el (mouse-avoidance-nudge-dist): Doc fix. + + * menu-bar.el (menu-bar-mode): Preserve window height. + + * vc-hooks.el (vc-mode-line): Do nothing if FILE is nil. + + * compile.el (compilation-goto-locus): Handle case where *compilation* + is in a dedicated window. + + * ispell4.el (ispell-highlight): Do nothing unless window-system. + + * rmail.el (rmail-variables): Don't add any permanent-local props. + Don't make rmail-last-file local. + + * rmailedit.el (rmail-edit-current-message): Undo previous change. + + * rmailout.el (rmail-output): Doc fix. + + * gnus.el: rmail-default-file renamed from rmail-last-file, + rmail-default-rmail-file renamed from rmail-last-... + + Thu May 19 01:58:43 1994 Daniel Quinlan (quinlan@bucknell.edu) + + * info.el (info-insert-file-contents): Avoid conflict with jka-compr. + + Thu May 19 11:33:35 1994 Boris Goldowsky (boris@mink.cs.rochester.edu) + + * avoid.el: Doc fixes. + (mouse-avoidance-nudge-mouse): Removed redundant + bounds check on destination coordinates. + + Thu May 19 00:29:41 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * server.el (server-done): Never kill buffer here. + (server-buffer-done): Do it here, if temp file. + + * menu-bar.el (menu-bar-update-buffers): Record buffers' mod and + read-only flags, and recompute if they change. + + * subr.el (posn-col-row): Doc fix. + + Wed May 18 19:29:51 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * font-lock.el (font-lock-after-change-function): Fix typo in prev chg. + (font-lock-mode): Use after-change-functions not after-change-function. + + Tue May 17 21:11:29 1994 Karl Heuer (kwzh@hal.gnu.ai.mit.edu) + + * tex-mode.el (tex-delete-last-temp-files): Don't fail on + non-existent directory. + + Tue May 17 18:54:29 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * soundex.el (soundex-alist): Put variable before fn that uses it. + + Tue May 17 05:05:03 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + * Version 19.23 released. + + * gnus.el (gnus-group-mode-map): Fix typo in prev change. + + Mon May 16 03:23:48 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) * man.el (Man-heading-regexp): Accept multiple whitespace chars. diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/allout.el emacs-19.24/lisp/allout.el *** emacs-19.23/lisp/allout.el Sun May 15 02:01:26 1994 --- emacs-19.24/lisp/allout.el Sun May 22 17:51:14 1994 *************** *** 456,460 **** "Outline-regexp with outline-style beginning-of-line anchor. ! (Ie, C-j, *or* C-m, for prefixes of hidden topics). This is properly set when outline-regexp is produced by 'set-outline-regexp', so that (match-beginning 2) and (match-end 2) delimit the prefix.") --- 456,460 ---- "Outline-regexp with outline-style beginning-of-line anchor. ! \(Ie, C-j, *or* C-m, for prefixes of hidden topics). This is properly set when outline-regexp is produced by 'set-outline-regexp', so that (match-beginning 2) and (match-end 2) delimit the prefix.") *************** *** 463,467 **** (defvar outline-bob-regexp () "Like outline-line-boundary-regexp, for headers at beginning of buffer. ! (match-beginning 2) and (match-end 2) delimit the prefix.") (make-variable-buffer-local 'outline-bob-regexp) ;;;_ = outline-header-subtraction --- 463,467 ---- (defvar outline-bob-regexp () "Like outline-line-boundary-regexp, for headers at beginning of buffer. ! \(match-beginning 2) and (match-end 2) delimit the prefix.") (make-variable-buffer-local 'outline-bob-regexp) ;;;_ = outline-header-subtraction diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/ange-ftp.el emacs-19.24/lisp/ange-ftp.el *** emacs-19.23/lisp/ange-ftp.el Mon May 9 14:05:14 1994 --- emacs-19.24/lisp/ange-ftp.el Mon May 23 18:44:32 1994 *************** *** 852,856 **** ;;;; ------------------------------------------------------------ ! (defconst ange-ftp-version "$Revision: 1.51 $") (defvar ange-ftp-data-buffer-name " *ftp data*" --- 852,856 ---- ;;;; ------------------------------------------------------------ ! (defconst ange-ftp-version "$Revision: 1.52 $") (defvar ange-ftp-data-buffer-name " *ftp data*" *************** *** 1622,1626 **** ;; Can anyone find a fix for that? (proc (let ((process-connection-type t)) ! (start-process name name ange-ftp-gateway-program ange-ftp-gateway-host))) --- 1622,1626 ---- ;; Can anyone find a fix for that? (proc (let ((process-connection-type t)) ! (start-process name name ange-ftp-gateway-program ange-ftp-gateway-host))) *************** *** 1629,1633 **** (set-process-sentinel proc (function ange-ftp-gwp-sentinel)) (set-process-filter proc (function ange-ftp-gwp-filter)) ! (set-marker (process-mark proc) (point)) (setq ange-ftp-gwp-running t ange-ftp-gwp-status nil) --- 1629,1636 ---- (set-process-sentinel proc (function ange-ftp-gwp-sentinel)) (set-process-filter proc (function ange-ftp-gwp-filter)) ! (save-excursion ! (set-buffer (process-buffer proc)) ! (internal-ange-ftp-mode) ! (set-marker (process-mark proc) (point))) (setq ange-ftp-gwp-running t ange-ftp-gwp-status nil) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/avoid.el emacs-19.24/lisp/avoid.el *** emacs-19.23/lisp/avoid.el Thu Apr 21 17:23:50 1994 --- emacs-19.24/lisp/avoid.el Thu May 19 18:13:36 1994 *************** *** 77,82 **** (defvar mouse-avoidance-mode nil "Value is t or a symbol if the mouse pointer should avoid the cursor. ! See function mouse-avoidance-mode for possible values. Changing this ! variable is NOT the recommended way to change modes; use the function instead.") --- 77,82 ---- (defvar mouse-avoidance-mode nil "Value is t or a symbol if the mouse pointer should avoid the cursor. ! See function `mouse-avoidance-mode' for possible values. Changing this ! variable is NOT the recommended way to change modes; use that function instead.") *************** *** 83,91 **** (defvar mouse-avoidance-nudge-dist 15 "*Average distance that mouse will be moved when approached by cursor. ! Only applies in mode-avoidance-mode and `jump' and its derivatives. ! For best results make this larger than mouse-avoidance-threshhold.") (defvar mouse-avoidance-nudge-var 10 ! "*Variability of mouse-avoidance-nudge-dist (which see).") (defvar mouse-avoidance-animation-delay .01 --- 83,91 ---- (defvar mouse-avoidance-nudge-dist 15 "*Average distance that mouse will be moved when approached by cursor. ! Only applies in mouse-avoidance-mode `jump' and its derivatives. ! For best results make this larger than `mouse-avoidance-threshhold'.") (defvar mouse-avoidance-nudge-var 10 ! "*Variability of `mouse-avoidance-nudge-dist' (which see).") (defvar mouse-avoidance-animation-delay .01 *************** *** 105,109 **** (defun mouse-avoidance-point-position () ! "Return the position of point as (frame x . y). Analogous to mouse-position." (let* ((w (selected-window)) --- 105,109 ---- (defun mouse-avoidance-point-position () ! "Return the position of point as (FRAME X . Y). Analogous to mouse-position." (let* ((w (selected-window)) *************** *** 146,150 **** (defun mouse-avoidance-banish-destination () ! "The position to which mouse-avoidance-mode 'banish moves the mouse. You can redefine this if you want the mouse banished to a different corner." (cons (1- (frame-width)) --- 146,150 ---- (defun mouse-avoidance-banish-destination () ! "The position to which mouse-avoidance-mode `banish' moves the mouse. You can redefine this if you want the mouse banished to a different corner." (cons (1- (frame-width)) *************** *** 210,216 **** (set-mouse-color color))) (sit-for mouse-avoidance-animation-delay))) ! (mouse-avoidance-set-mouse-position ! (cons (mod (+ (car (cdr cur)) deltax) (window-width)) ! (mod (+ (cdr (cdr cur)) deltay) (window-height))))))) (defun mouse-avoidance-random-shape () --- 210,215 ---- (set-mouse-color color))) (sit-for mouse-avoidance-animation-delay))) ! (mouse-avoidance-set-mouse-position (cons (+ (car (cdr cur)) deltax) ! (+ (cdr (cdr cur)) deltay)))))) (defun mouse-avoidance-random-shape () *************** *** 271,275 **** (defun mouse-avoidance-kbd-command (key) "Return t if the KEYSEQENCE is composed of keyboard events only. ! Returns nil if there are any lists in the key sequence." (cond ((null key) nil) ; Null event seems to be ; returned occasionally. --- 270,274 ---- (defun mouse-avoidance-kbd-command (key) "Return t if the KEYSEQENCE is composed of keyboard events only. ! Return nil if there are any lists in the key sequence." (cond ((null key) nil) ; Null event seems to be ; returned occasionally. *************** *** 294,305 **** Effects of the different modes: ! * BANISH: Move the mouse to the upper-right corner on any keypress. ! * EXILE: Move the mouse to the corner only if the cursor gets too close, and allow it to return once the cursor is out of the way. ! * JUMP: If the cursor gets too close to the mouse, displace the mouse a random distance & direction. ! * ANIMATE: As `jump', but shows steps along the way for illusion of motion. ! * CAT-AND-MOUSE: Same as `animate'. ! * PROTEUS: As `animate', but changes the shape of the mouse pointer too. Whenever the mouse is moved, the frame is also raised. --- 293,304 ---- Effects of the different modes: ! * banish: Move the mouse to the upper-right corner on any keypress. ! * exile: Move the mouse to the corner only if the cursor gets too close, and allow it to return once the cursor is out of the way. ! * jump: If the cursor gets too close to the mouse, displace the mouse a random distance & direction. ! * animate: As `jump', but shows steps along the way for illusion of motion. ! * cat-and-mouse: Same as `animate'. ! * proteus: As `animate', but changes the shape of the mouse pointer too. Whenever the mouse is moved, the frame is also raised. diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/bookmark.el emacs-19.24/lisp/bookmark.el *** emacs-19.23/lisp/bookmark.el Mon May 16 03:24:49 1994 --- emacs-19.24/lisp/bookmark.el Fri May 20 17:18:53 1994 *************** *** 199,203 **** "Number of modifications to bookmark list since it was last saved.") ! (defvar bookmark-file "~/.emacs-bkmrks" "*File in which to save bookmarks by default.") --- 199,206 ---- "Number of modifications to bookmark list since it was last saved.") ! (defvar bookmark-file ! (if (eq system-type 'ms-dos) ! "~/emacs.bmk" ; Cannot have initial dot [Yuck!] ! "~/.emacs-bkmrks") "*File in which to save bookmarks by default.") diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/buff-menu.el emacs-19.24/lisp/buff-menu.el *** emacs-19.23/lisp/buff-menu.el Tue May 3 18:43:06 1994 --- emacs-19.24/lisp/buff-menu.el Mon May 23 04:22:12 1994 *************** *** 347,351 **** (setq buffer (Buffer-menu-buffer t)))) (select-window (posn-window (event-end event))) ! (switch-to-buffer buffer))) (defun Buffer-menu-this-window () --- 347,354 ---- (setq buffer (Buffer-menu-buffer t)))) (select-window (posn-window (event-end event))) ! (if (and (window-dedicated-p (selected-window)) ! (eq (selected-window) (frame-root-window))) ! (switch-to-buffer-other-frame buffer) ! (switch-to-buffer buffer)))) (defun Buffer-menu-this-window () diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/cal-french.el emacs-19.24/lisp/cal-french.el *** emacs-19.23/lisp/cal-french.el Thu Apr 7 16:22:51 1994 --- emacs-19.24/lisp/cal-french.el Sun May 22 17:51:24 1994 *************** *** 105,109 **** The result is a list of the form (MONTH DAY YEAR). The absolute date is the number of days elapsed since the ! (imaginary) Gregorian date Sunday, December 31, 1 BC." (if (< date 654415) (list 0 0 0);; pre-French Revolutionary date --- 105,109 ---- The result is a list of the form (MONTH DAY YEAR). The absolute date is the number of days elapsed since the ! \(imaginary) Gregorian date Sunday, December 31, 1 BC." (if (< date 654415) (list 0 0 0);; pre-French Revolutionary date diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/cal-menu.el emacs-19.24/lisp/cal-menu.el *** emacs-19.23/lisp/cal-menu.el Thu May 12 15:18:11 1994 --- emacs-19.24/lisp/cal-menu.el Thu May 19 19:17:20 1994 *************** *** 99,103 **** '("Hebrew date" . calendar-goto-hebrew-date)) (define-key calendar-mode-map [menu-bar goto astro] ! '("Astronomical date" . calendar-goto-astro-date)) (define-key calendar-mode-map [menu-bar goto iso] '("ISO date" . calendar-goto-iso-date)) --- 99,103 ---- '("Hebrew date" . calendar-goto-hebrew-date)) (define-key calendar-mode-map [menu-bar goto astro] ! '("Astronomical date" . calendar-goto-astro-day-number)) (define-key calendar-mode-map [menu-bar goto iso] '("ISO date" . calendar-goto-iso-date)) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/compile.el emacs-19.24/lisp/compile.el *** emacs-19.23/lisp/compile.el Thu Apr 28 20:52:48 1994 --- emacs-19.24/lisp/compile.el Thu May 19 17:45:21 1994 *************** *** 956,960 **** Takes one argument, a cons (ERROR . SOURCE) of two markers. Selects a window with point at SOURCE, with another window displaying ERROR." ! (switch-to-buffer (marker-buffer (cdr next-error))) (goto-char (cdr next-error)) ;; If narrowing got in the way of --- 956,963 ---- Takes one argument, a cons (ERROR . SOURCE) of two markers. Selects a window with point at SOURCE, with another window displaying ERROR." ! (if (and (window-dedicated-p (selected-window)) ! (eq (selected-window) (frame-root-window))) ! (switch-to-buffer-other-frame (marker-buffer (cdr next-error))) ! (switch-to-buffer (marker-buffer (cdr next-error)))) (goto-char (cdr next-error)) ;; If narrowing got in the way of diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/complete.el emacs-19.24/lisp/complete.el *** emacs-19.23/lisp/complete.el Thu Apr 7 16:21:17 1994 --- emacs-19.24/lisp/complete.el Sun May 22 17:51:33 1994 *************** *** 110,114 **** string, it must come first or right after `]'. In other words, if S is this string, then `[S]' must be a legal Emacs regular expression ! (not containing character ranges like `a-z').") --- 110,114 ---- string, it must come first or right after `]'. In other words, if S is this string, then `[S]' must be a legal Emacs regular expression ! \(not containing character ranges like `a-z').") diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/diary.el emacs-19.24/lisp/diary.el *** emacs-19.23/lisp/diary.el Tue May 3 18:59:58 1994 --- emacs-19.24/lisp/diary.el Sun May 22 17:51:44 1994 *************** *** 788,792 **** "Add any Hebrew date entries from the diary file to `diary-entries-list'. Hebrew date diary entries must be prefaced by `hebrew-diary-entry-symbol' ! (normally an `H'). The same diary date forms govern the style of the Hebrew calendar entries, except that the Hebrew month names must be spelled in full. The Hebrew months are numbered from 1 to 13 with Nisan being 1, 12 being --- 788,792 ---- "Add any Hebrew date entries from the diary file to `diary-entries-list'. Hebrew date diary entries must be prefaced by `hebrew-diary-entry-symbol' ! \(normally an `H'). The same diary date forms govern the style of the Hebrew calendar entries, except that the Hebrew month names must be spelled in full. The Hebrew months are numbered from 1 to 13 with Nisan being 1, 12 being *************** *** 872,876 **** Each entry in diary-file (or included files) visible in the calendar window is marked. Hebrew date entries are prefaced by a hebrew-diary-entry-symbol ! (normally an `H'). The same diary-date-forms govern the style of the Hebrew calendar entries, except that the Hebrew month names must be spelled in full. The Hebrew months are numbered from 1 to 13 with Nisan being 1, 12 being --- 872,876 ---- Each entry in diary-file (or included files) visible in the calendar window is marked. Hebrew date entries are prefaced by a hebrew-diary-entry-symbol ! \(normally an `H'). The same diary-date-forms govern the style of the Hebrew calendar entries, except that the Hebrew month names must be spelled in full. The Hebrew months are numbered from 1 to 13 with Nisan being 1, 12 being *************** *** 1651,1655 **** "Add any Islamic date entries from the diary file to `diary-entries-list'. Islamic date diary entries must be prefaced by an `islamic-diary-entry-symbol' ! (normally an `I'). The same diary date forms govern the style of the Islamic calendar entries, except that the Islamic month names must be spelled in full. The Islamic months are numbered from 1 to 12 with Muharram being 1 and 12 being --- 1651,1655 ---- "Add any Islamic date entries from the diary file to `diary-entries-list'. Islamic date diary entries must be prefaced by an `islamic-diary-entry-symbol' ! \(normally an `I'). The same diary date forms govern the style of the Islamic calendar entries, except that the Islamic month names must be spelled in full. The Islamic months are numbered from 1 to 12 with Muharram being 1 and 12 being *************** *** 1734,1738 **** Each entry in diary-file (or included files) visible in the calendar window is marked. Islamic date entries are prefaced by a islamic-diary-entry-symbol ! (normally an `I'). The same diary-date-forms govern the style of the Islamic calendar entries, except that the Islamic month names must be spelled in full. The Islamic months are numbered from 1 to 12 with Muharram being 1 and 12 being --- 1734,1738 ---- Each entry in diary-file (or included files) visible in the calendar window is marked. Islamic date entries are prefaced by a islamic-diary-entry-symbol ! \(normally an `I'). The same diary-date-forms govern the style of the Islamic calendar entries, except that the Islamic month names must be spelled in full. The Islamic months are numbered from 1 to 12 with Muharram being 1 and 12 being diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/dired.el emacs-19.24/lisp/dired.el *** emacs-19.23/lisp/dired.el Sat May 14 03:56:52 1994 --- emacs-19.24/lisp/dired.el Sat May 21 20:03:26 1994 *************** *** 478,486 **** ) (message "Reading directory %s...done" dirname) - (set-buffer-modified-p nil) ;; Must first make alist buffer local and set it to nil because ;; dired-build-subdir-alist will call dired-clear-alist first (set (make-local-variable 'dired-subdir-alist) nil) ! (dired-build-subdir-alist)))) ;; Subroutines of dired-readin --- 478,486 ---- ) (message "Reading directory %s...done" dirname) ;; Must first make alist buffer local and set it to nil because ;; dired-build-subdir-alist will call dired-clear-alist first (set (make-local-variable 'dired-subdir-alist) nil) ! (dired-build-subdir-alist) ! (set-buffer-modified-p nil)))) ;; Subroutines of dired-readin *************** *** 1669,1673 **** (set-buffer (get-buffer-create bufname)) (erase-buffer) ! (dired-format-columns-of-files files)) (save-window-excursion (dired-pop-to-buffer bufname) --- 1669,1674 ---- (set-buffer (get-buffer-create bufname)) (erase-buffer) ! (dired-format-columns-of-files files) ! (remove-text-properties (point-min) (point-max) '(mouse-face))) (save-window-excursion (dired-pop-to-buffer bufname) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/easymenu.el emacs-19.24/lisp/easymenu.el *** emacs-19.23/lisp/easymenu.el Fri May 13 05:10:29 1994 --- emacs-19.24/lisp/easymenu.el Sun May 22 02:48:33 1994 *************** *** 59,63 **** (` (let* ((maps (, maps)) (menu (, menu)) ! (keymap (easy-menu-keymap (car menu) (cdr menu)))) (and (keymapp maps) (setq maps (list maps))) (while maps --- 59,63 ---- (` (let* ((maps (, maps)) (menu (, menu)) ! (keymap (easy-menu-create-keymaps (car menu) (cdr menu)))) (and (keymapp maps) (setq maps (list maps))) (while maps *************** *** 70,74 **** ;; Return a menu keymap corresponding to a Lucid-style menu list ;; MENU-ITEMS, and with name MENU-NAME. ! (defun easy-menu-keymap (menu-name menu-items) (let ((menu (make-sparse-keymap menu-name))) ;; Process items in reverse order, --- 70,74 ---- ;; Return a menu keymap corresponding to a Lucid-style menu list ;; MENU-ITEMS, and with name MENU-NAME. ! (defun easy-menu-create-keymaps (menu-name menu-items) (let ((menu (make-sparse-keymap menu-name))) ;; Process items in reverse order, *************** *** 83,87 **** (setq name (if (string-match "^-+$" item) "" item))) ((consp item) ! (setq command (easy-menu-keymap (car item) (cdr item))) (setq name (car item))) ((vectorp item) --- 83,87 ---- (setq name (if (string-match "^-+$" item) "" item))) ((consp item) ! (setq command (easy-menu-create-keymaps (car item) (cdr item))) (setq name (car item))) ((vectorp item) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/edebug.el emacs-19.24/lisp/edebug.el *** emacs-19.23/lisp/edebug.el Mon Apr 11 18:01:30 1994 --- emacs-19.24/lisp/edebug.el Sun May 22 18:07:13 1994 *************** *** 9,13 **** ;; edebug|Daniel LaLiberte|liberte@cs.uiuc.edu ;; |A source level debugger for Emacs Lisp. ! ;; |$Date: 1994/04/11 21:47:38 $|$Revision: 3.5.1.4 $|~/modes/edebug.el| ;; This file is part of GNU Emacs. --- 9,13 ---- ;; edebug|Daniel LaLiberte|liberte@cs.uiuc.edu ;; |A source level debugger for Emacs Lisp. ! ;; |$Date: 1994/05/22 22:06:54 $|$Revision: 3.5.1.6 $|~/modes/edebug.el| ;; This file is part of GNU Emacs. *************** *** 81,125 **** ;;; =============================== ! ;;; $Header: /gd/gnu/emacs/19.0/lisp/RCS/edebug.el,v 3.5.1.4 1994/04/11 21:47:38 rms Exp $ ! ;;; $Log: edebug.el,v $ ! ;;; Revision 3.5.1.4 1994/04/11 21:47:38 rms ! ;;; (eval-reg): Fix the require call. ! ;;; ! ;;; Revision 3.5.1.3 1994/04/09 22:11:10 liberte ! ;;; *** empty log message *** ! ;;; ! ;;; Revision 3.5.1.2 1994/04/09 22:07:30 liberte ! ;;; Testing branch. A change in log comments is not ! ;;; enough to get by ci. ! ;;; ! ;;; Revision 3.5.1.1 1994/04/09 21:49:52 liberte ! ;;; Create branch for FSF mods. ! ;;; ! ;;; Revision 3.5 1994/04/04 21:39:52 liberte ! ;;; * Change "-emacs-" to "-original-" throughout. ! ;;; * (edebug-last-sexp) Fix missing ";;" ! ;;; * (edebug-read) Fix docstring, &optional arg, ! ;;; and the check that stream is current-buffer. ! ;;; * (edebug-install-read-eval-functions) Use (elisp-eval-region-install). ! ;;; * (edebug-uninstall-read-eval-functions) Restore to symbol-function values. ! ;;; * (edebug-eval-defun) Repair check for edebug-all-defs. ! ;;; * (edebug-top-level-form) Set edebug-all-defs to t. ! ;;; * (edebug-read-and-maybe-wrap-form1) Call edebug-original-read ! ;;; instead of read. ! ;;; * (edebug-enter) Bind pre-command-hook and post-command-hook to nil. ! ;;; Reset these variables and executing-macro to outside values. ! ;;; * (edebug-display) Reset global variables to outside values. ! ;;; * (edebug-recursive-edit) Reset global variables to outside values. ! ;;; * (edebug-outside-excursion) Set outside values of global variables ! ;;; in case they were changed by side effect. ! ;;; * (edebug-instrument-callee) Use edebug-original-read instaed of read. ! ;;; * (edebug-eval-result-list) While evaluating evaluation list, ! ;;; bind edebug-execution-mode and edebug-trace to nil, to avoid loop. ! ;;; ! ;;; ! ;;; For the rest of the revision history, see edebug-history. (defconst edebug-version ! (let ((raw-version "$Revision: 3.5.1.4 $")) (substring raw-version (string-match "[0-9.]*" raw-version) (match-end 0)))) --- 81,88 ---- ;;; =============================== ! ;;; For the early revision history, see edebug-history. (defconst edebug-version ! (let ((raw-version "$Revision: 3.5.1.6 $")) (substring raw-version (string-match "[0-9.]*" raw-version) (match-end 0)))) *************** *** 180,184 **** You can use the command `edebug-all-defs' to toggle the value of this variable. You may wish to make it local to each buffer with ! (make-local-variable 'edebug-all-defs) in your `emacs-lisp-mode-hook'.") --- 143,147 ---- You can use the command `edebug-all-defs' to toggle the value of this variable. You may wish to make it local to each buffer with ! \(make-local-variable 'edebug-all-defs) in your `emacs-lisp-mode-hook'.") *************** *** 293,297 **** "Set the edebug-form-spec property of SYMBOL according to SPEC. Both SYMBOL and SPEC are unevaluated. The SPEC can be 0, t, a symbol ! (naming a function), or a list." (` (put (quote (, symbol)) 'edebug-form-spec (quote (, spec))))) --- 256,260 ---- "Set the edebug-form-spec property of SYMBOL according to SPEC. Both SYMBOL and SPEC are unevaluated. The SPEC can be 0, t, a symbol ! \(naming a function), or a list." (` (put (quote (, symbol)) 'edebug-form-spec (quote (, spec))))) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/ediff.el emacs-19.24/lisp/ediff.el *** emacs-19.23/lisp/ediff.el Sat May 14 04:53:44 1994 --- emacs-19.24/lisp/ediff.el Sun May 22 17:59:08 1994 *************** *** 979,983 **** A diff is saved here if it is replaced by a diff from another buffer. This alist has the form: ! ((num (A . diff) (B . diff)) ...), where A or B parts may be missing.") --- 979,983 ---- A diff is saved here if it is replaced by a diff from another buffer. This alist has the form: ! \((num (A . diff) (B . diff)) ...), where A or B parts may be missing.") diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/etags.el emacs-19.24/lisp/etags.el *** emacs-19.23/lisp/etags.el Mon May 2 20:22:12 1994 --- emacs-19.24/lisp/etags.el Mon May 23 01:06:47 1994 *************** *** 1422,1427 **** (setq buffer-read-only nil) (erase-buffer) - (setq selective-display t - selective-display-ellipses nil) (let ((set-list tags-table-set-list) (desired-point nil)) --- 1422,1425 ---- *************** *** 1465,1478 **** (set-window-start (selected-window) 1 t)) (set-buffer-modified-p nil) (setq buffer-read-only t mode-name "Select Tags Table") ! (let ((map (make-sparse-keymap))) ! (define-key map "t" 'select-tags-table-select) ! (define-key map " " 'next-line) ! (define-key map "\^?" 'previous-line) ! (define-key map "n" 'next-line) ! (define-key map "p" 'previous-line) ! (define-key map "q" 'select-tags-table-quit) ! (use-local-map map))) (defun select-tags-table-select () --- 1463,1490 ---- (set-window-start (selected-window) 1 t)) (set-buffer-modified-p nil) + (select-tags-table-mode)) + + (defvar select-tags-table-mode-map) + (let ((map (make-sparse-keymap))) + (define-key map "t" 'select-tags-table-select) + (define-key map " " 'next-line) + (define-key map "\^?" 'previous-line) + (define-key map "n" 'next-line) + (define-key map "p" 'previous-line) + (define-key map "q" 'select-tags-table-quit) + (setq select-tags-table-mode-map map)) + + (defun select-tags-table-mode () + "Major mode for choosing a current tags table among those already loaded. + + \\{select-tags-table-mode-map}" + (interactive) + (kill-all-local-variables) (setq buffer-read-only t + major-mode 'select-tags-table-mode mode-name "Select Tags Table") ! (use-local-map select-tags-table-mode-map) ! (setq selective-display t ! selective-display-ellipses nil)) (defun select-tags-table-select () diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/files.el emacs-19.24/lisp/files.el *** emacs-19.23/lisp/files.el Tue May 10 16:51:05 1994 --- emacs-19.24/lisp/files.el Mon May 23 05:47:17 1994 *************** *** 848,856 **** (defconst interpreter-mode-alist '(("perl" . perl-mode) - ("scope" . tcl-mode) ("wish" . tcl-mode) ! ("shell" . tcl-mode) ! ("form" . tcl-mode) ("tcl" . tcl-mode) ("awk" . awk-mode) ("gawk" . awk-mode) --- 848,855 ---- (defconst interpreter-mode-alist '(("perl" . perl-mode) ("wish" . tcl-mode) ! ("wishx" . tcl-mode) ("tcl" . tcl-mode) + ("tclsh" . tcl-mode) ("awk" . awk-mode) ("gawk" . awk-mode) *************** *** 872,880 **** (defun set-auto-mode () "Select major mode appropriate for current buffer. ! This checks for a -*- mode tag in the buffer's text, or ! compares the filename against the entries in `auto-mode-alist'. It does ! not check for the \"mode:\" local variable in the Local Variables ! section of the file; for that, use `hack-local-variables'. If `enable-local-variables' is nil, this function does not check for a -*- mode tag." --- 871,882 ---- (defun set-auto-mode () "Select major mode appropriate for current buffer. ! This checks for a -*- mode tag in the buffer's text, ! compares the filename against the entries in `auto-mode-alist', ! or checks the interpreter that runs this file against ! `interpreter-mode-alist'. + It does not check for the `mode:' local variable in the + Local Variables section of the file; for that, use `hack-local-variables'. + If `enable-local-variables' is nil, this function does not check for a -*- mode tag." *************** *** 959,967 **** (save-excursion (goto-char (point-min)) ! (if (looking-at "#! *") ! (progn ! (goto-char (match-end 0)) ! (buffer-substring (point) ! (progn (end-of-line) (point)))) ""))) elt) --- 961,967 ---- (save-excursion (goto-char (point-min)) ! (if (looking-at "#! *\\([^ \t\n]+\\)") ! (buffer-substring (match-beginning 1) ! (match-end 1)) ""))) elt) *************** *** 1137,1141 **** ;; not functions. (or (numberp (nth 3 val)) ! (eq (nth 3 val) 'defun)) (memq (nth 1 (nth 2 val)) '(lisp-indent-hook))) --- 1137,1141 ---- ;; not functions. (or (numberp (nth 3 val)) ! (equal (nth 3 val) ''defun)) (memq (nth 1 (nth 2 val)) '(lisp-indent-hook))) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/foldout.el emacs-19.24/lisp/foldout.el *** emacs-19.23/lisp/foldout.el --- emacs-19.24/lisp/foldout.el Sun May 22 05:25:53 1994 *************** *** 0 **** --- 1,559 ---- + ;;; foldout.el --- Folding extensions for outline-mode and outline-minor-mode. + + ;; Copyright (C) 1994 Free Software Foundation, Inc. + + ;; Author: Kevin Broadey + ;; Created: 27 Jan 1994 + ;; Version: foldout.el 1.10 dated 94/05/19 at 17:09:12 + ;; Keywords: folding, outline + + ;; This file is part of GNU Emacs. + + ;; GNU Emacs is free software; you can redistribute it and/or modify + ;; it under the terms of the GNU General Public License as published by + ;; the Free Software Foundation; either version 2, or (at your option) + ;; any later version. + + ;; GNU Emacs is distributed in the hope that it will be useful, + ;; but WITHOUT ANY WARRANTY; without even the implied warranty of + ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ;; GNU General Public License for more details. + + ;; You should have received a copy of the GNU General Public License + ;; along with GNU Emacs; see the file COPYING. If not, write to + ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + + ;;; Commentary: + + ;; This file provides folding editor extensions for outline-mode and + ;; outline-minor-mode buffers. What's a "folding editor"? Read on... + ;; + ;; Imagine you're in an outline-mode buffer and you've hidden all the text and + ;; subheadings under your level-1 headings. You now want to look at the stuff + ;; hidden under one of these headings. Normally you'd do C-c C-e (show-entry) + ;; to expose the body or C-c C-i to expose the child (level-2) headings. + ;; + ;; With foldout, you do C-c C-z (foldout-zoom-subtree). This exposes the body + ;; and child subheadings and narrows the buffer so that only the level-1 + ;; heading, the body and the level-2 headings are visible. If you now want to + ;; look under one of the level-2 headings, position the cursor on it and do C-c + ;; C-z again. This exposes the level-2 body and its level-3 child subheadings + ;; and narrows the buffer again. You can keep on zooming in on successive + ;; subheadings as much as you like. A string in the modeline tells you how + ;; deep you've gone. + ;; + ;; When zooming in on a heading you might only want to see the child + ;; subheadings. You do this by specifying a numeric argument: C-u C-c C-z. + ;; You can specify the number of levels of children too (c.f. show-children): + ;; e.g. M-2 C-c C-z exposes two levels of child subheadings. Alternatively, + ;; you might only be interested in the body. You do this by specifying a + ;; negative argument: M-- C-c C-z. You can also cause the whole subtree to be + ;; expanded, similar to C-c C-s (show-subtree), by specifying a zero argument: + ;; M-0 C-c C-z. + ;; + ;; While you're zoomed in you can still use outline-mode's exposure and hiding + ;; functions. It won't upset foldout at all. Also, since the buffer is + ;; narrowed, "global" editing actions will only affect the stuff under the + ;; zoomed-in heading. This is useful for restricting changes to a particular + ;; chapter or section of your document. + ;; + ;; You unzoom (exit) a fold by doing C-c C-x (foldout-exit-fold). This hides + ;; all the text and subheadings under the top-level heading and returns you to + ;; the previous view of the buffer. Specifying a numeric argument exits that + ;; many folds. Specifying a zero argument exits *all* folds. + ;; + ;; You might want to exit a fold *without* hiding the text and subheadings. + ;; You do this by specifying a negative argument. For example, M--2 C-c C-x + ;; exits two folds and leaves the text and subheadings exposed. + ;; + ;; Foldout also provides mouse bindings for entering and exiting folds and for + ;; showing and hiding text. Hold down Meta and Control, then click a mouse + ;; button as follows:- + ;; + ;; mouse-1 (foldout-mouse-zoom) zooms in on the heading clicked on:- + ;; + ;; single click expose body + ;; double click expose subheadings + ;; triple click expose body and subheadings + ;; quad click expose entire subtree + ;; + ;; mouse-2 (foldout-mouse-show) exposes text under the heading clicked on:- + ;; + ;; single click expose body + ;; double click expose subheadings + ;; triple click expose body and subheadings + ;; quad click expose entire subtree + ;; + ;; mouse-3 (foldout-mouse-hide-or-exit) hides text under the heading clicked + ;; on or exits the fold:- + ;; + ;; single click hide subtree + ;; double click exit fold and hide text + ;; triple click exit fold without hiding text + ;; quad click exit all folds and hide text + ;; + ;; You can change the modifier keys used by setting `foldout-mouse-modifiers'. + + ;;; Installation: + + ;; To use foldout, put this in your .emacs:- + ;; + ;; (require 'foldout) + ;; + ;; If you don't want it loaded until you need it, try this instead:- + ;; + ;; (eval-after-load "outline" '(require 'foldout)) + + ;;; Advertisements: + + ;; Get out-xtra.el by Per Abrahamsen for more + ;; outline-mode goodies. In particular, `outline-hide-sublevels' makes + ;; setup a lot easier. + ;; + ;; folding.el by Jamie Lokier supports folding by + ;; recognising special marker text in you file. + ;; + ;; c-outline.el (by me) provides outline-mode support to recognise `C' + ;; statements as outline headings, so with foldout you can have a folding `C' + ;; code editor without having to put in start- and end-of-fold markers. This + ;; is a real winner! + + ;;; ChangeLog: + + ;; 1.10 21-Mar-94 + ;; foldout.el is now part of the GNU Emacs distribution!! + ;; Put in changes made by RMS to version 1.8 to keep the diffs to a minimum. + ;; bugfix: numeric arg to foldout-exit-fold wasn't working - looks like I don't + ;; know how to use the Common LISP `loop' macro after all, so use `while' + ;; instead. + + ;; 1.9 15-Mar-94 + ;; Didn't test that very well, did I? The change to foldout-zoom-subtree + ;; affected foldout-mouse-zoom: if the heading under the `level n' one clicked + ;; on was at `level n+2' then it didn't get exposed. Sorry about that! + + ;; 1.8 15-Mar-94 + ;; Changed meaning of prefix arg to foldout-zoom-subtree. arg > 0 now means + ;; "expose that many children" instead of just "expose children" so it is more + ;; like `show-children' (C-c C-i). Arg of C-u on its own only shows one level + ;; of children, though, so you can still zoom by doing C-u C-c C-z. + ;; + ;; I can't think of a good meaning for the value of a negative prefix. Any + ;; suggestions? + ;; + ;; Added advertisement for my c-outline.el package. Now you can have a folding + ;; editor for c-mode without any effort! + + ;; 1.7 7-Mar-94 + ;; I got fed up trying to work out how many blank lines there were outside the + ;; narrowed region when inside a fold. Now *all* newlines before the following + ;; heading are *in* the narrowed region. Thus, if the cursor is at point-max, + ;; the number of blank lines above it is the number you'll get above the next + ;; heading. + ;; + ;; Since all newlines are now inside the narrowed region, when exiting a fold + ;; add a newline at the end of the region if there isn't one so that the + ;; following heading doesn't accidentally get joined to the body text. + ;; + ;; Bugfix: `foldout-mouse-modifiers' should be `defvar', not `defconst'. + ;; + ;; Use "cond" instead of "case" so that lemacs-19.9 users can use the mouse. + ;; + ;; Improve "Commentary" entry on using the mouse. + ;; + ;; Add "Installation" keyword. + + ;; 1.6 3-Mar-94 + ;; Add mouse support functions foldout-mouse-zoom, foldout-mouse-show, + ;; foldout-mouse-hide-or-exit. + + ;; 1.5 11-Feb-94 + ;; Rename `foldout-enter-subtree' to `foldout-zoom-subtree' and change + ;; keystroke from C-g to C-z. This is more mnemonic and leaves C-g alone, as + ;; users expect this to cancel the current key sequence. + ;; + ;; Added better commentary at the request of RMS. Added stuff to comply with + ;; the lisp-mnt.el conventions. Added instructions on how best to load the + ;; package. + + ;; 1.4 2-Feb-94 + ;; Bugfix: end-of-fold marking was wrong:- + ;; + ;; End of narrowed region should be one character on from + ;; (outline-end-of-subtree) so it includes the end-of-line at the end of the + ;; last line of the subtree. + ;; + ;; End-of-fold marker should be outside the narrowed region so text inserted + ;; at the end of the region goes before the marker. Need to make a special + ;; case for end-of-buffer because it is impossible to set a marker that will + ;; follow eob. Bummer. + + ;; 1.3 28-Jan-94 + ;; Changed `foldout-zoom-subtree'. A zero arg now makes it expose the entire + ;; subtree on entering the fold. As before, < 0 shows only the body and > 0 + ;; shows only the subheadings. + + ;; 1.2 28-Jan-94 + ;; Fixed a dumb bug - didn't make `foldout-modeline-string' buffer-local :-( + ;; + ;; Changed `foldout-exit-fold' to use prefix arg to say how many folds to exit. + ;; Negative arg means exit but don't hide text. Zero arg means exit all folds. + ;; + ;; Added `foldout-inhibit-key-bindings' to inhibit key bindings. + + ;; 1.1 27-Jan-94 + ;; Released to the net. Inspired by a question in gnu.emacs.help from + ;; Jason D Lohn . + + ;;; Code: + + (require 'outline) + + ;; something has gone very wrong if outline-minor-mode isn't bound now. + (if (not (boundp 'outline-minor-mode)) + (error "Can't find outline-minor-mode")) + + (defconst foldout-fold-list nil + "List of start and end markers for the folds currently entered. + An end marker of NIL means the fold ends after (point-max).") + (make-variable-buffer-local 'foldout-fold-list) + + (defconst foldout-modeline-string nil + "Modeline string announcing that we are in an outline fold.") + (make-variable-buffer-local 'foldout-modeline-string) + + ;; put our minor mode string immediately following outline-minor-mode's + (or (assq 'foldout-modeline-string minor-mode-alist) + (let ((outl-entry (memq (assq 'outline-minor-mode minor-mode-alist) + minor-mode-alist)) + (foldout-entry '((foldout-modeline-string foldout-modeline-string)))) + + ;; something's wrong with outline if we can't find it + (if (null outl-entry) + (error "Can't find outline-minor-mode in minor-mode-alist")) + + ;; slip our fold announcement into the list + (setcdr outl-entry (nconc foldout-entry (cdr outl-entry))) + )) + + + (defun foldout-zoom-subtree (&optional exposure) + "Open the subtree under the current heading and narrow to it. + + Normally the body and the immediate subheadings are exposed, but + optional arg EXPOSURE \(interactively with prefix arg\) changes this:- + + EXPOSURE > 0 exposes n levels of subheadings (c.f. show-children) + EXPOSURE < 0 exposes only the body + EXPOSURE = 0 exposes the entire subtree" + (interactive "P") + (save-excursion + (widen) + (outline-back-to-heading) + (let* ((exposure-value (prefix-numeric-value exposure)) + (start (point)) + (start-marker (point-marker)) + (end (progn (outline-end-of-subtree) + (skip-chars-forward "\n\^M") + (point))) + ;; I need a marker that will follow the end of the region even when + ;; text is inserted right at the end. Text gets inserted *after* + ;; markers, so I need it at end+1. Unfortunately I can't set a + ;; marker at (point-max)+1, so I use NIL to mean the region ends at + ;; (point-max). + (end-marker (if (eobp) nil (set-marker (make-marker) (1+ end)))) + ) + + ;; narrow to this subtree + (narrow-to-region start end) + + ;; show the body and/or subheadings for this heading + (goto-char start) + (cond + ((null exposure) + (show-entry) + (show-children)) + ((< exposure-value 0) + (show-entry)) + ((consp exposure) + (show-children)) + ((> exposure-value 0) + (show-children exposure-value)) + (t + (show-subtree)) + ) + + ;; save the location of the fold we are entering + (setq foldout-fold-list (cons (cons start-marker end-marker) + foldout-fold-list)) + + ;; update the modeline + (foldout-update-modeline) + ))) + + + (defun foldout-exit-fold (&optional num-folds) + "Return to the ARG'th enclosing fold view. With ARG = 0 exit all folds. + + Normally causes exited folds to be hidden, but with ARG < 0, -ARG folds are + exited and text is left visible." + (interactive "p") + (let (start-marker end-marker (hide-fold t)) + + ;; check there are some folds to leave + (if (null foldout-fold-list) + (error "Not in a fold!")) + + (cond + ;; catch a request to leave all folds + ((zerop num-folds) + (setq num-folds (length foldout-fold-list))) + + ;; have we been told not to hide the fold? + ((< num-folds 0) + (setq hide-fold nil + num-folds (- num-folds))) + ) + + ;; limit the number of folds if we've been told to exit too many + (setq num-folds (min num-folds (length foldout-fold-list))) + + ;; exit the folds + (widen) + (while (not (zerop num-folds)) + ;; get the fold at the top of the stack + (setq start-marker (car (car foldout-fold-list)) + end-marker (cdr (car foldout-fold-list)) + foldout-fold-list (cdr foldout-fold-list) + num-folds (1- num-folds)) + + ;; Make sure there is a newline at the end of this fold, + ;; otherwise the following heading will get joined to the body + ;; text. + (if end-marker + (progn + (goto-char end-marker) + (forward-char -1) + (or (memq (preceding-char) '(?\n ?\^M)) + (insert ?\n)))) + + ;; If this is the last fold to exit, hide the text unless we've + ;; been told not to. Note that at the moment point is at the + ;; beginning of the following heading if there is one. + + ;; Also, make sure that the newline before the following heading + ;; is \n otherwise it will be hidden. If there is a newline + ;; before this one, make it visible too so we do the same as + ;; outline.el and leave a blank line before the heading. + (if (zerop num-folds) + (let ((beginning-of-heading (point)) + (end-of-subtree (if end-marker + (progn + (forward-char -1) + (if (memq (preceding-char) + '(?\n ?\^M)) + (forward-char -1)) + (point)) + (point-max)))) + ;; hide the subtree + (if hide-fold + (outline-flag-region start-marker end-of-subtree ?\^M)) + + ;; make sure the next heading is exposed + (if end-marker + (outline-flag-region end-of-subtree + beginning-of-heading ?\n)) + )) + + ;; zap the markers so they don't slow down editing + (set-marker start-marker nil) + (if end-marker (set-marker end-marker nil)) + ) + + ;; narrow to the enclosing fold if there is one + (if foldout-fold-list + (progn + (setq start-marker (car (car foldout-fold-list)) + end-marker (cdr (car foldout-fold-list))) + (narrow-to-region start-marker + (if end-marker + (1- (marker-position end-marker)) + (point-max))) + )) + (recenter) + + ;; update the modeline + (foldout-update-modeline) + )) + + + (defun foldout-update-modeline () + "Set the modeline string to indicate our fold depth." + (let ((depth (length foldout-fold-list))) + (setq foldout-modeline-string + (cond + ;; if we're not in a fold, keep quiet + ((zerop depth) + nil) + ;; in outline-minor-mode we're after "Outl:xx" in the modeline + (outline-minor-mode + (format ":%d" depth)) + ;; otherwise just announce the depth (I guess we're in outline-mode) + ((= depth 1) + " Inside 1 fold") + (t + (format " Inside %d folds" depth)) + )))) + + + (defun foldout-mouse-zoom (event) + "Zoom in on the heading clicked on. + + How much is exposed by the zoom depends on the number of mouse clicks:- + + 1 expose body + 2 expose subheadings + 3 expose body and subheadings + 4 expose entire subtree" + (interactive "@e") + + ;; swallow intervening mouse events so we only get the final click-count. + (setq event (foldout-mouse-swallow-events event)) + + ;; go to the heading clicked on + (foldout-mouse-goto-heading event) + + ;; zoom away + (foldout-zoom-subtree + (let ((nclicks (event-click-count event))) + (cond + ((= nclicks 1) -1) ; body only + ((= nclicks 2) '(1)) ; subheadings only + ((= nclicks 3) nil) ; body and subheadings + (t 0))))) ; entire subtree + + (defun foldout-mouse-show (event) + "Show what is hidden under the heading clicked on. + + What gets exposed depends on the number of mouse clicks:- + + 1 expose body + 2 expose subheadings + 3 expose body and subheadings + 4 expose entire subtree" + (interactive "@e") + + ;; swallow intervening mouse events so we only get the final click-count. + (setq event (foldout-mouse-swallow-events event)) + + ;; expose the text + (foldout-mouse-goto-heading event) + (let ((nclicks (event-click-count event))) + (cond + ((= nclicks 1) (show-entry)) + ((= nclicks 2) (show-children)) + ((= nclicks 3) (show-entry) (show-children)) + (t (show-subtree))))) + + (defun foldout-mouse-hide-or-exit (event) + "Hide the subtree under the heading clicked on, or exit a fold. + + What happens depends on the number of mouse clicks:- + + 1 hide subtree + 2 exit fold and hide text + 3 exit fold without hiding text + 4 exit all folds and hide text" + (interactive "@e") + + ;; swallow intervening mouse events so we only get the final click-count. + (setq event (foldout-mouse-swallow-events event)) + + ;; hide or exit + (let ((nclicks (event-click-count event))) + (if (= nclicks 1) + (progn + (foldout-mouse-goto-heading event) + (hide-subtree)) + (foldout-exit-fold + (cond + ((= nclicks 2) 1) ; exit and hide + ((= nclicks 3) -1) ; exit don't hide + (t 0)))))) ; exit all + + + (defun foldout-mouse-swallow-events (event) + "Swallow intervening mouse events so we only get the final click-count. + Signal an error if the final event isn't the same type as the first one." + (let ((initial-event-type (event-basic-type event))) + (while (null (sit-for 0 double-click-time 'nodisplay)) + (setq event (read-event))) + (or (eq initial-event-type (event-basic-type event)) + (error ""))) + event) + + (defun foldout-mouse-goto-heading (event) + "Go to the heading where the mouse event started. Signal an error + if the event didn't occur on a heading." + (goto-char (posn-point (event-start event))) + (or (outline-on-heading-p) + ;; outline.el sometimes treats beginning-of-buffer as a heading + ;; even though outline-on-heading returns nil. + (save-excursion (beginning-of-line) (bobp)) + (error "Not a heading line"))) + + + ;;; Keymaps: + + (defvar foldout-inhibit-key-bindings nil + "Set non-NIL before loading foldout to inhibit key bindings.") + + (defvar foldout-mouse-modifiers '(meta control) + "List of modifier keys to apply to foldout's mouse events. + + The default (meta control) makes foldout bind its functions to + M-C-down-mouse-{1,2,3}. + + Valid modifiers are shift, control, meta, alt, hyper and super.") + + (if foldout-inhibit-key-bindings + () + (define-key outline-mode-map "\C-c\C-z" 'foldout-zoom-subtree) + (define-key outline-mode-map "\C-c\C-x" 'foldout-exit-fold) + (define-key outline-minor-mode-map + (concat outline-minor-mode-prefix "\C-z") 'foldout-zoom-subtree) + (define-key outline-minor-mode-map + (concat outline-minor-mode-prefix "\C-x") 'foldout-exit-fold) + + (let* ((modifiers (apply 'concat + (mapcar (function + (lambda (modifier) + (vector + (cond + ((eq modifier 'shift) ?S) + ((eq modifier 'control) ?C) + ((eq modifier 'meta) ?M) + ((eq modifier 'alt) ?A) + ((eq modifier 'hyper) ?H) + ((eq modifier 'super) ?s) + (t (error "invalid mouse modifier %s" + modifier))) + ?-))) + foldout-mouse-modifiers))) + (mouse-1 (vector (intern (concat modifiers "down-mouse-1")))) + (mouse-2 (vector (intern (concat modifiers "down-mouse-2")))) + (mouse-3 (vector (intern (concat modifiers "down-mouse-3"))))) + + (define-key outline-mode-map mouse-1 'foldout-mouse-zoom) + (define-key outline-mode-map mouse-2 'foldout-mouse-show) + (define-key outline-mode-map mouse-3 'foldout-mouse-hide-or-exit) + + (define-key outline-minor-mode-map mouse-1 'foldout-mouse-zoom) + (define-key outline-minor-mode-map mouse-2 'foldout-mouse-show) + (define-key outline-minor-mode-map mouse-3 'foldout-mouse-hide-or-exit) + )) + + (provide 'foldout) + + ;;; foldout.el ends here + diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/font-lock.el emacs-19.24/lisp/font-lock.el *** emacs-19.23/lisp/font-lock.el Fri May 13 17:21:50 1994 --- emacs-19.24/lisp/font-lock.el Wed May 18 19:35:21 1994 *************** *** 266,270 **** ;; inserting space into `intfoo () {}'. (if font-lock-no-comments ! (remove-text-properties beg (1+ end) '(face nil)) (font-lock-fontify-region beg (min (1+ end) (point-max)))) ;; Now scan for keywords. --- 266,270 ---- ;; inserting space into `intfoo () {}'. (if font-lock-no-comments ! (remove-text-properties beg (min (1+ end) (point-max)) '(face nil)) (font-lock-fontify-region beg (min (1+ end) (point-max)))) ;; Now scan for keywords. *************** *** 366,374 **** (if (equal (buffer-name) " *Compiler Input*") ; hack for bytecomp... (setq on-p nil)) ! (or (memq after-change-function ! '(nil font-lock-after-change-function)) ! (error "after-change-function is %s" after-change-function)) ! (set (make-local-variable 'after-change-function) ! (if on-p 'font-lock-after-change-function nil)) (set (make-local-variable 'font-lock-mode) on-p) (make-local-variable 'font-lock-no-comments) --- 366,377 ---- (if (equal (buffer-name) " *Compiler Input*") ; hack for bytecomp... (setq on-p nil)) ! (make-local-variable 'after-change-functions) ! (if on-p ! (or (memq 'font-lock-after-change-function after-change-functions) ! (setq after-change-functions (cons 'font-lock-after-change-function ! after-change-functions))) ! (setq after-change-functions ! (delq 'font-lock-after-change-function ! (copy-sequence after-change-functions)))) (set (make-local-variable 'font-lock-mode) on-p) (make-local-variable 'font-lock-no-comments) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/forms.el emacs-19.24/lisp/forms.el *** emacs-19.23/lisp/forms.el Fri May 6 21:52:49 1994 --- emacs-19.24/lisp/forms.el Sun May 22 18:07:45 1994 *************** *** 3,7 **** ;; Author: Johan Vromans ! ;; Version: $Revision: 2.5 $ ;; This file is part of GNU Emacs. --- 3,7 ---- ;; Author: Johan Vromans ! ;; Version: $Revision: 2.6 $ ;; This file is part of GNU Emacs. *************** *** 267,274 **** (provide 'forms-mode) ;;; for compatibility ! (defconst forms-version (substring "$Revision: 2.5 $" 11 -2) "The version number of forms-mode (as string). The complete RCS id is: ! $Id: forms.el,v 2.5 1994/05/07 01:52:42 kwzh Exp $") (defvar forms-mode-hooks nil --- 267,274 ---- (provide 'forms-mode) ;;; for compatibility ! (defconst forms-version (substring "$Revision: 2.6 $" 11 -2) "The version number of forms-mode (as string). The complete RCS id is: ! $Id: forms.el,v 2.6 1994/05/22 22:07:37 rms Exp $") (defvar forms-mode-hooks nil *************** *** 293,297 **** (defvar forms-read-only nil "Non-nil means: visit the file in view (read-only) mode. ! (Defaults to the write access on the data file).") (defvar forms-multi-line "\C-k" --- 293,297 ---- (defvar forms-read-only nil "Non-nil means: visit the file in view (read-only) mode. ! \(Defaults to the write access on the data file).") (defvar forms-multi-line "\C-k" diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/frame.el emacs-19.24/lisp/frame.el *** emacs-19.23/lisp/frame.el Tue May 10 03:41:36 1994 --- emacs-19.24/lisp/frame.el Mon May 23 05:10:47 1994 *************** *** 131,134 **** --- 131,144 ---- (setq frame-initial-frame-alist (append initial-frame-alist default-frame-alist)) + ;; Record these with their default values + ;; if they don't have any values explicitly. + (or (assq 'vertical-scroll-bars frame-initial-frame-alist) + (setq frame-initial-frame-alist + (cons '(vertical-scroll-bars . t) + frame-initial-frame-alist))) + (or (assq 'horizontal-scroll-bars frame-initial-frame-alist) + (setq frame-initial-frame-alist + (cons '(horizontal-scroll-bars . t) + frame-initial-frame-alist))) (setq default-minibuffer-frame (setq frame-initial-frame diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/gnus.el emacs-19.24/lisp/gnus.el *** emacs-19.23/lisp/gnus.el Tue May 17 05:04:57 1994 --- emacs-19.24/lisp/gnus.el Sun May 22 17:59:37 1994 *************** *** 143,147 **** possible to save an article in an MH folder as follows: ! (setq gnus-author-copy \"|/usr/local/lib/mh/rcvstore +Article\")") (defvar gnus-author-copy-saver (function rmail-output) --- 143,147 ---- possible to save an article in an MH folder as follows: ! \(setq gnus-author-copy \"|/usr/local/lib/mh/rcvstore +Article\")") (defvar gnus-author-copy-saver (function rmail-output) *************** *** 770,775 **** (defvar gnus-kill-file-mode-map nil) ! (defvar rmail-last-file (expand-file-name "~/XMBOX")) ! (defvar rmail-last-rmail-file (expand-file-name "~/XNEWS")) ;; Define GNUS Subsystems. --- 770,775 ---- (defvar gnus-kill-file-mode-map nil) ! (defvar rmail-default-file (expand-file-name "~/XMBOX")) ! (defvar rmail-default-rmail-file (expand-file-name "~/XNEWS")) ;; Define GNUS Subsystems. *************** *** 1533,1538 **** "Toggle subscribe from/to unsubscribe current group." (interactive) ! (gnus-group-unsubscribe-group (gnus-group-group-name)) ! (gnus-group-next-group 1)) (defun gnus-group-unsubscribe-group (group) --- 1533,1542 ---- "Toggle subscribe from/to unsubscribe current group." (interactive) ! (let ((group (gnus-group-group-name))) ! (if group ! (progn ! (gnus-group-unsubscribe-group group) ! (gnus-group-next-group 1)) ! (message "No Newsgroup found to \(un\)subscribe")))) (defun gnus-group-unsubscribe-group (group) *************** *** 3720,3724 **** 'no-need-to-write-this-buffer)))) ;; Default file name saving digest messages. ! (setq rmail-last-rmail-file (funcall gnus-rmail-save-name gnus-newsgroup-name --- 3724,3728 ---- 'no-need-to-write-this-buffer)))) ;; Default file name saving digest messages. ! (setq rmail-default-rmail-file (funcall gnus-rmail-save-name gnus-newsgroup-name *************** *** 3726,3730 **** gnus-newsgroup-last-rmail )) ! (setq rmail-last-file (funcall gnus-mail-save-name gnus-newsgroup-name --- 3730,3734 ---- gnus-newsgroup-last-rmail )) ! (setq rmail-default-file (funcall gnus-mail-save-name gnus-newsgroup-name *************** *** 5260,5264 **** ;; Most of these codes are borrowed from rmailout.el. (setq file-name (expand-file-name file-name)) ! (setq rmail-last-rmail-file file-name) (let ((artbuf (current-buffer)) (tmpbuf (get-buffer-create " *GNUS-output*"))) --- 5264,5268 ---- ;; Most of these codes are borrowed from rmailout.el. (setq file-name (expand-file-name file-name)) ! (setq rmail-default-rmail-file file-name) (let ((artbuf (current-buffer)) (tmpbuf (get-buffer-create " *GNUS-output*"))) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/hippie-exp.el emacs-19.24/lisp/hippie-exp.el *** emacs-19.23/lisp/hippie-exp.el Wed Dec 22 23:38:14 1993 --- emacs-19.24/lisp/hippie-exp.el Sun May 22 17:59:42 1994 *************** *** 192,196 **** "*A list specifying which buffers not to search (if not current). Can contain both regexps matching buffer names (as strings) and major modes ! (as atoms)") ;;;###autoload --- 192,196 ---- "*A list specifying which buffers not to search (if not current). Can contain both regexps matching buffer names (as strings) and major modes ! \(as atoms)") ;;;###autoload diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/holidays.el emacs-19.24/lisp/holidays.el *** emacs-19.23/lisp/holidays.el Tue May 3 19:11:17 1994 --- emacs-19.24/lisp/holidays.el Sun May 22 17:59:48 1994 *************** *** 210,214 **** "Holiday on MONTH, DAYNAME (Nth occurrence, Gregorian) called STRING. If the Nth DAYNAME in MONTH is visible, the value returned is the list ! (((MONTH DAY year) STRING)). If N<0, count backward from the end of MONTH. --- 210,214 ---- "Holiday on MONTH, DAYNAME (Nth occurrence, Gregorian) called STRING. If the Nth DAYNAME in MONTH is visible, the value returned is the list ! \(((MONTH DAY year) STRING)). If N<0, count backward from the end of MONTH. diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/imenu.el emacs-19.24/lisp/imenu.el *** emacs-19.23/lisp/imenu.el Fri May 6 02:05:37 1994 --- emacs-19.24/lisp/imenu.el Sun May 22 17:59:52 1994 *************** *** 109,113 **** The function should take two arguments and return T if the first element should come before the second. The arguments are cons cells; ! (NAME . POSITION). Look at `imenu--sort-by-name' for an example.") (defvar imenu-max-items 25 --- 109,113 ---- The function should take two arguments and return T if the first element should come before the second. The arguments are cons cells; ! \(NAME . POSITION). Look at `imenu--sort-by-name' for an example.") (defvar imenu-max-items 25 *************** *** 142,146 **** of the current buffer as an alist. The elements in the alist look like: (INDEX-NAME . INDEX-POSITION). You may also nest index list like ! (INDEX-NAME . INDEX-ALIST). This function is called within a `save-excursion'. --- 142,146 ---- of the current buffer as an alist. The elements in the alist look like: (INDEX-NAME . INDEX-POSITION). You may also nest index list like ! \(INDEX-NAME . INDEX-ALIST). This function is called within a `save-excursion'. diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/inf-lisp.el emacs-19.24/lisp/inf-lisp.el *** emacs-19.23/lisp/inf-lisp.el Tue May 3 19:42:06 1994 --- emacs-19.24/lisp/inf-lisp.el Sun May 22 17:59:58 1994 *************** *** 70,74 **** Input matching this regexp is not saved on the input history in Inferior Lisp mode. Default is whitespace followed by 0 or 1 single-letter colon-keyword ! (as in :a, :c, etc.)") (defvar inferior-lisp-mode-map nil) --- 70,74 ---- Input matching this regexp is not saved on the input history in Inferior Lisp mode. Default is whitespace followed by 0 or 1 single-letter colon-keyword ! \(as in :a, :c, etc.)") (defvar inferior-lisp-mode-map nil) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/info.el emacs-19.24/lisp/info.el *** emacs-19.23/lisp/info.el Tue May 3 18:11:15 1994 --- emacs-19.24/lisp/info.el Thu May 19 18:41:29 1994 *************** *** 130,133 **** --- 130,139 ---- (setq fullname (concat filename (car (car tail))) decoder (cdr (car tail))) + ;; check for conflict with jka-compr + (if (and (featurep 'jka-compr) + (jka-compr-installed-p) + (jka-compr-get-compression-info (concat filename + (car (car tail))))) + (setq decoder nil)) (or tail (error "Can't find %s or any compressed version of it!" filename))) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/ispell.el emacs-19.24/lisp/ispell.el *** emacs-19.23/lisp/ispell.el Thu Apr 21 16:00:08 1994 --- emacs-19.24/lisp/ispell.el Sun May 22 18:00:13 1994 *************** *** 8,16 **** ;;; Authors : Ken Stevens et. al. ;;; Last Modified By: Ken Stevens ! ;;; Last Modified On: Tue Feb 15 16:11:14 MST 1994 ! ;;; Update Revision : 2.26 ;;; Syntax : emacs-lisp ! ;;; Status : Release with 3.1.03 ispell. ;;; Version : International Ispell Version 3.1 by Geoff Kuenning. ;;; ;;; This file is part of GNU Emacs. --- 8,17 ---- ;;; Authors : Ken Stevens et. al. ;;; Last Modified By: Ken Stevens ! ;;; Last Modified On: Fri May 20 15:58:52 MDT 1994 ! ;;; Update Revision : 2.30 ;;; Syntax : emacs-lisp ! ;;; Status : Release with 3.1.05 ispell. ;;; Version : International Ispell Version 3.1 by Geoff Kuenning. + ;;; Bug Reports : ispell-el-bugs@itcorp.com ;;; ;;; This file is part of GNU Emacs. *************** *** 43,47 **** ;;; ;;; ! ;;; To fully install this, add this file to your GNU lisp directory and ;;; compile it with M-X byte-compile-file. Then add the following to the ;;; appropriate init file: --- 44,48 ---- ;;; ;;; ! ;;; To fully install this, add this file to your Emacs Lisp directory and ;;; compile it with M-X byte-compile-file. Then add the following to the ;;; appropriate init file: *************** *** 105,109 **** ;;; 'C-l': redraws screen ;;; 'C-r': recursive edit ! ;;; 'C-z': suspend emacs ;;; ;;; Buffer-Local features: --- 106,110 ---- ;;; 'C-l': redraws screen ;;; 'C-r': recursive edit ! ;;; 'C-z': suspend emacs or iconify frame ;;; ;;; Buffer-Local features: *************** *** 130,136 **** ;;; HISTORY ;;; ! ;;; Revision 2.26 ;;; name changes for copyright assignment. Added word-frags in complete-word. ! ;;; Horizontal scroll (John Conover) Query-replace matches words now. bugs. ;;; ;;; Revision 2.25 --- 131,155 ---- ;;; HISTORY ;;; ! ;;; Revision 2.30 1994/5/20 15:58:52 stevens ! ;;; Continue ispell from ispell-word, C-z functionality fixed. ! ;;; ! ;;; Revision 2.29 1994/5/12 09:44:33 stevens ! ;;; Restored ispell-use-ptys-p, ispell-message aborts sends with interrupt. ! ;;; defined fn ispell ! ;;; ! ;;; Revision 2.28 1994/4/28 16:24:40 stevens ! ;;; Window checking when ispell-message put on gnus-inews-article-hook jwz. ! ;;; prefixed ispell- to highlight functions and horiz-scroll fn. ! ;;; Try and respect case of word in ispell-complete-word. ! ;;; Ignore non-char events. Ispell-use-ptys-p commented out. Lucid menu. ! ;;; Better interrupt handling. ispell-message improvements from Ethan. ! ;;; ! ;;; Revision 2.27 ! ;;; version 18 explicit C-g handling disabled as it didn't work. Added ! ;;; ispell-extra-args for ispell customization (jwz) ! ;;; ! ;;; Revision 2.26 1994/2/15 16:11:14 stevens ;;; name changes for copyright assignment. Added word-frags in complete-word. ! ;;; Horizontal scroll (John Conover). Query-replace matches words now. bugs. ;;; ;;; Revision 2.25 *************** *** 270,297 **** (defvar ispell-highlight-p t ! "*When not nil, spelling errors will be highlighted.") (defvar ispell-highlight-face 'highlight ! "*The face used for ispell highlighting. For Emacses with overlays. ! Common values for GNU emacs are highlight, modeline, secondary-selection, ! region, and underline. This variable can be set by the user to whatever face they desire. It's most convenient if the cursor color and highlight color are ! slightly different.") (defvar ispell-check-comments nil ! "*When true, the spelling of comments in region is checked.") (defvar ispell-query-replace-choices nil ! "*When true and spell checking a region, the correction will be made ! throughout the buffer using \\[query-replace].") (defvar ispell-skip-tib nil ! "*If non-nil, the spelling of references for the tib(1) bibliography ! program are skipped. Otherwise any text between strings matching the regexps ! ispell-tib-ref-beginning and ispell-tib-ref-end is ignored. TeX users beware: Any field starting with [. will skip until a .] -- even ! your whole buffer -- unless you set ispell-skip-tib to nil. That includes a [.5mm] type of number....") --- 289,316 ---- (defvar ispell-highlight-p t ! "*Highlight spelling errors when non-nil.") (defvar ispell-highlight-face 'highlight ! "*The face used for Ispell highlighting. For Emacses with overlays. ! Possible values are `highlight', `modeline', `secondary-selection', ! `region', and `underline'. This variable can be set by the user to whatever face they desire. It's most convenient if the cursor color and highlight color are ! slightly different.") (defvar ispell-check-comments nil ! "*Spelling of comments checked when non-nil.") (defvar ispell-query-replace-choices nil ! "*Corrections made throughout region when non-nil. ! Uses `query-replace' (\\[query-replace]) for corrections.") (defvar ispell-skip-tib nil ! "*Does not spell check `tib' bibliography references when non-nil. ! Skips any text between strings matching regular expressions ! `ispell-tib-ref-beginning' and `ispell-tib-ref-end'. TeX users beware: Any field starting with [. will skip until a .] -- even ! your whole buffer -- unless you set `ispell-skip-tib' to nil. That includes a [.5mm] type of number....") *************** *** 303,312 **** (defvar ispell-keep-choices-win t ! "*When not nil, the *Choices* window remains for spelling session. This minimizes redisplay thrashing.") (defvar ispell-choices-win-default-height 2 ! "*The default size of the *Choices*, including status line. ! Must be greater than 1.") (defvar ispell-program-name "ispell" --- 322,331 ---- (defvar ispell-keep-choices-win t ! "*When not nil, the `*Choices*' window remains for spelling session. This minimizes redisplay thrashing.") (defvar ispell-choices-win-default-height 2 ! "*The default size of the `*Choices*' window, including status line. ! Must be greater than 1.") (defvar ispell-program-name "ispell" *************** *** 328,332 **** (defvar ispell-grep-options "-i" ! "Options for ispell-grep-command. Should probably be \"-i\" or \"-e\". Some machines (like the NeXT) don't support \"-i\"") --- 347,351 ---- (defvar ispell-grep-options "-i" ! "String of options to use when running the program in `ispell-grep-command'. Should probably be \"-i\" or \"-e\". Some machines (like the NeXT) don't support \"-i\"") *************** *** 334,342 **** (defvar ispell-look-command "/usr/bin/look" "Name of the look command for search processes. ! Must contain complete path!") (defvar ispell-look-p (file-exists-p ispell-look-command) ! "*Use look. Should be nil if your UNIX doesn't have this program. ! Attempts to automatically reset if look not available") (defvar ispell-have-new-look nil --- 353,361 ---- (defvar ispell-look-command "/usr/bin/look" "Name of the look command for search processes. ! This must be an absolute file name.") (defvar ispell-look-p (file-exists-p ispell-look-command) ! "*Non-nil means use `look; rather than `grep'. ! Default is based on whether `look' seems to be available.") (defvar ispell-have-new-look nil *************** *** 344,376 **** (defvar ispell-look-options (if ispell-have-new-look "-dfr" "-df") ! "Options for ispell-look-command") (defvar ispell-use-ptys-p nil ! "When t, Emacs uses pty's to communicate with Ispell. When nil, Emacs uses pipes.") (defvar ispell-following-word nil ! "*If non-nil the \\[ispell-word] command will check the spelling ! of the word under or following \(rather than preceding\) the cursor ! when called interactively.") ! ! (defvar ispell-help-in-bufferp t ! "*If non-nil, the \\[ispell-help] command will display its ! message in a buffer. Otherwise the minibuffer will be used.") (defvar ispell-quietly nil ! "*If non-nil, the \\[ispell-word] command will suppress all ! non-corrective messages when called interactively.") (defvar ispell-format-word (function upcase) ! "*The function called to format the word whose spelling is being checked, ! in diagnostic messages to the user. The function must take one string ! argument and return a string.") (defvar ispell-personal-dictionary nil ! "*A string or nil. If nil, the default directory, ~/.ispell_words is used.") (defvar ispell-silently-savep nil ! "*When non-nil, save the personal dictionary without user verification.") ;;; This variable contains the current dictionary being used if the ispell --- 363,393 ---- (defvar ispell-look-options (if ispell-have-new-look "-dfr" "-df") ! "String of command options for `ispell-look-command'.") (defvar ispell-use-ptys-p nil ! "When non-nil, Emacs uses ptys to communicate with Ispell. When nil, Emacs uses pipes.") (defvar ispell-following-word nil ! "*Non-nil means `ispell-word' checks the word around or after point. ! Otherwise `ispell-word' checks the preceding word.") + (defvar ispell-help-in-bufferp nil + "*Non-nil means display interactive keymap help in a buffer. + Otherwise use the minibuffer.") + (defvar ispell-quietly nil ! "*Non-nil means suppress messages in `ispell-word'.") (defvar ispell-format-word (function upcase) ! "*Formatting function for displaying word being spell checked. ! The function must take one string argument and return a string.") (defvar ispell-personal-dictionary nil ! "*File name of your personal spelling dictionary. ! If nil, default dictionary `~/.ispell_words' is used.") (defvar ispell-silently-savep nil ! "*When non-nil, save the personal dictionary without confirmation.") ;;; This variable contains the current dictionary being used if the ispell *************** *** 378,416 **** (defvar ispell-dictionary nil "If non-nil, a dictionary to use instead of the default one. ! This is passed to the ispell process using the \"-d\" switch and is ! used as key in ispell-dictionary-alist (which see). ! You should set this variable before your first call to ispell (e.g. in ! your .emacs), or use the \\[ispell-change-dictionary] command to ! change it, as changing this variable only takes effect in a newly ! started ispell process.") - ;;;###autoload (defvar ispell-dictionary-alist ; sk 9-Aug-1991 18:28 '((nil ; default (english.aff) ! "[A-Za-z]" "[^A-Za-z]" "[-']" nil ("-B") nil) ("english" ; make english explicitly selectable ! "[A-Za-z]" "[^A-Za-z]" "[-']" nil ("-B") nil) ("deutsch" ; deutsch.aff ! "[a-zA-Z\"]" "[^a-zA-Z\"]" "[-']" t ("-C") nil) ("deutsch8" "[a-zA-Z\304\326\334\344\366\337\374]" "[^a-zA-Z\304\326\334\344\366\337\374]" ! "[-']" t ("-C" "-d" "deutsch") "~latin1") ("nederlands8" ; dutch8.aff "[A-Za-z\300-\305\307\310-\317\322-\326\331-\334\340-\345\347\350-\357\361\362-\366\371-\374]" "[^A-Za-z\300-\305\307\310-\317\322-\326\331-\334\340-\345\347\350-\357\361\362-\366\371-\374]" ! "[-']" t ("-C") nil) ("svenska" ;7 bit swedish mode "[A-Za-z}{|\\133\\135\\\\]" "[^A-Za-z}{|\\133\\135\\\\]" ! "[-']" nil ("-C") nil) ("svenska8" ;8 bit swedish mode "[A-Za-z\345\344\366\305\304\366]" "[^A-Za-z\345\344\366\305\304\366]" ! "[-']" nil ("-C" "-d" "svenska") "~list") ; Add `"-T" "list"' instead? ("francais" ! "[A-Za-z]" "[^A-Za-z]" "[-`'\^]" nil nil nil) ! ("danish" ; danish.aff "[A-Z\306\330\305a-z\346\370\345]" "[^A-Z\306\330\305a-z\346\370\345]" ! "[-]" nil ("-C") nil) ) "An alist of dictionaries and their associated parameters. --- 395,441 ---- (defvar ispell-dictionary nil "If non-nil, a dictionary to use instead of the default one. ! This is passed to the ispell process using the `-d' switch and is ! used as key in `ispell-dictionary-alist' (which see). ! You should set this variable before your first use of Emacs spell-checking ! commands in the Emacs session, or else use the \\[ispell-change-dictionary] command to ! change it. Otherwise, this variable only takes effect in a newly ! started Ispell process.") ! ! (defvar ispell-extra-args nil ! "*If non-nil, a list of extra switches to pass to the Ispell program. ! For example, '(\"-W\" \"3\") to cause it to accept all 1-3 character ! words as correct. See also `ispell-dictionary-alist', which may be used ! for language-specific arguments.") (defvar ispell-dictionary-alist ; sk 9-Aug-1991 18:28 '((nil ; default (english.aff) ! "[A-Za-z]" "[^A-Za-z]" "[---']" nil ("-B") nil) ("english" ; make english explicitly selectable ! "[A-Za-z]" "[^A-Za-z]" "[---']" nil ("-B") nil) ("deutsch" ; deutsch.aff ! "[a-zA-Z\"]" "[^a-zA-Z\"]" "[---']" t ("-C") nil) ("deutsch8" "[a-zA-Z\304\326\334\344\366\337\374]" "[^a-zA-Z\304\326\334\344\366\337\374]" ! "[---']" t ("-C" "-d" "deutsch") "~latin1") ("nederlands8" ; dutch8.aff "[A-Za-z\300-\305\307\310-\317\322-\326\331-\334\340-\345\347\350-\357\361\362-\366\371-\374]" "[^A-Za-z\300-\305\307\310-\317\322-\326\331-\334\340-\345\347\350-\357\361\362-\366\371-\374]" ! "[---']" t ("-C") nil) ("svenska" ;7 bit swedish mode "[A-Za-z}{|\\133\\135\\\\]" "[^A-Za-z}{|\\133\\135\\\\]" ! "[---']" nil ("-C") nil) ("svenska8" ;8 bit swedish mode "[A-Za-z\345\344\366\305\304\366]" "[^A-Za-z\345\344\366\305\304\366]" ! "[---']" nil ("-C" "-d" "svenska") "~list") ; Add `"-T" "list"' instead? ("francais" ! "[A-Za-z]" "[^A-Za-z]" "[`'^---]" t nil nil) ! ("francais8" "[A-Za-z\300\302\306\307\310\311\312\313\316\317\324\331\333\334\340\342\346\347\350\351\352\353\356\357\364\371\373\374]" ! "[^A-Za-z\300\302\304\306\307\310\311\312\313\316\317\324\326\331\333\334\340\342\344\346\347\350\351\352\353\356\357\364\366\371\373\374]" "[---']" ! t nil "~list") ! ("dansk" ; dansk.aff "[A-Z\306\330\305a-z\346\370\345]" "[^A-Z\306\330\305a-z\346\370\345]" ! "[---]" nil ("-C") nil) ) "An alist of dictionaries and their associated parameters. *************** *** 418,426 **** Each element of this list is also a list: ! \(DICTIONARY-NAME ! CASECHARS NOT-CASECHARS OTHERCHARS MANY-OTHERCHARS-P ISPELL-ARGS EXTENDED-CHARACTER-MODE\) ! DICTIONARY-NAME is a possible value of variable ispell-dictionary, nil means the default dictionary. --- 443,450 ---- Each element of this list is also a list: ! \(DICTIONARY-NAME CASECHARS NOT-CASECHARS OTHERCHARS MANY-OTHERCHARS-P ISPELL-ARGS EXTENDED-CHARACTER-MODE\) ! DICTIONARY-NAME is a possible value of variable `ispell-dictionary', nil means the default dictionary. *************** *** 444,454 **** EXTENDED-CHARACTER-MODE should be used when dictionaries are used which ! have been configured in ispell's parse.y. (For example, umlauts can be encoded as \\\"a, a\\\", \"a, ...) Defaults are ~tex and ~nroff ! in english. This has the same effect as the command-line `-T' option. ! The buffer Major Mode controls ispell's parsing in tex or nroff mode, but the dictionary can control the extended character mode. Both defaults can be overruled in a buffer-local fashion. See ! ispell-parsing-keyword for details on this. Note that the CASECHARS and OTHERCHARS slots of the alist should --- 468,478 ---- EXTENDED-CHARACTER-MODE should be used when dictionaries are used which ! have been configured in Ispell's parse.y. (For example, umlauts can be encoded as \\\"a, a\\\", \"a, ...) Defaults are ~tex and ~nroff ! in English. This has the same effect as the command-line `-T' option. ! The buffer Major Mode controls Ispell's parsing in tex or nroff mode, but the dictionary can control the extended character mode. Both defaults can be overruled in a buffer-local fashion. See ! `ispell-parsing-keyword' for details on this. Note that the CASECHARS and OTHERCHARS slots of the alist should *************** *** 457,504 **** - ;;; ispell-menu-map from menu-bar.el - - ;;;###autoload - (defvar ispell-menu-map nil) - ;;;###autoload - (if (null ispell-menu-map) - (let ((dicts (reverse (cons (cons "default" nil) ispell-dictionary-alist))) - name) - (setq ispell-menu-map (make-sparse-keymap "Spell")) - (while dicts - (setq name (car (car dicts)) - dicts (cdr dicts)) - (if (stringp name) - (define-key ispell-menu-map (vector (intern name)) - (cons (concat "Select " (capitalize name)) - (list 'lambda () '(interactive) - (list 'ispell-change-dictionary name)))))) - ;; Why do we need an alias here? - (defalias 'ispell-menu-map ispell-menu-map) - ;; Define commands in opposite order you want them to appear in menu. - (define-key ispell-menu-map [ispell-change-dictionary] - '("Change Dictionary" . ispell-change-dictionary)) - (define-key ispell-menu-map [ispell-kill-ispell] - '("Kill Process" . ispell-kill-ispell)) - (define-key ispell-menu-map [ispell-pdict-save] - '("Save Dictionary" . (lambda () (interactive) (ispell-pdict-save t)))) - (define-key ispell-menu-map [ispell-complete-word] - '("Complete Word" . ispell-complete-word)) - (define-key ispell-menu-map [ispell-complete-word-interior-frag] - '("Complete Word Frag" . ispell-complete-word-interior-frag)) - (define-key ispell-menu-map [ispell-continue] - '("Continue Check" . ispell-continue)) - (define-key ispell-menu-map [ispell-region] - '("Check Region" . ispell-region)) - (define-key ispell-menu-map [ispell-word] - '("Check Word" . ispell-word)) - (define-key ispell-menu-map [ispell-buffer] - '("Check Buffer" . ispell-buffer)) - (define-key ispell-menu-map [ispell-message] - '("Check Message" . ispell-message)) - (define-key ispell-menu-map [ispell-help] - '("Help" . (lambda () (interactive) (describe-function 'ispell-help)))) - )) --- 481,565 ---- + (cond + ((and (string-lessp "19" emacs-version) + (string-match "Lucid" emacs-version)) + (let ((dicts (cons (cons "default" nil) ispell-dictionary-alist)) + (current-menubar (or current-menubar default-menubar)) + (menu + '(["Help" (describe-function 'ispell-help) t] + ;;["Help" (popup-menu ispell-help-list) t] + ["Check Message" ispell-message t] + ["Check Buffer" ispell-buffer t] + ["Check Word" ispell-word t] + ["Check Region" ispell-region (or (not zmacs-regions) (mark))] + ["Continue Check" ispell-continue t] + ["Complete Word Frag"ispell-complete-word-interior-frag t] + ["Complete Word" ispell-complete-word t] + ["Kill Process" ispell-kill-ispell t] + "-" + ["Save Dictionary" (ispell-pdict-save t) t] + ["Change Dictionary" ispell-change-dictionary t])) + name) + (while dicts + (setq name (car (car dicts)) + dicts (cdr dicts)) + (if (stringp name) + (setq menu (append menu + (list + (vector (concat "Select " (capitalize name)) + (list 'ispell-change-dictionary name) + t)))))) + (defvar ispell-menu-lucid menu "Lucid's spelling menu.") + (if current-menubar + (progn + (delete-menu-item '("Edit" "Spell")) ; in case already defined + (add-menu '("Edit") "Spell" ispell-menu-lucid))))) + + ;; cond-case: + ((and (featurep 'menu-bar) + (string-lessp "19" emacs-version)) + (let ((dicts (reverse (cons (cons "default" nil) ispell-dictionary-alist))) + name) + (defvar ispell-menu-map nil) + ;; Can put in defvar when external defines are removed. + (setq ispell-menu-map (make-sparse-keymap "Spell")) + (while dicts + (setq name (car (car dicts)) + dicts (cdr dicts)) + (if (stringp name) + (define-key ispell-menu-map (vector (intern name)) + (cons (concat "Select " (capitalize name)) + (list 'lambda () '(interactive) + (list 'ispell-change-dictionary name)))))) + ;; Why do we need an alias here? + (defalias 'ispell-menu-map ispell-menu-map) + ;; Define commands in opposite order you want them to appear in menu. + (define-key ispell-menu-map [ispell-change-dictionary] + '("Change Dictionary" . ispell-change-dictionary)) + (define-key ispell-menu-map [ispell-kill-ispell] + '("Kill Process" . ispell-kill-ispell)) + (define-key ispell-menu-map [ispell-pdict-save] + '("Save Dictionary" . (lambda () (interactive) (ispell-pdict-save t)))) + (define-key ispell-menu-map [ispell-complete-word] + '("Complete Word" . ispell-complete-word)) + (define-key ispell-menu-map [ispell-complete-word-interior-frag] + '("Complete Word Frag" . ispell-complete-word-interior-frag)) + (define-key ispell-menu-map [ispell-continue] + '("Continue Check" . ispell-continue)) + (define-key ispell-menu-map [ispell-region] + '("Check Region" . ispell-region)) + (define-key ispell-menu-map [ispell-word] + '("Check Word" . ispell-word)) + (define-key ispell-menu-map [ispell-buffer] + '("Check Buffer" . ispell-buffer)) + (define-key ispell-menu-map [ispell-message] + '("Check Message" . ispell-message)) + (define-key ispell-menu-map [ispell-help] + '("Help" . (lambda () (interactive) + (describe-function 'ispell-help) + ;(x-popup-menu last-nonmenu-event(list "" ispell-help-list)) + )))) + (put 'ispell-region 'menu-enable 'mark-active))) *************** *** 526,549 **** (defvar ispell-process nil ! "Holds the process object for 'ispell'") (defvar ispell-pdict-modified-p nil ! "T when the personal dictionary has modifications that need to be written.") ;;; If you want to save the dictionary when quitting, must do so explicitly. ! (defvar ispell-quit nil ! "Set to t or point when user wants to abort ispell session.") (defvar ispell-filter nil ! "Output filter from piped calls to ispell.") (defvar ispell-filter-continue nil ! "Control variable for ispell filter function.") (defvar ispell-process-directory nil ! "The directory where ispell-process was started.") (defvar ispell-query-replace-marker (make-marker) ! "Marker for query-replace processing.") (defvar ispell-checking-message nil --- 587,611 ---- (defvar ispell-process nil ! "The process object for Ispell.") (defvar ispell-pdict-modified-p nil ! "Non-nil means personal dictionary has modifications to be saved.") ;;; If you want to save the dictionary when quitting, must do so explicitly. ! ;; When non-nil, the spell session is terminated. ! ;; When numeric, contains cursor location in buffer, and cursor remains there. ! (defvar ispell-quit nil) (defvar ispell-filter nil ! "Output filter from piped calls to Ispell.") (defvar ispell-filter-continue nil ! "Control variable for Ispell filter function.") (defvar ispell-process-directory nil ! "The directory where `ispell-process' was started.") (defvar ispell-query-replace-marker (make-marker) ! "Marker for `query-replace' processing.") (defvar ispell-checking-message nil *************** *** 552,556 **** (defconst ispell-choices-buffer "*Choices*") ! (defvar ispell-overlay nil "overlay variable for ispell") ;;; *** Buffer Local Definitions *** --- 614,618 ---- (defconst ispell-choices-buffer "*Choices*") ! (defvar ispell-overlay nil "Overlay variable for Ispell highlighting.") ;;; *** Buffer Local Definitions *** *************** *** 559,568 **** ;;; be used. Do not redefine default value or it will override the global! (defvar ispell-local-dictionary nil ! "A buffer local variable. If non-nil, a dictionary to be used when running ! an ispell-command in this buffer. Setting ispell-local-dictionary to a value ! has the same effect as calling \\[ispell-change-dictionary] with that value. ! This variable is automatically set when defined in the file with either ! ispell-dictionary-keyword or the Local Variable syntax. ! If using Local Variable syntax, the dictionary must be a string.") (make-variable-buffer-local 'ispell-local-dictionary) --- 621,632 ---- ;;; be used. Do not redefine default value or it will override the global! (defvar ispell-local-dictionary nil ! "If non-nil, a dictionary to use for Ispell commands in this buffer. ! The value should be a string, which is a file name. ! This variable becomes buffer-local when set in any fashion. ! ! Setting ispell-local-dictionary to a value has the same effect as ! calling \\[ispell-change-dictionary] with that value. This variable ! is automatically set when defined in the file with either ! `ispell-dictionary-keyword' or the Local Variable syntax.") (make-variable-buffer-local 'ispell-local-dictionary) *************** *** 579,588 **** "The keyword for local dictionary definitions. There should be only one dictionary keyword definition per file, and it ! should be followed by a correct dictionary name in ispell-dictionary-alist.") (defconst ispell-parsing-keyword "Local IspellParsing: " ! "The keyword for overriding default ispell parsing as determined by ! the buffer's major mode and extended-character mode as determined by the ! default dictionary. The above keyword string should be followed by `latex-mode' or --- 643,652 ---- "The keyword for local dictionary definitions. There should be only one dictionary keyword definition per file, and it ! should be followed by a correct dictionary name in `ispell-dictionary-alist'.") (defconst ispell-parsing-keyword "Local IspellParsing: " ! "The keyword for overriding default Ispell parsing. ! Determined by the buffer's major mode and extended-character mode as well as ! the default dictionary. The above keyword string should be followed by `latex-mode' or *************** *** 593,603 **** (defvar ispell-local-pdict ispell-personal-dictionary ! "A buffer local variable. If a personal dictionary is specified for ! the current buffer which is different from the current personal dictionary, ! the effect will be similar to calling \\[ispell-change-dictionary]. ! This variable is automatically set when defined in the file with either ! ispell-pdict-keyword or the local variable syntax. ! If using Local variable syntax, the dictionary must be nil or a string.") (make-variable-buffer-local 'ispell-local-pdict) --- 657,669 ---- (defvar ispell-local-pdict ispell-personal-dictionary ! "A buffer local variable containing the current personal dictionary. ! If non-nil, the value must be a string, which is a file name. + If you specify a personal dictionary for the current buffer which is + different from the current personal dictionary, the effect is similar + to calling \\[ispell-change-dictionary]. This variable is automatically + set when defined in the file with either `ispell-pdict-keyword' or the + local variable syntax.") + (make-variable-buffer-local 'ispell-local-pdict) *************** *** 611,615 **** (defvar ispell-parser 'use-mode-name "*Indicates whether ispell should parse the current buffer as TeX Code. ! Special value 'use-mode-name tries to guess using the name of major-mode. Default parser is 'nroff. Currently the only other valid parser is 'tex. --- 677,681 ---- (defvar ispell-parser 'use-mode-name "*Indicates whether ispell should parse the current buffer as TeX Code. ! Special value `use-mode-name' tries to guess using the name of major-mode. Default parser is 'nroff. Currently the only other valid parser is 'tex. *************** *** 617,621 **** You can set this variable in hooks in your init file -- eg: ! (add-hook 'tex-mode-hook (function (lambda () (setq ispell-parser 'tex))))") (defvar ispell-region-end (make-marker) --- 683,687 ---- You can set this variable in hooks in your init file -- eg: ! \(add-hook 'tex-mode-hook (function (lambda () (setq ispell-parser 'tex))))") (defvar ispell-region-end (make-marker) *************** *** 627,714 **** ;;;###autoload (define-key global-map "\M-$" 'ispell-word) ;;;###autoload ! (defun ispell-word (&optional following quietly) "Check spelling of word under or before the cursor. ! If word not found in dictionary, display possible corrections in a window ! and let user select. ! If optional argument FOLLOWING is non-nil or if ispell-following-word is non-nil when called interactively, then the following word ! \(rather than preceding\) will be checked when the cursor is not over a word. ! When the optional argument QUIETLY is non-nil or ispell-quietly is non-nil when called interactively, non-corrective messages are suppressed. ! Word syntax described by ispell-dictionary-alist (which see). This will check or reload the dictionary. Use \\[ispell-change-dictionary] ! or \\[ispell-region] to update the ispell process." ! (interactive) ! (if (interactive-p) ! (setq following ispell-following-word ! quietly ispell-quietly)) ! (ispell-buffer-local-dict) ; use the correct dictionary ! (let ((cursor-location (point)) ; retain cursor location ! ispell-keep-choices-win ; override global to force creation ! (word (ispell-get-word following)) ! start end poss replace) ! ;; destructure return word info list. ! (setq start (car (cdr word)) ! end (car (cdr (cdr word))) ! word (car word)) ! ! ;; now check spelling of word. ! (or quietly ! (message "Checking spelling of %s..." ! (funcall ispell-format-word word))) ! (ispell-init-process) ; erases ispell output buffer ! (process-send-string ispell-process "%\n") ;put in verbose mode ! (process-send-string ispell-process (concat "^" word "\n")) ! ;; wait until ispell has processed word ! (while (progn ! (accept-process-output ispell-process) ! (not (string= "" (car ispell-filter))))) ! ;;(process-send-string ispell-process "!\n") ;back to terse mode. ! (setq ispell-filter (cdr ispell-filter)) ! (if (listp ispell-filter) ! (setq poss (ispell-parse-output (car ispell-filter)))) ! (cond ((eq poss t) ! (or quietly ! (message "%s is correct." (funcall ispell-format-word word)))) ! ((stringp poss) ! (or quietly ! (message "%s is correct because of root %s" ! (funcall ispell-format-word word) ! (funcall ispell-format-word poss)))) ! ((null poss) (message "Error in ispell process")) ! (t ; prompt for correct word. ! (unwind-protect ! (progn ! (if ispell-highlight-p ! (highlight-spelling-error start end t)) ; highlight word ! (setq replace (ispell-command-loop ! (car (cdr (cdr poss))) ! (car (cdr (cdr (cdr poss)))) ! (car poss)))) ! ;; protected ! (if ispell-highlight-p ; clear highlight ! (highlight-spelling-error start end))) ! (cond ((equal 0 replace) ! (ispell-add-per-file-word-list (car poss))) ! (replace ! (delete-region start end) ! (setq word (if (atom replace) replace (car replace)) ! cursor-location (+ (- (length word) (- end start)) ! cursor-location)) ! (insert word) ! (if (not (atom replace)) ; recheck spelling of replacement ! (progn ! (goto-char cursor-location) ! (ispell-word following quietly))))) ! (if (get-buffer ispell-choices-buffer) ! (kill-buffer ispell-choices-buffer)))) ! (goto-char cursor-location) ; return to original location ! (ispell-pdict-save ispell-silently-savep) ! (if ispell-quit (setq ispell-quit nil)))) --- 693,788 ---- + (defalias 'ispell 'ispell-buffer) + ;;;###autoload (define-key global-map "\M-$" 'ispell-word) ;;;###autoload ! (defun ispell-word (&optional following quietly continue) "Check spelling of word under or before the cursor. ! If the word is not found in dictionary, display possible corrections ! in a window and so you can choose one. ! ! With a prefix argument (or if CONTINUE is non-nil), ! resume interrupted spell-checking of a buffer or region. ! ! If optional argument FOLLOWING is non-nil or if `ispell-following-word' is non-nil when called interactively, then the following word ! \(rather than preceding\) is checked when the cursor is not over a word. ! When the optional argument QUIETLY is non-nil or `ispell-quietly' is non-nil when called interactively, non-corrective messages are suppressed. ! Word syntax described by `ispell-dictionary-alist' (which see). This will check or reload the dictionary. Use \\[ispell-change-dictionary] ! or \\[ispell-region] to update the Ispell process." ! (interactive (list nil nil current-prefix-arg)) ! (if continue ! (ispell-continue) ! (if (interactive-p) ! (setq following ispell-following-word ! quietly ispell-quietly)) ! (ispell-buffer-local-dict) ; use the correct dictionary ! (let ((cursor-location (point)) ; retain cursor location ! ispell-keep-choices-win ; override global to force creation ! (word (ispell-get-word following)) ! start end poss replace) ! ;; destructure return word info list. ! (setq start (car (cdr word)) ! end (car (cdr (cdr word))) ! word (car word)) ! ! ;; now check spelling of word. ! (or quietly ! (message "Checking spelling of %s..." ! (funcall ispell-format-word word))) ! (ispell-init-process) ; erases ispell output buffer ! (process-send-string ispell-process "%\n") ;put in verbose mode ! (process-send-string ispell-process (concat "^" word "\n")) ! ;; wait until ispell has processed word ! (while (progn ! (accept-process-output ispell-process) ! (not (string= "" (car ispell-filter))))) ! ;;(process-send-string ispell-process "!\n") ;back to terse mode. ! (setq ispell-filter (cdr ispell-filter)) ! (if (listp ispell-filter) ! (setq poss (ispell-parse-output (car ispell-filter)))) ! (cond ((eq poss t) ! (or quietly ! (message "%s is correct" (funcall ispell-format-word word)))) ! ((stringp poss) ! (or quietly ! (message "%s is correct because of root %s" ! (funcall ispell-format-word word) ! (funcall ispell-format-word poss)))) ! ((null poss) (message "Error in ispell process")) ! (t ; prompt for correct word. ! (unwind-protect ! (progn ! (if ispell-highlight-p ;highlight word ! (ispell-highlight-spelling-error start end t)) ! (setq replace (ispell-command-loop ! (car (cdr (cdr poss))) ! (car (cdr (cdr (cdr poss)))) ! (car poss)))) ! ;; protected ! (if ispell-highlight-p ; clear highlight ! (ispell-highlight-spelling-error start end))) ! (cond ((equal 0 replace) ! (ispell-add-per-file-word-list (car poss))) ! (replace ! (delete-region start end) ! (setq word (if (atom replace) replace (car replace)) ! cursor-location (+ (- (length word) (- end start)) ! cursor-location)) ! (insert word) ! (if (not (atom replace)) ; recheck spelling of replacement ! (progn ! (goto-char cursor-location) ! (ispell-word following quietly))))) ! (if (get-buffer ispell-choices-buffer) ! (kill-buffer ispell-choices-buffer)))) ! (goto-char cursor-location) ; return to original location ! (ispell-pdict-save ispell-silently-savep) ! (if ispell-quit (setq ispell-quit nil))))) *************** *** 715,725 **** (defun ispell-get-word (following &optional extra-otherchars) "Return the word for spell-checking according to ispell syntax. ! If optional argument FOLLOWING is non-nil or if ispell-following-word is non-nil when called interactively, then the following word ! \(rather than preceeding\) will be checked when the cursor is not over a word. ! Optional second argument contains otherchars that can be included in word many times. ! Word syntax described by ispell-dictionary-alist (which see)." (let* ((ispell-casechars (ispell-get-casechars)) (ispell-not-casechars (ispell-get-not-casechars)) --- 789,799 ---- (defun ispell-get-word (following &optional extra-otherchars) "Return the word for spell-checking according to ispell syntax. ! If optional argument FOLLOWING is non-nil or if `ispell-following-word' is non-nil when called interactively, then the following word ! \(rather than preceeding\) is checked when the cursor is not over a word. ! Optional second argument contains otherchars that can be included in word many times. ! Word syntax described by `ispell-dictionary-alist' (which see)." (let* ((ispell-casechars (ispell-get-casechars)) (ispell-not-casechars (ispell-get-not-casechars)) *************** *** 775,782 **** ;;; dictionary needs to be saved. - ;;;###autoload (defun ispell-pdict-save (&optional no-query force-save) "Check to see if the personal dictionary has been modified. ! If so, ask if it needs to be saved." (interactive (list ispell-silently-savep t)) (if (and ispell-pdict-modified-p (listp ispell-pdict-modified-p)) --- 849,855 ---- ;;; dictionary needs to be saved. (defun ispell-pdict-save (&optional no-query force-save) "Check to see if the personal dictionary has been modified. ! If so, ask if it needs to be saved." (interactive (list ispell-silently-savep t)) (if (and ispell-pdict-modified-p (listp ispell-pdict-modified-p)) *************** *** 793,987 **** GUESS lists possibly valid affix construction of WORD. Returns nil to keep word. ! 0 to insert locally into buffer-local dictionary. ! string for new chosen word. ! list for new replacement word (will be rechecked). ! Optional second argument means replace misspelling in ! the rest of the region. ! Global ispell-pdict-modified-p becomes a list where the only value ! indicates whether the dictionary has been modified when option a or i is used." (unwind-protect ! (save-window-excursion ! (let ((count ?0) ! (line 2) ! (max-lines (- (window-height) 4)) ; assure 4 context lines. ! (choices miss) ! (window-min-height (min window-min-height ! ispell-choices-win-default-height)) ! (command-characters '( ? ?i ?a ?A ?r ?R ?? ?x ?X ?q ?l ?u ?m )) ! (skipped 0) ! char num result) ! (save-excursion ! (if ispell-keep-choices-win ! (select-window (previous-window)) ! (set-buffer (get-buffer-create ispell-choices-buffer)) ! (setq mode-line-format "-- %b --")) ! (if (equal (get-buffer ispell-choices-buffer) (current-buffer)) ! (erase-buffer) ! (error "Bogus, dude! I should be in the *Choices* buffer, but I'm not!")) ! (if guess ! (progn ! (insert ! "Affix rules generate and capitalize this word as shown below:\n\t") ! (while guess ! (if (> (+ 4 (current-column) (length (car guess))) ! (window-width)) ! (progn ! (insert "\n\t") ! (setq line (1+ line)))) ! (insert (car guess) " ") ! (setq guess (cdr guess))) ! (insert "\nUse option \"i\" if this is a correct composition from the derivative root.\n") ! (setq line (+ line (if choices 3 2))))) ! (while (and choices ! (< (if (> (+ 7 (current-column) (length (car choices)) ! (if (> count ?~) 3 0)) ! (window-width)) ! (progn ! (insert "\n") ! (setq line (1+ line))) ! line) ! max-lines)) ! ;; not so good if there are over 20 or 30 options, but then, if ! ;; there are that many you don't want to have to scan them all anyway... ! (while (memq count command-characters) ; skip command characters. ! (setq count (1+ count) ! skipped (1+ skipped))) ! (insert "(" count ") " (car choices) " ") ! (setq choices (cdr choices) ! count (1+ count))) ! (setq count (- count ?0 skipped))) ! ! (if ispell-keep-choices-win ! (if (> line ispell-keep-choices-win) ! (progn ! (switch-to-buffer ispell-choices-buffer) ! (select-window (next-window)) ! (save-excursion ! (let ((cur-point (point))) ! (move-to-window-line (- line ispell-keep-choices-win)) ! (if (<= (point) cur-point) ! (set-window-start (selected-window) (point))))) ! (select-window (previous-window)) ! (enlarge-window (- line ispell-keep-choices-win)) ! (goto-char (point-min)))) ! (ispell-overlay-window (max line ispell-choices-win-default-height))) ! (switch-to-buffer ispell-choices-buffer) ! (goto-char (point-min)) ! (select-window (next-window)) ! (while ! (eq ! t ! (setq ! result ! (progn ! (undo-boundary) ! (message "C-h or ? for more options; SPC to leave unchanged, Character to replace word") ! (setq char (read-char) ! skipped 0) ! ;; Adjust num to array offset skipping command characters. ! (let ((com-chars command-characters)) ! (while com-chars ! (if (and (> (car com-chars) ?0) (< (car com-chars) char)) ! (setq skipped (1+ skipped))) ! (setq com-chars (cdr com-chars))) ! (setq num (- char ?0 skipped))) ! (cond ! ((= char ? ) nil) ; accept word this time only ! ((= char ?i) ; accept and insert word into pers dict ! (process-send-string ispell-process (concat "*" word "\n")) ! (setq ispell-pdict-modified-p '(t)) ; dictionary was modified! ! nil) ! ((or (= char ?a) (= char ?A)) ; accept word, don't insert in dict ! (process-send-string ispell-process (concat "@" word "\n")) ! (if (null ispell-pdict-modified-p) ! (setq ispell-pdict-modified-p ! (list ispell-pdict-modified-p))) ! (if (= char ?A) 0)) ; return 0 for ispell-add buffer-local ! ((or (= char ?r) (= char ?R)) ; type in replacement ! (if (or (= char ?R) ispell-query-replace-choices) ! (list (read-string "Query-replacement for: " word) t) ! (cons (read-string "Replacement for: " word) nil))) ! ((or (= char ??) (= char help-char) (= char ?\C-h)) ! (ispell-help) ! t) ! ;; quit or quit and stay at this point. ! ((or (= char ?x) (= char ?X)) ; quit. ! (ispell-pdict-save ispell-silently-savep) ! (message "exited ispell") ! (setq ispell-quit (if (= char ?X) (point) t)) ! nil) ! ((or (= char ?q) ! (= char (nth 3 (current-input-mode)))) ; C-g ! (if (y-or-n-p "Really quit ignoring changes? ") (progn ! (ispell-kill-ispell t) ; terminate process. ! (setq ispell-quit t ! ispell-pdict-modified-p nil)) ! t)) ; continue if they don't quit. ! ((= char ?l) ! (let ((new-word (read-string "Lookup string ('*' is wildcard): " ! word)) ! (new-line 2)) ! (if new-word ! (progn ! (save-excursion ! (set-buffer (get-buffer-create ispell-choices-buffer)) ! (erase-buffer) ! (setq count ?0 ! skipped 0 ! mode-line-format "-- %b --" ! miss (lookup-words new-word) ! choices miss) ! (while (and choices ; adjust choices window. ! (< (if (> (+ 7 (current-column) ! (length (car choices)) ! (if (> count ?~) 3 0)) ! (window-width)) ! (progn ! (insert "\n") ! (setq new-line (1+ new-line))) ! new-line) ! max-lines)) ! (while (memq count command-characters) ! (setq count (1+ count) ! skipped (1+ skipped))) ! (insert "(" count ") " (car choices) " ") ! (setq choices (cdr choices) ! count (1+ count))) ! (setq count (- count ?0 skipped))) ! (select-window (previous-window)) ! (if (/= new-line line) (progn ! (if (> new-line line) ! (enlarge-window (- new-line line)) ! (shrink-window (- line new-line))) ! (setq line new-line))) ! (select-window (next-window))))) ! t) ; reselect from new choices ! ((= char ?u) ! (process-send-string ispell-process ! (concat "*" (downcase word) "\n")) ! (setq ispell-pdict-modified-p '(t)) ; dictionary was modified! ! nil) ! ((= char ?m) ; type in what to insert ! (process-send-string ! ispell-process (concat "*" (read-string "Insert: " word) "\n")) ! (setq ispell-pdict-modified-p '(t)) ! (cons word nil)) ! ((and (>= num 0) (< num count)) ! (if ispell-query-replace-choices ; Query replace when flag set. ! (list (nth num miss) 'query-replace) ! (nth num miss))) ! ((= char ?\C-l) ! (redraw-display) t) ! ((= char ?\C-r) ! (save-window-excursion (recursive-edit)) t) ! ((= char ?\C-z) ! (suspend-emacs) t) ! (t (ding) t)))))) ! result)) ! (if (not ispell-keep-choices-win) (bury-buffer ispell-choices-buffer)))) --- 866,1083 ---- GUESS lists possibly valid affix construction of WORD. Returns nil to keep word. ! Returns 0 to insert locally into buffer-local dictionary. ! Returns string for new chosen word. ! Returns list for new replacement word (will be rechecked). ! Global `ispell-pdict-modified-p' becomes a list where the only value ! indicates whether the dictionary has been modified when option `a' or `i' is used." (unwind-protect ! (save-window-excursion ! (let ((count ?0) ! (line 2) ! (max-lines (- (window-height) 4)) ; assure 4 context lines. ! (choices miss) ! (window-min-height (min window-min-height ! ispell-choices-win-default-height)) ! (command-characters '( ? ?i ?a ?A ?r ?R ?? ?x ?X ?q ?l ?u ?m )) ! (skipped 0) ! char num result) ! (save-excursion ! (if ispell-keep-choices-win ! (select-window (previous-window)) ! (set-buffer (get-buffer-create ispell-choices-buffer)) ! (setq mode-line-format "-- %b --")) ! (if (equal (get-buffer ispell-choices-buffer) (current-buffer)) ! (erase-buffer) ! (error (concat "Bogus, dude! I should be in the *Choices*" ! " buffer, but I'm not!"))) ! (if guess ! (progn ! (insert "Affix rules generate and capitalize " ! "this word as shown below:\n\t") ! (while guess ! (if (> (+ 4 (current-column) (length (car guess))) ! (window-width)) ! (progn ! (insert "\n\t") ! (setq line (1+ line)))) ! (insert (car guess) " ") ! (setq guess (cdr guess))) ! (insert "\nUse option `i' if this is a correct composition" ! " from the derivative root.\n") ! (setq line (+ line (if choices 3 2))))) ! (while (and choices ! (< (if (> (+ 7 (current-column) (length (car choices)) ! (if (> count ?~) 3 0)) ! (window-width)) ! (progn ! (insert "\n") ! (setq line (1+ line))) ! line) ! max-lines)) ! ;; not so good if there are over 20 or 30 options, but then, if ! ;; there are that many you don't want to scan them all anyway... ! (while (memq count command-characters) ; skip command characters. ! (setq count (1+ count) ! skipped (1+ skipped))) ! (insert "(" count ") " (car choices) " ") ! (setq choices (cdr choices) ! count (1+ count))) ! (setq count (- count ?0 skipped))) ! (if ispell-keep-choices-win ! (if (> line ispell-keep-choices-win) (progn ! (switch-to-buffer ispell-choices-buffer) ! (select-window (next-window)) ! (save-excursion ! (let ((cur-point (point))) ! (move-to-window-line (- line ispell-keep-choices-win)) ! (if (<= (point) cur-point) ! (set-window-start (selected-window) (point))))) ! (select-window (previous-window)) ! (enlarge-window (- line ispell-keep-choices-win)) ! (goto-char (point-min)))) ! (ispell-overlay-window (max line ! ispell-choices-win-default-height))) ! (switch-to-buffer ispell-choices-buffer) ! (goto-char (point-min)) ! (select-window (next-window)) ! (while ! (eq ! t ! (setq ! result ! (progn ! (undo-boundary) ! (message (concat "C-h or ? for more options; SPC to leave " ! "unchanged, Character to replace word")) ! (let ((inhibit-quit t)) ! (setq char (if (fboundp 'read-char-exclusive) ! (read-char-exclusive) ! (read-char)) ! skipped 0) ! (if (or quit-flag (= char ?\C-g)) ; C-g is like typing q ! (setq char ?q ! quit-flag nil))) ! ;; Adjust num to array offset skipping command characters. ! (let ((com-chars command-characters)) ! (while com-chars ! (if (and (> (car com-chars) ?0) (< (car com-chars) char)) ! (setq skipped (1+ skipped))) ! (setq com-chars (cdr com-chars))) ! (setq num (- char ?0 skipped))) ! ! (cond ! ((= char ? ) nil) ; accept word this time only ! ((= char ?i) ; accept and insert word into pers dict ! (process-send-string ispell-process (concat "*" word "\n")) ! (setq ispell-pdict-modified-p '(t)) ; dictionary modified! ! nil) ! ((or (= char ?a) (= char ?A)) ; accept word without insert ! (process-send-string ispell-process (concat "@" word "\n")) ! (if (null ispell-pdict-modified-p) ! (setq ispell-pdict-modified-p ! (list ispell-pdict-modified-p))) ! (if (= char ?A) 0)) ; return 0 for ispell-add buffer-local ! ((or (= char ?r) (= char ?R)) ; type in replacement ! (if (or (= char ?R) ispell-query-replace-choices) ! (list (read-string "Query-replacement for: " word) t) ! (cons (read-string "Replacement for: " word) nil))) ! ((or (= char ??) (= char help-char) (= char ?\C-h)) ! (ispell-help) ! t) ! ;; Quit and move point back. ! ((= char ?x) ! (ispell-pdict-save ispell-silently-savep) ! (message "Exited spell-checking") ! (setq ispell-quit t) ! nil) ! ;; Quit and preserve point. ! ((= char ?X) ! (ispell-pdict-save ispell-silently-savep) ! (message ! (substitute-command-keys ! (concat "Spell-checking suspended;" ! " use C-u \\[ispell-word] to resume"))) ! (setq ispell-quit (max (point-min) ! (- (point) (length word)))) ! nil) ! ((= char ?q) ! (if (y-or-n-p "Really quit ignoring changes? ") ! (progn ! (ispell-kill-ispell t) ; terminate process. ! (setq ispell-quit (or (not ispell-checking-message) ! (point)) ! ispell-pdict-modified-p nil)) ! t)) ; continue if they don't quit. ! ((= char ?l) ! (let ((new-word (read-string ! "Lookup string (`*' is wildcard): " ! word)) ! (new-line 2)) ! (if new-word (progn ! (save-excursion ! (set-buffer (get-buffer-create ! ispell-choices-buffer)) ! (erase-buffer) ! (setq count ?0 ! skipped 0 ! mode-line-format "-- %b --" ! miss (lookup-words new-word) ! choices miss) ! (while (and choices ; adjust choices window. ! (< (if (> (+ 7 (current-column) ! (length (car choices)) ! (if (> count ?~) 3 0)) ! (window-width)) ! (progn ! (insert "\n") ! (setq new-line ! (1+ new-line))) ! new-line) ! max-lines)) ! (while (memq count command-characters) ! (setq count (1+ count) ! skipped (1+ skipped))) ! (insert "(" count ") " (car choices) " ") ! (setq choices (cdr choices) ! count (1+ count))) ! (setq count (- count ?0 skipped))) ! (select-window (previous-window)) ! (if (/= new-line line) ! (progn ! (if (> new-line line) ! (enlarge-window (- new-line line)) ! (shrink-window (- line new-line))) ! (setq line new-line))) ! (select-window (next-window))))) ! t) ; reselect from new choices ! ((= char ?u) ! (process-send-string ispell-process ! (concat "*" (downcase word) "\n")) ! (setq ispell-pdict-modified-p '(t)) ; dictionary modified! ! nil) ! ((= char ?m) ; type in what to insert ! (process-send-string ! ispell-process (concat "*" (read-string "Insert: " word) ! "\n")) ! (setq ispell-pdict-modified-p '(t)) ! (cons word nil)) ! ((and (>= num 0) (< num count)) ! (if ispell-query-replace-choices ; Query replace flag ! (list (nth num miss) 'query-replace) ! (nth num miss))) ! ((= char ?\C-l) ! (redraw-display) t) ! ((= char ?\C-r) ! (save-window-excursion (recursive-edit)) t) ! ((= char ?\C-z) ! (funcall (key-binding "\C-z")) ! t) ! (t (ding) t)))))) ! result)) ! (if (not ispell-keep-choices-win) (bury-buffer ispell-choices-buffer)))) *************** *** 988,992 **** ;;;###autoload (defun ispell-help () ! "This gives a list of the options available when a misspelling is encountered. Selections are: --- 1084,1088 ---- ;;;###autoload (defun ispell-help () ! "Display a list of the options available when a misspelling is encountered. Selections are: *************** *** 993,1017 **** DIGIT: Replace the word with a digit offered in the *Choices* buffer. ! ' ': Accept word this time. ! 'i': Accept word and insert into private dictionary. ! 'a': Accept word for this session. ! 'A': Accept word and place in `buffer-local dictionary'. ! 'r': Replace word with typed-in value. Rechecked. ! 'R': Replace word with typed-in value. Query-replaced in buffer. Rechecked. ! '?': Show these commands. ! 'x': Exit spelling buffer. Move cursor to original point. ! 'X': Exit spelling buffer. Leaves cursor at the current point, and permits the aborted check to be completed later. ! 'q': Quit spelling session (Kills ispell process). ! 'l': Look up typed-in replacement in alternate dictionary. Wildcards okay. ! 'u': Like 'i', but the word is lower-cased first. ! 'm': Like 'i', but allows one to include dictionary completion information. ! 'C-l': redraws screen ! 'C-r': recursive edit ! 'C-z': suspend emacs" ! ! (let ((help-1 "[r/R]eplace word; [a/A]ccept for this session; [i]nsert into private dictionary") ! (help-2 "[l]ook a word up in alternate dictionary; e[x/X]it; [q]uit session") ! (help-3 "[u]ncapitalized insert into dictionary. Type 'C-h d ispell-help' for more help")) (save-window-excursion (if ispell-help-in-bufferp --- 1089,1116 ---- DIGIT: Replace the word with a digit offered in the *Choices* buffer. ! SPC: Accept word this time. ! `i': Accept word and insert into private dictionary. ! `a': Accept word for this session. ! `A': Accept word and place in `buffer-local dictionary'. ! `r': Replace word with typed-in value. Rechecked. ! `R': Replace word with typed-in value. Query-replaced in buffer. Rechecked. ! `?': Show these commands. ! `x': Exit spelling buffer. Move cursor to original point. ! `X': Exit spelling buffer. Leaves cursor at the current point, and permits the aborted check to be completed later. ! `q': Quit spelling session (Kills ispell process). ! `l': Look up typed-in replacement in alternate dictionary. Wildcards okay. ! `u': Like `i', but the word is lower-cased first. ! `m': Like `i', but allows one to include dictionary completion information. ! `C-l': redraws screen ! `C-r': recursive edit ! `C-z': suspend emacs or iconify frame" ! ! (let ((help-1 (concat "[r/R]eplace word; [a/A]ccept for this session; " ! "[i]nsert into private dictionary")) ! (help-2 (concat "[l]ook a word up in alternate dictionary; " ! "e[x/X]it; [q]uit session")) ! (help-3 (concat "[u]ncapitalized insert into dictionary. " ! "Type 'C-h d ispell-help' for more help"))) (save-window-excursion (if ispell-help-in-bufferp *************** *** 1023,1027 **** (kill-buffer "*Ispell Help*")) (select-window (minibuffer-window)) ! (enlarge-window 2) (erase-buffer) (cond ((string-match "Lucid" emacs-version) --- 1122,1126 ---- (kill-buffer "*Ispell Help*")) (select-window (minibuffer-window)) ! ;;(enlarge-window 2) (erase-buffer) (cond ((string-match "Lucid" emacs-version) *************** *** 1030,1036 **** (message help-2) (enlarge-window 1) ! (message help-1)) (t ! (if (string-match "^19\\." emacs-version) (message nil)) (enlarge-window 2) --- 1129,1136 ---- (message help-2) (enlarge-window 1) ! (message help-1) ! (goto-char (point-min))) (t ! (if (string-lessp "19" emacs-version) (message nil)) (enlarge-window 2) *************** *** 1042,1050 **** (defun lookup-words (word &optional lookup-dict) "Look up word in word-list dictionary. ! A '*' is used for wild cards. If no wild cards, 'look' is used if it exists. ! Otherwise the variable ispell-grep-command contains the command used to ! search for the words (usually egrep). ! Optional second argument contains the dictionary to use, the default is ! ispell-alternate-dictionary." ;; We don't use the filter for this function, rather the result is written ;; into a buffer. Hence there is no need to save the filter values. --- 1142,1151 ---- (defun lookup-words (word &optional lookup-dict) "Look up word in word-list dictionary. ! A `*' serves as a wild card. If no wild cards, `look' is used if it exists. ! Otherwise the variable `ispell-grep-command' contains the command used to ! search for the words (usually egrep). ! ! Optional second argument contains the dictionary to use; the default is ! `ispell-alternate-dictionary'." ;; We don't use the filter for this function, rather the result is written ;; into a buffer. Hence there is no need to save the filter values. *************** *** 1137,1145 **** ;;; This function destroys the mark location if it is in the word being ;;; highlighted. ! (defun highlight-spelling-error-generic (start end &optional highlight) ! "Highlight the word from START to END by deleting and reinserting it ! while toggling the variable \"inverse-video\". When the optional ! third arg HIGHLIGHT is set, the word is highlighted otherwise it is ! displayed normally." (let ((modified (buffer-modified-p)) ; don't allow this fn to modify buffer (buffer-read-only nil) ; Allow highlighting read-only buffers. --- 1238,1245 ---- ;;; This function destroys the mark location if it is in the word being ;;; highlighted. ! (defun ispell-highlight-spelling-error-generic (start end &optional highlight) ! "Highlight the word from START to END with a kludge using `inverse-video'. ! When the optional third arg HIGHLIGHT is set, the word is highlighted; ! otherwise it is displayed normally." (let ((modified (buffer-modified-p)) ; don't allow this fn to modify buffer (buffer-read-only nil) ; Allow highlighting read-only buffers. *************** *** 1158,1164 **** ! (defun highlight-spelling-error-lucid (start end &optional highlight) ! "Highlight the word from START to END using isearch-highlight. When ! the optional third arg HIGHLIGHT is set, the word is highlighted otherwise it is displayed normally." (if highlight --- 1258,1264 ---- ! (defun ispell-highlight-spelling-error-lucid (start end &optional highlight) ! "Highlight the word from START to END using `isearch-highlight'. ! When the optional third arg HIGHLIGHT is set, the word is highlighted otherwise it is displayed normally." (if highlight *************** *** 1169,1178 **** ! (defun highlight-spelling-error-overlay (start end &optional highlight) ! "Highlight the word from START to END using overlays. When the ! optional third arg HIGHLIGHT is set, the word is highlighted otherwise ! it is displayed normally. ! The variable ispell-highlight-face selects the face that will be used ! for highlighting." (if highlight (progn --- 1269,1278 ---- ! (defun ispell-highlight-spelling-error-overlay (start end &optional highlight) ! "Highlight the word from START to END using overlays. ! When the optional third arg HIGHLIGHT is set, the word is highlighted ! otherwise it is displayed normally. ! ! The variable `ispell-highlight-face' selects the face to use for highlighting." (if highlight (progn *************** *** 1183,1200 **** ;;; Choose a highlight function at load time. ! (fset 'highlight-spelling-error (symbol-function (cond ! ((string-match "Lucid" emacs-version) 'highlight-spelling-error-lucid) ! ((and (string-match "^19\\." emacs-version) ! (featurep 'faces)) 'highlight-spelling-error-overlay) ! (t 'highlight-spelling-error-generic)))) (defun ispell-overlay-window (height) ! "Create a (usually small) window covering the top HEIGHT lines of the ! current window. Ensure that the line above point is still visible but ! otherwise avoid scrolling the current window. Should leave the old ! window selected." (save-excursion (let ((oldot (save-excursion (forward-line -1) (point))) --- 1283,1300 ---- ;;; Choose a highlight function at load time. ! (fset 'ispell-highlight-spelling-error (symbol-function (cond ! ((string-match "Lucid" emacs-version) ! 'ispell-highlight-spelling-error-lucid) ! ((and (string-lessp "19" emacs-version) (featurep 'faces)) ! 'ispell-highlight-spelling-error-overlay) ! (t 'ispell-highlight-spelling-error-generic)))) (defun ispell-overlay-window (height) ! "Create a window covering the top HEIGHT lines of the current window. ! Ensure that the line above point is still visible but otherwise avoid ! scrolling the current window. Leave the old window selected." (save-excursion (let ((oldot (save-excursion (forward-line -1) (point))) *************** *** 1204,1207 **** --- 1304,1313 ---- ;; otherwise set top line of other win so it doesn't scroll. (if (< oldot top) (setq top oldot)) + ;; NB: Lemacs 19.9 bug: If a window of size N (N includes the mode + ;; line) is demanded, the last line is not visible. + ;; At least this happens on AIX 3.2, lemacs w/ Motif, font 9x15. + ;; So we increment the height for this case. + (if (string-match "19\.9.*Lucid" (emacs-version)) + (setq height (1+ height))) (split-window nil height) (set-window-start (next-window) top)))) *************** *** 1210,1221 **** ;;; Should we add a compound word match return value? (defun ispell-parse-output (output) ! "Parse the OUTPUT string of 'ispell' and return: ! 1: T for an exact match. 2: A string containing the root word for a match via suffix removal. 3: A list of possible correct spellings of the format: ! '(\"original-word\" offset miss-list guess-list) ! original-word is a string of the possibly misspelled word. ! offset is an integer giving the line offset of the word. ! miss-list and guess-list are possibly null lists of guesses and misses." (cond ((string= output "") t) ; for startup with pipes... --- 1316,1327 ---- ;;; Should we add a compound word match return value? (defun ispell-parse-output (output) ! "Parse the OUTPUT string from Ispell and return: ! 1: t for an exact match. 2: A string containing the root word for a match via suffix removal. 3: A list of possible correct spellings of the format: ! '(\"ORIGINAL-WORD\" OFFSET MISS-LIST GUESS-LIST) ! ORIGINAL-WORD is a string of the possibly misspelled word. ! OFFSET is an integer giving the line offset of the word. ! MISS-LIST and GUESS-LIST are possibly null lists of guesses and misses." (cond ((string= output "") t) ; for startup with pipes... *************** *** 1259,1267 **** ;; themselves on startup. ;; - ;; If the ispell.el file ever supports more than one version of the - ;; external ispell program, then this should be reworked to accept more - ;; than one version, but until that happens, doing so would be false - ;; generality. - ;; (save-excursion (set-buffer (get-buffer-create " *ispell-tmp*")) --- 1365,1368 ---- *************** *** 1291,1295 **** (defun ispell-init-process () ! "Check status of 'ispell' process and start if necessary." (if (and ispell-process (eq (process-status ispell-process) 'run) --- 1392,1396 ---- (defun ispell-init-process () ! "Check status of Ispell process and start if necessary." (if (and ispell-process (eq (process-status ispell-process) 'run) *************** *** 1301,1305 **** ;; may need to restart to select new personal dictionary. (ispell-kill-ispell t) ! (message "Starting new ispell process...") (sit-for 0) (check-ispell-version) --- 1402,1406 ---- ;; may need to restart to select new personal dictionary. (ispell-kill-ispell t) ! (message "Starting new Ispell process...") (sit-for 0) (check-ispell-version) *************** *** 1324,1327 **** --- 1425,1429 ---- (expand-file-name ispell-personal-dictionary))))) + (setq args (append args ispell-extra-args)) args))) ispell-filter nil *************** *** 1352,1360 **** (process-kill-without-query ispell-process))) - ;;;###autoload (defun ispell-kill-ispell (&optional no-error) ! "Kill current ispell process (so that you may start a fresh one). ! With NO-ERROR, just return non-nil if there was no ispell running." (interactive) (if (not (and ispell-process --- 1454,1461 ---- (process-kill-without-query ispell-process))) ;;;###autoload (defun ispell-kill-ispell (&optional no-error) ! "Kill current Ispell process (so that you may start a fresh one). ! With NO-ERROR, just return non-nil if there was no Ispell running." (interactive) (if (not (and ispell-process *************** *** 1364,1368 **** (kill-process ispell-process) (setq ispell-process nil) ! (message "Killed ispell process.") nil)) --- 1465,1469 ---- (kill-process ispell-process) (setq ispell-process nil) ! (message "Ispell process killed") nil)) *************** *** 1370,1374 **** ;;;###autoload (defun ispell-change-dictionary (dict &optional arg) ! "Change ispell-dictionary (q.v.) and kill old ispell process. A new one will be started as soon as necessary. --- 1471,1475 ---- ;;;###autoload (defun ispell-change-dictionary (dict &optional arg) ! "Change `ispell-dictionary' (q.v.) and kill old Ispell process. A new one will be started as soon as necessary. *************** *** 1399,1403 **** (error "Illegal dictionary: %s" dict)) (ispell-kill-ispell t) ! (message "(Next %sispell command will use %s dictionary)" (cond ((equal ispell-local-dictionary ispell-dictionary) "") --- 1500,1504 ---- (error "Illegal dictionary: %s" dict)) (ispell-kill-ispell t) ! (message "(Next %sIspell command will use %s dictionary)" (cond ((equal ispell-local-dictionary ispell-dictionary) "") *************** *** 1419,1618 **** (ispell-accept-buffer-local-defs) ; set up dictionary, local words, etc. (unwind-protect ! (save-excursion ! (message "Spelling %s..." ! (if (and (= reg-start (point-min)) (= reg-end (point-max))) ! (buffer-name) "region")) ! (sit-for 0) ! ;; must be top level now, not inside ispell-command-loop for keeping window. ! (save-window-excursion ! (if ispell-keep-choices-win ! (let ((window-min-height ispell-choices-win-default-height)) ! ;; This keeps the default window size when choices window saved. ! (setq ispell-keep-choices-win ispell-choices-win-default-height) ! (ispell-overlay-window ispell-choices-win-default-height) ! (switch-to-buffer (get-buffer-create ispell-choices-buffer)) ! (setq mode-line-format "-- %b --") ! (erase-buffer) ! (select-window (next-window)) ! (sit-for 0))) ! (goto-char reg-start) ! (let ((transient-mark-mode nil)) ! (while (and (not ispell-quit) (< (point) reg-end)) ! (let ((start (point)) ! (offset-change 0) ! (end (save-excursion (end-of-line) (min (point) reg-end))) ! (ispell-casechars (ispell-get-casechars)) ! string) ! (cond ; LOOK AT THIS LINE AND SKIP OR PROCESS ! ((eolp) ; END OF LINE, just go to next line. ! (forward-char 1)) ! ((and (null ispell-check-comments) ; SKIPING COMMENTS ! comment-start ; skip comments that start on the line. ! (search-forward comment-start end t)) ; a comment is on this line. ! (if (= (- (point) start) (length comment-start)) ! ;; comment starts the line. We can skip the entire line or region ! (if (string= "" comment-end) ; skip to next line over comment ! (beginning-of-line 2) ! (search-forward comment-end reg-end 'limit)) ; jmp to comment end ! ;; Comment starts later on line. Check for spelling before comment. ! (let ((limit (- (point) (length comment-start)))) ! (goto-char (1- limit)) ! (if (looking-at "\\\\") ; "quoted" comment, don't skip ! ;; quoted comment. Skip over comment-start and continue. ! (if (= start (1- limit)) ! (setq limit (+ limit (length comment-start))) ! (setq limit (1- limit)))) ! (goto-char start) ! ;; Only check if there are "casechars" or math chars before comment ! (if (or (re-search-forward ispell-casechars limit t) ! (re-search-forward "[][()$]" limit t)) ! (setq string (concat "^" (buffer-substring start limit) "\n"))) ! (goto-char limit)))) ! ((and ispell-skip-tib ; SKIP TIB REFERENCES! ! (re-search-forward ispell-tib-ref-beginning end t)) ! (if (= (- (point) 2) start) ; tib ref is 2 chars. ! ;; Skip to end of tib ref, not necessarily on this line. ! ;; Return an error if tib ref not found ! (if (not (re-search-forward ispell-tib-ref-end reg-end t)) ! (progn ! (ispell-pdict-save ispell-silently-savep) ! (ding) ! (message "Open tib reference. Set ispell-skip-tib to nil to avoid this error.") ! (setq ispell-quit (- (point) 2)))) ; leave dot at error loc. ! ;; tib ref starts later on line. Check spelling before tib. ! (let ((limit (- (point) 2))) ! (goto-char start) ! (if (or (re-search-forward ispell-casechars limit t) ! (re-search-forward "[][()$]" limit t)) ! (setq string (concat "^" (buffer-substring start limit) "\n"))) ! (goto-char limit)))) ! ((looking-at "[-#@*+!%~^]") ; SKIP SPECIAL ISPELL CHARACTERS ! (forward-char 1)) ! ((or (re-search-forward ispell-casechars end t) ; TEXT EXISTS... ! (re-search-forward "[][()$]" end t)) ; or MATH COMMANDS... ! (setq string (concat "^" (buffer-substring start end) "\n")) ! (goto-char end)) ! (t (beginning-of-line 2))) ; EMPTY LINE, skip it. ! ! (setq end (point)) ; "end" tracks end of region to check. ! ! (if string ; there is something to spell! ! (let (poss) ! ;; send string to spell process and get input. ! (process-send-string ispell-process string) ! (while (progn ! (accept-process-output ispell-process) ! ;; Last item of output contains a blank line. ! (not (string= "" (car ispell-filter))))) ! ;; parse all inputs from the stream one word at a time. ! ;; Place in FIFO order and remove the blank item. ! (setq ispell-filter (nreverse (cdr ispell-filter))) ! (while (and (not ispell-quit) ispell-filter) ! (setq poss (ispell-parse-output (car ispell-filter))) ! (if (listp poss) ; spelling error occurred. ! (let* ((word-start (+ start offset-change (car (cdr poss)))) ! (word-end (+ word-start (length (car poss)))) ! replace) ! (goto-char word-start) ! ;; The following lines adjust the horizontal scroll & point ! (horiz-scroll) ! (goto-char word-end) ! (horiz-scroll) ! (goto-char word-start) ! (horiz-scroll) ! (if (/= word-end (progn ! (search-forward (car poss) word-end t) ! (point))) ! ;; This usually occurs due to filter pipe problems ! (error "***ispell misalignment: word \"%s\" point %d; please retry." ! (car poss) word-start)) ! (unwind-protect ! (progn ! (if ispell-highlight-p ! (highlight-spelling-error word-start word-end t)) ! (sit-for 0) ; update screen display ! (setq replace (ispell-command-loop ! (car (cdr (cdr poss))) ! (car (cdr (cdr (cdr poss)))) ! (car poss)))) ! ;; protected ! (if ispell-highlight-p ! (highlight-spelling-error word-start word-end))) ! (cond ! ((and replace (listp replace)) ! ;; REPLACEMENT WORD entered. Recheck line starting with ! ;; the replacement word. ! (setq ispell-filter nil ! string (buffer-substring word-start word-end)) ! (let ((change (- (length (car replace)) ; adjust ! (length (car poss))))) ; regions ! (setq reg-end (+ reg-end change) ! offset-change (+ offset-change change))) ! (delete-region word-start word-end) ! (insert (car replace)) ! ;; I only need to recheck typed-in replacements. ! (if (not (eq 'query-replace (car (cdr replace)))) ! (backward-char (length (car replace)))) ! (setq end (point)) ; reposition in region to recheck ! ;; when second arg exists, query-replace, saving regions ! (if (car (cdr replace)) ! (unwind-protect ! (save-window-excursion ; save if help is called. ! (set-marker ispell-query-replace-marker reg-end) ! ;; Assume case-replace & case-fold-search correct? ! (query-replace string (car replace) t)) ! ;; protected ! (setq reg-end (marker-position ! ispell-query-replace-marker)) ! (set-marker ispell-query-replace-marker nil)))) ! ((or (null replace) (equal 0 replace)) ; ACCEPT/INSERT ! (if (equal 0 replace) ; BUFFER-LOCAL DICTIONARY ADD ! (setq reg-end (ispell-add-per-file-word-list ! (car poss) reg-end))) ! ;; This prevents us from pointing out the word that was ! ;; just accepted (via 'i' or 'a') if it follows on the ! ;; same line. (The drawback of processing entire lines.) ! ;; Redo check following the accepted word. ! (if (and ispell-pdict-modified-p ! (listp ispell-pdict-modified-p)) ! ;; We have accepted or inserted a word. Re-check line ! (setq ispell-pdict-modified-p ; fix update flag ! (car ispell-pdict-modified-p) ! ispell-filter nil ; don't continue check. ! end word-start))) ; reposition continue loc ! (replace ; STRING REPLACEMENT for this word. ! (delete-region word-start word-end) ! (insert replace) ! (let ((change (- (length replace) (length (car poss))))) ! (setq reg-end (+ reg-end change) ! offset-change (+ offset-change change) ! end (+ end change))))) ! (if (not ispell-quit) ! (message "continuing spelling check...")) ! (sit-for 0))) ! (setq ispell-filter (cdr ispell-filter))))) ; finished with line ! (goto-char end))))) ! (not ispell-quit)) ! ;; protected ! (if (get-buffer ispell-choices-buffer) ! (kill-buffer ispell-choices-buffer)) ! (if ispell-quit ! (progn ! ;; preserve or clear the region for ispell-continue. ! (if (not (numberp ispell-quit)) ! (set-marker ispell-region-end nil) ! ;; Enable ispell-continue. ! (set-marker ispell-region-end reg-end) ! (goto-char ispell-quit)) ! ;; Check for aborting ! (if (and ispell-checking-message (numberp ispell-quit)) ! (progn ! (setq ispell-quit nil) ! (error "Message send aborted."))) ! (setq ispell-quit nil)) ! (set-marker ispell-region-end nil) ! ;; Only save if successful exit. ! (ispell-pdict-save ispell-silently-savep) ! (message "Spell done.")))) --- 1520,1754 ---- (ispell-accept-buffer-local-defs) ; set up dictionary, local words, etc. (unwind-protect ! (save-excursion ! (message "Spell checking %s..." ! (if (and (= reg-start (point-min)) (= reg-end (point-max))) ! (buffer-name) "region")) ! (sit-for 0) ! ;; must be top level, not in ispell-command-loop for keeping window. ! (save-window-excursion ! (if ispell-keep-choices-win ! (let ((ocb (current-buffer)) ! (window-min-height ispell-choices-win-default-height)) ! (or (eq ocb (window-buffer (selected-window))) ! (error ! "current buffer is not visible in selected window: %s" ! ocb)) ! ;; This keeps the default window size when choices window saved ! (setq ispell-keep-choices-win ! ispell-choices-win-default-height) ! (ispell-overlay-window ispell-choices-win-default-height) ! (switch-to-buffer (get-buffer-create ispell-choices-buffer)) ! (setq mode-line-format "-- %b --") ! (erase-buffer) ! (select-window (next-window)) ! (or (eq (current-buffer) ocb) ! (error "ispell is confused about current buffer!")) ! (sit-for 0))) ! (goto-char reg-start) ! (let ((transient-mark-mode nil)) ! (while (and (not ispell-quit) (< (point) reg-end)) ! (let ((start (point)) ! (offset-change 0) ! (end (save-excursion (end-of-line) (min (point) reg-end))) ! (ispell-casechars (ispell-get-casechars)) ! string) ! (cond ; LOOK AT THIS LINE AND SKIP OR PROCESS ! ((eolp) ; END OF LINE, just go to next line. ! (forward-char 1)) ! ((and (null ispell-check-comments) ; SKIPING COMMENTS ! comment-start ; skip comments that start on the line. ! (search-forward comment-start end t)) ; or found here. ! (if (= (- (point) start) (length comment-start)) ! ;; comment starts the line. Skip entire line or region ! (if (string= "" comment-end) ; skip to next line ! (beginning-of-line 2) ; or jump to comment end. ! (search-forward comment-end reg-end 'limit)) ! ;; Comment later in line. Check spelling before comment. ! (let ((limit (- (point) (length comment-start)))) ! (goto-char (1- limit)) ! (if (looking-at "\\\\") ; "quoted" comment, don't skip ! ;; quoted comment. Skip over comment-start ! (if (= start (1- limit)) ! (setq limit (+ limit (length comment-start))) ! (setq limit (1- limit)))) ! (goto-char start) ! ;; Only check when "casechars" or math before comment ! (if (or (re-search-forward ispell-casechars limit t) ! (re-search-forward "[][()$]" limit t)) ! (setq string ! (concat "^" (buffer-substring start limit) ! "\n"))) ! (goto-char limit)))) ! ((and ispell-skip-tib ; SKIP TIB REFERENCES! ! (re-search-forward ispell-tib-ref-beginning end t)) ! (if (= (- (point) 2) start) ; tib ref is 2 chars. ! ;; Skip to end of tib ref, not necessarily on this line. ! ;; Return an error if tib ref not found ! (if (not(re-search-forward ispell-tib-ref-end reg-end t)) ! (progn ! (ispell-pdict-save ispell-silently-savep) ! (ding) ! (message ! (concat ! "Open tib reference--set `ispell-skip-tib'" ! " to nil to avoid this error")) ! ;; keep cursor at error location ! (setq ispell-quit (- (point) 2)))) ! ;; tib ref starts later on line. Check spelling before tib. ! (let ((limit (- (point) 2))) ! (goto-char start) ! (if (or (re-search-forward ispell-casechars limit t) ! (re-search-forward "[][()$]" limit t)) ! (setq string ! (concat "^" (buffer-substring start limit) ! "\n"))) ! (goto-char limit)))) ! ((looking-at "[---#@*+!%~^]") ; SKIP SPECIAL ISPELL CHARACTERS ! (forward-char 1)) ! ((or (re-search-forward ispell-casechars end t) ; TEXT EXISTS ! (re-search-forward "[][()$]" end t)) ; or MATH COMMANDS ! (setq string (concat "^" (buffer-substring start end) "\n")) ! (goto-char end)) ! (t (beginning-of-line 2))) ; EMPTY LINE, skip it. ! ! (setq end (point)) ; "end" tracks end of region to check. ! ! (if string ; there is something to spell! ! (let (poss) ! ;; send string to spell process and get input. ! (process-send-string ispell-process string) ! (while (progn ! (accept-process-output ispell-process) ! ;; Last item of output contains a blank line. ! (not (string= "" (car ispell-filter))))) ! ;; parse all inputs from the stream one word at a time. ! ;; Place in FIFO order and remove the blank item. ! (setq ispell-filter (nreverse (cdr ispell-filter))) ! (while (and (not ispell-quit) ispell-filter) ! (setq poss (ispell-parse-output (car ispell-filter))) ! (if (listp poss) ; spelling error occurred. ! (let* ((word-start (+ start offset-change ! (car (cdr poss)))) ! (word-end (+ word-start ! (length (car poss)))) ! replace) ! (goto-char word-start) ! ;; Adjust the horizontal scroll & point ! (ispell-horiz-scroll) ! (goto-char word-end) ! (ispell-horiz-scroll) ! (goto-char word-start) ! (ispell-horiz-scroll) ! (if (/= word-end ! (progn ! (search-forward (car poss) word-end t) ! (point))) ! ;; This occurs due to filter pipe problems ! (error ! (concat "Ispell misalignment: word " ! "`%s' point %d; please retry") ! (car poss) word-start)) ! (unwind-protect ! (progn ! (if ispell-highlight-p ! (ispell-highlight-spelling-error ! word-start word-end t)) ! (sit-for 0) ; update screen display ! (setq replace (ispell-command-loop ! (car (cdr (cdr poss))) ! (car (cdr (cdr (cdr poss)))) ! (car poss)))) ! ;; protected ! (if ispell-highlight-p ! (ispell-highlight-spelling-error ! word-start word-end))) ! (cond ! ((and replace (listp replace)) ! ;; REPLACEMENT WORD entered. Recheck line ! ;; starting with the replacement word. ! (setq ispell-filter nil ! string (buffer-substring word-start ! word-end)) ! (let ((change (- (length (car replace)) ! (length (car poss))))) ! ;; adjust regions ! (setq reg-end (+ reg-end change) ! offset-change (+ offset-change ! change))) ! (delete-region word-start word-end) ! (insert (car replace)) ! ;; I only need to recheck typed-in replacements ! (if (not (eq 'query-replace ! (car (cdr replace)))) ! (backward-char (length (car replace)))) ! (setq end (point)) ; reposition for recheck ! ;; when second arg exists, query-replace, saving regions ! (if (car (cdr replace)) ! (unwind-protect ! (save-window-excursion ! (set-marker ! ispell-query-replace-marker reg-end) ! ;; Assume case-replace & ! ;; case-fold-search correct? ! (query-replace string (car replace) ! t)) ! (setq reg-end ! (marker-position ! ispell-query-replace-marker)) ! (set-marker ispell-query-replace-marker ! nil)))) ! ((or (null replace) ! (equal 0 replace)) ; ACCEPT/INSERT ! (if (equal 0 replace) ; BUFFER-LOCAL DICT ADD ! (setq reg-end ! (ispell-add-per-file-word-list ! (car poss) reg-end))) ! ;; This avoids pointing out the word that was ! ;; just accepted (via 'i' or 'a') if it follows ! ;; on the same line. ! ;; Redo check following the accepted word. ! (if (and ispell-pdict-modified-p ! (listp ispell-pdict-modified-p)) ! ;; Word accepted. Recheck line. ! (setq ispell-pdict-modified-p ; update flag ! (car ispell-pdict-modified-p) ! ispell-filter nil ; discontinue check ! end word-start))) ; reposition loc. ! (replace ; STRING REPLACEMENT for this word. ! (delete-region word-start word-end) ! (insert replace) ! (let ((change (- (length replace) ! (length (car poss))))) ! (setq reg-end (+ reg-end change) ! offset-change (+ offset-change change) ! end (+ end change))))) ! (if (not ispell-quit) ! (message "Continuing spelling check...")) ! (sit-for 0))) ! ;; finished with line! ! (setq ispell-filter (cdr ispell-filter))))) ! (goto-char end))))) ! (not ispell-quit)) ! ;; protected ! (if (get-buffer ispell-choices-buffer) ! (kill-buffer ispell-choices-buffer)) ! (if ispell-quit ! (progn ! ;; preserve or clear the region for ispell-continue. ! (if (not (numberp ispell-quit)) ! (set-marker ispell-region-end nil) ! ;; Enable ispell-continue. ! (set-marker ispell-region-end reg-end) ! (goto-char ispell-quit)) ! ;; Check for aborting ! (if (and ispell-checking-message (numberp ispell-quit)) ! (progn ! (setq ispell-quit nil) ! (error "Message send aborted."))) ! (setq ispell-quit nil)) ! (set-marker ispell-region-end nil) ! ;; Only save if successful exit. ! (ispell-pdict-save ispell-silently-savep) ! (message "Spell-checking done")))) *************** *** 1619,1623 **** ;;;###autoload ! (defun ispell-buffer () "Check the current buffer for spelling errors interactively." (interactive) --- 1755,1759 ---- ;;;###autoload ! (defun ispell-buffer () "Check the current buffer for spelling errors interactively." (interactive) *************** *** 1624,1627 **** --- 1760,1764 ---- (ispell-region (point-min) (point-max))) + ;;;###autoload (defun ispell-continue () *************** *** 1637,1643 **** ;;; Horizontal scrolling ! (defun horiz-scroll () ! "This function checks if the point is within the horizontal ! visibility of its window area." (if truncate-lines ; display truncating lines? ;; See if display needs to be scrolled. --- 1774,1779 ---- ;;; Horizontal scrolling ! (defun ispell-horiz-scroll () ! "Places point within the horizontal visibility of its window area." (if truncate-lines ; display truncating lines? ;; See if display needs to be scrolled. *************** *** 1661,1664 **** --- 1797,1801 ---- (interactive "P") (let ((cursor-location (point)) + case-fold-search ispell-keep-choices-win (word (ispell-get-word nil "\\*")) ; force "previous-word" processing. *************** *** 1676,1687 **** (message "No match for \"%s\"" word)) (t ; There is a modification... (unwind-protect ! (progn (if ispell-highlight-p ! (highlight-spelling-error start end t)) ; highlight word ! (setq replacement (ispell-command-loop possibilities nil word))) ! ;; protected ! (if ispell-highlight-p ! (highlight-spelling-error start end))) ; un-highlight (cond ((equal 0 replacement) ; BUFFER-LOCAL ADDITION --- 1813,1832 ---- (message "No match for \"%s\"" word)) (t ; There is a modification... + (cond ; Try and respect case of word. + ((string-match "^[^A-Z]+$" word) + (setq possibilities (mapcar 'downcase possibilities))) + ((string-match "^[^a-z]+$" word) + (setq possibilities (mapcar 'upcase possibilities))) + ((string-match "^[A-Z]" word) + (setq possibilities (mapcar 'capitalize possibilities)))) (unwind-protect ! (progn ! (if ispell-highlight-p ; highlight word ! (ispell-highlight-spelling-error start end t)) ! (setq replacement ! (ispell-command-loop possibilities nil word))) ! ;; protected (if ispell-highlight-p ! (ispell-highlight-spelling-error start end))) ; un-highlight (cond ((equal 0 replacement) ; BUFFER-LOCAL ADDITION *************** *** 1705,1710 **** ;;;###autoload (defun ispell-complete-word-interior-frag () ! "Runs `ispell-complete-word' assuming that the word is a character sequence ! inside of a word." (interactive) (ispell-complete-word t)) --- 1850,1854 ---- ;;;###autoload (defun ispell-complete-word-interior-frag () ! "Completes word matching character sequence inside a word." (interactive) (ispell-complete-word t)) *************** *** 1729,1733 **** "diff -c .*\n\\*\\*\\* .*\n--- " ;; Matches "----------------- cut here" ! "^[-=]+\\s cut here") "\\|") "*End of text which will be checked in ispell-message. --- 1873,1877 ---- "diff -c .*\n\\*\\*\\* .*\n--- " ;; Matches "----------------- cut here" ! "^[-=_]+\\s ?cut here") "\\|") "*End of text which will be checked in ispell-message. *************** *** 1735,1738 **** --- 1879,1883 ---- Otherwise, it must be a function which is called to get the limit.") + ;;;###autoload (defun ispell-message () *************** *** 1742,1747 **** To abort spell checking of a message REGION and send the message anyway, ! use the 'x' or 'q' command. (Any subsequent regions will be checked.) ! The 'X' command aborts the message send so that you can edit the buffer. To spell-check whenever a message is sent, include the appropriate lines --- 1887,1892 ---- To abort spell checking of a message REGION and send the message anyway, ! use the `x' or `q' command. (Any subsequent regions will be checked.) ! The `X' command aborts the message send so that you can edit the buffer. To spell-check whenever a message is sent, include the appropriate lines *************** *** 1751,1770 **** (add-hook 'mh-before-send-letter-hook 'ispell-message) ! Or you can bind the function C-c i in gnus or mail by setting ! news-reply-mode-hook or mail-mode-hook to the following lambda expression: (function (lambda () (local-set-key \"\\C-ci\" 'ispell-message)))" (interactive) (save-excursion ! (beginning-of-buffer) ! (let* ((internal-messagep ! (search-forward mail-header-separator nil t)) (limit (copy-marker ! (cond ! ((not ispell-message-text-end) (point-max)) ! ((char-or-string-p ispell-message-text-end) ! (if (re-search-forward ispell-message-text-end nil t) ! (match-beginning 0) ! (point-max))) ! (t (min (point-max) (funcall ispell-message-text-end)))))) (cite-regexp ;Prefix of inserted text (cond --- 1896,1919 ---- (add-hook 'mh-before-send-letter-hook 'ispell-message) ! you can bind this to the key C-c i in GNUS or mail by adding to ! `news-reply-mode-hook' or `mail-mode-hook' the following lambda expression: (function (lambda () (local-set-key \"\\C-ci\" 'ispell-message)))" (interactive) (save-excursion ! (goto-char (point-min)) ! (let* ((internal-messagep (save-excursion ! (re-search-forward ! (concat "^" ! (regexp-quote mail-header-separator) ! "$") ! nil t))) (limit (copy-marker ! (cond ! ((not ispell-message-text-end) (point-max)) ! ((char-or-string-p ispell-message-text-end) ! (if (re-search-forward ispell-message-text-end nil t) ! (match-beginning 0) ! (point-max))) ! (t (min (point-max) (funcall ispell-message-text-end)))))) (cite-regexp ;Prefix of inserted text (cond *************** *** 1775,1779 **** (concat "\\(" sc-cite-regexp "\\)" "\\|" (ispell-non-empty-string sc-reference-tag-string))) ! ((equal major-mode 'news-reply-mode) ;Gnus (concat "In article <" "\\|" (if mail-yank-prefix --- 1924,1928 ---- (concat "\\(" sc-cite-regexp "\\)" "\\|" (ispell-non-empty-string sc-reference-tag-string))) ! ((equal major-mode 'news-reply-mode) ;GNUS (concat "In article <" "\\|" (if mail-yank-prefix *************** *** 1782,1786 **** ((equal major-mode 'mh-letter-mode) ; mh mail message (ispell-non-empty-string mh-ins-buf-prefix)) ! ((not internal-messagep) ; Assume nn sent us this message. (concat "In [a-zA-Z.]+ you write:" "\\|" "In <[^,;&+=]+> [^,;&+=]+ writes:" "\\|" --- 1931,1935 ---- ((equal major-mode 'mh-letter-mode) ; mh mail message (ispell-non-empty-string mh-ins-buf-prefix)) ! ((not internal-messagep) ; Assume n sent us this message. (concat "In [a-zA-Z.]+ you write:" "\\|" "In <[^,;&+=]+> [^,;&+=]+ writes:" "\\|" *************** *** 1792,1802 **** (ispell-non-empty-string mail-yank-prefix)) (t "^ \\|^\t"))) ! (cite-regexp-start (concat "^[ \t]*$\\|" cite-regexp)) ! (cite-regexp-end (concat "^\\(" cite-regexp "\\)")) ! (old-case-fold-search case-fold-search) ! (case-fold-search t) ! (ispell-checking-message t)) ! (save-excursion ! (beginning-of-buffer) ;; Skip header fields except Subject: without Re:'s ;;(search-forward mail-header-separator nil t) --- 1941,1950 ---- (ispell-non-empty-string mail-yank-prefix)) (t "^ \\|^\t"))) ! (cite-regexp-start (concat "^[ \t]*$\\|" cite-regexp)) ! (cite-regexp-end (concat "^\\(" cite-regexp "\\)")) ! (old-case-fold-search case-fold-search) ! (case-fold-search t) ! (ispell-checking-message t)) ! (goto-char (point-min)) ;; Skip header fields except Subject: without Re:'s ;;(search-forward mail-header-separator nil t) *************** *** 1803,1811 **** (while (if internal-messagep (< (point) internal-messagep) ! (and (looking-at "[-a-zA-Z]+:\\|\t\\| ") (not (eobp)))) ! ! ;; spell check Subject: field without Re:'s. ! (if (looking-at "Subject: *") (progn (goto-char (match-end 0)) --- 1951,1957 ---- (while (if internal-messagep (< (point) internal-messagep) ! (and (looking-at "[a-zA-Z---]+:\\|\t\\| ") (not (eobp)))) ! (if (looking-at "Subject: *") ; Spell check new subject fields (progn (goto-char (match-end 0)) *************** *** 1836,1841 **** (marker-position limit))))) (ispell-region (point) end) ! (goto-char end))))) ! (set-marker limit nil)))) (defun ispell-non-empty-string (string) --- 1982,1988 ---- (marker-position limit))))) (ispell-region (point) end) ! (goto-char end)))) ! (set-marker limit nil)))) ! (defun ispell-non-empty-string (string) *************** *** 1851,1855 **** (defun ispell-accept-buffer-local-defs () ! "Loads all buffer-local information, restarting ispell when necessary." (ispell-buffer-local-dict) ; May kill ispell-process. (ispell-buffer-local-words) ; Will initialize ispell-process. --- 1998,2002 ---- (defun ispell-accept-buffer-local-defs () ! "Load all buffer-local information, restarting ispell when necessary." (ispell-buffer-local-dict) ; May kill ispell-process. (ispell-buffer-local-words) ; Will initialize ispell-process. *************** *** 1857,1867 **** - ;;; Currently ispell version 3.0.09 (beta) doesn't fully support the "~" - ;;; pipe mode command. Should be fixed in the next release. - (defun ispell-buffer-local-parsing () ! "Places ispell into parsing mode for this buffer. ! This overrides the default parsing mode. ! This includes latex/nroff modes and extended character mode." ;; (ispell-init-process) must already be called. (process-send-string ispell-process "!\n") ; Put process in terse mode. --- 2004,2011 ---- (defun ispell-buffer-local-parsing () ! "Place Ispell into parsing mode for this buffer. ! Overrides the default parsing mode. ! Includes latex/nroff modes and extended character mode." ;; (ispell-init-process) must already be called. (process-send-string ispell-process "!\n") ; Put process in terse mode. *************** *** 1900,1906 **** (defun ispell-buffer-local-dict () ! "Does necessary local dictionary initialization. When a dictionary is defined in the buffer (see variable ! ispell-dictionary-keyword), it will override the local setting from \\[ispell-change-dictionary]. Both should not be used to define a buffer-local dictionary." --- 2044,2050 ---- (defun ispell-buffer-local-dict () ! "Initializes local dictionary. When a dictionary is defined in the buffer (see variable ! `ispell-dictionary-keyword'), it will override the local setting from \\[ispell-change-dictionary]. Both should not be used to define a buffer-local dictionary." *************** *** 1934,1938 **** (defun ispell-buffer-local-words () ! "Loads the buffer-local \"dictionary\" in the current buffer." (if (and ispell-buffer-local-name (not (equal ispell-buffer-local-name (buffer-name)))) --- 2078,2082 ---- (defun ispell-buffer-local-words () ! "Loads the buffer-local dictionary in the current buffer." (if (and ispell-buffer-local-name (not (equal ispell-buffer-local-name (buffer-name)))) *************** *** 1950,1957 **** (while (re-search-forward " *\\([^ \"]+\\)" end t) (setq string (buffer-substring (match-beginning 1) (match-end 1))) ! (process-send-string ! ispell-process (concat "@" (buffer-substring (match-beginning 1) ! (match-end 1)) ! "\n"))))))) --- 2094,2098 ---- (while (re-search-forward " *\\([^ \"]+\\)" end t) (setq string (buffer-substring (match-beginning 1) (match-end 1))) ! (process-send-string ispell-process (concat "@" string "\n"))))))) *************** *** 1966,1971 **** (save-excursion (goto-char (point-min)) ! (let ((case-fold-search nil) ! line-okay search done string) (while (not done) (setq search (search-forward ispell-words-keyword nil 'move) --- 2107,2111 ---- (save-excursion (goto-char (point-min)) ! (let (case-fold-search line-okay search done string) (while (not done) (setq search (search-forward ispell-words-keyword nil 'move) *************** *** 1997,2001 **** ! (defconst ispell-version "2.26 Tue Feb 15 16:11:14 MST 1994") (provide 'ispell) --- 2137,2141 ---- ! (defconst ispell-version "2.30 -- Fri May 20 15:58:52 MDT 1994") (provide 'ispell) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/ispell4.el emacs-19.24/lisp/ispell4.el *** emacs-19.23/lisp/ispell4.el Tue May 10 16:27:51 1994 --- emacs-19.24/lisp/ispell4.el Thu May 19 17:17:42 1994 *************** *** 639,642 **** --- 639,643 ---- (defun ispell-highlight (start end) (and ispell-highlight + window-system (progn (or ispell-overlay diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/jka-compr.el emacs-19.24/lisp/jka-compr.el *** emacs-19.23/lisp/jka-compr.el Sun Apr 24 04:01:11 1994 --- emacs-19.24/lisp/jka-compr.el Sun May 22 03:59:36 1994 *************** *** 126,131 **** (defvar jka-compr-compression-info-list ;;[regexp ! ;; compr-message compr-prog compr-discard compr-args ! ;; uncomp-message uncomp-prog uncomp-discard uncomp-args ;; can-append auto-mode-flag] '(["\\.Z~?\\'" --- 126,131 ---- (defvar jka-compr-compression-info-list ;;[regexp ! ;; compr-message compr-prog compr-args ! ;; uncomp-message uncomp-prog uncomp-args ;; can-append auto-mode-flag] '(["\\.Z~?\\'" *************** *** 140,146 **** "List of vectors that describe available compression techniques. Each element, which describes a compression technique, is a vector of ! the form [regexp magic compress-name compress-program compress-discard-err ! compress-args uncompress-name uncompress-program uncompress-discard-err ! uncompress-args append-flag extension] where: regexp is a regexp that matches filenames that are --- 140,146 ---- "List of vectors that describe available compression techniques. Each element, which describes a compression technique, is a vector of ! the form [REGEXP COMPRESS-MSG COMPRESS-PROGRAM COMPRESS-ARGS ! UNCOMPRESS-MSG UNCOMPRESS-PROGRAM UNCOMPRESS-ARGS ! APPEND-FLAG EXTENSION], where: regexp is a regexp that matches filenames that are *************** *** 147,150 **** --- 147,153 ---- compressed with this format + compress-msg is the message to issue to the user when doing this + type of compression (nil means no message) + compress-program is a program that performs this compression *************** *** 151,157 **** compress-args is a list of args to pass to the compress program ! uncompress-message is the message to issue to the user when this ! type of uncompression is taking place (nil ! means don't issue any message) uncompress-program is a program that performs this compression --- 154,159 ---- compress-args is a list of args to pass to the compress program ! uncompress-msg is the message to issue to the user when doing this ! type of uncompression (nil means no message) uncompress-program is a program that performs this compression *************** *** 170,173 **** --- 172,183 ---- + (defvar jka-compr-file-name-handler-entry + nil + "The entry in `file-name-handler-alist' used by the jka-compr I/O functions.") + + (defvar jka-compr-op-table + (make-vector 127 0) + "Hash table of operations supported by jka-compr.") + ;;; Functions for accessing the return value of jka-get-compression-info (defun jka-compr-info-regexp (info) (aref info 0)) *************** *** 655,663 **** - (defvar jka-compr-file-name-handler-entry - nil - "The entry in `file-name-handler-alist' used by the jka-compr I/O functions.") - - (defun jka-compr-handler (operation &rest args) --- 665,668 ---- *************** *** 690,698 **** (inhibit-file-name-operation operation)) (apply operation args))) - - - (defvar jka-compr-op-table - (make-vector 127 0) - "Hash table of operations supported by jka-compr.") --- 695,698 ---- diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/lmenu.el emacs-19.24/lisp/lmenu.el *** emacs-19.23/lisp/lmenu.el Tue May 3 18:31:00 1994 --- emacs-19.24/lisp/lmenu.el Mon May 23 03:41:05 1994 *************** *** 28,31 **** --- 28,33 ---- ;; Arrange to use current-menubar to set up part of the menu bar. + (defvar current-menubar) + (setq recompute-lucid-menubar 'recompute-lucid-menubar) (defun recompute-lucid-menubar () *************** *** 135,140 **** " (let ((menu (make-lucid-menu-keymap (car menu-desc) (cdr menu-desc))) ! (pos (mouse-position)) ! answer) (while menu (setq answer (x-popup-menu (list (list (nth 1 pos) (nthcdr 2 pos)) --- 137,142 ---- " (let ((menu (make-lucid-menu-keymap (car menu-desc) (cdr menu-desc))) ! (pos (mouse-pixel-position)) ! answer cmd) (while menu (setq answer (x-popup-menu (list (list (nth 1 pos) (nthcdr 2 pos)) *************** *** 180,184 **** (tail (cdr data)) converted ! choice) (while tail (if (null (car tail)) --- 182,186 ---- (tail (cdr data)) converted ! choice meaning) (while tail (if (null (car tail)) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/mail-hist.el emacs-19.24/lisp/mail-hist.el *** emacs-19.23/lisp/mail-hist.el Mon May 2 01:00:30 1994 --- emacs-19.24/lisp/mail-hist.el Sun May 22 18:00:21 1994 *************** *** 181,185 **** "Add the contents of HEADER to the header history ring. Optional argument CONTENTS is a string which will be the contents ! (instead of whatever's found in the header)." (let ((ring (cdr (assoc header mail-hist-header-ring-alist)))) (or ring --- 181,185 ---- "Add the contents of HEADER to the header history ring. Optional argument CONTENTS is a string which will be the contents ! \(instead of whatever's found in the header)." (let ((ring (cdr (assoc header mail-hist-header-ring-alist)))) (or ring *************** *** 252,256 **** Although you can do so, it does not make much sense to call this without having called `mail-hist-previous-header' first ! (\\[mail-hist-previous-header]). The history only contains the contents of outgoing messages, not --- 252,256 ---- Although you can do so, it does not make much sense to call this without having called `mail-hist-previous-header' first ! \(\\[mail-hist-previous-header]). The history only contains the contents of outgoing messages, not diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/makefile.el emacs-19.24/lisp/makefile.el *** emacs-19.23/lisp/makefile.el Fri Apr 22 16:20:52 1994 --- emacs-19.24/lisp/makefile.el Sun May 22 18:10:45 1994 *************** *** 18,22 **** ;; So, for the meantime, this is not the default mode for makefiles. ! ;; $Id: makefile.el,v 1.15 1994/04/22 20:20:49 rms Exp $ ;; This file is part of GNU Emacs. --- 18,22 ---- ;; So, for the meantime, this is not the default mode for makefiles. ! ;; $Id: makefile.el,v 1.16 1994/05/22 22:10:39 rms Exp $ ;; This file is part of GNU Emacs. *************** *** 123,127 **** (defvar makefile-pickup-everything-picks-up-filenames-p nil "If non-nil, makefile-pickup-everything also picks up filenames as targets ! (i.e. it calls makefile-find-filenames-as-targets), otherwise filenames are omitted.") --- 123,127 ---- (defvar makefile-pickup-everything-picks-up-filenames-p nil "If non-nil, makefile-pickup-everything also picks up filenames as targets ! \(i.e. it calls makefile-find-filenames-as-targets), otherwise filenames are omitted.") *************** *** 749,753 **** This is most useful in the process of creating continued lines when copying large dependencies from the browser to the client buffer. ! (point) advances accordingly in the client buffer." (interactive) (save-excursion --- 749,753 ---- This is most useful in the process of creating continued lines when copying large dependencies from the browser to the client buffer. ! \(point) advances accordingly in the client buffer." (interactive) (save-excursion diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/menu-bar.el emacs-19.24/lisp/menu-bar.el *** emacs-19.23/lisp/menu-bar.el Thu May 12 13:01:49 1994 --- emacs-19.24/lisp/menu-bar.el Thu May 19 18:03:01 1994 *************** *** 265,273 **** (let ((buffers (buffer-list)) (frames (frame-list)) buffers-menu frames-menu) ! (if (and (equal buffers menu-bar-update-buffers-last-buffers) (equal frames menu-bar-update-buffers-last-frames)) nil ! (setq menu-bar-update-buffers-last-buffers buffers) (setq menu-bar-update-buffers-last-frames frames) ;; If requested, list only the N most recently selected buffers. --- 265,281 ---- (let ((buffers (buffer-list)) (frames (frame-list)) + buffers-info buffers-menu frames-menu) ! (setq buffers-info ! (mapcar (function (lambda (buffer) ! (list buffer (buffer-modified-p buffer) ! (save-excursion ! (set-buffer buffer) ! buffer-read-only)))) ! buffers)) ! (if (and (equal buffers-info menu-bar-update-buffers-last-buffers) (equal frames menu-bar-update-buffers-last-frames)) nil ! (setq menu-bar-update-buffers-last-buffers buffers-info) (setq menu-bar-update-buffers-last-frames frames) ;; If requested, list only the N most recently selected buffers. *************** *** 409,415 **** (let ((frames (frame-list))) (while frames ! (modify-frame-parameters (car frames) ! (list (cons 'menu-bar-lines (if menu-bar-mode 1 0)))) (setq frames (cdr frames)))))) --- 417,426 ---- (let ((frames (frame-list))) (while frames ! (let ((height (cdr (assq 'height (frame-parameters (selected-frame)))))) ! (modify-frame-parameters (car frames) ! (list (cons 'menu-bar-lines (if menu-bar-mode 1 0)))) + (modify-frame-parameters (car frames) + (list (cons 'height height)))) (setq frames (cdr frames)))))) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/mouse-sel.el emacs-19.24/lisp/mouse-sel.el *** emacs-19.23/lisp/mouse-sel.el Tue May 3 18:42:20 1994 --- emacs-19.24/lisp/mouse-sel.el Mon May 23 00:58:30 1994 *************** *** 100,104 **** ;; the mouse position. You can tell it to insert at point instead with: ;; ! ;; (setq mouse-sel-insert-at-point t) ;; ;; * I like to leave point at the end of the region nearest to where the --- 100,104 ---- ;; the mouse position. You can tell it to insert at point instead with: ;; ! ;; (setq mouse-yank-at-point t) ;; ;; * I like to leave point at the end of the region nearest to where the *************** *** 180,187 **** Ie. 4 clicks = 1 click, 5 clicks = 2 clicks, etc.") - (defvar mouse-sel-insert-at-point nil - "*If non-nil, \\[mouse-insert-selection] inserts at point. - Normally, \\[mouse-insert-selection] inserts at the mouse position.") - (defvar mouse-sel-default-bindings t "Set to nil before loading `mouse-sel' to prevent default mouse bindings.") --- 180,183 ---- *************** *** 420,426 **** (defun mouse-insert-selection (click) "Insert the contents of the selection at mouse click. ! If `mouse-sel-insert-at-point' is non-nil, insert at point instead." (interactive "e") ! (or mouse-sel-insert-at-point (mouse-set-point click)) (deactivate-mark) --- 416,422 ---- (defun mouse-insert-selection (click) "Insert the contents of the selection at mouse click. ! If `mouse-yank-at-point' is non-nil, insert at point instead." (interactive "e") ! (or mouse-yank-at-point (mouse-set-point click)) (deactivate-mark) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/mouse.el emacs-19.24/lisp/mouse.el *** emacs-19.23/lisp/mouse.el Fri May 6 16:25:33 1994 --- emacs-19.24/lisp/mouse.el Sun May 22 16:56:03 1994 *************** *** 90,97 **** (let ((start (event-start click))) (select-window (posn-window start)) ! (let ((new-height (if (eq (posn-point start) 'vertical-scroll-bar) ! (scroll-bar-scale (posn-col-row start) ! (1- (window-height))) ! (1+ (cdr (posn-col-row (event-end click)))))) (first-line window-min-height) (last-line (- (window-height) window-min-height))) --- 90,94 ---- (let ((start (event-start click))) (select-window (posn-window start)) ! (let ((new-height (1+ (cdr (posn-col-row (event-end click))))) (first-line window-min-height) (last-line (- (window-height) window-min-height))) *************** *** 630,660 **** (move-overlay mouse-secondary-overlay (car range) (nth 1 range)))) - ;; Are we moving on a different window on the same frame? - ((and (windowp (posn-window end)) - (eq (window-frame (posn-window end)) start-frame)) - (let ((mouse-row - (+ (nth 1 (window-edges (posn-window end))) - (cdr (posn-col-row end))))) - (cond - ((< mouse-row top) - (mouse-scroll-subr - (- mouse-row top) mouse-secondary-overlay start-point)) - ((and (not (eobp)) - (>= mouse-row bottom)) - (mouse-scroll-subr (1+ (- mouse-row bottom)) - mouse-drag-overlay start-point))))) - - (t - (let ((mouse-y (cdr (cdr (mouse-position)))) - (menu-bar-lines (or (cdr (assq 'menu-bar-lines - (frame-parameters))) - 0))) - - ;; Are we on the menu bar? - (and (integerp mouse-y) (< mouse-y menu-bar-lines) - (mouse-scroll-subr (- mouse-y menu-bar-lines) - mouse-secondary-overlay start-point)))))))) - (if (and (eq (get (event-basic-type event) 'event-kind) 'mouse-click) (eq (posn-window (event-end event)) start-window) --- 627,642 ---- (move-overlay mouse-secondary-overlay (car range) (nth 1 range)))) + (t + (let ((mouse-row (cdr (cdr (mouse-position))))) + (cond + ((null mouse-row)) + ((< mouse-row top) + (mouse-scroll-subr + (- mouse-row top) mouse-secondary-overlay start-point)) + ((and (not (eobp)) + (>= mouse-row bottom)) + (mouse-scroll-subr (1+ (- mouse-row bottom)) + mouse-secondary-overlay start-point))))))))) (if (and (eq (get (event-basic-type event) 'event-kind) 'mouse-click) (eq (posn-window (event-end event)) start-window) *************** *** 1205,1212 **** (save-excursion (goto-char (posn-point (event-start event))) ! (skip-chars-backward "^ \t\n") ! (let ((beg (point))) (skip-chars-forward "^ \t\n") ! (setq choice (buffer-substring beg (point)))))) (let ((owindow (selected-window))) (select-window (posn-window (event-start event))) --- 1187,1204 ---- (save-excursion (goto-char (posn-point (event-start event))) ! (let (beg end) (skip-chars-forward "^ \t\n") ! (while (looking-at " [^ \n\t]") ! (forward-char 1) ! (skip-chars-forward "^ \t\n")) ! (setq end (point)) ! (skip-chars-backward "^ \t\n") ! (while (and (= (preceding-char) ?\ ) ! (not (and (> (point) (1+ (point-min))) ! (= (char-after (- (point) 2)) ?\ )))) ! (backward-char 1) ! (skip-chars-backward "^ \t\n")) ! (setq beg (point)) ! (setq choice (buffer-substring beg end))))) (let ((owindow (selected-window))) (select-window (posn-window (event-start event))) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/nntp.el emacs-19.24/lisp/nntp.el *** emacs-19.23/lisp/nntp.el Tue Nov 16 01:53:25 1993 --- emacs-19.24/lisp/nntp.el Sun May 22 18:00:32 1994 *************** *** 55,59 **** server must be specified as follows: ! (setq nntp-server-hook (function (lambda () --- 55,59 ---- server must be specified as follows: ! \(setq nntp-server-hook (function (lambda () diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/paren.el emacs-19.24/lisp/paren.el *** emacs-19.23/lisp/paren.el Mon Jan 17 17:42:35 1994 --- emacs-19.24/lisp/paren.el Fri May 20 19:59:06 1994 *************** *** 83,94 **** (and (null show-paren-mismatch-face) (x-display-color-p) ! (or (setq show-paren-mismatch-face ! (internal-find-face 'paren-mismatch)) (progn (make-face 'paren-mismatch) - (setq show-paren-mismatch-face - 'paren-mismatch) (set-face-background 'paren-mismatch ! "purple")))) (if show-paren-mismatch-face (setq face show-paren-mismatch-face) --- 83,92 ---- (and (null show-paren-mismatch-face) (x-display-color-p) ! (or (internal-find-face 'paren-mismatch) (progn (make-face 'paren-mismatch) (set-face-background 'paren-mismatch ! "purple"))) ! (setq show-paren-mismatch-face 'paren-mismatch)) (if show-paren-mismatch-face (setq face show-paren-mismatch-face) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/paths.el emacs-19.24/lisp/paths.el *** emacs-19.23/lisp/paths.el Fri May 6 21:15:20 1994 --- emacs-19.24/lisp/paths.el Sun May 22 16:36:22 1994 *************** *** 91,94 **** --- 91,100 ---- (cond ((string-match "^[^-]+-[^-]+-sco3.2v4" system-configuration) "/usr/spool/mail/") + ;; SVR4 is said to use /var/mail, and make /usr/mail a link to that; + ;; but since I'm not sure it's generally true, calling file-exists-p + ;; prevents lossage if it isn't true. -- rms. + ((and (string-match "^[^-]+-[^-]+-sysv4" system-configuration) + (file-exists-p "/var/mail")) + "/var/mail/") ((memq system-type '(dgux hpux usg-unix-v unisoft-unix rtu irix)) "/usr/mail/") diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/refbib.el emacs-19.24/lisp/refbib.el *** emacs-19.23/lisp/refbib.el Mon Sep 21 06:27:54 1992 --- emacs-19.24/lisp/refbib.el Sun May 22 18:00:37 1994 *************** *** 73,77 **** letter, even if it really doesn't. For example, a value of '((\"Aij\" \"{Artificial Intelligence}\") ! (\"Ijcai81\" \"ijcai7\")) would expand Aij to the text string \"Artificial Intelligence\", but would replace Ijcai81 with the BibTeX macro \"ijcai7\".") --- 73,77 ---- letter, even if it really doesn't. For example, a value of '((\"Aij\" \"{Artificial Intelligence}\") ! \(\"Ijcai81\" \"ijcai7\")) would expand Aij to the text string \"Artificial Intelligence\", but would replace Ijcai81 with the BibTeX macro \"ijcai7\".") *************** *** 88,92 **** should be listed as beginning with a capital letter, even if it doesn't. For example, a value of '((\"Aij\" \"{Artificial Intelligence}\") ! (\"Ijcai81\" \"ijcai7\")) would expand Aij to the text string \"Artificial Intelligence\", but would replace Ijcai81 with the BibTeX macro \"ijcai7\".") --- 88,92 ---- should be listed as beginning with a capital letter, even if it doesn't. For example, a value of '((\"Aij\" \"{Artificial Intelligence}\") ! \(\"Ijcai81\" \"ijcai7\")) would expand Aij to the text string \"Artificial Intelligence\", but would replace Ijcai81 with the BibTeX macro \"ijcai7\".") diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/refer.el emacs-19.24/lisp/refer.el *** emacs-19.23/lisp/refer.el Mon Mar 14 16:28:46 1994 --- emacs-19.24/lisp/refer.el Sun May 22 18:00:39 1994 *************** *** 96,100 **** \\bibliography{file1,file2,file3} which is read to set up refer-bib-files. The regexp must specify the command ! (such as \\bibliography) that is used to specify the list of bib files. The command is expected to specify a file name, or a list of comma-separated file names, within curly braces. --- 96,100 ---- \\bibliography{file1,file2,file3} which is read to set up refer-bib-files. The regexp must specify the command ! \(such as \\bibliography) that is used to specify the list of bib files. The command is expected to specify a file name, or a list of comma-separated file names, within curly braces. diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/rmail.el emacs-19.24/lisp/rmail.el *** emacs-19.23/lisp/rmail.el Sat May 7 18:11:41 1994 --- emacs-19.24/lisp/rmail.el Thu May 19 16:47:41 1994 *************** *** 585,589 **** (setq file-precious-flag t) (make-local-variable 'rmail-message-vector) - (make-local-variable 'rmail-last-file) (make-local-variable 'rmail-inbox-list) (setq rmail-inbox-list (rmail-parse-file-inboxes)) --- 585,588 ---- *************** *** 600,621 **** (make-local-variable 'rmail-keywords) ;; this gets generated as needed ! (setq rmail-keywords nil) ! ;; Make everything permanent, in case the user switches major modes ! ;; during an edit. ! (put 'revert-buffer-function 'permanent-local t) ! (put 'rmail-last-label 'permanent-local t) ! (put 'rmail-last-regexp 'permanent-local t) ! (put 'rmail-deleted-vector 'permanent-local t) ! (put 'rmail-summary-buffer 'permanent-local t) ! (put 'rmail-summary-vector 'permanent-local t) ! (put 'rmail-current-message 'permanent-local t) ! (put 'rmail-total-messages 'permanent-local t) ! (put 'require-final-newline 'permanent-local t) ! (put 'version-control 'permanent-local t) ! (put 'file-precious-flag 'permanent-local t) ! (put 'rmail-message-vector 'permanent-local t) ! (put 'rmail-last-file 'permanent-local t) ! (put 'rmail-inbox-list 'permanent-local t) ! (put 'rmail-keywords 'permanent-local t)) ;; Handle M-x revert-buffer done in an rmail-mode buffer. --- 599,603 ---- (make-local-variable 'rmail-keywords) ;; this gets generated as needed ! (setq rmail-keywords nil)) ;; Handle M-x revert-buffer done in an rmail-mode buffer. diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/rmailedit.el emacs-19.24/lisp/rmailedit.el *** emacs-19.23/lisp/rmailedit.el Tue May 3 19:33:48 1994 --- emacs-19.24/lisp/rmailedit.el Thu May 19 16:46:05 1994 *************** *** 63,67 **** (make-local-variable 'rmail-old-text) (setq rmail-old-text (buffer-substring (point-min) (point-max))) - (put 'rmail-old-text 'permanent-local t) (setq buffer-read-only nil) (set-buffer-modified-p (buffer-modified-p)) --- 63,66 ---- diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/rmailout.el emacs-19.24/lisp/rmailout.el *** emacs-19.23/lisp/rmailout.el Thu May 5 01:08:38 1994 --- emacs-19.24/lisp/rmailout.el Thu May 19 16:43:45 1994 *************** *** 195,199 **** will be appended with their original headers. ! The default file name comes from `rmail-last-file', which is updated to the name you use in this command. --- 195,199 ---- will be appended with their original headers. ! The default file name comes from `rmail-default-file', which is updated to the name you use in this command. diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/rsz-mini.el emacs-19.24/lisp/rsz-mini.el *** emacs-19.23/lisp/rsz-mini.el Mon May 16 06:01:08 1994 --- emacs-19.24/lisp/rsz-mini.el Fri May 20 13:43:45 1994 *************** *** 8,11 **** --- 8,12 ---- ;;; Keywords: minibuffer, window, frame, display ;;; Status: Known to work in FSF GNU Emacs 19.23. + ;;; $Id: rsz-mini.el,v 1.3 1994/05/20 17:43:40 friedman Exp $ ;; This file is part of GNU Emacs. *************** *** 51,54 **** --- 52,56 ---- ;;; ;;; Invoking the command `resize-minibuffer-mode' will then enable this mode. + ;;; Simply loading this file will enable resize-minibuffer-mode. ;;; Code: *************** *** 197,200 **** --- 199,203 ---- (add-hook 'minibuffer-setup-hook 'resize-minibuffer-setup) + (resize-minibuffer-mode) ;; rsz-mini.el ends here diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/sendmail.el emacs-19.24/lisp/sendmail.el *** emacs-19.23/lisp/sendmail.el Sat May 7 17:59:43 1994 --- emacs-19.24/lisp/sendmail.el Mon May 23 00:53:13 1994 *************** *** 131,134 **** --- 131,135 ---- (defvar mail-mailer-swallows-blank-line (if (and (string-match "sparc-sun-sunos\\(\\'\\|[^5]\\)" system-configuration) + (file-exists-p "/etc/sendmail.cf") (let ((buffer (get-buffer-create " *temp*"))) (unwind-protect diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/server.el emacs-19.24/lisp/server.el *** emacs-19.23/lisp/server.el Tue May 3 18:52:11 1994 --- emacs-19.24/lisp/server.el Fri May 20 19:47:00 1994 *************** *** 83,86 **** --- 83,89 ---- "*List of hooks to call when switching to a buffer for the Emacs server.") + (defvar server-done-hook nil + "*List of hooks to call when done editing a buffer for the Emacs server.") + (defvar server-process nil "the current server process") *************** *** 251,256 **** (save-excursion (set-buffer buffer) ! (setq server-buffer-clients nil)) ! (bury-buffer buffer))) next-buffer)) --- 254,262 ---- (save-excursion (set-buffer buffer) ! (setq server-buffer-clients nil) ! (run-hooks 'server-done-hook)) ! (if (server-temp-file-p buffer) ! (kill-buffer buffer) ! (bury-buffer buffer)))) next-buffer)) *************** *** 270,274 **** (let ((buffer (current-buffer))) (if server-buffer-clients ! (let (suggested-buffer) (if (server-temp-file-p buffer) ;; For a temp file, save, and do make a non-numeric backup --- 276,280 ---- (let ((buffer (current-buffer))) (if server-buffer-clients ! (progn (if (server-temp-file-p buffer) ;; For a temp file, save, and do make a non-numeric backup *************** *** 276,286 **** (let ((version-control nil) (buffer-backed-up nil)) ! (save-buffer) ! (kill-buffer buffer) ! (setq suggested-buffer (current-buffer))) (if (and (buffer-modified-p) (y-or-n-p (concat "Save file " buffer-file-name "? "))) (save-buffer buffer))) ! (or (server-buffer-done buffer) suggested-buffer))))) ;; If a server buffer is killed, release its client. --- 282,290 ---- (let ((version-control nil) (buffer-backed-up nil)) ! (save-buffer)) (if (and (buffer-modified-p) (y-or-n-p (concat "Save file " buffer-file-name "? "))) (save-buffer buffer))) ! (server-buffer-done buffer))))) ;; If a server buffer is killed, release its client. diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/shell.el emacs-19.24/lisp/shell.el *** emacs-19.23/lisp/shell.el Fri May 6 21:22:19 1994 --- emacs-19.24/lisp/shell.el Sat May 21 20:51:26 1994 *************** *** 811,820 **** a key." (interactive) ! (let ((pmark (process-mark (get-buffer-process (current-buffer)))) ! (ctrl-m (concat (char-to-string 13) "$"))) (save-excursion (goto-char (if (interactive-p) comint-last-input-end comint-last-output-start)) ! (while (re-search-forward ctrl-m pmark t) (replace-match "" t t))))) --- 811,819 ---- a key." (interactive) ! (let ((pmark (process-mark (get-buffer-process (current-buffer))))) (save-excursion (goto-char (if (interactive-p) comint-last-input-end comint-last-output-start)) ! (while (re-search-forward "\r+$" pmark t) (replace-match "" t t))))) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/simple.el emacs-19.24/lisp/simple.el *** emacs-19.23/lisp/simple.el Wed May 11 22:49:11 1994 --- emacs-19.24/lisp/simple.el Fri May 20 18:23:06 1994 *************** *** 2439,2444 **** --- 2439,2452 ---- (let (beg end) (skip-chars-forward "^ \t\n") + (while (looking-at " [^ \n\t]") + (forward-char 1) + (skip-chars-forward "^ \t\n")) (setq end (point)) (skip-chars-backward "^ \t\n") + (while (and (= (preceding-char) ?\ ) + (not (and (> (point) (1+ (point-min))) + (= (char-after (- (point) 2)) ?\ )))) + (backward-char 1) + (skip-chars-backward "^ \t\n")) (setq beg (point)) (choose-completion-string (buffer-substring beg end)))) *************** *** 2451,2457 **** --- 2459,2469 ---- (- (point) (point-min))))) (goto-char (- (point) (length string))) + (if completion-ignore-case + (setq string (downcase string))) (while (and (> len 0) (let ((tail (buffer-substring (point) (+ (point) len)))) + (if completion-ignore-case + (setq tail (downcase tail))) (not (string= tail (substring string 0 len))))) (setq len (1- len)) *************** *** 2507,2512 **** (forward-line 1) (if window-system ! (while (re-search-forward "[^ \t\n]+" nil t) ! (put-text-property (match-beginning 0) (match-end 0) 'mouse-face 'highlight)))))) --- 2519,2524 ---- (forward-line 1) (if window-system ! (while (re-search-forward "[^ \t\n]+\\( [^\t\n]+\\)*" nil t) ! (put-text-property (match-beginning 0) (point) 'mouse-face 'highlight)))))) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/simula.el emacs-19.24/lisp/simula.el *** emacs-19.23/lisp/simula.el Tue Sep 21 03:44:15 1993 --- emacs-19.24/lisp/simula.el Sun May 22 18:00:45 1994 *************** *** 75,79 **** "*Specify how to convert case for SIMULA keywords. Value is one of the symbols `upcase', `downcase', `capitalize', ! (as in) `abbrev-table' or nil if they should not be changed.") (defconst simula-abbrev-stdproc 'abbrev-table --- 75,79 ---- "*Specify how to convert case for SIMULA keywords. Value is one of the symbols `upcase', `downcase', `capitalize', ! \(as in) `abbrev-table' or nil if they should not be changed.") (defconst simula-abbrev-stdproc 'abbrev-table *************** *** 80,84 **** "*Specify how to convert case for standard SIMULA procedure and class names. Value is one of the symbols `upcase', `downcase', `capitalize', ! (as in) `abbrev-table', or nil if they should not be changed.") (defvar simula-abbrev-file nil --- 80,84 ---- "*Specify how to convert case for standard SIMULA procedure and class names. Value is one of the symbols `upcase', `downcase', `capitalize', ! \(as in) `abbrev-table', or nil if they should not be changed.") (defvar simula-abbrev-file nil diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/soundex.el emacs-19.24/lisp/soundex.el *** emacs-19.23/lisp/soundex.el Fri Feb 18 14:44:29 1994 --- emacs-19.24/lisp/soundex.el Tue May 17 18:54:03 1994 *************** *** 31,34 **** --- 31,42 ---- ;;; Code: + (defvar soundex-alist + '((?A . nil) (?E . nil) (?H . nil) (?I . nil) (?O . nil) (?U . nil) + (?W . nil) (?Y . nil) (?B . "1") (?F . "1") (?P . "1") (?V . "1") + (?C . "2") (?G . "2") (?J . "2") (?K . "2") (?Q . "2") (?S . "2") + (?X . "2") (?Z . "2") (?D . "3") (?T . "3") (?L . "4") (?M . "5") + (?N . "5") (?R . "6")) + "Alist of chars-to-key-code for building Soundex keys.") + (defun soundex (word) "Return a Soundex key for WORD. *************** *** 54,65 **** (substring (concat key "000") 0 4) key))) - - (defvar soundex-alist - '((?A . nil) (?E . nil) (?H . nil) (?I . nil) (?O . nil) (?U . nil) - (?W . nil) (?Y . nil) (?B . "1") (?F . "1") (?P . "1") (?V . "1") - (?C . "2") (?G . "2") (?J . "2") (?K . "2") (?Q . "2") (?S . "2") - (?X . "2") (?Z . "2") (?D . "3") (?T . "3") (?L . "4") (?M . "5") - (?N . "5") (?R . "6")) - "Alist of chars-to-key-code for building Soundex keys.") ;(defvar soundex-test --- 62,65 ---- diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/startup.el emacs-19.24/lisp/startup.el *** emacs-19.23/lisp/startup.el Sun May 15 17:47:53 1994 --- emacs-19.24/lisp/startup.el Sat May 21 01:28:15 1994 *************** *** 405,408 **** --- 405,412 ---- (run-hooks 'window-setup-hook)) (setq window-setup-hook nil) + ;; Do this now to avoid an annoying delay if the user + ;; clicks the menu bar during the sit-for. + (precompute-menubar-bindings) + (setq menubar-bindings-done t) (unwind-protect (progn *************** *** 438,446 **** Type \\[describe-distribution] for information on getting the latest version."))) (set-buffer-modified-p nil) - ;; Do this now to avoid an annoying delay if the user - ;; clicks the menu bar during the sit-for. - (sit-for 0) - (precompute-menubar-bindings) - (setq menubar-bindings-done t) (sit-for 120)) (save-excursion --- 442,445 ---- diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/subr.el emacs-19.24/lisp/subr.el *** emacs-19.23/lisp/subr.el Sat May 7 18:48:11 1994 --- emacs-19.24/lisp/subr.el Sun May 22 23:15:15 1994 *************** *** 169,173 **** --- 169,177 ---- (setq skipped (cons (car defn) skipped)) (setq defn (cdr defn))) + ;; Skip past cached key-equivalence data for menu items. + (and (consp defn) (consp (car defn)) + (setq defn (cdr defn))) (setq inner-def defn) + ;; Look past a symbol that names a keymap. (while (and (symbolp inner-def) (fboundp inner-def)) *************** *** 175,181 **** --- 179,188 ---- (if (eq defn olddef) (define-key keymap prefix1 (nconc (nreverse skipped) newdef)) + ;; Avoid recursively rescanning a keymap being scanned. (if (and (keymapp defn) (not (memq inner-def key-substitution-in-progress))) + ;; If this one isn't being scanned already, + ;; scan it now. (substitute-key-definition olddef newdef keymap inner-def *************** *** 196,199 **** --- 203,208 ---- (setq skipped (cons (car defn) skipped)) (setq defn (cdr defn))) + (and (consp defn) (consp (car defn)) + (setq defn (cdr defn))) (setq inner-def defn) (while (and (symbolp inner-def) *************** *** 412,426 **** (nth 2 position)) ! (defsubst posn-col-row (position) "Return the row and column in POSITION, measured in characters. POSITION should be a list of the form (WINDOW BUFFER-POSITION (X . Y) TIMESTAMP) ! as returned by the `event-start' and `event-end' functions." ! (let* ((pair (nth 2 position)) ! (window (posn-window position)) ! (frame (if (framep window) window (window-frame window))) ! (x (/ (car pair) (frame-char-width frame))) ! (y (/ (cdr pair) (frame-char-height frame)))) ! (cons x y))) (defsubst posn-timestamp (position) --- 421,445 ---- (nth 2 position)) ! (defun posn-col-row (position) "Return the row and column in POSITION, measured in characters. POSITION should be a list of the form (WINDOW BUFFER-POSITION (X . Y) TIMESTAMP) ! as returned by the `event-start' and `event-end' functions. ! For a scroll-bar event, the result column is 0, and the row ! corresponds to the vertical position of the click in the scroll bar." ! (let ((pair (nth 2 position)) ! (window (posn-window position))) ! (if (eq (if (symbolp (nth 1 position)) (nth 1 position) ! (car (nth 1 position))) ! 'vertical-scroll-bar) ! (cons 0 (scroll-bar-scale pair (1- (window-height window)))) ! (if (eq (if (symbolp (nth 1 position)) (nth 1 position) ! (car (nth 1 position))) ! 'horizontal-scroll-bar) ! (cons (scroll-bar-scale pair (window-width window)) 0) ! (let* ((frame (if (framep window) window (window-frame window))) ! (x (/ (car pair) (frame-char-width frame))) ! (y (/ (cdr pair) (frame-char-height frame)))) ! (cons x y)))))) (defsubst posn-timestamp (position) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/supercite.el emacs-19.24/lisp/supercite.el *** emacs-19.23/lisp/supercite.el Fri May 6 20:18:09 1994 --- emacs-19.24/lisp/supercite.el Sun May 22 18:00:53 1994 *************** *** 265,269 **** considered bad taste to put any attribution preference key before \"x-attribution\" in this list, except perhaps for \"sc-lastchoice\" ! (see below). Supercite remembers the last attribution used when reciting an already --- 265,269 ---- considered bad taste to put any attribution preference key before \"x-attribution\" in this list, except perhaps for \"sc-lastchoice\" ! \(see below). Supercite remembers the last attribution used when reciting an already diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/term/x-win.el emacs-19.24/lisp/term/x-win.el *** emacs-19.23/lisp/term/x-win.el Tue May 3 18:33:23 1994 --- emacs-19.24/lisp/term/x-win.el Sun May 22 18:13:53 1994 *************** *** 206,210 **** x-invocation args from which the X-related things are extracted, first the switch (e.g., \"-fg\") in the following code, and possible values ! (e.g., \"black\") in the option handler code (e.g., x-handle-switch). This returns ARGS with the arguments that have been processed removed." (setq x-invocation-args args --- 206,210 ---- x-invocation args from which the X-related things are extracted, first the switch (e.g., \"-fg\") in the following code, and possible values ! \(e.g., \"black\") in the option handler code (e.g., x-handle-switch). This returns ARGS with the arguments that have been processed removed." (setq x-invocation-args args diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/tex-mode.el emacs-19.24/lisp/tex-mode.el *** emacs-19.23/lisp/tex-mode.el Tue May 3 18:24:29 1994 --- emacs-19.24/lisp/tex-mode.el Tue May 17 21:09:26 1994 *************** *** 885,891 **** (if tex-last-temp-file (let* ((dir (file-name-directory tex-last-temp-file)) ! (list (file-name-all-completions ! (file-name-nondirectory tex-last-temp-file) dir))) ! (while list (if not-all (and --- 885,892 ---- (if tex-last-temp-file (let* ((dir (file-name-directory tex-last-temp-file)) ! (list (and (file-directory-p dir) ! (file-name-all-completions ! (file-name-nondirectory tex-last-temp-file) dir)))) ! (while list (if not-all (and diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/vc-hooks.el emacs-19.24/lisp/vc-hooks.el *** emacs-19.23/lisp/vc-hooks.el Tue May 10 20:07:07 1994 --- emacs-19.24/lisp/vc-hooks.el Thu May 19 17:58:26 1994 *************** *** 135,160 **** visiting FILE." (interactive (list buffer-file-name nil)) ! (let ((vc-type (vc-backend-deduce file))) ! (setq vc-mode ! (and vc-type ! (concat " " (or label (symbol-name vc-type)) ! (if (and vc-rcs-status (eq vc-type 'RCS)) ! (vc-rcs-status file))))) ! ;; Even root shouldn't modify a registered file without locking it first. ! (and vc-type ! (not buffer-read-only) ! (zerop (user-uid)) ! (require 'vc) ! (not (string-equal (user-login-name) (vc-locking-user file))) ! (setq buffer-read-only t)) ! (and (null vc-type) ! (file-symlink-p file) ! (let ((link-type (vc-backend-deduce (file-symlink-p file)))) ! (if link-type ! (message "Warning: symbolic link to %s-controlled source file" ! link-type)))) ! (force-mode-line-update) ! ;;(set-buffer-modified-p (buffer-modified-p)) ;;use this if Emacs 18 ! vc-type)) (defun vc-rcs-status (file) --- 135,161 ---- visiting FILE." (interactive (list buffer-file-name nil)) ! (if file ! (let ((vc-type (vc-backend-deduce file))) ! (setq vc-mode ! (and vc-type ! (concat " " (or label (symbol-name vc-type)) ! (if (and vc-rcs-status (eq vc-type 'RCS)) ! (vc-rcs-status file))))) ! ;; Even root shouldn't modify a registered file without locking it first. ! (and vc-type ! (not buffer-read-only) ! (zerop (user-uid)) ! (require 'vc) ! (not (string-equal (user-login-name) (vc-locking-user file))) ! (setq buffer-read-only t)) ! (and (null vc-type) ! (file-symlink-p file) ! (let ((link-type (vc-backend-deduce (file-symlink-p file)))) ! (if link-type ! (message "Warning: symbolic link to %s-controlled source file" ! link-type)))) ! (force-mode-line-update) ! ;;(set-buffer-modified-p (buffer-modified-p)) ;;use this if Emacs 18 ! vc-type))) (defun vc-rcs-status (file) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/version.el emacs-19.24/lisp/version.el *** emacs-19.23/lisp/version.el Tue May 17 00:12:41 1994 --- emacs-19.24/lisp/version.el Mon May 23 05:49:38 1994 *************** *** 24,28 **** ;;; Code: ! (defconst emacs-version "19.23" "\ Version numbers of this version of Emacs.") --- 24,28 ---- ;;; Code: ! (defconst emacs-version "19.24" "\ Version numbers of this version of Emacs.") diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/vip.el emacs-19.24/lisp/vip.el *** emacs-19.23/lisp/vip.el Wed Dec 22 23:53:36 1993 --- emacs-19.24/lisp/vip.el Sun May 22 18:01:02 1994 *************** *** 628,632 **** (defun vip-repeat (arg) "(ARG) Re-execute last destructive command. vip-d-com has the form ! (COM ARG CH REG), where COM is the command to be re-executed, ARG is the argument for COM, CH is a flag for repeat, and REG is optional and if exists is the name of the register for COM." --- 628,632 ---- (defun vip-repeat (arg) "(ARG) Re-execute last destructive command. vip-d-com has the form ! \(COM ARG CH REG), where COM is the command to be re-executed, ARG is the argument for COM, CH is a flag for repeat, and REG is optional and if exists is the name of the register for COM." diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lisp/ws-mode.el emacs-19.24/lisp/ws-mode.el *** emacs-19.23/lisp/ws-mode.el Thu Apr 7 16:18:12 1994 --- emacs-19.24/lisp/ws-mode.el Sun May 22 18:01:07 1994 *************** *** 700,704 **** (defun ws-kill-bol () "In WordStar mode: Kill to beginning of line ! (like WordStar, not like Emacs)." (interactive) (let ((p (point))) --- 700,704 ---- (defun ws-kill-bol () "In WordStar mode: Kill to beginning of line ! \(like WordStar, not like Emacs)." (interactive) (let ((p (point))) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lwlib/ChangeLog emacs-19.24/lwlib/ChangeLog *** emacs-19.23/lwlib/ChangeLog Mon May 16 17:02:09 1994 --- emacs-19.24/lwlib/ChangeLog Mon May 23 03:32:09 1994 *************** *** 1,2 **** --- 1,14 ---- + Mon May 23 03:32:01 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.24 released. + + Fri May 20 18:42:58 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * xlwmenu.c (xlwMenuResources): Use XtRDimension for shadow thickness. + + Thu May 19 12:23:39 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * lwlib-Xaw.c (xaw_pop_instance): Use XtSetValues, not XtMoveWidget. + Mon May 16 03:25:22 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lwlib/lwlib-Xaw.c emacs-19.24/lwlib/lwlib-Xaw.c *** emacs-19.23/lwlib/lwlib-Xaw.c Tue Apr 12 12:33:08 1994 --- emacs-19.24/lwlib/lwlib-Xaw.c Thu May 19 12:23:31 1994 *************** *** 223,226 **** --- 223,228 ---- int x, y, w, h; Widget topmost = instance->parent; + Arg args[2]; + w = shell->core.width; h = shell->core.height; *************** *** 231,235 **** if (topmost->core.height < h) y = topmost->core.y; else y = topmost->core.y + ((topmost->core.height - h) / 2); ! XtMoveWidget (shell, x, y); } --- 233,242 ---- if (topmost->core.height < h) y = topmost->core.y; else y = topmost->core.y + ((topmost->core.height - h) / 2); ! /* Using XtMoveWidget caused the widget to come ! out in the wrong place with vtwm. ! Question of virtual vs real coords, perhaps. */ ! XtSetArg (args[0], XtNx, x); ! XtSetArg (args[1], XtNy, y); ! XtSetValues (shell, args, 2); } diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/lwlib/xlwmenu.c emacs-19.24/lwlib/xlwmenu.c *** emacs-19.23/lwlib/xlwmenu.c Mon May 16 16:47:56 1994 --- emacs-19.24/lwlib/xlwmenu.c Fri May 20 18:42:58 1994 *************** *** 56,60 **** offset(menu.arrow_spacing), XtRImmediate, (XtPointer)10}, ! {XmNshadowThickness, XmCShadowThickness, XmRHorizontalDimension, sizeof (Dimension), offset (menu.shadow_thickness), XtRImmediate, (XtPointer) 2}, --- 56,60 ---- offset(menu.arrow_spacing), XtRImmediate, (XtPointer)10}, ! {XmNshadowThickness, XmCShadowThickness, XtRDimension, sizeof (Dimension), offset (menu.shadow_thickness), XtRImmediate, (XtPointer) 2}, diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/man/ChangeLog emacs-19.24/man/ChangeLog *** emacs-19.23/man/ChangeLog Mon May 16 03:26:02 1994 --- emacs-19.24/man/ChangeLog Mon May 23 03:37:06 1994 *************** *** 1,2 **** --- 1,6 ---- + Mon May 23 03:32:01 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.24 released. + Mon May 16 03:25:22 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/man/buffers.texi emacs-19.24/man/buffers.texi *** emacs-19.23/man/buffers.texi Wed Mar 16 12:11:33 1994 --- emacs-19.24/man/buffers.texi Wed May 18 01:55:31 1994 *************** *** 210,215 **** current buffer, another buffer is selected; one that has been selected recently but does not appear in any window now. If you ask to kill a ! buffer that is modified (has unsaved editing), then you must confirm ! with @kbd{yes} before the buffer is killed. The command @kbd{M-x kill-some-buffers} asks about each buffer, one by --- 210,215 ---- current buffer, another buffer is selected; one that has been selected recently but does not appear in any window now. If you ask to kill a ! file-visiting buffer that is modified (has unsaved editing), then you ! must confirm with @kbd{yes} before the buffer is killed. The command @kbd{M-x kill-some-buffers} asks about each buffer, one by diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/man/cmdargs.texi emacs-19.24/man/cmdargs.texi *** emacs-19.23/man/cmdargs.texi Sun May 15 01:06:39 1994 --- emacs-19.24/man/cmdargs.texi Sat May 21 20:25:24 1994 *************** *** 671,674 **** --- 671,675 ---- @node Resources X @appendixsec X Resources + @cindex resources Programs running under the X Window System organize their user options diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/man/emacs.texi emacs-19.24/man/emacs.texi *** emacs-19.23/man/emacs.texi Sat May 14 02:13:09 1994 --- emacs-19.24/man/emacs.texi Fri May 20 05:57:51 1994 *************** *** 4,8 **** @c The edition number appears in several places in this file This corresponds to the ninth edition of the @cite{GNU Emacs Manual}, ! for Emacs Version 19; but it has been updated for Emacs 19.23. @c Please REMEMBER to update edition number in *three* places in this file. --- 4,8 ---- @c The edition number appears in several places in this file This corresponds to the ninth edition of the @cite{GNU Emacs Manual}, ! for Emacs Version 19; but it has been updated for Emacs 19.24. @c Please REMEMBER to update edition number in *three* places in this file. *************** *** 64,72 **** @center @titlefont{GNU Emacs Manual} @sp 4 ! @center Ninth Edition, Emacs version 19.22 @sp 1 @center for Unix Users - @sp 1 - @center Updated May 1994 for 19.23 @sp 5 @center Richard Stallman --- 64,70 ---- @center @titlefont{GNU Emacs Manual} @sp 4 ! @center Ninth Edition, Updated for Emacs version 19.24 @sp 1 @center for Unix Users @sp 5 @center Richard Stallman *************** *** 73,80 **** @page @vskip 0pt plus 1filll ! Copyright @copyright{} 1985, 1986, 1987, 1993 Free Software Foundation, Inc. @sp 2 Ninth Edition @* ! Updated for Emacs Version 19.23, @* ISBN 1-882114-03-5 --- 71,79 ---- @page @vskip 0pt plus 1filll ! Copyright @copyright{} 1985, 1986, 1987, 1993, 1994 Free Software Foundation, Inc. @sp 2 Ninth Edition @* ! Updated for Emacs Version 19.24, @* ! May 1994 ISBN 1-882114-03-5 *************** *** 114,118 **** 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.23. @end ifinfo --- 113,117 ---- 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.24. @end ifinfo diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/man/entering.texi emacs-19.24/man/entering.texi *** emacs-19.23/man/entering.texi Tue May 3 22:47:45 1994 --- emacs-19.24/man/entering.texi Wed May 18 01:54:00 1994 *************** *** 114,122 **** two-character key is used for this to make it harder to type. Unless a numeric argument is used, this command first offers to save any modified ! buffers. If you do not save them all, it asks for reconfirmation with ! @kbd{yes} before killing Emacs, since any changes not saved will be lost ! forever. Also, if any subprocesses are still running, @kbd{C-x C-c} ! asks for confirmation about them, since killing Emacs will kill the ! subprocesses immediately. The operating system usually listens for certain special characters --- 114,122 ---- two-character key is used for this to make it harder to type. Unless a numeric argument is used, this command first offers to save any modified ! file-visiting buffers. If you do not save them all, it asks for ! reconfirmation with @kbd{yes} before killing Emacs, since any changes ! not saved will be lost forever. Also, if any subprocesses are still ! running, @kbd{C-x C-c} asks for confirmation about them, since killing ! Emacs will kill the subprocesses immediately. The operating system usually listens for certain special characters diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/man/fixit.texi emacs-19.24/man/fixit.texi *** emacs-19.23/man/fixit.texi Thu Dec 23 21:09:50 1993 --- emacs-19.24/man/fixit.texi Fri May 20 04:10:16 1994 *************** *** 153,156 **** --- 153,159 ---- word or of a portion of a buffer. These commands work with the spelling checker program Ispell, which is not part of Emacs. + @ifinfo + @xref{Top, Ispell, Overview ispell, The Ispell Manual}. + @end ifinfo @table @kbd *************** *** 161,171 **** @item M-x ispell-region Check and correct spelling of each word in the region. - @item M-x ispell-string @key{RET} @var{word} @key{RET} - Check spelling of @var{word}. @item M-x ispell-complete-word Complete the word before point based on the spelling dictionary. ! @item M-x reload-ispell ! Make the Ispell subprocess reread your private dictionary. ! @item M-x kill-ispell Kill the Ispell subprocess. @end table --- 164,170 ---- @item M-x ispell-region Check and correct spelling of each word in the region. @item M-x ispell-complete-word Complete the word before point based on the spelling dictionary. ! @item M-x ispell-kill-ispell Kill the Ispell subprocess. @end table *************** *** 196,199 **** --- 195,202 ---- Replace the word (just this time) with @var{new}. + @item R @var{new} @key{RET} + Replace the word with @var{new}, and do a @code{query-replace} so you + can replace it elsewhere in the buffer if you wish. + @item @var{digit} Replace the word (just this time) with one of the displayed *************** *** 205,208 **** --- 208,215 ---- editing session. + @item A + Accept the incorrect word---treat it as correct, but only in this + editing session and for this buffer. + @item i Insert this word in your private dictionary file so that Ispell will *************** *** 209,216 **** consider it correct it from now on, even in future sessions. ! @item l @var{regexp} @key{RET} ! Look in the dictionary for words that match @var{regexp}. These words become the new list of ``near-misses''; you can select one of them to ! replace with by typing a digit. @item C-g --- 216,228 ---- consider it correct it from now on, even in future sessions. ! @item m ! Like @kbd{i}, but you can also specify dictionary completion ! information. ! ! @item l @var{word} @key{RET} ! Look in the dictionary for words that match @var{word}. These words become the new list of ``near-misses''; you can select one of them to ! replace with by typing a digit. You can use @samp{*} in @var{word} as a ! wildcard. @item C-g *************** *** 217,220 **** --- 229,239 ---- Quit interactive spell checking. You can restart it again afterward with @kbd{C-u M-$}. + + @item X + Same as @kbd{C-g}. + + @item C-z + This key has its normal command meaning (suspend Emacs or iconify this + frame). @end table *************** *** 221,230 **** @findex ispell-complete-word The command @code{ispell-complete-word}, which is bound to the key ! @kbd{M-@key{TAB}} in Text mode and related modes, performs completion ! based on spelling correction. Insert the beginning of a word, and then ! type @kbd{M-@key{TAB}}; the command inserts as many more letters as can ! be uniquely determined from the letters in the buffer, based on your ! currently loaded dictionaries. @xref{Text Mode}. @findex reload-ispell The first time you use any of the spell checking commands, it starts --- 240,251 ---- @findex ispell-complete-word The command @code{ispell-complete-word}, which is bound to the key ! @kbd{M-@key{TAB}} in Text mode and related modes, shows a list of ! completions based on spelling correction. Insert the beginning of a ! word, and then type @kbd{M-@key{TAB}}; the command displays a completion ! list window. To choose one of the completions listed, click ! @kbd{Mouse-2} on it, or move the cursor there in the completions window ! and type @key{RET}. @xref{Text Mode}. + @ignore @findex reload-ispell The first time you use any of the spell checking commands, it starts *************** *** 235,244 **** replacement procedure. Use the @kbd{M-x reload-ispell} command to reload your private dictionary if you edit the file outside of Ispell. @cindex @code{ispell} program ! @findex kill-ispell Once started, the Ispell subprocess continues to run (waiting for something to do), so that subsequent spell checking commands complete more quickly. If you want to get rid of the Ispell process, use ! @kbd{M-x kill-ispell}. This is not usually necessary, since the process ! uses no time except when you do spelling correction. --- 256,266 ---- replacement procedure. Use the @kbd{M-x reload-ispell} command to reload your private dictionary if you edit the file outside of Ispell. + @end ignore @cindex @code{ispell} program ! @findex ispell-kill-ispell Once started, the Ispell subprocess continues to run (waiting for something to do), so that subsequent spell checking commands complete more quickly. If you want to get rid of the Ispell process, use ! @kbd{M-x ispell-kill-ispell}. This is not usually necessary, since the ! process uses no time except when you do spelling correction. diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/man/trouble.texi emacs-19.24/man/trouble.texi *** emacs-19.23/man/trouble.texi Fri May 13 14:42:04 1994 --- emacs-19.24/man/trouble.texi Thu May 19 20:02:41 1994 *************** *** 382,386 **** If you'd like to read the bug reports, you can find them on the ! newsgroup @samp{gnu.emacs.bugs}; keep in mind, however, that as a spectator you should not criticize anything about what you see there. The purpose of bug reports is to give information to the Emacs --- 382,386 ---- If you'd like to read the bug reports, you can find them on the ! newsgroup @samp{gnu.emacs.bug}; keep in mind, however, that as a spectator you should not criticize anything about what you see there. The purpose of bug reports is to give information to the Emacs diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/msdos/ChangeLog emacs-19.24/msdos/ChangeLog *** emacs-19.23/msdos/ChangeLog Mon May 16 15:28:41 1994 --- emacs-19.24/msdos/ChangeLog Sun May 22 12:25:25 1994 *************** *** 1,2 **** --- 1,12 ---- + Sun May 22 17:12:14 1994 Morten Welinder (terra@diku.dk) + + * sed1.inp: Adding dos-fns.elc to the set of lisp files was moved + to src/makefile.in.in. + + Fri May 20 20:32:07 1994 Morten Welinder (terra@tyr.diku.dk) + + * sed2.inp: Reflect change from CONFIGURATION to EMACS_CONFIGURATION. + Also set it to correct three-part value. + Mon May 16 19:47:53 1994 Morten Welinder (terra@tyr.diku.dk) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/msdos/sed1.inp emacs-19.24/msdos/sed1.inp *** emacs-19.23/msdos/sed1.inp Mon May 16 15:27:51 1994 --- emacs-19.24/msdos/sed1.inp Sun May 22 12:25:07 1994 *************** *** 6,10 **** s/^ / / /^obj=/s!$! dosfns.o msdos.o! - /window.elc/s!window.elc!window.elc ${lispdir}dos-fns.elc! s/\.h\.in/.h-in/ s!^ \./temacs! go32 temacs! --- 6,9 ---- diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/msdos/sed2.inp emacs-19.24/msdos/sed2.inp *** emacs-19.23/msdos/sed2.inp Sat Apr 30 16:27:03 1994 --- emacs-19.24/msdos/sed2.inp Fri May 20 19:17:08 1994 *************** *** 25,29 **** s/^#define USER_FULL_NAME .*$/#define USER_FULL_NAME (getenv ("NAME"))/ s/^#undef STACK_DIRECTION *$/#define STACK_DIRECTION -1/ ! s/^#undef CONFIGURATION *$/#define CONFIGURATION "msdos"/ s!^#undef config_opsysfile *$!#define config_opsysfile "s/msdos.h"! s!^#undef config_machfile *$!#define config_machfile "m/dos386.h"! --- 25,29 ---- s/^#define USER_FULL_NAME .*$/#define USER_FULL_NAME (getenv ("NAME"))/ s/^#undef STACK_DIRECTION *$/#define STACK_DIRECTION -1/ ! s/^#undef EMACS_CONFIGURATION *$/#define EMACS_CONFIGURATION "i386-unknown-msdos"/ s!^#undef config_opsysfile *$!#define config_opsysfile "s/msdos.h"! s!^#undef config_machfile *$!#define config_machfile "m/dos386.h"! diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/oldXMenu/ChangeLog emacs-19.24/oldXMenu/ChangeLog *** emacs-19.23/oldXMenu/ChangeLog Tue May 17 19:31:20 1994 --- emacs-19.24/oldXMenu/ChangeLog Mon May 23 03:32:38 1994 *************** *** 1,2 **** --- 1,6 ---- + Mon May 23 03:32:01 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.24 released. + Tue May 17 19:30:30 1994 Karl Heuer (kwzh@hal.gnu.ai.mit.edu) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/ChangeLog emacs-19.24/src/ChangeLog *** emacs-19.23/src/ChangeLog Tue May 17 03:23:54 1994 --- emacs-19.24/src/ChangeLog Mon May 23 16:09:31 1994 *************** *** 1,2 **** --- 1,185 ---- + Mon May 23 00:38:44 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.24 released. + + * s/hpux8.h (LD_SWITCH_SYSTEM): Put back -Xlinker for GCC. + + * Makefile.in.in (LIBXT): Move -lXmu before -lXt. + + * term.c (update_end): Undo previous change. + + * frame.c (other_visible_frames): No longer static. + + * window.c (window_loop): Fix test of dedicated flag in prev change. + + * window.c (window_loop, UNSHOW_BUFFER case): + Put prev change in #ifdef MULTI_FRAME. + + * keyboard.c (menu_bar_one_keymap): + When there's no item string, use Qnil. + Don't ever put `undefined' into the list of definitions. + + Sun May 22 16:16:32 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * window.c (window_loop, UNSHOW_BUFFER case): Kill a special frame. + + * xterm.c (x_set_window_size): If cursor outside new size, mark it off. + * dispnew.c (change_frame_size): Keep cursor coords in range. + + * s/linux.h (HAVE_GETTIMEOFDAY, HAVE_MKDIR, HAVE_RMDIR) + (HAVE_XSCREENNUMBEROFSCREEN): Define these if not already defined. + + Sun May 22 16:36:34 1994 Morten Welinder (terra@diku.dk) + + * unexec.c [MSDOS]: Don't include files from the dos extender + and debugger. Use the that was put in the right place + a couple of djgpp versions ago. Consequently, use `unsigned short' + for `word16' and `unsigned long' for `word32'. + + Sun May 22 04:22:16 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * xterm.c (note_mouse_highlight): Handle case of highlight extending + past end of window. + (fast_find_position): Fix bugs when no text on screen + and when the mouse is on an empty line. + + * s/hpux9shr.h: New file. + + * s/hpux8.h (LD_SWITCH_SYSTEM): Add conditionals for HPUX_USE_SHLIBS. + Delete explicit -Xlinker in GCC case. + + * unexhp9k800.c: Include config.h. + [HPUX_USE_SHLIBS]: Include dl.h. + (brk_on_dump): New variable. + (unexec): Set brk_on_dump. + (copy_file): Change buffer size to 8192. + + * window.c (change_window_height): Test for DELTA too small + only after making it smaller based on maxdelta. + + Sat May 21 19:16:03 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * fileio.c (Fdelete_directory): Allow dir names as well as file names. + + * Makefile.in.in (${etc}DOC): Ignore error from rm. + (MSDOS_SUPPORT): New variable. + (lisp): Use MSDOS_SUPPORT. + + * s/freebsd.h (A_TEXT_OFFSET, A_TEXT_SEEK): Commented out. + + Fri May 20 21:10:58 1994 Karl Heuer (kwzh@hal.gnu.ai.mit.edu) + + * xfns.c (x_set_background_color): Set scroll bar backgrounds. + + Fri May 20 18:57:09 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * xterm.c (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues. + (x_iconify_frame) [USE_X_TOOLKIT]: New code for invisible window case. + (XtNinitialState) [USE_X_TOOLKIT]: New #define. + (x_make_frame_invisible): Mostly combine toolkit/non-toolkit cases, + in the process fixing a dumb bug. + + Fri May 20 12:16:00 1994 Michael I Bushnell (mib@geech.gnu.ai.mit.edu) + + * lread.c (openp): Only lusers assume that O_RDONLY == 0. + + Fri May 20 01:28:59 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile.in.in (UNEXEC_ALIAS): New variable, used + to make the unex...o target. + + * xfaces.c (Fset_face_attribute_internal): Always return valid data. + + * textprop.c (syms_of_textprop): Set up Lisp fn get-char-property. + + Thu May 19 16:57:10 1994 Andreas Schwab (schwab@issan.informatik.uni-dortmund.de) + + * fileio.c (Finsert_file_contents): Declare buffer as unsigned + char. When comparing with file size convert same_at_start to + distance to buffer start. If the file matches the buffer + contents truncate the buffer to the size of the file. + + Thu May 19 18:03:26 1994 Jim Blandy (jimb@totoro.bio.indiana.edu) + + * keyboard.c (read_char_minibuf_menu_prompt): Don't forget to + initialize nobindings. + + Thu May 19 00:11:34 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile.in.in (ORDINARY_LINK): Define by default + if __GNU_LIBRARY__ and not LINUX. + + * s/isc4-0.h (EXTRA_INITIALIZE): Definition deleted. + + * s/isc3-0.h (EXTRA_INITIALIZE): Define here. + + * keyboard.c (lispy_function_keys): Add `backtab'. + + * frame.c (syms_of_frame): Set up frame-first-window as Lisp fn. + + * indent.c: Add "args" to dummy definition of compute-motion. + + * sysdep.c [BROKEN_TIOCGWINSZ]: Undef TIOCSWINSZ too. + + * Makefile.in.in (FRAME_SUPPORT): Add menu-bar.el. + + * dispnew.c: Include errno.h. + + * widget.c (EmacsFrameSetCharSize): Once again preserve x and y pos, + but not the same way as before. + + * xmenu.c (other_menu_bar_item_p): Return 0 if no menu bar. + + * fileio.c (Fwrite_region): Set update_mode_lines. + + * xmenu.c (xmenu_show): Don't look in menubar for core.height + if no menu bar. + + * xterm.c (x_iconify_frame): Fix error messages. + + Wed May 18 01:36:22 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * dispnew.c (PENDING_OUTPUT_COUNT): If __GNU_LIBRARY__, + use GNU_LIBRARY_PENDING_OUTPUT_COUNT if defined. + + * keyboard.c (lispy_function_keys): Add various kp- keys for X11R6. + + * fileio.c (syms_of_fileio): Doc fix. + + * s/linux.h (GNU_LIBRARY_PENDING_OUTPUT_COUNT): Both definitions + renamed from PENDING_OUTPUT_COUNT. + + * process.c (create_process): Don't complain about error + from TIOCSETD. + + * window.c (Fset_window_buffer): Fix dedicated window error call. + (window_loop, case UNSHOW_BUFFER): Clear dedicated flag. + + * fileio.c (Finsert_file_contents): Declare `buffer' as unsigned char. + + * dispnew.c: Include systime.h after xterm.h. + + * m/tek4300.h (WORDS_BIG_ENDIAN): Define this, not BIG_ENDIAN. + + * emacs.c (syms_of_emacs), config.h.in: + EMACS_CONFIGURATION renamed from CONFIGURATION. + + Tue May 17 18:57:20 1994 Andreas Schwab (schwab@issan.informatik.uni-dortmund.de) + + * eval.c (Fbacktrace): Properly nest parentheses. + (Fbacktrace_frame): Don't bomb on invalid frame number. + + Tue May 17 05:41:51 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * keyboard.c (command_loop_1): Fix test for valid display table entry, + for backwards motion. + + * Makefile.in.in (ALL_LDFLAGS): Add LDFLAGS. + (MAKE): Don't override a previous value of MAKE set by configure. + + * dispnew.c (update_frame): Fix test of outq and baud_rate. + + * emacs.c (shut_down_emacs): Don't call intern. + Tue May 17 03:23:39 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/Makefile.in.in emacs-19.24/src/Makefile.in.in *** emacs-19.23/src/Makefile.in.in Fri May 13 16:40:38 1994 --- emacs-19.24/src/Makefile.in.in Mon May 23 05:25:14 1994 *************** *** 75,80 **** #ifdef MAKE_COMMAND MAKE = MAKE_COMMAND - #else - MAKE=make #endif --- 75,78 ---- *************** *** 83,86 **** --- 81,92 ---- #endif + /* GNU libc requires ORDINARY_LINK so that its own crt0 is used. + Linux is an exception because it uses a funny variant of GNU libc. */ + #ifdef __GNU_LIBRARY__ + #ifndef LINUX + #define ORDINARY_LINK + #endif + #endif + /* Some machines don't find the standard C libraries in the usual place. */ #ifndef ORDINARY_LINK *************** *** 310,314 **** #endif ! LIBXT= $(LIBW) -lXt $(LIBXTR6) -lXmu -lXext #else LIBXT= --- 316,320 ---- #endif ! LIBXT= $(LIBW) -lXmu -lXt $(LIBXTR6) -lXext #else LIBXT= *************** *** 396,400 **** #endif /* not ORDINARY_LINK */ ! ALL_LDFLAGS = LD_SWITCH_SYSTEM LD_SWITCH_MACHINE LD_SWITCH_SITE /* A macro which other sections of ymakefile can redefine to munge the --- 402,406 ---- #endif /* not ORDINARY_LINK */ ! ALL_LDFLAGS = LD_SWITCH_SYSTEM LD_SWITCH_MACHINE LD_SWITCH_SITE $(LDFLAGS) /* A macro which other sections of ymakefile can redefine to munge the *************** *** 502,506 **** #ifdef MULTI_FRAME ! #define FRAME_SUPPORT ${lispdir}frame.elc ${lispdir}mouse.elc ${lispdir}select.elc ${lispdir}scroll-bar.elc #else #define FRAME_SUPPORT --- 508,513 ---- #ifdef MULTI_FRAME ! #define FRAME_SUPPORT ${lispdir}frame.elc ${lispdir}menu-bar.elc \ ! ${lispdir}mouse.elc ${lispdir}select.elc ${lispdir}scroll-bar.elc #else #define FRAME_SUPPORT *************** *** 519,522 **** --- 526,535 ---- #endif + #ifdef MSDOS + #define MSDOS_SUPPORT ${lispdir}ls-lisp.elc ${lispdir}disp-tab.elc ${lispdir}dos-fns.elc ${lispdir}mouse.elc + #else + #define MSDOS_SUPPORT + #endif + /* List of Lisp files loaded into the dumped Emacs. It's arranged like this because it's easier to generate it semi-mechanically from *************** *** 554,557 **** --- 567,571 ---- ${lispdir}vc-hooks.elc \ VMS_SUPPORT \ + MSDOS_SUPPORT \ ${lispdir}window.elc \ ${lispdir}version.el *************** *** 594,598 **** ${etc}DOC: ${libsrc}make-docfile ${obj} ${lisp} ! rm -f ${etc}DOC ${libsrc}make-docfile -d ${srcdir} ${obj} ${SOME_MACHINE_OBJECTS} \ ${lisp} > ${etc}DOC --- 608,612 ---- ${etc}DOC: ${libsrc}make-docfile ${obj} ${lisp} ! -rm -f ${etc}DOC ${libsrc}make-docfile -d ${srcdir} ${obj} ${SOME_MACHINE_OBJECTS} \ ${lisp} > ${etc}DOC *************** *** 811,815 **** tparam.o : tparam.c $(config_h) undo.o : undo.c buffer.h commands.h $(config_h) ! UNEXEC : UNEXEC_SRC $(config_h) widget.o : widget.c xterm.h frame.h dispextern.h widgetprv.h $(config_h) window.o : window.c indent.h commands.h frame.h window.h buffer.h termchar.h \ --- 825,832 ---- tparam.o : tparam.c $(config_h) undo.o : undo.c buffer.h commands.h $(config_h) ! /* This hack is to discard any space that cpp might put at the beginning ! of UNEXEC when substituting it in. */ ! UNEXEC_ALIAS=UNEXEC ! $(UNEXEC_ALIAS) : UNEXEC_SRC $(config_h) widget.o : widget.c xterm.h frame.h dispextern.h widgetprv.h $(config_h) window.o : window.c indent.h commands.h frame.h window.h buffer.h termchar.h \ diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/config.h.in emacs-19.24/src/config.h.in *** emacs-19.23/src/config.h.in Fri May 13 17:00:31 1994 --- emacs-19.24/src/config.h.in Wed May 18 01:36:15 1994 *************** *** 151,155 **** #endif ! #undef CONFIGURATION /* The configuration script defines opsysfile to be the name of the --- 151,155 ---- #endif ! #undef EMACS_CONFIGURATION /* The configuration script defines opsysfile to be the name of the diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/dispnew.c emacs-19.24/src/dispnew.c *** emacs-19.23/src/dispnew.c Tue May 10 18:40:50 1994 --- emacs-19.24/src/dispnew.c Sun May 22 17:41:28 1994 *************** *** 46,49 **** --- 46,51 ---- #endif /* HAVE_X_WINDOWS */ + #include + #define max(a, b) ((a) > (b) ? (a) : (b)) #define min(a, b) ((a) < (b) ? (a) : (b)) *************** *** 56,62 **** the system's C library. But we are using the GNU C library, so this is the right definition for every system. */ #undef PENDING_OUTPUT_COUNT #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->__bufp - (FILE)->__buffer) ! #else #ifndef PENDING_OUTPUT_COUNT #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_ptr - (FILE)->_base) --- 58,68 ---- the system's C library. But we are using the GNU C library, so this is the right definition for every system. */ + #ifdef GNU_LIBRARY_PENDING_OUTPUT_COUNT + #define PENDING_OUTPUT_COUNT GNU_LIBRARY_PENDING_OUTPUT_COUNT + #else #undef PENDING_OUTPUT_COUNT #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->__bufp - (FILE)->__buffer) ! #endif ! #else /* not __GNU_LIBRARY__ */ #ifndef PENDING_OUTPUT_COUNT #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_ptr - (FILE)->_base) *************** *** 1259,1263 **** #endif outq *= 10; ! if (baud_rate >= outq) sleep (outq / baud_rate); } --- 1265,1269 ---- #endif outq *= 10; ! if (baud_rate <= outq && baud_rate > 0) sleep (outq / baud_rate); } *************** *** 2020,2024 **** FRAME_HEIGHT (frame) = newheight; FRAME_WIDTH (frame) = newwidth; ! remake_frame_glyphs (frame); calculate_costs (frame); --- 2026,2035 ---- FRAME_HEIGHT (frame) = newheight; FRAME_WIDTH (frame) = newwidth; ! ! if (FRAME_CURSOR_X (frame) >= FRAME_WIDTH (frame)) ! FRAME_CURSOR_X (frame) = FRAME_WIDTH (frame) - 1; ! if (FRAME_CURSOR_Y (frame) >= FRAME_HEIGHT (frame)) ! FRAME_CURSOR_Y (frame) = FRAME_HEIGHT (frame) - 1; ! remake_frame_glyphs (frame); calculate_costs (frame); diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/emacs.c emacs-19.24/src/emacs.c *** emacs-19.23/src/emacs.c Fri May 13 03:17:54 1994 --- emacs-19.24/src/emacs.c Wed May 18 01:36:48 1994 *************** *** 851,855 **** #ifdef HAVE_X_WINDOWS ! if (!noninteractive && EQ (Vwindow_system, intern ("x")) && ! no_x) Fx_close_current_connection (); #endif /* HAVE_X_WINDOWS */ --- 851,859 ---- #ifdef HAVE_X_WINDOWS ! /* It's not safe to call intern here. Maybe we are crashing. */ ! if (!noninteractive && SYMBOLP (Vwindow_system) ! && XSYMBOL (Vwindow_system)->name->size == 1 ! && XSYMBOL (Vwindow_system)->name->data[0] == 'x' ! && ! no_x) Fx_close_current_connection (); #endif /* HAVE_X_WINDOWS */ *************** *** 1009,1013 **** DEFVAR_LISP ("system-configuration", &Vsystem_configuration, "Value is string indicating configuration Emacs was built for."); ! Vsystem_configuration = build_string (CONFIGURATION); DEFVAR_BOOL ("noninteractive", &noninteractive1, --- 1013,1017 ---- DEFVAR_LISP ("system-configuration", &Vsystem_configuration, "Value is string indicating configuration Emacs was built for."); ! Vsystem_configuration = build_string (EMACS_CONFIGURATION); DEFVAR_BOOL ("noninteractive", &noninteractive1, diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/eval.c emacs-19.24/src/eval.c *** emacs-19.23/src/eval.c Mon May 16 05:40:55 1994 --- emacs-19.24/src/eval.c Tue May 17 18:56:50 1994 *************** *** 2409,2412 **** --- 2409,2413 ---- { Fprin1 (Fcons (*backlist->function, *backlist->args), Qnil); + write_string ("\n", -1); } else *************** *** 2433,2438 **** } } } - write_string (")\n", -1); backlist = backlist->next; } --- 2434,2439 ---- } } + write_string (")\n", -1); } backlist = backlist->next; } *************** *** 2463,2467 **** /* Find the frame requested. */ ! for (i = 0; i < XFASTINT (nframes); i++) backlist = backlist->next; --- 2464,2468 ---- /* Find the frame requested. */ ! for (i = 0; backlist && i < XFASTINT (nframes); i++) backlist = backlist->next; diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/fileio.c emacs-19.24/src/fileio.c *** emacs-19.23/src/fileio.c Sat May 14 16:51:55 1994 --- emacs-19.24/src/fileio.c Sat May 21 21:40:43 1994 *************** *** 1857,1861 **** DEFUN ("delete-directory", Fdelete_directory, Sdelete_directory, 1, 1, "FDelete directory: ", ! "Delete a directory. One argument, a file name string.") (dirname) Lisp_Object dirname; --- 1857,1861 ---- DEFUN ("delete-directory", Fdelete_directory, Sdelete_directory, 1, 1, "FDelete directory: ", ! "Delete a directory. One argument, a file name or directory name string.") (dirname) Lisp_Object dirname; *************** *** 1865,1869 **** CHECK_STRING (dirname, 0); ! dirname = Fexpand_file_name (dirname, Qnil); dir = XSTRING (dirname)->data; --- 1865,1869 ---- CHECK_STRING (dirname, 0); ! dirname = Fdirectory_file_name (Fexpand_file_name (dirname, Qnil)); dir = XSTRING (dirname)->data; *************** *** 2664,2668 **** if (!NILP (replace)) { ! char buffer[1 << 14]; int same_at_start = BEGV; int same_at_end = ZV; --- 2664,2668 ---- if (!NILP (replace)) { ! unsigned char buffer[1 << 14]; int same_at_start = BEGV; int same_at_end = ZV; *************** *** 2695,2702 **** /* If the file matches the buffer completely, there's no need to replace anything. */ ! if (same_at_start == st.st_size) { close (fd); specpdl_ptr--; goto handled; } --- 2695,2704 ---- /* If the file matches the buffer completely, there's no need to replace anything. */ ! if (same_at_start - BEGV == st.st_size) { close (fd); specpdl_ptr--; + /* Truncate the buffer to the size of the file. */ + del_range_1 (same_at_start, same_at_end, 0); goto handled; } *************** *** 3220,3223 **** --- 3222,3226 ---- XFASTINT (current_buffer->save_length) = Z - BEG; current_buffer->filename = visit_file; + update_mode_lines++; } else if (quietly) *************** *** 4057,4061 **** DEFVAR_LISP ("inhibit-file-name-handlers", &Vinhibit_file_name_handlers, ! "A list of file names for which handlers should not be used.\n\ This applies only to the operation `inhibit-file-name-operation'."); Vinhibit_file_name_handlers = Qnil; --- 4060,4064 ---- DEFVAR_LISP ("inhibit-file-name-handlers", &Vinhibit_file_name_handlers, ! "A list of file name handlers that temporarily should not be used.\n\ This applies only to the operation `inhibit-file-name-operation'."); Vinhibit_file_name_handlers = Qnil; diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/frame.c emacs-19.24/src/frame.c *** emacs-19.23/src/frame.c Thu May 5 00:35:58 1994 --- emacs-19.24/src/frame.c Mon May 23 01:35:46 1994 *************** *** 733,737 **** (Exception: if F is the terminal frame, and we are using X, return 1.) */ ! static int other_visible_frames (f) FRAME_PTR f; --- 733,737 ---- (Exception: if F is the terminal frame, and we are using X, return 1.) */ ! int other_visible_frames (f) FRAME_PTR f; *************** *** 1724,1727 **** --- 1724,1728 ---- defsubr (&Swindow_frame); defsubr (&Sframe_root_window); + defsubr (&Sframe_first_window); defsubr (&Sframe_selected_window); defsubr (&Sset_frame_selected_window); diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/indent.c emacs-19.24/src/indent.c *** emacs-19.23/src/indent.c Tue May 3 21:55:27 1994 --- emacs-19.24/src/indent.c Thu May 19 17:48:50 1994 *************** *** 653,656 **** --- 653,657 ---- Pass the buffer's (point-max) as TO, to limit the scan to the end of the\n\ visible section of the buffer, and pass LINE and COL as TOPOS.") + (from, frompos, to, topos, width, offsets, window) #endif diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/keyboard.c emacs-19.24/src/keyboard.c *** emacs-19.23/src/keyboard.c Sat May 14 18:15:29 1994 --- emacs-19.24/src/keyboard.c Mon May 23 02:32:38 1994 *************** *** 1103,1107 **** lose = FETCH_CHAR (PT); if ((dp ! ? (XTYPE (DISP_CHAR_VECTOR (dp, lose)) != Lisp_Vector && XVECTOR (DISP_CHAR_VECTOR (dp, lose))->size == 1) : (lose >= 0x20 && lose < 0x7f)) --- 1103,1107 ---- lose = FETCH_CHAR (PT); if ((dp ! ? (VECTORP (DISP_CHAR_VECTOR (dp, lose)) && XVECTOR (DISP_CHAR_VECTOR (dp, lose))->size == 1) : (lose >= 0x20 && lose < 0x7f)) *************** *** 2358,2362 **** "break", /* 0xff6b */ ! 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xff76 */ 0, 0, 0, 0, 0, 0, 0, 0, "kp-numlock", /* 0xff7f */ --- 2358,2362 ---- "break", /* 0xff6b */ ! 0, 0, 0, 0, 0, 0, 0, 0, "backtab", 0, 0, /* 0xff76 */ 0, 0, 0, 0, 0, 0, 0, 0, "kp-numlock", /* 0xff7f */ *************** *** 2371,2376 **** "kp-f3", "kp-f4", ! 0, /* 0xff95 */ ! 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "kp-multiply", /* 0xffaa */ "kp-add", --- 2371,2387 ---- "kp-f3", "kp-f4", ! "kp-home", /* 0xff95 */ ! "kp-left", ! "kp-up", ! "kp-right", ! "kp-down", ! "kp-prior", /* kp-page-up */ ! "kp-next", /* kp-page-down */ ! "kp-end", ! "kp-begin", ! "kp-insert", ! "kp-delete", ! 0, /* 0xffa0 */ ! 0, 0, 0, 0, 0, 0, 0, 0, 0, "kp-multiply", /* 0xffaa */ "kp-add", *************** *** 3748,3752 **** } else if (EQ (binding, Qundefined)) ! menu_bar_item (key, item_string, binding); } else if (XTYPE (item) == Lisp_Vector) --- 3759,3763 ---- } else if (EQ (binding, Qundefined)) ! menu_bar_item (key, Qnil, binding); } else if (XTYPE (item) == Lisp_Vector) *************** *** 3767,3771 **** } else if (EQ (binding, Qundefined)) ! menu_bar_item (key, item_string, binding); } } --- 3778,3782 ---- } else if (EQ (binding, Qundefined)) ! menu_bar_item (key, Qnil, binding); } } *************** *** 3808,3811 **** --- 3819,3826 ---- return; } + + /* If there's no definition for this key yet, + just ignore `undefined'. */ + return; } *************** *** 3963,3967 **** char *menu = (char *) alloca (width + 4); int idx = -1; ! int nobindings ; Lisp_Object rest, vector; --- 3978,3982 ---- char *menu = (char *) alloca (width + 4); int idx = -1; ! int nobindings = 1; Lisp_Object rest, vector; diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/lread.c emacs-19.24/src/lread.c *** emacs-19.23/src/lread.c Tue May 3 22:05:23 1994 --- emacs-19.24/src/lread.c Fri May 20 12:15:53 1994 *************** *** 1,4 **** /* Lisp parsing and input streams. ! Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993, 1994 Free Software Foundation, Inc. --- 1,4 ---- /* Lisp parsing and input streams. ! Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993, 1994 Free Software Foundation, Inc. *************** *** 563,567 **** fd = (access (fn, X_OK) == 0) ? 1 : -1; else ! fd = open (fn, 0, 0); if (fd >= 0) --- 563,567 ---- fd = (access (fn, X_OK) == 0) ? 1 : -1; else ! fd = open (fn, O_RDONLY, 0); if (fd >= 0) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/m/tek4300.h emacs-19.24/src/m/tek4300.h *** emacs-19.23/src/m/tek4300.h Sun Nov 28 06:33:44 1993 --- emacs-19.24/src/m/tek4300.h Wed May 18 01:50:08 1994 *************** *** 34,39 **** /* 68000 has lowest-numbered byte as most significant */ ! /* This value matches the value the system gives it. */ ! #define BIG_ENDIAN 4321 /* Define NO_ARG_ARRAY if you cannot take the address of the first of a --- 34,38 ---- /* 68000 has lowest-numbered byte as most significant */ ! #define WORDS_BIG_ENDIAN /* Define NO_ARG_ARRAY if you cannot take the address of the first of a diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/process.c emacs-19.24/src/process.c *** emacs-19.23/src/process.c Sat May 14 18:12:46 1994 --- emacs-19.24/src/process.c Sat May 21 03:29:04 1994 *************** *** 1319,1324 **** /* Use new line discipline. */ int ldisc = NTTYDISC; ! if (ioctl (xforkin, TIOCSETD, &ldisc) < 0) ! write (1, "create_process/TIOCSETD failed\n", 31); } #endif --- 1319,1323 ---- /* Use new line discipline. */ int ldisc = NTTYDISC; ! ioctl (xforkin, TIOCSETD, &ldisc); } #endif diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/s/freebsd.h emacs-19.24/src/s/freebsd.h *** emacs-19.23/src/s/freebsd.h Thu May 5 15:18:25 1994 --- emacs-19.24/src/s/freebsd.h Sat May 21 19:16:00 1994 *************** *** 30,35 **** --- 30,39 ---- #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base) + #if 0 /* These appear to be unnecessary for 1.1, and they break + emacs when compiled under FreeBSD-1.0. + Shawn M. Carey */ #define A_TEXT_OFFSET(x) (sizeof (struct exec)) #define A_TEXT_SEEK(hdr) (N_TXTOFF(hdr) + A_TEXT_OFFSET(hdr)) + #endif #define LIBS_DEBUG diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/s/hpux8.h emacs-19.24/src/s/hpux8.h *** emacs-19.23/src/s/hpux8.h Thu Feb 3 01:07:04 1994 --- emacs-19.24/src/s/hpux8.h Mon May 23 12:07:41 1994 *************** *** 19,39 **** conflicting -a. */ #ifdef __GNUC__ - #define LD_SWITCH_SYSTEM -Xlinker -a -Xlinker archive - /* No need to specify roundabout way of linking temacs. */ #define ORDINARY_LINK ! #else ! #if defined(hp9000s700) || defined(__hp9000s700) ! #define LD_SWITCH_SYSTEM -a archive -L/lib/pa1.1 #else ! #define LD_SWITCH_SYSTEM -a archive ! #endif #endif ! #if 0 /* This should no longer be necessary now that ! C_SWITCH_... are passed down when compiling oldXMenu. */ ! /* Specify compiler options for compiling oldXMenu. */ ! #define OLDXMENU_OPTIONS CFLAGS="-I/usr/include/X11R5 -I/usr/include/X11R4" #endif /* Some hpux 8 machines seem to have TIOCGWINSZ, --- 19,46 ---- conflicting -a. */ #ifdef __GNUC__ /* No need to specify roundabout way of linking temacs. */ #define ORDINARY_LINK ! ! #ifdef HPUX_USE_SHLIBS ! #define LD_SWITCH_SYSTEM -L/usr/lib/X11R5 -L/usr/lib/X11R4 #else ! #define LD_SWITCH_SYSTEM -Xlinker -a -Xlinker archive -L/usr/lib/X11R5 -L/usr/lib/X11R4 #endif ! #else /* not __GNUC__ */ ! #if (defined(hp9000s700) || defined(__hp9000s700)) ! #ifdef HPUX_USE_SHLIBS ! #define LD_SWITCH_SYSTEM -L/lib/pa1.1 -L/usr/lib/X11R5 -L/usr/lib/X11R4 ! #else ! #define LD_SWITCH_SYSTEM -a archive -L/lib/pa1.1 -L/usr/lib/X11R5 -L/usr/lib/X11R4 ! #endif ! #else /* not (defined(hp9000s700) || defined(__hp9000s700)) */ ! #ifdef HPUX_USE_SHLIBS ! #define LD_SWITCH_SYSTEM -L/usr/lib/X11R5 -L/usr/lib/X11R4 ! #else ! #define LD_SWITCH_SYSTEM -a archive -L/usr/lib/X11R5 -L/usr/lib/X11R4 #endif + #endif /* not (defined(hp9000s700) || defined(__hp9000s700)) */ + #endif /* not __GNUC__ */ /* Some hpux 8 machines seem to have TIOCGWINSZ, diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/s/hpux9shr.h emacs-19.24/src/s/hpux9shr.h *** emacs-19.23/src/s/hpux9shr.h --- emacs-19.24/src/s/hpux9shr.h Sun May 22 05:22:25 1994 *************** *** 0 **** --- 1,5 ---- + #define ORDINARY_LINK + #define HPUX_USE_SHLIBS + #define RUN_TIME_REMAP + + #include "hpux9.h" diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/s/isc3-0.h emacs-19.24/src/s/isc3-0.h *** emacs-19.23/src/s/isc3-0.h Sat Jul 31 01:36:24 1993 --- emacs-19.24/src/s/isc3-0.h Thu May 19 19:30:25 1994 *************** *** 30,31 **** --- 30,35 ---- and parens would screw up the prototype decl for memmove. */ #define memmove(d, s, n) safe_bcopy (s, d, n) + + /* This works around a bug in ISC 4.0 and 3.0; it fails + to clear the "POSIX process" flag on an exec. */ + #define EXTRA_INITIALIZE __setostype (0) diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/s/isc4-0.h emacs-19.24/src/s/isc4-0.h *** emacs-19.23/src/s/isc4-0.h Wed May 4 19:26:59 1994 --- emacs-19.24/src/s/isc4-0.h Thu May 19 19:31:02 1994 *************** *** 3,10 **** #include "isc3-0.h" - /* This works around a bug in ISC 4.0; it fails - to clear the "POSIX process" flag on an exec. */ - #define EXTRA_INITIALIZE __setostype (0) - #define LIBS_SYSTEM -linet --- 3,6 ---- diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/s/linux.h emacs-19.24/src/s/linux.h *** emacs-19.23/src/s/linux.h Tue May 3 22:20:20 1994 --- emacs-19.24/src/s/linux.h Sun May 22 16:16:23 1994 *************** *** 159,167 **** #ifdef _IO_STDIO_H /* new C libio names */ ! #define PENDING_OUTPUT_COUNT(FILE) \ ((FILE)->_IO_write_ptr - (FILE)->_IO_write_base) #else /* !_IO_STDIO_H */ /* old C++ iostream names */ ! #define PENDING_OUTPUT_COUNT(FILE) \ ((FILE)->_pptr - (FILE)->_pbase) #endif /* !_IO_STDIO_H */ --- 159,167 ---- #ifdef _IO_STDIO_H /* new C libio names */ ! #define GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE) \ ((FILE)->_IO_write_ptr - (FILE)->_IO_write_base) #else /* !_IO_STDIO_H */ /* old C++ iostream names */ ! #define GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE) \ ((FILE)->_pptr - (FILE)->_pbase) #endif /* !_IO_STDIO_H */ *************** *** 240,241 **** --- 240,257 ---- #define ADJUST_EXEC_HEADER \ unexec_text_start = N_TXTADDR(ohdr) + A_TEXT_OFFSET(ohdr) + + /* In 19.23 and 19.24, configure sometimes fails to define these. + It has to do with the fact that configure uses CFLAGS when linking + while Makefile.in.in (erroneously) fails to do so when linking temacs. */ + #ifndef HAVE_GETTIMEOFDAY + #define HAVE_GETTIMEOFDAY + #endif + #ifndef HAVE_MKDIR + #define HAVE_MKDIR + #endif + #ifndef HAVE_RMDIR + #define HAVE_RMDIR + #endif + #ifndef HAVE_XSCREENNUMBEROFSCREEN + #define HAVE_XSCREENNUMBEROFSCREEN + #endif diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/search.c emacs-19.24/src/search.c *** emacs-19.23/src/search.c Tue May 3 22:08:22 1994 --- emacs-19.24/src/search.c Sun May 22 23:57:24 1994 *************** *** 1236,1240 **** case_action = all_caps; /* Capitalize each word, if the old text has all capitalized words. */ ! else if (!some_lowercase_initial && some_multiletter_word) case_action = cap_initial; else --- 1236,1243 ---- case_action = all_caps; /* Capitalize each word, if the old text has all capitalized words. */ ! /* We used to insist on some_multiletter_word here, ! but that screwed query replacing x with y, acting on X. ! Even what we have now is more strict than what 19.22 had. */ ! else if (!some_lowercase_initial) case_action = cap_initial; else diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/sysdep.c emacs-19.24/src/sysdep.c *** emacs-19.23/src/sysdep.c Fri May 13 03:16:43 1994 --- emacs-19.24/src/sysdep.c Thu May 19 16:25:10 1994 *************** *** 126,129 **** --- 126,130 ---- #ifdef BROKEN_TIOCGWINSZ #undef TIOCGWINSZ + #undef TIOCSWINSZ #endif diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/term.c emacs-19.24/src/term.c *** emacs-19.23/src/term.c Fri Apr 8 02:51:31 1994 --- emacs-19.24/src/term.c Mon May 23 01:54:23 1994 *************** *** 344,349 **** if (! FRAME_TERMCAP_P (updating_frame)) { - updating_frame = 0; (*update_end_hook) (f); return; } --- 344,349 ---- if (! FRAME_TERMCAP_P (updating_frame)) { (*update_end_hook) (f); + updating_frame = 0; return; } diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/textprop.c emacs-19.24/src/textprop.c *** emacs-19.23/src/textprop.c Tue May 3 22:05:47 1994 --- emacs-19.24/src/textprop.c Fri May 20 01:29:01 1994 *************** *** 1371,1374 **** --- 1371,1375 ---- defsubr (&Stext_properties_at); defsubr (&Sget_text_property); + defsubr (&Sget_char_property); defsubr (&Snext_property_change); defsubr (&Snext_single_property_change); diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/unexec.c emacs-19.24/src/unexec.c *** emacs-19.23/src/unexec.c Tue May 3 22:26:24 1994 --- emacs-19.24/src/unexec.c Sun May 22 15:50:06 1994 *************** *** 178,183 **** #else #ifdef MSDOS ! #include <../go32/gotypes.h> ! #include <../go32/ed/coff.h> #define filehdr external_filehdr #define scnhdr external_scnhdr --- 178,182 ---- #else #ifdef MSDOS ! #include #define filehdr external_filehdr #define scnhdr external_scnhdr *************** *** 188,199 **** struct aouthdr { ! word16 magic; /* type of file */ ! word16 vstamp; /* version stamp */ ! word32 tsize; /* text size in bytes, padded to FW bdry*/ ! word32 dsize; /* initialized data " " */ ! word32 bsize; /* uninitialized data " " */ ! word32 entry; /* entry pt. */ ! word32 text_start; /* base of text used for this file */ ! word32 data_start; /* base of data used for this file */ }; --- 187,198 ---- struct aouthdr { ! unsigned short magic; /* type of file */ ! unsigned short vstamp; /* version stamp */ ! unsigned long tsize; /* text size in bytes, padded to FW bdry*/ ! unsigned long dsize; /* initialized data " " */ ! unsigned long bsize; /* uninitialized data " " */ ! unsigned long entry; /* entry pt. */ ! unsigned long text_start;/* base of text used for this file */ ! unsigned long data_start;/* base of data used for this file */ }; diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/unexhp9k800.c emacs-19.24/src/unexhp9k800.c *** emacs-19.23/src/unexhp9k800.c Sat Sep 11 21:21:33 1993 --- emacs-19.24/src/unexhp9k800.c Sun May 22 05:10:13 1994 *************** *** 33,39 **** the new process starts up. ! void _sigreturn(); ... ! sigsetreturn(_sigreturn); */ --- 33,39 ---- the new process starts up. ! void _sigreturn (); ... ! sigsetreturn (_sigreturn); */ *************** *** 44,55 **** #include ! #define NBPG 2048 ! #define roundup(x,n) ( ( (x)+(n-1) ) & ~(n-1) ) /* n is power of 2 */ ! #define min(x,y) ( ((x)<(y))?(x):(y) ) /* Create a new a.out file, same as old but with current data space */ ! unexec(new_name, old_name, new_end_of_text, dummy1, dummy2) char new_name[]; /* name of the new a.out file to be created */ char old_name[]; /* name of the old a.out file */ --- 44,74 ---- #include ! #ifdef emacs ! #include ! #endif ! ! #ifdef HPUX_USE_SHLIBS ! #include ! #endif ! ! /* brk value to restore, stored as a global. ! This is really used only if we used shared libraries. */ ! static long brk_on_dump = 0; ! ! /* Called from main, if we use shared libraries. */ ! int ! run_time_remap (ignored) ! char *ignored; ! { ! brk (brk_on_dump); ! } + #define roundup(x,n) (((x) + ((n) - 1)) & ~((n) - 1)) /* n is power of 2 */ + #define min(x,y) (((x) < (y)) ? (x) : (y)) + /* Create a new a.out file, same as old but with current data space */ ! unexec (new_name, old_name, new_end_of_text, dummy1, dummy2) char new_name[]; /* name of the new a.out file to be created */ char old_name[]; /* name of the old a.out file */ *************** *** 71,83 **** /* Open the input and output a.out files */ ! old = open(old_name, O_RDONLY); if (old < 0) ! { perror(old_name); exit(1); } ! new = open(new_name, O_CREAT|O_RDWR|O_TRUNC, 0777); if (new < 0) ! { perror(new_name); exit(1); } /* Read the old headers */ ! read_header(old, &hdr, &auxhdr); /* Decide how large the new and old data areas are */ --- 90,104 ---- /* Open the input and output a.out files */ ! old = open (old_name, O_RDONLY); if (old < 0) ! { perror (old_name); exit (1); } ! new = open (new_name, O_CREAT|O_RDWR|O_TRUNC, 0777); if (new < 0) ! { perror (new_name); exit (1); } /* Read the old headers */ ! read_header (old, &hdr, &auxhdr); ! ! brk_on_dump = sbrk (0); /* Decide how large the new and old data areas are */ *************** *** 89,111 **** /* Copy the old file to the new, up to the data space */ ! lseek(old, 0, 0); ! copy_file(old, new, auxhdr.exec_dfile); /* Skip the old data segment and write a new one */ ! lseek(old, old_size, 1); ! save_data_space(new, &hdr, &auxhdr, new_size); /* Copy the rest of the file */ ! copy_rest(old, new); /* Update file pointers since we probably changed size of data area */ ! update_file_ptrs(new, &hdr, &auxhdr, auxhdr.exec_dfile, new_size-old_size); /* Save the modified header */ ! write_header(new, &hdr, &auxhdr); /* Close the binary file */ ! close(old); ! close(new); return 0; } --- 110,132 ---- /* Copy the old file to the new, up to the data space */ ! lseek (old, 0, 0); ! copy_file (old, new, auxhdr.exec_dfile); /* Skip the old data segment and write a new one */ ! lseek (old, old_size, 1); ! save_data_space (new, &hdr, &auxhdr, new_size); /* Copy the rest of the file */ ! copy_rest (old, new); /* Update file pointers since we probably changed size of data area */ ! update_file_ptrs (new, &hdr, &auxhdr, auxhdr.exec_dfile, new_size-old_size); /* Save the modified header */ ! write_header (new, &hdr, &auxhdr); /* Close the binary file */ ! close (old); ! close (new); return 0; } *************** *** 113,117 **** /* Save current data space in the file, update header. */ ! save_data_space(file, hdr, auxhdr, size) int file; struct header *hdr; --- 134,138 ---- /* Save current data space in the file, update header. */ ! save_data_space (file, hdr, auxhdr, size) int file; struct header *hdr; *************** *** 120,125 **** { /* Write the entire data space out to the file */ ! if (write(file, auxhdr->exec_dmem, size) != size) ! { perror("Can't save new data space"); exit(1); } /* Update the header to reflect the new data size */ --- 141,146 ---- { /* Write the entire data space out to the file */ ! if (write (file, auxhdr->exec_dmem, size) != size) ! { perror ("Can't save new data space"); exit (1); } /* Update the header to reflect the new data size */ *************** *** 130,134 **** /* Update the values of file pointers when something is inserted. */ ! update_file_ptrs(file, hdr, auxhdr, location, offset) int file; struct header *hdr; --- 151,155 ---- /* Update the values of file pointers when something is inserted. */ ! update_file_ptrs (file, hdr, auxhdr, location, offset) int file; struct header *hdr; *************** *** 145,165 **** /* Update the various file pointers in the header */ #define update(ptr) if (ptr > location) ptr = ptr + offset ! update(hdr->aux_header_location); ! update(hdr->space_strings_location); ! update(hdr->init_array_location); ! update(hdr->compiler_location); ! update(hdr->symbol_location); ! update(hdr->fixup_request_location); ! update(hdr->symbol_strings_location); ! update(hdr->unloadable_sp_location); ! update(auxhdr->exec_tfile); ! update(auxhdr->exec_dfile); /* Do for each subspace dictionary entry */ ! lseek(file, hdr->subspace_location, 0); for (i = 0; i < hdr->subspace_total; i++) { ! if (read(file, &subspace, sizeof(subspace)) != sizeof(subspace)) ! { perror("Can't read subspace record"); exit(1); } /* If subspace has a file location, update it */ --- 166,186 ---- /* Update the various file pointers in the header */ #define update(ptr) if (ptr > location) ptr = ptr + offset ! update (hdr->aux_header_location); ! update (hdr->space_strings_location); ! update (hdr->init_array_location); ! update (hdr->compiler_location); ! update (hdr->symbol_location); ! update (hdr->fixup_request_location); ! update (hdr->symbol_strings_location); ! update (hdr->unloadable_sp_location); ! update (auxhdr->exec_tfile); ! update (auxhdr->exec_dfile); /* Do for each subspace dictionary entry */ ! lseek (file, hdr->subspace_location, 0); for (i = 0; i < hdr->subspace_total; i++) { ! if (read (file, &subspace, sizeof (subspace)) != sizeof (subspace)) ! { perror ("Can't read subspace record"); exit (1); } /* If subspace has a file location, update it */ *************** *** 168,174 **** { subspace.file_loc_init_value += offset; ! lseek(file, -sizeof(subspace), 1); ! if (write(file, &subspace, sizeof(subspace)) != sizeof(subspace)) ! { perror("Can't update subspace record"); exit(1); } } } --- 189,195 ---- { subspace.file_loc_init_value += offset; ! lseek (file, -sizeof (subspace), 1); ! if (write (file, &subspace, sizeof (subspace)) != sizeof (subspace)) ! { perror ("Can't update subspace record"); exit (1); } } } *************** *** 181,185 **** /* Read in the header records from an a.out file. */ ! read_header(file, hdr, auxhdr) int file; struct header *hdr; --- 202,206 ---- /* Read in the header records from an a.out file. */ ! read_header (file, hdr, auxhdr) int file; struct header *hdr; *************** *** 188,194 **** /* Read the header in */ ! lseek(file, 0, 0); ! if (read(file, hdr, sizeof(*hdr)) != sizeof(*hdr)) ! { perror("Couldn't read header from a.out file"); exit(1); } if (hdr->a_magic != EXEC_MAGIC && hdr->a_magic != SHARE_MAGIC --- 209,215 ---- /* Read the header in */ ! lseek (file, 0, 0); ! if (read (file, hdr, sizeof (*hdr)) != sizeof (*hdr)) ! { perror ("Couldn't read header from a.out file"); exit (1); } if (hdr->a_magic != EXEC_MAGIC && hdr->a_magic != SHARE_MAGIC *************** *** 195,207 **** && hdr->a_magic != DEMAND_MAGIC) { ! fprintf(stderr, "a.out file doesn't have legal magic number\n"); ! exit(1); } ! lseek(file, hdr->aux_header_location, 0); ! if (read(file, auxhdr, sizeof(*auxhdr)) != sizeof(*auxhdr)) { ! perror("Couldn't read auxiliary header from a.out file"); ! exit(1); } } --- 216,228 ---- && hdr->a_magic != DEMAND_MAGIC) { ! fprintf (stderr, "a.out file doesn't have legal magic number\n"); ! exit (1); } ! lseek (file, hdr->aux_header_location, 0); ! if (read (file, auxhdr, sizeof (*auxhdr)) != sizeof (*auxhdr)) { ! perror ("Couldn't read auxiliary header from a.out file"); ! exit (1); } } *************** *** 209,213 **** /* Write out the header records into an a.out file. */ ! write_header(file, hdr, auxhdr) int file; struct header *hdr; --- 230,234 ---- /* Write out the header records into an a.out file. */ ! write_header (file, hdr, auxhdr) int file; struct header *hdr; *************** *** 215,227 **** { /* Update the checksum */ ! hdr->checksum = calculate_checksum(hdr); /* Write the header back into the a.out file */ ! lseek(file, 0, 0); ! if (write(file, hdr, sizeof(*hdr)) != sizeof(*hdr)) ! { perror("Couldn't write header to a.out file"); exit(1); } ! lseek(file, hdr->aux_header_location, 0); ! if (write(file, auxhdr, sizeof(*auxhdr)) != sizeof(*auxhdr)) ! { perror("Couldn't write auxiliary header to a.out file"); exit(1); } } --- 236,248 ---- { /* Update the checksum */ ! hdr->checksum = calculate_checksum (hdr); /* Write the header back into the a.out file */ ! lseek (file, 0, 0); ! if (write (file, hdr, sizeof (*hdr)) != sizeof (*hdr)) ! { perror ("Couldn't write header to a.out file"); exit (1); } ! lseek (file, hdr->aux_header_location, 0); ! if (write (file, auxhdr, sizeof (*auxhdr)) != sizeof (*auxhdr)) ! { perror ("Couldn't write auxiliary header to a.out file"); exit (1); } } *************** *** 228,232 **** /* Calculate the checksum of a SOM header record. */ ! calculate_checksum(hdr) struct header *hdr; { --- 249,253 ---- /* Calculate the checksum of a SOM header record. */ ! calculate_checksum (hdr) struct header *hdr; { *************** *** 235,242 **** checksum = 0; ptr = (int *) hdr; ! for (i=0; i 0; size -= len) { ! len = min(size, sizeof(buffer)); ! if (read(old, buffer, len) != len) ! { perror("Read failure on a.out file"); exit(1); } ! if (write(new, buffer, len) != len) ! { perror("Write failure in a.out file"); exit(1); } } } --- 269,281 ---- { int len; ! int buffer[8192]; /* word aligned will be faster */ for (; size > 0; size -= len) { ! len = min (size, sizeof (buffer)); ! if (read (old, buffer, len) != len) ! { perror ("Read failure on a.out file"); exit (1); } ! if (write (new, buffer, len) != len) ! { perror ("Write failure in a.out file"); exit (1); } } } *************** *** 262,266 **** /* Copy the rest of the file, up to EOF. */ ! copy_rest(old, new) int new, old; { --- 283,287 ---- /* Copy the rest of the file, up to EOF. */ ! copy_rest (old, new) int new, old; { *************** *** 269,281 **** /* Copy bytes until end of file or error */ ! while ( (len = read(old, buffer, sizeof(buffer))) > 0) ! if (write(new, buffer, len) != len) break; if (len != 0) ! { perror("Unable to copy the rest of the file"); exit(1); } } #ifdef DEBUG ! display_header(hdr, auxhdr) struct header *hdr; struct som_exec_auxhdr *auxhdr; --- 290,302 ---- /* Copy bytes until end of file or error */ ! while ((len = read (old, buffer, sizeof (buffer))) > 0) ! if (write (new, buffer, len) != len) break; if (len != 0) ! { perror ("Unable to copy the rest of the file"); exit (1); } } #ifdef DEBUG ! display_header (hdr, auxhdr) struct header *hdr; struct som_exec_auxhdr *auxhdr; *************** *** 282,297 **** { /* Display the header information (debug) */ ! printf("\n\nFILE HEADER\n"); ! printf("magic number %d \n", hdr->a_magic); ! printf("text loc %.8x size %d \n", auxhdr->exec_tmem, auxhdr->exec_tsize); ! printf("data loc %.8x size %d \n", auxhdr->exec_dmem, auxhdr->exec_dsize); ! printf("entry %x \n", auxhdr->exec_entry); ! printf("Bss segment size %u\n", auxhdr->exec_bsize); ! printf("\n"); ! printf("data file loc %d size %d\n", ! auxhdr->exec_dfile, auxhdr->exec_dsize); ! printf("som_length %d\n", hdr->som_length); ! printf("unloadable sploc %d size %d\n", ! hdr->unloadable_sp_location, hdr->unloadable_sp_size); } #endif /* DEBUG */ --- 303,318 ---- { /* Display the header information (debug) */ ! printf ("\n\nFILE HEADER\n"); ! printf ("magic number %d \n", hdr->a_magic); ! printf ("text loc %.8x size %d \n", auxhdr->exec_tmem, auxhdr->exec_tsize); ! printf ("data loc %.8x size %d \n", auxhdr->exec_dmem, auxhdr->exec_dsize); ! printf ("entry %x \n", auxhdr->exec_entry); ! printf ("Bss segment size %u\n", auxhdr->exec_bsize); ! printf ("\n"); ! printf ("data file loc %d size %d\n", ! auxhdr->exec_dfile, auxhdr->exec_dsize); ! printf ("som_length %d\n", hdr->som_length); ! printf ("unloadable sploc %d size %d\n", ! hdr->unloadable_sp_location, hdr->unloadable_sp_size); } #endif /* DEBUG */ diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/widget.c emacs-19.24/src/widget.c *** emacs-19.23/src/widget.c Thu May 19 14:32:29 1994 --- emacs-19.24/src/widget.c Thu May 19 14:33:31 1994 *************** *** 895,898 **** --- 895,901 ---- int hdelta = pixel_height - ew->core.height; int column_widget_height = f->display.x->column_widget->core.height; + int old_left = f->display.x->widget->core.x; + int old_top = f->display.x->widget->core.y; + XawPanedSetRefigureMode (f->display.x->column_widget, False); *************** *** 908,911 **** --- 911,918 ---- XawPanedSetRefigureMode (f->display.x->column_widget, True); + + /* These seem to get clobbered. I don't know why. - rms. */ + f->display.x->widget->core.x = old_left; + f->display.x->widget->core.y = old_top; } diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/window.c emacs-19.24/src/window.c *** emacs-19.23/src/window.c Fri May 13 04:41:40 1994 --- emacs-19.24/src/window.c Mon May 23 16:09:01 1994 *************** *** 1253,1260 **** struct window *best_window_ptr = XWINDOW (best_window); struct window *w_ptr = XWINDOW (w); ! if (NILP (best_window) || ! (XFASTINT (w_ptr->height) * XFASTINT (w_ptr->width)) ! > (XFASTINT (best_window_ptr->height) ! * XFASTINT (best_window_ptr->width))) best_window = w; } --- 1253,1260 ---- struct window *best_window_ptr = XWINDOW (best_window); struct window *w_ptr = XWINDOW (w); ! if (NILP (best_window) ! || (XFASTINT (w_ptr->height) * XFASTINT (w_ptr->width) ! > (XFASTINT (best_window_ptr->height) ! * XFASTINT (best_window_ptr->width)))) best_window = w; } *************** *** 1266,1269 **** --- 1266,1270 ---- /* Find another buffer to show in this window. */ Lisp_Object another_buffer; + FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (w))); another_buffer = Fother_buffer (obj, Qnil); if (NILP (another_buffer)) *************** *** 1270,1276 **** another_buffer = Fget_buffer_create (build_string ("*scratch*")); ! Fset_window_buffer (w, another_buffer); ! if (EQ (w, selected_window)) ! Fset_buffer (XWINDOW (w)->buffer); } break; --- 1271,1290 ---- another_buffer = Fget_buffer_create (build_string ("*scratch*")); ! #ifdef MULTI_FRAME ! /* If this window is dedicated, and in a frame of its own, ! kill the frame. */ ! if (EQ (w, FRAME_ROOT_WINDOW (f)) ! && !NILP (XWINDOW (w)->dedicated) ! && other_visible_frames (f)) ! Fdelete_frame (WINDOW_FRAME (XWINDOW (w)), Qnil); ! else ! #endif ! { ! /* Otherwise show a different buffer in the window. */ ! XWINDOW (w)->dedicated = Qnil; ! Fset_window_buffer (w, another_buffer); ! if (EQ (w, selected_window)) ! Fset_buffer (XWINDOW (w)->buffer); ! } } break; *************** *** 1627,1631 **** { if (!NILP (w->dedicated) && !EQ (tem, buffer)) ! error ("Window is dedicated to %s\n", tem); unshow_buffer (w); --- 1641,1646 ---- { if (!NILP (w->dedicated) && !EQ (tem, buffer)) ! error ("Window is dedicated to `%s'", ! XSTRING (XBUFFER (tem)->name)->data); unshow_buffer (w); *************** *** 2071,2080 **** sizep = &CURSIZE (window); - if (*sizep + delta < MINSIZE (window)) - { - Fdelete_window (window); - return; - } - { register int maxdelta; --- 2086,2089 ---- *************** *** 2092,2102 **** minibuffer the full frame. */ delta = maxdelta; ! if (delta == 0) return; ! } ! if (!NILP (p->next) && ! (*sizefun) (p->next) - delta >= MINSIZE (p->next)) { (*setsizefun) (p->next, (*sizefun) (p->next) - delta, 0); --- 2101,2117 ---- minibuffer the full frame. */ delta = maxdelta; + } ! if (*sizep + delta < MINSIZE (window)) ! { ! Fdelete_window (window); return; ! } ! ! if (delta == 0) ! return; ! if (!NILP (p->next) ! && (*sizefun) (p->next) - delta >= MINSIZE (p->next)) { (*setsizefun) (p->next, (*sizefun) (p->next) - delta, 0); *************** *** 2107,2112 **** (*setsizefun) (p->next, (*sizefun) (p->next), 0); } ! else if (!NILP (p->prev) && ! (*sizefun) (p->prev) - delta >= MINSIZE (p->prev)) { (*setsizefun) (p->prev, (*sizefun) (p->prev) - delta, 0); --- 2122,2127 ---- (*setsizefun) (p->next, (*sizefun) (p->next), 0); } ! else if (!NILP (p->prev) ! && (*sizefun) (p->prev) - delta >= MINSIZE (p->prev)) { (*setsizefun) (p->prev, (*sizefun) (p->prev) - delta, 0); *************** *** 2712,2717 **** save the location of point in the buffer which was current when the window configuration was recorded. */ ! if (!EQ (p->buffer, new_current_buffer) && ! XBUFFER (p->buffer) == current_buffer) Fgoto_char (w->pointm); } --- 2727,2732 ---- save the location of point in the buffer which was current when the window configuration was recorded. */ ! if (!EQ (p->buffer, new_current_buffer) ! && XBUFFER (p->buffer) == current_buffer) Fgoto_char (w->pointm); } diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/xfaces.c emacs-19.24/src/xfaces.c *** emacs-19.23/src/xfaces.c Tue May 3 22:07:52 1994 --- emacs-19.24/src/xfaces.c Fri May 20 01:32:12 1994 *************** *** 976,980 **** if (! FRAME_X_P (f)) ! return; ensure_face_ready (f, id); --- 976,980 ---- if (! FRAME_X_P (f)) ! return Qnil; ensure_face_ready (f, id); diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/xfns.c emacs-19.24/src/xfns.c *** emacs-19.23/src/xfns.c Sun May 15 00:15:26 1994 --- emacs-19.24/src/xfns.c Fri May 20 21:10:15 1994 *************** *** 731,735 **** XSetWindowBackground (x_current_display, FRAME_X_WINDOW (f), f->display.x->background_pixel); ! #else temp = XMakeTile (f->display.x->background_pixel); --- 731,742 ---- XSetWindowBackground (x_current_display, FRAME_X_WINDOW (f), f->display.x->background_pixel); ! { ! Lisp_Object bar; ! for (bar = FRAME_SCROLL_BARS (f); !NILP (bar); ! bar = XSCROLL_BAR (bar)->next) ! XSetWindowBackground (x_current_display, ! SCROLL_BAR_X_WINDOW (XSCROLL_BAR (bar)), ! f->display.x->background_pixel); ! } #else temp = XMakeTile (f->display.x->background_pixel); diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/xmenu.c emacs-19.24/src/xmenu.c *** emacs-19.23/src/xmenu.c Mon May 16 23:32:44 1994 --- emacs-19.24/src/xmenu.c Mon May 23 02:24:08 1994 *************** *** 1270,1273 **** --- 1270,1274 ---- { return (y >= 0 + && f->display.x->menubar_widget != 0 && y < f->display.x->menubar_widget->core.height && x >= 0 *************** *** 1428,1434 **** /* Offset the coordinates to root-relative. */ XtTranslateCoords (f->display.x->widget, ! x, y + f->display.x->menubar_widget->core.height, ! &root_x, &root_y); x = root_x; y = root_y; --- 1429,1436 ---- /* Offset the coordinates to root-relative. */ + if (f->display.x->menubar_widget != 0) + y += f->display.x->menubar_widget->core.height; XtTranslateCoords (f->display.x->widget, ! x, y, &root_x, &root_y); x = root_x; y = root_y; diff -rc2 --unidirect --exclude-from=/gd2/gnu/emacs/exceptions emacs-19.23/src/xterm.c emacs-19.24/src/xterm.c *** emacs-19.23/src/xterm.c Sun May 15 17:29:45 1994 --- emacs-19.24/src/xterm.c Sun May 22 17:30:16 1994 *************** *** 97,100 **** --- 97,106 ---- #endif + #ifdef USE_X_TOOLKIT + #ifndef XtNinitialState + #define XtNinitialState "initialState" + #endif + #endif + #ifdef HAVE_X11 #define XMapWindow XMapRaised /* Raise them when mapping. */ *************** *** 279,282 **** --- 285,289 ---- static int mouse_face_beg_row, mouse_face_beg_col; static int mouse_face_end_row, mouse_face_end_col; + static int mouse_face_past_end; static Lisp_Object mouse_face_window; static int mouse_face_face_id; *************** *** 2179,2183 **** && row <= mouse_face_end_row && (row > mouse_face_beg_row || column >= mouse_face_beg_col) ! && (row < mouse_face_end_row || column < mouse_face_end_col))) { Lisp_Object mouse_face, overlay, position; --- 2186,2191 ---- && row <= mouse_face_end_row && (row > mouse_face_beg_row || column >= mouse_face_beg_col) ! && (row < mouse_face_end_row || column < mouse_face_end_col ! || mouse_face_past_end))) { Lisp_Object mouse_face, overlay, position; *************** *** 2241,2248 **** after = Foverlay_end (overlay); /* Record this as the current active region. */ ! fast_find_position (window, before, ! &mouse_face_beg_col, &mouse_face_beg_row); ! fast_find_position (window, after, ! &mouse_face_end_col, &mouse_face_end_row); mouse_face_window = window; mouse_face_face_id = compute_char_face (f, w, pos, 0, 0, --- 2249,2257 ---- after = Foverlay_end (overlay); /* Record this as the current active region. */ ! fast_find_position (window, before, &mouse_face_beg_col, ! &mouse_face_beg_row); ! mouse_face_past_end ! = !fast_find_position (window, after, &mouse_face_end_col, ! &mouse_face_end_row); mouse_face_window = window; mouse_face_face_id = compute_char_face (f, w, pos, 0, 0, *************** *** 2272,2279 **** w->buffer, end); /* Record this as the current active region. */ ! fast_find_position (window, before, ! &mouse_face_beg_col, &mouse_face_beg_row); ! fast_find_position (window, after, ! &mouse_face_end_col, &mouse_face_end_row); mouse_face_window = window; mouse_face_face_id --- 2281,2289 ---- w->buffer, end); /* Record this as the current active region. */ ! fast_find_position (window, before, &mouse_face_beg_col, ! &mouse_face_beg_row); ! mouse_face_past_end ! = !fast_find_position (window, after, &mouse_face_end_col, ! &mouse_face_end_row); mouse_face_window = window; mouse_face_face_id *************** *** 2296,2300 **** If POS is above start of WINDOW, return coords of start of first screen line. ! If POS is after end of WINDOW, return coords of end of last screen line. */ static int --- 2306,2312 ---- If POS is above start of WINDOW, return coords of start of first screen line. ! If POS is after end of WINDOW, return coords of end of last screen line. ! ! Value is 1 if POS is in range, 0 if it was off screen. */ static int *************** *** 2307,2311 **** FRAME_PTR f = XFRAME (WINDOW_FRAME (w)); int i; ! int row; int left = w->left; int top = w->top; --- 2319,2323 ---- FRAME_PTR f = XFRAME (WINDOW_FRAME (w)); int i; ! int row = 0; int left = w->left; int top = w->top; *************** *** 2315,2318 **** --- 2327,2331 ---- int lastcol; + /* Find the right row. */ for (i = 0; i < height; *************** *** 2326,2329 **** --- 2339,2343 ---- } + /* Find the right column with in it. */ charstarts = FRAME_CURRENT_GLYPHS (f)->charstarts[top + row]; lastcol = left; *************** *** 2337,2340 **** --- 2351,2356 ---- } else if (charstarts[left + i] > pos) + break; + else if (charstarts[left + i] > 0) lastcol = left + i; } *************** *** 5314,5317 **** --- 5330,5341 ---- PIXEL_HEIGHT (f) = pixelheight; + /* If cursor was outside the new size, mark it as off. */ + if (f->phys_cursor_y >= rows + || f->phys_cursor_x >= cols) + { + f->phys_cursor_x = -1; + f->phys_cursor_y = -1; + } + /* We've set {FRAME,PIXEL}_{WIDTH,HEIGHT} to the values we hope to receive in the ConfigureNotify event; if we get what we asked *************** *** 5506,5510 **** --- 5530,5542 ---- { int mask; + Window window; + #ifdef USE_X_TOOLKIT + /* Use the frame's outermost window, not the one we normally draw on. */ + window = XtWindow (f->display.x->widget); + #else /* not USE_X_TOOLKIT */ + window = FRAME_X_WINDOW (f); + #endif /* not USE_X_TOOLKIT */ + /* Don't keep the highlight on an invisible frame. */ if (x_highlight_frame == f) *************** *** 5527,5542 **** #ifdef HAVE_X11R4 ! #ifdef USE_X_TOOLKIT ! if (! XWithdrawWindow (x_current_display, XtWindow (f->display.x->widget), DefaultScreen (x_current_display))) - #else /* not USE_X_TOOLKIT */ - if (! XWithdrawWindow (x_current_display, FRAME_X_WINDOW (f), - DefaultScreen (x_current_display))) { UNBLOCK_INPUT_RESIGNAL; ! error ("can't notify window manager of window withdrawal"); } - #endif /* not USE_X_TOOLKIT */ - #else /* ! defined (HAVE_X11R4) */ #ifdef HAVE_X11 --- 5559,5568 ---- #ifdef HAVE_X11R4 ! if (! XWithdrawWindow (x_current_display, window, DefaultScreen (x_current_display))) { UNBLOCK_INPUT_RESIGNAL; ! error ("Can't notify window manager of window withdrawal"); } #else /* ! defined (HAVE_X11R4) */ #ifdef HAVE_X11 *************** *** 5548,5556 **** unmap.xunmap.type = UnmapNotify; ! #ifdef USE_X_TOOLKIT ! unmap.xunmap.window = XtWindow (f->display.x->widget); ! #else /* not USE_X_TOOLKIT */ ! unmap.xunmap.window = FRAME_X_WINDOW (f); ! #endif /* not USE_X_TOOLKIT */ unmap.xunmap.event = DefaultRootWindow (x_current_display); unmap.xunmap.from_configure = False; --- 5574,5578 ---- unmap.xunmap.type = UnmapNotify; ! unmap.xunmap.window = window; unmap.xunmap.event = DefaultRootWindow (x_current_display); unmap.xunmap.from_configure = False; *************** *** 5562,5566 **** { UNBLOCK_INPUT_RESIGNAL; ! error ("can't notify window manager of withdrawal"); } } --- 5584,5588 ---- { UNBLOCK_INPUT_RESIGNAL; ! error ("Can't notify window manager of withdrawal"); } } *************** *** 5567,5575 **** /* Unmap the window ourselves. Cheeky! */ ! #ifdef USE_X_TOOLKIT ! XUnmapWindow (x_current_display, XtWindow (f->display.x->widget)); ! #else /* not USE_X_TOOLKIT */ ! XUnmapWindow (x_current_display, FRAME_X_WINDOW (f)); ! #endif /* not USE_X_TOOLKIT */ #else /* ! defined (HAVE_X11) */ --- 5589,5593 ---- /* Unmap the window ourselves. Cheeky! */ ! XUnmapWindow (x_current_display, window); #else /* ! defined (HAVE_X11) */ *************** *** 5613,5616 **** --- 5631,5645 ---- #ifdef USE_X_TOOLKIT BLOCK_INPUT; + + if (! FRAME_VISIBLE_P (f)) + { + if (! EQ (Vx_no_window_manager, Qt)) + x_wm_set_window_state (f, IconicState); + /* This was XtPopup, but that did nothing for an iconified frame. */ + XtMapWidget (f->display.x->widget); + UNBLOCK_INPUT; + return; + } + result = XIconifyWindow (x_current_display, XtWindow (f->display.x->widget), *************** *** 5619,5623 **** if (!result) ! error ("Can't notify window manager of iconification."); f->async_iconified = 1; --- 5648,5652 ---- if (!result) ! error ("Can't notify window manager of iconification"); f->async_iconified = 1; *************** *** 5652,5656 **** { UNBLOCK_INPUT_RESIGNAL; ! error ("Can't notify window manager of iconification."); } } --- 5681,5685 ---- { UNBLOCK_INPUT_RESIGNAL; ! error ("Can't notify window manager of iconification"); } } *************** *** 5928,5935 **** { #ifdef USE_X_TOOLKIT ! Window window = XtWindow (f->display.x->widget); #else /* not USE_X_TOOLKIT */ Window window = FRAME_X_WINDOW (f); - #endif /* not USE_X_TOOLKIT */ f->display.x->wm_hints.flags |= StateHint; --- 5957,5966 ---- { #ifdef USE_X_TOOLKIT ! Arg al[1]; ! ! XtSetArg (al[0], XtNinitialState, state); ! XtSetValues (f->display.x->widget, al, 1); #else /* not USE_X_TOOLKIT */ Window window = FRAME_X_WINDOW (f); f->display.x->wm_hints.flags |= StateHint; *************** *** 5937,5940 **** --- 5968,5972 ---- XSetWMHints (x_current_display, window, &f->display.x->wm_hints); + #endif /* not USE_X_TOOLKIT */ } end-of-emacs-patch-kit