This file contains diffs from version 19.12 to version 19.13 of GNU Emacs. Before applying it, cd to the top directory of the Emacs source tree, and execute the following shell command: mkdir lisp/forms-mode diff -cprP -x *.elc emacs-19.12/ChangeLog emacs-19.13/ChangeLog *** emacs-19.12/ChangeLog Tue Jun 8 05:29:16 1993 --- emacs-19.13/ChangeLog Tue Jun 8 03:26:11 1993 *************** *** 1,3 **** --- 1,33 ---- + Tue Jun 8 02:42:18 1993 Jim Blandy (jimb@totoro.cs.oberlin.edu) + + * configure.in (CFLAGS): Don't set this according to the value of + the GCC shell variable. Instead, consult the machine and system + files for the values of C_OPTIMIZE_SWITCH and C_DEBUG_SWITCH, and + test __GNUC__ while we're at it. + + * configure.in: Remove extra ;; from hpux cases. + + Mon Jun 7 23:55:41 1993 Jim Blandy (jimb@totoro.cs.oberlin.edu) + + * configure.in: Check to see if the system has -ldnet. + + Tue Jun 8 00:22:46 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * make-dist: Add clauses to distribute lisp/forms-mode. + + Mon Jun 7 13:53:54 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * configure.in (machine): Fix the versions in hpux version number test. + Do not guess based on cpu type. Do check for explicit system version. + + Thu Jun 3 16:42:57 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * configure.in: Do NOT look for `unknown' as company name. + + Wed Jun 2 12:10:09 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * configure.in: Fix typo in message. + Tue Jun 1 00:08:05 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) * Version 19.12 released. diff -cprP -x *.elc emacs-19.12/README emacs-19.13/README *** emacs-19.12/README Tue Jun 8 05:29:14 1993 --- emacs-19.13/README Tue Jun 8 07:07:09 1993 *************** *** 1,4 **** ! This directory tree holds version 19.12 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. See the files `etc/NEWS' and `etc/news.texi' for information on new --- 1,4 ---- ! This directory tree holds version 19.13 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. See the files `etc/NEWS' and `etc/news.texi' for information on new diff -cprP -x *.elc emacs-19.12/configure emacs-19.13/configure *** emacs-19.12/configure Tue Jun 8 05:29:21 1993 --- emacs-19.13/configure Tue Jun 8 03:22:15 1993 *************** *** 550,566 **** ;; ## HP 9000 series 700 and 800, running HP/UX ! hppa1.0-hp-hpux* ) machine=hp9000s800 opsys=hpux ;; ! hppa1.1-hp-hpux* ) machine=hp9000s800 opsys=hpux8 ;; hppa*-hp-hpux* ) ## Cross-compilation? Nah! case "`uname -r`" in ! *.08.* ) machine=hp9000s800 opsys=hpux ;; ! *.09.* ) machine=hp9000s800 opsys=hpux8 ;; *) machine=hp9000s800 opsys=hpux ;; esac ;; --- 550,571 ---- ;; ## HP 9000 series 700 and 800, running HP/UX ! hppa*-hp-hpux7* ) machine=hp9000s800 opsys=hpux ;; ! hppa*-hp-hpux8* ) machine=hp9000s800 opsys=hpux8 ;; + hppa*-hp-hpux9* ) + machine=hp9000s800 opsys=hpux9 + ;; + + ## HP 9000 series 700 and 800, running HP/UX hppa*-hp-hpux* ) ## Cross-compilation? Nah! case "`uname -r`" in ! *.08.* ) machine=hp9000s800 opsys=hpux8 ;; ! *.09.* ) machine=hp9000s800 opsys=hpux9 ;; *) machine=hp9000s800 opsys=hpux ;; esac ;; *************** *** 621,627 **** machine=is386 opsys=usg5-2-2 ;; ## Intel 386 machines where we don't care about the manufacturer ! i[34]86-unknown-* ) machine=intel386 case "${configuration}" in *-isc1.* | *-isc2.[01]* ) opsys=386-ix ;; --- 626,632 ---- machine=is386 opsys=usg5-2-2 ;; ## Intel 386 machines where we don't care about the manufacturer ! i[34]86-*-* ) machine=intel386 case "${configuration}" in *-isc1.* | *-isc2.[01]* ) opsys=386-ix ;; *************** rm -f conftest* *** 979,989 **** esac - CFLAGS='-g' - if test -n "${GCC}"; then - CFLAGS='-g -O' - 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 #### #undef clause to src/config.h.in for autoconf to modify. --- 984,989 ---- *************** fi *** 1146,1151 **** --- 1146,1180 ---- rm -f conftest* + LIBS_save="${LIBS}" + LIBS="${LIBS} -ldnet" + have_lib="" + echo checking for -ldnet + cat > conftest.c < conftest.c < *************** esac *** 1624,1630 **** case "${window_system}" in "none" | "x11" | "x10" ) ;; "" ) ! echo " No window system specifed. Looking for X11." window_system=none if [ -r /usr/lib/libX11.a \ -o -d /usr/include/X11 \ --- 1653,1659 ---- case "${window_system}" in "none" | "x11" | "x10" ) ;; "" ) ! echo " No window system specified. Looking for X11." window_system=none if [ -r /usr/lib/libX11.a \ -o -d /usr/include/X11 \ *************** echo ' *** 1740,1745 **** --- 1769,1788 ---- @configure@ system_malloc=yes #else @configure@ system_malloc=no + #endif + + #ifndef C_DEBUG_SWITCH + #define C_DEBUG_SWITCH -g + #endif + + #ifndef C_OPTIMIZE_SWITCH + #define C_OPTIMIZE_SWITCH -O + #endif + + #ifdef __GNUC__ + @configure@ CFLAGS=C_DEBUG_SWITCH C_OPTIMIZE_SWITCH + #else + @configure@ CFLAGS=C_DEBUG_SWITCH #endif ' > ${tempcname} # The value of CPP is a quoted variable reference, so we need to do this diff -cprP -x *.elc emacs-19.12/configure.in emacs-19.13/configure.in *** emacs-19.12/configure.in Tue Jun 8 05:29:22 1993 --- emacs-19.13/configure.in Tue Jun 8 03:21:27 1993 *************** *** 558,574 **** ;; ## HP 9000 series 700 and 800, running HP/UX ! hppa1.0-hp-hpux* ) machine=hp9000s800 opsys=hpux ;; ! hppa1.1-hp-hpux* ) machine=hp9000s800 opsys=hpux8 ;; hppa*-hp-hpux* ) ## Cross-compilation? Nah! case "`uname -r`" in ! *.08.* ) machine=hp9000s800 opsys=hpux ;; ! *.09.* ) machine=hp9000s800 opsys=hpux8 ;; *) machine=hp9000s800 opsys=hpux ;; esac ;; --- 558,579 ---- ;; ## HP 9000 series 700 and 800, running HP/UX ! hppa*-hp-hpux7* ) machine=hp9000s800 opsys=hpux ;; ! hppa*-hp-hpux8* ) machine=hp9000s800 opsys=hpux8 ;; + hppa*-hp-hpux9* ) + machine=hp9000s800 opsys=hpux9 + ;; + + ## HP 9000 series 700 and 800, running HP/UX hppa*-hp-hpux* ) ## Cross-compilation? Nah! case "`uname -r`" in ! *.08.* ) machine=hp9000s800 opsys=hpux8 ;; ! *.09.* ) machine=hp9000s800 opsys=hpux9 ;; *) machine=hp9000s800 opsys=hpux ;; esac ;; *************** *** 629,635 **** machine=is386 opsys=usg5-2-2 ;; ## Intel 386 machines where we don't care about the manufacturer ! i[34]86-unknown-* ) machine=intel386 case "${configuration}" in *-isc1.* | *-isc2.[01]* ) opsys=386-ix ;; --- 634,640 ---- machine=is386 opsys=usg5-2-2 ;; ## Intel 386 machines where we don't care about the manufacturer ! i[34]86-*-* ) machine=intel386 case "${configuration}" in *-isc1.* | *-isc2.[01]* ) opsys=386-ix ;; *************** case ${with_gcc} in *** 916,926 **** ] AC_PROG_CC [ esac - CFLAGS='-g' - if test -n "${GCC}"; then - CFLAGS='-g -O' - 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 #### #undef clause to src/config.h.in for autoconf to modify. --- 921,926 ---- *************** AC_HAVE_HEADERS(sys/timeb.h sys/time.h) *** 937,942 **** --- 937,945 ---- AC_STDC_HEADERS AC_TIME_WITH_SYS_TIME + dnl checks for library files + AC_HAVE_LIBRARY(-ldnet) + dnl checks for typedefs AC_RETSIGTYPE *************** esac *** 982,988 **** case "${window_system}" in "none" | "x11" | "x10" ) ;; "" ) ! echo " No window system specifed. Looking for X11." window_system=none if [ -r /usr/lib/libX11.a \ -o -d /usr/include/X11 \ --- 985,991 ---- case "${window_system}" in "none" | "x11" | "x10" ) ;; "" ) ! echo " No window system specified. Looking for X11." window_system=none if [ -r /usr/lib/libX11.a \ -o -d /usr/include/X11 \ *************** echo ' *** 1079,1084 **** --- 1082,1101 ---- @configure@ system_malloc=yes #else @configure@ system_malloc=no + #endif + + #ifndef C_DEBUG_SWITCH + #define C_DEBUG_SWITCH -g + #endif + + #ifndef C_OPTIMIZE_SWITCH + #define C_OPTIMIZE_SWITCH -O + #endif + + #ifdef __GNUC__ + @configure@ CFLAGS=C_DEBUG_SWITCH C_OPTIMIZE_SWITCH + #else + @configure@ CFLAGS=C_DEBUG_SWITCH #endif ' > ${tempcname} # The value of CPP is a quoted variable reference, so we need to do this diff -cprP -x *.elc emacs-19.12/etc/BABYL emacs-19.13/etc/BABYL *** emacs-19.12/etc/BABYL Tue Jun 8 05:43:09 1993 --- emacs-19.13/etc/BABYL Tue Jun 8 02:49:18 1993 *************** *** 2,8 **** Warning: ! This was written Tuesday, 12 April 1983 (by Eugene Cicciarelli), based on looking at a particular Babyl file and recalling various issues. Therefore it is not guaranteed to be complete, but it is a start, and I will try to point the reader to various Babyl functions --- 2,8 ---- Warning: ! This was written Tuesday, 12 April 1983 (by Eugene Ciccarelli), based on looking at a particular Babyl file and recalling various issues. Therefore it is not guaranteed to be complete, but it is a start, and I will try to point the reader to various Babyl functions diff -cprP -x *.elc emacs-19.12/etc/FTP emacs-19.13/etc/FTP *** emacs-19.12/etc/FTP Tue Jun 8 05:43:19 1993 --- emacs-19.13/etc/FTP Mon Jun 7 19:00:08 1993 *************** *** 33,52 **** If you are on the Internet (see also "** Alternative Internet FTP Sources" below), you can at present copy the latest distribution version of GNU Emacs from the file /pub/gnu/emacs-M.N.tar on host ! prep.ai.mit.edu (or the file /pub/gnu/emacs-M.N.tar.Z which has been ! run through compress after tar). M and N stand for version numbers; ! look at a listing of the directory through ftp to see what version is available. These files are about 11 and 4 megabytes long, respectively. After you unpack the distribution, be sure to look at the files README and INSTALL. Because of difficulties in transferring large files, sometimes a split ! version of the tar file is created. This is a directory named ! /pub/gnu/emacs-M.N.tar-split or perhaps ! /pub/gnu/emacs-M.N.tar.Z-split, containing files of 100000 characters each. There is generally no trouble in ftping files of this size. They can be combined with cat to make a tar file or compressed tar ! file. ALWAYS USE BINARY/IMAGE MODE TO TRANSFER THESE FILES! Text mode does not work for tar files or compressed files. --- 33,53 ---- If you are on the Internet (see also "** Alternative Internet FTP Sources" below), you can at present copy the latest distribution version of GNU Emacs from the file /pub/gnu/emacs-M.N.tar on host ! prep.ai.mit.edu (or the file /pub/gnu/emacs-M.N.tar.gz which has been ! run through gzip after tar). M and N stand for version numbers; look ! at a listing of the directory through ftp to see what version is available. These files are about 11 and 4 megabytes long, respectively. After you unpack the distribution, be sure to look at the files README and INSTALL. Because of difficulties in transferring large files, sometimes a split ! version of the tar file is created. This would be in a directory ! named /pub/gnu/emacs-M.N.tar-split or perhaps ! /pub/gnu/emacs-M.N.tar.gz-split, containing files of 100000 characters each. There is generally no trouble in ftping files of this size. They can be combined with cat to make a tar file or compressed tar ! file. If you can't find such files on prep.ai.mit.edu, have a look at ! archive.cis.ohio-state.edu. ALWAYS USE BINARY/IMAGE MODE TO TRANSFER THESE FILES! Text mode does not work for tar files or compressed files. *************** Some ftp'ers have found it necessary for *** 58,66 **** Files of differences from previous widely distributed GNU Emacs versions to the present version are also available on prep.ai.mit.edu under names of the form emacs.diff-OO.OO-NN.NN in directory /pub/gnu. ! These are made with diff -rc2. Sometimes there are compressed ! versions of these difference files as well; their names have .Z ! appended. The Emacs manual in source form is included in the distribution. The dvi file produced by TeX is not included, but a copy may be available --- 59,67 ---- Files of differences from previous widely distributed GNU Emacs versions to the present version are also available on prep.ai.mit.edu under names of the form emacs.diff-OO.OO-NN.NN in directory /pub/gnu. ! These are made with diff -rc2. Sometimes there are versions ! compressed with gzip of these difference files as well; their names ! have .gz appended. The Emacs manual in source form is included in the distribution. The dvi file produced by TeX is not included, but a copy may be available *************** dvi file produced by TeX is not included *** 67,73 **** for ftp under the name /pub/gnu/emacs.dvi. The Emacs Lisp Reference Manual is in a separate file: ! /pub/gnu/lispref.tar.Z ** VMS versions of GNU Emacs and How To FTP It. You can anonymously ftp a VMS version of GNU emacs from: --- 68,74 ---- for ftp under the name /pub/gnu/emacs.dvi. The Emacs Lisp Reference Manual is in a separate file: ! /pub/gnu/elisp-manual-NN.tar.gz ** VMS versions of GNU Emacs and How To FTP It. You can anonymously ftp a VMS version of GNU emacs from: *************** Other GNU software is available on prep. *** 95,103 **** GNU Emacs), exist for some of these programs. Some programs have misc support files as well. Have a look on prep to see which ones. Compressed versions of the tar or diff files are often available ! (indicated by a .z suffix). Some of this software is in beta test ! (probably still buggy), and is being made available for use by hackers ! who like to test software. The file /pub/gnu/DESCRIPTIONS has a list of the packages distributed on prep.ai.mit.edu with a brief description explaining what --- 96,104 ---- GNU Emacs), exist for some of these programs. Some programs have misc support files as well. Have a look on prep to see which ones. Compressed versions of the tar or diff files are often available ! (indicated by a .gz suffix and made with the `gzip' program). Some of ! this software is in beta test (probably still buggy), and is being ! made available for use by hackers who like to test software. The file /pub/gnu/DESCRIPTIONS has a list of the packages distributed on prep.ai.mit.edu with a brief description explaining what *************** ftp.cs.widener.edu, itstd.sri.com, a.cs. *** 142,149 **** scam.berkeley.edu, jaguar.utah.edu, gatekeeper.dec.com:/pub/gnu, archive.cis.ohio-state.edu, and ftp.uu.net:/archive/systems/gnu). And these foreign sites: archie.oz.au:/gnu (Australia (archie.oz or ! archie.oz.au for ACSnet)), ftp.technion.al.il:/pub/unsupported/gnu (Israel, automatic update daily, ran by ftp-admin), ftp.informatik.tu-muenchen.de or ftp.informatik.rwth-aachen.de (Germany), isy.liu.se, ftp.stacken.kth.se or ftp.luth.se:/pub/unix/gnu (Sweden), hp4nl.nluug.nl (Netherlands), ftp.win.tue.nl (Netherlands, --- 143,151 ---- scam.berkeley.edu, jaguar.utah.edu, gatekeeper.dec.com:/pub/gnu, archive.cis.ohio-state.edu, and ftp.uu.net:/archive/systems/gnu). And these foreign sites: archie.oz.au:/gnu (Australia (archie.oz or ! archie.oz.au for ACSnet)), ftp.technion.ac.il:/pub/unsupported/gnu (Israel, automatic update daily, ran by ftp-admin), + ftp.sun.ac.za:/pub/gnu (South Africa), ftp.informatik.tu-muenchen.de or ftp.informatik.rwth-aachen.de (Germany), isy.liu.se, ftp.stacken.kth.se or ftp.luth.se:/pub/unix/gnu (Sweden), hp4nl.nluug.nl (Netherlands), ftp.win.tue.nl (Netherlands, diff -cprP -x *.elc emacs-19.12/etc/LNEWS emacs-19.13/etc/LNEWS *** emacs-19.12/etc/LNEWS Tue Jun 8 05:43:25 1993 --- emacs-19.13/etc/LNEWS Tue Jun 8 07:23:38 1993 *************** *** 462,467 **** --- 462,486 ---- about with `match-beginning' and `match-end'. Also, these parenthetical groupings may now be nested to any degree. + * In a regular expression, when you use an asterisk after a + parenthetical grouping, and then ask about what range was matched + by the grouping, Emacs 19 reports just its last occurrence. Emacs + 18 used to report the range of all the repetitions put together. + + For example, + + (progn + (string-match "f\\(o\\)*" "foo") + (list (match-beginning 1) + (match-end 1))) + + returns `(2 3)' in Emacs 19, corresponding to just the last + repetition of `\(o\)'. In Emacs 18, that expression returns `(1 + 3)', encompassing both repetitions. + + If you want the Emacs 18 behavior, use a grouping *containing* the + asterisk: `"f\\(o*\\)"'. + * The new special form `save-match-data' preserves the regular expression match status. Usage: `(save-match-data BODY...)'. *************** and FILENAME has handler HANDLER, then H *** 837,845 **** `file-name-directory', `file-name-nondirectory', `file-name-sans-versions', `file-newer-than-file-p', `file-readable-p', `file-symlink-p', `file-writable-p', ! `insert-directory', `insert-file-contents', `make-directory', ! `make-symbolic-link', `rename-file', `set-file-modes', ! `verify-visited-file-modtime', `write-region'. The handler function must handle all of the above operations, and possibly others to be added in the future. Therefore, it should always --- 856,866 ---- `file-name-directory', `file-name-nondirectory', `file-name-sans-versions', `file-newer-than-file-p', `file-readable-p', `file-symlink-p', `file-writable-p', ! `insert-directory', `insert-file-contents', `load', ! `make-directory', `make-symbolic-link', `rename-file', ! `set-file-modes', `set-visited-file-modtime', ! `unhandled-file-name-directory', `verify-visited-file-modtime', ! `write-region'. The handler function must handle all of the above operations, and possibly others to be added in the future. Therefore, it should always diff -cprP -x *.elc emacs-19.12/etc/MACHINES emacs-19.13/etc/MACHINES *** emacs-19.12/etc/MACHINES Tue Jun 8 05:43:27 1993 --- emacs-19.13/etc/MACHINES Thu Jun 3 13:23:03 1993 *************** *** 176,181 **** --- 176,185 ---- DECstation (mips-dec-ultrix or mips-dec-osf) Emacs runs under Ultrix and OSF/1 as of 19.7. + + If you are not using DECnet, then remove the definition of + LIBS_MACHINE from `src/m/pmax.h', in order to prevent linking with + the `libdnet.a' library. See under Ultrix for problems using X windows on Ultrix. Note that this is a MIPS machine. *************** IBM RS/6000 (rs6000-ibm-aix) *** 343,351 **** persons say that the tty VMIN and VTIME settings have been corrupted; if you have a fix, please send it to us. - Reports are that the IBM supplied X libraries don't work with Emacs, - but the MIT X libraries and include files do work. - Compiling with -O using the IBM compiler has been known to make Emacs work incorrectly. --- 347,352 ---- *************** Intel 386 (i386-*-isc, i386-*-esix, *** 388,394 **** i386-intsys-sysv, i386-*-sysv3, i386-*-sysv4, i386-*-sysv4.2, i386-*-sysv5.3, i386-*-bsd4.2, ! i386-*-sco3.2v4, i386-*-bsd386) In the above configurations, * means that the manufacturer's name you specify does not matter, and you can use any name you like --- 389,396 ---- i386-intsys-sysv, i386-*-sysv3, i386-*-sysv4, i386-*-sysv4.2, i386-*-sysv5.3, i386-*-bsd4.2, ! i386-*-sco3.2v4, i386-*-bsd386, ! i386-*-386bsd) In the above configurations, * means that the manufacturer's name you specify does not matter, and you can use any name you like *************** Intel 386 (i386-*-isc, i386-*-esix, *** 414,419 **** --- 416,424 ---- If you are using Esix, see notes at end under Esix. If you are using SCO Unix, see notes at end under SCO. + On 386bsd, you should use GNU make, not the system's make. + Assuming it's installed as gmake, do `gmake install MAKE=gmake'. + If you are using System V release 4.2, you may find that `cc -E' puts spurious spaces in `src/xmakefile'. If that happens, specify CC=/lib/cpp as an option when you run make. *************** NCR Tower 32 (m68k-ncr-sysv2 or m68k-ncr *** 558,574 **** NeXT (m68k-next-bsd, m68k-next-mach2) - Emacs 18 worked in a terminal window. - Emacs 19 has not been tested extensively yet, but it seems to work ! in a NeXTStep 3.0 terminal window with the almost unchanged system ! dependent code from version 18. You may need to specify -traditional when src/Makefile builds xmakefile. Multiple frames (new with Emacs 19) might work with X, but this has ! not not been tested yet. A NeXTStep implementation of multiple ! frames would be nice, but requires input from a NeXTStep- and ! Emacs-literate volunteer. Thanks to Thorsten Ohl for working on the NeXT port of Emacs 19. --- 563,576 ---- NeXT (m68k-next-bsd, m68k-next-mach2) Emacs 19 has not been tested extensively yet, but it seems to work ! in a NeXTStep 3.0 terminal window. You may need to specify -traditional when src/Makefile builds xmakefile. Multiple frames (new with Emacs 19) might work with X, but this has ! not not been tested yet. NeXT users might want to implement direct ! operation with NeXTStep, but from the point of view of the GNU project, ! that is a distraction. Thanks to Thorsten Ohl for working on the NeXT port of Emacs 19. *************** Sun 3, Sun 4 (sparc), Sun 386 (m68k-sun- *** 670,679 **** On Solaris 2, you need to install patch 100947-02 to fix a system bug. Presumably this patch comes from Sun. You must alter the definition of LD_SWITCH_SYSTEM if your X11 libraries are not in /usr/openwin/lib. On Solaris 2, Emacs 19.12 currently expects certain optional packages ! to be installed. You need libucb; you need termcap (which may be ! part of libucb). This may be changed in the future. There are three machine files for the different versions of SunOS that run on the Motorola 68000 processors. All are derived from --- 672,681 ---- On Solaris 2, you need to install patch 100947-02 to fix a system bug. Presumably this patch comes from Sun. You must alter the definition of LD_SWITCH_SYSTEM if your X11 libraries are not in /usr/openwin/lib. + You must make sure that /usr/ucblib is not in your path. On Solaris 2, Emacs 19.12 currently expects certain optional packages ! to be installed. This may be changed in the future. There are three machine files for the different versions of SunOS that run on the Motorola 68000 processors. All are derived from diff -cprP -x *.elc emacs-19.12/etc/NEWS emacs-19.13/etc/NEWS *** emacs-19.12/etc/NEWS Tue Jun 8 05:43:29 1993 --- emacs-19.13/etc/NEWS Tue Jun 8 01:35:08 1993 *************** *** 6,11 **** --- 6,29 ---- For older news, see the file ONEWS. For Lisp changes in Emacs 19, see the file LNEWS. + Changes in version 19.13. + + * Magic file names can now handle the `load' operation. + + * Bibtex mode now sets up special entries in the menu bar. + + * The incremental search commands C-w and C-y, which copy text from + the buffer into the search string, now convert it to lower case + if you are in a case-insensitive search. This is to avoid making + the search a case-sensitive one. + + * GNUS now knows your time zone automatically if Emacs does. + + * Hide-ifdef mode no longer defines keys of the form + C-c LETTER, since those keys are reserved for users. + Those commands have been moved to C-c M-LETTER. + We may move them again for greater consistency with other modes. + Changes in version 19.12. * You can now make many of the sort commands ignore case by setting diff -cprP -x *.elc emacs-19.12/etc/ORDERS emacs-19.13/etc/ORDERS *** emacs-19.12/etc/ORDERS Tue Jun 8 05:43:40 1993 --- emacs-19.13/etc/ORDERS Mon Jun 7 18:54:09 1993 *************** *** 98,103 **** --- 98,106 ---- * Bison (a free, compatible replacement for yacc) * The Bison Manual, as Texinfo source * COFF support for GNU software tools + * DejaGnu (a framework for testing other programs) + * expect (runs scripts to conduct dialogs with programs) + * tcl (an embeddable tool command language) * dld (a dynamic linker) * f2c (a FORTRAN-77 to C translator) * Flex (Vern Paxson's fast rewrite of lex) *************** *** 109,115 **** * gmp library (arbitrary precision arithmetic on signed integers & rationals) * gperf (a perfect hash-table generator) * GNU indent ! * p2c * Perl (a programming language interpreter) * GNU Smalltalk (the GNU implementation of this programming language system) * regexp library (GNU implementation of the regular expression library) --- 112,118 ---- * gmp library (arbitrary precision arithmetic on signed integers & rationals) * gperf (a perfect hash-table generator) * GNU indent ! * p2c (a Pascal-to-C translator) * Perl (a programming language interpreter) * GNU Smalltalk (the GNU implementation of this programming language system) * regexp library (GNU implementation of the regular expression library) *************** The tape includes source code for: *** 137,142 **** --- 140,146 ---- * elvis (a clone of the vi/ex Unix editor) * es (extensible rc-like shell with lexical scope, first class functions, etc.) * Fax (a fax spooling system) + * Gnats (a bug-tracking system) * GNU find & finger * GNU fontutils (create and support fonts for use with Ghostscript or TeX) * ms (MandelSpawn, a parallel Mandelbrot program for the X window system) diff -cprP -x *.elc emacs-19.12/etc/news.texi emacs-19.13/etc/news.texi *** emacs-19.12/etc/news.texi Tue Jun 8 05:44:01 1993 --- emacs-19.13/etc/news.texi Tue Jun 8 00:55:46 1993 *************** *** 513,518 **** --- 513,541 ---- parenthetical groupings may now be nested to any degree. @item + In a regular expression, when you use an asterisk after a parenthetical + grouping, and then ask about what range was matched by the grouping, + Emacs 19 reports just its last occurrence. Emacs 18 used to report the + range of all the repetitions put together. + + For example, + + @example + (progn + (string-match "f\\(o\\)*" "foo") + (list (match-beginning 1) + (match-end 1))) + @end example + + @noindent + returns @code{(2 3)} in Emacs 19, corresponding to just the last + repetition of @samp{\(o\)}. In Emacs 18, that expression returns + @code{(1 3)}, encompassing both repetitions. + + If you want the Emacs 18 behavior, use a grouping @emph{containing} the + asterisk: @code{"f\\(o*\\)"}. + + @item The new special form @code{save-match-data} preserves the regular expression match status. Usage: @code{(save-match-data @var{body}@dots{})}. *************** Here are the primitives that you can han *** 925,934 **** @code{file-name-directory}, @code{file-name-nondirectory}, @code{file-name-sans-versions}, @code{file-newer-than-file-p}, @code{file-readable-p}, @code{file-symlink-p}, @code{file-writable-p}, ! @code{insert-directory}, @code{insert-file-contents}, @code{make-directory}, @code{make-symbolic-link}, @code{rename-file}, ! @code{set-file-modes}, @code{verify-visited-file-modtime}, ! @code{write-region}. @end quotation The handler function must handle all of the above operations, and --- 948,958 ---- @code{file-name-directory}, @code{file-name-nondirectory}, @code{file-name-sans-versions}, @code{file-newer-than-file-p}, @code{file-readable-p}, @code{file-symlink-p}, @code{file-writable-p}, ! @code{insert-directory}, @code{insert-file-contents}, @code{load}, @code{make-directory}, @code{make-symbolic-link}, @code{rename-file}, ! @code{set-file-modes}, @code{set-visited-file-modtime}, ! @code{unhandled-file-name-directory}, ! @code{verify-visited-file-modtime}, @code{write-region}. @end quotation The handler function must handle all of the above operations, and Binary files emacs-19.12/etc/yow.lines and emacs-19.13/etc/yow.lines differ diff -cprP -x *.elc emacs-19.12/info/emacs emacs-19.13/info/emacs *** emacs-19.12/info/emacs Tue Jun 8 05:44:22 1993 --- emacs-19.13/info/emacs Tue Jun 8 07:24:23 1993 *************** *** 7,29 **** emacs-2: 49065 emacs-3: 94167 emacs-4: 143836 ! emacs-5: 184847 ! emacs-6: 234635 ! emacs-7: 283588 ! emacs-8: 332922 ! emacs-9: 381855 ! emacs-10: 430210 ! emacs-11: 479278 ! emacs-12: 526901 ! emacs-13: 573911 ! emacs-14: 623670 ! emacs-15: 672313 ! emacs-16: 722238 ! emacs-17: 771669 ! emacs-18: 815170 ! emacs-19: 849499 ! emacs-20: 877069 ! emacs-21: 918283  Tag Table: (Indirect) --- 7,29 ---- emacs-2: 49065 emacs-3: 94167 emacs-4: 143836 ! emacs-5: 184835 ! emacs-6: 234623 ! emacs-7: 283576 ! emacs-8: 332865 ! emacs-9: 381828 ! emacs-10: 430183 ! emacs-11: 479217 ! emacs-12: 526840 ! emacs-13: 573850 ! emacs-14: 623609 ! emacs-15: 672252 ! emacs-16: 722177 ! emacs-17: 771674 ! emacs-18: 815128 ! emacs-19: 849457 ! emacs-20: 877027 ! emacs-21: 918180  Tag Table: (Indirect) *************** Node: Kill Ring137620 *** 81,406 **** Node: Appending Kills138832 Node: Earlier Kills141047 Node: Accumulating Text143836 ! Node: Rectangles146887 ! Node: Registers151284 ! Node: RegPos152335 ! Node: RegText153214 ! Node: RegRect154201 ! Node: RegConfig154940 ! Node: RegFiles155629 ! Node: Display156265 ! Node: Scrolling157802 ! Node: Horizontal Scrolling161632 ! Node: Selective Display163076 ! Node: European Display164250 ! Node: Optional Display165495 ! Node: Display Vars167127 ! Node: Search171195 ! Node: Incremental Search172381 ! Node: Nonincremental Search179833 ! Node: Word Search181290 ! Node: Regexp Search182908 ! Node: Regexps184847 ! Node: Search Case195821 ! Node: Replace196827 ! Node: Unconditional Replace197939 ! Node: Regexp Replace199068 ! Node: Replacement and Case199986 ! Node: Query Replace200935 ! Node: Other Repeating Search204754 ! Node: Fixit205971 ! Node: Kill Errors206559 ! Node: Transpose207826 ! Node: Fixing Case210335 ! Node: Spelling210992 ! Node: Files213992 ! Node: File Names215208 ! Node: Visiting219269 ! Node: Saving225172 ! Node: Backup231274 ! Node: Backup Names232664 ! Node: Backup Deletion234635 ! Node: Backup Copying235810 ! Node: Interlocking237540 ! Node: Reverting241460 ! Node: Auto Save242642 ! Node: Auto Save Files243611 ! Node: Auto Save Control245726 ! Node: Recover247591 ! Node: File Aliases248457 ! Node: Version Control249609 ! Node: Concepts of VC250689 ! Node: Editing with VC252150 ! Node: Variables for Check-in/out256711 ! Node: Log Entries258382 ! Node: Change Logs and VC259555 ! Node: Comparing Versions262820 ! Node: VC Status264208 ! Node: Renaming and VC265904 ! Node: Snapshots266579 ! Node: Making Snapshots267071 ! Node: Snapshot Caveats268330 ! Node: Version Headers269996 ! Node: ListDir272452 ! Node: Comparing Files273954 ! Node: Misc File Ops275571 ! Node: Buffers278555 ! Node: Select Buffer280829 ! Node: List Buffers282112 ! Node: Misc Buffer283588 ! Node: Kill Buffer286152 ! Node: Several Buffers287608 ! Node: Windows291869 ! Node: Basic Window292561 ! Node: Split Window294401 ! Node: Other Window296366 ! Node: Pop Up Window298127 ! Node: Change Window299594 ! Node: Frames301468 ! Node: Mouse Commands303033 ! Node: Creating Frames304665 ! Node: Frame Parameters306018 ! Node: Scroll Bars307532 ! Node: Menu Bars309054 ! Node: Faces309965 ! Node: Misc X312407 ! Node: Major Modes313038 ! Node: Choosing Modes315306 ! Node: Indentation317959 ! Node: Indentation Commands320140 ! Node: Tab Stops323073 ! Node: Just Spaces324981 ! Node: Text325786 ! Node: Words327799 ! Node: Sentences330743 ! Node: Paragraphs332922 ! Node: Pages335223 ! Node: Filling337813 ! Node: Auto Fill338380 ! Node: Fill Commands340525 ! Node: Fill Prefix343156 ! Node: Case346569 ! Node: Text Mode348873 ! Node: Outline Mode350958 ! Node: Outline Format352574 ! Node: Outline Motion355354 ! Node: Outline Visibility356920 ! Node: TeX Mode359881 ! Node: TeX Editing361353 ! Node: LaTeX Editing364681 ! Node: TeX Print366119 ! Node: TeX Distrib372332 ! Node: Nroff Mode373444 ! Node: Programs374988 ! Node: Program Modes377678 ! Node: Lists379892 ! Node: List Commands381855 ! Node: Defuns385367 ! Node: Program Indent388024 ! Node: Basic Indent388657 ! Node: Multi-line Indent390654 ! Node: Lisp Indent392289 ! Node: C Indent395675 ! Node: Matching400925 ! Node: Comments402474 ! Node: Balanced Editing409857 ! Node: Symbol Completion410868 ! Node: Documentation412253 ! Node: Change Log413715 ! Node: Tags416093 ! Node: Tag Syntax417430 ! Node: Create Tag Table418611 ! Node: Select Tag Table420204 ! Node: Find Tag421732 ! Node: Tags Search424706 ! Node: Tags Stepping427571 ! Node: List Tags428113 ! Node: Emerge429268 ! Node: Overview of Emerge430210 ! Node: Submodes of Emerge433311 ! Node: State of Difference434991 ! Node: Merge Commands437505 ! Node: Exiting Emerge440062 ! Node: Combining in Emerge440910 ! Node: Fine Points of Emerge441769 ! Node: C Mode442714 ! Node: Fortran444654 ! Node: Fortran Motion445946 ! Node: Fortran Indent446733 ! Node: ForIndent Commands447476 ! Node: ForIndent Cont448927 ! Node: ForIndent Num451265 ! Node: ForIndent Conv452234 ! Node: ForIndent Vars453281 ! Node: Fortran Comments455098 ! Node: Fortran Autofill459002 ! Node: Fortran Columns460612 ! Node: Fortran Abbrev462138 ! Node: Asm Mode463044 ! Node: Building463586 ! Node: Compilation464552 ! Node: Debuggers469733 ! Node: Starting GUD470356 ! Node: Debugger Operation471844 ! Node: Commands of GUD473130 ! Node: GUD Customization475599 ! Node: Executing Lisp477350 ! Node: Lisp Libraries479278 ! Node: Lisp Eval482919 ! Node: Lisp Interaction486544 ! Node: External Lisp487713 ! Node: Abbrevs489889 ! Node: Defining Abbrevs492098 ! Node: Expanding Abbrevs494530 ! Node: Editing Abbrevs497560 ! Node: Saving Abbrevs499446 ! Node: Dynamic Abbrevs501435 ! Node: Picture502731 ! Node: Basic Picture505096 ! Node: Insert in Picture507554 ! Node: Tabs in Picture508970 ! Node: Rectangles in Picture510473 ! Node: Sending Mail512210 ! Node: Mail Format514559 ! Node: Mail Headers515900 ! Node: Mail Aliases519425 ! Node: Mail Mode521357 ! Node: Distracting NSA526133 ! Node: Rmail526901 ! Node: Rmail Scrolling530169 ! Node: Rmail Motion531145 ! Node: Rmail Deletion534294 ! Node: Rmail Inbox537041 ! Node: Rmail Files539312 ! Node: Rmail Output541788 ! Node: Rmail Labels544909 ! Node: Rmail Reply548674 ! Node: Rmail Summary553000 ! Node: Rmail Make Summary553983 ! Node: Rmail Summary Edit555750 ! Node: Rmail Editing558298 ! Node: Rmail Digest560529 ! Node: Out of Rmail561625 ! Node: Rmail Rot13562109 ! Node: Dired562728 ! Node: Dired Enter564109 ! Node: Dired Commands564972 ! Node: Dired Deletion565989 ! Node: Dired Visiting569988 ! Node: Marks vs. Flags571254 ! Node: Operating on Files573911 ! Node: Shell Commands in Dired577235 ! Node: Transforming File Names578919 ! Node: Comparison in Dired581336 ! Node: Subdirectories in Dired582155 ! Node: Subdirectory Motion583770 ! Node: Hiding Subdirectories584706 ! Node: Dired Updating585917 ! Node: Dired and Find587734 ! Node: Calendar/Diary588953 ! Node: Calendar Motion590313 ! Node: Calendar Unit Motion591071 ! Node: Move to Beginning or End593363 ! Node: Specified Dates594378 ! Node: Scroll Calendar595262 ! Node: Counting Days597279 ! Node: General Calendar597711 ! Node: Holidays598670 ! Node: Sunrise/Sunset600987 ! Node: Lunar Phases603591 ! Node: Other Calendars604977 ! Node: Calendar Systems606152 ! Node: To Other Calendar608004 ! Node: From Other Calendar609134 ! Node: Mayan Calendar610951 ! Node: Diary614107 ! Node: Diary Commands615613 ! Node: Format of Diary File618353 ! Node: Date Formats621126 ! Node: Adding to Diary623670 ! Node: Special Diary Entries625298 ! Node: Appointments629581 ! Node: Daylight Savings631523 ! Node: GNUS633079 ! Node: Buffers of GNUS633810 ! Node: GNUS Startup634821 ! Node: Summary of GNUS635795 ! Node: Sorting639275 ! Node: Shell644247 ! Node: Single Shell645238 ! Node: Interactive Shell646894 ! Node: Shell Mode650042 ! Node: Shell History652970 ! Node: Narrowing654742 ! Node: Hardcopy657028 ! Node: Two-Column658156 ! Node: Editing Binary Files661340 ! Node: Emacs Server662673 ! Node: Recursive Edit665365 ! Node: Dissociated Press668689 ! Node: Amusements671385 ! Node: Emulation672313 ! Node: Customization674954 ! Node: Minor Modes676648 ! Node: Variables679860 ! Node: Examining681980 ! Node: Edit Options683547 ! Node: Hooks685199 ! Node: Locals687315 ! Node: File Variables690722 ! Node: Keyboard Macros695345 ! Node: Basic Kbd Macro697526 ! Node: Save Kbd Macro700218 ! Node: Kbd Macro Query701892 ! Node: Key Bindings703850 ! Node: Keymaps705044 ! Node: Prefix Keymaps708451 ! Node: Local Keymaps709736 ! Node: Minibuffer Maps711901 ! Node: Rebinding712519 ! Node: Init Rebinding715587 ! Node: Function Keys717073 ! Node: Mouse Buttons719757 ! Node: Disabling722238 ! Node: Keyboard Translations723977 ! Node: Syntax725484 ! Node: Init File726614 ! Node: Init Syntax728044 ! Node: Init Examples730138 ! Node: Terminal Init734067 ! Node: Find Init735742 ! Node: Quitting736602 ! Node: Lossage740160 ! Node: DEL Gets Help740857 ! Node: Stuck Recursive741225 ! Node: Screen Garbled741931 ! Node: Text Garbled743050 ! Node: Unasked-for Search743689 ! Node: Emergency Escape745173 ! Node: Total Frustration746924 ! Node: Bugs747543 ! Node: Bug Criteria748244 ! Node: Understanding Bug Reporting750838 ! Node: Checklist753335 ! Node: Sending Patches763518 ! Node: Service768389 ! Node: Command Arguments768985 ! Node: Ordinary Arguments770917 ! Node: Initial Options771669 ! Node: Command Example773601 ! Node: Resume Arguments774451 ! Node: Display X776102 ! Node: Font X778483 ! Node: Colors X779957 ! Node: Window Size X781174 ! Node: Borders X783558 ! Node: Icons X784489 ! Node: Resources X785449 ! Node: Manifesto789160 ! Node: Glossary815170 ! Node: Key Index849499 ! Node: Command Index877069 ! Node: Variable Index918283 ! Node: Concept Index930415  End Tag Table --- 81,406 ---- Node: Appending Kills138832 Node: Earlier Kills141047 Node: Accumulating Text143836 ! Node: Rectangles146875 ! Node: Registers151272 ! Node: RegPos152323 ! Node: RegText153202 ! Node: RegRect154189 ! Node: RegConfig154928 ! Node: RegFiles155617 ! Node: Display156253 ! Node: Scrolling157790 ! Node: Horizontal Scrolling161620 ! Node: Selective Display163064 ! Node: European Display164238 ! Node: Optional Display165483 ! Node: Display Vars167115 ! Node: Search171183 ! Node: Incremental Search172369 ! Node: Nonincremental Search179821 ! Node: Word Search181278 ! Node: Regexp Search182896 ! Node: Regexps184835 ! Node: Search Case195809 ! Node: Replace196815 ! Node: Unconditional Replace197927 ! Node: Regexp Replace199056 ! Node: Replacement and Case199974 ! Node: Query Replace200923 ! Node: Other Repeating Search204742 ! Node: Fixit205959 ! Node: Kill Errors206547 ! Node: Transpose207814 ! Node: Fixing Case210323 ! Node: Spelling210980 ! Node: Files213980 ! Node: File Names215196 ! Node: Visiting219257 ! Node: Saving225160 ! Node: Backup231262 ! Node: Backup Names232652 ! Node: Backup Deletion234623 ! Node: Backup Copying235798 ! Node: Interlocking237528 ! Node: Reverting241448 ! Node: Auto Save242630 ! Node: Auto Save Files243599 ! Node: Auto Save Control245714 ! Node: Recover247579 ! Node: File Aliases248445 ! Node: Version Control249597 ! Node: Concepts of VC250677 ! Node: Editing with VC252138 ! Node: Variables for Check-in/out256699 ! Node: Log Entries258370 ! Node: Change Logs and VC259543 ! Node: Comparing Versions262808 ! Node: VC Status264196 ! Node: Renaming and VC265892 ! Node: Snapshots266567 ! Node: Making Snapshots267059 ! Node: Snapshot Caveats268318 ! Node: Version Headers269984 ! Node: ListDir272440 ! Node: Comparing Files273942 ! Node: Misc File Ops275559 ! Node: Buffers278543 ! Node: Select Buffer280817 ! Node: List Buffers282100 ! Node: Misc Buffer283576 ! Node: Kill Buffer286140 ! Node: Several Buffers287596 ! Node: Windows291857 ! Node: Basic Window292549 ! Node: Split Window294389 ! Node: Other Window296354 ! Node: Pop Up Window298115 ! Node: Change Window299582 ! Node: Frames301411 ! Node: Mouse Commands302976 ! Node: Creating Frames304608 ! Node: Frame Parameters305961 ! Node: Scroll Bars307475 ! Node: Menu Bars308997 ! Node: Faces309908 ! Node: Misc X312350 ! Node: Major Modes312981 ! Node: Choosing Modes315249 ! Node: Indentation317902 ! Node: Indentation Commands320083 ! Node: Tab Stops323016 ! Node: Just Spaces324924 ! Node: Text325729 ! Node: Words327742 ! Node: Sentences330686 ! Node: Paragraphs332865 ! Node: Pages335166 ! Node: Filling337756 ! Node: Auto Fill338323 ! Node: Fill Commands340468 ! Node: Fill Prefix343099 ! Node: Case346535 ! Node: Text Mode348839 ! Node: Outline Mode350924 ! Node: Outline Format352540 ! Node: Outline Motion355320 ! Node: Outline Visibility356886 ! Node: TeX Mode359847 ! Node: TeX Editing361326 ! Node: LaTeX Editing364654 ! Node: TeX Print366092 ! Node: TeX Distrib372305 ! Node: Nroff Mode373417 ! Node: Programs374961 ! Node: Program Modes377651 ! Node: Lists379865 ! Node: List Commands381828 ! Node: Defuns385340 ! Node: Program Indent387997 ! Node: Basic Indent388630 ! Node: Multi-line Indent390627 ! Node: Lisp Indent392262 ! Node: C Indent395648 ! Node: Matching400898 ! Node: Comments402447 ! Node: Balanced Editing409830 ! Node: Symbol Completion410841 ! Node: Documentation412226 ! Node: Change Log413688 ! Node: Tags416066 ! Node: Tag Syntax417403 ! Node: Create Tag Table418584 ! Node: Select Tag Table420177 ! Node: Find Tag421705 ! Node: Tags Search424679 ! Node: Tags Stepping427544 ! Node: List Tags428086 ! Node: Emerge429241 ! Node: Overview of Emerge430183 ! Node: Submodes of Emerge433284 ! Node: State of Difference434964 ! Node: Merge Commands437478 ! Node: Exiting Emerge440035 ! Node: Combining in Emerge440883 ! Node: Fine Points of Emerge441742 ! Node: C Mode442687 ! Node: Fortran444627 ! Node: Fortran Motion445919 ! Node: Fortran Indent446706 ! Node: ForIndent Commands447449 ! Node: ForIndent Cont448866 ! Node: ForIndent Num451204 ! Node: ForIndent Conv452173 ! Node: ForIndent Vars453220 ! Node: Fortran Comments455037 ! Node: Fortran Autofill458941 ! Node: Fortran Columns460551 ! Node: Fortran Abbrev462077 ! Node: Asm Mode462983 ! Node: Building463525 ! Node: Compilation464491 ! Node: Debuggers469672 ! Node: Starting GUD470295 ! Node: Debugger Operation471783 ! Node: Commands of GUD473069 ! Node: GUD Customization475538 ! Node: Executing Lisp477289 ! Node: Lisp Libraries479217 ! Node: Lisp Eval482858 ! Node: Lisp Interaction486483 ! Node: External Lisp487652 ! Node: Abbrevs489828 ! Node: Defining Abbrevs492037 ! Node: Expanding Abbrevs494469 ! Node: Editing Abbrevs497499 ! Node: Saving Abbrevs499385 ! Node: Dynamic Abbrevs501374 ! Node: Picture502670 ! Node: Basic Picture505035 ! Node: Insert in Picture507493 ! Node: Tabs in Picture508909 ! Node: Rectangles in Picture510412 ! Node: Sending Mail512149 ! Node: Mail Format514498 ! Node: Mail Headers515839 ! Node: Mail Aliases519364 ! Node: Mail Mode521296 ! Node: Distracting NSA526072 ! Node: Rmail526840 ! Node: Rmail Scrolling530108 ! Node: Rmail Motion531084 ! Node: Rmail Deletion534233 ! Node: Rmail Inbox536980 ! Node: Rmail Files539251 ! Node: Rmail Output541727 ! Node: Rmail Labels544848 ! Node: Rmail Reply548613 ! Node: Rmail Summary552939 ! Node: Rmail Make Summary553922 ! Node: Rmail Summary Edit555689 ! Node: Rmail Editing558237 ! Node: Rmail Digest560468 ! Node: Out of Rmail561564 ! Node: Rmail Rot13562048 ! Node: Dired562667 ! Node: Dired Enter564048 ! Node: Dired Commands564911 ! Node: Dired Deletion565928 ! Node: Dired Visiting569927 ! Node: Marks vs. Flags571193 ! Node: Operating on Files573850 ! Node: Shell Commands in Dired577174 ! Node: Transforming File Names578858 ! Node: Comparison in Dired581275 ! Node: Subdirectories in Dired582094 ! Node: Subdirectory Motion583709 ! Node: Hiding Subdirectories584645 ! Node: Dired Updating585856 ! Node: Dired and Find587673 ! Node: Calendar/Diary588892 ! Node: Calendar Motion590252 ! Node: Calendar Unit Motion591010 ! Node: Move to Beginning or End593302 ! Node: Specified Dates594317 ! Node: Scroll Calendar595201 ! Node: Counting Days597218 ! Node: General Calendar597650 ! Node: Holidays598609 ! Node: Sunrise/Sunset600926 ! Node: Lunar Phases603530 ! Node: Other Calendars604916 ! Node: Calendar Systems606091 ! Node: To Other Calendar607943 ! Node: From Other Calendar609073 ! Node: Mayan Calendar610890 ! Node: Diary614046 ! Node: Diary Commands615552 ! Node: Format of Diary File618292 ! Node: Date Formats621065 ! Node: Adding to Diary623609 ! Node: Special Diary Entries625237 ! Node: Appointments629520 ! Node: Daylight Savings631462 ! Node: GNUS633018 ! Node: Buffers of GNUS633749 ! Node: GNUS Startup634760 ! Node: Summary of GNUS635734 ! Node: Sorting639214 ! Node: Shell644186 ! Node: Single Shell645177 ! Node: Interactive Shell646833 ! Node: Shell Mode649981 ! Node: Shell History652909 ! Node: Narrowing654681 ! Node: Hardcopy656967 ! Node: Two-Column658095 ! Node: Editing Binary Files661279 ! Node: Emacs Server662612 ! Node: Recursive Edit665304 ! Node: Dissociated Press668628 ! Node: Amusements671324 ! Node: Emulation672252 ! Node: Customization674893 ! Node: Minor Modes676587 ! Node: Variables679799 ! Node: Examining681919 ! Node: Edit Options683486 ! Node: Hooks685138 ! Node: Locals687254 ! Node: File Variables690661 ! Node: Keyboard Macros695284 ! Node: Basic Kbd Macro697465 ! Node: Save Kbd Macro700157 ! Node: Kbd Macro Query701831 ! Node: Key Bindings703789 ! Node: Keymaps704983 ! Node: Prefix Keymaps708390 ! Node: Local Keymaps709675 ! Node: Minibuffer Maps711840 ! Node: Rebinding712458 ! Node: Init Rebinding715526 ! Node: Function Keys717012 ! Node: Mouse Buttons719696 ! Node: Disabling722177 ! Node: Keyboard Translations723916 ! Node: Syntax725423 ! Node: Init File726553 ! Node: Init Syntax727983 ! Node: Init Examples730077 ! Node: Terminal Init734006 ! Node: Find Init735681 ! Node: Quitting736541 ! Node: Lossage740099 ! Node: DEL Gets Help740796 ! Node: Stuck Recursive741164 ! Node: Screen Garbled741870 ! Node: Text Garbled742989 ! Node: Unasked-for Search743628 ! Node: Emergency Escape745112 ! Node: Total Frustration746863 ! Node: Bugs747482 ! Node: Bug Criteria748183 ! Node: Understanding Bug Reporting750777 ! Node: Checklist753274 ! Node: Sending Patches763523 ! Node: Service768394 ! Node: Command Arguments768990 ! Node: Ordinary Arguments770922 ! Node: Initial Options771674 ! Node: Command Example773606 ! Node: Resume Arguments774456 ! Node: Display X776107 ! Node: Font X778488 ! Node: Colors X779962 ! Node: Window Size X781179 ! Node: Borders X783516 ! Node: Icons X784447 ! Node: Resources X785407 ! Node: Manifesto789118 ! Node: Glossary815128 ! Node: Key Index849457 ! Node: Command Index877027 ! Node: Variable Index918180 ! Node: Concept Index930253  End Tag Table diff -cprP -x *.elc emacs-19.12/info/emacs-1 emacs-19.13/info/emacs-1 *** emacs-19.12/info/emacs-1 Tue Jun 8 05:44:24 1993 --- emacs-19.13/info/emacs-1 Tue Jun 8 07:24:24 1993 *************** *** 9,15 **** Emacs is the extensible, customizable, self-documenting real-time display editor. This Info file describes how to edit with Emacs and some of how to customize it, but not how to extend it. It corresponds ! to GNU Emacs version 19.12. * Menu: --- 9,15 ---- Emacs is the extensible, customizable, self-documenting real-time display editor. This Info file describes how to edit with Emacs and some of how to customize it, but not how to extend it. It corresponds ! to GNU Emacs version 19.13. * Menu: *************** modification follow. *** 424,430 **** TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ! 1. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on --- 424,430 ---- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ! 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on *************** modification follow. *** 442,448 **** the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. ! 2. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the --- 442,448 ---- the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. ! 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the *************** modification follow. *** 454,460 **** and you may at your option offer warranty protection in exchange for a fee. ! 3. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: --- 454,460 ---- and you may at your option offer warranty protection in exchange for a fee. ! 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: *************** modification follow. *** 500,506 **** a volume of a storage or distribution medium does not bring the other work under the scope of this License. ! 4. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: --- 500,506 ---- a volume of a storage or distribution medium does not bring the other work under the scope of this License. ! 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: *************** modification follow. *** 540,546 **** distribution of the source code, even though third parties are not compelled to copy the source along with the object code. ! 5. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this --- 540,546 ---- distribution of the source code, even though third parties are not compelled to copy the source along with the object code. ! 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this *************** modification follow. *** 548,554 **** from you under this License will not have their licenses terminated so long as such parties remain in full compliance. ! 6. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. --- 548,554 ---- from you under this License will not have their licenses terminated so long as such parties remain in full compliance. ! 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. *************** modification follow. *** 557,563 **** License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. ! 7. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any --- 557,563 ---- License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. ! 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any *************** modification follow. *** 565,571 **** granted herein. You are not responsible for enforcing compliance by third parties to this License. ! 8. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this --- 565,571 ---- granted herein. You are not responsible for enforcing compliance by third parties to this License. ! 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this *************** modification follow. *** 598,604 **** This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. ! 9. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation --- 598,604 ---- This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. ! 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation *************** modification follow. *** 607,613 **** License incorporates the limitation as if written in the body of this License. ! 10. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. --- 607,613 ---- License incorporates the limitation as if written in the body of this License. ! 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. *************** modification follow. *** 620,626 **** does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. ! 11. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software --- 620,626 ---- does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. ! 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software *************** modification follow. *** 631,637 **** NO WARRANTY ! 12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT --- 631,637 ---- NO WARRANTY ! 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT *************** modification follow. *** 642,648 **** PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. ! 13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, --- 642,648 ---- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. ! 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, diff -cprP -x *.elc emacs-19.12/info/emacs-10 emacs-19.13/info/emacs-10 *** emacs-19.12/info/emacs-10 Tue Jun 8 05:44:25 1993 --- emacs-19.13/info/emacs-10 Tue Jun 8 07:24:25 1993 *************** *** 499,505 **** `LFD' Indent the current and start a new indented line ! (`fortran-reindent-then-newline-and-indent'). `M-LFD' Break the current line and set up a continuation line. --- 499,505 ---- `LFD' Indent the current and start a new indented line ! (`fortran-indent-new-line'). `M-LFD' Break the current line and set up a continuation line. *************** *** 513,523 **** continuation markers to their required columns, and independently indents the body of the statement based on its nesting in the program. ! The key `LFD' runs the command ! `fortran-reindent-then-newline-and-indent', which reindents the current ! line then makes and indents a new line. This command is useful to ! reindent the closing statement of `do' loops and other blocks before ! starting a new line. The key `C-M-q' runs `fortran-indent-subprogram', a command to reindent all the lines of the Fortran subprogram (function or --- 513,522 ---- continuation markers to their required columns, and independently indents the body of the statement based on its nesting in the program. ! The key `LFD' runs the command `fortran-indent-new-line', which ! reindents the current line then makes and indents a new line. This ! command is useful to reindent the closing statement of `do' loops and ! other blocks before starting a new line. The key `C-M-q' runs `fortran-indent-subprogram', a command to reindent all the lines of the Fortran subprogram (function or diff -cprP -x *.elc emacs-19.12/info/emacs-12 emacs-19.13/info/emacs-12 *** emacs-19.12/info/emacs-12 Tue Jun 8 05:44:29 1993 --- emacs-19.13/info/emacs-12 Tue Jun 8 07:24:27 1993 *************** *** 805,814 **** messages. Then you can read and delete the individual messages as it suits you. ! To undigestify a message, select it and then type `M-x ! undigestify-rmail-message'. This copies each submessage as a separate ! Rmail message and inserts them all following the digest. The digest ! message itself is flagged as deleted.  File: emacs, Node: Out of Rmail, Next: Rmail Rot13, Prev: Rmail Digest, Up: Rmail --- 805,814 ---- messages. Then you can read and delete the individual messages as it suits you. ! To do this, type `M-x undigestify-rmail-message' after selecting the ! digest message. This extracts the submessages as separate Rmail ! messages, and inserts them following the digest. The digest message ! itself is flagged as deleted.  File: emacs, Node: Out of Rmail, Next: Rmail Rot13, Prev: Rmail Digest, Up: Rmail diff -cprP -x *.elc emacs-19.12/info/emacs-16 emacs-19.13/info/emacs-16 *** emacs-19.12/info/emacs-16 Tue Jun 8 05:44:36 1993 --- emacs-19.13/info/emacs-16 Tue Jun 8 07:24:31 1993 *************** *** 743,752 **** Checklist for Bug Reports ------------------------- ! The best way to send a bug report is by electronic mail to ! `bug-gnu-emacs@prep.ai.mit.edu'. Do not post the bug report as ! netnews; mail is more reliable about reporting a correct address for how ! to reach you if we need more information. If you can't send electronic mail, then mail the bug report on paper to this address: --- 743,753 ---- Checklist for Bug Reports ------------------------- ! The best way to send a bug report is to mail it electronically to the ! Emacs maintainers at `bug-gnu-emacs@prep.ai.mit.edu'. Please do not ! post the bug report as netnews; mail is more reliable than netnews ! about reporting your correct address, which we may need in order to ask ! you for more information. If you can't send electronic mail, then mail the bug report on paper to this address: diff -cprP -x *.elc emacs-19.12/info/emacs-17 emacs-19.13/info/emacs-17 *** emacs-19.12/info/emacs-17 Tue Jun 8 05:44:37 1993 --- emacs-19.13/info/emacs-17 Tue Jun 8 07:24:32 1993 *************** *** 254,261 **** =========================== The `-geometry' option controls the size and position of the initial ! Emacs frame. The `-w' option is a synonym for `-geometry'. Here is ! the format for specifying the window geometry: WIDTHxHEIGHT{+-}XOFFSET{+-}YOFFSET --- 254,260 ---- =========================== The `-geometry' option controls the size and position of the initial ! Emacs frame. Here is the format for specifying the window geometry: WIDTHxHEIGHT{+-}XOFFSET{+-}YOFFSET diff -cprP -x *.elc emacs-19.12/info/emacs-20 emacs-19.13/info/emacs-20 *** emacs-19.12/info/emacs-20 Tue Jun 8 05:44:42 1993 --- emacs-19.13/info/emacs-20 Tue Jun 8 07:24:36 1993 *************** *** 34,41 **** * backward-delete-char-untabify: Program Modes. * backward-kill-sentence: Kill Errors. * backward-kill-sentence: Sentences. - * backward-kill-word: Words. * backward-kill-word: Kill Errors. * backward-list: List Commands. * backward-page: Pages. * backward-paragraph: Paragraphs. --- 34,41 ---- * backward-delete-char-untabify: Program Modes. * backward-kill-sentence: Kill Errors. * backward-kill-sentence: Sentences. * backward-kill-word: Kill Errors. + * backward-kill-word: Words. * backward-list: List Commands. * backward-page: Pages. * backward-paragraph: Paragraphs. *************** *** 88,94 **** * calendar-next-tzolkin-date: Mayan Calendar. * calendar-other-month: Specified Dates. * calendar-phases-of-moon: Lunar Phases. - * calendar-previous-calendar-round-date: Mayan Calendar. * calendar-previous-haab-date: Mayan Calendar. * calendar-previous-tzolkin-date: Mayan Calendar. * calendar-print-astro-day-number: To Other Calendar. --- 88,93 ---- *************** *** 144,151 **** * define-key: Init Rebinding. * define-mail-alias: Mail Aliases. * delete-backward-char: Inserting Text. - * delete-backward-char: Kill Errors. * delete-backward-char: Killing. * delete-blank-lines: Blank Lines. * delete-char: Killing. * delete-file: Misc File Ops. --- 143,150 ---- * define-key: Init Rebinding. * define-mail-alias: Mail Aliases. * delete-backward-char: Inserting Text. * delete-backward-char: Killing. + * delete-backward-char: Kill Errors. * delete-blank-lines: Blank Lines. * delete-char: Killing. * delete-file: Misc File Ops. *************** *** 230,237 **** * doctor: Total Frustration. * down-list: List Commands. * downcase-region: Case. - * downcase-word: Fixing Case. * downcase-word: Case. * edit-abbrevs: Editing Abbrevs. * edit-abbrevs-redefine: Editing Abbrevs. * edit-options: Edit Options. --- 229,236 ---- * doctor: Total Frustration. * down-list: List Commands. * downcase-region: Case. * downcase-word: Case. + * downcase-word: Fixing Case. * edit-abbrevs: Editing Abbrevs. * edit-abbrevs-redefine: Editing Abbrevs. * edit-options: Edit Options. *************** *** 297,307 **** * fortran-column-ruler: Fortran Columns. * fortran-comment-region: Fortran Comments. * fortran-indent-line: ForIndent Commands. * fortran-indent-subprogram: ForIndent Commands. * fortran-mode: Fortran. * fortran-next-statement: Fortran Motion. * fortran-previous-statement: Fortran Motion. - * fortran-reindent-then-newline-and-indent: ForIndent Commands. * fortran-split-line: ForIndent Commands. * fortran-window-create: Fortran Columns. * forward-char: Moving Point. --- 296,306 ---- * fortran-column-ruler: Fortran Columns. * fortran-comment-region: Fortran Comments. * fortran-indent-line: ForIndent Commands. + * fortran-indent-new-line: ForIndent Commands. * fortran-indent-subprogram: ForIndent Commands. * fortran-mode: Fortran. * fortran-next-statement: Fortran Motion. * fortran-previous-statement: Fortran Motion. * fortran-split-line: ForIndent Commands. * fortran-window-create: Fortran Columns. * forward-char: Moving Point. *************** *** 364,371 **** * hide-leaves: Outline Visibility. * hide-subtree: Outline Visibility. * holidays: Holidays. - * iconify-frame: Misc X. * iconify-frame: Exiting. * indent-c-exp: Multi-line Indent. * indent-for-comment: Comments. * indent-new-comment-line: Comments. --- 363,370 ---- * hide-leaves: Outline Visibility. * hide-subtree: Outline Visibility. * holidays: Holidays. * iconify-frame: Exiting. + * iconify-frame: Misc X. * indent-c-exp: Multi-line Indent. * indent-for-comment: Comments. * indent-new-comment-line: Comments. *************** *** 707,716 **** * transient-mark-mode: Transient Mark. * transpose-chars: Transpose. * transpose-lines: Transpose. - * transpose-sexps: List Commands. * transpose-sexps: Transpose. ! * transpose-words: Words. * transpose-words: Transpose. * undigestify-rmail-message: Rmail Digest. * undo: Undo. * unexpand-abbrev: Expanding Abbrevs. --- 706,715 ---- * transient-mark-mode: Transient Mark. * transpose-chars: Transpose. * transpose-lines: Transpose. * transpose-sexps: Transpose. ! * transpose-sexps: List Commands. * transpose-words: Transpose. + * transpose-words: Words. * undigestify-rmail-message: Rmail Digest. * undo: Undo. * unexpand-abbrev: Expanding Abbrevs. *************** *** 718,725 **** * untabify: Just Spaces. * up-list: TeX Editing. * upcase-region: Case. - * upcase-word: Fixing Case. * upcase-word: Case. * validate-tex-region: TeX Editing. * vc-cancel-version: Editing with VC. * vc-create-snapshot: Making Snapshots. --- 717,724 ---- * untabify: Just Spaces. * up-list: TeX Editing. * upcase-region: Case. * upcase-word: Case. + * upcase-word: Fixing Case. * validate-tex-region: TeX Editing. * vc-cancel-version: Editing with VC. * vc-create-snapshot: Making Snapshots. diff -cprP -x *.elc emacs-19.12/info/emacs-21 emacs-19.13/info/emacs-21 *** emacs-19.12/info/emacs-21 Tue Jun 8 05:44:43 1993 --- emacs-19.13/info/emacs-21 Tue Jun 8 07:24:37 1993 *************** *** 92,98 **** * find-file-visit-truename: File Aliases. * fortran-analyze-depth: ForIndent Cont. * fortran-break-before-delimiters: Fortran Autofill. ! * fortran-check-all-num-for-matching-do: ForIndent Vars. * fortran-column-ruler: Fortran Columns. * fortran-comment-indent-char: Fortran Comments. * fortran-comment-indent-style: Fortran Comments. --- 92,98 ---- * find-file-visit-truename: File Aliases. * fortran-analyze-depth: ForIndent Cont. * fortran-break-before-delimiters: Fortran Autofill. ! * fortran-check-all-num...: ForIndent Vars. * fortran-column-ruler: Fortran Columns. * fortran-comment-indent-char: Fortran Comments. * fortran-comment-indent-style: Fortran Comments. *************** *** 104,111 **** * fortran-electric-line-number: ForIndent Num. * fortran-if-indent: ForIndent Vars. * fortran-line-number-indent: ForIndent Num. ! * fortran-minimum-statement-indent-fixed: ForIndent Vars. ! * fortran-minimum-statement-indent-tab: ForIndent Vars. * fortran-structure-indent: ForIndent Vars. * fortran-tab-mode-default: ForIndent Cont. * gdb-mode-hook: GUD Customization. --- 104,110 ---- * fortran-electric-line-number: ForIndent Num. * fortran-if-indent: ForIndent Vars. * fortran-line-number-indent: ForIndent Num. ! * fortran-minimum-statement-indent...: ForIndent Vars. * fortran-structure-indent: ForIndent Vars. * fortran-tab-mode-default: ForIndent Cont. * gdb-mode-hook: GUD Customization. diff -cprP -x *.elc emacs-19.12/info/emacs-4 emacs-19.13/info/emacs-4 *** emacs-19.12/info/emacs-4 Tue Jun 8 05:44:46 1993 --- emacs-19.13/info/emacs-4 Tue Jun 8 07:24:39 1993 *************** *** 30,42 **** `M-x append-to-file' Append region to contents of specified file, at the end. ! To accumulate text into a buffer, use the command `M-x ! append-to-buffer'. This reads a buffer name, them inserts a copy of ! the region into the buffer specified. If you specify a nonexistent ! buffer, `append-to-buffer' creates the buffer. The text is inserted ! wherever point is in that buffer. If you have been using the buffer ! for editing, the copied text goes into the middle of the text of the ! buffer, wherever point happens to be in it. Point in that buffer is left at the end of the copied text, so successive uses of `append-to-buffer' accumulate the text in the --- 30,42 ---- `M-x append-to-file' Append region to contents of specified file, at the end. ! To accumulate text into a buffer, use `M-x append-to-buffer'. This ! reads a buffer name, them inserts a copy of the region into the buffer ! specified. If you specify a nonexistent buffer, `append-to-buffer' ! creates the buffer. The text is inserted wherever point is in that ! buffer. If you have been using the buffer for editing, the copied text ! goes into the middle of the text of the buffer, wherever point happens ! to be in it. Point in that buffer is left at the end of the copied text, so successive uses of `append-to-buffer' accumulate the text in the diff -cprP -x *.elc emacs-19.12/info/emacs-7 emacs-19.13/info/emacs-7 *** emacs-19.12/info/emacs-7 Tue Jun 8 05:44:51 1993 --- emacs-19.13/info/emacs-7 Tue Jun 8 07:24:42 1993 *************** *** 408,418 **** (`delete-other-windows'). `C-x ^' ! Make the selected window taller, at the expense of the other(s) ! (`enlarge-window'). `C-x }' ! Make the selected window wider (`enlarge-window-horizontally'). To delete a window, type `C-x 0' (`delete-window'). (That is a zero.) The space occupied by the deleted window is given to an --- 408,417 ---- (`delete-other-windows'). `C-x ^' ! Make selected window taller (`enlarge-window'). `C-x }' ! Make selected window wider (`enlarge-window-horizontally'). To delete a window, type `C-x 0' (`delete-window'). (That is a zero.) The space occupied by the deleted window is given to an diff -cprP -x *.elc emacs-19.12/info/emacs-8 emacs-19.13/info/emacs-8 *** emacs-19.12/info/emacs-8 Tue Jun 8 05:44:53 1993 --- emacs-19.13/info/emacs-8 Tue Jun 8 07:24:42 1993 *************** *** 303,314 **** Conversely, the command `M-^' deletes the prefix (if it occurs) after the newline that it deletes (*note Indentation::.). ! Another way to use fill prefixes is through `M-x ! fill-individual-paragraphs'. This command divides the region into paragraphs, treating every change in the amount of indentation as the ! start of a new paragraph, and fills each of these paragraphs. Thus, all ! the lines in one "paragraph" have the same amount of indentation. That ! indentation serves as the fill prefix for that paragraph. `M-x fill-nonuniform-paragraphs' is a similar command that divides the region into paragraphs in a different way. It considers only --- 303,314 ---- Conversely, the command `M-^' deletes the prefix (if it occurs) after the newline that it deletes (*note Indentation::.). ! You can use `M-x fill-individual-paragraphs' to set the fill prefix ! for each paragraph automatically. This command divides the region into paragraphs, treating every change in the amount of indentation as the ! start of a new paragraph, and fills each of these paragraphs. Thus, ! all the lines in one "paragraph" have the same amount of indentation. ! That indentation serves as the fill prefix for that paragraph. `M-x fill-nonuniform-paragraphs' is a similar command that divides the region into paragraphs in a different way. It considers only *************** selects the appropriate mode. If it can *** 673,681 **** the buffer is empty), the variable `tex-default-mode' controls which mode is used. ! The commands `M-x plain-tex-mode', `M-x latex-mode',and `M-x ! slitex-mode' explicitly select the variants of TeX mode. Use these ! commands when `M-x tex-mode' does not guess right. * Menu: --- 673,681 ---- the buffer is empty), the variable `tex-default-mode' controls which mode is used. ! When `M-x tex-mode' does not guess right, you can use the commands ! `M-x plain-tex-mode', `M-x latex-mode', and `M-x slitex-mode' to select ! explicitly the particular variants of TeX mode. * Menu: diff -cprP -x *.elc emacs-19.12/lib-src/ChangeLog emacs-19.13/lib-src/ChangeLog *** emacs-19.12/lib-src/ChangeLog Tue Jun 8 05:42:50 1993 --- emacs-19.13/lib-src/ChangeLog Tue Jun 8 03:15:07 1993 *************** *** 1,5 **** --- 1,14 ---- + Tue Jun 8 03:14:38 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * wakeup.c: Include sys/types.h, too; I think that's where time_t + comes from, not sys/time.h. + Wed Jun 2 02:50:10 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + * wakeup.c: Include sys/time.h. + + * etags.c: #undef static. + * Version 19.12 released. * Makefile.in (all): Exclude INSTALLABLE_SCRIPTS and SCRIPTS from deps. *************** Sun Mar 20 13:17:13 1988 Richard M. Sta *** 1142,1151 **** * server.c [not BSD and not HAVE_SYSVIPC]: fix error message. * loadst.c (main) [XENIX]: use /usr/spool/mail, not /usr/mail. - - Local Variables: - mode: indented-text - left-margin: 8 - fill-column: 74 - version-control: never - End: --- 1151,1153 ---- diff -cprP -x *.elc emacs-19.12/lib-src/etags.c emacs-19.13/lib-src/etags.c *** emacs-19.12/lib-src/etags.c Tue Jun 8 05:42:38 1993 --- emacs-19.13/lib-src/etags.c Wed Jun 2 12:06:12 1993 *************** *** 32,37 **** --- 32,38 ---- #include #include "../src/config.h" + #undef static #include "getopt.h" diff -cprP -x *.elc emacs-19.12/lib-src/wakeup.c emacs-19.13/lib-src/wakeup.c *** emacs-19.12/lib-src/wakeup.c Tue Jun 8 05:42:47 1993 --- emacs-19.13/lib-src/wakeup.c Tue Jun 8 03:14:56 1993 *************** *** 2,7 **** --- 2,9 ---- #include #include + #include + #include struct tm *localtime (); diff -cprP -x *.elc emacs-19.12/lisp/ChangeLog emacs-19.13/lisp/ChangeLog *** emacs-19.12/lisp/ChangeLog Tue Jun 8 05:38:55 1993 --- emacs-19.13/lisp/ChangeLog Tue Jun 8 03:45:17 1993 *************** *** 1,3 **** --- 1,246 ---- + Tue Jun 8 00:40:46 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * fortran.el (fortran-indent-new-line): Renamed from + fortran-reindent-then-newline-and-indent. + + * mouse.el (mouse-drag-region-1): Un-comment-out this function. + + * info.el (Info-follow-reference): Fix completion defaulting. + + Mon Jun 7 00:25:00 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * apropos.el (safe-documentation): Don't crash on byte-compiled macro. + + * telnet.el (telnet-simple-send): New function. + (telnet): Arrange to use that. + + * sun-keys.el: File deleted. + + * texinfo.el (texinfo-section-types-regexp): Add @chapheading. + + * gud.el: Doc fixes. Delete local variable list at the end. + (expr-forward-sexp): Renamed from forw-expr. + (expr-backward-sexp): Renamed from back-expr. + + * case-table.el (describe-buffer-case-table): Merge locals i and ch. + Make *Help* current buffer for describe-vector. + + * bibtex.el: Fix typos in previous change. + Add a few menu items. + + * compile.el (compilation-error-regexp-alist): Make sure each regexp + can only match a few characters at the front. Split off the Mips + CC regexp from the Apollo regexp. + + * rmail.el (rmail-variables): Default rmail-inbox-list here. + (rmail): Not here. + + * ange-ftp.el (ange-ftp-real-load): New function. + (ange-ftp-load): New function--handles `load'. + + Sun Jun 6 18:29:36 1993 Paul Eggert (eggert@twinsun.com) + + * term/sun-mouse.el (mouse-union-first-preferred): Renamed from + mouse-union-first-prefered. + + Sun Jun 6 17:46:25 1993 Paul Eggert (eggert@twinsun.com) + + * sc.el (sc-consistent-cite-p): Renamed from sc-consistant-cite-p. + + * etags.el (etags-recognize-tags-table): Fix misspelling of + find-tag-regexp-next-line-after-failure-p. + + * bibtex.el (bibtex-name-alignment): Renamed from + bibtex-name-alignement. + + * allout.el (outlinify-sticky): Renamed from outlineify-sticky. + + * faces.el (x-create-frame-with-faces): Reversevideo -> ReverseVideo. + * frame.el (frame-initialize): Likewise. + + Sun Jun 6 01:27:16 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * outline.el (outline-minor-mode): Add autoload cookie. + + * bibtex.el: Define 2 local menu-bar submaps. + (bibtex-x-help, bibtex-x-environment): Deleted. + + * isearch.el (search-upper-case): Make `no-yanks' the default. + (isearch-no-upper-case-p): New arg REGEXP-FLAG. + (isearch-search): Pass new arg. + (isearch-member-equal): Deleted. + (isearch-overlay): New variable. + (isearch-highlight, isearch-dehighlight): Rewritten to use overlays. + + * dired.el (dired-unmark-all-files): Read arg as just a character. + Use non-regexp search to find a specific mark. + Use subst-char-in-region to make the change. + Improve the message at the end. + + * vip.el (vip-ctl-key-equivalent): Use vip-escape-to-emacs. + (vip-escape-to-emacs): Use read-key-sequence and key-binding. + Arg EVENTS replaces arg CHAR. + (vip-ESC, vip-ctl-c, vip-ctl-x, vip-ctl-h): These callers changed. + + * compile.el (compile-internal): Alter current buffer only temporarily. + + Sat Jun 5 13:08:08 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * sendmail.el (mail-do-fcc): Replace the code for appending to buffer. + + * rmailsum.el (rmail-summary-next-msg): Fix number of dots in regexp. + + * scroll-bar.el (scroll-bar-drag-1): + Calculate position relative to the accessible part of the buffer. + + * menu-bar.el (menu-bar-help-menu): Add defvar. + (menu-bar-edit-menu, menu-bar-file-menu): Likewise. + + * dired.el (dired-flag-backup-files): Handle `*' made by `ls -F'. + + * ange-ftp.el (internal-ange-ftp-mode): Renamed from ange-ftp-mode. + Callers changed. + + * menu-bar.el (window-system): Enable menu bars only if + window-system is non-nil. + + * add-log.el (add-log-current-defun): Fix typos in last change. + + Sat Jun 5 04:39:08 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * term/x-win.el (x-selection-timeout): Set it, using x-get-resource. + + Fri Jun 4 07:14:44 1993 Paul Eggert (eggert@twinsun.com) + + * timezone.el: (timezone-make-date-arpa-standard, + timezone-make-date-sortable): Move common code into timezone-fix-time. + (timezone-fix-time): Merge common code from above two functions. + Yield time zone at end of result vector. + Set time zone offset correctly as of the given time, + instead of guessing from the current offset. + (timezone-make-arpa-date, timezone-zone-to-minute): Convert + current-time-zone style timezones into RFC-822 style timezones. + + (timezone-time-from-absolute, timezone-time-zone-from-absolute, + timezone-day-number, timezone-absolute-from-gregorian): + More functions borrowed from Reingold's calendar package. + + (timezone-make-arpa-date, timezone-make-sortable-date): Can safely + assume that year includes century, since timezone-fix-time guarantees + this. + + * gnuspost.el (gnus-current-time-zone): New function, which tries + current-time-zone, and if that fails falls back on gnus-local-timezone. + (gnus-inews-date): Use it. + (gnus-inews-valid-date): New optional args TIME (default now) and ZONE + (default GMT). + (gnus-inews-buggy-date): New optional arg TIME (default now). + + * gnus.el (gnus-local-timezone): Now used only if current-time-zone + does not work. + + Fri Jun 4 01:16:48 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * mh-e.el (mh-yank-cur-msg): Use (mark t). + + * simple.el (mark): Doc fix. + + * add-log.el (add-log-current-defun): Handle Fortran. + + * rmail.el (rmail-resend): Require sendmail and mailalias. + + * time.el (display-time-24hr-format): Make it a user option. + + * edt.el (GOLD-prefix): Define *after* GOLD-map. + + * dired.el (dired-change-marks): Just ding if one arg is RET. + Search for strings, not regexps. Use subst-char-in-region. + + * isearch.el (isearch-mode): Set isearch-window-configuration + only if in slow mode. + (isearch-done): Use isearch-window-configuration only if non-nil. + (isearch-other-control-char): For mouse event, call isearch-done + in the buffer whose keymap was used. + + * flow-ctrl.el (enable-flow-control): Doc fix. + + Thu Jun 3 00:47:23 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * sendmail.el (mail-do-fcc): Omit first 2 lines when appending + to an RMAIL buffer. + + * simple.el (kill-ring-save): Doc fix. + + * rmailsum.el (rmail-summary-expunge-and-save): Do save-buffer last. + Use two separate save-excursion calls. + (rmail-summary-input): Use pop-to-buffer. + (rmail-summary-get-new-mail): Gobble rmail-current-message; + later go to that message. + (rmail-summary-next-msg): Start at end of line, if moving forward. + Move to beginning of line, after the loop. + (rmail-new-summary): Fix format of elt in minor-mode-alist. + + * rmail.el (rmail-select-summary): Add a save-excursion. + + * rmailsum.el (rmail-summary-expunge-and-save): + Call set-buffer again after rmail-only-expunge. + (rmail-summary-add-label, rmail-summary-kill-label): + Fix reading the label. + (rmail-summary-rmail-update): Bind window locally. + Use unwind-protect, not save-window-excursion. + + * vc-hooks.el (vc-find-file-hook): Check buffer-file-name is non-nil. + + * hideif.el (define-hide-ifdef-mode-map): Don't bind C-c LETTER. + Use C-c ESC LETTER instead. + Handle case where where-is-internal returns nil. + + * texinfmt.el: Provide texinfmt. + + * bytecomp.el (byte-compile-insert-header): Fix backwards test + of byte-compile-compatibility. + + * info.el (Info-mode-map): Bind mouse-2, not mouse-3. + + * view.el (View-scroll-lines-forward): If we exit, do nothing else. + + * calendar.el (calendar-mode): Doc fix. + (calendar-mark-ring): New defvar. + + * frame.el (frame-initialize): Set cursor-color last. + + * vip.el (vip-escape-to-emacs): Temporarily restore local map + and use read-key-sequence. + + * rmailsum.el (rmail-summary-by-senders): New function. + (rmail-message-senders-p): New function. + + Thu Jun 3 17:58:59 1993 Dave Gillespie (daveg@synaptics.com) + + * complete.el (PC-lisp-complete-symbol): Added. + (PC-look-for-include-file): Recognize some Lisp notations. + (PC-include-file-all-completions): Fixed uppercase variable names. + + Wed Jun 2 12:56:57 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * info.el (Info-suffix-list): Handle .gz suffix. + * ange-ftp.el (ange-ftp-binary-file-name-regexp): Handle .gz. + + * ehelp.el (electric-help-command-loop): Use equal to compare + lists of events. + + * electric.el (Electric-command-loop): Use eq to compare events. + + * diff.el (diff): Really do use arg SWITCHES. + + * frame.el (frame-initialize): Delete geometry parms + from initial-frame-alist. + + Tue Jun 1 17:40:30 1993 Ken Manheimer (klm@coil.nist.gov) + + * allout.el (outlineify-sticky): Reconciled provisions for + non-standard and standard prefix leaders. + Tue Jun 1 16:09:26 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) * Version 19.12 released. *************** Mon May 31 23:21:41 1993 Richard Stallm *** 83,88 **** --- 326,335 ---- * outline.el (outline-flag-region): Pass t as NOUNDO arg to subst-char-in-region. No need to restore buffer-modified-p by hand. + Mon May 31 20:29:00 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu) + + * term/x-win.el (x-invocation-args): Add defvar. + Mon May 31 19:59:12 1993 Junio Hamano (junio@twinsun.com) * lisp/window.el (count-windows): PROC argument of *************** Sun May 30 00:15:27 1993 Richard Stallm *** 153,158 **** --- 400,420 ---- * Version 19.10 released. + Sat May 29 00:40:17 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * term/bobcat.el: Just load term/keyswap.el. + + * term/vt200.el: Just load term/vt100.el. + * term/apollo.el: Just load term/vt100.el. + * term/vt102.el, term/vt125.el, term/vt201.el, term/vt220.el, + term/vt240.el, term/vt300.el, term/vt320.el, term/vt400.el, + term/vt420.el: New files. Just load vt100.el. + + * term/lk201.el: New file. + * term/vt100.el: Use term/lk201.el. + + * term/vt100.el (vt100-wide-mode): Add missing arg in set-frame-width. + Sat May 29 00:33:39 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) * startup.el (command-line-1): Pass arg to other-window. *************** Thu May 27 02:35:32 1993 Jim Blandy (j *** 257,262 **** --- 519,529 ---- * Version 19.9 released. + Thu May 27 01:37:30 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * term/x-win.el: Check for a geometry resource, and apply it to the + initial frame. + Wed May 26 23:32:25 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * isearch.el (isearch-forward): Remove the claim that *************** Tue May 25 11:47:35 1993 Richard Stallm *** 355,360 **** --- 622,639 ---- * loaddefs.el: copy-to-register now on C-x r s. + Tue May 25 11:06:28 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * term/x-win.el: Pass x-command-line-resources to x-open-connection. + (x-command-line-resources): New variable. + (x-handle-rn-switch): New function. + (command-switch-alist): Add -rn. + + Tue May 25 06:26:51 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * term/x-win.el (command-switch-alist, x-switch-definitions): Treat + `-i' like `-itype', as in Emacs 18. + Tue May 25 05:15:14 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * Version 19.8 released. *************** Tue May 25 05:15:14 1993 Jim Blandy (j *** 373,378 **** --- 652,662 ---- * disp-table.el (standard-display-european): Doc fix. Make it autoload. Make it respond to prefix arg like a minor mode. + Mon May 24 17:17:02 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * term/x-win.el (x-select-text): New arg PUSH. + (x-switch-definitions): Represent -r as `reverse' option. + Mon May 24 17:16:41 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) * files.el (find-file-read-only-other-window): *************** Thu May 13 05:28:14 1993 Roland McGrath *** 775,782 **** (visit-tags-table-buffer): Call tags-table-including first with CORE-ONLY set, and then afterwards with it clear. ! Wed May 12 10:51:35 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) * menu-bar.el: Provide 'menu-bar. * compile.el (Setting minor-mode-map-alist): --- 1059,1067 ---- (visit-tags-table-buffer): Call tags-table-including first with CORE-ONLY set, and then afterwards with it clear. ! Wed May 12 12:13:49 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + * term/x-win.el: Require menu-bar.el. * menu-bar.el: Provide 'menu-bar. * compile.el (Setting minor-mode-map-alist): *************** Sat May 8 23:15:07 1993 Jim Blandy (j *** 903,909 **** * faces.el: Call internal-set-face-1, not internat-set-face-1. ! * faces.el: Don't set frame-creation-function here; x-win.el is the appropriate place to set it. * faces.el: Only apply x-initialize-frame-faces to X frames; pass --- 1188,1194 ---- * faces.el: Call internal-set-face-1, not internat-set-face-1. ! * faces.el: Don't set frame-creation-function here; term/x-win.el is the appropriate place to set it. * faces.el: Only apply x-initialize-frame-faces to X frames; pass *************** Sat May 8 23:15:07 1993 Jim Blandy (j *** 911,916 **** --- 1196,1207 ---- * faces.el: Provide 'faces. + Sat May 8 22:42:26 1993 Jim Blandy (jimb@totoro.cs.oberlin.edu) + + * term/x-win.el: Since we require faces.el, there's no point in setting + frame-creation-function to x-create-frame - just set it directly + to x-create-frame-with-faces. + Sat May 8 12:45:17 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) * sendmail.el (mail-do-fcc): Don't output a newline before From... *************** Fri May 7 12:50:35 1993 Richard Stallm *** 944,949 **** --- 1235,1245 ---- * rmail.el (rmail-resend): Add `resent' attribute. (rmail-forward): With prefix arg, run rmail-resend. + Fri May 7 03:02:55 1993 Jim Blandy (jimb@totoro.cs.oberlin.edu) + + * term/x-win.el: (require 'faces), too. Move (require 'select) to top, + with the other requires. + Thu May 6 13:13:10 1993 Jim Blandy (jimb@totoro.cs.oberlin.edu) * finder.el: Bind finder-exit to 'q', not 'x'; the former is the *************** Mon Apr 12 21:36:52 1993 Jim Blandy (j *** 1413,1418 **** --- 1709,1719 ---- * bytecomp.el: The `suspend-hooks' variable is obsolete now, and `suspend-hook' is the right name. + Mon Apr 12 21:36:20 1993 Jim Blandy (jimb@totoro.cs.oberlin.edu) + + * term/sun-mouse.el (suspend-emacstool): Run suspend-hook, not + suspend-hooks. + Mon Apr 12 07:54:16 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) * rot13.el (rot13-display-table): Use `vector', not `make-rope'. *************** Thu Mar 25 01:57:43 1993 Eric S. Raymon *** 1864,1869 **** --- 2165,2176 ---- * emacsbug.el: Added a (provide 'emacsbug); lisp-mnt.el needs this. + Wed Mar 24 23:38:53 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * term/x-win.el (x-defined-colors): Use x-color-defined-p instead of + x-defined-color. + (x-handle-geometry): Use x-parse-geometry instead of x-geometry. + Wed Mar 24 20:27:07 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * calendar.el (calendar-standard-time-zone-name, *************** Wed Mar 24 20:27:07 1993 Jim Blandy (j *** 1873,1878 **** --- 2180,2190 ---- * calendar.el (calendar-time-zone): Fix code which initializes this. + Wed Mar 24 02:59:21 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu) + + * term/x-win.el: Bind M-next to an alias scroll-other-window-1 + to get better doc string output. + Tue Mar 23 18:27:03 1993 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) * compile.el: Fix library headers. *************** Mon Mar 22 22:44:49 1993 Eric S. Raymon *** 1906,1911 **** --- 2218,2228 ---- my pass over the lisp libraries; I'll teach the finder about these commentary sections soon. + Mon Mar 22 17:35:29 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu) + + * term/x-win.el (x-win-suspend-error): + suspend-hook renamed from suspend-hooks. + Mon Mar 22 16:53:22 1993 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) * help.el, register.el, replace.el, reposition.el, rfc822.el, *************** Thu Mar 18 11:34:34 1993 Edward M. Rein *** 2038,2043 **** --- 2355,2372 ---- * tex-mode.el (tex-send-command): Fix the command sent so that no blank is inserted when replacing the asterisk with the file name. + Thu Mar 18 03:38:31 1993 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) + + * term/wyse50.el: (function-key-map) Nuke code no longer bound to keys. + + * term/tvi970.el: (function-key-map) + As many key cookies as possible renamed to fit the new conventions + documented in lisp/term/README. + + * term/vt100.el, term/news.el: (function-key-map) + Fix things so that bindings are added to the keymap already created by + terminal initialization. + Wed Mar 17 16:57:17 1993 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) * help-screen.el: Installed, following release. Now package *************** Sat Mar 13 16:45:11 1993 Richard Stallm *** 2163,2168 **** --- 2492,2501 ---- (rmail-summary-rmail-update): Do nothing if rmail buffer not visible. (rmail-summary-mode-map): Don't bind C-n, C-p. Use ordinary move cmds. + Fri Mar 12 19:53:22 1993 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) + + * term/x-win.el: Added library headers. + Fri Mar 12 14:53:51 1993 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) * loaddefs.el (global-map): Fixed a typo in the binding of *************** Fri Mar 12 14:53:51 1993 Eric S. Raymon *** 2172,2182 **** --- 2505,2543 ---- any key bindings or code, and won't without making sure there won't be any repeat of the bad-patch brouhaha. + Thu Mar 11 18:50:04 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * term/x-win.el: Cancel previous change, since it discarded + earlier necessary changes. + Thu Mar 11 13:45:58 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) * term/x-win.el: Cancel previous change, since it discarded earlier necessary changes. + Thu Mar 11 09:00:25 1993 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) + + * term/vt100.el: + Added headers, commented out code the duplicates startup effects. + + * term/x-win.el: Added headers, removed function bindings. + + * term/wyse50.el: Added headers, changed some keycap names. + + * term/tvi970.el: Added headers, changes some keycap names. + + * term/sun.el: Added headers, removed function-key bindings. + + * term/news.el: Added headers, changed a few cookie names. + + * term/keyswap.el: Initial revision + + Thu Mar 11 07:01:17 1993 Jim Blandy (jimb@mole.gnu.ai.mit.edu) + + * term/x-win.el: Disable suspending under X windows by setting + suspend-hooks, not suspend-hook. The latter is an obsolete name. + Use add-hook instead of setting suspend-hooks directly. + Thu Mar 11 03:00:19 1993 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) A boatload of changes to terminal support and terminal capability *************** Wed Mar 10 12:06:52 1993 Jim Blandy (j *** 2257,2262 **** --- 2618,2630 ---- we write the buffer to a temp file and then rename it, don't neglect to set the new file's modes properly. + Wed Mar 10 06:31:49 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * term/x-win.el (function-key-map): + Map key symbols backspace, return... into ASCII chars. + Likewise their Meta versions. + Also add `ascii-character' properties. + Tue Mar 9 17:58:31 1993 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) * term/at386.el: Removed. The new terminal initialization stuff *************** Sun Mar 7 18:20:54 1993 Paul Eggert ( *** 2354,2359 **** --- 2722,2732 ---- listing, don't append the latest output unless diff was actually run; otherwise, you'll get the output from the previous file by mistake. + Sun Mar 7 04:22:37 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * term/x-win.el (function-key-map): + Map key symbols backspace, return... into ASCII chars. + Sun Mar 7 02:34:45 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) * isearch-mode.el (isearch-mode): Don't make a pre-command-hook. *************** Tue Mar 2 13:38:56 1993 Richard Stallm *** 2494,2499 **** --- 2867,2883 ---- * add-log.el (add-change-log-entry): Never move past second hdr line. + Tue Mar 2 07:35:52 1993 Jim Blandy (jimb@mole.gnu.ai.mit.edu) + + * term/x-win.el (x-switch-definitions): Use the proper names for + the scroll bar parameters. + + Use the term `scroll bar', instead of `scrollbar'. + * term/x-win.el, frame.el, mouse.el: Terminology changed. + * scrollbar.el: Renamed to scroll-bar.el. + + * term/x-win.el: Require `scroll-bar', not `scrollbar'. + Tue Mar 2 00:25:09 1993 Jim Blandy (jimb@totoro.cs.oberlin.edu) * frame.el (new-frame): Doc fix. *************** Thu Jan 28 01:14:05 1993 Richard Stallm *** 2831,2836 **** --- 3215,3232 ---- * simple.el: Don't use the completion-oriented history commands. * paths.el (sendmail-program): Try /usr/ucblib/sendmail. + Tue Jan 26 01:26:58 1993 Jim Blandy (jimb@mole.gnu.ai.mit.edu) + + * term/x-win.el: x-selection-value has been renamed to x-selection. + x-own-selection has been renamed to x-set-selection, and the order + of its arguments has been reversed, for consistency with other + lisp functions like put and aset. + * term/x-win.el (x-select-text): Adjusted. + (x-cut-buffer-or-selection-value): Check the primary selection, + using x-selection, instead of checking the cut buffer again. + + * term/x-win.el: Doc fix. + Mon Jan 25 12:08:05 1993 Jim Blandy (jimb@totoro.cs.oberlin.edu) * frame.el (frame-notice-user-settings): Use new name *************** Thu Nov 5 09:58:13 1992 Stephen A. Woo *** 3425,3430 **** --- 3821,3831 ---- fortran-setup-tab-format-style, fortran-setup-fixed-format-style): `fortran-comment-line-column' meaning changed. Now defaults to 0. + Thu Nov 5 05:00:28 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * term/x-win.el: (command-switch-alist, x-switch-definitions): + -ib was used for two things. Use -itype for icon type. + Wed Nov 4 23:58:42 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) * term/x-win.el (command-switch-alist, x-switch-definitions): *************** Fri Sep 11 03:06:55 1992 Richard Stallm *** 4304,4310 **** * mouse.el (x-fixed-font-alist): New variable. (mouse-set-font): New function, now on C-mouse-3. ! * x-win.el (scroll-bar-mode): New function (and variable too). * dired.el (dired-next-subdir, dired-subdir-index): Moved here * dired-aux.el: From here. --- 4705,4711 ---- * mouse.el (x-fixed-font-alist): New variable. (mouse-set-font): New function, now on C-mouse-3. ! * term/x-win.el (scroll-bar-mode): New function (and variable too). * dired.el (dired-next-subdir, dired-subdir-index): Moved here * dired-aux.el: From here. *************** Tue Jul 14 19:43:05 1992 Jim Blandy (j *** 5632,5639 **** loadup.el, ispell.el, isearch.el, holidays.el, fortran.el, files.el, etags.el, emerge.el, electric.el, edebug.el, dired.el, diary.el, csharp.el, compile.el, comint.el, calendar.el, ! buff-mune.el, bg-mouse.el, appt.el, abbrevlist.el, x-win.el, ! wyse50.el, vt200.el, vt100.el: All uses changed. * screen.el (screen-height, screen-width, set-screen-height, set-screen-width): Defined as aliases for frame-height, frame-width, set-frame-height, and set-frame-width. --- 6033,6040 ---- loadup.el, ispell.el, isearch.el, holidays.el, fortran.el, files.el, etags.el, emerge.el, electric.el, edebug.el, dired.el, diary.el, csharp.el, compile.el, comint.el, calendar.el, ! buff-mune.el, bg-mouse.el, appt.el, abbrevlist.el, term/x-win.el, ! term/wyse50.el, term/vt200.el, term/vt100.el: All uses changed. * screen.el (screen-height, screen-width, set-screen-height, set-screen-width): Defined as aliases for frame-height, frame-width, set-frame-height, and set-frame-width. *************** Fri Jun 12 06:09:19 1992 Jim Blandy (j *** 6127,6133 **** the most recent string for interprogram pasting; the function should never return the same string Emacs posted with `interprogram-cut-function'. ! * x-win.el (x-last-selected-text): New variable. (x-select-text): Set it, so we can check later against returning it. (x-cut-buffer-or-selection-value): Check it, to make sure we don't --- 6528,6534 ---- the most recent string for interprogram pasting; the function should never return the same string Emacs posted with `interprogram-cut-function'. ! * term/x-win.el (x-last-selected-text): New variable. (x-select-text): Set it, so we can check later against returning it. (x-cut-buffer-or-selection-value): Check it, to make sure we don't *************** Thu May 16 15:05:52 1991 Jim Blandy (j *** 7583,7589 **** * macros.el (apply-macro-to-region-lines): New function. ! * x-win.el (x-handle-switch): The newline at the end of the comment line at the top of this function was missing. Thu May 16 14:22:10 1991 Roland McGrath (roland@geech.gnu.ai.mit.edu) --- 7984,7990 ---- * macros.el (apply-macro-to-region-lines): New function. ! * term/x-win.el (x-handle-switch): The newline at the end of the comment line at the top of this function was missing. Thu May 16 14:22:10 1991 Roland McGrath (roland@geech.gnu.ai.mit.edu) *************** Wed Aug 30 13:16:02 1989 Richard Stallm *** 10973,10979 **** * rmail.el: `e' is now edit; only `x' for expunge. ! * x-win.el: Fix error message. * dired.el (dired-repeat-over-lines): FUNCTION returns t if it deleted the line. All callers changed to make it return nil. --- 11374,11380 ---- * rmail.el: `e' is now edit; only `x' for expunge. ! * term/x-win.el: Fix error message. * dired.el (dired-repeat-over-lines): FUNCTION returns t if it deleted the line. All callers changed to make it return nil. *************** Tue Sep 6 21:03:07 1988 Richard Stallm *** 12597,12606 **** * loaddefs.el (shell-prompt-pattern): Allow prompt enclosed in parens. * lisp-mode.el (calculate-lisp-indent): bug in lisp-indent-offset case. - - Local Variables: - mode: indented-text - left-margin: 8 - fill-column: 74 - version-control: never - End: --- 12998,13000 ---- diff -cprP -x *.elc emacs-19.12/lisp/add-log.el emacs-19.13/lisp/add-log.el *** emacs-19.12/lisp/add-log.el Tue Jun 8 05:29:44 1993 --- emacs-19.13/lisp/add-log.el Sat Jun 5 13:08:02 1993 *************** *** 243,250 **** (defun add-log-current-defun () "Return name of function definition point is in, or nil. ! Understands Lisp, LaTeX (\"functions\" are chapters, sections, ...), ! Texinfo (@node titles), and C. Other modes are handled by a heuristic that looks in the 10K before point for uppercase headings starting in the first column or --- 243,250 ---- (defun add-log-current-defun () "Return name of function definition point is in, or nil. ! Understands C, Lisp, LaTeX (\"functions\" are chapters, sections, ...), ! Texinfo (@node titles), and Fortran. Other modes are handled by a heuristic that looks in the 10K before point for uppercase headings starting in the first column or *************** Has a preference of looking backwards." *** 373,378 **** --- 373,397 ---- (if (re-search-backward "^@node[ \t]+\\([^,]+\\)," nil t) (buffer-substring (match-beginning 1) (match-end 1)))) + ((eq major-mode 'fortran-mode) + ;; must be inside function body for this to work + (beginning-of-fortran-subprogram) + (let ((case-fold-search t)) ; case-insensitive + ;; search for fortran subprogram start + (if (re-search-forward + "^[ \t]*\\(program\\|subroutine\\|function\ + \\|[ \ta-z0-9*]*[ \t]+function\\)" + nil t) + (progn + ;; move to EOL or before first left paren + (if (re-search-forward "[(\n]" nil t) + (progn (forward-char -1) + (skip-chars-backward " \t")) + (end-of-line)) + ;; Use the name preceding that. + (buffer-substring (point) + (progn (forward-sexp -1) + (point))))))) (t ;; If all else fails, try heuristics (let (case-fold-search) diff -cprP -x *.elc emacs-19.12/lisp/allout.el emacs-19.13/lisp/allout.el *** emacs-19.12/lisp/allout.el Tue Jun 8 05:29:55 1993 --- emacs-19.13/lisp/allout.el Mon Jun 7 14:48:12 1993 *************** *** 11,17 **** ;;;_ - Author: Ken Manheimer ;;;_ - Maintainer: Ken Manheimer ;;;_ - Created: Dec 1991 - first release to usenet ! ;;;_ - Version: $Id: allout.el,v 3.5 1993/06/01 19:55:25 klm Exp $|| ;;;_ - Keywords: outline mode ;;;_ - LCD Archive Entry --- 11,17 ---- ;;;_ - Author: Ken Manheimer ;;;_ - Maintainer: Ken Manheimer ;;;_ - Created: Dec 1991 - first release to usenet ! ;;;_ - Version: $Id: allout.el,v 1.2 1993/06/07 18:48:08 rms Exp $|| ;;;_ - Keywords: outline mode ;;;_ - LCD Archive Entry *************** *** 19,25 **** ;; LCD Archive Entry: ;; allout|Ken Manheimer|klm@nist.gov ;; |A more thorough outline-mode ! ;; |27-May-1993|$Id: allout.el,v 3.4 1993/05/27 19:24:19 klm Exp $|| ;;;_ - Description ;; A full-fledged outline mode, based on the original rudimentary --- 19,25 ---- ;; LCD Archive Entry: ;; allout|Ken Manheimer|klm@nist.gov ;; |A more thorough outline-mode ! ;; |27-May-1993|$Id: allout.el,v 1.2 1993/06/07 18:48:08 rms Exp $|| ;;;_ - Description ;; A full-fledged outline mode, based on the original rudimentary *************** C-c @ outline-resolve-xref pop-to-b *** 579,585 **** C-c c outline-copy-exposed Copy outline sans all hidden stuff to another buffer whose name is derived from the current one - \"XXX exposed\" ! M-x outlineify-sticky Activate outline mode for current buffer and establish -*- outline -*- mode specifier as well as file local vars to automatically set exposure. Try it. --- 579,585 ---- C-c c outline-copy-exposed Copy outline sans all hidden stuff to another buffer whose name is derived from the current one - \"XXX exposed\" ! M-x outlinify-sticky Activate outline mode for current buffer and establish -*- outline -*- mode specifier as well as file local vars to automatically set exposure. Try it. *************** parameterized communication between the *** 2469,2476 **** (goto-char (point-min)) ) ) ! ;;;_ > outlineify-sticky () ! (defun outlineify-sticky (&optional arg) " Activate outline mode and establish file eval to set initial exposure. Invoke with a string argument to designate a string to prepend to --- 2469,2476 ---- (goto-char (point-min)) ) ) ! ;;;_ > outlinify-sticky () ! (defun outlinify-sticky (&optional arg) " Activate outline mode and establish file eval to set initial exposure. Invoke with a string argument to designate a string to prepend to *************** parameterized communication between the *** 2495,2505 **** ((eq major-mode 'c-mode) ;; User's will have to know to close off the comments: (setq arg (outline-lead-with-comment-string "/*_")))) ! (let* ((lead-prefix (format "%s %s" ! outline-header-prefix outline-primary-bullet)) (lead-line (format "%s%s %s\n%s %s\n %s %s %s" ! outline-header-prefix outline-primary-bullet "Local emacs vars." "'(This topic sets initial outline exposure" --- 2495,2505 ---- ((eq major-mode 'c-mode) ;; User's will have to know to close off the comments: (setq arg (outline-lead-with-comment-string "/*_")))) ! (let* ((lead-prefix (format "%s%s" ! (concat outline-header-prefix (if arg " " "")) outline-primary-bullet)) (lead-line (format "%s%s %s\n%s %s\n %s %s %s" ! (if arg outline-header-prefix "") outline-primary-bullet "Local emacs vars." "'(This topic sets initial outline exposure" diff -cprP -x *.elc emacs-19.12/lisp/ange-ftp.el emacs-19.13/lisp/ange-ftp.el *** emacs-19.12/lisp/ange-ftp.el Tue Jun 8 05:30:03 1993 --- emacs-19.13/lisp/ange-ftp.el Mon Jun 7 00:51:40 1993 *************** *** 707,713 **** (defvar ange-ftp-binary-file-name-regexp (concat "\\.[zZ]$\\|\\.lzh$\\|\\.arc$\\|\\.zip$\\|\\.zoo$\\|\\.tar$\\|" "\\.dvi$\\|\\.ps$\\|\\.elc$\\|TAGS$\\|\\.gif$\\|" ! "\\.EXE\\(;[0-9]+\\)?$\\|\\.[zZ]-part-..$") "*If a file matches this regexp then it is transferred in binary mode.") (defvar ange-ftp-gateway-host nil --- 707,713 ---- (defvar ange-ftp-binary-file-name-regexp (concat "\\.[zZ]$\\|\\.lzh$\\|\\.arc$\\|\\.zip$\\|\\.zoo$\\|\\.tar$\\|" "\\.dvi$\\|\\.ps$\\|\\.elc$\\|TAGS$\\|\\.gif$\\|" ! "\\.EXE\\(;[0-9]+\\)?$\\|\\.[zZ]-part-..$\\|\\.gz$") "*If a file matches this regexp then it is transferred in binary mode.") (defvar ange-ftp-gateway-host nil *************** SIZE, if supplied, should be a prime num *** 856,862 **** ;;;; Internal variables. ;;;; ------------------------------------------------------------ ! (defconst ange-ftp-version "$Revision: 1.21 $") (defvar ange-ftp-data-buffer-name " *ftp data*" "Buffer name to hold directory listing data received from ftp process.") --- 856,862 ---- ;;;; Internal variables. ;;;; ------------------------------------------------------------ ! (defconst ange-ftp-version "$Revision: 1.24 $") (defvar ange-ftp-data-buffer-name " *ftp data*" "Buffer name to hold directory listing data received from ftp process.") *************** on the gateway machine to do the ftp ins *** 1762,1778 **** (process-kill-without-query proc) (save-excursion (set-buffer (process-buffer proc)) ! (ange-ftp-mode)) (set-process-sentinel proc (function ange-ftp-process-sentinel)) (set-process-filter proc (function ange-ftp-process-filter)) (accept-process-output proc) ;wait for ftp startup message proc)) ! (defun ange-ftp-mode () (interactive) (comint-mode) ! (setq major-mode 'ange-ftp-mode) ! (setq mode-name "Ange-ftp") (let ((proc (get-buffer-process (current-buffer)))) (goto-char (point-max)) (set-marker (process-mark proc) (point)) --- 1762,1778 ---- (process-kill-without-query proc) (save-excursion (set-buffer (process-buffer proc)) ! (internal-ange-ftp-mode)) (set-process-sentinel proc (function ange-ftp-process-sentinel)) (set-process-filter proc (function ange-ftp-process-filter)) (accept-process-output proc) ;wait for ftp startup message proc)) ! (defun internal-ange-ftp-mode () (interactive) (comint-mode) ! (setq major-mode 'internal-ange-ftp-mode) ! (setq mode-name "Internal Ange-ftp") (let ((proc (get-buffer-process (current-buffer)))) (goto-char (point-max)) (set-marker (process-mark proc) (point)) *************** system TYPE.") *** 3621,3627 **** (ange-ftp-copy-file-internal fn1 tmp1 t nil (format "Getting %s" fn1)) tmp1)))) ! ;; Calculate default-unhandled-directory for a given ange-ftp buffer. (defun ange-ftp-unhandled-file-name-directory (filename) (file-name-directory ange-ftp-tmp-name-template)) --- 3621,3635 ---- (ange-ftp-copy-file-internal fn1 tmp1 t nil (format "Getting %s" fn1)) tmp1)))) ! ! (defun ange-ftp-load (file) ! (if (ange-ftp-ftp-name file) ! (let ((copy (ange-ftp-file-local-copy file))) ! (unwind-protect ! (load copy) ! (delete-file copy))) ! (ange-ftp-real-load file))) ! ;; Calculate default-unhandled-directory for a given ange-ftp buffer. (defun ange-ftp-unhandled-file-name-directory (filename) (file-name-directory ange-ftp-tmp-name-template)) *************** NEWNAME should be the name to give the n *** 3783,3788 **** --- 3791,3797 ---- (put 'file-name-sans-versions 'ange-ftp 'ange-ftp-file-name-sans-versions) (put 'dired-uncache 'ange-ftp 'ange-ftp-dired-uncache) (put 'dired-compress-file 'ange-ftp 'ange-ftp-dired-compress-file) + (put 'load 'ange-ftp 'ange-ftp-load) ;; Turn off truename processing to save time. ;; Treat each name as its own truename. *************** NEWNAME should be the name to give the n *** 3876,3881 **** --- 3885,3893 ---- (defun ange-ftp-real-shell-command (&rest args) (let (file-name-handler-alist) (apply 'shell-command args))) + (defun ange-ftp-real-load (&rest args) + (let (file-name-handler-alist) + (apply 'load args))) ;; Here we support using dired on remote hosts. ;; I have turned off the support for using dired on foreign directory formats. diff -cprP -x *.elc emacs-19.12/lisp/apropos.el emacs-19.13/lisp/apropos.el *** emacs-19.12/lisp/apropos.el Tue Jun 8 05:30:04 1993 --- emacs-19.13/lisp/apropos.el Mon Jun 7 21:32:18 1993 *************** *** 329,338 **** (setq function (if (fboundp function) (symbol-function function) 0))) (if (not (consp function)) nil - (if (eq (car function) 'macro) - (setq function (cdr function))) (if (not (memq (car function) '(lambda autoload))) nil (setq function (nth 2 function)) --- 329,338 ---- (setq function (if (fboundp function) (symbol-function function) 0))) + (if (eq (car-safe function) 'macro) + (setq function (cdr function))) (if (not (consp function)) nil (if (not (memq (car function) '(lambda autoload))) nil (setq function (nth 2 function)) diff -cprP -x *.elc emacs-19.12/lisp/bibtex.el emacs-19.13/lisp/bibtex.el *** emacs-19.12/lisp/bibtex.el Tue Jun 8 05:30:13 1993 --- emacs-19.13/lisp/bibtex.el Mon Jun 7 16:06:02 1993 *************** *** 544,550 **** (defconst bibtex-text-in-string 2 "The regexp subexpression of the text part in bibtex-string") ! (defconst bibtex-name-alignement 2 "Alignment for the name part in BibTeX fields. Chosen on aesthetic grounds only.") --- 544,550 ---- (defconst bibtex-text-in-string 2 "The regexp subexpression of the text part in bibtex-string") ! (defconst bibtex-name-alignment 2 "Alignment for the name part in BibTeX fields. Chosen on aesthetic grounds only.") *************** checks that no non-optional fields are e *** 604,614 **** Use \\[bibtex-find-text] to position the dot at the end of the current field. Use \\[bibtex-next-field] to move to end of the next field. - \\[bibtex-x-environment] binds a mode-specific X menu to control+right - mouse button. - \\[bibtex-sun-environment] binds a mode-specific Sun menu to right - mouse button. - The following may be of interest as well: Functions: --- 604,609 ---- *************** as such should normally be set via a fil *** 1025,1031 **** (let ((name (if (consp e-t) (car e-t) e-t)) (value (if (consp e-t) (cdr e-t) ""))) (insert ",\n") ! (indent-to-column bibtex-name-alignement) (insert name " = ") (indent-to-column bibtex-text-alignment) ;; lucid emacs prin1-to-string breaks the undo chain. When they fix --- 1020,1026 ---- (let ((name (if (consp e-t) (car e-t) e-t)) (value (if (consp e-t) (cdr e-t) ""))) (insert ",\n") ! (indent-to-column bibtex-name-alignment) (insert name " = ") (indent-to-column bibtex-text-alignment) ;; lucid emacs prin1-to-string breaks the undo chain. When they fix *************** an undefined location. *** 1487,1543 **** (skip-whitespace-and-comments))) ! ! ;;; X window menus for bibtex mode ! ! (defun bibtex-x-help (arg) ! "Mouse commands for BibTeX mode" ! (let ((selection ! (x-popup-menu ! arg ! '("BibTeX commands" ! ("BibTeX entry types" ! (" article in conference Proceedings " . bibtex-InProceedings) ! (" Article in journal " . bibtex-Article) ! (" Book " . bibtex-Book) ! (" Booklet " . bibtex-Booklet) ! (" Conference " . bibtex-InProceedings) ! (" Master's Thesis " . bibtex-MastersThesis) ! ; (" DEA Thesis " . bibtex-DEAthesis) ! (" Phd. Thesis " . bibtex-PhdThesis) ! (" Technical Report " . bibtex-TechReport) ! (" technical Manual " . bibtex-Manual) ! (" conference Proceedings " . bibtex-Proceedings) ! (" a chapter in a Book " . bibtex-InBook) ! (" an article in a Collection " . bibtex-InCollection) ! (" miscellaneous " . bibtex-Misc) ! (" unpublished " . bibtex-Unpublished) ! (" string " . bibtex-string) ! (" preamble " . bibtex-preamble) ! ) ! ("Moving around and editing" ! (" next field " . bibtex-next-field) ! (" to end of field " . bibtex-find-text) ! ("snatch from similar preceding field" . bibtex-pop-previous) ! ("snatch from similar following field" . bibtex-pop-next) ! (" remove OPT " . bibtex-remove-OPT) ! (" remove quotes " ! . bibtex-remove-double-quotes) ! (" clean up entry " . bibtex-clean-entry) ! ) ! ("help" ! (" describe BibTeX mode " . describe-mode) ! ))))) ! (and selection (call-interactively selection)))) ! ! (defun bibtex-x-environment () ! "Set up X menus for BibTeX mode. Call it as bibtex-mode-hook, or interactively" ! (interactive) ! (require 'x-mouse) ! (define-key mouse-map x-button-c-right 'bibtex-x-help) ! ) ;; Please don't send anything to bug-gnu-emacs about these Sunwindows functions --- 1482,1550 ---- (skip-whitespace-and-comments))) ! ;;; Menus for bibtex mode ! (define-key bibtex-mode-map [menu-bar entry-types] ! (cons "Entry Types" (make-sparse-keymap "Entry Types"))) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-InProceedings] + '(" article in conference Proceedings " . bibtex-InProceedings)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-Article] + '(" Article in journal " . bibtex-Article)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-Book] + '(" Book " . bibtex-Book)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-Booklet] + '(" Booklet " . bibtex-Booklet)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-InProceedings] + '(" Conference " . bibtex-InProceedings)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-MastersThesis] + '(" Master's Thesis " . bibtex-MastersThesis)) + ;define-key bibtex-mode-map [menu-bar entry-types bibtex-DEAthesis] + ;'((" DEA Thesis " . bibtex-DEAthesis)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-PhdThesis] + '(" Phd. Thesis " . bibtex-PhdThesis)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-TechReport] + '(" Technical Report " . bibtex-TechReport)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-Manual] + '(" technical Manual " . bibtex-Manual)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-Proceedings] + '(" conference Proceedings " . bibtex-Proceedings)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-InBook] + '(" a chapter in a Book " . bibtex-InBook)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-InCollection] + '(" an article in a Collection " . bibtex-InCollection)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-Misc] + '(" miscellaneous " . bibtex-Misc)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-Unpublished] + '(" unpublished " . bibtex-Unpublished)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-string] + '(" string " . bibtex-string)) + (define-key bibtex-mode-map [menu-bar entry-types bibtex-preamble] + '(" preamble " . bibtex-preamble)) + + (define-key bibtex-mode-map [menu-bar move/edit] + (cons "Bibtex Edit" (make-sparse-keymap "Bibtex Edit"))) + + (define-key bibtex-mode-map [menu-bar move/edit bibtex-next-field] + '(" next field " . bibtex-next-field)) + (define-key bibtex-mode-map [menu-bar move/edit bibtex-find-text] + '(" to end of field " . bibtex-find-text)) + (define-key bibtex-mode-map [menu-bar move/edit bibtex-pop-previous] + '("snatch from similar preceding field" . bibtex-pop-previous)) + (define-key bibtex-mode-map [menu-bar move/edit bibtex-pop-next] + '("snatch from similar following field" . bibtex-pop-next)) + (define-key bibtex-mode-map [menu-bar move/edit bibtex-remove-OPT] + '(" remove OPT " . bibtex-remove-OPT)) + (define-key bibtex-mode-map [menu-bar move/edit bibtex-remove-double-quotes] + '(" remove quotes " . bibtex-remove-double-quotes)) + (define-key bibtex-mode-map [menu-bar move/edit bibtex-clean-entry] + '(" clean up entry " . bibtex-clean-entry)) + (define-key bibtex-mode-map [menu-bar move/edit find-bibtex-duplicates] + '(" find duplicates " . find-bibtex-duplicates)) + (define-key bibtex-mode-map [menu-bar move/edit sort-bibtex-entries] + '(" sort entries " . sort-bibtex-entries)) + (define-key bibtex-mode-map [menu-bar move/edit validate-bibtex-buffer] + '(" validate entries " . validate-bibtex-buffer)) ;; Please don't send anything to bug-gnu-emacs about these Sunwindows functions diff -cprP -x *.elc emacs-19.12/lisp/bytecomp.el emacs-19.13/lisp/bytecomp.el *** emacs-19.12/lisp/bytecomp.el Tue Jun 8 05:30:25 1993 --- emacs-19.13/lisp/bytecomp.el Thu Jun 3 14:34:50 1993 *************** *** 1321,1327 **** (if (byte-compile-version-cond byte-compile-compatibility) "; compiled with Emacs 18 compatibility.\n" ".\n")) ! (if (byte-compile-version-cond byte-compile-compatibility) (insert ";;; this file uses opcodes which do not exist in Emacs 18.\n" ;; Have to check if emacs-version is bound so that this works ;; in files loaded early in loadup.el. --- 1321,1327 ---- (if (byte-compile-version-cond byte-compile-compatibility) "; compiled with Emacs 18 compatibility.\n" ".\n")) ! (if (not (byte-compile-version-cond byte-compile-compatibility)) (insert ";;; this file uses opcodes which do not exist in Emacs 18.\n" ;; Have to check if emacs-version is bound so that this works ;; in files loaded early in loadup.el. diff -cprP -x *.elc emacs-19.12/lisp/calendar.el emacs-19.13/lisp/calendar.el *** emacs-19.12/lisp/calendar.el Tue Jun 8 05:30:40 1993 --- emacs-19.13/lisp/calendar.el Thu Jun 3 02:12:15 1993 *************** *** 735,740 **** --- 735,742 ---- (or in the fancy diary buffer next to the date). This slows down the diary functions somewhat; setting it to nil will make the diary display faster.") + (defvar calendar-mark-ring nil) + ;;;###autoload (defvar general-holidays '((fixed 1 1 "New Year's Day") *************** The following commands control the diary *** 1673,1679 **** \\[print-diary-entries] print diary entries Displaying the diary entries causes the diary entries from the diary-file ! (for the date indicated by the cursor in the calendar window) to be displayed in another window. This function takes an integer argument that specifies the number of days of calendar entries to be displayed, starting with the date indicated by the cursor. --- 1675,1681 ---- \\[print-diary-entries] print diary entries Displaying the diary entries causes the diary entries from the diary-file ! \(for the date indicated by the cursor in the calendar window) to be displayed in another window. This function takes an integer argument that specifies the number of days of calendar entries to be displayed, starting with the date indicated by the cursor. diff -cprP -x *.elc emacs-19.12/lisp/case-table.el emacs-19.13/lisp/case-table.el *** emacs-19.12/lisp/case-table.el Tue Jun 8 05:30:40 1993 --- emacs-19.13/lisp/case-table.el Mon Jun 7 15:10:58 1993 *************** *** 39,47 **** (interactive) (let ((vector (make-vector 256 nil)) (case-table (current-case-table)) ! (i 0)) ! (while (< i 256) ! (aset vector i (cond ((/= ch (downcase ch)) (concat "uppercase, matches " (text-char-description (downcase ch)))) --- 39,47 ---- (interactive) (let ((vector (make-vector 256 nil)) (case-table (current-case-table)) ! (ch 0)) ! (while (< ch 256) ! (aset vector ch (cond ((/= ch (downcase ch)) (concat "uppercase, matches " (text-char-description (downcase ch)))) *************** *** 49,57 **** (concat "lowercase, matches " (text-char-description (upcase ch)))) (t "case-invariant"))) ! (setq i (1+ i))) ! (with-output-to-temp-buffer "*Help*" ! (describe-vector vector)))) ;;;###autoload (defun set-case-syntax-delims (l r table) --- 49,59 ---- (concat "lowercase, matches " (text-char-description (upcase ch)))) (t "case-invariant"))) ! (setq ch (1+ ch))) ! (save-excursion ! (with-output-to-temp-buffer "*Help*" ! (set-buffer standard-output) ! (describe-vector vector))))) ;;;###autoload (defun set-case-syntax-delims (l r table) diff -cprP -x *.elc emacs-19.12/lisp/compile.el emacs-19.13/lisp/compile.el *** emacs-19.12/lisp/compile.el Tue Jun 8 05:31:00 1993 --- emacs-19.13/lisp/compile.el Mon Jun 7 04:04:02 1993 *************** *** 108,118 **** ;; We'll insist that the number be followed by a colon or closing ;; paren, because otherwise this matches just about anything ;; containing a number with spaces around it. ! ("^\\([^:( \t\n]+\\)[ \t]*[:(][ \t]*\\([0-9]+\\)[:) \t]" 1 2) ;; 4.3BSD lint pass 2 ;; strcmp: variable # of args. llib-lc(359) :: /usr/src/foo/foo.c(8) ! ("[ \t:]+\\([^:( \t\n]+\\)[ \t]*[:(]*(+[ \t]*\\([0-9]+\\))[:) \t]*$" 1 2) ;; 4.3BSD lint pass 3 ;; bloofle defined( /users/wolfgang/foo.c(4) ), but never used --- 108,118 ---- ;; We'll insist that the number be followed by a colon or closing ;; paren, because otherwise this matches just about anything ;; containing a number with spaces around it. ! ("\n\\([^:( \t\n]+\\)[:(][ \t]*\\([0-9]+\\)[:) \t]" 1 2) ;; 4.3BSD lint pass 2 ;; strcmp: variable # of args. llib-lc(359) :: /usr/src/foo/foo.c(8) ! ("[ \t:]\\([^:( \t\n]+\\)[:(](+[ \t]*\\([0-9]+\\))[:) \t]*$" 1 2) ;; 4.3BSD lint pass 3 ;; bloofle defined( /users/wolfgang/foo.c(4) ), but never used *************** *** 119,134 **** ;; This used to be ;; ("[ \t(]+\\([^:( \t\n]+\\)[:( \t]+\\([0-9]+\\)[:) \t]+" 1 2) ;; which is regexp Impressionism - it matches almost anything! ! ("([ \t]*\\([^:( \t\n]+\\)[ \t]*[:(][ \t]*\\([0-9]+\\))" 1 2) ;; Line 45 of "foo.c": bloofel undefined (who does this?) ! ("^[Ll]ine[ \t]+\\([0-9]+\\)[ \t]+of[ \t]+\"\\([^\"\n]+\\)\":" 2 1) ;; Apollo cc, 4.3BSD fc: ;; "foo.f", line 3: Error: syntax error near end of statement ! ;; or MIPS RISC CC - the one distributed with Ultrix: ;; ccom: Error: foo.c, line 2: syntax error ! ("\\b\"?\\([^,\" \n\t]+\\)\"?, line \\([0-9]+\\):" 1 2) ;; IBM AIX PS/2 C version 1.1: ;; ****** Error number 140 in line 8 of file errors.c ****** --- 119,136 ---- ;; This used to be ;; ("[ \t(]+\\([^:( \t\n]+\\)[:( \t]+\\([0-9]+\\)[:) \t]+" 1 2) ;; which is regexp Impressionism - it matches almost anything! ! ("([ \t]*\\([^:( \t\n]+\\)[:(][ \t]*\\([0-9]+\\))" 1 2) ;; Line 45 of "foo.c": bloofel undefined (who does this?) ! ("\n[Ll]ine[ \t]+\\([0-9]+\\)[ \t]+of[ \t]+\"\\([^\"\n]+\\)\":" 2 1) ;; Apollo cc, 4.3BSD fc: ;; "foo.f", line 3: Error: syntax error near end of statement ! ("\"\\([^,\" \n\t]+\\)\", line \\([0-9]+\\):" 1 2) ! ! ;; MIPS RISC CC - the one distributed with Ultrix: ;; ccom: Error: foo.c, line 2: syntax error ! ("rror: \\([^,\" \n\t]+\\), line \\([0-9]+\\):" 1 2) ;; IBM AIX PS/2 C version 1.1: ;; ****** Error number 140 in line 8 of file errors.c ****** *************** Returns the compilation buffer created." *** 294,329 **** (goto-char (point-max))) ;; Pop up the compilation buffer. (setq outwin (display-buffer outbuf)) ! (set-buffer outbuf) ! (compilation-mode) ! (buffer-disable-undo (current-buffer)) ! (setq buffer-read-only t) ! (set (make-local-variable 'compilation-parse-errors-function) parser) ! (set (make-local-variable 'compilation-error-message) error-message) ! (set (make-local-variable 'compilation-error-regexp-alist) regexp-alist) ! (setq default-directory thisdir ! compilation-directory-stack (list default-directory)) ! (set-window-start outwin (point-min)) ! (setq mode-name name-of-mode) ! (or (eq outwin (selected-window)) ! (set-window-point outwin (point-min))) ! (and compilation-window-height ! (= (window-width outwin) (frame-width)) ! (let ((w (selected-window))) ! (unwind-protect ! (progn ! (select-window outwin) ! (enlarge-window (- compilation-window-height ! (window-height)))) ! (select-window w)))) ! ;; Start the compilation. ! (let ((proc (start-process-shell-command (downcase mode-name) ! outbuf ! command))) ! (set-process-sentinel proc 'compilation-sentinel) ! (set-process-filter proc 'compilation-filter) ! (set-marker (process-mark proc) (point) outbuf) ! (setq compilation-in-progress (cons proc compilation-in-progress)))) ;; Make it so the next C-x ` will use this buffer. (setq compilation-last-buffer outbuf))) --- 296,332 ---- (goto-char (point-max))) ;; Pop up the compilation buffer. (setq outwin (display-buffer outbuf)) ! (save-excursion ! (set-buffer outbuf) ! (compilation-mode) ! (buffer-disable-undo (current-buffer)) ! (setq buffer-read-only t) ! (set (make-local-variable 'compilation-parse-errors-function) parser) ! (set (make-local-variable 'compilation-error-message) error-message) ! (set (make-local-variable 'compilation-error-regexp-alist) regexp-alist) ! (setq default-directory thisdir ! compilation-directory-stack (list default-directory)) ! (set-window-start outwin (point-min)) ! (setq mode-name name-of-mode) ! (or (eq outwin (selected-window)) ! (set-window-point outwin (point-min))) ! (and compilation-window-height ! (= (window-width outwin) (frame-width)) ! (let ((w (selected-window))) ! (unwind-protect ! (progn ! (select-window outwin) ! (enlarge-window (- compilation-window-height ! (window-height)))) ! (select-window w)))) ! ;; Start the compilation. ! (let ((proc (start-process-shell-command (downcase mode-name) ! outbuf ! command))) ! (set-process-sentinel proc 'compilation-sentinel) ! (set-process-filter proc 'compilation-filter) ! (set-marker (process-mark proc) (point) outbuf) ! (setq compilation-in-progress (cons proc compilation-in-progress))))) ;; Make it so the next C-x ` will use this buffer. (setq compilation-last-buffer outbuf))) *************** See variable `compilation-parse-errors-f *** 993,1001 **** ;; Extract the file name and line number from the error message. (let ((beginning-of-match (match-beginning 0)) ;looking-at nukes (filename ! (cons default-directory ! (buffer-substring (match-beginning (nth 1 alist)) ! (match-end (nth 1 alist))))) (linenum (save-restriction (narrow-to-region (match-beginning (nth 2 alist)) --- 996,1007 ---- ;; Extract the file name and line number from the error message. (let ((beginning-of-match (match-beginning 0)) ;looking-at nukes (filename ! (save-excursion ! (goto-char (match-end (nth 1 alist))) ! (skip-chars-backward " \t") ! (let ((name (buffer-substring (match-beginning (nth 1 alist)) ! (point)))) ! (expand-file-name name default-directory)))) (linenum (save-restriction (narrow-to-region (match-beginning (nth 2 alist)) diff -cprP -x *.elc emacs-19.12/lisp/complete.el emacs-19.13/lisp/complete.el *** emacs-19.12/lisp/complete.el Tue Jun 8 05:31:02 1993 --- emacs-19.13/lisp/complete.el Thu Jun 3 16:09:05 1993 *************** *** 1,6 **** ! ;; Partial completion mechanism for GNU Emacs. Version 2.00. ;; Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc. ! ;; Written by Dave Gillespie, daveg@synaptics.com. ;; Special thanks to Hallvard Furuseth for his many ideas and contributions. ;; This file is part of GNU Emacs. --- 1,9 ---- ! ;; complete.el -- partial completion mechanism plus other goodies. ! ;; Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc. ! ! ;; Author: Dave Gillespie ! ;; Version: 2.02 ;; Special thanks to Hallvard Furuseth for his many ideas and contributions. ;; This file is part of GNU Emacs. *************** *** 21,26 **** --- 24,31 ---- ;; and this notice must be preserved on all copies. + ;; Commentary: + ;; Extended completion for the Emacs minibuffer. ;; ;; The basic idea is that the command name or other completable text is *************** *** 69,74 **** --- 74,82 ---- ;; buffer whose name matches that pattern (perhaps "filing.c"). ;; (PC-meta-flag does not affect this behavior; M-RET used to be ;; undefined in this situation.) + ;; + ;; The regular M-TAB (lisp-complete-symbol) command also supports + ;; partial completion in this package. ;; This package also contains a wildcard feature for C-x C-f (find-file). ;; For example, `C-x C-f *.c RET' loads all .c files at once, exactly *************** *** 76,81 **** --- 84,94 ---- ;; is supported in connection with wildcards. Currently only the `*' ;; wildcard character works. + ;; File name completion does not do partial completion of directories + ;; on the path, e.g., "/u/b/f" will not complete to "/usr/bin/foo", + ;; but you can put *'s in the path to accomplish this: "/u*/b*/f". + ;; Stars are required for performance reasons. + ;; In addition, this package includes a feature for accessing include ;; files. For example, `C-x C-f RET' reads the file ;; /usr/include/sys/time.h. The variable PC-include-file-path is a *************** *** 83,88 **** --- 96,103 ---- ;; is supported in include file names. + ;; Code: + (defvar PC-meta-flag t "*If nil, TAB does normal Emacs completion and M-TAB does Partial Completion. If t, TAB does Partial Completion and M-TAB does normal completion.") *************** If this is nil, uses the colon-separated *** 143,159 **** (define-key minibuffer-local-must-match-map "\e\r" 'PC-complete-and-exit) (define-key minibuffer-local-must-match-map "\e\n" 'PC-complete-and-exit) (define-key minibuffer-local-must-match-map "\e?" 'PC-completion-help) )) (defun PC-complete () "Like minibuffer-complete, but allows \"b--di\"-style abbreviations. ! For example, \"M-x b--di\" would match \"byte-recompile-directory\", or any name which consists of three or more words, the first beginning with \"b\" and the third beginning with \"di\". ! The pattern \"b--d\" is ambiguous for \"byte-recompile-directory\" and ! \"beginning-of-defun\", so this would produce a list of completions just like when normal Emacs completions are ambiguous. Word-delimiters for the purposes of Partial Completion are \"-\", \"_\", --- 158,176 ---- (define-key minibuffer-local-must-match-map "\e\r" 'PC-complete-and-exit) (define-key minibuffer-local-must-match-map "\e\n" 'PC-complete-and-exit) (define-key minibuffer-local-must-match-map "\e?" 'PC-completion-help) + + (define-key global-map "\e\t" 'PC-lisp-complete-symbol) )) (defun PC-complete () "Like minibuffer-complete, but allows \"b--di\"-style abbreviations. ! For example, \"M-x b--di\" would match `byte-recompile-directory', or any name which consists of three or more words, the first beginning with \"b\" and the third beginning with \"di\". ! The pattern \"b--d\" is ambiguous for `byte-recompile-directory' and ! `beginning-of-defun', so this would produce a list of completions just like when normal Emacs completions are ambiguous. Word-delimiters for the purposes of Partial Completion are \"-\", \"_\", *************** Word-delimiters for the purposes of Part *** 165,172 **** (defun PC-complete-word () ! "Like minibuffer-complete-word, but allows \"b--di\"-style abbreviations. ! See PC-complete for details. This can be bound to other keys, like `-' and `.', if you wish." (interactive) (if (eq (PC-was-meta-key) PC-meta-flag) --- 182,189 ---- (defun PC-complete-word () ! "Like `minibuffer-complete-word', but allows \"b--di\"-style abbreviations. ! See `PC-complete' for details. This can be bound to other keys, like `-' and `.', if you wish." (interactive) (if (eq (PC-was-meta-key) PC-meta-flag) *************** This can be bound to other keys, like `- *** 179,186 **** (defun PC-complete-space () ! "Like minibuffer-complete-word, but allows \"b--di\"-style abbreviations. ! See PC-complete for details. This is suitable for binding to other keys which should act just like SPC." (interactive) (if (eq (PC-was-meta-key) PC-meta-flag) --- 196,203 ---- (defun PC-complete-space () ! "Like `minibuffer-complete-word', but allows \"b--di\"-style abbreviations. ! See `PC-complete' for details. This is suitable for binding to other keys which should act just like SPC." (interactive) (if (eq (PC-was-meta-key) PC-meta-flag) *************** This is suitable for binding to other ke *** 191,198 **** (defun PC-complete-and-exit () ! "Like minibuffer-complete-and-exit, but allows \"b--di\"-style abbreviations. ! See PC-complete for details." (interactive) (if (eq (PC-was-meta-key) PC-meta-flag) (minibuffer-complete-and-exit) --- 208,215 ---- (defun PC-complete-and-exit () ! "Like `minibuffer-complete-and-exit', but allows \"b--di\"-style abbreviations. ! See `PC-complete' for details." (interactive) (if (eq (PC-was-meta-key) PC-meta-flag) (minibuffer-complete-and-exit) *************** See PC-complete for details." *** 199,206 **** (PC-do-complete-and-exit))) (defun PC-force-complete-and-exit () ! "Like minibuffer-complete-and-exit, but allows \"b--di\"-style abbreviations. ! See PC-complete for details." (interactive) (let ((minibuffer-completion-confirm nil)) (PC-do-complete-and-exit))) --- 216,223 ---- (PC-do-complete-and-exit))) (defun PC-force-complete-and-exit () ! "Like `minibuffer-complete-and-exit', but allows \"b--di\"-style abbreviations. ! See `PC-complete' for details." (interactive) (let ((minibuffer-completion-confirm nil)) (PC-do-complete-and-exit))) *************** See PC-complete for details." *** 217,224 **** (defun PC-completion-help () ! "Like minibuffer-completion-help, but allows \"b--di\"-style abbreviations. ! See PC-complete for details." (interactive) (if (eq (PC-was-meta-key) PC-meta-flag) (minibuffer-completion-help) --- 234,241 ---- (defun PC-completion-help () ! "Like `minibuffer-completion-help', but allows \"b--di\"-style abbreviations. ! See `PC-complete' for details." (interactive) (if (eq (PC-was-meta-key) PC-meta-flag) (minibuffer-completion-help) *************** See PC-complete for details." *** 240,252 **** (defvar PC-ndelims-regex nil) (defvar PC-delims-list nil) ! (defun PC-do-completion (&optional mode) (let* ((table minibuffer-completion-table) (pred minibuffer-completion-predicate) (filename (memq table '(read-file-name-internal read-directory-name-internal))) (dirname nil) ! (str (buffer-string)) (incname (and filename (string-match "<\\([^\"<>]*\\)>?$" str))) (ambig nil) basestr --- 257,271 ---- (defvar PC-ndelims-regex nil) (defvar PC-delims-list nil) ! (defun PC-do-completion (&optional mode beg end) ! (or beg (setq beg (point-min))) ! (or end (setq end (point-max))) (let* ((table minibuffer-completion-table) (pred minibuffer-completion-predicate) (filename (memq table '(read-file-name-internal read-directory-name-internal))) (dirname nil) ! (str (buffer-substring beg end)) (incname (and filename (string-match "<\\([^\"<>]*\\)>?$" str))) (ambig nil) basestr *************** See PC-complete for details." *** 265,273 **** (and filename (not (equal str (setq p (substitute-in-file-name str)))) (progn ! (erase-buffer) (insert p) ! (setq str p))) ;; Prepare various delimiter strings (or (equal PC-word-delimiters PC-delims) --- 284,292 ---- (and filename (not (equal str (setq p (substitute-in-file-name str)))) (progn ! (delete-region beg end) (insert p) ! (setq str p end (+ beg (length str))))) ;; Prepare various delimiter strings (or (equal PC-word-delimiters PC-delims) *************** See PC-complete for details." *** 296,304 **** (if p (setq filename nil table nil pred nil ambig t) ! (erase-buffer) (setq str (concat dir (file-name-nondirectory str))) ! (insert str))) (setq filename nil table nil pred nil)))) ;; Strip directory name if appropriate --- 315,324 ---- (if p (setq filename nil table nil pred nil ambig t) ! (delete-region beg end) (setq str (concat dir (file-name-nondirectory str))) ! (insert str) ! (setq end (+ beg (length str))))) (setq filename nil table nil pred nil)))) ;; Strip directory name if appropriate *************** See PC-complete for details." *** 434,448 **** (let ((first t) i) (if (eq mode 'word) (setq prefix (PC-chop-word prefix basestr))) ! (goto-char (+ (point-min) (length dirname))) (while (and (progn (setq i 0) (while (< i (length prefix)) ! (if (and (not (eobp)) (eq (aref prefix i) (following-char))) (forward-char 1) ! (if (and (not (eobp)) (or (and (looking-at " ") (memq (aref prefix i) PC-delims-list)) --- 454,468 ---- (let ((first t) i) (if (eq mode 'word) (setq prefix (PC-chop-word prefix basestr))) ! (goto-char (+ beg (length dirname))) (while (and (progn (setq i 0) (while (< i (length prefix)) ! (if (and (< (point) end) (eq (aref prefix i) (following-char))) (forward-char 1) ! (if (and (< (point) end) (or (and (looking-at " ") (memq (aref prefix i) PC-delims-list)) *************** See PC-complete for details." *** 449,459 **** (eq (downcase (aref prefix i)) (downcase (following-char))))) ! (delete-char 1) (setq improved t)) ! (insert (substring prefix i (1+ i)))) (setq i (1+ i))) ! (or pt (equal (point) (point-min)) (setq pt (point))) (looking-at PC-delim-regex)) (setq skip (concat skip --- 469,486 ---- (eq (downcase (aref prefix i)) (downcase (following-char))))) ! (progn ! (delete-char 1) ! (setq end (1- end))) ! (and filename (looking-at "\\*") ! (progn ! (delete-char 1) ! (setq end (1- end)))) (setq improved t)) ! (insert (substring prefix i (1+ i))) ! (setq end (1+ end))) (setq i (1+ i))) ! (or pt (equal (point) beg) (setq pt (point))) (looking-at PC-delim-regex)) (setq skip (concat skip *************** See PC-complete for details." *** 475,482 **** (and first (> (length prefix) 0) (setq first nil prefix (substring prefix 0 1)))))) ! (goto-char (if (eq mode 'word) (point-max) ! (or pt (point-min)))))) (if (and (eq mode 'word) (not PC-word-failed-flag)) --- 502,509 ---- (and first (> (length prefix) 0) (setq first nil prefix (substring prefix 0 1)))))) ! (goto-char (if (eq mode 'word) end ! (or pt beg))))) (if (and (eq mode 'word) (not PC-word-failed-flag)) *************** See PC-complete for details." *** 484,492 **** (if improved ;; We changed it... would it be complete without the space? ! (if (PC-is-complete-p (buffer-substring 1 (1- (point-max))) table pred) ! (delete-region (1- (point-max)) (point-max)))) (if improved --- 511,519 ---- (if improved ;; We changed it... would it be complete without the space? ! (if (PC-is-complete-p (buffer-substring 1 (1- end)) table pred) ! (delete-region (1- end) end))) (if improved *************** See PC-complete for details." *** 507,513 **** (if (equal basestr (car poss)) (if (null mode) (PC-temp-minibuffer-message " (Sole completion)")) ! (erase-buffer) (insert (if filename (substitute-in-file-name (concat dirname (car poss))) (car poss)))) --- 534,540 ---- (if (equal basestr (car poss)) (if (null mode) (PC-temp-minibuffer-message " (Sole completion)")) ! (delete-region beg end) (insert (if filename (substitute-in-file-name (concat dirname (car poss))) (car poss)))) *************** See PC-complete for details." *** 538,558 **** (substring new 0 (1+ j)) new))) (defun PC-temp-minibuffer-message (m) ! "A Lisp version of temp_minibuffer_message from minibuf.c." ! (if (fboundp 'temp-minibuffer-message) ! (temp-minibuffer-message m) ! (let ((savemax (point-max))) ! (save-excursion ! (goto-char (point-max)) ! (insert m)) ! (let ((inhibit-quit t)) (sit-for 2) ! (delete-region savemax (point-max)) ! (if quit-flag ! (setq quit-flag nil ! unread-command-char 7)))))) ! (defvar PC-many-files-list nil) --- 565,630 ---- (substring new 0 (1+ j)) new))) + (defvar PC-not-minibuffer nil) + (defun PC-temp-minibuffer-message (m) ! "A Lisp version of `temp_minibuffer_message' from minibuf.c." ! (if PC-not-minibuffer ! (progn ! (message m) (sit-for 2) ! (message "")) ! (if (fboundp 'temp-minibuffer-message) ! (temp-minibuffer-message m) ! (let ((savemax (point-max))) ! (save-excursion ! (goto-char (point-max)) ! (insert m)) ! (let ((inhibit-quit t)) ! (sit-for 2) ! (delete-region savemax (point-max)) ! (if quit-flag ! (setq quit-flag nil ! unread-command-char 7))))))) ! ! ! (defun PC-lisp-complete-symbol () ! "Perform completion on Lisp symbol preceding point. ! That symbol is compared against the symbols that exist ! and any additional characters determined by what is there ! are inserted. ! If the symbol starts just after an open-parenthesis, ! only symbols with function definitions are considered. ! Otherwise, all symbols with function definitions, values ! or properties are considered." ! (interactive) ! (let* ((end (point)) ! (buffer-syntax (syntax-table)) ! (beg (unwind-protect ! (save-excursion ! (if lisp-mode-syntax-table ! (set-syntax-table lisp-mode-syntax-table)) ! (backward-sexp 1) ! (while (= (char-syntax (following-char)) ?\') ! (forward-char 1)) ! (point)) ! (set-syntax-table buffer-syntax))) ! (minibuffer-completion-table obarray) ! (minibuffer-completion-predicate ! (if (eq (char-after (1- beg)) ?\() ! 'fboundp ! (function (lambda (sym) ! (or (boundp sym) (fboundp sym) ! (symbol-plist sym)))))) ! (PC-not-minibuffer t)) ! (PC-do-completion nil beg end))) ! ! ! ;;; Wildcards in `C-x C-f' command. This is independent from the main ! ;;; completion code, except for `PC-expand-many-files' which is called ! ;;; when "*"'s are found in the path during filename completion. (The ! ;;; above completion code always understands "*"'s, except in file paths, ! ;;; without relying on the following code.) (defvar PC-many-files-list nil) *************** See PC-complete for details." *** 622,628 **** ! ;;;; Facilities for loading C header files. (defun PC-look-for-include-file () (if (string-match "[\"<]\\([^\"<>]*\\)[\">]?$" (buffer-file-name)) --- 694,702 ---- ! ;;; Facilities for loading C header files. This is independent from the ! ;;; main completion code. See also the variable `PC-include-file-path' ! ;;; at top of this file. (defun PC-look-for-include-file () (if (string-match "[\"<]\\([^\"<>]*\\)[\">]?$" (buffer-file-name)) *************** See PC-complete for details." *** 629,634 **** --- 703,709 ---- (let ((name (substring (buffer-file-name) (match-beginning 1) (match-end 1))) (punc (aref (buffer-file-name) (match-beginning 0))) + (path nil) new-buf) (kill-buffer (current-buffer)) (if (equal name "") *************** See PC-complete for details." *** 641,651 **** (setq name (buffer-substring (match-beginning 1) (match-end 1)) punc (char-after (1- (match-beginning 1)))) ! (error "Not on an #include line"))))) (or (string-match "\\.[a-zA-Z0-9]+$" name) (setq name (concat name ".h"))) (if (eq punc ?\<) ! (let ((path (PC-include-file-path))) (while (and path (not (file-exists-p (concat (file-name-as-directory (car path)) --- 716,742 ---- (setq name (buffer-substring (match-beginning 1) (match-end 1)) punc (char-after (1- (match-beginning 1)))) ! ;; Suggested by Frank Siebenlist: ! (if (or (looking-at ! "[ \t]*([ \t]*load[ \t]+\"\\([^\"]+\\)\"") ! (looking-at ! "[ \t]*([ \t]*load-library[ \t]+\"\\([^\"]+\\)\"") ! (looking-at ! "[ \t]*([ \t]*require[ \t]+'\\([^\t )]+\\)[\t )]")) ! (progn ! (setq name (buffer-substring (match-beginning 1) ! (match-end 1)) ! punc ?\< ! path load-path) ! (if (string-match "\\.elc$" name) ! (setq name (substring name 0 -1)) ! (or (string-match "\\.el$" name) ! (setq name (concat name ".el"))))) ! (error "Not on an #include line")))))) (or (string-match "\\.[a-zA-Z0-9]+$" name) (setq name (concat name ".h"))) (if (eq punc ?\<) ! (let ((path (or path (PC-include-file-path)))) (while (and path (not (file-exists-p (concat (file-name-as-directory (car path)) *************** See PC-complete for details." *** 662,668 **** (error "No such include file: \"%s\"" name)))) (setq new-buf (get-file-buffer name)) (if new-buf ! nil ; no need to verify last-modified time for this! (setq new-buf (create-file-buffer name)) (set-buffer new-buf) (erase-buffer) --- 753,760 ---- (error "No such include file: \"%s\"" name)))) (setq new-buf (get-file-buffer name)) (if new-buf ! ;; no need to verify last-modified time for this! ! (set-buffer new-buf) (setq new-buf (create-file-buffer name)) (set-buffer new-buf) (erase-buffer) *************** See PC-complete for details." *** 685,726 **** path))) ;;; This is adapted from lib-complete.el, by Mike Williams. ! (defun PC-include-file-all-completions (FILE SEARCH-PATH &optional FULL) "Return all completions for FILE in any directory on SEARCH-PATH. If optional third argument FULL is non-nil, returned pathnames should be absolute rather than relative to some directory on the SEARCH-PATH." ! (setq SEARCH-PATH (mapcar '(lambda (dir) (if dir (file-name-as-directory dir) default-directory)) ! SEARCH-PATH)) ! (if (file-name-absolute-p FILE) ! ;; It's an absolute file name, so don't need SEARCH-PATH (progn ! (setq FILE (expand-file-name FILE)) (file-name-all-completions ! (file-name-nondirectory FILE) (file-name-directory FILE))) ! (let ((subdir (file-name-directory FILE)) ! (file (file-name-nondirectory FILE)) file-lists) ! ;; Append subdirectory part to each element of SEARCH-PATH (if subdir ! (setq SEARCH-PATH (mapcar '(lambda (dir) (concat dir subdir)) ! SEARCH-PATH) ! FILE )) ! ;; Make list of completions in each directory on SEARCH-PATH ! (while SEARCH-PATH ! (let* ((dir (car SEARCH-PATH)) ! (subdir (if FULL dir subdir))) (if (file-directory-p dir) (progn (setq file-lists (cons (mapcar '(lambda (file) (concat subdir file)) ! (file-name-all-completions file ! (car SEARCH-PATH))) file-lists)))) ! (setq SEARCH-PATH (cdr SEARCH-PATH)))) ;; Compress out duplicates while building complete list (slloooow!) (let ((sorted (sort (apply 'nconc file-lists) '(lambda (x y) (not (string-lessp x y))))) --- 777,818 ---- path))) ;;; This is adapted from lib-complete.el, by Mike Williams. ! (defun PC-include-file-all-completions (file search-path &optional full) "Return all completions for FILE in any directory on SEARCH-PATH. If optional third argument FULL is non-nil, returned pathnames should be absolute rather than relative to some directory on the SEARCH-PATH." ! (setq search-path (mapcar '(lambda (dir) (if dir (file-name-as-directory dir) default-directory)) ! search-path)) ! (if (file-name-absolute-p file) ! ;; It's an absolute file name, so don't need search-path (progn ! (setq file (expand-file-name file)) (file-name-all-completions ! (file-name-nondirectory file) (file-name-directory file))) ! (let ((subdir (file-name-directory file)) ! (ndfile (file-name-nondirectory file)) file-lists) ! ;; Append subdirectory part to each element of search-path (if subdir ! (setq search-path (mapcar '(lambda (dir) (concat dir subdir)) ! search-path) ! file )) ! ;; Make list of completions in each directory on search-path ! (while search-path ! (let* ((dir (car search-path)) ! (subdir (if full dir subdir))) (if (file-directory-p dir) (progn (setq file-lists (cons (mapcar '(lambda (file) (concat subdir file)) ! (file-name-all-completions ndfile ! (car search-path))) file-lists)))) ! (setq search-path (cdr search-path)))) ;; Compress out duplicates while building complete list (slloooow!) (let ((sorted (sort (apply 'nconc file-lists) '(lambda (x y) (not (string-lessp x y))))) *************** absolute rather than relative to some di *** 762,765 **** (fset 'read-file-name-internal 'PC-read-include-file-name-internal))) ;;; End. - --- 854,856 ---- diff -cprP -x *.elc emacs-19.12/lisp/cookie1.el emacs-19.13/lisp/cookie1.el *** emacs-19.12/lisp/cookie1.el Tue Jun 8 05:31:05 1993 --- emacs-19.13/lisp/cookie1.el Wed Jun 2 14:40:29 1993 *************** *** 131,134 **** (provide 'cookie1) ! ;;; cookie.el ends here --- 131,134 ---- (provide 'cookie1) ! ;;; cookie1.el ends here diff -cprP -x *.elc emacs-19.12/lisp/diff.el emacs-19.13/lisp/diff.el *** emacs-19.12/lisp/diff.el Tue Jun 8 05:31:15 1993 --- emacs-19.13/lisp/diff.el Wed Jun 2 13:09:00 1993 *************** *** 196,204 **** (let ((command (mapconcat 'identity (append '("diff") ! (if (consp diff-switches) ! diff-switches ! (list diff-switches)) (if (or old-alt new-alt) (list "-L" old "-L" new)) (list (or old-alt old)) --- 196,209 ---- (let ((command (mapconcat 'identity (append '("diff") ! ;; Use explicitly specified switches ! (if switches ! (if (consp switches) ! switches (list switches)) ! ;; If not specified, use default. ! (if (consp diff-switches) ! diff-switches ! (list diff-switches))) (if (or old-alt new-alt) (list "-L" old "-L" new)) (list (or old-alt old)) diff -cprP -x *.elc emacs-19.12/lisp/dired.el emacs-19.13/lisp/dired.el *** emacs-19.12/lisp/dired.el Tue Jun 8 05:31:20 1993 --- emacs-19.13/lisp/dired.el Sun Jun 6 17:13:10 1993 *************** *** 1735,1741 **** ;; It is less than general to check for ~ here, ;; but it's the only way this runs fast enough. (and (save-excursion (end-of-line) ! (eq (preceding-char) ?~)) (not (looking-at dired-re-dir)) (let ((fn (dired-get-filename t t))) (if fn (backup-file-name-p fn)))) --- 1735,1750 ---- ;; It is less than general to check for ~ here, ;; but it's the only way this runs fast enough. (and (save-excursion (end-of-line) ! (or ! (eq (preceding-char) ?~) ! ;; Handle executables in case of -F option. ! ;; We need not worry about the other kinds ! ;; of markings that -F makes, since they won't ! ;; appear on real backup files. ! (if (eq (preceding-char) ?*) ! (progn ! (forward-char -1) ! (eq (preceding-char) ?~))))) (not (looking-at dired-re-dir)) (let ((fn (dired-get-filename t t))) (if fn (backup-file-name-p fn)))) *************** OLD and NEW are both characters used to *** 1750,1785 **** (new (progn (message "Change %c marks to (new mark): " old) (read-char)))) (list old new))) ! (let ((regexp (format "^%s" (regexp-quote old))) ! (buffer-read-only)) ! (save-excursion ! (goto-char (point-min)) ! (while (re-search-forward regexp nil t) ! (beginning-of-line) ! (delete-region (point) (1+ (point))) ! (insert-char new 1))))) (defun dired-unmark-all-files (mark &optional arg) ! "Remove a specific mark or any mark from every file. With prefix arg, query for each marked file. Type \\[help-command] at that time for help." ! (interactive "sRemove marks (RET means all): \nP") ! (let ((count 0) ! (re (if (zerop (length mark)) dired-re-mark ! (concat "^" (regexp-quote mark))))) ! (save-excursion ! (let (buffer-read-only case-fold-search query ! (help-form "\ Type SPC or `y' to unmark one file, DEL or `n' to skip to next, `!' to unmark all remaining files with no more questions.")) ! (goto-char (point-min)) ! (while (re-search-forward re nil t) ! (if (or (not arg) ! (dired-query 'query "Unmark file `%s'? " ! (dired-get-filename t))) ! (progn (delete-char -1) (insert " ") (setq count (1+ count)))) ! (forward-line 1)))) ! (message "%s" (format "Marks removed: %d %s" count mark)))) ;; Logging failures operating on files, and showing the results. --- 1759,1801 ---- (new (progn (message "Change %c marks to (new mark): " old) (read-char)))) (list old new))) ! (if (or (eq old ?\r) (eq new ?\r)) ! (ding) ! (let ((string (format "\n%c" old)) ! (buffer-read-only)) ! (save-excursion ! (goto-char (point-min)) ! (while (search-forward string nil t) ! (subst-char-in-region (match-beginning 0) ! (match-end 0) old new)))))) (defun dired-unmark-all-files (mark &optional arg) ! "Remove a specific mark (or any mark) from every file. ! After this command, type the mark character to remove, ! or type RET to remove all marks. With prefix arg, query for each marked file. Type \\[help-command] at that time for help." ! (interactive "cRemove marks (RET means all): \nP") ! (save-excursion ! (let* ((count 0) ! buffer-read-only case-fold-search query ! (string (format "\n%c" mark)) ! (help-form "\ Type SPC or `y' to unmark one file, DEL or `n' to skip to next, `!' to unmark all remaining files with no more questions.")) ! (goto-char (point-min)) ! (while (if (eq mark ?\r) ! (re-search-forward dired-re-mark nil t) ! (search-forward string nil t)) ! (if (or (not arg) ! (dired-query 'query "Unmark file `%s'? " ! (dired-get-filename t))) ! (progn (subst-char-in-region (1- (point)) (point) ! (preceding-char) ?\ ) ! (setq count (1+ count))))) ! (message (if (= count 1) "1 mark removed" ! "%d marks removed") ! count)))) ;; Logging failures operating on files, and showing the results. diff -cprP -x *.elc emacs-19.12/lisp/edt.el emacs-19.13/lisp/edt.el *** emacs-19.12/lisp/edt.el Tue Jun 8 05:31:32 1993 --- emacs-19.13/lisp/edt.el Fri Jun 4 13:08:53 1993 *************** *** 390,400 **** (define-key lisp-mode-map "\177" edt-mode-old-lisp-delete) ;"Delete" (global-set-key "\C-j" edt-mode-old-linefeed)) ;"LineFeed" - (defalias 'GOLD-prefix GOLD-map) - (defvar GOLD-map (make-keymap) "`GOLD-map' maps the function keys on the VT100 keyboard preceeded by the PF1 key. GOLD is the ASCII the 7-bit escape sequence OP.") (global-set-key [home] 'edt-beginning-of-window) (global-set-key [kp-f2] 'describe-key) --- 390,400 ---- (define-key lisp-mode-map "\177" edt-mode-old-lisp-delete) ;"Delete" (global-set-key "\C-j" edt-mode-old-linefeed)) ;"LineFeed" (defvar GOLD-map (make-keymap) "`GOLD-map' maps the function keys on the VT100 keyboard preceeded by the PF1 key. GOLD is the ASCII the 7-bit escape sequence OP.") + + (defalias 'GOLD-prefix GOLD-map) (global-set-key [home] 'edt-beginning-of-window) (global-set-key [kp-f2] 'describe-key) diff -cprP -x *.elc emacs-19.12/lisp/ehelp.el emacs-19.13/lisp/ehelp.el *** emacs-19.12/lisp/ehelp.el Tue Jun 8 05:31:33 1993 --- emacs-19.13/lisp/ehelp.el Wed Jun 2 23:49:45 1993 *************** *** 127,133 **** (catch 'exit (if (pos-visible-in-window-p (point-max)) (progn (message "<<< Press Space to bury the help buffer >>>") ! (if (eq (setq unread-command-events (list (read-event))) ?\ ) (progn (setq unread-command-events nil) (throw 'exit t))))) (let (up down both neither --- 127,134 ---- (catch 'exit (if (pos-visible-in-window-p (point-max)) (progn (message "<<< Press Space to bury the help buffer >>>") ! (if (equal (setq unread-command-events (list (read-event))) ! '(?\ )) (progn (setq unread-command-events nil) (throw 'exit t))))) (let (up down both neither diff -cprP -x *.elc emacs-19.12/lisp/electric.el emacs-19.13/lisp/electric.el *** emacs-19.12/lisp/electric.el Tue Jun 8 05:31:33 1993 --- emacs-19.13/lisp/electric.el Wed Jun 2 23:48:34 1993 *************** *** 58,64 **** this-command (key-binding cmd) cmd this-command) (if (or (prog1 quit-flag (setq quit-flag nil)) ! (= last-input-char ?\C-g)) (progn (setq unread-command-events nil prefix-arg nil) ;; If it wasn't cancelling a prefix character, then quit. --- 58,64 ---- this-command (key-binding cmd) cmd this-command) (if (or (prog1 quit-flag (setq quit-flag nil)) ! (eq last-input-char ?\C-g)) (progn (setq unread-command-events nil prefix-arg nil) ;; If it wasn't cancelling a prefix character, then quit. *************** *** 74,80 **** (progn (command-execute cmd) (setq last-command this-command) (if (or (prog1 quit-flag (setq quit-flag nil)) ! (= last-input-char ?\C-g)) (progn (setq unread-command-events nil) (if (not inhibit-quit) (progn (ding) --- 74,80 ---- (progn (command-execute cmd) (setq last-command this-command) (if (or (prog1 quit-flag (setq quit-flag nil)) ! (eq last-input-char ?\C-g)) (progn (setq unread-command-events nil) (if (not inhibit-quit) (progn (ding) diff -cprP -x *.elc emacs-19.12/lisp/etags.el emacs-19.13/lisp/etags.el *** emacs-19.12/lisp/etags.el Tue Jun 8 05:31:40 1993 --- emacs-19.13/lisp/etags.el Mon Jun 7 14:31:48 1993 *************** *** 879,885 **** (goto-tag-location-function . etags-goto-tag-location) (find-tag-regexp-search-function . re-search-forward) (find-tag-regexp-tag-order . (tag-re-match-p)) ! (find-tag-regexp-next-line-after-failuire-p . t) (find-tag-search-function . search-forward) (find-tag-tag-order . (tag-exact-match-p tag-word-match-p tag-any-match-p)) --- 879,885 ---- (goto-tag-location-function . etags-goto-tag-location) (find-tag-regexp-search-function . re-search-forward) (find-tag-regexp-tag-order . (tag-re-match-p)) ! (find-tag-regexp-next-line-after-failure-p . t) (find-tag-search-function . search-forward) (find-tag-tag-order . (tag-exact-match-p tag-word-match-p tag-any-match-p)) diff -cprP -x *.elc emacs-19.12/lisp/faces.el emacs-19.13/lisp/faces.el *** emacs-19.12/lisp/faces.el Tue Jun 8 05:31:41 1993 --- emacs-19.13/lisp/faces.el Mon Jun 7 19:22:00 1993 *************** *** 749,755 **** (if (cdr (or (assq 'reverse parameters) (assq 'reverse default-frame-alist) (cons nil ! (x-get-resource "reverseVideo" "Reversevideo")))) (let ((params (frame-parameters frame))) (modify-frame-parameters frame --- 749,755 ---- (if (cdr (or (assq 'reverse parameters) (assq 'reverse default-frame-alist) (cons nil ! (x-get-resource "reverseVideo" "ReverseVideo")))) (let ((params (frame-parameters frame))) (modify-frame-parameters frame diff -cprP -x *.elc emacs-19.12/lisp/flow-ctrl.el emacs-19.13/lisp/flow-ctrl.el *** emacs-19.12/lisp/flow-ctrl.el Tue Jun 8 05:31:49 1993 --- emacs-19.13/lisp/flow-ctrl.el Fri Jun 4 01:16:47 1993 *************** *** 46,52 **** ;;;###autoload (defun enable-flow-control () ! "Enable use of flow control; let user type C-s as C-\ and C-q as C-^." (interactive) ;; Tell emacs to pass C-s and C-q to OS. (set-input-mode nil t nil) --- 46,52 ---- ;;;###autoload (defun enable-flow-control () ! "Enable use of flow control; let user type C-s as C-\\ and C-q as C-^." (interactive) ;; Tell emacs to pass C-s and C-q to OS. (set-input-mode nil t nil) diff -cprP -x *.elc emacs-19.12/lisp/forms-mode/forms-d2.dat emacs-19.13/lisp/forms-mode/forms-d2.dat *** emacs-19.12/lisp/forms-mode/forms-d2.dat --- emacs-19.13/lisp/forms-mode/forms-d2.dat Fri Jul 12 16:43:19 1991 *************** *** 0 **** --- 1,4 ---- + comp.sources.unix v11i008 269 getty-enable 1 tron@sc.nsc.com (Ronald S. Karr) Getty on/off programs for 4.[23] BSD 890505 This program can be used to dynamically enable / disable terminal lines on a BSD system. + comp.sources.unix 11 v11i022 283 syslog 1 emory!arnold (Arnold D. Robbins {EUCC}) Development version of syslog(3), for ATT, too 28/08/1987 + comp.sources.unix 11 v11i033 290 less3 3 sun!intsc!convgt!mark The 'less' pager 02/09/1987 + comp.sources.unix 11 v11i036 293 test.el 3 "Mark A. Ardis" Test system for GNU Emacs 10/09/1987 diff -cprP -x *.elc emacs-19.12/lisp/forms-mode/forms-d2.el emacs-19.13/lisp/forms-mode/forms-d2.el *** emacs-19.12/lisp/forms-mode/forms-d2.el --- emacs-19.13/lisp/forms-mode/forms-d2.el Mon Jul 1 14:16:15 1991 *************** *** 0 **** --- 1,85 ---- + ;; demo2 -- demo forms-mode -*- emacs-lisp -*- + + ;; SCCS Status : @(#)@ demo2 1.1.2 + ;; Author : Johan Vromans + ;; Created On : 1989 + ;; Last Modified By: Johan Vromans + ;; Last Modified On: Mon Jul 1 13:56:31 1991 + ;; Update Count : 2 + ;; Status : OK + ;; + ;; This sample forms exploit most of the features of forms mode. + + ;; Set the name of the data file. + (setq forms-file "forms-d2.dat") + + ;; Use 'forms-enumerate' to set field names and number thereof. + (setq forms-number-of-fields + (forms-enumerate + '(arch-newsgroup ; 1 + arch-volume ; 2 + arch-issue ; and ... + arch-article ; ... so + arch-shortname ; ... ... on + arch-parts + arch-from + arch-longname + arch-keywords + arch-date + arch-remarks))) + + ;; The following functions are used by this form for layout purposes. + ;; + (defun arch-tocol (target &optional fill) + "Produces a string to skip to column TARGET. Prepends newline if needed. + The optional FILL should be a character, used to fill to the column." + (if (null fill) + (setq fill ? )) + (if (< target (current-column)) + (concat "\n" (make-string target fill)) + (make-string (- target (current-column)) fill))) + ;; + (defun arch-rj (target field &optional fill) + "Produces a string to skip to column TARGET minus the width of field FIELD. + Prepends newline if needed. The optional FILL should be a character, + used to fill to the column." + (arch-tocol (- target (length (nth field forms-fields))) fill)) + + ;; Record filters. + ;; This example uses the (defun ...) method of defining. + ;; + (defun forms-new-record-filter (the-record) + "Form a new record with some defaults." + (aset the-record arch-from (user-full-name)) + (aset the-record arch-date (current-time-string)) + the-record ; return it + ) + + ;; The format list. + (setq forms-format-list + (list + "====== Public Domain Software Archive ======\n\n" + arch-shortname + " - " arch-longname + "\n\n" + "Article: " arch-newsgroup + "/" arch-article + " " + '(arch-tocol 40) + "Issue: " arch-issue + " " + '(arch-rj 73 10) + "Date: " arch-date + "\n\n" + "Submitted by: " arch-from + "\n" + '(arch-tocol 79 ?-) + "\n" + "Keywords: " arch-keywords + "\n\n" + "Parts: " arch-parts + "\n\n====== Remarks ======\n\n" + arch-remarks + )) + + ;; That's all, folks! diff -cprP -x *.elc emacs-19.12/lisp/forms-mode/forms-pass.el emacs-19.13/lisp/forms-mode/forms-pass.el *** emacs-19.12/lisp/forms-mode/forms-pass.el --- emacs-19.13/lisp/forms-mode/forms-pass.el Mon Jul 1 14:05:53 1991 *************** *** 0 **** --- 1,25 ---- + ;; demo for forms-mode -*-emacs-lisp-*- + ;; + ;; This demo visits your passwd file. + + ;; use yp if present + (or (file-exists-p (setq forms-file "/var/yp/src/passwd")) + (setq forms-file "/etc/passwd")) + + (setq forms-read-only t) ; to make sure + (setq forms-field-sep ":") + (setq forms-number-of-fields 7) + + (setq forms-format-list + (list + "====== Visiting " forms-file " ======\n\n" + "User : " 1 + " Uid: " 3 + " Gid: " 4 + "\n\n" + "Name : " 5 + "\n\n" + "Home : " 6 + "\n\n" + "Shell: " 7 + "\n")) diff -cprP -x *.elc emacs-19.12/lisp/forms-mode/forms.README emacs-19.13/lisp/forms-mode/forms.README *** emacs-19.12/lisp/forms-mode/forms.README --- emacs-19.13/lisp/forms-mode/forms.README Fri Jul 19 13:44:40 1991 *************** *** 0 **** --- 1,4 ---- + See also the older material (including texinfo documentation) in + + /gd/gnu/emacs/lisp-pending/forms-mode/ + diff -cprP -x *.elc emacs-19.12/lisp/forms-mode/forms.el emacs-19.13/lisp/forms-mode/forms.el *** emacs-19.12/lisp/forms-mode/forms.el --- emacs-19.13/lisp/forms-mode/forms.el Mon Jul 1 14:06:13 1991 *************** *** 0 **** --- 1,1356 ---- + ;;; forms.el -- Forms Mode - A GNU Emacs Major Mode + ;;; SCCS Status : @(#)@ forms 1.2.7 + ;;; Author : Johan Vromans + ;;; Created On : 1989 + ;;; Last Modified By: Johan Vromans + ;;; Last Modified On: Mon Jul 1 14:13:20 1991 + ;;; Update Count : 15 + ;;; Status : OK + + ;;; This file is part of GNU Emacs. + ;;; GNU Emacs is distributed in the hope that it will be useful, + ;;; but WITHOUT ANY WARRANTY. No author or distributor + ;;; accepts responsibility to anyone for the consequences of using it + ;;; or for whether it serves any particular purpose or works at all, + ;;; unless he says so in writing. Refer to the GNU Emacs General Public + ;;; License for full details. + + ;;; Everyone is granted permission to copy, modify and redistribute + ;;; GNU Emacs, but only under the conditions described in the + ;;; GNU Emacs General Public License. A copy of this license is + ;;; supposed to have been given to you along with GNU Emacs so you + ;;; can know your rights and responsibilities. + ;;; If you don't have this copy, write to the Free Software + ;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + ;;; + + ;;; HISTORY + ;;; 1-Jul-1991 Johan Vromans + ;;; Normalized error messages. + ;;; 30-Jun-1991 Johan Vromans + ;;; Add support for forms-modified-record-filter. + ;;; Allow the filter functions to be the name of a function. + ;;; Fix: parse--format used forms--dynamic-text destructively. + ;;; Internally optimized the forms-format-list. + ;;; Added support for debugging. + ;;; Stripped duplicate documentation. + ;;; + ;;; 29-Jun-1991 Johan Vromans + ;;; Add support for functions and lisp symbols in forms-format-list. + ;;; Add function forms-enumerate. + + (provide 'forms-mode) + + ;;; Visit a file using a form. + ;;; + ;;; === Naming conventions + ;;; + ;;; The names of all variables and functions start with 'form-'. + ;;; Names which start with 'form--' are intended for internal use, and + ;;; should *NOT* be used from the outside. + ;;; + ;;; All variables are buffer-local, to enable multiple forms visits + ;;; simultaneously. + ;;; Variable 'forms--mode-setup' is local to *ALL* buffers, for it + ;;; controls if forms-mode has been enabled in a buffer. + ;;; + ;;; === How it works === + ;;; + ;;; Forms mode means visiting a data file which is supposed to consist + ;;; of records each containing a number of fields. The records are + ;;; separated by a newline, the fields are separated by a user-defined + ;;; field separater (default: TAB). + ;;; When shown, a record is transferred to an emacs buffer and + ;;; presented using a user-defined form. One record is shown at a + ;;; time. + ;;; + ;;; Forms mode is a composite mode. It involves two files, and two + ;;; buffers. + ;;; The first file, called the control file, defines the name of the + ;;; data file and the forms format. This file buffer will be used to + ;;; present the forms. + ;;; The second file holds the actual data. The buffer of this file + ;;; will be buried, for it is never accessed directly. + ;;; + ;;; Forms mode is invoked using "forms-find-file control-file". + ;;; Alternativily forms-find-file-other-window can be used. + ;;; + ;;; You may also visit the control file, and switch to forms mode by hand + ;;; with M-x forms-mode . + ;;; + ;;; Automatic mode switching is supported, so you may use "find-file" + ;;; if you specify "-*- forms -*-" in the first line of the control file. + ;;; + ;;; The control file is visited, evaluated using + ;;; eval-current-buffer, and should set at least the following + ;;; variables: + ;;; + ;;; forms-file [string] the name of the data file. + ;;; + ;;; forms-number-of-fields [integer] + ;;; The number of fields in each record. + ;;; + ;;; forms-format-list [list] formatting instructions. + ;;; + ;;; The forms-format-list should be a list, each element containing + ;;; + ;;; - a string, e.g. "hello" (which is inserted \"as is\"), + ;;; + ;;; - an integer, denoting a field number. The contents of the field + ;;; are inserted at this point. + ;;; The first field has number one. + ;;; + ;;; - a function call, e.g. (insert "text"). This function call is + ;;; dynamically evaluated and should return a string. It should *NOT* + ;;; have side-effects on the forms being constructed. + ;;; The current fields are available to the function in the variable + ;;; forms-fields, they should *NOT* be modified. + ;;; + ;;; - a lisp symbol, that must evaluate to one of the above. + ;;; + ;;; Optional variables which may be set in the control file: + ;;; + ;;; forms-field-sep [string, default TAB] + ;;; The field separator used to separate the + ;;; fields in the data file. It may be a string. + ;;; + ;;; forms-read-only [bool, default nil] + ;;; 't' means that the data file is visited read-only. + ;;; If no write access to the data file is + ;;; possible, read-only mode is enforced. + ;;; + ;;; forms-multi-line [string, default "^K"] + ;;; If non-null the records of the data file may + ;;; contain fields which span multiple lines in + ;;; the form. + ;;; This variable denoted the separator character + ;;; to be used for this purpose. Upon display, all + ;;; occurrencies of this character are translated + ;;; to newlines. Upon storage they are translated + ;;; back to the separator. + ;;; + ;;; forms-forms-scroll [bool, default t] + ;;; If non-nil: redefine scroll-up/down to perform + ;;; forms-next/prev-field if in forms mode. + ;;; + ;;; forms-forms-jump [bool, default t] + ;;; If non-nil: redefine beginning/end-of-buffer + ;;; to performs forms-first/last-field if in + ;;; forms mode. + ;;; + ;;; forms-new-record-filter [symbol, no default] + ;;; If defined: this should be the name of a + ;;; function that is called when a new + ;;; record is created. It can be used to fill in + ;;; the new record with default fields, for example. + ;;; Instead of the name of the function, it may + ;;; be the function itself. + ;;; + ;;; forms-modified-record-filter [symbol, no default] + ;;; If defined: this should be the name of a + ;;; function that is called when a record has + ;;; been modified. It is called after the fields + ;;; are parsed. It can be used to register + ;;; modification dates, for example. + ;;; Instead of the name of the function, it may + ;;; be the function itself. + ;;; + ;;; After evaluating the control file, its buffer is cleared and used + ;;; for further processing. + ;;; The data file (as designated by "forms-file") is visited in a buffer + ;;; (forms--file-buffer) which will not normally be shown. + ;;; Great malfunctioning may be expected if this file/buffer is modified + ;;; outside of this package while it's being visited! + ;;; + ;;; A record from the data file is transferred from the data file, + ;;; split into fields (into forms--the-record-list), and displayed using + ;;; the specs in forms-format-list. + ;;; A format routine 'forms--format' is built upon startup to format + ;;; the records. + ;;; + ;;; When a form is changed the record is updated as soon as this form + ;;; is left. The contents of the form are parsed using forms-format-list, + ;;; and the fields which are deduced from the form are modified. So, + ;;; fields not shown on the forms retain their origional values. + ;;; The newly formed record and replaces the contents of the + ;;; old record in forms--file-buffer. + ;;; A parse routine 'forms--parser' is built upon startup to parse + ;;; the records. + ;;; + ;;; Two exit functions exist: forms-exit (which saves) and forms-exit-no-save + ;;; (which doesn't). However, if forms-exit-no-save is executed and the file + ;;; buffer has been modified, emacs will ask questions. + ;;; + ;;; Other functions are: + ;;; + ;;; paging (forward, backward) by record + ;;; jumping (first, last, random number) + ;;; searching + ;;; creating and deleting records + ;;; reverting the form (NOT the file buffer) + ;;; switching edit <-> view mode v.v. + ;;; jumping from field to field + ;;; + ;;; As an documented side-effect: jumping to the last record in the + ;;; file (using forms-last-record) will adjust forms--total-records if + ;;; needed. + ;;; + ;;; Commands and keymaps: + ;;; + ;;; A local keymap 'forms-mode-map' is used in the forms buffer. + ;;; As conventional, this map can be accessed with C-c prefix. + ;;; In read-only mode, the C-c prefix must be omitted. + ;;; + ;;; Default bindings: + ;;; + ;;; \C-c forms-mode-map + ;;; TAB forms-next-field + ;;; SPC forms-next-record + ;;; < forms-first-record + ;;; > forms-last-record + ;;; ? describe-mode + ;;; d forms-delete-record + ;;; e forms-edit-mode + ;;; i forms-insert-record + ;;; j forms-jump-record + ;;; n forms-next-record + ;;; p forms-prev-record + ;;; q forms-exit + ;;; s forms-search + ;;; v forms-view-mode + ;;; x forms-exit-no-save + ;;; DEL forms-prev-record + ;;; + ;;; Standard functions scroll-up, scroll-down, beginning-of-buffer and + ;;; end-of-buffer are wrapped with re-definitions, which map them to + ;;; next/prev record and first/last record. + ;;; Buffer-local variables forms-forms-scroll and forms-forms-jump + ;;; may be used to control these redefinitions. + ;;; + ;;; Function save-buffer is also wrapped to perform a sensible action. + ;;; A revert-file-hook is defined to revert a forms to original. + ;;; + ;;; For convenience, TAB is always bound to forms-next-field, so you + ;;; don't need the C-c prefix for this command. + ;;; + ;;; Global variables and constants + + (defconst forms-version "1.2.7" + "Version of forms-mode implementation") + + (defvar forms-forms-scrolls t + "If non-null: redefine scroll-up/down to be used with forms-mode.") + + (defvar forms-forms-jumps t + "If non-null: redefine beginning/end-of-buffer to be used with forms-mode.") + + (defvar forms-mode-hooks nil + "Hook functions to be run upon entering forms mode.") + ;;; + ;;; Mandatory variables - must be set by evaluating the control file + + (defvar forms-file nil + "Name of the file holding the data.") + + (defvar forms-format-list nil + "List of formatting specifications.") + + (defvar forms-number-of-fields nil + "Number of fields per record.") + + ;;; + ;;; Optional variables with default values + + (defvar forms-field-sep "\t" + "Field separator character (default TAB)") + + (defvar forms-read-only nil + "Read-only mode (defaults to the write access on the data file).") + + (defvar forms-multi-line "\C-k" + "Character to separate multi-line fields (default ^K)") + + (defvar forms-forms-scroll t + "Redefine scroll-up/down to perform forms-next/prev-record when in + forms mode.") + + (defvar forms-forms-jump t + "Redefine beginning/end-of-buffer to perform forms-first/last-record + when in forms mode.") + + ;;; + ;;; Internal variables. + + (defvar forms--file-buffer nil + "Buffer which holds the file data") + + (defvar forms--total-records 0 + "Total number of records in the data file.") + + (defvar forms--current-record 0 + "Number of the record currently on the screen.") + + (defvar forms-mode-map nil ; yes - this one is global + "Keymap for form buffer.") + + (defvar forms--markers nil + "Field markers in the screen.") + + (defvar forms--number-of-markers 0 + "Number of fields on screen.") + + (defvar forms--the-record-list nil + "List of strings of the current record, as parsed from the file.") + + (defvar forms--search-regexp nil + "Last regexp used by forms-search.") + + (defvar forms--format nil + "Formatting routine.") + + (defvar forms--parser nil + "Forms parser routine.") + + (defvar forms--mode-setup nil + "Internal - keeps track of forms-mode being set-up.") + (make-variable-buffer-local 'forms--mode-setup) + + (defvar forms--new-record-filter nil + "Internal - set if a new record filter has been defined.") + + (defvar forms--modified-record-filter nil + "Internal - set if a modified record filter has been defined.") + + (defvar forms--dynamic-text nil + "Internal - holds dynamic text to insert between fields.") + + (defvar forms-fields nil + "List with fields of the current forms. First field has number 1.") + + ;;; + ;;; forms-mode + ;;; + ;;; This is not a simple major mode, as usual. Therefore, forms-mode + ;;; takes an optional argument 'primary' which is used for the initial + ;;; set-up. Normal use would leave 'primary' to nil. + ;;; + ;;; A global buffer-local variable 'forms--mode-setup' has the same effect + ;;; but makes it possible to auto-invoke forms-mode using find-file. + ;;; + ;;; Note: although it seems logical to have (make-local-variable) executed + ;;; where the variable is first needed, I deliberately placed all calls + ;;; in the forms-mode function. + + (defun forms-mode (&optional primary) + "Major mode to visit files in a field-structured manner using a form. + + Commands (prefix with C-c if not in read-only mode): + \\{forms-mode-map}" + + (interactive) ; no - 'primary' is not prefix arg + + ;; Primary set-up: evaluate buffer and check if the mandatory + ;; variables have been set. + (if (or primary (not forms--mode-setup)) + (progn + (kill-all-local-variables) + + ;; make mandatory variables + (make-local-variable 'forms-file) + (make-local-variable 'forms-number-of-fields) + (make-local-variable 'forms-format-list) + + ;; make optional variables + (make-local-variable 'forms-field-sep) + (make-local-variable 'forms-read-only) + (make-local-variable 'forms-multi-line) + (make-local-variable 'forms-forms-scroll) + (make-local-variable 'forms-forms-jump) + (fmakunbound 'forms-new-record-filter) + + ;; eval the buffer, should set variables + (eval-current-buffer) + + ;; check if the mandatory variables make sense. + (or forms-file + (error "'forms-file' has not been set")) + (or forms-number-of-fields + (error "'forms-number-of-fields' has not been set")) + (or (> forms-number-of-fields 0) + (error "'forms-number-of-fields' must be > 0") + (or (stringp forms-field-sep)) + (error "'forms-field-sep' is not a string")) + (if forms-multi-line + (if (and (stringp forms-multi-line) + (eq (length forms-multi-line) 1)) + (if (string= forms-multi-line forms-field-sep) + (error "'forms-multi-line' is equal to 'forms-field-sep'")) + (error "'forms-multi-line' must be nil or a one-character string"))) + + ;; validate and process forms-format-list + (make-local-variable 'forms--number-of-markers) + (make-local-variable 'forms--markers) + (forms--process-format-list) + + ;; build the formatter and parser + (make-local-variable 'forms--format) + (forms--make-format) + (make-local-variable 'forms--parser) + (forms--make-parser) + + ;; check if record filters are defined + (make-local-variable 'forms--new-record-filter) + (setq forms--new-record-filter + (cond + ((fboundp 'forms-new-record-filter) + (symbol-function 'forms-new-record-filter)) + ((and (boundp 'forms-new-record-filter) + (fboundp forms-new-record-filter)) + forms-new-record-filter))) + (fmakunbound 'forms-new-record-filter) + (make-local-variable 'forms--modified-record-filter) + (setq forms--modified-record-filter + (cond + ((fboundp 'forms-modified-record-filter) + (symbol-function 'forms-modified-record-filter)) + ((and (boundp 'forms-modified-record-filter) + (fboundp forms-modified-record-filter)) + forms-modified-record-filter))) + (fmakunbound 'forms-modified-record-filter) + + ;; dynamic text support + (make-local-variable 'forms--dynamic-text) + (make-local-variable 'forms-fields) + + ;; prepare this buffer for further processing + (setq buffer-read-only nil) + + ;; prevent accidental overwrite of the control file and autosave + (setq buffer-file-name nil) + (auto-save-mode nil) + + ;; and clean it + (erase-buffer))) + + ;; make local variables + (make-local-variable 'forms--file-buffer) + (make-local-variable 'forms--total-records) + (make-local-variable 'forms--current-record) + (make-local-variable 'forms--the-record-list) + (make-local-variable 'forms--search-rexexp) + + ;; A bug in the current Emacs release prevents a keymap + ;; which is buffer-local from being used by 'describe-mode'. + ;; Hence we'll leave it global. + ;;(make-local-variable 'forms-mode-map) + (if forms-mode-map ; already defined + nil + (setq forms-mode-map (make-keymap)) + (forms--mode-commands forms-mode-map) + (forms--change-commands)) + + ;; find the data file + (setq forms--file-buffer (find-file-noselect forms-file)) + + ;; count the number of records, and set see if it may be modified + (let (ro) + (setq forms--total-records + (save-excursion + (set-buffer forms--file-buffer) + (bury-buffer (current-buffer)) + (setq ro buffer-read-only) + (count-lines (point-min) (point-max)))) + (if ro + (setq forms-read-only t))) + + ;; set the major mode indicator + (setq major-mode 'forms-mode) + (setq mode-name "Forms") + (make-local-variable 'minor-mode-alist) ; needed? + (forms--set-minor-mode) + (forms--set-keymaps) + + (set-buffer-modified-p nil) + + ;; We have our own revert function - use it + (make-local-variable 'revert-buffer-function) + (setq revert-buffer-function 'forms-revert-buffer) + + ;; setup the first (or current) record to show + (if (< forms--current-record 1) + (setq forms--current-record 1)) + (forms-jump-record forms--current-record) + + ;; user customising + (run-hooks 'forms-mode-hooks) + + ;; be helpful + (forms--help) + + ;; initialization done + (setq forms--mode-setup t)) + + ;;; + ;;; forms-process-format-list + ;;; + ;;; Validates forms-format-list. + ;;; + ;;; Sets forms--number-of-markers and forms--markers. + + (defun forms--process-format-list () + "Validate forms-format-list and set some global variables." + + (forms--debug "forms-forms-list before 1st pass:\n" + 'forms-format-list) + + ;; it must be non-nil + (or forms-format-list + (error "'forms-format-list' has not been set")) + ;; it must be a list ... + (or (listp forms-format-list) + (error "'forms-format-list' is not a list")) + + (setq forms--number-of-markers 0) + + (let ((the-list forms-format-list) ; the list of format elements + (this-item 0) ; element in list + (field-num 0)) ; highest field number + + (setq forms-format-list nil) ; gonna rebuild + + (while the-list + + (let ((el (car-safe the-list)) + (rem (cdr-safe the-list))) + + ;; if it is a symbol, eval it first + (if (and (symbolp el) + (boundp el)) + (setq el (eval el))) + + (cond + + ;; try string ... + ((stringp el)) ; string is OK + + ;; try numeric ... + ((numberp el) + + (if (or (<= el 0) + (> el forms-number-of-fields)) + (error + "Forms error: field number %d out of range 1..%d" + el forms-number-of-fields)) + + (setq forms--number-of-markers (1+ forms--number-of-markers)) + (if (> el field-num) + (setq field-num el))) + + ;; try function + ((listp el) + (or (fboundp (car-safe el)) + (error + "Forms error: not a function: %s" + (prin1-to-string (car-safe el))))) + + ;; else + (t + (error "Invalid element in 'forms-format-list': %s" + (prin1-to-string el)))) + + ;; advance to next element of the list + (setq the-list rem) + (setq forms-format-list + (append forms-format-list (list el) nil))))) + + (forms--debug "forms-forms-list after 1st pass:\n" + 'forms-format-list) + + ;; concat adjacent strings + (setq forms-format-list (forms--concat-adjacent forms-format-list)) + + (forms--debug "forms-forms-list after 2nd pass:\n" + 'forms-format-list + 'forms--number-of-markers) + + (setq forms--markers (make-vector forms--number-of-markers nil))) + + + ;;; + ;;; Build the format routine from forms-format-list. + ;;; + ;;; The format routine (forms--format) will look like + ;;; + ;;; (lambda (arg) + ;;; (setq forms--dynamic-text nil) + ;;; ;; "text: " + ;;; (insert "text: ") + ;;; ;; 6 + ;;; (aset forms--markers 0 (point-marker)) + ;;; (insert (elt arg 5)) + ;;; ;; "\nmore text: " + ;;; (insert "\nmore text: ") + ;;; ;; (tocol 40) + ;;; (let ((the-dyntext (tocol 40))) + ;;; (insert the-dyntext) + ;;; (setq forms--dynamic-text (append forms--dynamic-text + ;;; (list the-dyntext)))) + ;;; ;; 9 + ;;; (aset forms--markers 1 (point-marker)) + ;;; (insert (elt arg 8)) + ;;; + ;;; ... ) + ;;; + + (defun forms--make-format () + "Generate format function for forms" + (setq forms--format (forms--format-maker forms-format-list)) + (forms--debug 'forms--format)) + + (defun forms--format-maker (the-format-list) + "Returns the parser function for forms" + (let ((the-marker 0)) + (` (lambda (arg) + (setq forms--dynamic-text nil) + (,@ (apply 'append + (mapcar 'forms--make-format-elt the-format-list))))))) + + (defun forms--make-format-elt (el) + (cond ((stringp el) + (` ((insert (, el))))) + ((numberp el) + (prog1 + (` ((aset forms--markers (, the-marker) (point-marker)) + (insert (elt arg (, (1- el)))))) + (setq the-marker (1+ the-marker)))) + ((listp el) + (prog1 + (` ((let ((the-dyntext (, el))) + (insert the-dyntext) + (setq forms--dynamic-text (append forms--dynamic-text + (list the-dyntext))))) + ))) + )) + + + (defun forms--concat-adjacent (the-list) + "Concatenate adjacent strings in the-list and return the resulting list" + (if (consp the-list) + (let ((the-rest (forms--concat-adjacent (cdr the-list)))) + (if (and (stringp (car the-list)) (stringp (car the-rest))) + (cons (concat (car the-list) (car the-rest)) + (cdr the-rest)) + (cons (car the-list) the-rest))) + the-list)) + ;;; + ;;; forms--make-parser. + ;;; + ;;; Generate parse routine from forms-format-list. + ;;; + ;;; The parse routine (forms--parser) will look like (give or take + ;;; a few " " . + ;;; + ;;; (lambda nil + ;;; (let (here) + ;;; (goto-char (point-min)) + ;;; + ;;; ;; "text: " + ;;; (if (not (looking-at "text: ")) + ;;; (error "Parse error: cannot find \"text: \"")) + ;;; (forward-char 6) ; past "text: " + ;;; + ;;; ;; 6 + ;;; ;; "\nmore text: " + ;;; (setq here (point)) + ;;; (if (not (search-forward "\nmore text: " nil t nil)) + ;;; (error "Parse error: cannot find \"\\nmore text: \"")) + ;;; (aset the-recordv 5 (buffer-substring here (- (point) 12))) + ;;; + ;;; ;; (tocol 40) + ;;; (let ((the-dyntext (car-safe forms--dynamic-text))) + ;;; (if (not (looking-at (regexp-quote the-dyntext))) + ;;; (error "Parse error: not looking at \"%s\"" the-dyntext)) + ;;; (forward-char (length the-dyntext)) + ;;; (setq forms--dynamic-text (cdr-safe forms--dynamic-text))) + ;;; ... + ;;; ;; final flush (due to terminator sentinel, see below) + ;;; (aset the-recordv 7 (buffer-substring (point) (point-max))) + ;;; + + (defun forms--make-parser () + "Generate parser function for forms" + (setq forms--parser (forms--parser-maker forms-format-list)) + (forms--debug 'forms--parser)) + + (defun forms--parser-maker (the-format-list) + "Returns the parser function for forms" + (let ((the-field nil) + (seen-text nil) + the--format-list) + ;; add a terminator sentinel + (setq the--format-list (append the-format-list (list nil))) + (` (lambda nil + (let (here) + (goto-char (point-min)) + (,@ (apply 'append + (mapcar 'forms--make-parser-elt the--format-list)))))))) + + (defun forms--make-parser-elt (el) + (cond + ((stringp el) + (prog1 + (if the-field + (` ((setq here (point)) + (if (not (search-forward (, el) nil t nil)) + (error "Parse error: cannot find \"%s\"" (, el))) + (aset the-recordv (, (1- the-field)) + (buffer-substring here + (- (point) (, (length el))))))) + (` ((if (not (looking-at (, (regexp-quote el)))) + (error "Parse error: not looking at \"%s\"" (, el))) + (forward-char (, (length el)))))) + (setq seen-text t) + (setq the-field nil))) + ((numberp el) + (if the-field + (error "Cannot parse adjacent fields %d and %d" + the-field el) + (setq the-field el) + nil)) + ((null el) + (if the-field + (` ((aset the-recordv (, (1- the-field)) + (buffer-substring (point) (point-max))))))) + ((listp el) + (prog1 + (if the-field + (` ((let ((here (point)) + (the-dyntext (car-safe forms--dynamic-text))) + (if (not (search-forward the-dyntext nil t nil)) + (error "Parse error: cannot find \"%s\"" the-dyntext)) + (aset the-recordv (, (1- the-field)) + (buffer-substring here + (- (point) (length the-dyntext)))) + (setq forms--dynamic-text (cdr-safe forms--dynamic-text))))) + (` ((let ((the-dyntext (car-safe forms--dynamic-text))) + (if (not (looking-at (regexp-quote the-dyntext))) + (error "Parse error: not looking at \"%s\"" the-dyntext)) + (forward-char (length the-dyntext)) + (setq forms--dynamic-text (cdr-safe forms--dynamic-text)))))) + (setq seen-text t) + (setq the-field nil))) + )) + ;;; + + (defun forms--set-minor-mode () + (setq minor-mode-alist + (if forms-read-only + " View" + nil))) + + (defun forms--set-keymaps () + "Set the keymaps used in this mode." + + (if forms-read-only + (use-local-map forms-mode-map) + (use-local-map (make-sparse-keymap)) + (define-key (current-local-map) "\C-c" forms-mode-map) + (define-key (current-local-map) "\t" 'forms-next-field))) + + (defun forms--mode-commands (map) + "Fill map with all commands." + (define-key map "\t" 'forms-next-field) + (define-key map " " 'forms-next-record) + (define-key map "d" 'forms-delete-record) + (define-key map "e" 'forms-edit-mode) + (define-key map "i" 'forms-insert-record) + (define-key map "j" 'forms-jump-record) + (define-key map "n" 'forms-next-record) + (define-key map "p" 'forms-prev-record) + (define-key map "q" 'forms-exit) + (define-key map "s" 'forms-search) + (define-key map "v" 'forms-view-mode) + (define-key map "x" 'forms-exit-no-save) + (define-key map "<" 'forms-first-record) + (define-key map ">" 'forms-last-record) + (define-key map "?" 'describe-mode) + (define-key map "\177" 'forms-prev-record) + ; (define-key map "\C-c" map) + (define-key map "\e" 'ESC-prefix) + (define-key map "\C-x" ctl-x-map) + (define-key map "\C-u" 'universal-argument) + (define-key map "\C-h" help-map) + ) + ;;; + ;;; Changed functions + ;;; + ;;; Emacs (as of 18.55) lacks the functionality of buffer-local + ;;; funtions. Therefore we save the original meaning of some handy + ;;; functions, and replace them with a wrapper. + + (defun forms--change-commands () + "Localize some commands." + ;; + ;; scroll-down -> forms-prev-record + ;; + (if (fboundp 'forms--scroll-down) + nil + (fset 'forms--scroll-down (symbol-function 'scroll-down)) + (fset 'scroll-down + '(lambda (&optional arg) + (interactive "P") + (if (and forms--mode-setup + forms-forms-scroll) + (forms-prev-record arg) + (forms--scroll-down arg))))) + ;; + ;; scroll-up -> forms-next-record + ;; + (if (fboundp 'forms--scroll-up) + nil + (fset 'forms--scroll-up (symbol-function 'scroll-up)) + (fset 'scroll-up + '(lambda (&optional arg) + (interactive "P") + (if (and forms--mode-setup + forms-forms-scroll) + (forms-next-record arg) + (forms--scroll-up arg))))) + ;; + ;; beginning-of-buffer -> forms-first-record + ;; + (if (fboundp 'forms--beginning-of-buffer) + nil + (fset 'forms--beginning-of-buffer (symbol-function 'beginning-of-buffer)) + (fset 'beginning-of-buffer + '(lambda () + (interactive) + (if (and forms--mode-setup + forms-forms-jump) + (forms-first-record) + (forms--beginning-of-buffer))))) + ;; + ;; end-of-buffer -> forms-end-record + ;; + (if (fboundp 'forms--end-of-buffer) + nil + (fset 'forms--end-of-buffer (symbol-function 'end-of-buffer)) + (fset 'end-of-buffer + '(lambda () + (interactive) + (if (and forms--mode-setup + forms-forms-jump) + (forms-last-record) + (forms--end-of-buffer))))) + ;; + ;; save-buffer -> forms--save-buffer + ;; + (if (fboundp 'forms--save-buffer) + nil + (fset 'forms--save-buffer (symbol-function 'save-buffer)) + (fset 'save-buffer + '(lambda (&optional arg) + (interactive "p") + (if forms--mode-setup + (progn + (forms--checkmod) + (save-excursion + (set-buffer forms--file-buffer) + (forms--save-buffer arg))) + (forms--save-buffer arg))))) + ;; + ) + + (defun forms--help () + "Initial help." + ;; We should use + ;;(message (substitute-command-keys (concat + ;;"\\[forms-next-record]:next" + ;;" \\[forms-prev-record]:prev" + ;;" \\[forms-first-record]:first" + ;;" \\[forms-last-record]:last" + ;;" \\[describe-mode]:help" + ;;" \\[forms-exit]:exit"))) + ;; but it's too slow .... + (if forms-read-only + (message "SPC:next DEL:prev <:first >:last ?:help q:exit") + (message "C-c n:next C-c p:prev C-c <:first C-c >:last C-c ?:help C-c q:exit"))) + + (defun forms--trans (subj arg rep) + "Translate in SUBJ all chars ARG into char REP. ARG and REP should + be single-char strings." + (let ((i 0) + (x (length subj)) + (re (regexp-quote arg)) + (k (string-to-char rep))) + (while (setq i (string-match re subj i)) + (aset subj i k) + (setq i (1+ i))))) + + (defun forms--exit (query &optional save) + (let ((buf (buffer-name forms--file-buffer))) + (forms--checkmod) + (if (and save + (buffer-modified-p forms--file-buffer)) + (save-excursion + (set-buffer forms--file-buffer) + (save-buffer))) + (save-excursion + (set-buffer forms--file-buffer) + (delete-auto-save-file-if-necessary) + (kill-buffer (current-buffer))) + (if (get-buffer buf) ; not killed??? + (if save + (progn + (beep) + (message "Problem saving buffers?"))) + (delete-auto-save-file-if-necessary) + (kill-buffer (current-buffer))))) + + (defun forms--get-record () + "Fetch the current record from the file buffer." + ;; + ;; This function is executed in the context of the forms--file-buffer. + ;; + (or (bolp) + (beginning-of-line nil)) + (let ((here (point))) + (prog2 + (end-of-line) + (buffer-substring here (point)) + (goto-char here)))) + + (defun forms--show-record (the-record) + "Format THE-RECORD according to forms-format-list, + and display it in the current buffer." + + ;; split the-record + (let (the-result + (start-pos 0) + found-pos + (field-sep-length (length forms-field-sep))) + (if forms-multi-line + (forms--trans the-record forms-multi-line "\n")) + ;; add an extra separator (makes splitting easy) + (setq the-record (concat the-record forms-field-sep)) + (while (setq found-pos (string-match forms-field-sep the-record start-pos)) + (let ((ent (substring the-record start-pos found-pos))) + (setq the-result + (append the-result (list ent))) + (setq start-pos (+ field-sep-length found-pos)))) + (setq forms--the-record-list the-result)) + + (setq buffer-read-only nil) + (erase-buffer) + + ;; verify the number of fields, extend forms--the-record-list if needed + (if (= (length forms--the-record-list) forms-number-of-fields) + nil + (beep) + (message "Record has %d fields instead of %d." + (length forms--the-record-list) forms-number-of-fields) + (if (< (length forms--the-record-list) forms-number-of-fields) + (setq forms--the-record-list + (append forms--the-record-list + (make-list + (- forms-number-of-fields + (length forms--the-record-list)) + ""))))) + + ;; call the formatter function + (setq forms-fields (append (list nil) forms--the-record-list nil)) + (funcall forms--format forms--the-record-list) + + ;; prepare + (goto-char (point-min)) + (set-buffer-modified-p nil) + (setq buffer-read-only forms-read-only) + (setq mode-line-process + (concat " " forms--current-record "/" forms--total-records))) + + (defun forms--parse-form () + "Parse contents of form into list of strings." + ;; The contents of the form are parsed, and a new list of strings + ;; is constructed. + ;; A vector with the strings from the original record is + ;; constructed, which is updated with the new contents. Therefore + ;; fields which were not in the form are not modified. + ;; Finally, the vector is transformed into a list for further processing. + + (let (the-recordv) + + ;; build the vector + (setq the-recordv (vconcat forms--the-record-list)) + + ;; parse the form and update the vector + (let ((forms--dynamic-text forms--dynamic-text)) + (funcall forms--parser)) + + (if forms--modified-record-filter + ;; As a service to the user, we add a zeroth element so she + ;; can use the same indices as in the forms definition. + (let ((the-fields (vconcat [nil] the-recordv))) + (setq the-fields (funcall forms--modified-record-filter the-fields)) + (cdr (append the-fields nil))) + + ;; transform to a list and return + (append the-recordv nil)))) + + (defun forms--update () + "Update current record with contents of form. As a side effect: sets + forms--the-record-list ." + (if forms-read-only + (progn + (message "Read-only buffer!") + (beep)) + + (let (the-record) + ;; build new record + (setq forms--the-record-list (forms--parse-form)) + (setq the-record + (mapconcat 'identity forms--the-record-list forms-field-sep)) + + ;; handle multi-line fields, if allowed + (if forms-multi-line + (forms--trans the-record "\n" forms-multi-line)) + + ;; a final sanity check before updating + (if (string-match "\n" the-record) + (progn + (message "Multi-line fields in this record - update refused!") + (beep)) + + (save-excursion + (set-buffer forms--file-buffer) + ;; Insert something before kill-line is called. See kill-line + ;; doc. Bugfix provided by Ignatios Souvatzis. + (insert "*") + (beginning-of-line) + (kill-line nil) + (insert the-record) + (beginning-of-line)))))) + + (defun forms--checkmod () + "Check if this form has been modified, and call forms--update if so." + (if (buffer-modified-p nil) + (let ((here (point))) + (forms--update) + (set-buffer-modified-p nil) + (goto-char here)))) + + ;;; + ;;; Start and exit + (defun forms-find-file (fn) + "Visit file FN in forms mode" + (interactive "fForms file: ") + (find-file-read-only fn) + (or forms--mode-setup (forms-mode t))) + + (defun forms-find-file-other-window (fn) + "Visit file FN in form mode in other window" + (interactive "fFbrowse file in other window: ") + (find-file-other-window fn) + (eval-current-buffer) + (or forms--mode-setup (forms-mode t))) + + (defun forms-exit (query) + "Normal exit. Modified buffers are saved." + (interactive "P") + (forms--exit query t)) + + (defun forms-exit-no-save (query) + "Exit without saving buffers." + (interactive "P") + (forms--exit query nil)) + + ;;; + ;;; Navigating commands + + (defun forms-next-record (arg) + "Advance to the ARGth following record." + (interactive "P") + (forms-jump-record (+ forms--current-record (prefix-numeric-value arg)) t)) + + (defun forms-prev-record (arg) + "Advance to the ARGth previous record." + (interactive "P") + (forms-jump-record (- forms--current-record (prefix-numeric-value arg)) t)) + + (defun forms-jump-record (arg &optional relative) + "Jump to a random record." + (interactive "NRecord number: ") + + ;; verify that the record number is within range + (if (or (> arg forms--total-records) + (<= arg 0)) + (progn + (beep) + ;; don't give the message if just paging + (if (not relative) + (message "Record number %d out of range 1..%d" + arg forms--total-records)) + ) + + ;; flush + (forms--checkmod) + + ;; calculate displacement + (let ((disp (- arg forms--current-record)) + (cur forms--current-record)) + + ;; forms--show-record needs it now + (setq forms--current-record arg) + + ;; get the record and show it + (forms--show-record + (save-excursion + (set-buffer forms--file-buffer) + (beginning-of-line) + + ;; move, and adjust the amount if needed (shouldn't happen) + (if relative + (if (zerop disp) + nil + (setq cur (+ cur disp (- (forward-line disp))))) + (setq cur (+ cur disp (- (goto-line arg))))) + + (forms--get-record))) + + ;; this shouldn't happen + (if (/= forms--current-record cur) + (progn + (setq forms--current-record cur) + (beep) + (message "Stuck at record %d." cur)))))) + + (defun forms-first-record () + "Jump to first record." + (interactive) + (forms-jump-record 1)) + + (defun forms-last-record () + "Jump to last record. As a side effect: re-calculates the number + of records in the data file." + (interactive) + (let + ((numrec + (save-excursion + (set-buffer forms--file-buffer) + (count-lines (point-min) (point-max))))) + (if (= numrec forms--total-records) + nil + (beep) + (setq forms--total-records numrec) + (message "Number of records reset to %d." forms--total-records))) + (forms-jump-record forms--total-records)) + + ;;; + ;;; Other commands + (defun forms-view-mode () + "Visit buffer read-only." + (interactive) + (if forms-read-only + nil + (forms--checkmod) ; sync + (setq forms-read-only t) + (forms-mode))) + + (defun forms-edit-mode () + "Make form suitable for editing, if possible." + (interactive) + (let ((ro forms-read-only)) + (if (save-excursion + (set-buffer forms--file-buffer) + buffer-read-only) + (progn + (setq forms-read-only t) + (message "No write access to \"%s\"" forms-file) + (beep)) + (setq forms-read-only nil)) + (if (equal ro forms-read-only) + nil + (forms-mode)))) + + ;; Sample: + ;; (defun my-new-record-filter (the-fields) + ;; ;; numbers are relative to 1 + ;; (aset the-fields 4 (current-time-string)) + ;; (aset the-fields 6 (user-login-name)) + ;; the-list) + ;; (setq forms-new-record-filter 'my-new-record-filter) + + (defun forms-insert-record (arg) + "Create a new record before the current one. With ARG: store the + record after the current one. + If a function forms-new-record-filter is defined, or forms-new-record-filter + contains the name of a function, it is called to + fill (some of) the fields with default values." + ; The above doc is not true, but for documentary purposes only + + (interactive "P") + + (let ((ln (if arg (1+ forms--current-record) forms--current-record)) + the-list the-record) + + (forms--checkmod) + (if forms--new-record-filter + ;; As a service to the user, we add a zeroth element so she + ;; can use the same indices as in the forms definition. + (let ((the-fields (make-vector (1+ forms-number-of-fields) ""))) + (setq the-fields (funcall forms--new-record-filter the-fields)) + (setq the-list (cdr (append the-fields nil)))) + (setq the-list (make-list forms-number-of-fields ""))) + + (setq the-record + (mapconcat + 'identity + the-list + forms-field-sep)) + + (save-excursion + (set-buffer forms--file-buffer) + (goto-line ln) + (open-line 1) + (insert the-record) + (beginning-of-line)) + + (setq forms--current-record ln)) + + (setq forms--total-records (1+ forms--total-records)) + (forms-jump-record forms--current-record)) + + (defun forms-delete-record (arg) + "Deletes a record. With ARG: don't ask." + (interactive "P") + (forms--checkmod) + (if (or arg + (y-or-n-p "Really delete this record? ")) + (let ((ln forms--current-record)) + (save-excursion + (set-buffer forms--file-buffer) + (goto-line ln) + (kill-line 1)) + (setq forms--total-records (1- forms--total-records)) + (if (> forms--current-record forms--total-records) + (setq forms--current-record forms--total-records)) + (forms-jump-record forms--current-record))) + (message "")) + + (defun forms-search (regexp) + "Search REGEXP in file buffer." + (interactive + (list (read-string (concat "Search for" + (if forms--search-regexp + (concat " (" + forms--search-regexp + ")")) + ": ")))) + (if (equal "" regexp) + (setq regexp forms--search-regexp)) + (forms--checkmod) + + (let (the-line the-record here + (fld-sep forms-field-sep)) + (if (save-excursion + (set-buffer forms--file-buffer) + (setq here (point)) + (end-of-line) + (if (null (re-search-forward regexp nil t)) + (progn + (goto-char here) + (message (concat "\"" regexp "\" not found.")) + nil) + (setq the-record (forms--get-record)) + (setq the-line (1+ (count-lines (point-min) (point)))))) + (progn + (setq forms--current-record the-line) + (forms--show-record the-record) + (re-search-forward regexp nil t)))) + (setq forms--search-regexp regexp)) + + (defun forms-revert-buffer (&optional arg noconfirm) + "Reverts current form to un-modified." + (interactive "P") + (if (or noconfirm + (yes-or-no-p "Revert form to unmodified? ")) + (progn + (set-buffer-modified-p nil) + (forms-jump-record forms--current-record)))) + + (defun forms-next-field (arg) + "Jump to ARG-th next field." + (interactive "p") + + (let ((i 0) + (here (point)) + there + (cnt 0)) + + (if (zerop arg) + (setq cnt 1) + (setq cnt (+ cnt arg))) + + (if (catch 'done + (while (< i forms--number-of-markers) + (if (or (null (setq there (aref forms--markers i))) + (<= there here)) + nil + (if (<= (setq cnt (1- cnt)) 0) + (progn + (goto-char there) + (throw 'done t)))) + (setq i (1+ i)))) + nil + (goto-char (aref forms--markers 0))))) + + ;;; + ;;; Special service + ;;; + (defun forms-enumerate (the-fields) + "Take a quoted list of symbols, and set their values to the numbers + 1, 2 and so on. Returns the higest number. + + Usage: (setq forms-number-of-fields + (forms-enumerate + '(field1 field2 field2 ...)))" + + (let ((the-index 0)) + (while the-fields + (setq the-index (1+ the-index)) + (let ((el (car-safe the-fields))) + (setq the-fields (cdr-safe the-fields)) + (set el the-index))) + the-index)) + + ;;; + ;;; Debugging + ;;; + (defvar forms--debug nil + "*Enables forms-mode debugging if not nil.") + + (defun forms--debug (&rest args) + "Internal - debugging routine" + (if forms--debug + (let ((ret nil)) + (while args + (let ((el (car-safe args))) + (setq args (cdr-safe args)) + (if (stringp el) + (setq ret (concat ret el)) + (setq ret (concat ret (prin1-to-string el) " = ")) + (if (boundp el) + (let ((vel (eval el))) + (setq ret (concat ret (prin1-to-string vel) "\n"))) + (setq ret (concat ret "" "\n"))) + (if (fboundp el) + (setq ret (concat ret (prin1-to-string (symbol-function el)) + "\n")))))) + (save-excursion + (set-buffer (get-buffer-create "*forms-mode debug*")) + (goto-char (point-max)) + (insert ret))))) + + ;;; Local Variables: + ;;; eval: (headers) + ;;; eval: (setq comment-start ";;; ") + ;;; End: diff -cprP -x *.elc emacs-19.12/lisp/fortran.el emacs-19.13/lisp/fortran.el *** emacs-19.12/lisp/fortran.el Tue Jun 8 05:31:51 1993 --- emacs-19.13/lisp/fortran.el Tue Jun 8 01:25:16 1993 *************** *** 190,196 **** (define-key fortran-mode-map "\e;" 'fortran-indent-comment) (define-key fortran-mode-map "\e\C-h" 'mark-fortran-subprogram) (define-key fortran-mode-map "\e\n" 'fortran-split-line) ! (define-key fortran-mode-map "\n" 'fortran-reindent-then-newline-and-indent) (define-key fortran-mode-map "\e\C-q" 'fortran-indent-subprogram) (define-key fortran-mode-map "\C-c\C-w" 'fortran-window-create-momentarily) (define-key fortran-mode-map "\C-c\C-r" 'fortran-column-ruler) --- 190,196 ---- (define-key fortran-mode-map "\e;" 'fortran-indent-comment) (define-key fortran-mode-map "\e\C-h" 'mark-fortran-subprogram) (define-key fortran-mode-map "\e\n" 'fortran-split-line) ! (define-key fortran-mode-map "\n" 'fortran-indent-new-line) (define-key fortran-mode-map "\e\C-q" 'fortran-indent-subprogram) (define-key fortran-mode-map "\C-c\C-w" 'fortran-window-create-momentarily) (define-key fortran-mode-map "\C-c\C-r" 'fortran-column-ruler) *************** Auto-indent does not happen if a numeric *** 589,595 **** (looking-at "\t"));In col 8 with a single tab to the left. (not (or (eq last-command 'fortran-indent-line) (eq last-command ! 'fortran-reindent-then-newline-and-indent)))) (save-excursion (re-search-backward "[^ \t0-9]" (save-excursion --- 589,595 ---- (looking-at "\t"));In col 8 with a single tab to the left. (not (or (eq last-command 'fortran-indent-line) (eq last-command ! 'fortran-indent-new-line)))) (save-excursion (re-search-backward "[^ \t0-9]" (save-excursion *************** non-comment Fortran statement in the fil *** 750,756 **** (if fortran-blink-matching-if (fortran-blink-matching-if)))) ! (defun fortran-reindent-then-newline-and-indent () "Reindent the current Fortran line, insert a newline and indent the newline. An abbrev before point is expanded if `abbrev-mode' is non-nil." (interactive) --- 750,756 ---- (if fortran-blink-matching-if (fortran-blink-matching-if)))) ! (defun fortran-indent-new-line () "Reindent the current Fortran line, insert a newline and indent the newline. An abbrev before point is expanded if `abbrev-mode' is non-nil." (interactive) diff -cprP -x *.elc emacs-19.12/lisp/frame.el emacs-19.13/lisp/frame.el *** emacs-19.12/lisp/frame.el Tue Jun 8 05:31:52 1993 --- emacs-19.13/lisp/frame.el Mon Jun 7 19:22:20 1993 *************** *** 98,115 **** (setq default-minibuffer-frame (setq frame-initial-frame (new-frame initial-frame-alist))) ;; Handle `reverse' as a parameter. (if (cdr (or (assq 'reverse initial-frame-alist) (assq 'reverse default-frame-alist) (cons nil ! (x-get-resource "reverseVideo" "Reversevideo")))) (let ((params (frame-parameters frame-initial-frame))) (modify-frame-parameters frame-initial-frame ! (list (cons 'foreground-color (cdr (assq 'background-color params))) (cons 'background-color (cdr (assq 'foreground-color params))) (cons 'mouse-color (cdr (assq 'background-color params))) - (cons 'cursor-color (cdr (assq 'background-color params))) (cons 'border-color (cdr (assq 'background-color params))))))))) ;; At this point, we know that we have a frame open, so we --- 98,127 ---- (setq default-minibuffer-frame (setq frame-initial-frame (new-frame initial-frame-alist))) + ;; Delete any specifications for window geometry parameters + ;; so that we won't reapply them in frame-notice-user-settings. + ;; It would be wrong to reapply them then, + ;; because that would override explicit user resizing. + (setq initial-frame-alist + (delq (assq 'height initial-frame-alist) + (delq (assq 'width initial-frame-alist) + (delq (assq 'left initial-frame-alist) + (delq (assq 'top initial-frame-alist) + initial-frame-alist))))) ;; Handle `reverse' as a parameter. (if (cdr (or (assq 'reverse initial-frame-alist) (assq 'reverse default-frame-alist) (cons nil ! (x-get-resource "reverseVideo" "ReverseVideo")))) (let ((params (frame-parameters frame-initial-frame))) (modify-frame-parameters frame-initial-frame ! ;; Must set cursor-color after background color. ! ;; So put it first. ! (list (cons 'cursor-color (cdr (assq 'background-color params))) ! (cons 'foreground-color (cdr (assq 'background-color params))) (cons 'background-color (cdr (assq 'foreground-color params))) (cons 'mouse-color (cdr (assq 'background-color params))) (cons 'border-color (cdr (assq 'background-color params))))))))) ;; At this point, we know that we have a frame open, so we diff -cprP -x *.elc emacs-19.12/lisp/gnus.el emacs-19.13/lisp/gnus.el *** emacs-19.12/lisp/gnus.el Tue Jun 8 05:32:00 1993 --- emacs-19.13/lisp/gnus.el Sat Jun 5 16:02:12 1993 *************** *** 1,6 **** ;;; GNUS: an NNTP-based News Reader for GNU Emacs ;; Copyright (C) 1987, 1988, 1989, 1990, 1993 Free Software Foundation, Inc. ! ;; $Header: /home/fsf/rms/e19/lisp/RCS/gnus.el,v 1.16 1993/05/30 23:56:49 rms Exp rms $ ;; This file is part of GNU Emacs. --- 1,6 ---- ;;; GNUS: an NNTP-based News Reader for GNU Emacs ;; Copyright (C) 1987, 1988, 1989, 1990, 1993 Free Software Foundation, Inc. ! ;; $Header: /home/fsf/rms/e19/lisp/RCS/gnus.el,v 1.18 1993/06/05 09:17:34 rms Exp $ ;; This file is part of GNU Emacs. *************** This hook is called before saving the `. *** 571,579 **** ;; site-init.el, default.el or your .emacs. (defvar gnus-local-timezone nil ! "*Local time zone. Both styles, \"JST\" and +0900 are acceptable. ! If its value is non-nil, valid Date: field will be generated in terms ! of RFC822. In this case, timezone package must be installed.") (defvar gnus-local-domain nil "*Local domain name without a host name like: \"stars.flab.Fujitsu.CO.JP\" --- 571,584 ---- ;; site-init.el, default.el or your .emacs. (defvar gnus-local-timezone nil ! "*Local time zone. ! This value is used only if `current-time-zone' does not work in your Emacs. ! It specifies the GMT offset, i.e. a decimal integer ! of the form +-HHMM giving the hours and minutes ahead of (i.e. east of) GMT. ! For example, +0900 should be used in Japan, since it is 9 hours ahead of GMT. ! ! For backwards compatibility, it may also be a string like \"JST\", ! but strings are obsolescent: you should use numeric offsets instead.") (defvar gnus-local-domain nil "*Local domain name without a host name like: \"stars.flab.Fujitsu.CO.JP\" diff -cprP -x *.elc emacs-19.12/lisp/gnuspost.el emacs-19.13/lisp/gnuspost.el *** emacs-19.12/lisp/gnuspost.el Tue Jun 8 05:32:02 1993 --- emacs-19.13/lisp/gnuspost.el Sat Jun 5 16:01:26 1993 *************** *** 691,721 **** (error "Cannot understand current-time-string: %s." date)) )) (defun gnus-inews-date () "Date string of today. ! If the variable gnus-local-timezone is non-nil, valid date will be ! generated in terms of RFC822. Otherwise, buggy date in which time ! zone is ignored will be generated. If you are using with Cnews, you ! must use valid date." ! (cond (gnus-local-timezone ! ;; Gnus can generate valid date. ! (gnus-inews-valid-date)) ! (t ! ;; No timezone info. ! (gnus-inews-buggy-date)) ! )) ! (defun gnus-inews-valid-date () ! "Date string of today represented in GMT. ! Local timezone is specified by the variable gnus-local-timezone." (timezone-make-date-arpa-standard ! (current-time-string) gnus-local-timezone "GMT")) ! (defun gnus-inews-buggy-date () ! "Buggy date string of today. Time zone is ignored, but fast." ! ;; Insert buggy date (time zone is ignored), but I don't worry about ! ;; it since inews will rewrite it. ! (let ((date (current-time-string))) (if (string-match "^[^ ]+ \\([^ ]+\\)[ ]+\\([0-9]+\\) \\([0-9:]+\\) [0-9][0-9]\\([0-9][0-9]\\)" date) (concat (substring date (match-beginning 2) (match-end 2)) ;Day --- 691,731 ---- (error "Cannot understand current-time-string: %s." date)) )) + (defun gnus-current-time-zone (time) + "The local time zone in effect at TIME, or nil if not known." + (let ((z (and (fboundp 'current-time-zone) (current-time-zone now)))) + (if (and z (car z)) z gnus-local-timezone))) + (defun gnus-inews-date () "Date string of today. ! If `current-time-zone' works, or if `gnus-local-timezone' is set correctly, ! this yields a date that conforms to RFC 822. Otherwise a buggy date will ! be generated; this might work with some older news servers." ! (let* ((now (and (fboundp 'current-time) (current-time))) ! (zone (gnus-current-time-zone now))) ! (if zone ! (gnus-inews-valid-date now zone) ! ;; No timezone info. ! (gnus-inews-buggy-date now)))) ! (defun gnus-inews-valid-date (&optional time zone) ! "A date string that represents TIME and conforms to the Usenet standard. ! TIME is optional and defaults to the current time. ! Some older versions of Emacs always act as if TIME is nil. ! The optional argument ZONE specifies the local time zone (default GMT)." (timezone-make-date-arpa-standard ! (if (fboundp 'current-time) ! (current-time-string time) ! (current-time-string)) ! zone "GMT")) ! (defun gnus-inews-buggy-date (&optional time) ! "A buggy date string that represents TIME. ! TIME is optional and defaults to the current time. ! Some older versions of Emacs always act as if TIME is nil." ! (let ((date (if (fboundp 'current-time) ! (current-time-string time) ! (current-time-string)))) (if (string-match "^[^ ]+ \\([^ ]+\\)[ ]+\\([0-9]+\\) \\([0-9:]+\\) [0-9][0-9]\\([0-9][0-9]\\)" date) (concat (substring date (match-beginning 2) (match-end 2)) ;Day diff -cprP -x *.elc emacs-19.12/lisp/gud.el emacs-19.13/lisp/gud.el *** emacs-19.12/lisp/gud.el Tue Jun 8 05:32:06 1993 --- emacs-19.13/lisp/gud.el Mon Jun 7 15:36:17 1993 *************** *** 362,369 **** "Major mode for interacting with an inferior debugger process. You start it up with one of the commands M-x gdb, M-x sdb, or ! M-x dbx. Each entry point finishes by executing a hook; gdb-mode-hook, ! sdb-mode-hook or dbx-mode-hook respectively. After startup, the following commands are available in both the GUD interaction buffer and any source buffer GUD visits due to a breakpoint stop --- 362,369 ---- "Major mode for interacting with an inferior debugger process. You start it up with one of the commands M-x gdb, M-x sdb, or ! M-x dbx. Each entry point finishes by executing a hook; `gdb-mode-hook', ! `sdb-mode-hook' or `dbx-mode-hook' respectively. After startup, the following commands are available in both the GUD interaction buffer and any source buffer GUD visits due to a breakpoint stop *************** frame. \\[gud-down] drops back down thr *** 398,411 **** If you are using gdb, \\[gdb-finish] runs execution to the return from the current function and stops. ! All the keystrokes above have synonyms (in the GUD buffer only) with ! a prefix of C-c (this is for backward compatibility with old gdb.el). All pre-defined functions for which the concept make sense repeat themselves the appropriate number of times if you give a prefix argument. ! You may use the gud-def macro in the initialization hook to define other commands. Other commands for interacting with the debugger process are inherited from --- 398,411 ---- If you are using gdb, \\[gdb-finish] runs execution to the return from the current function and stops. ! All the keystrokes above are accessible in the GUD buffer ! with the prefix C-c, and in all buffers through the prefix C-x C-a. All pre-defined functions for which the concept make sense repeat themselves the appropriate number of times if you give a prefix argument. ! You may use the `gud-def' macro in the initialization hook to define other commands. Other commands for interacting with the debugger process are inherited from *************** Obeying it means displaying in another w *** 666,672 **** (interactive "P") (recenter arg) (gud-display-frame)) ! ;;; Code for parsing expressions out of C code. The single entry point is ;;; find-c-expr, which tries to return an lvalue expression from around point. ;;; --- 666,672 ---- (interactive "P") (recenter arg) (gud-display-frame)) ! ;;; Code for parsing expressions out of C code. The single entry point is ;;; find-c-expr, which tries to return an lvalue expression from around point. ;;; *************** Obeying it means displaying in another w *** 673,679 **** ;;; The rest of this file is a hacked version of gdbsrc.el by ;;; Debby Ayers , ;;; Rich Schaefer Schlumberger, Austin, Tx. - ;;; ??? We're waiting on papers from these people (defun find-c-expr () "Returns the C expr that surrounds point." --- 673,678 ---- *************** Obeying it means displaying in another w *** 686,693 **** (while (expr-compound test-expr expr) (setq expr (cons (car test-expr) (cdr expr))) (goto-char (car expr)) ! (setq test-expr (expr-prev)) ! ) (goto-char p) (setq test-expr (expr-next)) (while (expr-compound expr test-expr) --- 685,691 ---- (while (expr-compound test-expr expr) (setq expr (cons (car test-expr) (cdr expr))) (goto-char (car expr)) ! (setq test-expr (expr-prev))) (goto-char p) (setq test-expr (expr-next)) (while (expr-compound expr test-expr) *************** Obeying it means displaying in another w *** 694,735 **** (setq expr (cons (car expr) (cdr test-expr))) (setq test-expr (expr-next)) ) ! (buffer-substring (car expr) (cdr expr)) ! ) ! ) ! ) (defun expr-cur () "Returns the expr that point is in; point is set to beginning of expr. The expr is represented as a cons cell, where the car specifies the point in the current buffer that marks the beginning of the expr and the cdr specifies ! the character after the end of the expr" (let ((p (point)) (begin) (end)) ! (back-expr) (setq begin (point)) ! (forw-expr) (setq end (point)) (if (>= p end) (progn (setq begin p) (goto-char p) ! (forw-expr) (setq end (point)) ) ) (goto-char begin) ! (cons begin end) ! ) ! ) ! (defun back-expr () ! "Version of backward-sexp that catches errors" (condition-case nil (backward-sexp) (error t))) ! (defun forw-expr () ! "Version of forward-sexp that catches errors" (condition-case nil (forward-sexp) (error t))) --- 692,728 ---- (setq expr (cons (car expr) (cdr test-expr))) (setq test-expr (expr-next)) ) ! (buffer-substring (car expr) (cdr expr))))) (defun expr-cur () "Returns the expr that point is in; point is set to beginning of expr. The expr is represented as a cons cell, where the car specifies the point in the current buffer that marks the beginning of the expr and the cdr specifies ! the character after the end of the expr." (let ((p (point)) (begin) (end)) ! (expr-backward-sexp) (setq begin (point)) ! (expr-forward-sexp) (setq end (point)) (if (>= p end) (progn (setq begin p) (goto-char p) ! (expr-forward-sexp) (setq end (point)) ) ) (goto-char begin) ! (cons begin end))) ! (defun expr-backward-sexp () ! "Version of `backward-sexp' that catches errors." (condition-case nil (backward-sexp) (error t))) ! (defun expr-forward-sexp () ! "Version of `forward-sexp' that catches errors." (condition-case nil (forward-sexp) (error t))) *************** The expr is represented as a cons cell, *** 740,748 **** the current buffer that marks the beginning of the expr and the cdr specifies the character after the end of the expr" (let ((begin) (end)) ! (back-expr) (setq begin (point)) ! (forw-expr) (setq end (point)) (goto-char begin) (cons begin end))) --- 733,741 ---- the current buffer that marks the beginning of the expr and the cdr specifies the character after the end of the expr" (let ((begin) (end)) ! (expr-backward-sexp) (setq begin (point)) ! (expr-forward-sexp) (setq end (point)) (goto-char begin) (cons begin end))) *************** the character after the end of the expr" *** 751,766 **** "Returns the following expr, point is set to beginning of that expr. The expr is represented as a cons cell, where the car specifies the point in the current buffer that marks the beginning of the expr and the cdr specifies ! the character after the end of the expr" (let ((begin) (end)) ! (forw-expr) ! (forw-expr) (setq end (point)) ! (back-expr) (setq begin (point)) ! (cons begin end) ! ) ! ) (defun expr-compound-sep (span-start span-end) "Returns '.' for '->' & '.', returns ' ' for white space, --- 744,757 ---- "Returns the following expr, point is set to beginning of that expr. The expr is represented as a cons cell, where the car specifies the point in the current buffer that marks the beginning of the expr and the cdr specifies ! the character after the end of the expr." (let ((begin) (end)) ! (expr-forward-sexp) ! (expr-forward-sexp) (setq end (point)) ! (expr-backward-sexp) (setq begin (point)) ! (cons begin end))) (defun expr-compound-sep (span-start span-end) "Returns '.' for '->' & '.', returns ' ' for white space, *************** returns '?' for other puctuation." *** 780,794 **** (t (setq span-start span-end) (setq result ??))))) (setq span-start (+ span-start 1))) ! result ! ) ! ) (defun expr-compound (first second) ! "Returns non-nil if the concatenation of two exprs results in a single C ! token. The two exprs are represented as a cons cells, where the car specifies the point in the current buffer that marks the beginning of the ! expr and the cdr specifies the character after the end of the expr Link exprs of the form: Expr -> Expr Expr . Expr --- 771,783 ---- (t (setq span-start span-end) (setq result ??))))) (setq span-start (+ span-start 1))) ! result)) (defun expr-compound (first second) ! "Non-nil if concatenating FIRST and SECOND makes a single C token. ! The two exprs are represented as a cons cells, where the car specifies the point in the current buffer that marks the beginning of the ! expr and the cdr specifies the character after the end of the expr. Link exprs of the form: Expr -> Expr Expr . Expr *************** Link exprs of the form: *** 814,834 **** ((= span-end ?[ ) t ) (t nil)) ) ! (t nil)) ! ) ! ) ! ! ;;; There appears to be a bug in the byte compiler somewhere near macro ! ;;; handling that (a) generates a spurious message about gud-key-prefix ! ;;; when the global-set-key clause in gud-def is compiled, (b) generates ! ;;; incorrect bytecode for gud-def. The symptom of this incorrectness ! ;;; is that loading gud.elc brings in a compiled gud-def that doesn't ! ;;; properly perform both global (C-x C-a) and local (C-c) bindings. ! ;;; The workaround is to always load from source. Consequently, we try ! ;;; to disable byte-compilation here. ! ;;; ! ;;; Local Variables: ! ;;; no-byte-compile: t ! ;;; End: ;;; gud.el ends here --- 803,808 ---- ((= span-end ?[ ) t ) (t nil)) ) ! (t nil)))) ;;; gud.el ends here diff -cprP -x *.elc emacs-19.12/lisp/hideif.el emacs-19.13/lisp/hideif.el *** emacs-19.12/lisp/hideif.el Tue Jun 8 05:32:12 1993 --- emacs-19.13/lisp/hideif.el Thu Jun 3 15:34:57 1993 *************** *** 154,166 **** (if hide-ifdef-mode-map () ; dont redefine it. (setq hide-ifdef-mode-map (make-sparse-keymap)) ! (define-key hide-ifdef-mode-map "d" 'hide-ifdef-define) ! (define-key hide-ifdef-mode-map "u" 'hide-ifdef-undef) ! (define-key hide-ifdef-mode-map "D" 'hide-ifdef-set-define-alist) ! (define-key hide-ifdef-mode-map "U" 'hide-ifdef-use-define-alist) ! (define-key hide-ifdef-mode-map "h" 'hide-ifdefs) ! (define-key hide-ifdef-mode-map "s" 'show-ifdefs) (define-key hide-ifdef-mode-map "\C-h" 'hide-ifdef-block) (define-key hide-ifdef-mode-map "\C-s" 'show-ifdef-block) --- 154,166 ---- (if hide-ifdef-mode-map () ; dont redefine it. (setq hide-ifdef-mode-map (make-sparse-keymap)) ! (define-key hide-ifdef-mode-map "\ed" 'hide-ifdef-define) ! (define-key hide-ifdef-mode-map "\eu" 'hide-ifdef-undef) ! (define-key hide-ifdef-mode-map "\eD" 'hide-ifdef-set-define-alist) ! (define-key hide-ifdef-mode-map "\eU" 'hide-ifdef-use-define-alist) ! (define-key hide-ifdef-mode-map "\eh" 'hide-ifdefs) ! (define-key hide-ifdef-mode-map "\es" 'show-ifdefs) (define-key hide-ifdef-mode-map "\C-h" 'hide-ifdef-block) (define-key hide-ifdef-mode-map "\C-s" 'show-ifdef-block) *************** *** 171,179 **** (define-key hide-ifdef-mode-map "\C-n" 'next-ifdef) (define-key hide-ifdef-mode-map "\C-p" 'previous-ifdef) (define-key hide-ifdef-mode-map "\C-q" 'hide-ifdef-toggle-read-only) ! (define-key hide-ifdef-mode-map ! (where-is-internal 'toggle-read-only nil nil t) ! 'hide-ifdef-toggle-outside-read-only) ) (fset 'hide-ifdef-mode-map hide-ifdef-mode-map) ; the function is the map ) --- 171,181 ---- (define-key hide-ifdef-mode-map "\C-n" 'next-ifdef) (define-key hide-ifdef-mode-map "\C-p" 'previous-ifdef) (define-key hide-ifdef-mode-map "\C-q" 'hide-ifdef-toggle-read-only) ! (let ((where (where-is-internal 'toggle-read-only nil nil t))) ! (if where ! (define-key hide-ifdef-mode-map ! where ! 'hide-ifdef-toggle-outside-read-only))) ) (fset 'hide-ifdef-mode-map hide-ifdef-mode-map) ; the function is the map ) diff -cprP -x *.elc emacs-19.12/lisp/info.el emacs-19.13/lisp/info.el *** emacs-19.12/lisp/info.el Tue Jun 8 05:32:21 1993 --- emacs-19.13/lisp/info.el Tue Jun 8 00:40:44 1993 *************** *** 81,94 **** (defvar Info-index-alternatives nil "List of possible matches for last Info-index command.") ! (defvar Info-suffix-list '( ("" . nil) ! (".info" . nil) ! (".Z" . "uncompress") ! (".Y" . "unyabba") ! (".z" . "gunzip") ! (".info.Z" . "uncompress") ! (".info.Y" . "unyabba") ! (".info.z" . "gunzip")) "List of file name suffixes and associated decoding commands. Each entry should be (SUFFIX . STRING); the file is given to the command as standard input. If STRING is nil, no decoding is done.") --- 81,96 ---- (defvar Info-index-alternatives nil "List of possible matches for last Info-index command.") ! (defvar Info-suffix-list '( ("" . nil) ! (".info" . nil) ! (".Z" . "uncompress") ! (".Y" . "unyabba") ! (".gz" . "gunzip") ! (".z" . "gunzip") ! (".info.Z" . "uncompress") ! (".info.Y" . "unyabba") ! (".info.gz" . "gunzip") ! (".info.z" . "gunzip")) "List of file name suffixes and associated decoding commands. Each entry should be (SUFFIX . STRING); the file is given to the command as standard input. If STRING is nil, no decoding is done.") *************** NAME may be an abbreviation of the refer *** 659,669 **** (cons (cons str nil) completions)))) (if completions ! (list (completing-read (if default ! (concat "Follow reference named: (" ! default ") ") ! "Follow reference named: ") ! completions default t)) (error "No cross-references in this node")))) (let (target beg i (str (concat "\\*note " footnotename))) (while (setq i (string-match " " str i)) --- 661,673 ---- (cons (cons str nil) completions)))) (if completions ! (let ((input (completing-read (if default ! (concat "Follow reference named: (" ! default ") ") ! "Follow reference named: ") ! completions nil t))) ! (list (if (equal input "") ! default input))) (error "No cross-references in this node")))) (let (target beg i (str (concat "\\*note " footnotename))) (while (setq i (string-match " " str i)) *************** At end of the node's text, moves to the *** 1138,1144 **** (define-key Info-mode-map "u" 'Info-up) (define-key Info-mode-map "," 'Info-index-next) (define-key Info-mode-map "\177" 'Info-scroll-down) ! (define-key Info-mode-map [mouse-3] 'Info-follow-nearest-node) ) ;; Info mode is suitable only for specially formatted data. --- 1142,1148 ---- (define-key Info-mode-map "u" 'Info-up) (define-key Info-mode-map "," 'Info-index-next) (define-key Info-mode-map "\177" 'Info-scroll-down) ! (define-key Info-mode-map [mouse-2] 'Info-follow-nearest-node) ) ;; Info mode is suitable only for specially formatted data. diff -cprP -x *.elc emacs-19.12/lisp/isearch.el emacs-19.13/lisp/isearch.el *** emacs-19.12/lisp/isearch.el Tue Jun 8 05:32:25 1993 --- emacs-19.13/lisp/isearch.el Sun Jun 6 18:11:25 1993 *************** *** 1,10 **** ;;; isearch.el --- incremental search minor mode. ! ;; Copyright (C) 1992 Free Software Foundation, Inc. ;; Author: Daniel LaLiberte ! ;; |$Date: 1993/06/01 04:52:28 $|$Revision: 1.39 $ ;; This file is not yet part of GNU Emacs, but it is based almost ;; entirely on isearch.el which is part of GNU Emacs. --- 1,10 ---- ;;; isearch.el --- incremental search minor mode. ! ;; Copyright (C) 1992, 1993 Free Software Foundation, Inc. ;; Author: Daniel LaLiberte ! ;; |$Date: 1993/06/06 22:11:22 $|$Revision: 1.41 $ ;; This file is not yet part of GNU Emacs, but it is based almost ;; entirely on isearch.el which is part of GNU Emacs. *************** that the search has reached.") *** 157,163 **** ;;;======================================================================== ;;; Some additional options and constants. ! (defvar search-upper-case t "*If non-nil, upper case chars disable case fold searching. That is, upper and lower case chars must match exactly. This applies no matter where the chars come from, but does not --- 157,163 ---- ;;;======================================================================== ;;; Some additional options and constants. ! (defvar search-upper-case 'not-yanks "*If non-nil, upper case chars disable case fold searching. That is, upper and lower case chars must match exactly. This applies no matter where the chars come from, but does not *************** You might want to use something like \"[ *** 177,186 **** ;; currently a clean thing to do. Once highlighting is made clean, ;; this feature can be re-enabled and advertised. (defvar search-highlight nil ! "Whether isearch and query-replace should highlight the text which ! currently matches the search-string.") - (defvar isearch-mode-hook nil "Function(s) to call after starting up an incremental search.") --- 177,184 ---- ;; currently a clean thing to do. Once highlighting is made clean, ;; this feature can be re-enabled and advertised. (defvar search-highlight nil ! "*Non-nil means incremental search highlights the current match.") (defvar isearch-mode-hook nil "Function(s) to call after starting up an incremental search.") *************** is treated as a regexp. See \\[isearch- *** 500,509 **** isearch-small-window nil isearch-opoint (point) - isearch-window-configuration (current-window-configuration) isearch-old-local-map (current-local-map) search-ring-yank-pointer nil regexp-search-ring-yank-pointer nil) ;; This was for Lucid Emacs. But now that we have pre-command-hook, ;; it causes trouble. ;; (if isearch-pre-command-hook-exists --- 498,509 ---- isearch-small-window nil isearch-opoint (point) isearch-old-local-map (current-local-map) search-ring-yank-pointer nil regexp-search-ring-yank-pointer nil) + (if isearch-slow-terminal-mode + (setq isearch-window-configuration (current-window-configuration))) + ;; This was for Lucid Emacs. But now that we have pre-command-hook, ;; it causes trouble. ;; (if isearch-pre-command-hook-exists *************** is treated as a regexp. See \\[isearch- *** 581,587 **** (isearch-dehighlight t) (let ((found-start (window-start (selected-window))) (found-point (point))) ! (set-window-configuration isearch-window-configuration) ;; If there was movement, mark the starting position. ;; Maybe should test difference between and set mark iff > threshold. --- 581,588 ---- (isearch-dehighlight t) (let ((found-start (window-start (selected-window))) (found-point (point))) ! (if isearch-window-configuration ! (set-window-configuration isearch-window-configuration)) ;; If there was movement, mark the starting position. ;; Maybe should test difference between and set mark iff > threshold. *************** and the meta character is unread so that *** 1006,1014 **** (apply 'isearch-unread (listify-key-sequence key))) (isearch-edit-string)) (search-exit-option ! (let ((key (this-command-keys))) ! (apply 'isearch-unread (listify-key-sequence key))) ! (isearch-done)) (t;; otherwise nil (isearch-process-search-string (this-command-keys) (this-command-keys))))) --- 1007,1025 ---- (apply 'isearch-unread (listify-key-sequence key))) (isearch-edit-string)) (search-exit-option ! (let ((key (this-command-keys)) ! window) ! (apply 'isearch-unread (listify-key-sequence key)) ! ;; If we got a mouse click, maybe it was read with the buffer ! ;; it was clicked on. If so, that buffer, not the current one, ! ;; is in isearch mode. So end the search in that buffer. ! (if (and (listp (aref key 0)) ! (setq window (posn-window (event-start (aref key 0)))) ! (windowp window)) ! (save-excursion ! (set-buffer (window-buffer window)) ! (isearch-done)) ! (isearch-done)))) (t;; otherwise nil (isearch-process-search-string (this-command-keys) (this-command-keys))))) *************** If there is no completion possible, say *** 1272,1278 **** ;; Do the search with the current search string. (isearch-message nil t) (if (and isearch-case-fold-search search-upper-case) ! (setq isearch-case-fold-search (isearch-no-upper-case-p isearch-string))) (condition-case lossage (let ((inhibit-quit nil) (case-fold-search isearch-case-fold-search)) --- 1283,1290 ---- ;; Do the search with the current search string. (isearch-message nil t) (if (and isearch-case-fold-search search-upper-case) ! (setq isearch-case-fold-search ! (isearch-no-upper-case-p isearch-string isearch-regexp))) (condition-case lossage (let ((inhibit-quit nil) (case-fold-search isearch-case-fold-search)) *************** If there is no completion possible, say *** 1317,1387 **** ;;;======================================================== ;;; Highlighting ! (defun isearch-highlight (begin end)) ! (defun isearch-dehighlight (totally)) ! ;; lemacs uses faces ! '(progn ! (defvar isearch-extent nil) ! ! (or (find-face 'isearch) ;; this face is initialized by x-faces.el ! (make-face 'isearch)) ;; since isearch is preloaded ! ! (defun isearch-lemacs-highlight (begin end) ! (if (null isearch-highlight) nil ! (if (and (extentp isearch-extent) ! (eq (extent-buffer isearch-extent) (current-buffer))) ! (set-extent-endpoints isearch-extent begin end) ! (if (and (extentp isearch-extent) ! (bufferp (extent-buffer isearch-extent)) ! (buffer-name (extent-buffer isearch-extent))) ! (delete-extent isearch-extent)) ! (setq isearch-extent (make-extent begin end (current-buffer)))) ! (set-extent-face isearch-extent 'isearch))) ! ! (defun isearch-lemacs-dehighlight (totally) ! (if (and isearch-highlight isearch-extent) ! (if totally ! (let ((inhibit-quit t)) ! (if (and (extentp isearch-extent) ! (bufferp (extent-buffer isearch-extent)) ! (buffer-name (extent-buffer isearch-extent))) ! (delete-extent isearch-extent)) ! (setq isearch-extent nil)) ! (if (and (extentp isearch-extent) ! (bufferp (extent-buffer isearch-extent)) ! (buffer-name (extent-buffer isearch-extent))) ! (set-extent-face isearch-extent 'default) ! (isearch-dehighlight t))))) ! ! (defalias 'isearch-highlight (symbol-function 'isearch-lemacs-highlight)) ! (defalias 'isearch-dehighlight (symbol-function 'isearch-lemacs-dehighlight)) ! ) ;;;=========================================================== ;;; General utilities - ;; (defalias 'isearch-member-equal (symbol-function 'member)) ; for emacs 19 - - (defun isearch-member-equal (item list) - "Return non-nil if ITEM is `equal' to some item in LIST. - Actually return the list whose car is that item." - (while (and list (not (equal item (car list)))) - (setq list (cdr list))) - list) - ! (defun isearch-no-upper-case-p (string) ! "Return t if there are no upper case chars in string. ! But upper case chars preceeded by \\ (but not \\\\) do not count since they ! have special meaning in a regexp." (let ((case-fold-search nil)) ! (not (string-match "\\(^\\|\\\\\\\\\\|[^\\]\\)[A-Z]" string)))) ;;;================================================= ! ;;; Special functions for lemacs events. ;; To quiet the byte-compiler. (defvar unread-command-event) --- 1329,1363 ---- ;;;======================================================== ;;; Highlighting ! (defvar isearch-overlay nil) ! (defun isearch-highlight (beg end) ! (if (or (null search-highlight) (not (internal-find-face 'isearch nil))) nil ! (or isearch-overlay (setq isearch-overlay (make-overlay beg end))) ! (move-overlay isearch-overlay beg end (current-buffer)) ! (overlay-put isearch-overlay 'face 'isearch))) ! ! (defun isearch-dehighlight (totally) ! (if isearch-overlay ! (delete-overlay isearch-overlay))) ;;;=========================================================== ;;; General utilities ! (defun isearch-no-upper-case-p (string regexp-flag) ! "Return t if there are no upper case chars in STRING. ! If REGEXP-FLAG is non-nil, disregard letters preceeded by `\\' (but not `\\\\') ! since they have special meaning in a regexp." (let ((case-fold-search nil)) ! (not (string-match (if regexp-flag "\\(^\\|\\\\\\\\\\|[^\\]\\)[A-Z]" ! "[A-Z]") ! string)))) ;;;================================================= ! ;; Portability functions to support various Emacs versions. ;; To quiet the byte-compiler. (defvar unread-command-event) *************** have special meaning in a regexp." *** 1418,1526 **** (if isearch-event-data-type last-command-event last-command-char)) - - - - - ;;;======================================================== - ;;; Exiting in lemacs - - ;; This is a large amount of code to support automatic termination of - ;; isearch-mode when a command (however it is invoked) is not an - ;; isearch command, or the buffer is switched out from under - ;; isearch-mode. Only later versions of lemacs have the pre-command-hook. - - ;;(if isearch-pre-command-hook-exists - ;;(progn - - ;;;; This list must be modified whenever the available commands are modified. - ;;(mapcar (function (lambda (command) - ;; (put command 'isearch-command t))) - ;; '(isearch-printing-char - ;; isearch-return-char - ;; isearch-repeat-forward - ;; isearch-repeat-backward - ;; isearch-delete-char - ;; isearch-abort - ;; isearch-quote-char - ;; isearch-exit - ;; isearch-printing-char - ;; isearch-printing-char - ;; isearch-yank-word - ;; isearch-yank-line - ;; isearch-*-char - ;; isearch-*-char - ;; isearch-|-char - ;; isearch-toggle-regexp - ;; isearch-edit-string - ;; isearch-mode-help - ;; isearch-ring-advance - ;; isearch-ring-retreat - ;; isearch-ring-advance-edit - ;; isearch-ring-retreat-edit - ;; isearch-whitespace-chars - ;; isearch-complete - ;; isearch-complete-edit - ;; isearch-edit-string - ;; isearch-toggle-regexp - ;; ;; The following may not be needed since isearch-mode is off already. - ;; isearch-forward-exit-minibuffer - ;; isearch-reverse-exit-minibuffer - ;; isearch-nonincremental-exit-minibuffer)) - - ;;(defun isearch-pre-command-hook () - ;; ;; - ;; ;; For use as the value of `pre-command-hook' when isearch-mode is active. - ;; ;; If the command about to be executed is not one of the isearch commands, - ;; ;; then isearch-mode is turned off before that command is executed. - ;; ;; - ;; ;; If the command about to be executed is self-insert-command, or is a - ;; ;; keyboard macro of a single key sequence which is bound to self-insert- - ;; ;; command, then we add those chars to the search ring instead of inserting - ;; ;; them in the buffer. In this way, the set of self-searching characters - ;; ;; need not be exhaustively enumerated, but is derived from other maps. - ;; ;; - ;; (isearch-maybe-frob-keyboard-macros) - ;; (if (and (symbolp this-command) - ;; (get this-command 'isearch-command)) - ;; nil - ;; (isearch-done))) - - ;;(defun isearch-maybe-frob-keyboard-macros () - ;; ;; - ;; ;; If the command about to be executed is `self-insert-command' then change - ;; ;; the command to `isearch-printing-char' instead, meaning add the last- - ;; ;; typed character to the search string. - ;; ;; - ;; ;; If `this-command' is a string or a vector (that is, a keyboard macro) - ;; ;; and it contains only one command, which is bound to self-insert-command, - ;; ;; then do the same thing as for self-inserting commands: arrange for that - ;; ;; character to be added to the search string. If we didn't do this, then - ;; ;; typing a compose sequence (a la x-compose.el) would terminate the search - ;; ;; and insert the character, instead of searching for that character. - ;; ;; - ;; (cond ((eq this-command 'self-insert-command) - ;; (setq this-command 'isearch-printing-char)) - ;; ((and (stringp this-command) - ;; (eq (key-binding this-command) 'self-insert-command)) - ;; (setq last-command-char (aref this-command 0) - ;; last-command-event (character-to-event last-command-char) - ;; this-command 'isearch-printing-char)) - ;; ((and (vectorp this-command) - ;; (eq (key-binding this-command) 'self-insert-command)) - ;; (let* ((desc (aref this-command 0)) - ;; (code (cond ((integerp desc) desc) - ;; ((symbolp desc) (get desc character-set-property)) - ;; ((consp desc) - ;; (and (null (cdr desc)) - ;; (get (car desc) character-set-property))) - ;; (t nil)))) - ;; (if code - ;; (setq last-command-char code - ;; last-command-event (character-to-event last-command-char) - ;; this-command 'isearch-printing-char)))) - ;; )) - - ;;)) ;;; isearch.el ends here --- 1394,1398 ---- diff -cprP -x *.elc emacs-19.12/lisp/loaddefs.el emacs-19.13/lisp/loaddefs.el *** emacs-19.12/lisp/loaddefs.el Tue Jun 8 05:32:46 1993 --- emacs-19.13/lisp/loaddefs.el Tue Jun 8 04:52:25 1993 *************** *** 428,434 **** ;;;(sort-regexp-fields nil "\n*.*\n.*from \\(.*\\)[^ ]* " "\\1" ;;; (point-min) (point-max)) ! ;;;### (autoloads (change-log-mode add-change-log-entry-other-window add-change-log-entry find-change-log) "add-log" "add-log.el" (11245 36989)) ;;; Generated autoloads from add-log.el (defvar change-log-default-name nil "\ --- 428,434 ---- ;;;(sort-regexp-fields nil "\n*.*\n.*from \\(.*\\)[^ ]* " "\\1" ;;; (point-min) (point-max)) ! ;;;### (autoloads (change-log-mode add-change-log-entry-other-window add-change-log-entry find-change-log) "add-log" "add-log.el" (11280 54002)) ;;; Generated autoloads from add-log.el (defvar change-log-default-name nil "\ *************** Runs `change-log-mode-hook'." t nil) *** 467,473 **** ;;;*** ! ;;;### (autoloads (ad-start-advice defadvice ad-add-advice) "advice" "advice.el" (11256 21968)) ;;; Generated autoloads from advice.el (defvar ad-start-advice-on-load nil "\ --- 467,473 ---- ;;;*** ! ;;;### (autoloads (ad-start-advice defadvice ad-add-advice) "advice" "advice.el" (11266 60950)) ;;; Generated autoloads from advice.el (defvar ad-start-advice-on-load nil "\ *************** advice state that will be used during ac *** 567,573 **** this if the defadvice gets actually compiled (with a v18 byte-compiler put the defadvice into the body of a defun). ! Look at the file advice.el for comprehensive documentation." nil (quote macro)) (autoload (quote ad-start-advice) "advice" "\ Redefines some primitives to start the advice magic. --- 567,573 ---- this if the defadvice gets actually compiled (with a v18 byte-compiler put the defadvice into the body of a defun). ! Look at the file advice.el for comprehensive documentation." nil t) (autoload (quote ad-start-advice) "advice" "\ Redefines some primitives to start the advice magic. *************** a function gets defined or redefined." t *** 583,589 **** ;;;*** ! ;;;### (autoloads (ange-ftp-hook-function) "ange-ftp" "ange-ftp.el" (11223 8902)) ;;; Generated autoloads from ange-ftp.el (autoload (quote ange-ftp-hook-function) "ange-ftp" nil nil nil) --- 583,589 ---- ;;;*** ! ;;;### (autoloads (ange-ftp-hook-function) "ange-ftp" "ange-ftp.el" (11282 51548)) ;;; Generated autoloads from ange-ftp.el (autoload (quote ange-ftp-hook-function) "ange-ftp" nil nil nil) *************** This will occur at midnight when the app *** 626,632 **** ;;;*** ! ;;;### (autoloads (super-apropos apropos) "apropos" "apropos.el" (11261 43388)) ;;; Generated autoloads from apropos.el (autoload (quote apropos) "apropos" "\ --- 626,632 ---- ;;;*** ! ;;;### (autoloads (super-apropos apropos) "apropos" "apropos.el" (11283 60450)) ;;; Generated autoloads from apropos.el (autoload (quote apropos) "apropos" "\ *************** constants. *** 749,760 **** BEWARE BEWARE BEWARE Inclusion of (,ATOM) rather than (, ATOM) or of (,@ATOM) rather than (,@ ATOM) ! will result in errors that will show up very late." nil (quote macro)) ;;;*** ! ;;;### (autoloads (bibtex-mode) "bibtex" "/home/fsf/rms/e19/lisp/bibtex.el" (11274 32339)) ! ;;; Generated autoloads from /home/fsf/rms/e19/lisp/bibtex.el (autoload (quote bibtex-mode) "bibtex" "\ Major mode for editing bibtex files. --- 749,760 ---- BEWARE BEWARE BEWARE Inclusion of (,ATOM) rather than (, ATOM) or of (,@ATOM) rather than (,@ ATOM) ! will result in errors that will show up very late." nil t) ;;;*** ! ;;;### (autoloads (bibtex-mode) "bibtex" "bibtex.el" (11283 40874)) ! ;;; Generated autoloads from bibtex.el (autoload (quote bibtex-mode) "bibtex" "\ Major mode for editing bibtex files. *************** checks that no non-optional fields are e *** 778,788 **** Use \\[bibtex-find-text] to position the dot at the end of the current field. Use \\[bibtex-next-field] to move to end of the next field. - \\[bibtex-x-environment] binds a mode-specific X menu to control+right - mouse button. - \\[bibtex-sun-environment] binds a mode-specific Sun menu to right - mouse button. - The following may be of interest as well: Functions: --- 778,783 ---- *************** a reflection." t nil) *** 978,984 **** ;;;*** ! ;;;### (autoloads (batch-byte-compile display-call-tree byte-compile compile-defun byte-compile-file byte-recompile-directory) "bytecomp" "bytecomp.el" (11256 22583)) ;;; Generated autoloads from bytecomp.el (autoload (quote byte-recompile-directory) "bytecomp" "\ --- 973,979 ---- ;;;*** ! ;;;### (autoloads (batch-byte-compile display-call-tree byte-compile compile-defun byte-compile-file byte-recompile-directory) "bytecomp" "bytecomp.el" (11278 17482)) ;;; Generated autoloads from bytecomp.el (autoload (quote byte-recompile-directory) "bytecomp" "\ *************** no args if that value is non-nil." t nil *** 1099,1106 **** ;;;*** ! ;;;### (autoloads (list-yahrzeit-dates calendar) "calendar" "/home/fsf/rms/e19/lisp/calendar.el" (11264 3998)) ! ;;; Generated autoloads from /home/fsf/rms/e19/lisp/calendar.el (defvar view-diary-entries-initially nil "\ *If t, the diary entries for the current date will be displayed on entry. --- 1094,1101 ---- ;;;*** ! ;;;### (autoloads (list-yahrzeit-dates calendar) "calendar" "calendar.el" (11277 38463)) ! ;;; Generated autoloads from calendar.el (defvar view-diary-entries-initially nil "\ *If t, the diary entries for the current date will be displayed on entry. *************** the date of death is taken from the curs *** 1748,1754 **** ;;;*** ! ;;;### (autoloads (set-case-syntax set-case-syntax-pair set-case-syntax-delims describe-buffer-case-table) "case-table" "case-table.el" (11187 62519)) ;;; Generated autoloads from case-table.el (autoload (quote describe-buffer-case-table) "case-table" "\ --- 1743,1749 ---- ;;;*** ! ;;;### (autoloads (set-case-syntax set-case-syntax-pair set-case-syntax-delims describe-buffer-case-table) "case-table" "case-table.el" (11283 37570)) ;;; Generated autoloads from case-table.el (autoload (quote describe-buffer-case-table) "case-table" "\ *************** The Command History listing is recompute *** 1816,1822 **** ;;;*** ! ;;;### (autoloads (make-comint) "comint" "comint.el" (11244 38605)) ;;; Generated autoloads from comint.el (autoload (quote make-comint) "comint" "\ --- 1811,1817 ---- ;;;*** ! ;;;### (autoloads (make-comint) "comint" "comint.el" (11279 32694)) ;;; Generated autoloads from comint.el (autoload (quote make-comint) "comint" "\ *************** If `compare-ignore-case' is non-nil, cha *** 1842,1848 **** ;;;*** ! ;;;### (autoloads (next-error grep compile) "compile" "compile.el" (11249 48260)) ;;; Generated autoloads from compile.el (defvar compilation-mode-hook nil "\ --- 1837,1843 ---- ;;;*** ! ;;;### (autoloads (next-error grep compile) "compile" "compile.el" (11282 63090)) ;;; Generated autoloads from compile.el (defvar compilation-mode-hook nil "\ *************** execution in a .emacs file." t nil) *** 1994,2000 **** ;;;*** ! ;;;### (autoloads (diff-backup diff) "diff" "diff.el" (11245 5272)) ;;; Generated autoloads from diff.el (autoload (quote diff) "diff" "\ --- 1989,1995 ---- ;;;*** ! ;;;### (autoloads (diff-backup diff) "diff" "diff.el" (11276 57004)) ;;; Generated autoloads from diff.el (autoload (quote diff) "diff" "\ *************** The backup file is the first file given *** 2011,2017 **** ;;;*** ! ;;;### (autoloads (dired-hide-all dired-hide-subdir dired-tree-down dired-tree-up dired-kill-subdir dired-mark-subdir-files dired-goto-subdir dired-prev-subdir dired-maybe-insert-subdir dired-downcase dired-upcase dired-do-symlink-regexp dired-do-hardlink-regexp dired-do-copy-regexp dired-do-rename-regexp dired-do-rename dired-do-hardlink dired-do-symlink dired-do-copy dired-create-directory dired-string-replace-match dired-do-redisplay dired-do-load dired-do-byte-compile dired-do-compress dired-do-kill-lines dired-do-shell-command dired-do-print dired-do-chown dired-do-chgrp dired-do-chmod dired-backup-diff dired-diff) "dired-aux" "dired-aux.el" (11181 53267)) ;;; Generated autoloads from dired-aux.el (autoload (quote dired-diff) "dired-aux" "\ --- 2006,2012 ---- ;;;*** ! ;;;### (autoloads (dired-hide-all dired-hide-subdir dired-tree-down dired-tree-up dired-kill-subdir dired-mark-subdir-files dired-goto-subdir dired-prev-subdir dired-maybe-insert-subdir dired-downcase dired-upcase dired-do-symlink-regexp dired-do-hardlink-regexp dired-do-copy-regexp dired-do-rename-regexp dired-do-rename dired-do-hardlink dired-do-symlink dired-do-copy dired-create-directory dired-string-replace-match dired-do-redisplay dired-do-load dired-do-byte-compile dired-do-compress dired-do-kill-lines dired-do-shell-command dired-do-print dired-do-chown dired-do-chgrp dired-do-chmod dired-backup-diff dired-diff) "dired-aux" "dired-aux.el" (11275 39298)) ;;; Generated autoloads from dired-aux.el (autoload (quote dired-diff) "dired-aux" "\ *************** Use \\[dired-hide-subdir] to (un)hide a *** 2187,2194 **** ;;;*** ! ;;;### (autoloads (dired-noselect dired-other-frame dired-other-window dired) "dired" "/home/fsf/rms/e19/lisp/dired.el" (11267 62528)) ! ;;; Generated autoloads from /home/fsf/rms/e19/lisp/dired.el (defvar dired-listing-switches "-al" "\ *Switches passed to `ls' for dired. MUST contain the `l' option. --- 2182,2189 ---- ;;;*** ! ;;;### (autoloads (dired-noselect dired-other-frame dired-other-window dired) "dired" "dired.el" (11282 24038)) ! ;;; Generated autoloads from dired.el (defvar dired-listing-switches "-al" "\ *Switches passed to `ls' for dired. MUST contain the `l' option. *************** With prefix arg NOCONFIRM, execute curre *** 2379,2385 **** ;;;*** ! ;;;### (autoloads (edebug-debug edebug-defun) "edebug" "edebug.el" (11236 36852)) ;;; Generated autoloads from edebug.el (autoload (quote edebug-defun) "edebug" "\ --- 2374,2380 ---- ;;;*** ! ;;;### (autoloads (edebug-debug edebug-defun) "edebug" "edebug.el" (11274 16460)) ;;; Generated autoloads from edebug.el (autoload (quote edebug-defun) "edebug" "\ *************** Symbols: RET, SPC, TAB, DEL, LFD, NUL; *** 2423,2429 **** ;;;*** ! ;;;### (autoloads (edt-emulation-on) "edt" "edt.el" (11223 36954)) ;;; Generated autoloads from edt.el (autoload (quote edt-emulation-on) "edt" "\ --- 2418,2424 ---- ;;;*** ! ;;;### (autoloads (edt-emulation-on) "edt" "edt.el" (11279 33189)) ;;; Generated autoloads from edt.el (autoload (quote edt-emulation-on) "edt" "\ *************** for \\[find-tag] (which see)." t nil) *** 2655,2661 **** ;;;*** ! ;;;### (autoloads (complete-tag select-tags-table tags-apropos list-tags tags-query-replace tags-search tags-loop-continue next-file find-tag-regexp find-tag-other-frame find-tag-other-window find-tag find-tag-noselect tags-table-files visit-tags-table) "etags" "etags.el" (11249 56355)) ;;; Generated autoloads from etags.el (defvar tags-file-name nil "\ --- 2650,2656 ---- ;;;*** ! ;;;### (autoloads (complete-tag select-tags-table tags-apropos list-tags tags-query-replace tags-search tags-loop-continue next-file find-tag-regexp find-tag-other-frame find-tag-other-window find-tag find-tag-noselect tags-table-files visit-tags-table) "etags" "etags.el" (11283 35220)) ;;; Generated autoloads from etags.el (defvar tags-file-name nil "\ *************** for \\[find-tag] (which see)." t nil) *** 2835,2845 **** ;;;*** ! ;;;### (autoloads (enable-flow-control-on enable-flow-control) "flow-ctrl" "flow-ctrl.el" (11130 57810)) ;;; Generated autoloads from flow-ctrl.el (autoload (quote enable-flow-control) "flow-ctrl" "\ ! Enable use of flow control; let user type C-s as C- and C-q as C-^." t nil) (autoload (quote enable-flow-control-on) "flow-ctrl" "\ Enable flow control if using one of a specified set of terminal types. --- 2830,2876 ---- ;;;*** ! ;;;### (autoloads (find-grep-dired find-name-dired find-dired) "find-dired" "find-dired.el" (11269 25506)) ! ;;; Generated autoloads from find-dired.el ! ! (defvar find-ls-option (if (eq system-type (quote berkeley-unix)) "-ls" "-exec ls -ldi {} \\;") "\ ! *Option to `find' to produce an `ls -l'-type listing.") ! ! (defvar find-grep-options (if (eq system-type (quote berkeley-unix)) "-s" "-l") "\ ! *Option to grep to be as silent as possible. ! On Berkeley systems, this is `-s', for others it seems impossible to ! suppress all output, so `-l' is used to print nothing more than the ! file name.") ! ! (autoload (quote find-dired) "find-dired" "\ ! Run `find' and go into dired-mode on a buffer of the output. ! The command run (after changing into DIR) is ! ! find . \\( ARGS \\) -ls" t nil) ! ! (autoload (quote find-name-dired) "find-dired" "\ ! Search DIR recursively for files matching the globbing pattern PATTERN, ! and run dired on those files. ! PATTERN is a shell wildcard (not an Emacs regexp) and need not be quoted. ! The command run (after changing into DIR) is ! ! find . -name 'PATTERN' -ls" t nil) ! ! (autoload (quote find-grep-dired) "find-dired" "\ ! Find files in DIR containing a regexp ARG and start Dired on output. ! The command run (after changing into DIR) is ! ! find . -exec grep -s ARG {} \\; -ls ! ! Thus ARG can also contain additional grep options." t nil) ! ! ;;;*** ! ! ;;;### (autoloads (enable-flow-control-on enable-flow-control) "flow-ctrl" "flow-ctrl.el" (11278 55999)) ;;; Generated autoloads from flow-ctrl.el (autoload (quote enable-flow-control) "flow-ctrl" "\ ! Enable use of flow control; let user type C-s as C-\\ and C-q as C-^." t nil) (autoload (quote enable-flow-control-on) "flow-ctrl" "\ Enable flow control if using one of a specified set of terminal types. *************** to get the effect of a C-q." nil nil) *** 2850,2856 **** ;;;*** ! ;;;### (autoloads (fortran-mode) "fortran" "fortran.el" (11181 53285)) ;;; Generated autoloads from fortran.el (defvar fortran-tab-mode-default nil "\ --- 2881,2887 ---- ;;;*** ! ;;;### (autoloads (fortran-mode) "fortran" "fortran.el" (11284 8892)) ;;; Generated autoloads from fortran.el (defvar fortran-tab-mode-default nil "\ *************** with no args, if that value is non-nil." *** 2930,2936 **** ;;;*** ! ;;;### (autoloads (gnus) "gnus" "gnus.el" (11254 64402)) ;;; Generated autoloads from gnus.el (autoload (quote gnus) "gnus" "\ --- 2961,2967 ---- ;;;*** ! ;;;### (autoloads (gnus) "gnus" "gnus.el" (11280 64452)) ;;; Generated autoloads from gnus.el (autoload (quote gnus) "gnus" "\ *************** If optional argument CONFIRM is non-nil, *** 2939,2945 **** ;;;*** ! ;;;### (autoloads (gnus-post-news) "gnuspost" "gnuspost.el" (11254 50317)) ;;; Generated autoloads from gnuspost.el (fset (quote sendnews) (quote gnus-post-news)) --- 2970,2976 ---- ;;;*** ! ;;;### (autoloads (gnus-post-news) "gnuspost" "gnuspost.el" (11280 64406)) ;;; Generated autoloads from gnuspost.el (fset (quote sendnews) (quote gnus-post-news)) *************** Use \\[set-gnu-bindings] to restore prev *** 2979,2985 **** ;;;*** ! ;;;### (autoloads (dbx sdb gdb) "gud" "gud.el" (11229 44163)) ;;; Generated autoloads from gud.el (autoload (quote gdb) "gud" "\ --- 3010,3016 ---- ;;;*** ! ;;;### (autoloads (dbx sdb gdb) "gud" "gud.el" (11283 39089)) ;;; Generated autoloads from gud.el (autoload (quote gdb) "gud" "\ *************** Provide help for current mode." t nil) *** 3018,3024 **** ;;;*** ! ;;;### (autoloads (hexl-find-file hexl-mode) "hexl" "hexl.el" (11181 53288)) ;;; Generated autoloads from hexl.el (autoload (quote hexl-mode) "hexl" "\ --- 3049,3055 ---- ;;;*** ! ;;;### (autoloads (hexl-find-file hexl-mode) "hexl" "hexl.el" (11270 30440)) ;;; Generated autoloads from hexl.el (autoload (quote hexl-mode) "hexl" "\ *************** Switch to a buffer visiting file FILENAM *** 3099,3105 **** ;;;*** ! ;;;### (autoloads (hide-ifdef-mode) "hideif" "hideif.el" (11181 53289)) ;;; Generated autoloads from hideif.el (autoload (quote hide-ifdef-mode) "hideif" "\ --- 3130,3136 ---- ;;;*** ! ;;;### (autoloads (hide-ifdef-mode) "hideif" "hideif.el" (11278 21089)) ;;; Generated autoloads from hideif.el (autoload (quote hide-ifdef-mode) "hideif" "\ *************** inferior-lisp-mode-hook (after the comin *** 3196,3202 **** ;;;*** ! ;;;### (autoloads (Info-goto-emacs-key-command-node Info-goto-emacs-command-node info) "info" "info.el" (11223 20964)) ;;; Generated autoloads from info.el (autoload (quote info) "info" "\ --- 3227,3233 ---- ;;;*** ! ;;;### (autoloads (Info-goto-emacs-key-command-node Info-goto-emacs-command-node info) "info" "info.el" (11284 6220)) ;;; Generated autoloads from info.el (autoload (quote info) "info" "\ *************** For example, invoke \"emacs -batch -f ba *** 3247,3253 **** ;;;*** ! ;;;### (autoloads (ispell-region ispell-word ispell) "ispell" "ispell.el" (11257 47868)) ;;; Generated autoloads from ispell.el (autoload (quote ispell) "ispell" "\ --- 3278,3284 ---- ;;;*** ! ;;;### (autoloads (ispell-region ispell-word ispell) "ispell" "ispell.el" (11267 41222)) ;;; Generated autoloads from ispell.el (autoload (quote ispell) "ispell" "\ *************** and then select the region of un-tablifi *** 3452,3458 **** ;;;*** ! ;;;### (autoloads nil "mail-utils" "mail-utils.el" (11181 53300)) ;;; Generated autoloads from mail-utils.el (defvar mail-use-rfc822 nil "\ --- 3483,3489 ---- ;;;*** ! ;;;### (autoloads nil "mail-utils" "mail-utils.el" (11267 45112)) ;;; Generated autoloads from mail-utils.el (defvar mail-use-rfc822 nil "\ *************** Previous contents of that buffer are kil *** 3580,3586 **** ;;;*** ! ;;;### (autoloads (manual-entry) "man" "man.el" (11240 2282)) ;;; Generated autoloads from man.el (autoload (quote manual-entry) "man" "\ --- 3611,3617 ---- ;;;*** ! ;;;### (autoloads (manual-entry) "man" "man.el" (11273 1948)) ;;; Generated autoloads from man.el (autoload (quote manual-entry) "man" "\ *************** Returns the number of actions taken." ni *** 3638,3644 **** ;;;*** ! ;;;### (autoloads (mh-smail mh-rmail) "mh-e" "mh-e.el" (11185 3443)) ;;; Generated autoloads from mh-e.el (autoload (quote mh-rmail) "mh-e" "\ --- 3669,3675 ---- ;;;*** ! ;;;### (autoloads (mh-smail mh-rmail) "mh-e" "mh-e.el" (11280 2606)) ;;; Generated autoloads from mh-e.el (autoload (quote mh-rmail) "mh-e" "\ *************** to future sessions." t nil) *** 3715,3721 **** ;;;*** ! ;;;### (autoloads (nroff-mode) "nroff-mode" "nroff-mode.el" (11181 53307)) ;;; Generated autoloads from nroff-mode.el (autoload (quote nroff-mode) "nroff-mode" "\ --- 3746,3752 ---- ;;;*** ! ;;;### (autoloads (nroff-mode) "nroff-mode" "nroff-mode.el" (11267 60509)) ;;; Generated autoloads from nroff-mode.el (autoload (quote nroff-mode) "nroff-mode" "\ *************** Type \\[describe-mode] in that buffer fo *** 3741,3747 **** ;;;*** ! ;;;### (autoloads (outline-mode) "outline" "outline.el" (11261 4198)) ;;; Generated autoloads from outline.el (autoload (quote outline-mode) "outline" "\ --- 3772,3778 ---- ;;;*** ! ;;;### (autoloads (outline-minor-mode outline-mode) "outline" "outline.el" (11282 47668)) ;;; Generated autoloads from outline.el (autoload (quote outline-mode) "outline" "\ *************** beginning of the line. The longer the m *** 3784,3789 **** --- 3815,3825 ---- Turning on outline mode calls the value of `text-mode-hook' and then of `outline-mode-hook', if they are non-nil." t nil) + (autoload (quote outline-minor-mode) "outline" "\ + Toggle Outline minor mode. + With arg, turn Outline minor mode on if arg is positive, off otherwise. + See the command `outline-mode' for more information on this mode." t nil) + ;;;*** ;;;### (autoloads (picture-mode) "picture" "picture.el" (11229 44176)) *************** buffer." t nil) *** 4035,4041 **** ;;;*** ! ;;;### (autoloads (rmail-input rmail-mode rmail) "rmail" "rmail.el" (11244 23285)) ;;; Generated autoloads from rmail.el (defvar rmail-dont-reply-to-names nil "\ --- 4071,4077 ---- ;;;*** ! ;;;### (autoloads (rmail-input rmail-mode rmail) "rmail" "rmail.el" (11282 59005)) ;;; Generated autoloads from rmail.el (defvar rmail-dont-reply-to-names nil "\ *************** Display current buffer in rot 13 in anot *** 4131,4136 **** --- 4167,4197 ---- ;;;*** + ;;;### (autoloads (sc-cite-original) "sc" "sc.el" (11283 35088)) + ;;; Generated autoloads from sc.el + + (autoload (quote sc-cite-original) "sc" "\ + Hook version of sc-cite. + This is callable from the various mail and news readers' reply + function according to the agreed upon standard. See \\[sc-describe] + for more details. Sc-cite-original does not do any yanking of the + original message but it does require a few things: + + 1) The reply buffer is the current buffer. + + 2) The original message has been yanked and inserted into the + reply buffer. + + 3) Verbose mail headers from the original message have been + inserted into the reply buffer directly before the text of the + original message. + + 4) Point is at the beginning of the verbose headers. + + 5) Mark is at the end of the body of text to be cited." nil nil) + + ;;;*** + ;;;### (autoloads (scheme-mode) "scheme" "scheme.el" (11181 53310)) ;;; Generated autoloads from scheme.el *************** scribe-electric-parenthesis *** 4176,4182 **** ;;;*** ! ;;;### (autoloads (mail-other-frame mail-other-window mail mail-mode) "sendmail" "sendmail.el" (11259 8757)) ;;; Generated autoloads from sendmail.el (defvar mail-self-blind nil "\ --- 4237,4243 ---- ;;;*** ! ;;;### (autoloads (mail-other-frame mail-other-window mail mail-mode) "sendmail" "sendmail.el" (11281 27134)) ;;; Generated autoloads from sendmail.el (defvar mail-self-blind nil "\ *************** nil means let mailer mail back a message *** 4191,4197 **** (defvar mail-yank-ignored-headers "^via:\\|^mail-from:\\|^origin:\\|^status:\\|^remailed\\|^received:\\|^message-id:\\|^summary-line:\\|^to:\\|^subject:\\|^in-reply-to:\\|^return-path:" "\ Delete these headers from old message when it's inserted in a reply.") ! (defconst send-mail-function (quote sendmail-send-it) "\ Function to call to send the current buffer as mail. The headers are be delimited by a line which is `mail-header-separator'.") --- 4252,4258 ---- (defvar mail-yank-ignored-headers "^via:\\|^mail-from:\\|^origin:\\|^status:\\|^remailed\\|^received:\\|^message-id:\\|^summary-line:\\|^to:\\|^subject:\\|^in-reply-to:\\|^return-path:" "\ Delete these headers from old message when it's inserted in a reply.") ! (defvar send-mail-function (quote sendmail-send-it) "\ Function to call to send the current buffer as mail. The headers are be delimited by a line which is `mail-header-separator'.") *************** Prefix arg means just kill any existing *** 4284,4291 **** ;;;*** ! ;;;### (autoloads (sgml-mode) "sgml-mode" "/home/fsf/rms/e19/lisp/sgml-mode.el" (11274 32251)) ! ;;; Generated autoloads from /home/fsf/rms/e19/lisp/sgml-mode.el (autoload (quote sgml-mode) "sgml-mode" "\ Major mode for editing SGML. --- 4345,4352 ---- ;;;*** ! ;;;### (autoloads (sgml-mode) "sgml-mode" "sgml-mode.el" (11274 32251)) ! ;;; Generated autoloads from sgml-mode.el (autoload (quote sgml-mode) "sgml-mode" "\ Major mode for editing SGML. *************** Use \\[sgml-validate] to validate your d *** 4294,4303 **** ;;;*** ! ;;;### (autoloads (shell) "shell" "shell.el" (11231 58570)) ;;; Generated autoloads from shell.el ! (defconst shell-prompt-pattern "^[^#$%>]*[#$%>] *" "\ Regexp to match prompts in the inferior shell. Defaults to \"^[^#$%>]*[#$%>] *\", which works pretty well. This variable is used to initialise `comint-prompt-regexp' in the --- 4355,4364 ---- ;;;*** ! ;;;### (autoloads (shell) "shell" "shell.el" (11275 52454)) ;;; Generated autoloads from shell.el ! (defvar shell-prompt-pattern "^[^#$%>]*[#$%>] *" "\ Regexp to match prompts in the inferior shell. Defaults to \"^[^#$%>]*[#$%>] *\", which works pretty well. This variable is used to initialise `comint-prompt-regexp' in the *************** This function is suitable for execution *** 4343,4349 **** ;;;*** ! ;;;### (autoloads (reverse-region sort-columns sort-regexp-fields sort-fields sort-float-fields sort-numeric-fields sort-pages sort-paragraphs sort-lines) "sort" "sort.el" (11188 47959)) ;;; Generated autoloads from sort.el (autoload (quote sort-lines) "sort" "\ --- 4404,4410 ---- ;;;*** ! ;;;### (autoloads (reverse-region sort-columns sort-regexp-fields sort-fields sort-float-fields sort-numeric-fields sort-pages sort-paragraphs sort-lines) "sort" "sort.el" (11275 48526)) ;;; Generated autoloads from sort.el (autoload (quote sort-lines) "sort" "\ *************** Check spelling of string supplied as arg *** 4448,4454 **** ;;;*** ! ;;;### (autoloads (spook) "spook" "spook.el" (11185 16874)) ;;; Generated autoloads from spook.el (autoload (quote spook) "spook" "\ --- 4509,4515 ---- ;;;*** ! ;;;### (autoloads (spook) "spook" "spook.el" (11274 56066)) ;;; Generated autoloads from spook.el (autoload (quote spook) "spook" "\ *************** The variable `tab-width' controls the sp *** 4475,4482 **** ;;;*** ! ;;;### (autoloads (tar-mode) "tar-mode" "/home/fsf/rms/e19/lisp/tar-mode.el" (11275 52507)) ! ;;; Generated autoloads from /home/fsf/rms/e19/lisp/tar-mode.el (autoload (quote tar-mode) "tar-mode" "\ Major mode for viewing a tar file as a dired-like listing of its contents. --- 4536,4543 ---- ;;;*** ! ;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (11275 52507)) ! ;;; Generated autoloads from tar-mode.el (autoload (quote tar-mode) "tar-mode" "\ Major mode for viewing a tar file as a dired-like listing of its contents. *************** See also: variables tar-update-datestamp *** 4495,4501 **** ;;;*** ! ;;;### (autoloads (rsh telnet) "telnet" "telnet.el" (11223 20968)) ;;; Generated autoloads from telnet.el (autoload (quote telnet) "telnet" "\ --- 4556,4562 ---- ;;;*** ! ;;;### (autoloads (rsh telnet) "telnet" "telnet.el" (11283 60253)) ;;; Generated autoloads from telnet.el (autoload (quote telnet) "telnet" "\ *************** Normally input is edited in Emacs and se *** 4510,4516 **** ;;;*** ! ;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (11249 17507)) ;;; Generated autoloads from terminal.el (autoload (quote terminal-emulator) "terminal" "\ --- 4571,4577 ---- ;;;*** ! ;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (11274 60089)) ;;; Generated autoloads from terminal.el (autoload (quote terminal-emulator) "terminal" "\ *************** subshell is initiated, the value of tex- *** 4741,4747 **** ;;;*** ! ;;;### (autoloads (batch-texinfo-format texinfo-format-region texinfo-format-buffer) "texinfmt" "texinfmt.el" (11175 22256)) ;;; Generated autoloads from texinfmt.el (autoload (quote texinfo-format-buffer) "texinfmt" "\ --- 4802,4808 ---- ;;;*** ! ;;;### (autoloads (batch-texinfo-format texinfo-format-region texinfo-format-buffer) "texinfmt" "texinfmt.el" (11278 20710)) ;;; Generated autoloads from texinfmt.el (autoload (quote texinfo-format-buffer) "texinfmt" "\ *************** For example, invoke *** 4768,4774 **** ;;;*** ! ;;;### (autoloads (texinfo-mode) "texinfo" "texinfo.el" (11259 37262)) ;;; Generated autoloads from texinfo.el (autoload (quote texinfo-mode) "texinfo" "\ --- 4829,4835 ---- ;;;*** ! ;;;### (autoloads (texinfo-mode) "texinfo" "texinfo.el" (11283 53395)) ;;; Generated autoloads from texinfo.el (autoload (quote texinfo-mode) "texinfo" "\ *************** value of texinfo-mode-hook." t nil) *** 4841,4848 **** ;;;*** ! ;;;### (autoloads (display-time) "time" "/home/fsf/rms/e19/lisp/time.el" (11268 15748)) ! ;;; Generated autoloads from /home/fsf/rms/e19/lisp/time.el (defvar display-time-day-and-date nil "\ *Non-nil means \\[display-time] should display day and date as well as time.") --- 4902,4909 ---- ;;;*** ! ;;;### (autoloads (display-time) "time" "time.el" (11279 41068)) ! ;;; Generated autoloads from time.el (defvar display-time-day-and-date nil "\ *Non-nil means \\[display-time] should display day and date as well as time.") *************** After each update, `display-time-hook' i *** 4856,4862 **** ;;;*** ! ;;;### (autoloads (run-at-time) "timer" "timer.el" (11194 16467)) ;;; Generated autoloads from timer.el (autoload (quote run-at-time) "timer" "\ --- 4917,4923 ---- ;;;*** ! ;;;### (autoloads (run-at-time) "timer" "timer.el" (11274 18263)) ;;; Generated autoloads from timer.el (autoload (quote run-at-time) "timer" "\ *************** Relative times may be specified as a ser *** 4881,4886 **** --- 4942,4958 ---- ;;;*** + ;;;### (autoloads (tq-create) "tq" "tq.el" (10941 58296)) + ;;; Generated autoloads from tq.el + + (autoload (quote tq-create) "tq" "\ + Create and return a transaction queue communicating with PROCESS. + PROCESS should be a subprocess capable of sending and receiving + streams of bytes. It may be a local process, or it may be connected + to a tcp server on another machine." nil nil) + + ;;;*** + ;;;### (autoloads (trace-function-background trace-function) "trace" "trace.el" (11256 21938)) ;;; Generated autoloads from trace.el *************** the window or buffer configuration at al *** 4906,4922 **** ;;;*** - ;;;### (autoloads (tq-create) "tq" "tq.el" (10941 58296)) - ;;; Generated autoloads from tq.el - - (autoload (quote tq-create) "tq" "\ - Create and return a transaction queue communicating with PROCESS. - PROCESS should be a subprocess capable of sending and receiving - streams of bytes. It may be a local process, or it may be connected - to a tcp server on another machine." nil nil) - - ;;;*** - ;;;### (autoloads (tc-recenter tc-scroll-down tc-scroll-up tc-scroll-line tc-associated-buffer tc-merge tc-dissociate tc-split tc-associate-buffer tc-two-columns) "two-column" "two-column.el" (11223 37223)) ;;; Generated autoloads from two-column.el --- 4978,4983 ---- *************** The buffer in question is current when t *** 5108,5114 **** ;;;*** ! ;;;### (autoloads (vc-update-change-log vc-cancel-version vc-revert-buffer vc-print-log vc-retrieve-snapshot vc-create-snapshot vc-directory vc-insert-headers vc-diff vc-register vc-next-action) "vc" "vc.el" (11254 36487)) ;;; Generated autoloads from vc.el (defvar vc-checkin-hook nil "\ --- 5169,5175 ---- ;;;*** ! ;;;### (autoloads (vc-update-change-log vc-cancel-version vc-revert-buffer vc-print-log vc-retrieve-snapshot vc-create-snapshot vc-directory vc-insert-headers vc-diff vc-register vc-next-action) "vc" "vc.el" (11270 56393)) ;;; Generated autoloads from vc.el (defvar vc-checkin-hook nil "\ *************** Syntax table and abbrevs while in vi mod *** 5239,5245 **** ;;;*** ! ;;;### (autoloads (view-mode view-buffer-other-window view-buffer view-file-other-window view-file) "view" "view.el" (11194 9775)) ;;; Generated autoloads from view.el (autoload (quote view-file) "view" "\ --- 5300,5306 ---- ;;;*** ! ;;;### (autoloads (view-mode view-buffer-other-window view-buffer view-file-other-window view-file) "view" "view.el" (11277 39824)) ;;; Generated autoloads from view.el (autoload (quote view-file) "view" "\ *************** Entry to this mode calls the value of v *** 5325,5331 **** ;;;*** ! ;;;### (autoloads (vip-mode) "vip" "vip.el" (11185 17045)) ;;; Generated autoloads from vip.el (autoload (quote vip-mode) "vip" "\ --- 5386,5392 ---- ;;;*** ! ;;;### (autoloads (vip-mode) "vip" "vip.el" (11281 39324)) ;;; Generated autoloads from vip.el (autoload (quote vip-mode) "vip" "\ *************** With argument, asks for a command line." *** 5343,5349 **** ;;;*** ! ;;;### (autoloads (psychoanalyze-pinhead yow) "yow" "yow.el" (11236 36897)) ;;; Generated autoloads from yow.el (autoload (quote yow) "yow" "\ --- 5404,5410 ---- ;;;*** ! ;;;### (autoloads (psychoanalyze-pinhead yow) "yow" "yow.el" (11274 55989)) ;;; Generated autoloads from yow.el (autoload (quote yow) "yow" "\ diff -cprP -x *.elc emacs-19.12/lisp/menu-bar.el emacs-19.13/lisp/menu-bar.el *** emacs-19.12/lisp/menu-bar.el Tue Jun 8 05:33:04 1993 --- emacs-19.13/lisp/menu-bar.el Sat Jun 5 15:12:59 1993 *************** *** 24,34 **** ;;; Code: (define-key global-map [menu-bar] (make-sparse-keymap "menu-bar")) ! (setq menu-bar-help-menu (make-sparse-keymap "Help")) (define-key global-map [menu-bar help] (cons "Help" menu-bar-help-menu)) ! (setq menu-bar-edit-menu (make-sparse-keymap "Edit")) (define-key global-map [menu-bar edit] (cons "Edit" menu-bar-edit-menu)) ! (setq menu-bar-file-menu (make-sparse-keymap "File")) (define-key global-map [menu-bar file] (cons "File" menu-bar-file-menu)) (define-key menu-bar-file-menu [exit-emacs] --- 24,34 ---- ;;; Code: (define-key global-map [menu-bar] (make-sparse-keymap "menu-bar")) ! (defvar menu-bar-help-menu (make-sparse-keymap "Help")) (define-key global-map [menu-bar help] (cons "Help" menu-bar-help-menu)) ! (defvar menu-bar-edit-menu (make-sparse-keymap "Edit")) (define-key global-map [menu-bar edit] (cons "Edit" menu-bar-edit-menu)) ! (defvar menu-bar-file-menu (make-sparse-keymap "File")) (define-key global-map [menu-bar file] (cons "File" menu-bar-file-menu)) (define-key menu-bar-file-menu [exit-emacs] *************** turn off menu bars; otherwise, turn on m *** 227,233 **** (setq frames (cdr frames))))) ;; Make frames created from now on have a menu bar. ! (menu-bar-mode t) (provide 'menu-bar) --- 227,234 ---- (setq frames (cdr frames))))) ;; Make frames created from now on have a menu bar. ! (if window-system ! (menu-bar-mode t)) (provide 'menu-bar) diff -cprP -x *.elc emacs-19.12/lisp/mh-e.el emacs-19.13/lisp/mh-e.el *** emacs-19.12/lisp/mh-e.el Tue Jun 8 05:33:08 1993 --- emacs-19.13/lisp/mh-e.el Fri Jun 4 22:51:26 1993 *************** *** 48,54 **** ;;; Modified by James Larus, BBN, July 1984 and UCB, 1984 & 1985. ;;; Rewritten for GNU Emacs, James Larus 1985. larus@ginger.berkeley.edu ;;; Modified by Stephen Gildea 1988. gildea@bbn.com ! (defconst mh-e-RCS-id "$Header: /home/fsf/rms/e19/lisp/RCS/mh-e.el,v 1.10 1993/05/30 22:56:31 rms Exp $") ;;; Code: --- 48,54 ---- ;;; Modified by James Larus, BBN, July 1984 and UCB, 1984 & 1985. ;;; Rewritten for GNU Emacs, James Larus 1985. larus@ginger.berkeley.edu ;;; Modified by Stephen Gildea 1988. gildea@bbn.com ! (defconst mh-e-RCS-id "$Header: /home/fsf/rms/e19/lisp/RCS/mh-e.el,v 1.11 1993/06/05 02:51:21 rms Exp $") ;;; Code: *************** yanked message will be deleted." *** 2155,2161 **** (if mh-delete-yanked-msg-window (delete-windows-on mh-show-buffer)) (set-buffer mh-show-buffer) ; Find displayed message ! (let ((mh-ins-str (cond ((mark) (buffer-substring (region-beginning) (region-end))) ((eq 'body mh-yank-from-start-of-msg) --- 2155,2161 ---- (if mh-delete-yanked-msg-window (delete-windows-on mh-show-buffer)) (set-buffer mh-show-buffer) ; Find displayed message ! (let ((mh-ins-str (cond ((mark t) (buffer-substring (region-beginning) (region-end))) ((eq 'body mh-yank-from-start-of-msg) diff -cprP -x *.elc emacs-19.12/lisp/mouse.el emacs-19.13/lisp/mouse.el *** emacs-19.12/lisp/mouse.el Tue Jun 8 05:33:17 1993 --- emacs-19.13/lisp/mouse.el Tue Jun 8 01:16:42 1993 *************** *** 128,163 **** ;; Turn off the old mark when we set up an empty region. (setq deactivate-mark t))) ! ;;;Nice hack, but too slow. ! ;;;(defun mouse-drag-region-1 (click) ! ;;; "Set the region to the text that the mouse is dragged over. ! ;;;This must be bound to a button-down mouse event." ! ;;; (interactive "e") ! ;;; (let (newmark) ! ;;; (let ((posn (event-start click)) ! ;;; done event omark (mark-active t)) ! ;;; (select-window (posn-window posn)) ! ;;; (setq omark (and mark-active (mark))) ! ;;; (if (numberp (posn-point posn)) ! ;;; (goto-char (posn-point posn))) ! ;;; ;; Set mark temporarily, so highlighting does what we want. ! ;;; (set-marker (mark-marker) (point)) ! ;;; (track-mouse ! ;;; (while (not done) ! ;;; (setq event (read-event)) ! ;;; (if (eq (car-safe event) 'mouse-movement) ! ;;; (goto-char (posn-point (event-start event))) ! ;;; ;; Exit when we get the drag event; ignore that event. ! ;;; (setq done t)))) ! ;;; (if (/= (mark) (point)) ! ;;; (setq newmark (mark))) ! ;;; ;; Restore previous mark status. ! ;;; (if omark (set-marker (mark-marker) omark))) ! ;;; ;; Now, if we dragged, set the mark at the proper place. ! ;;; (if newmark ! ;;; (push-mark newmark t) ! ;;; ;; Turn off the old mark when we set up an empty region. ! ;;; (setq deactivate-mark t)))) (defun mouse-set-mark (click) "Set mark at the position clicked on with the mouse. --- 128,163 ---- ;; Turn off the old mark when we set up an empty region. (setq deactivate-mark t))) ! ;;;Nice hack, but too slow, so not normally in use. ! (defun mouse-drag-region-1 (click) ! "Set the region to the text that the mouse is dragged over. ! This must be bound to a button-down mouse event." ! (interactive "e") ! (let (newmark) ! (let ((posn (event-start click)) ! done event omark (mark-active t)) ! (select-window (posn-window posn)) ! (setq omark (and mark-active (mark))) ! (if (numberp (posn-point posn)) ! (goto-char (posn-point posn))) ! ;; Set mark temporarily, so highlighting does what we want. ! (set-marker (mark-marker) (point)) ! (track-mouse ! (while (not done) ! (setq event (read-event)) ! (if (eq (car-safe event) 'mouse-movement) ! (goto-char (posn-point (event-start event))) ! ;; Exit when we get the drag event; ignore that event. ! (setq done t)))) ! (if (/= (mark) (point)) ! (setq newmark (mark))) ! ;; Restore previous mark status. ! (if omark (set-marker (mark-marker) omark))) ! ;; Now, if we dragged, set the mark at the proper place. ! (if newmark ! (push-mark newmark t t) ! ;; Turn off the old mark when we set up an empty region. ! (setq deactivate-mark t)))) (defun mouse-set-mark (click) "Set mark at the position clicked on with the mouse. diff -cprP -x *.elc emacs-19.12/lisp/outline.el emacs-19.13/lisp/outline.el *** emacs-19.12/lisp/outline.el Tue Jun 8 05:33:25 1993 --- emacs-19.13/lisp/outline.el Sun Jun 6 23:47:00 1993 *************** *** 136,141 **** --- 136,142 ---- (cons (cons 'outline-minor-mode outline-minor-mode-map) minor-mode-map-alist))) + ;;;###autoload (defun outline-minor-mode (&optional arg) "Toggle Outline minor mode. With arg, turn Outline minor mode on if arg is positive, off otherwise. diff -cprP -x *.elc emacs-19.12/lisp/rmail.el emacs-19.13/lisp/rmail.el *** emacs-19.12/lisp/rmail.el Tue Jun 8 05:33:47 1993 --- emacs-19.13/lisp/rmail.el Mon Jun 7 02:55:57 1993 *************** *** 170,180 **** (defmacro rmail-select-summary (&rest body) (` (progn (if (rmail-summary-displayed) (let ((window (selected-window))) ! (unwind-protect ! (progn ! (pop-to-buffer rmail-summary-buffer) ! (,@ body)) ! (select-window window))) (save-excursion (set-buffer rmail-summary-buffer) (progn (,@ body)))) --- 170,181 ---- (defmacro rmail-select-summary (&rest body) (` (progn (if (rmail-summary-displayed) (let ((window (selected-window))) ! (save-excursion ! (unwind-protect ! (progn ! (pop-to-buffer rmail-summary-buffer) ! (,@ body)) ! (select-window window)))) (save-excursion (set-buffer rmail-summary-buffer) (progn (,@ body)))) *************** that file, but does not copy any new mai *** 221,234 **** (or (eq major-mode 'rmail-mode) (rmail-mode-2)) (rmail-mode-2) - ;; Provide default set of inboxes for primary mail file ~/RMAIL. - (and (null rmail-inbox-list) - (null file-name-arg) - (setq rmail-inbox-list - (or rmail-primary-inbox-list - (list (or (getenv "MAIL") - (concat rmail-spool-directory - (user-original-login-name))))))) ;; Convert all or part to Babyl file if possible. (rmail-convert-file) (goto-char (point-max)) --- 222,227 ---- *************** Instead, these commands are available: *** 449,454 **** --- 442,455 ---- (make-local-variable 'rmail-last-file) (make-local-variable 'rmail-inbox-list) (setq rmail-inbox-list (rmail-parse-file-inboxes)) + ;; Provide default set of inboxes for primary mail file ~/RMAIL. + (and (null rmail-inbox-list) + (equal buffer-file-name (expand-file-name rmail-file-name)) + (setq rmail-inbox-list + (or rmail-primary-inbox-list + (list (or (getenv "MAIL") + (concat rmail-spool-directory + (user-original-login-name))))))) (make-local-variable 'rmail-keywords) ;; this gets generated as needed (setq rmail-keywords nil)) *************** resent message. *** 1697,1702 **** --- 1698,1705 ---- Optional ALIAS-FILE is alternate aliases file to be used by sendmail, typically for purposes of moderating a list." (interactive "sResend to: ") + (require 'sendmail) + (require 'mailalias) (if (not from) (setq from (user-login-name))) (let ((tembuf (generate-new-buffer " sendmail temp")) (mail-header-separator "") diff -cprP -x *.elc emacs-19.12/lisp/rmailsum.el emacs-19.13/lisp/rmailsum.el *** emacs-19.12/lisp/rmailsum.el Tue Jun 8 05:33:51 1993 --- emacs-19.13/lisp/rmailsum.el Sat Jun 5 17:18:05 1993 *************** *** 109,114 **** --- 109,130 ---- (goto-char (point-min)) (if whole-message (re-search-forward subject nil t) (string-match subject (or (mail-fetch-field "Subject") "")) ))) + + (defun rmail-summary-by-senders (senders) + "Display a summary of all messages with the given SENDERS. + SENDERS is a string of names separated by commas." + (interactive "sSenders to summarize by: ") + (rmail-new-summary + (concat "senders " senders) + 'rmail-message-senders-p + (mail-comma-list-regexp senders))) + + (defun rmail-message-senders-p (msg senders) + (save-restriction + (goto-char (rmail-msgbeg msg)) + (search-forward "\n*** EOOH ***\n") + (narrow-to-region (point) (progn (search-forward "\n\n") (point))) + (string-match senders (or (mail-fetch-field "From") "")))) ;; General making of a summary buffer. *************** nil for FUNCTION means all messages." *** 170,176 **** (setq buffer-read-only t) (rmail-summary-mode) (make-local-variable 'minor-mode-alist) ! (setq minor-mode-alist (list ": " description)) (setq rmail-buffer rbuf rmail-summary-redo redo-form rmail-total-messages total)))) --- 186,192 ---- (setq buffer-read-only t) (rmail-summary-mode) (make-local-variable 'minor-mode-alist) ! (setq minor-mode-alist (list '(t (concat ": " description)))) (setq rmail-buffer rbuf rmail-summary-redo redo-form rmail-total-messages total)))) *************** With optional prefix argument NUMBER, mo *** 346,359 **** messages, or backward if NUMBER is negative." (interactive "p") (forward-line 0) ! (and (> number 0) (forward-line 1)) (let ((count (if (< number 0) (- number) number)) (search (if (> number 0) 're-search-forward 're-search-backward)) (non-del-msg-found nil)) (while (and (> count 0) (setq non-del-msg-found ! (or (funcall search "^.....[^D]" nil t) non-del-msg-found))) (setq count (1- count)))) (display-buffer rmail-buffer)) (defun rmail-summary-previous-msg (&optional number) --- 362,376 ---- messages, or backward if NUMBER is negative." (interactive "p") (forward-line 0) ! (and (> number 0) (end-of-line)) (let ((count (if (< number 0) (- number) number)) (search (if (> number 0) 're-search-forward 're-search-backward)) (non-del-msg-found nil)) (while (and (> count 0) (setq non-del-msg-found ! (or (funcall search "^....[^D]" nil t) non-del-msg-found))) (setq count (1- count)))) + (beginning-of-line) (display-buffer rmail-buffer)) (defun rmail-summary-previous-msg (&optional number) *************** Instead, all of the Rmail Mode commands *** 506,512 **** (skip-chars-forward "0-9") (setq msg-num (string-to-int (buffer-substring beg (point)))) (or (eq rmail-current-message msg-num) ! (progn (setq rmail-current-message msg-num) (if (= (following-char) ?-) (progn --- 523,529 ---- (skip-chars-forward "0-9") (setq msg-num (string-to-int (buffer-substring beg (point)))) (or (eq rmail-current-message msg-num) ! (let (go-where window (owin (selected-window))) (setq rmail-current-message msg-num) (if (= (following-char) ?-) (progn *************** Instead, all of the Rmail Mode commands *** 513,521 **** (delete-char 1) (insert " "))) (setq window (display-buffer rmail-buffer)) ! (save-window-excursion ! (select-window window) ! (rmail-show-message msg-num))))))))) (defvar rmail-summary-mode-map nil) --- 530,542 ---- (delete-char 1) (insert " "))) (setq window (display-buffer rmail-buffer)) ! ;; Using save-window-excursion caused the new value ! ;; of point to get lost. ! (unwind-protect ! (progn ! (select-window window) ! (rmail-show-message msg-num)) ! (select-window owin))))))))) (defvar rmail-summary-mode-map nil) *************** Instead, all of the Rmail Mode commands *** 657,680 **** (interactive) (save-excursion (set-buffer rmail-buffer) ! (rmail-only-expunge) ! (save-buffer)) ! (rmail-update-summary)) (defun rmail-summary-get-new-mail () "Get new mail and recompute summary headers." (interactive) ! (save-excursion ! (set-buffer rmail-buffer) ! (rmail-get-new-mail)) ! (rmail-update-summary)) (defun rmail-summary-input (filename) "Run Rmail on file FILENAME." (interactive "FRun rmail on RMAIL file: ") ! (save-excursion ! (set-buffer rmail-buffer) ! (rmail filename))) (defun rmail-summary-first-message () "Show first message in Rmail file from summary buffer." --- 678,707 ---- (interactive) (save-excursion (set-buffer rmail-buffer) ! (rmail-only-expunge)) ! (rmail-update-summary) ! (save-excursion ! (set-buffer rmail-buffer) ! (save-buffer))) (defun rmail-summary-get-new-mail () "Get new mail and recompute summary headers." (interactive) ! (let (msg) ! (save-excursion ! (set-buffer rmail-buffer) ! (rmail-get-new-mail) ! ;; Get the proper new message number. ! (setq msg rmail-current-message)) ! ;; Make sure that message is displayed. ! (rmail-summary-goto-msg msg))) (defun rmail-summary-input (filename) "Run Rmail on file FILENAME." (interactive "FRun rmail on RMAIL file: ") ! ;; We switch windows here, then display the other Rmail file there. ! (pop-to-buffer rmail-buffer) ! (rmail filename)) (defun rmail-summary-first-message () "Show first message in Rmail file from summary buffer." *************** Interactively, empty argument means use *** 751,757 **** (defun rmail-summary-add-label (label) "Add LABEL to labels associated with current Rmail message. Completion is performed over known labels when reading." ! (interactive (list (rmail-read-label "Add label"))) (save-excursion (set-buffer rmail-buffer) (rmail-add-label label))) --- 778,786 ---- (defun rmail-summary-add-label (label) "Add LABEL to labels associated with current Rmail message. Completion is performed over known labels when reading." ! (interactive (list (save-excursion ! (set-buffer rmail-buffer) ! (rmail-read-label "Add label")))) (save-excursion (set-buffer rmail-buffer) (rmail-add-label label))) *************** Completion is performed over known label *** 759,765 **** (defun rmail-summary-kill-label (label) "Remove LABEL from labels associated with current Rmail message. Completion is performed over known labels when reading." ! (interactive (list (rmail-read-label "Add label"))) (save-excursion (set-buffer rmail-buffer) (rmail-set-label label nil))) --- 788,796 ---- (defun rmail-summary-kill-label (label) "Remove LABEL from labels associated with current Rmail message. Completion is performed over known labels when reading." ! (interactive (list (save-excursion ! (set-buffer rmail-buffer) ! (rmail-read-label "Kill label")))) (save-excursion (set-buffer rmail-buffer) (rmail-set-label label nil))) diff -cprP -x *.elc emacs-19.12/lisp/sc.el emacs-19.13/lisp/sc.el *** emacs-19.12/lisp/sc.el Tue Jun 8 05:34:24 1993 --- emacs-19.13/lisp/sc.el Mon Jun 7 14:29:36 1993 *************** *** 1106,1116 **** generic-citation)) (t nil))))) ;; heuristic #6 ! (defun sc-consistant-cite-p (prefix) ! "Check current paragraph for consistant citation. Scans to paragraph delineated by (forward|backward)-paragraph to see if all lines start with PREFIX. Returns t if entire paragraph is ! consistantly cited, nil otherwise." (save-excursion (let ((end (progn (forward-paragraph) (beginning-of-line) --- 1106,1116 ---- generic-citation)) (t nil))))) ;; heuristic #6 ! (defun sc-consistent-cite-p (prefix) ! "Check current paragraph for consistent citation. Scans to paragraph delineated by (forward|backward)-paragraph to see if all lines start with PREFIX. Returns t if entire paragraph is ! consistently cited, nil otherwise." (save-excursion (let ((end (progn (forward-paragraph) (beginning-of-line) *************** Restrict scan to current paragraph." *** 1173,1179 **** Fill the paragraph containing or following point. Use sc-guess-fill-prefix to find the fill-prefix for the paragraph. ! If the paragraph is inconsistantly cited (mixed fill-prefix), then the user is queried to restrict the the fill to only those lines around point which begin with the fill prefix. --- 1173,1179 ---- Fill the paragraph containing or following point. Use sc-guess-fill-prefix to find the fill-prefix for the paragraph. ! If the paragraph is inconsistently cited (mixed fill-prefix), then the user is queried to restrict the the fill to only those lines around point which begin with the fill prefix. *************** paragraph. sc-fill-arg is set by sc-fil *** 1186,1192 **** (cond ((not fill-prefix) (fill-paragraph sc-fill-arg)) ! ((sc-consistant-cite-p fill-prefix) (fill-paragraph sc-fill-arg)) ((y-or-n-p "Inconsistent citation found. Restrict? ") (message "") --- 1186,1192 ---- (cond ((not fill-prefix) (fill-paragraph sc-fill-arg)) ! ((sc-consistent-cite-p fill-prefix) (fill-paragraph sc-fill-arg)) ((y-or-n-p "Inconsistent citation found. Restrict? ") (message "") diff -cprP -x *.elc emacs-19.12/lisp/scroll-bar.el emacs-19.13/lisp/scroll-bar.el *** emacs-19.12/lisp/scroll-bar.el Tue Jun 8 05:34:27 1993 --- emacs-19.13/lisp/scroll-bar.el Sat Jun 5 16:58:02 1993 *************** *** 103,109 **** (portion-whole (nth 2 start-position))) (save-excursion (set-buffer (window-buffer window)) ! (goto-char (scroll-bar-scale portion-whole (buffer-size))) (beginning-of-line) (set-window-start window (point))))) --- 103,112 ---- (portion-whole (nth 2 start-position))) (save-excursion (set-buffer (window-buffer window)) ! ;; Calculate position relative to the accessible part of the buffer. ! (goto-char (+ (point-min) ! (scroll-bar-scale portion-whole ! (- (point-max) (point-min))))) (beginning-of-line) (set-window-start window (point))))) diff -cprP -x *.elc emacs-19.12/lisp/sendmail.el emacs-19.13/lisp/sendmail.el *** emacs-19.12/lisp/sendmail.el Tue Jun 8 05:34:29 1993 --- emacs-19.13/lisp/sendmail.el Sat Jun 5 23:52:30 1993 *************** *** 414,420 **** (if buffer ;; File is present in a buffer => append to that buffer. (let ((curbuf (current-buffer)) ! (beg (point-min)) (end (point-max))) (save-excursion (set-buffer buffer) ;; Keep the end of the accessible portion at the same place --- 414,422 ---- (if buffer ;; File is present in a buffer => append to that buffer. (let ((curbuf (current-buffer)) ! (beg (point-min)) (end (point-max)) ! (beg2 (save-excursion (goto-char (point-min)) ! (forward-line 2) (point)))) (save-excursion (set-buffer buffer) ;; Keep the end of the accessible portion at the same place *************** *** 422,444 **** (let ((max (if (/= (1+ (buffer-size)) (point-max)) (point-max)))) (unwind-protect ! (progn ! (narrow-to-region (point-min) (1+ (buffer-size))) ! (goto-char (point-max)) ! (if (eq major-mode 'rmail-mode) ! ;; Append as a message to an RMAIL file ! (let ((buffer-read-only nil)) ! ;; This forces RMAIL's message counters to be ! ;; recomputed when the next RMAIL operation is ! ;; done on the buffer. ! ;; See rmail-maybe-set-message-counters. ! (setq rmail-total-messages nil) (insert "\C-l\n0, unseen,,\n*** EOOH ***\n" "From: " (user-login-name) "\n" "Date: " (current-time-string) "\n") ! (insert-buffer-substring curbuf beg end) (insert "\n\C-_") ! (rmail-set-message-counters)) (insert-buffer-substring curbuf beg end))) (if max (narrow-to-region (point-min) max)))))) ;; Else append to the file directly. --- 424,456 ---- (let ((max (if (/= (1+ (buffer-size)) (point-max)) (point-max)))) (unwind-protect ! ;; Code below lifted from rmailout.el ! ;; function rmail-output-to-rmail-file: ! (let ((buffer-read-only nil) ! (msg (and (boundp 'rmail-current-message) ! rmail-current-message))) ! ;; If MSG is non-nil, buffer is in RMAIL mode. ! (if msg ! (progn ! (rmail-maybe-set-message-counters) ! (widen) ! (narrow-to-region (point-max) (point-max)) (insert "\C-l\n0, unseen,,\n*** EOOH ***\n" "From: " (user-login-name) "\n" "Date: " (current-time-string) "\n") ! (insert-buffer-substring curbuf beg2 end) (insert "\n\C-_") ! (goto-char (point-min)) ! (widen) ! (search-backward "\n\^_") ! (narrow-to-region (point) (point-max)) ! (rmail-count-new-messages t) ! (rmail-show-message msg) ! (setq max nil)) ! ;; Output file not in rmail mode ! ;; => just insert at the end. ! (narrow-to-region (point-min) (1+ (buffer-size))) ! (goto-char (point-max)) (insert-buffer-substring curbuf beg end))) (if max (narrow-to-region (point-min) max)))))) ;; Else append to the file directly. diff -cprP -x *.elc emacs-19.12/lisp/simple.el emacs-19.13/lisp/simple.el *** emacs-19.12/lisp/simple.el Tue Jun 8 05:34:34 1993 --- emacs-19.13/lisp/simple.el Fri Jun 4 22:47:49 1993 *************** *** 1064,1070 **** (defun kill-ring-save (beg end) "Save the region as if killed, but don't kill it. ! This command is similar to copy-region-as-kill, except that it gives visual feedback indicating the extent of the region being copied. If `interprogram-cut-function' is non-nil, also save the text for a window system cut and paste." --- 1064,1070 ---- (defun kill-ring-save (beg end) "Save the region as if killed, but don't kill it. ! This command is similar to `copy-region-as-kill', except that it gives visual feedback indicating the extent of the region being copied. If `interprogram-cut-function' is non-nil, also save the text for a window system cut and paste." *************** START and END specify the portion of the *** 1230,1238 **** (insert-buffer-substring oldbuf start end))))) (defun mark (&optional force) ! "Return this buffer's mark value as integer, or nil if no active mark now. If optional argument FORCE is non-nil, access the mark value ! even if the mark is not currently active. If you are using this in an editing command, you are most likely making a mistake; see the documentation of `set-mark'." --- 1230,1239 ---- (insert-buffer-substring oldbuf start end))))) (defun mark (&optional force) ! "Return this buffer's mark value as integer; error if mark inactive. If optional argument FORCE is non-nil, access the mark value ! even if the mark is not currently active, and return nil ! if there is no mark at all. If you are using this in an editing command, you are most likely making a mistake; see the documentation of `set-mark'." Only in emacs-19.12/lisp: sun-keys.el diff -cprP -x *.elc emacs-19.12/lisp/telnet.el emacs-19.13/lisp/telnet.el *** emacs-19.12/lisp/telnet.el Tue Jun 8 05:34:50 1993 --- emacs-19.13/lisp/telnet.el Mon Jun 7 21:29:01 1993 *************** *** 132,137 **** --- 132,143 ---- (set-process-filter proc 'telnet-filter)) (t (setq telnet-count (1+ telnet-count))))))) + ;; Identical to comint-simple-send, except that it sends telnet-new-line + ;; instead of "\n". + (defun telnet-simple-send (proc string) + (comint-send-string proc string) + (comint-send-string proc telnet-new-line)) + (defun telnet-filter (proc string) (let ((at-end (and (eq (process-buffer proc) (current-buffer)) *************** Normally input is edited in Emacs and se *** 178,183 **** --- 184,190 ---- (erase-buffer) (send-string name (concat "open " arg "\n")) (telnet-mode) + (setq comint-input-sender 'telnet-simple-send) (setq telnet-count telnet-initial-count))) (defun telnet-mode () diff -cprP -x *.elc emacs-19.12/lisp/term/ChangeLog emacs-19.13/lisp/term/ChangeLog *** emacs-19.12/lisp/term/ChangeLog Tue Jun 8 05:29:41 1993 --- emacs-19.13/lisp/term/ChangeLog Tue Jun 8 03:28:15 1993 *************** *** 1,3 **** --- 1,12 ---- + Sun Jun 6 18:29:36 1993 Paul Eggert (eggert@twinsun.com) + + * sun-mouse.el (mouse-union-first-preferred): Renamed from + mouse-union-first-prefered. + + Sat Jun 5 04:39:08 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * x-win.el (x-selection-timeout): Set it, using x-get-resource. + Mon May 31 20:29:00 1993 Richard Stallman (rms@wookumz.gnu.ai.mit.edu) * x-win.el (x-invocation-args): Add defvar. *************** Mon Mar 22 17:35:29 1993 Richard Stallm *** 90,104 **** * x-win.el (x-win-suspend-error): suspend-hook renamed from suspend-hooks. - Fri Mar 19 21:21:39 1993 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) - - * README: Info added on the terminal-package-finding algorithm. - Thu Mar 18 03:38:31 1993 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) - * README: revised per RMS's suggestions. There's more work - to be done on this yet. - * wyse50.el: (function-key-map) Nuke code no longer bound to keys. * tvi970.el: (function-key-map) --- 99,106 ---- *************** Sun Mar 7 04:22:37 1993 Richard Stallm *** 155,379 **** Tue Mar 2 07:35:52 1993 Jim Blandy (jimb@mole.gnu.ai.mit.edu) ! * x-win.el: ! * term/x-win.el (x-switch-definitons): Use the proper names for ! the scroll bar parameters. ! ! Use the term `scroll bar', instead of `scrollbar'. ! * term/x-win.el, frame.el, mouse.el: Terminology changed. ! * scrollbar.el: Renamed to scroll-bar.el. ! * x-win.el: * term/x-win.el: Require `scroll-bar', not `scrollbar'. Thu Feb 25 00:38:55 1993 Jim Blandy (jimb@mole.gnu.ai.mit.edu) ! * x-win.el: ! * term/x-win.el (scroll-bar-mode, scroll-bar-mode): Move these ! functions to scrolbar.el. ! * scrollbar.el (scroll-bar-mode, scroll-bar-mode): Here they are. ! Make scroll-bar-mode set the {vertical,horizontal}-scrollbars ! parameters in default-frame-alist, and modify all extant screens ! using the correct parameter names. Tue Jan 26 01:26:58 1993 Jim Blandy (jimb@mole.gnu.ai.mit.edu) ! * x-win.el: x-selection-value has been renamed to x-selection. ! x-own-selection has been renamed to x-set-selection, and the order ! of its arguments has been reversed, for consistency with other ! lisp functions like put and aset. ! * term/x-win.el (x-select-text): Adjusted. ! (x-cut-buffer-or-selection-value): Check the primary selection, ! using x-selection, instead of checking the cut buffer again. ! ! * term/x-win.el: Doc fix. Thu Jan 14 14:52:32 1993 Jim Blandy (jimb@mole.gnu.ai.mit.edu) ! * x-win.el: * scrollbar.el: New file. ! * term/x-win.el: Require 'scrollbar. Thu Nov 5 05:00:28 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) * x-win.el: (command-switch-alist, x-switch-definitions): -ib was used for two things. Use -itype for icon type. - - Thu Nov 5 04:28:10 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Tue Sep 29 17:43:45 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Wed Sep 16 00:08:26 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Sat Sep 12 01:20:58 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Wed Aug 12 12:54:18 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Sat Jul 25 00:33:38 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Wed Jul 15 03:24:58 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el, wyse50.el, vt200.el, vt100.el: *** empty log message *** - - Wed Jun 24 05:07:15 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Wed Jun 10 02:25:47 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Tue May 12 05:26:53 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Tue Feb 4 02:27:43 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * tvi970.el: *** empty log message *** - - * tvi970.el: Initial revision - - Thu Jan 16 22:42:10 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el, wyse50.el: *** empty log message *** - - Wed Jan 15 21:36:18 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * sun.el, vt100.el, news.el: *** empty log message *** - - Tue Jan 14 01:46:33 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Mon Jan 13 06:37:58 1992 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * bobcat.el: *** empty log message *** - - * bobcat.el: Initial revision - - * apollo.el: *** empty log message *** - - * apollo.el: Initial revision - - Fri Dec 20 08:26:25 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el, sun.el: *** empty log message *** - - * sun.el: Initial revision - - * vt100.el: *** empty log message *** - - * vt100.el: Initial revision - - * news.el: *** empty log message *** - - Fri Aug 16 04:13:50 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Tue Aug 13 08:41:57 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Mon Aug 12 12:12:28 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Sun Aug 11 01:03:47 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Fri Aug 9 00:38:03 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Tue Aug 6 03:23:04 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Mon Aug 5 22:46:55 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Mon Jul 15 22:33:41 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Thu Jul 11 22:55:55 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Fri Jun 28 17:24:57 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Wed Jun 26 16:26:52 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Thu May 23 00:42:33 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Wed May 22 20:01:19 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Thu May 16 23:42:18 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Wed Feb 20 12:14:49 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Wed Jan 30 01:10:20 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * wyse50.el: *** empty log message *** - - Sat Jan 26 05:11:01 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Fri Jan 25 22:33:45 1991 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * wyse50.el: *** empty log message *** - - * wyse50.el: Initial revision - - Fri Sep 14 19:07:14 1990 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * vt200.el: *** empty log message *** - - * vt200.el: Initial revision - - Thu Aug 16 17:48:19 1990 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Sat Aug 11 19:50:23 1990 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Sun May 13 17:16:36 1990 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: *** empty log message *** - - Thu Mar 22 20:46:04 1990 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * x-win.el: Initial revision - - Wed Jul 19 15:43:15 1989 Jim Blandy (jimb@mole.gnu.ai.mit.edu) - - * news.el: Initial revision --- 157,199 ---- Tue Mar 2 07:35:52 1993 Jim Blandy (jimb@mole.gnu.ai.mit.edu) ! * term/x-win.el (x-switch-definitions): Use the proper names for ! the scroll bar parameters. ! Use the term `scroll bar', instead of `scrollbar'. ! * term/x-win.el, frame.el, mouse.el: Terminology changed. ! * scrollbar.el: Renamed to scroll-bar.el. + * term/x-win.el: Require `scroll-bar', not `scrollbar'. + Thu Feb 25 00:38:55 1993 Jim Blandy (jimb@mole.gnu.ai.mit.edu) ! * term/x-win.el (scroll-bar-mode, scroll-bar-mode): Move these ! functions to scrolbar.el. ! * scrollbar.el (scroll-bar-mode, scroll-bar-mode): Here they are. ! Make scroll-bar-mode set the {vertical,horizontal}-scrollbars ! parameters in default-frame-alist, and modify all extant screens ! using the correct parameter names. Tue Jan 26 01:26:58 1993 Jim Blandy (jimb@mole.gnu.ai.mit.edu) ! * x-win.el: x-selection-value has been renamed to x-selection. ! x-own-selection has been renamed to x-set-selection, and the order ! of its arguments has been reversed, for consistency with other ! lisp functions like put and aset. ! * term/x-win.el (x-select-text): Adjusted. ! (x-cut-buffer-or-selection-value): Check the primary selection, ! using x-selection, instead of checking the cut buffer again. ! ! * term/x-win.el: Doc fix. Thu Jan 14 14:52:32 1993 Jim Blandy (jimb@mole.gnu.ai.mit.edu) ! * scrollbar.el: New file. ! * term/x-win.el: Require 'scrollbar. Thu Nov 5 05:00:28 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) * x-win.el: (command-switch-alist, x-switch-definitions): -ib was used for two things. Use -itype for icon type. diff -cprP -x *.elc emacs-19.12/lisp/term/sun-mouse.el emacs-19.13/lisp/term/sun-mouse.el *** emacs-19.12/lisp/term/sun-mouse.el Tue Jun 8 05:29:28 1993 --- emacs-19.13/lisp/term/sun-mouse.el Mon Jun 7 21:11:26 1993 *************** *** 462,468 **** (setq l (cdr l))) result)) ! (defun mouse-union-first-prefered (l1 l2) "Return the union of lists of mouse (code . form) pairs L1 and L2, based on the code's, with preference going to elements in L1." (mouse-union l2 (mouse-union l1 nil))) --- 462,468 ---- (setq l (cdr l))) result)) ! (defun mouse-union-first-preferred (l1 l2) "Return the union of lists of mouse (code . form) pairs L1 and L2, based on the code's, with preference going to elements in L1." (mouse-union l2 (mouse-union l1 nil))) *************** based on the code's, with preference goi *** 471,477 **** "Return a list of (code . function) pairs, where each code is currently set in the REGION." (let ((mask (mouse-region-to-code region))) ! (mouse-union-first-prefered (mouse-mask-lookup mask (cdr current-local-mousemap)) (mouse-mask-lookup mask (cdr current-global-mousemap)) ))) --- 471,477 ---- "Return a list of (code . function) pairs, where each code is currently set in the REGION." (let ((mask (mouse-region-to-code region))) ! (mouse-union-first-preferred (mouse-mask-lookup mask (cdr current-local-mousemap)) (mouse-mask-lookup mask (cdr current-global-mousemap)) ))) diff -cprP -x *.elc emacs-19.12/lisp/term/x-win.el emacs-19.13/lisp/term/x-win.el *** emacs-19.12/lisp/term/x-win.el Tue Jun 8 05:29:35 1993 --- emacs-19.13/lisp/term/x-win.el Sat Jun 5 04:39:06 1993 *************** *** 529,534 **** --- 529,541 ---- (setq initial-frame-alist (append initial-frame-alist (x-parse-geometry res-geometry))))) + ;; Set x-selection-timeout, measured in milliseconds. + (let ((res-selection-timeout + (x-get-resource "selectionTimeout" "SelectionTimeout"))) + (setq x-selection-timeout 5000) + (if res-selection-timeout + (setq x-selection-timeout (string-to-number res-selection-timeout)))) + (defun x-win-suspend-error () (error "Suspending an emacs running under X makes no sense")) (add-hook 'suspend-hook 'x-win-suspend-error) diff -cprP -x *.elc emacs-19.12/lisp/texinfmt.el emacs-19.13/lisp/texinfmt.el *** emacs-19.12/lisp/texinfmt.el Tue Jun 8 05:34:58 1993 --- emacs-19.13/lisp/texinfmt.el Thu Jun 3 15:28:38 1993 *************** *** 1825,1828 **** --- 1825,1830 ---- (setq error 1)))) (kill-emacs error)))) + (provide 'texinfmt) + ;;; texinfmt.el ends here diff -cprP -x *.elc emacs-19.12/lisp/texinfo.el emacs-19.13/lisp/texinfo.el *** emacs-19.12/lisp/texinfo.el Tue Jun 8 05:34:59 1993 --- emacs-19.13/lisp/texinfo.el Mon Jun 7 19:34:43 1993 *************** *** 276,282 **** ;; This is also defined in `texnfo-upd.el'. (defvar texinfo-section-types-regexp ! "^@\\(chapter \\|sect\\|sub\\|unnum\\|major\\|heading \\|appendix\\)" "Regexp matching chapter, section, other headings (but not the top node).") (defun texinfo-show-structure (&optional nodes-too) --- 276,282 ---- ;; This is also defined in `texnfo-upd.el'. (defvar texinfo-section-types-regexp ! "^@\\(chapter \\|sect\\|sub\\|unnum\\|major\\|chapheading \\|heading \\|appendix\\)" "Regexp matching chapter, section, other headings (but not the top node).") (defun texinfo-show-structure (&optional nodes-too) diff -cprP -x *.elc emacs-19.12/lisp/time.el emacs-19.13/lisp/time.el *** emacs-19.12/lisp/time.el Tue Jun 8 05:35:04 1993 --- emacs-19.13/lisp/time.el Fri Jun 4 15:20:12 1993 *************** *** 41,47 **** "*Seconds between updates of time in the mode line.") (defvar display-time-24hr-format nil ! "Non-nill indicates time should be displayed as hh:mm, 0 <= hh <= 23. Nil means 1 <= hh <= 12, and an AM/PM suffix is used.") (defvar display-time-string nil) --- 41,47 ---- "*Seconds between updates of time in the mode line.") (defvar display-time-24hr-format nil ! "*Non-nill indicates time should be displayed as hh:mm, 0 <= hh <= 23. Nil means 1 <= hh <= 12, and an AM/PM suffix is used.") (defvar display-time-string nil) diff -cprP -x *.elc emacs-19.12/lisp/timezone.el emacs-19.13/lisp/timezone.el *** emacs-19.12/lisp/timezone.el Tue Jun 8 05:35:05 1993 --- emacs-19.13/lisp/timezone.el Sat Jun 5 16:00:43 1993 *************** *** 49,55 **** ("GMT-4" . -400) ("GMT-5" . -500) ("GMT-6" . -600) ("GMT-7" . -700) ("GMT-8" . -800) ("GMT-9" . -900) ("GMT-10" . -1000) ("GMT-11" . -1100) ("GMT-12" . -1200)) ! "*Time differentials of timezone from GMT in hour.") (defvar timezone-months-assoc '(("JAN" . 1)("FEB" . 2)("MAR" . 3) --- 49,58 ---- ("GMT-4" . -400) ("GMT-5" . -500) ("GMT-6" . -600) ("GMT-7" . -700) ("GMT-8" . -800) ("GMT-9" . -900) ("GMT-10" . -1000) ("GMT-11" . -1100) ("GMT-12" . -1200)) ! "*Time differentials of timezone from GMT in +-HHMM form. ! This list is obsolescent, and is present only for backwards compatibility, ! because time zone names are ambiguous in practice. ! Use `current-time-zone' instead.") (defvar timezone-months-assoc '(("JAN" . 1)("FEB" . 2)("MAR" . 3) *************** *** 60,105 **** (defun timezone-make-date-arpa-standard (date &optional local timezone) "Convert DATE to an arpanet standard date. ! Optional 1st argumetn LOCAL specifies the default local timezone of the DATE. ! Optional 2nd argument TIMEZONE specifies a timezone to be represented in." ! (let* ((date (timezone-parse-date date)) ! (year (string-to-int (aref date 0))) ! (month (string-to-int (aref date 1))) ! (day (string-to-int (aref date 2))) ! (time (timezone-parse-time (aref date 3))) ! (hour (string-to-int (aref time 0))) ! (minute (string-to-int (aref time 1))) ! (second (string-to-int (aref time 2))) ! (local (or (aref date 4) local)) ;Use original if defined ! (timezone (or timezone local)) ! (diff (- (timezone-zone-to-minute timezone) ! (timezone-zone-to-minute local))) ! (new (timezone-fix-time year month day ! hour (+ minute diff) second))) (timezone-make-arpa-date (aref new 0) (aref new 1) (aref new 2) (timezone-make-time-string (aref new 3) (aref new 4) (aref new 5)) ! timezone) )) (defun timezone-make-date-sortable (date &optional local timezone) "Convert DATE to a sortable date string. ! Optional 1st argumetn LOCAL specifies the default local timezone of the DATE. ! Optional 2nd argument TIMEZONE specifies a timezone to be represented in." ! (let* ((date (timezone-parse-date date)) ! (year (string-to-int (aref date 0))) ! (month (string-to-int (aref date 1))) ! (day (string-to-int (aref date 2))) ! (time (timezone-parse-time (aref date 3))) ! (hour (string-to-int (aref time 0))) ! (minute (string-to-int (aref time 1))) ! (second (string-to-int (aref time 2))) ! (local (or (aref date 4) local)) ;Use original if defined ! (timezone (or timezone local)) ! (diff (- (timezone-zone-to-minute timezone) ! (timezone-zone-to-minute local))) ! (new (timezone-fix-time year month day ! hour (+ minute diff) second))) (timezone-make-sortable-date (aref new 0) (aref new 1) (aref new 2) (timezone-make-time-string (aref new 3) (aref new 4) (aref new 5))) --- 63,86 ---- (defun timezone-make-date-arpa-standard (date &optional local timezone) "Convert DATE to an arpanet standard date. ! Optional 1st argument LOCAL specifies the default local timezone of the DATE; ! if nil, GMT is assumed. ! Optional 2nd argument TIMEZONE specifies a time zone to be represented in; ! if nil, the local time zone is assumed." ! (let ((new (timezone-fix-time date local timezone))) (timezone-make-arpa-date (aref new 0) (aref new 1) (aref new 2) (timezone-make-time-string (aref new 3) (aref new 4) (aref new 5)) ! (aref new 6)) )) (defun timezone-make-date-sortable (date &optional local timezone) "Convert DATE to a sortable date string. ! Optional 1st argument LOCAL specifies the default local timezone of the DATE; ! if nil, GMT is assumed. ! Optional 2nd argument TIMEZONE specifies a timezone to be represented in; ! if nil, the local time zone is assumed." ! (let ((new (timezone-fix-time date local timezone))) (timezone-make-sortable-date (aref new 0) (aref new 1) (aref new 2) (timezone-make-time-string (aref new 3) (aref new 4) (aref new 5))) *************** Optional 2nd argument TIMEZONE specifies *** 113,133 **** (defun timezone-make-arpa-date (year month day time &optional timezone) "Make arpanet standard date string from YEAR, MONTH, DAY, and TIME. Optional argument TIMEZONE specifies a time zone." ! (format "%02d %s %4d %s%s" ! day ! (capitalize (car (rassq month timezone-months-assoc))) ! ;;(- year (* (/ year 100) 100)) ;1990 -> 90 ! (if (< year 100) (+ year 1900) year) ;90->1990 ! time ! (if timezone (concat " " timezone) "") ! )) (defun timezone-make-sortable-date (year month day time) "Make sortable date string from YEAR, MONTH, DAY, and TIME." (format "%4d%02d%02d%s" ! ;;(- year (* (/ year 100) 100)) ;1990 -> 90 ! (if (< year 100) (+ year 1900) year) ;90->1990 ! month day time)) (defun timezone-make-time-string (hour minute second) "Make time string from HOUR, MINUTE, and SECOND." --- 94,117 ---- (defun timezone-make-arpa-date (year month day time &optional timezone) "Make arpanet standard date string from YEAR, MONTH, DAY, and TIME. Optional argument TIMEZONE specifies a time zone." ! (let ((zone ! (if (listp timezone) ! (let* ((m (timezone-zone-to-minute timezone)) ! (absm (if (< m 0) (- m) m))) ! (format "%c%02d%02d" ! (if (< m 0) ?- ?+) (/ absm 60) (% absm 60))) ! timezone))) ! (format "%02d %s %04d %s %s" ! day ! (capitalize (car (rassq month timezone-months-assoc))) ! year ! time ! zone))) (defun timezone-make-sortable-date (year month day time) "Make sortable date string from YEAR, MONTH, DAY, and TIME." (format "%4d%02d%02d%s" ! year month day time)) (defun timezone-make-time-string (hour minute second) "Make time string from HOUR, MINUTE, and SECOND." *************** Recognize HH:MM:SS, HH:MM, HHMMSS, HHMM. *** 233,240 **** ;; Miscellaneous (defun timezone-zone-to-minute (timezone) ! "Translate TIMEZONE (in zone name or integer) to integer minute." ! (if timezone (progn (setq timezone (or (cdr (assoc (upcase timezone) timezone-world-timezones)) --- 217,229 ---- ;; Miscellaneous (defun timezone-zone-to-minute (timezone) ! "Translate TIMEZONE to an integer minute offset from GMT. ! TIMEZONE can be a cons cell containing the output of current-time-zone, ! or an integer of the form +-HHMM, or a time zone name." ! (cond ! ((consp timezone) ! (/ (car timezone) 60)) ! (timezone (progn (setq timezone (or (cdr (assoc (upcase timezone) timezone-world-timezones)) *************** Recognize HH:MM:SS, HH:MM, HHMMSS, HHMM. *** 249,297 **** ;; by eggert@twinsun.com (Paul Eggert) (let* ((abszone (max timezone (- timezone))) (minutes (+ (* 60 (/ abszone 100)) (% abszone 100)))) ! (if (< timezone 0) (- minutes) minutes))) ! 0)) ! (defun timezone-fix-time (year month day hour minute second) ! "Fix date and time." ! ;; MINUTE may be larger than 60 or smaller than -60. ! (let ((hour-fix ! (if (< minute 0) ;;(/ (- minute 59) 60) (/ minute 60) ;; ANSI C compliance about truncation of integer division ;; by eggert@twinsun.com (Paul Eggert) (- (/ (- 59 minute) 60)) (/ minute 60)))) (setq hour (+ hour hour-fix)) ! (setq minute (- minute (* 60 hour-fix)))) ! ;; HOUR may be larger than 24 or smaller than 0. ! (cond ((<= 24 hour) ;24 -> 00 ! (setq hour (- hour 24)) ! (setq day (1+ day)) ! (if (< (timezone-last-day-of-month month year) day) ! (progn ! (setq month (1+ month)) ! (setq day 1) ! (if (< 12 month) ! (progn ! (setq month 1) ! (setq year (1+ year)) ! )) ! ))) ! ((> 0 hour) ! (setq hour (+ hour 24)) ! (setq day (1- day)) ! (if (> 1 day) ! (progn ! (setq month (1- month)) ! (if (> 1 month) ! (progn ! (setq month 12) ! (setq year (1- year)) ! )) ! (setq day (timezone-last-day-of-month month year)) ! ))) ! ) ! (vector year month day hour minute second)) ;; Partly copied from Calendar program by Edward M. Reingold. ;; Thanks a lot. --- 238,335 ---- ;; by eggert@twinsun.com (Paul Eggert) (let* ((abszone (max timezone (- timezone))) (minutes (+ (* 60 (/ abszone 100)) (% abszone 100)))) ! (if (< timezone 0) (- minutes) minutes)))) ! (t 0))) ! (defun timezone-time-from-absolute (date seconds) ! "Compute the UTC time equivalent to DATE at time SECONDS after midnight. ! Return a list suitable as an argument to current-time-zone, ! or nil if the date cannot be thus represented. ! DATE is the number of days elapsed since the (imaginary) ! Gregorian date Sunday, December 31, 1 BC." ! (let* ((current-time-origin 719162) ! ;; (timezone-absolute-from-gregorian 1 1 1970) ! (days (- date current-time-origin)) ! (seconds-per-day (float 86400)) ! (seconds (+ seconds (* days seconds-per-day))) ! (current-time-arithmetic-base (float 65536)) ! (hi (floor (/ seconds current-time-arithmetic-base))) ! (hibase (* hi current-time-arithmetic-base)) ! (lo (floor (- seconds hibase)))) ! (and (< (abs (- seconds (+ hibase lo))) 2) ;; Check for integer overflow. ! (cons hi lo)))) ! ! (defun timezone-time-zone-from-absolute (date seconds) ! "Compute the local time zone for DATE at time SECONDS after midnight. ! Return a list in the same format as current-time-zone's result, ! or nil if the local time zone could not be computed. ! DATE is the number of days elapsed since the (imaginary) ! Gregorian date Sunday, December 31, 1 BC." ! (and (fboundp 'current-time-zone) ! (let ((utc-time (timezone-time-from-absolute date seconds))) ! (and utc-time ! (let ((zone (current-time-zone utc-time))) ! (and (car zone) zone)))))) ! ! (defun timezone-fix-time (date local timezone) ! "Convert DATE (default timezone LOCAL) to YYYY-MM-DD-HH-MM-SS-ZONE vector. ! If LOCAL is nil, it is assumed to be GMT. ! If TIMEZONE is nil, use the local time zone." ! (let* ((date (timezone-parse-date date)) ! (year (string-to-int (aref date 0))) ! (year (if (< year 100) (+ year 1900) year)) ! (month (string-to-int (aref date 1))) ! (day (string-to-int (aref date 2))) ! (time (timezone-parse-time (aref date 3))) ! (hour (string-to-int (aref time 0))) ! (minute (string-to-int (aref time 1))) ! (second (string-to-int (aref time 2))) ! (local (or (aref date 4) local)) ;Use original if defined ! (timezone ! (or timezone ! (timezone-time-zone-from-absolute ! (timezone-absolute-from-gregorian month day year) ! (+ second (* 60 (+ minute (* 60 hour))))))) ! (diff (- (timezone-zone-to-minute timezone) ! (timezone-zone-to-minute local))) ! (minute (+ minute diff)) ! (hour-fix ! (if (< minute 0) ;;(/ (- minute 59) 60) (/ minute 60) ;; ANSI C compliance about truncation of integer division ;; by eggert@twinsun.com (Paul Eggert) (- (/ (- 59 minute) 60)) (/ minute 60)))) (setq hour (+ hour hour-fix)) ! (setq minute (- minute (* 60 hour-fix))) ! ;; HOUR may be larger than 24 or smaller than 0. ! (cond ((<= 24 hour) ;24 -> 00 ! (setq hour (- hour 24)) ! (setq day (1+ day)) ! (if (< (timezone-last-day-of-month month year) day) ! (progn ! (setq month (1+ month)) ! (setq day 1) ! (if (< 12 month) ! (progn ! (setq month 1) ! (setq year (1+ year)) ! )) ! ))) ! ((> 0 hour) ! (setq hour (+ hour 24)) ! (setq day (1- day)) ! (if (> 1 day) ! (progn ! (setq month (1- month)) ! (if (> 1 month) ! (progn ! (setq month 12) ! (setq year (1- year)) ! )) ! (setq day (timezone-last-day-of-month month year)) ! ))) ! ) ! (vector year month day hour minute second timezone))) ;; Partly copied from Calendar program by Edward M. Reingold. ;; Thanks a lot. *************** Recognize HH:MM:SS, HH:MM, HHMMSS, HHMM. *** 307,311 **** --- 345,368 ---- (or (and (zerop (% year 4)) (not (zerop (% year 100)))) (zerop (% year 400)))) + + (defun timezone-day-number (month day year) + "Return the day number within the year of the date month/day/year." + (let ((day-of-year (+ day (* 31 (1- month))))) + (if (> month 2) + (progn + (setq day-of-year (- day-of-year (/ (+ 23 (* 4 month)) 10))) + (if (timezone-leap-year-p year) + (setq day-of-year (1+ day-of-year))))) + day-of-year)) + + (defun timezone-absolute-from-gregorian (month day year) + "The number of days between the Gregorian date 12/31/1 BC and month/day/year. + The Gregorian date Sunday, December 31, 1 BC is imaginary." + (+ (timezone-day-number month day year);; Days this year + (* 365 (1- year));; + Days in prior years + (/ (1- year) 4);; + Julian leap years + (- (/ (1- year) 100));; - century years + (/ (1- year) 400)));; + Gregorian leap years ;;; timezone.el ends here diff -cprP -x *.elc emacs-19.12/lisp/vc-hooks.el emacs-19.13/lisp/vc-hooks.el *** emacs-19.12/lisp/vc-hooks.el Tue Jun 8 05:35:13 1993 --- emacs-19.13/lisp/vc-hooks.el Thu Jun 3 16:29:18 1993 *************** *** 137,143 **** (defun vc-find-file-hook () ;; Recompute whether file is version controlled, ;; if user has killed the buffer and revisited. ! (vc-file-setprop buffer-file-name 'vc-backend nil) (if (and (vc-mode-line buffer-file-name) (not vc-make-backup-files)) (progn (make-local-variable 'make-backup-files) --- 137,144 ---- (defun vc-find-file-hook () ;; Recompute whether file is version controlled, ;; if user has killed the buffer and revisited. ! (if buffer-file-name ! (vc-file-setprop buffer-file-name 'vc-backend nil)) (if (and (vc-mode-line buffer-file-name) (not vc-make-backup-files)) (progn (make-local-variable 'make-backup-files) diff -cprP -x *.elc emacs-19.12/lisp/version.el emacs-19.13/lisp/version.el *** emacs-19.12/lisp/version.el Tue Jun 8 05:35:16 1993 --- emacs-19.13/lisp/version.el Tue Jun 8 04:59:03 1993 *************** *** 25,31 **** ;; The following line is modified automatically ;; by loading inc-version.el, each time a new Emacs is dumped. ! (defconst emacs-version "19.12.0" "\ Version numbers of this version of Emacs.") (defconst emacs-build-time (current-time-string) "\ --- 25,31 ---- ;; The following line is modified automatically ;; by loading inc-version.el, each time a new Emacs is dumped. ! (defconst emacs-version "19.13.0" "\ Version numbers of this version of Emacs.") (defconst emacs-build-time (current-time-string) "\ diff -cprP -x *.elc emacs-19.12/lisp/view.el emacs-19.13/lisp/view.el *** emacs-19.12/lisp/view.el Tue Jun 8 05:35:20 1993 --- emacs-19.13/lisp/view.el Thu Jun 3 02:34:56 1993 *************** *** 331,353 **** Arg is number of lines to scroll." (interactive "P") (if (pos-visible-in-window-p (point-max)) ! (view-exit)) ! (setq lines ! (if lines (prefix-numeric-value lines) ! (view-scroll-size))) ! ; (view-last-command 'View-scroll-lines-forward lines) ! (if (>= lines (view-window-size)) ! (scroll-up nil) ! (if (>= (- lines) (view-window-size)) ! (scroll-down nil) ! (scroll-up lines))) ! (cond ((pos-visible-in-window-p (point-max)) ! (goto-char (point-max)) ! (recenter -1) ! (message (substitute-command-keys ! "End. Type \\[view-exit] to quit viewing.")))) ! (move-to-window-line -1) ! (beginning-of-line)) (defun View-scroll-lines-forward-set-scroll-size (&optional lines) "Scroll forward LINES lines in View mode, setting the \"scroll size\". --- 331,353 ---- Arg is number of lines to scroll." (interactive "P") (if (pos-visible-in-window-p (point-max)) ! (view-exit) ! (setq lines ! (if lines (prefix-numeric-value lines) ! (view-scroll-size))) ! ;; (view-last-command 'View-scroll-lines-forward lines) ! (if (>= lines (view-window-size)) ! (scroll-up nil) ! (if (>= (- lines) (view-window-size)) ! (scroll-down nil) ! (scroll-up lines))) ! (cond ((pos-visible-in-window-p (point-max)) ! (goto-char (point-max)) ! (recenter -1) ! (message (substitute-command-keys ! "End. Type \\[view-exit] to quit viewing.")))) ! (move-to-window-line -1) ! (beginning-of-line))) (defun View-scroll-lines-forward-set-scroll-size (&optional lines) "Scroll forward LINES lines in View mode, setting the \"scroll size\". diff -cprP -x *.elc emacs-19.12/lisp/vip.el emacs-19.13/lisp/vip.el *** emacs-19.12/lisp/vip.el Tue Jun 8 05:35:24 1993 --- emacs-19.13/lisp/vip.el Sun Jun 6 03:15:40 1993 *************** *** 169,176 **** ;; changing mode (defun vip-change-mode (new-mode) ! "Change mode to NEW-MODE. NEW-MODE is either emacs-mode, vi-mode, ! or insert-mode." (or (eq new-mode vip-current-mode) (progn (cond ((eq new-mode 'vi-mode) --- 169,175 ---- ;; changing mode (defun vip-change-mode (new-mode) ! "Change mode to NEW-MODE---either emacs-mode, vi-mode, or insert-mode." (or (eq new-mode vip-current-mode) (progn (cond ((eq new-mode 'vi-mode) *************** Type `n' to quit this window for now.\n" *** 278,351 **** ;; escape to emacs mode temporarily ! (defun vip-get-editor-command (l-map g-map &optional str) ! "Read characters from keyboard until an editor command is formed, using ! local keymap L-MAP and global keymap G-MAP. If the command is a ! self-insert-command, the character just read is returned instead. Optional ! string STR is used as initial input string." ! (let (char l-bind g-bind) ! (setq char ! (if (or (null str) (string= str "")) ! (read-char) ! (string-to-char str))) ! (setq last-command-char char) ! (setq l-bind (vip-binding-of char l-map)) ! (if (null l-bind) ! ;; since local binding is empty, we concentrate on global one. ! (progn ! (setq g-bind (vip-binding-of char g-map)) ! (if (null g-bind) ! nil ;; return nil, since both bindings are void. ! (if (keymapp g-bind) ! (vip-get-editor-command nil g-bind (vip-string-tail str)) ! (if (eq g-bind 'self-insert-command) char g-bind)))) ! ;; local binding is nonvoid ! (if (keymapp l-bind) ! ;; since l-bind is a keymap, we consider g-bind as well. ! (progn ! (setq g-bind (vip-binding-of char g-map)) ! (if (null g-bind) ! (vip-get-editor-command l-bind nil (vip-string-tail str)) ! (if (keymapp g-bind) ! ;; both bindings are keymap ! (vip-get-editor-command l-bind g-bind (vip-string-tail str)) ! ;; l-bind is a keymap, so we neglect g-bind ! (vip-get-editor-command l-bind nil (vip-string-tail str))))) ! ;; l-bind is a command ! (if (eq l-bind 'self-insert-command) char l-bind))))) ! ! (defun vip-binding-of (char map) ! "Return key-binding of CHAR under keymap MAP. It is nil if the binding ! is void, or a command, or a keymap" ! (let ((val (if (listp map) ! (cdr (assq char map)) ! (aref map char)))) ! (cond ((null val) nil) ! ((keymapp val) ! (if (symbolp val) (symbol-function val) val)) ! (t ! ;; otherwise, it is a function which is either a real function or ! ;; a keymap fset to val. ! (let ((fun (symbol-function val))) ! (if (or (null fun) (keymapp fun)) fun val)))))) ! ! (defun vip-escape-to-emacs (arg &optional char) ! "Escape to emacs mode and execute one emacs command and then return to ! vi mode. ARG is used as the prefix value for the executed command. If ! CHAR is given it becomes the first character of the command." (interactive "P") ! (let (com (buff (current-buffer)) (first t)) ! (if char (setq unread-command-events (list char))) (setq prefix-arg arg) ! (while (or first unread-command-events) ! ;; this while loop is executed until unread command char will be ! ;; exhausted. ! (setq first nil) ! (setq com (vip-get-editor-command vip-emacs-local-map global-map)) ! (if (numberp com) ! (vip-loop (vip-p-val prefix-arg) ! (insert (char-to-string com))) ! (command-execute com prefix-arg))) (setq prefix-arg nil) ;; reset prefix arg )) --- 277,295 ---- ;; escape to emacs mode temporarily ! (defun vip-escape-to-emacs (arg &optional events) ! "Escape to Emacs mode for one Emacs command. ! ARG is used as the prefix value for the executed command. If ! EVENTS is a list of events, which become the beginning of the command." (interactive "P") ! (let (com key (old-map (current-local-map))) ! (if events (setq unread-command-events events)) (setq prefix-arg arg) ! (use-local-map vip-emacs-local-map) ! (unwind-protect ! (setq com (key-binding (setq key (read-key-sequence nil)))) ! (use-local-map old-map)) ! (command-execute com prefix-arg) (setq prefix-arg nil) ;; reset prefix arg )) *************** CHAR is given it becomes the first chara *** 360,381 **** (defun vip-ESC (arg) "Emulate ESC key in Emacs mode." (interactive "P") ! (vip-escape-to-emacs arg ?\e)) (defun vip-ctl-c (arg) "Emulate C-c key in Emacs mode." (interactive "P") ! (vip-escape-to-emacs arg ?\C-c)) (defun vip-ctl-x (arg) "Emulate C-x key in Emacs mode." (interactive "P") ! (vip-escape-to-emacs arg ?\C-x)) (defun vip-ctl-h (arg) "Emulate C-h key in Emacs mode." (interactive "P") ! (vip-escape-to-emacs arg ?\C-h)) ;; prefix argmument for vi mode --- 304,325 ---- (defun vip-ESC (arg) "Emulate ESC key in Emacs mode." (interactive "P") ! (vip-escape-to-emacs arg '(?\e))) (defun vip-ctl-c (arg) "Emulate C-c key in Emacs mode." (interactive "P") ! (vip-escape-to-emacs arg '(?\C-c))) (defun vip-ctl-x (arg) "Emulate C-x key in Emacs mode." (interactive "P") ! (vip-escape-to-emacs arg '(?\C-x))) (defun vip-ctl-h (arg) "Emulate C-h key in Emacs mode." (interactive "P") ! (vip-escape-to-emacs arg '(?\C-h))) ;; prefix argmument for vi mode *************** the query replace mode will toggle betwe *** 1881,1892 **** (let ((char (read-char))) (if (and (<= ?A char) (<= char ?Z)) (setq char (- char (- ?A ?\C-a)))) ! (setq prefix-arg arg) ! (command-execute ! (vip-get-editor-command ! vip-emacs-local-map global-map ! (format "%s%s" key (char-to-string char)))))) ! ;; commands in insertion mode --- 1825,1831 ---- (let ((char (read-char))) (if (and (<= ?A char) (<= char ?Z)) (setq char (- char (- ?A ?\C-a)))) ! (vip-escape-to-emacs arg (list (aref key 0) char)))) ;; commands in insertion mode diff -cprP -x *.elc emacs-19.12/make-dist emacs-19.13/make-dist *** emacs-19.12/make-dist Tue Jun 8 05:29:23 1993 --- emacs-19.13/make-dist Tue Jun 8 00:22:40 1993 *************** *** 145,151 **** echo "Creating subdirectories." # I think we're not going to distribute anything in external-lisp, so # I've removed it from this list. ! for subdir in lisp lisp/term site-lisp \ src src/m src/s src/bitmaps lib-src oldXMenu \ etc lock cpp info man shortnames vms; do mkdir ${tempdir}/${subdir} --- 145,151 ---- echo "Creating subdirectories." # I think we're not going to distribute anything in external-lisp, so # I've removed it from this list. ! for subdir in lisp lisp/term lisp/forms-mode site-lisp \ src src/m src/s src/bitmaps lib-src oldXMenu \ etc lock cpp info man shortnames vms; do mkdir ${tempdir}/${subdir} *************** echo "Making links to \`lisp/term'." *** 181,186 **** --- 181,193 ---- ln [a-zA-Z]*.el ../../${tempdir}/lisp/term ln [a-zA-Z]*.elc ../../${tempdir}/lisp/term ln README ChangeLog ../../${tempdir}/lisp/term + rm -f =* TAGS) + + echo "Making links to \`lisp/forms-mode'." + (cd lisp/forms-mode + ln [a-zA-Z]*.el ../../${tempdir}/lisp/forms-mode + ln [a-zA-Z]*.elc ../../${tempdir}/lisp/forms-mode + ln forms.README forms-d2.dat ../../${tempdir}/lisp/forms-mode rm -f =* TAGS) ### echo "Making links to \`external-lisp'." diff -cprP -x *.elc emacs-19.12/man/calendar.texi emacs-19.13/man/calendar.texi *** emacs-19.12/man/calendar.texi Tue Jun 8 05:45:13 1993 --- emacs-19.13/man/calendar.texi Tue Jun 8 01:24:04 1993 *************** *** 703,709 **** Similarly, type @kbd{g m n h} to go to the next occurrence of a haab date. ! @findex calendar-previous-calendar-round-date @findex calendar-next-calendar-round-date @cindex Mayan calendar round The Maya also used the combination of the tzolkin date and the haab --- 703,710 ---- Similarly, type @kbd{g m n h} to go to the next occurrence of a haab date. ! @c This is omitted because it is too long for smallbook format. ! @c @findex calendar-previous-calendar-round-date @findex calendar-next-calendar-round-date @cindex Mayan calendar round The Maya also used the combination of the tzolkin date and the haab diff -cprP -x *.elc emacs-19.12/man/cmdargs.texi emacs-19.13/man/cmdargs.texi *** emacs-19.12/man/cmdargs.texi Tue Jun 8 05:45:14 1993 --- emacs-19.13/man/cmdargs.texi Thu Jun 3 22:33:20 1993 *************** *** 342,349 **** @cindex geometry (X Windows) The @samp{-geometry} option controls the size and position of the ! initial Emacs frame. The @samp{-w} option is a synonym for ! @samp{-geometry}. Here is the format for specifying the window geometry: @smallexample --- 342,348 ---- @cindex geometry (X Windows) The @samp{-geometry} option controls the size and position of the ! initial Emacs frame. Here is the format for specifying the window geometry: @smallexample diff -cprP -x *.elc emacs-19.12/man/emacs.aux emacs-19.13/man/emacs.aux *** emacs-19.12/man/emacs.aux Tue Jun 8 05:45:57 1993 --- emacs-19.13/man/emacs.aux Tue Jun 8 07:25:19 1993 *************** *** 320,326 **** 'xrdef {Text Mode-snt}{Section'tie21.7} 'xrdef {Outline Mode-pg}{161} 'xrdef {Outline Mode-snt}{Section'tie21.8} ! 'xrdef {Outline Format-pg}{161} 'xrdef {Outline Format-snt}{Section'tie21.8.1} 'xrdef {Outline Motion-pg}{163} 'xrdef {Outline Motion-snt}{Section'tie21.8.2} --- 320,326 ---- 'xrdef {Text Mode-snt}{Section'tie21.7} 'xrdef {Outline Mode-pg}{161} 'xrdef {Outline Mode-snt}{Section'tie21.8} ! 'xrdef {Outline Format-pg}{162} 'xrdef {Outline Format-snt}{Section'tie21.8.1} 'xrdef {Outline Motion-pg}{163} 'xrdef {Outline Motion-snt}{Section'tie21.8.2} diff -cprP -x *.elc emacs-19.12/man/emacs.cps emacs-19.13/man/emacs.cps *** emacs-19.12/man/emacs.cps Tue Jun 8 05:45:57 1993 --- emacs-19.13/man/emacs.cps Tue Jun 8 07:25:20 1993 *************** *** 31,37 **** \entry {batch mode}{352} \entry {binding}{21} \entry {blank lines}{31, 186} ! \entry {body lines (Outline mode)}{161} \entry {bold font}{141} \entry {borders (X Windows)}{358} \entry {boredom}{307} --- 31,37 ---- \entry {batch mode}{352} \entry {binding}{21} \entry {blank lines}{31, 186} ! \entry {body lines (Outline mode)}{162} \entry {bold font}{141} \entry {borders (X Windows)}{358} \entry {boredom}{307} *************** *** 177,183 **** \entry {header (TeX mode)}{169} \entry {header line (Dired)}{267} \entry {headers (of mail message)}{236} ! \entry {heading lines (Outline mode)}{161} \entry {Hebrew calendar}{278} \entry {help}{49} \entry {Hexl mode}{303} --- 177,183 ---- \entry {header (TeX mode)}{169} \entry {header line (Dired)}{267} \entry {headers (of mail message)}{236} ! \entry {heading lines (Outline mode)}{162} \entry {Hebrew calendar}{278} \entry {help}{49} \entry {Hexl mode}{303} *************** *** 194,200 **** \entry {in-situ subdirectory (Dired)}{267} \entry {inbox file}{247} \entry {indentation}{147, 178, 184} ! \entry {Indented Text mode}{160} \entry {inferior process}{213} \entry {Info}{53} \entry {init file}{331} --- 194,200 ---- \entry {in-situ subdirectory (Dired)}{267} \entry {inbox file}{247} \entry {indentation}{147, 178, 184} ! \entry {Indented Text mode}{161} \entry {inferior process}{213} \entry {Info}{53} \entry {init file}{331} *************** *** 287,293 **** \entry {mode, C}{202} \entry {mode, Emacs-Lisp}{221} \entry {mode, Fortran}{203} ! \entry {mode, Indented Text}{160} \entry {mode, Line Number}{78} \entry {mode, major}{143} \entry {mode, Menu Bar}{140} --- 287,293 ---- \entry {mode, C}{202} \entry {mode, Emacs-Lisp}{221} \entry {mode, Fortran}{203} ! \entry {mode, Indented Text}{161} \entry {mode, Line Number}{78} \entry {mode, major}{143} \entry {mode, Menu Bar}{140} diff -cprP -x *.elc emacs-19.12/man/emacs.fns emacs-19.13/man/emacs.fns *** emacs-19.12/man/emacs.fns Tue Jun 8 05:45:59 1993 --- emacs-19.13/man/emacs.fns Tue Jun 8 07:25:21 1993 *************** *** 77,83 **** \entry {\code {calendar-next-tzolkin-date}}{281} \entry {\code {calendar-other-month}}{273} \entry {\code {calendar-phases-of-moon}}{277} - \entry {\code {calendar-previous-calendar-round-date}}{281} \entry {\code {calendar-previous-haab-date}}{281} \entry {\code {calendar-previous-tzolkin-date}}{281} \entry {\code {calendar-print-astro-day-number}}{279} --- 77,82 ---- *************** *** 226,232 **** \entry {\code {edit-tab-stops-note-changes}}{149} \entry {\code {edt-emulation-off}}{307} \entry {\code {edt-emulation-on}}{307} ! \entry {\code {electric-nroff-mode}}{170} \entry {\code {emacs-lisp-mode}}{221} \entry {\code {emacs-version}}{343} \entry {\code {emerge-auto-advance-mode}}{198} --- 225,231 ---- \entry {\code {edit-tab-stops-note-changes}}{149} \entry {\code {edt-emulation-off}}{307} \entry {\code {edt-emulation-on}}{307} ! \entry {\code {electric-nroff-mode}}{171} \entry {\code {emacs-lisp-mode}}{221} \entry {\code {emacs-version}}{343} \entry {\code {emerge-auto-advance-mode}}{198} *************** *** 282,292 **** \entry {\code {fortran-column-ruler}}{210} \entry {\code {fortran-comment-region}}{209} \entry {\code {fortran-indent-line}}{204} \entry {\code {fortran-indent-subprogram}}{205} \entry {\code {fortran-mode}}{203} \entry {\code {fortran-next-statement}}{204} \entry {\code {fortran-previous-statement}}{204} - \entry {\code {fortran-reindent-then-newline-and-indent}}{204} \entry {\code {fortran-split-line}}{205} \entry {\code {fortran-window-create}}{210} \entry {\code {forward-char}}{28} --- 281,291 ---- \entry {\code {fortran-column-ruler}}{210} \entry {\code {fortran-comment-region}}{209} \entry {\code {fortran-indent-line}}{204} + \entry {\code {fortran-indent-new-line}}{204} \entry {\code {fortran-indent-subprogram}}{205} \entry {\code {fortran-mode}}{203} \entry {\code {fortran-next-statement}}{204} \entry {\code {fortran-previous-statement}}{204} \entry {\code {fortran-split-line}}{205} \entry {\code {fortran-window-create}}{210} \entry {\code {forward-char}}{28} *************** *** 346,352 **** \initial {H} \entry {\code {hanoi}}{307} \entry {\code {help-with-tutorial}}{27} ! \entry {\code {hide-body}}{164} \entry {\code {hide-entry}}{164} \entry {\code {hide-leaves}}{164} \entry {\code {hide-subtree}}{164} --- 345,351 ---- \initial {H} \entry {\code {hanoi}}{307} \entry {\code {help-with-tutorial}}{27} ! \entry {\code {hide-body}}{165} \entry {\code {hide-entry}}{164} \entry {\code {hide-leaves}}{164} \entry {\code {hide-subtree}}{164} *************** *** 360,366 **** \entry {\code {indent-relative}}{148} \entry {\code {indent-rigidly}}{148} \entry {\code {indent-sexp}}{179} ! \entry {\code {indented-text-mode}}{160} \entry {\code {info}}{53} \entry {\code {Info-goto-emacs-command-node}}{53} \entry {\code {Info-goto-emacs-key-command-node}}{53} --- 359,365 ---- \entry {\code {indent-relative}}{148} \entry {\code {indent-rigidly}}{148} \entry {\code {indent-sexp}}{179} ! \entry {\code {indented-text-mode}}{161} \entry {\code {info}}{53} \entry {\code {Info-goto-emacs-command-node}}{53} \entry {\code {Info-goto-emacs-key-command-node}}{53} *************** *** 641,647 **** \entry {\code {shell}}{297} \entry {\code {shell-command}}{296} \entry {\code {shell-command-on-region}}{296} ! \entry {\code {show-all}}{164} \entry {\code {show-all-diary-entries}}{283} \entry {\code {show-branches}}{164} \entry {\code {show-children}}{164} --- 640,646 ---- \entry {\code {shell}}{297} \entry {\code {shell-command}}{296} \entry {\code {shell-command-on-region}}{296} ! \entry {\code {show-all}}{165} \entry {\code {show-all-diary-entries}}{283} \entry {\code {show-branches}}{164} \entry {\code {show-children}}{164} diff -cprP -x *.elc emacs-19.12/man/emacs.kys emacs-19.13/man/emacs.kys *** emacs-19.12/man/emacs.kys Tue Jun 8 05:45:59 1993 --- emacs-19.13/man/emacs.kys Tue Jun 8 07:25:22 1993 *************** *** 498,504 **** \entry {\code {t \r {(Rmail)}}}{256} \entry {\code {TAB}}{143, 147} \entry {\code {TAB \r {(completion)}}}{42} ! \entry {\code {TAB \r {(Indented Text mode)}}}{160} \entry {\code {TAB \r {(programming modes)}}}{178} \entry {\code {\key {TAB} \r {(Shell mode)}}}{298} \entry {\code {\key {TOP}}}{28} --- 498,504 ---- \entry {\code {t \r {(Rmail)}}}{256} \entry {\code {TAB}}{143, 147} \entry {\code {TAB \r {(completion)}}}{42} ! \entry {\code {TAB \r {(Indented Text mode)}}}{161} \entry {\code {TAB \r {(programming modes)}}}{178} \entry {\code {\key {TAB} \r {(Shell mode)}}}{298} \entry {\code {\key {TOP}}}{28} diff -cprP -x *.elc emacs-19.12/man/emacs.texi emacs-19.13/man/emacs.texi *** emacs-19.12/man/emacs.texi Tue Jun 8 05:45:20 1993 --- emacs-19.13/man/emacs.texi Tue Jun 8 03:50:13 1993 *************** *** 27,33 **** --- 27,39 ---- included in a translation approved by the Free Software Foundation instead of in the original English. @end ifinfo + @c comment out this line if you do NOT want to have indication that + @c an index entry appears in the texinfo file near this line of text. + @c this line should definitely be commented out for printing a master + @c and for making the version to go on the floppy disk. @c + @c @include /gd/gnu/doc/margins-comment-format.texi + @c @setchapternewpage odd @settitle GNU Emacs Manual @setfilename ../info/emacs *************** The Emacs Editor *** 75,81 **** Emacs is the extensible, customizable, self-documenting real-time display editor. This Info file describes how to edit with Emacs and some of how to customize it, but not how to extend it. It ! corresponds to GNU Emacs version 19.12. @end ifinfo @menu --- 81,87 ---- Emacs is the extensible, customizable, self-documenting real-time display editor. This Info file describes how to edit with Emacs and some of how to customize it, but not how to extend it. It ! corresponds to GNU Emacs version 19.13. @end ifinfo @menu *************** modification follow. *** 552,558 **** @center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION @end ifinfo ! @enumerate @item This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed --- 558,564 ---- @center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION @end ifinfo ! @enumerate 0 @item This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed diff -cprP -x *.elc emacs-19.12/man/emacs.vrs emacs-19.13/man/emacs.vrs *** emacs-19.12/man/emacs.vrs Tue Jun 8 05:46:00 1993 --- emacs-19.13/man/emacs.vrs Tue Jun 8 07:25:23 1993 *************** *** 87,93 **** \entry {\code {find-file-visit-truename}}{112} \entry {\code {fortran-analyze-depth}}{205} \entry {\code {fortran-break-before-delimiters}}{209} ! \entry {\code {fortran-check-all-num-for-matching-do}}{207} \entry {\code {fortran-column-ruler}}{210} \entry {\code {fortran-comment-indent-char}}{208} \entry {\code {fortran-comment-indent-style}}{208} --- 87,93 ---- \entry {\code {find-file-visit-truename}}{112} \entry {\code {fortran-analyze-depth}}{205} \entry {\code {fortran-break-before-delimiters}}{209} ! \entry {\code {fortran-check-all-num\dots {}}}{207} \entry {\code {fortran-column-ruler}}{210} \entry {\code {fortran-comment-indent-char}}{208} \entry {\code {fortran-comment-indent-style}}{208} *************** *** 99,106 **** \entry {\code {fortran-electric-line-number}}{206} \entry {\code {fortran-if-indent}}{207} \entry {\code {fortran-line-number-indent}}{206} ! \entry {\code {fortran-minimum-statement-indent-fixed}}{207} ! \entry {\code {fortran-minimum-statement-indent-tab}}{207} \entry {\code {fortran-structure-indent}}{207} \entry {\code {fortran-tab-mode-default}}{205} \initial {G} --- 99,105 ---- \entry {\code {fortran-electric-line-number}}{206} \entry {\code {fortran-if-indent}}{207} \entry {\code {fortran-line-number-indent}}{206} ! \entry {\code {fortran-minimum-statement-indent\dots {}}}{207} \entry {\code {fortran-structure-indent}}{207} \entry {\code {fortran-tab-mode-default}}{205} \initial {G} diff -cprP -x *.elc emacs-19.12/man/gnus.texi emacs-19.13/man/gnus.texi *** emacs-19.12/man/gnus.texi Tue Jun 8 05:45:31 1993 --- emacs-19.13/man/gnus.texi Wed Jun 2 15:08:43 1993 *************** *** 1,7 **** \input texinfo @c -*-texinfo-*- @comment %**start of header (This is for running Texinfo on a region.) @setfilename ../info/gnus ! @settitle GNUS 3.13 Manual @iftex @finalout @end iftex --- 1,8 ---- \input texinfo @c -*-texinfo-*- + @c Some important changes I made are indicated as !!!. @comment %**start of header (This is for running Texinfo on a region.) @setfilename ../info/gnus ! @settitle GNUS 3.15 Manual @iftex @finalout @end iftex *************** *** 14,31 **** %\global\baselineskip 30pt % For printing in double spaces @end tex - @ifinfo This file documents GNUS, the GNU Emacs newsreader. ! Copyright (C) 1989 Fujitsu Laboratories LTD. ! Copyright (C) 1990 Masanobu UMEDA. @node Reading News @section Introduction - @c ??? Subject has been renamed to Summary. - @c ??? This has yet to be done in the source code. @c ??? Make gnus-save-all-headers t by default, and don't mention it here @cindex NNTP You can read netnews within Emacs using the GNUS package. GNUS uses the --- 15,48 ---- %\global\baselineskip 30pt % For printing in double spaces @end tex This file documents GNUS, the GNU Emacs newsreader. ! Copyright (C) 1989, 1990, 1993 Free Software Foundation, Inc. ! ! Permission is granted to make and distribute verbatim copies of ! this manual provided the copyright notice and this permission notice ! are preserved on all copies. ! ! @ignore ! Permission is granted to process this file through Tex and print the ! results, provided the printed document carries copying permission ! notice identical to this one except for the removal of this paragraph ! (this paragraph not being relevant to the printed manual). ! ! @end ignore ! Permission is granted to copy and distribute modified versions of this ! manual under the conditions for verbatim copying, provided also that the ! entire resulting derived work is distributed under the terms of a ! permission notice identical to this one. ! ! Permission is granted to copy and distribute translations of this manual ! into another language, under the above conditions for modified versions. @node Reading News @section Introduction @c ??? Make gnus-save-all-headers t by default, and don't mention it here + @c !!! Default value is changed in the source. @cindex NNTP You can read netnews within Emacs using the GNUS package. GNUS uses the *************** Run GNUS without using the default NNTP *** 76,92 **** @subsection Telling GNUS Where To Find the News Somehow or other, GNUS has to know how to find the current netnews. ! Usually this means it has to know the host name of the NNTP server. There are several ways that GNUS can get this information. Most often, it comes from the environment variable @code{NNTPSERVER}. You can specify a default when you install Emacs by setting the variable ! @code{gnus-default-nntp-server} in the @file{site-init.el} file. If neither this default nor the environment variable is defined, then GNUS reads the server name using the minibuffer when you start it. You can override the default by specifying a prefix argument for the ! @code{gnus} command. Then it always reads the host name to use. GNUS can also bypass NNTP and read the news directly from the file system. This reduces the overhead, but the features for retrieving by --- 93,109 ---- @subsection Telling GNUS Where To Find the News Somehow or other, GNUS has to know how to find the current netnews. ! Usually this means it has to know the hostname of the NNTP server. There are several ways that GNUS can get this information. Most often, it comes from the environment variable @code{NNTPSERVER}. You can specify a default when you install Emacs by setting the variable ! @code{gnus-nntp-server} in the @file{site-init.el} file. If neither this default nor the environment variable is defined, then GNUS reads the server name using the minibuffer when you start it. You can override the default by specifying a prefix argument for the ! @code{gnus} command. Then it always reads the hostname to use. GNUS can also bypass NNTP and read the news directly from the file system. This reduces the overhead, but the features for retrieving by *************** Here is what the fields mean: *** 213,219 **** @item s The status code for this article. @samp{ } means the article is newly arrived and never read. @samp{D} means you read the article already. ! @samp{-} means you read it but marked it as unread. @item number The number assigned to the article. --- 230,236 ---- @item s The status code for this article. @samp{ } means the article is newly arrived and never read. @samp{D} means you read the article already. ! @samp{-} means you read it but marked it as saved. @item number The number assigned to the article. *************** special commands: *** 266,298 **** @table @kbd @item n @kindex n (Group Mode) ! @findex gnus-Group-next-unread-group Move point to the next newsgroup containing unread articles ! (@code{gnus-Group-next-unread-group}). @item p @itemx DEL @kindex p (Group Mode) @kindex DEL (Group Mode) ! @findex gnus-Group-prev-unread-group Move point to the previous newsgroup containing unread articles ! (@code{gnus-Group-prev-unread-group}). @itemx C-n @kindex C-n (Group Mode) ! @findex gnus-Group-next-group ! Move point to the next newsgroup (@code{gnus-Group-next-group}). @itemx C-p @kindex C-p (Group Mode) ! @findex gnus-Group-prev-group ! Move point to the previous newsgroup (@code{gnus-Group-prev-group}). @item j @var{newsgroup} RET @kindex j (Group Mode) ! @findex gnus-Group-jump-to-group Move point to the @var{newsgroup} specified by name ! (@code{gnus-Group-jump-to-group}). @item < @kindex < (Group Mode) --- 283,315 ---- @table @kbd @item n @kindex n (Group Mode) ! @findex gnus-group-next-unread-group Move point to the next newsgroup containing unread articles ! (@code{gnus-group-next-unread-group}). @item p @itemx DEL @kindex p (Group Mode) @kindex DEL (Group Mode) ! @findex gnus-group-prev-unread-group Move point to the previous newsgroup containing unread articles ! (@code{gnus-group-prev-unread-group}). @itemx C-n @kindex C-n (Group Mode) ! @findex gnus-group-next-group ! Move point to the next newsgroup (@code{gnus-group-next-group}). @itemx C-p @kindex C-p (Group Mode) ! @findex gnus-group-prev-group ! Move point to the previous newsgroup (@code{gnus-group-prev-group}). @item j @var{newsgroup} RET @kindex j (Group Mode) ! @findex gnus-group-jump-to-group Move point to the @var{newsgroup} specified by name ! (@code{gnus-group-jump-to-group}). @item < @kindex < (Group Mode) *************** Move point to the end of the buffer (@co *** 304,318 **** @item r @kindex r (Group Mode) ! @findex gnus-Group-restrict-groups @cindex restrict newsgroups Restrict visible newsgroups to the current region specified by point ! and the mark (@code{gnus-Group-restrict-groups}). @end table @kindex j (Group Mode) ! @findex gnus-Group-jump-to-group ! The command @kbd{j} (@code{gnus-Group-jump-to-group}) reads a newsgroup name interactively, and moves point to it. If there is no such newsgroup in the buffer, a line for the newsgroup is inserted at the beginning of the buffer. --- 321,335 ---- @item r @kindex r (Group Mode) ! @findex gnus-group-restrict-groups @cindex restrict newsgroups Restrict visible newsgroups to the current region specified by point ! and the mark (@code{gnus-group-restrict-groups}). @end table @kindex j (Group Mode) ! @findex gnus-group-jump-to-group ! The command @kbd{j} (@code{gnus-group-jump-to-group}) reads a newsgroup name interactively, and moves point to it. If there is no such newsgroup in the buffer, a line for the newsgroup is inserted at the beginning of the buffer. *************** the beginning of the buffer. *** 319,328 **** @kindex r (Group Mode) @kindex C-x w ! @findex gnus-Group-restrict-groups @findex widen @cindex restrict newsgroups ! The command @kbd{r} (@code{gnus-Group-restrict-groups}) restricts visibility in the Newsgroup buffer to the region specified by point and mark. It is not quite the same as @kbd{C-x n}; it includes all of the line that the region starts in, and all of the line that the region ends --- 336,345 ---- @kindex r (Group Mode) @kindex C-x w ! @findex gnus-group-restrict-groups @findex widen @cindex restrict newsgroups ! The command @kbd{r} (@code{gnus-group-restrict-groups}) restricts visibility in the Newsgroup buffer to the region specified by point and mark. It is not quite the same as @kbd{C-x n}; it includes all of the line that the region starts in, and all of the line that the region ends *************** buffer. *** 335,378 **** @cindex read newsgroup @kindex SPC (Group Mode) ! @findex gnus-Group-read-group @kindex = (Group Mode) ! @findex gnus-Group-select-group To start reading the articles in a newsgroup, move to that newsgroup in the Newsgroup buffer and type @kbd{SPC} ! (@code{gnus-Group-read-group}) or @kbd{=} ! (@code{gnus-Group-select-group}). @table @kbd @item SPC @kindex SPC (Group Mode) ! @findex gnus-Group-read-group Select the newsgroup at point, and then select the first unread article ! automatically (@code{gnus-Group-read-group}). @item = @kindex = (Group Mode) ! @findex gnus-Group-select-group ! Select the newsgroup at point (@code{gnus-Group-select-group}). @end table @ignore @kindex SPC (Group Mode) ! @findex gnus-Group-read-group @vindex gnus-auto-select-first ! @vindex gnus-Select-group-hook To prevent automatic selection of the first unread article even when the newsgroup is selected by the command @kbd{SPC} ! (@code{gnus-Group-read-group}), set the variable @code{gnus-auto-select-first} to @code{nil}. If you want to change the value of the variable according to the selected newsgroups, set the ! variable in the hook @code{gnus-Select-group-hook}. @end ignore @kindex SPC (Group Mode) ! @findex gnus-Group-read-group @kindex = (Group Mode) ! @findex gnus-Group-select-group @cindex select all articles @cindex read all articles Normally, when you select a newsgroup, GNUS prepares to read only the --- 352,395 ---- @cindex read newsgroup @kindex SPC (Group Mode) ! @findex gnus-group-read-group @kindex = (Group Mode) ! @findex gnus-group-select-group To start reading the articles in a newsgroup, move to that newsgroup in the Newsgroup buffer and type @kbd{SPC} ! (@code{gnus-group-read-group}) or @kbd{=} ! (@code{gnus-group-select-group}). @table @kbd @item SPC @kindex SPC (Group Mode) ! @findex gnus-group-read-group Select the newsgroup at point, and then select the first unread article ! automatically (@code{gnus-group-read-group}). @item = @kindex = (Group Mode) ! @findex gnus-group-select-group ! Select the newsgroup at point (@code{gnus-group-select-group}). @end table @ignore @kindex SPC (Group Mode) ! @findex gnus-group-read-group @vindex gnus-auto-select-first ! @vindex gnus-select-group-hook To prevent automatic selection of the first unread article even when the newsgroup is selected by the command @kbd{SPC} ! (@code{gnus-group-read-group}), set the variable @code{gnus-auto-select-first} to @code{nil}. If you want to change the value of the variable according to the selected newsgroups, set the ! variable in the hook @code{gnus-select-group-hook}. @end ignore @kindex SPC (Group Mode) ! @findex gnus-group-read-group @kindex = (Group Mode) ! @findex gnus-group-select-group @cindex select all articles @cindex read all articles Normally, when you select a newsgroup, GNUS prepares to read only the *************** unread articles (including saved article *** 380,386 **** unread articles and you select it anyway, GNUS prepares to read all the articles. You can force GNUS to include all the articles by giving a prefix argument to the commands @kbd{SPC} and @kbd{=} ! (@code{gnus-Group-read-group} and @code{gnus-Group-select-group}). @vindex gnus-large-newsgroup @cindex large newsgroup --- 397,403 ---- unread articles and you select it anyway, GNUS prepares to read all the articles. You can force GNUS to include all the articles by giving a prefix argument to the commands @kbd{SPC} and @kbd{=} ! (@code{gnus-group-read-group} and @code{gnus-group-select-group}). @vindex gnus-large-newsgroup @cindex large newsgroup *************** listed on the current line. *** 406,492 **** @table @kbd @item c @kindex c (Group Mode) ! @findex gnus-Group-catch-up Mark all newly arrived articles in the newsgroup as read, but don't ! alter articles explicitly marked as unread ! (@code{gnus-Group-catch-up}). @item C @kindex C (Group Mode) ! @findex gnus-Group-catch-up-all Mark all articles in the newsgroup as read ! (@code{gnus-Group-catch-up-all}). @item l @kindex l (Group Mode) ! @findex gnus-Group-list-groups @c ??? Is this completely true? Show only the newsgroups which you now subscribe to and which now ! contain unread articles (@code{gnus-Group-list-groups}). @item L @kindex L (Group Mode) ! @findex gnus-Group-list-all-groups Show all newsgroups available on your news server ! (@code{gnus-Group-list-all-groups}). @item u @kindex u (Group Mode) ! @findex gnus-Group-unsubscribe-current-group @cindex subscribe newsgroups @cindex unsubscribe newsgroups Unsubscribe from (or subscribe to) the newsgroup ! (@code{gnus-Group-unsubscribe-current-group}). @item U @var{newsgroup} RET @kindex U (Group Mode) ! @findex gnus-Group-unsubscribe-group @cindex subscribe newsgroups @cindex unsubscribe newsgroups Unsubscribe from (or subscribe to) the newsgroup named @var{newsgroup} ! (@code{gnus-Group-unsubscribe-group}). @item C-k @kindex C-k (Group Mode) ! @findex gnus-Group-kill-group @cindex kill newsgroups Kill the newsgroup line that point is in ! (@code{gnus-Group-kill-group}). @item C-y @kindex C-y (Group Mode) ! @findex gnus-Group-yank-group @cindex yank newsgroups ! Yank the last newsgroup killed (@code{gnus-Group-yank-group}). It is inserted just before the current line. Successive uses of @kbd{C-y} yank earlier kills, in last-in first-out order. ! @c ??? This is a name change; now it's gnus-Browse-killed-groups. @item M-x gnus-list-killed-groups @findex gnus-list-killed-groups ! @c @item C-c C-y ! @c @kindex C-c C-y (Group Mode) Display a list of the newsgroups you have killed. This is so you can copy them back into the startup file. @item b @kindex b (Group Mode) ! @findex gnus-Group-check-bogus-groups ! Delete bogus newsgroups (@code{gnus-Group-check-bogus-groups}). @item g @kindex g (Group Mode) ! @findex gnus-Group-get-new-news @cindex active file Get newly arrived articles for all groups ! (@code{gnus-Group-get-new-news}). @end table @cindex catch up @cindex cross-references @cindex Xref field ! The commands @kbd{c} and @kbd{C} (@code{gnus-Group-catch-up} and ! @code{gnus-Group-catch-up-all}) mark all or most of the articles in a newsgroup as read. They are useful if you have been away from news reading for a while, and you don't want to slog through the backlog of old postings. These commands do not take account of the cross-reference --- 423,525 ---- @table @kbd @item c @kindex c (Group Mode) ! @findex gnus-group-catchup Mark all newly arrived articles in the newsgroup as read, but don't ! alter articles explicitly marked as saved ! (@code{gnus-group-catchup}). @item C @kindex C (Group Mode) ! @findex gnus-group-catchup-all Mark all articles in the newsgroup as read ! (@code{gnus-group-catchup-all}). @item l @kindex l (Group Mode) ! @findex gnus-group-list-groups @c ??? Is this completely true? + @c !!! Yes. Show only the newsgroups which you now subscribe to and which now ! contain unread and saved articles (@code{gnus-group-list-groups}). @item L @kindex L (Group Mode) ! @findex gnus-group-list-all-groups Show all newsgroups available on your news server ! (@code{gnus-group-list-all-groups}). @item u @kindex u (Group Mode) ! @findex gnus-group-unsubscribe-current-group @cindex subscribe newsgroups @cindex unsubscribe newsgroups Unsubscribe from (or subscribe to) the newsgroup ! (@code{gnus-group-unsubscribe-current-group}). @item U @var{newsgroup} RET @kindex U (Group Mode) ! @findex gnus-group-unsubscribe-group @cindex subscribe newsgroups @cindex unsubscribe newsgroups Unsubscribe from (or subscribe to) the newsgroup named @var{newsgroup} ! (@code{gnus-group-unsubscribe-group}). @item C-k @kindex C-k (Group Mode) ! @findex gnus-group-kill-group @cindex kill newsgroups Kill the newsgroup line that point is in ! (@code{gnus-group-kill-group}). ! ! @item C-w ! @kindex C-w (Group Mode) ! @findex gnus-group-kill-region ! @cindex kill newsgroups ! Kill newsgroups in current region (excluding current line) ! (@code{gnus-group-kill-region}). @item C-y @kindex C-y (Group Mode) ! @findex gnus-group-yank-group @cindex yank newsgroups ! Yank the last newsgroup killed (@code{gnus-group-yank-group}). It is inserted just before the current line. Successive uses of @kbd{C-y} yank earlier kills, in last-in first-out order. + + @item C-x C-t + @kindex C-x C-t (Group Mode) + @findex gnus-group-transpose-groups + Exchange current newsgroup and previous newsgroup. + (@code{gnus-group-transpose-groups}).@refill ! @c ??? This is a name change; now it's gnus-browse-killed-groups. ! @c !!! Renamed in the source. @item M-x gnus-list-killed-groups @findex gnus-list-killed-groups ! @c !!! I think this key binding is useful. ! @item C-c C-l ! @kindex C-c C-l (Group Mode) Display a list of the newsgroups you have killed. This is so you can copy them back into the startup file. @item b @kindex b (Group Mode) ! @findex gnus-group-check-bogus-groups ! Delete bogus newsgroups (@code{gnus-group-check-bogus-groups}). @item g @kindex g (Group Mode) ! @findex gnus-group-get-new-news @cindex active file Get newly arrived articles for all groups ! (@code{gnus-group-get-new-news}). @end table @cindex catch up @cindex cross-references @cindex Xref field ! The commands @kbd{c} and @kbd{C} (@code{gnus-group-catchup} and ! @code{gnus-group-catchup-all}) mark all or most of the articles in a newsgroup as read. They are useful if you have been away from news reading for a while, and you don't want to slog through the backlog of old postings. These commands do not take account of the cross-reference *************** old postings. These commands do not tak *** 493,502 **** information in the @samp{Xref:} field, while the @kbd{c} command in Summary Mode does. ! Only subscribed newsgroups containing unread articles are usually displayed in the Newsgroup buffer. Type @kbd{L} ! (@code{gnus-Group-list-all-groups}) to show all newsgroups which are ! currently active. Use @kbd{l} (@code{gnus-Group-list-groups}) to go back to the usual contents---only groups which have news for you to read. --- 526,535 ---- information in the @samp{Xref:} field, while the @kbd{c} command in Summary Mode does. ! Only subscribed newsgroups containing unread and saved articles are usually displayed in the Newsgroup buffer. Type @kbd{L} ! (@code{gnus-group-list-all-groups}) to show all newsgroups which are ! currently active. Use @kbd{l} (@code{gnus-group-list-groups}) to go back to the usual contents---only groups which have news for you to read. *************** read. *** 503,509 **** @cindex options -n in startup file @cindex add newsgroups @cindex new newsgroups ! The command @kbd{U} (@code{gnus-Group-unsubscribe-group}) reads a newsgroup name interactively, and toggles its subscription flag. This is the usual way to subscribe to new groups. (You can also type @kbd{L} and then use @kbd{u} on the groups you want to read.) You can also --- 536,542 ---- @cindex options -n in startup file @cindex add newsgroups @cindex new newsgroups ! The command @kbd{U} (@code{gnus-group-unsubscribe-group}) reads a newsgroup name interactively, and toggles its subscription flag. This is the usual way to subscribe to new groups. (You can also type @kbd{L} and then use @kbd{u} on the groups you want to read.) You can also *************** and then use @kbd{u} on the groups you w *** 510,515 **** --- 543,549 ---- arrange to subscribe automatically to some or all newly created newsgroups using the options line in your startup file. @c ??? What is the name of the startup file? + @c !!! Usually ~/.newsrc is used. @c @xref{Startup File}, for more information. @cindex kill newsgroups *************** newsgroups using the options line in you *** 517,531 **** @cindex order of newsgroups @cindex change the order of newsgroups @c ??? How does killing relate to unsubscribing? ! The command @kbd{C-k} (@code{gnus-Group-kill-group}) kills a newsgroup from both the Newsgroup buffer and the raw startup file. If you change ! your mind, type @kbd{C-y} (@code{gnus-Group-yank-group}); this yanks the last newsgroup killed with the @kbd{C-k} command. ! The command @code{gnus-list-killed-groups}) pops up a buffer listing the newsgroups you have killed. You can yank any of these newsgroups by moving point to the entry for the newsgroup you want, and then typing ! @kbd{y} or @kbd{C-y} (@code{gnus-Browse-killed-yank}). So a convenient way to change the order of newsgroups is to kill some of them, then go to the list of killed groups and yank them in the order you want. --- 551,565 ---- @cindex order of newsgroups @cindex change the order of newsgroups @c ??? How does killing relate to unsubscribing? ! The command @kbd{C-k} (@code{gnus-group-kill-group}) kills a newsgroup from both the Newsgroup buffer and the raw startup file. If you change ! your mind, type @kbd{C-y} (@code{gnus-group-yank-group}); this yanks the last newsgroup killed with the @kbd{C-k} command. ! The command @kbd{C-c C-l} (@code{gnus-list-killed-groups}) pops up a buffer listing the newsgroups you have killed. You can yank any of these newsgroups by moving point to the entry for the newsgroup you want, and then typing ! @kbd{y} or @kbd{C-y} (@code{gnus-browse-killed-yank}). So a convenient way to change the order of newsgroups is to kill some of them, then go to the list of killed groups and yank them in the order you want. *************** unless you lose the file. *** 537,548 **** @cindex bogus newsgroups @cindex delete newsgroups A @dfn{bogus newsgroup} is one not in the list of active newsgroups in ! the active file. Type @kbd{b} (@code{gnus-Group-check-bogus-groups}) to delete all the bogus newsgroups that you subscribe to. Bogus newsgroups ! that you have unsubscribed are deleted also. @kindex g (Group Mode) ! @findex gnus-Group-get-new-news @cindex active file The @kbd{g} command rereads the active file to get updated lists of articles available to be read. --- 571,582 ---- @cindex bogus newsgroups @cindex delete newsgroups A @dfn{bogus newsgroup} is one not in the list of active newsgroups in ! the active file. Type @kbd{b} (@code{gnus-group-check-bogus-groups}) to delete all the bogus newsgroups that you subscribe to. Bogus newsgroups ! that you have unsubscribed or killed are deleted also. @kindex g (Group Mode) ! @findex gnus-group-get-new-news @cindex active file The @kbd{g} command rereads the active file to get updated lists of articles available to be read. *************** articles available to be read. *** 553,599 **** @table @kbd @item z @kindex z (Group Mode) ! @findex gnus-Group-suspend Suspend the current GNUS session ! (@code{gnus-Group-suspend}). @item q @kindex q (Group Mode) ! @findex gnus-Group-exit Update the startup file @file{.newsrc}, and then exit GNUS ! (@code{gnus-Group-exit}). @c ??? Find another character for this. @item Q @kindex Q (Group Mode) ! @findex gnus-Group-quit Exit GNUS without updating the startup file @file{.newsrc} ! (@code{gnus-Group-quit}). @end table @kindex z (Group Mode) ! @findex gnus-Group-suspend ! Suspending GNUS with @kbd{z} (@code{gnus-Group-suspend}) kills all GNUS buffers except for the Newsgroup buffer. To resume again, switch to the Newsgroup buffer and type @kbd{g} ! (@code{gnus-Group-get-new-news}) to get newly arrived articles. It is a good idea to update the startup file (@pxref{Startup File}) before suspending GNUS. @c ??? Should z save the active file itself? @kindex q (Group Mode) ! @findex gnus-Group-exit @kindex Q (Group Mode) ! @findex gnus-Group-quit If you want to forget what you read this GNUS session, exit GNUS by ! the command @kbd{Q} (@code{gnus-Group-quit}). Otherwise, exit by the ! command @kbd{q} (@code{gnus-Group-exit}) to update the startup file. ! @vindex gnus-Exit-gnus-hook ! @vindex gnus-Suspend-gnus-hook ! The hook @code{gnus-Exit-gnus-hook} is called when exiting GNUS, and ! the hook @code{gnus-Suspend-gnus-hook} is called when suspending GNUS. @c ??? Commented out because these commands kill the buffers themselves. @c ??? Does anyone know what this was supposed to mean? --- 587,635 ---- @table @kbd @item z @kindex z (Group Mode) ! @findex gnus-group-suspend Suspend the current GNUS session ! (@code{gnus-group-suspend}). @item q @kindex q (Group Mode) ! @findex gnus-group-exit Update the startup file @file{.newsrc}, and then exit GNUS ! (@code{gnus-group-exit}). @c ??? Find another character for this. @item Q @kindex Q (Group Mode) ! @findex gnus-group-quit Exit GNUS without updating the startup file @file{.newsrc} ! (@code{gnus-group-quit}). @end table @kindex z (Group Mode) ! @findex gnus-group-suspend ! Suspending GNUS with @kbd{z} (@code{gnus-group-suspend}) kills all GNUS buffers except for the Newsgroup buffer. To resume again, switch to the Newsgroup buffer and type @kbd{g} ! (@code{gnus-group-get-new-news}) to get newly arrived articles. It is a good idea to update the startup file (@pxref{Startup File}) before suspending GNUS. @c ??? Should z save the active file itself? + @c !!! Saving the startup file is left for user because it is easy by + @c !!! using gnus-suspend-gnus-hook. @kindex q (Group Mode) ! @findex gnus-group-exit @kindex Q (Group Mode) ! @findex gnus-group-quit If you want to forget what you read this GNUS session, exit GNUS by ! the command @kbd{Q} (@code{gnus-group-quit}). Otherwise, exit by the ! command @kbd{q} (@code{gnus-group-exit}) to update the startup file. ! @vindex gnus-exit-gnus-hook ! @vindex gnus-suspend-gnus-hook ! The hook @code{gnus-exit-gnus-hook} is called when exiting GNUS, and ! the hook @code{gnus-suspend-gnus-hook} is called when suspending GNUS. @c ??? Commented out because these commands kill the buffers themselves. @c ??? Does anyone know what this was supposed to mean? *************** the hook @code{gnus-Suspend-gnus-hook} i *** 608,628 **** @table @kbd @item a @kindex a (Group Mode) ! @findex gnus-Group-post-news ! Compose a new article (@code{gnus-Group-post-news}). @xref{Followup and Reply}, for more information. @item M-k @kindex M-k (Group Mode) ! @findex gnus-Group-edit-local-kill @cindex edit kill file ! Edit a local kill file (@code{gnus-Group-edit-local-kill}). @xref{Kill File}, for more information. @item M-K @kindex M-K (Group Mode) ! @findex gnus-Group-edit-global-kill ! Edit your global kill file (@code{gnus-Group-edit-global-kill}). @xref{Kill File}, for more information. @ignore --- 644,664 ---- @table @kbd @item a @kindex a (Group Mode) ! @findex gnus-group-post-news ! Compose a new article (@code{gnus-group-post-news}). @xref{Followup and Reply}, for more information. @item M-k @kindex M-k (Group Mode) ! @findex gnus-group-edit-local-kill @cindex edit kill file ! Edit a local kill file (@code{gnus-group-edit-local-kill}). @xref{Kill File}, for more information. @item M-K @kindex M-K (Group Mode) ! @findex gnus-group-edit-global-kill ! Edit your global kill file (@code{gnus-group-edit-global-kill}). @xref{Kill File}, for more information. @ignore *************** Print the version number of GNUS (@code{ *** 635,651 **** @item ? @kindex ? (Group Mode) ! @findex gnus-Group-describe-briefly @cindex brief help message @cindex help briefly Describe Group mode commands briefly ! (@code{gnus-Group-describe-briefly}). @item C-c C-i @kindex C-c C-i (Group Mode) ! @findex gnus-Info-find-node Enter Info and display the node describing Group mode ! (@code{gnus-Info-find-node}). @end ignore @end table --- 671,687 ---- @item ? @kindex ? (Group Mode) ! @findex gnus-group-describe-briefly @cindex brief help message @cindex help briefly Describe Group mode commands briefly ! (@code{gnus-group-describe-briefly}). @item C-c C-i @kindex C-c C-i (Group Mode) ! @findex gnus-info-find-node Enter Info and display the node describing Group mode ! (@code{gnus-info-find-node}). @end ignore @end table *************** do almost all news reading tasks while s *** 674,682 **** @subsection Reading Articles @kindex SPC (Summary Mode) ! @findex gnus-Summary-next-page The most basic command for reading articles is @key{SPC} ! (@code{gnus-Summary-next-page}). When you are viewing the middle of a article, @key{SPC} scrolls the article forward. When you get to the end of an article, @key{SPC} advances to the next article. You can read all the unread articles straight through using just @key{SPC}. --- 710,718 ---- @subsection Reading Articles @kindex SPC (Summary Mode) ! @findex gnus-summary-next-page The most basic command for reading articles is @key{SPC} ! (@code{gnus-summary-next-page}). When you are viewing the middle of a article, @key{SPC} scrolls the article forward. When you get to the end of an article, @key{SPC} advances to the next article. You can read all the unread articles straight through using just @key{SPC}. *************** the unread articles straight through usi *** 685,692 **** available. @menu ! * Summary Motion:: Special cursor motion commands for Summary. ! * Reading an Article:: Commands for viewing an article differently. * Scrolling:: Browsing through a message. * Moving Among Articles:: Selecting articles. * Marking Articles:: Marking articles as (un)read. --- 721,728 ---- available. @menu ! * Summary Motion:: Special cursor motion commands for Summary. ! * Reading an Article:: Commands for viewing an article differently. * Scrolling:: Browsing through a message. * Moving Among Articles:: Selecting articles. * Marking Articles:: Marking articles as (un)read. *************** commands as well as the usual cursor mot *** 704,736 **** @table @kbd @item C-n @kindex C-n (Summary Mode) ! @findex gnus-Summary-next-subject ! Move point to the next header (@code{gnus-Summary-next-subject}). @item C-p @kindex C-p (Summary Mode) ! @findex gnus-Summary-prev-subject ! Move point to the previous header (@code{gnus-Summary-prev-subject}). @item M-n @kindex M-n (Summary Mode) ! @findex gnus-Summary-next-unread-subject Move point to the next header, skipping marked articles ! (@code{gnus-Summary-next-unread-subject}). @item M-p @kindex M-p (Summary Mode) ! @findex gnus-Summary-prev-unread-subject Move point to the previous header, skipping marked articles ! (@code{gnus-Summary-prev-unread-subject}). @item j @var{number} RET @kindex j (Summary Mode) ! @findex gnus-Summary-goto-subject Move point to the line describing an article specified by number with a ! prefix argument (@code{gnus-Summary-goto-subject}). @ignore @item / @kindex / (Summary Mode) Do an incremental search on headers (@code{isearch-forward}). --- 740,773 ---- @table @kbd @item C-n @kindex C-n (Summary Mode) ! @findex gnus-summary-next-subject ! Move point to the next header (@code{gnus-summary-next-subject}). @item C-p @kindex C-p (Summary Mode) ! @findex gnus-summary-prev-subject ! Move point to the previous header (@code{gnus-summary-prev-subject}). @item M-n @kindex M-n (Summary Mode) ! @findex gnus-summary-next-unread-subject Move point to the next header, skipping marked articles ! (@code{gnus-summary-next-unread-subject}). @item M-p @kindex M-p (Summary Mode) ! @findex gnus-summary-prev-unread-subject Move point to the previous header, skipping marked articles ! (@code{gnus-summary-prev-unread-subject}). @item j @var{number} RET @kindex j (Summary Mode) ! @findex gnus-summary-goto-subject Move point to the line describing an article specified by number with a ! prefix argument (@code{gnus-summary-goto-subject}). @ignore + @ !!! removed the binding. @item / @kindex / (Summary Mode) Do an incremental search on headers (@code{isearch-forward}). *************** Do an incremental search on headers (@co *** 743,815 **** @table @kbd @item @key{SPC} @kindex SPC (Summary Mode) ! @findex gnus-Summary-next-page @key{SPC} in the Summary buffer scrolls the Article buffer to the next ! screenful or to the next article (@code{gnus-Summary-next-page}) @c ??? This should be moved to another letter, but which? @item g @kindex g (Summary Mode) ! @findex gnus-Summary-show-article Select the article on the current line ! (@code{gnus-Summary-show-article}). This command always rereads the article text from the server even if the same article is already selected. @item = @kindex = (Summary Mode) ! @findex gnus-Summary-expand-window Expand the Summary buffer's window to occupy all the screen space that ! GNUS is now using (@code{gnus-Summary-expand-window}). @item C-t @kindex C-t (Summary Mode) ! @findex gnus-Summary-toggle-truncation @cindex truncation of lines in GNUS Toggle truncation of lines in the Summary buffer ! (@code{gnus-Summary-toggle-truncation}). @item w ! Stop page breaking (@code{gnus-Summary-stop-page-breaking}). @ignore @item v @kindex v (Summary Mode) ! @findex gnus-Summary-show-all-headers Show all headers of the current article ! (@code{gnus-Summary-show-all-headers}). @end ignore @item t @kindex t (Summary Mode) ! @findex gnus-Summary-toggle-header Show all headers of the current article if pruned header currently ! shown, or vice versa (@code{gnus-Summary-toggle-header}). @item C-c C-r @kindex C-c C-r (Summary Mode) ! @findex gnus-Summary-caesar-message @cindex rot 13/47 @cindex caesar messages @cindex encrypted articles Caesar rotate letters by 13 places and Japanese characters by 47 places ! (@code{gnus-Summary-caesar-message}). @end table @kindex = (Summary Mode) ! @findex gnus-Summary-expand-window ! The command @kbd{=} (@code{gnus-Summary-expand-window}) expands the Summary window by deleting the Article window. Use it when you want to concentrate on the Summary buffer. This command is different from @kbd{C-x 1} when more than two windows exist. ! @cindex rot 13 @cindex caesar messages @cindex encrypted articles @kindex C-c C-r (Summary Mode) ! @findex gnus-Summary-caesar-message ! The command @kbd{C-c C-r} (@code{gnus-Summary-caesar-message}) rotates ! all letters in the body of the current article by 13 places. (This encoding is often called ``rot 13''.) To undo this operation, run it a second time. @c Japanese characters are rotated by 47 places. --- 780,860 ---- @table @kbd @item @key{SPC} @kindex SPC (Summary Mode) ! @findex gnus-summary-next-page @key{SPC} in the Summary buffer scrolls the Article buffer to the next ! screenful or to the next article (@code{gnus-summary-next-page}) @c ??? This should be moved to another letter, but which? + @c !!! G is moved ot C-x C-s, instead. @item g @kindex g (Summary Mode) ! @findex gnus-summary-show-article Select the article on the current line ! (@code{gnus-summary-show-article}). This command always rereads the article text from the server even if the same article is already selected. @item = @kindex = (Summary Mode) ! @findex gnus-summary-expand-window Expand the Summary buffer's window to occupy all the screen space that ! GNUS is now using (@code{gnus-summary-expand-window}). @item C-t @kindex C-t (Summary Mode) ! @findex gnus-summary-toggle-truncation @cindex truncation of lines in GNUS Toggle truncation of lines in the Summary buffer ! (@code{gnus-summary-toggle-truncation}). @item w ! Stop page breaking of article buffer (@code{gnus-summary-stop-page-breaking}). @ignore + @ !!! removed key binding. @item v @kindex v (Summary Mode) ! @findex gnus-summary-show-all-headers Show all headers of the current article ! (@code{gnus-summary-show-all-headers}). @end ignore @item t @kindex t (Summary Mode) ! @findex gnus-summary-toggle-header Show all headers of the current article if pruned header currently ! shown, or vice versa (@code{gnus-summary-toggle-header}). + @item M-t + @kindex M-t (Summary Mode) + @findex gnus-summary-toggle-mime + @cindex MIME + Toggle MIME processing (@code{gnus-summary-toggle-mime}). + @item C-c C-r @kindex C-c C-r (Summary Mode) ! @findex gnus-summary-caesar-message @cindex rot 13/47 @cindex caesar messages @cindex encrypted articles Caesar rotate letters by 13 places and Japanese characters by 47 places ! (@code{gnus-summary-caesar-message}). @end table @kindex = (Summary Mode) ! @findex gnus-summary-expand-window ! The command @kbd{=} (@code{gnus-summary-expand-window}) expands the Summary window by deleting the Article window. Use it when you want to concentrate on the Summary buffer. This command is different from @kbd{C-x 1} when more than two windows exist. ! @cindex rot 13/47 @cindex caesar messages @cindex encrypted articles @kindex C-c C-r (Summary Mode) ! @findex gnus-summary-caesar-message ! The command @kbd{C-c C-r} (@code{gnus-summary-caesar-message}) rotates ! all letters in the body of the current article by 13/47 places. (This encoding is often called ``rot 13''.) To undo this operation, run it a second time. @c Japanese characters are rotated by 47 places. *************** page at a time. To advance to the next *** 823,830 **** on the screen. @kindex w (Summary Mode) ! @findex gnus-Summary-stop-page-breaking ! The command @kbd{w} (@code{gnus-Summary-stop-page-breaking}) temporarily suspends page breaking; it makes the entire current article visible. You can turn off page breaking all the time by setting the variable @code{gnus-break-pages} to @code{nil}. --- 868,875 ---- on the screen. @kindex w (Summary Mode) ! @findex gnus-summary-stop-page-breaking ! The command @kbd{w} (@code{gnus-summary-stop-page-breaking}) temporarily suspends page breaking; it makes the entire current article visible. You can turn off page breaking all the time by setting the variable @code{gnus-break-pages} to @code{nil}. *************** variable @code{gnus-break-pages} to @cod *** 835,846 **** default is to match a formfeed character at the beginning of a line. @kindex t (Summary Mode) ! @findex gnus-Summary-toggle-header @vindex gnus-ignored-headers GNUS normally hides many uninteresting header fields when it displays an article. (The variable @code{gnus-ignored-headers} controls which fields are ignored.) If you want to see the whole header, type @code{t} ! (@code{gnus-Summary-toggle-header}). Use @kbd{t} a second time to hide the uninteresting header fields again. @node Scrolling --- 880,891 ---- default is to match a formfeed character at the beginning of a line. @kindex t (Summary Mode) ! @findex gnus-summary-toggle-header @vindex gnus-ignored-headers GNUS normally hides many uninteresting header fields when it displays an article. (The variable @code{gnus-ignored-headers} controls which fields are ignored.) If you want to see the whole header, type @code{t} ! (@code{gnus-summary-toggle-header}). Use @kbd{t} a second time to hide the uninteresting header fields again. @node Scrolling *************** Summary buffer, you can use the usual Em *** 853,886 **** @table @kbd @item SPC @kindex SPC (Summary Mode) ! @findex gnus-Summary-next-page Scroll to the next page of the current article ! (@code{gnus-Summary-next-page}). Select it first if no article is selected yet. Select the next unread article automatically at the end of the message. @item DEL @kindex DEL (Summary Mode) ! @findex gnus-Summary-prev-page ! Scroll the current article backward (@code{gnus-Summary-prev-page}). @item RET @kindex RET (Summary Mode) ! @findex gnus-Summary-scroll-up Scroll the current article one (or @var{n}) lines forward ! (@code{gnus-Summary-scroll-up}). A negative argument scrolls backward. @item < @kindex < (Summary Mode) ! @findex gnus-Summary-beginning-of-article Move point to the beginning of the current article ! (@code{gnus-Summary-beginning-of-article}). @item > @kindex > (Summary Mode) ! @findex gnus-Summary-end-of-article Move point to the end of the current article ! (@code{gnus-Summary-end-of-article}). @end table @ignore --- 898,931 ---- @table @kbd @item SPC @kindex SPC (Summary Mode) ! @findex gnus-summary-next-page Scroll to the next page of the current article ! (@code{gnus-summary-next-page}). Select it first if no article is selected yet. Select the next unread article automatically at the end of the message. @item DEL @kindex DEL (Summary Mode) ! @findex gnus-summary-prev-page ! Scroll the current article backward (@code{gnus-summary-prev-page}). @item RET @kindex RET (Summary Mode) ! @findex gnus-summary-scroll-up Scroll the current article one (or @var{n}) lines forward ! (@code{gnus-summary-scroll-up}). A negative argument scrolls backward. @item < @kindex < (Summary Mode) ! @findex gnus-summary-beginning-of-article Move point to the beginning of the current article ! (@code{gnus-summary-beginning-of-article}). @item > @kindex > (Summary Mode) ! @findex gnus-summary-end-of-article Move point to the end of the current article ! (@code{gnus-summary-end-of-article}). @end table @ignore *************** and display that line's article. *** 897,945 **** @table @kbd @item n @kindex n (Summary Mode) ! @findex gnus-Summary-next-unread-article Read the next article, skipping marked articles ! (@code{gnus-Summary-next-unread-article}). @item p @kindex p (Summary Mode) ! @findex gnus-Summary-prev-unread-article Read the previous article, skipping marked articles ! (@code{gnus-Summary-prev-unread-article}). @c These are like C-n g and C-p g. ! @ignore @item N @kindex N (Summary Mode) ! @findex gnus-Summary-next-article ! Read the next article (@code{gnus-Summary-next-article}). @item P @kindex P (Summary Mode) ! @findex gnus-Summary-prev-article ! Read the previous article (@code{gnus-Summary-prev-article}). ! @end ignore @item C-M-n @kindex C-M-n (Summary Mode) ! @findex gnus-Summary-next-same-subject Read the next article with the same subject as the current article ! (@code{gnus-Summary-next-same-subject}). @item C-M-p @kindex C-M-p (Summary Mode) ! @findex gnus-Summary-prev-same-subject Read the previous article with the same subject as the current article ! (@code{gnus-Summary-prev-same-subject}). @ifset GNUS ! @item M-x gnus-Summary-next-unread-same-subject ! @findex gnus-Summary-next-unread-same-subject Read the next article with the same subject as the current article, skipping marked articles. ! @item M-x gnus-Summary-prev-unread-same-subject ! @findex gnus-Summary-prev-unread-same-subject Read the previous article with the same subject as the current article, skipping marked articles. @end ifset --- 942,989 ---- @table @kbd @item n @kindex n (Summary Mode) ! @findex gnus-summary-next-unread-article Read the next article, skipping marked articles ! (@code{gnus-summary-next-unread-article}). @item p @kindex p (Summary Mode) ! @findex gnus-summary-prev-unread-article Read the previous article, skipping marked articles ! (@code{gnus-summary-prev-unread-article}). @c These are like C-n g and C-p g. ! @c !!! These bindings are necessary. @item N @kindex N (Summary Mode) ! @findex gnus-summary-next-article ! Read the next article (@code{gnus-summary-next-article}). @item P @kindex P (Summary Mode) ! @findex gnus-summary-prev-article ! Read the previous article (@code{gnus-summary-prev-article}). @item C-M-n @kindex C-M-n (Summary Mode) ! @findex gnus-summary-next-same-subject Read the next article with the same subject as the current article ! (@code{gnus-summary-next-same-subject}). @item C-M-p @kindex C-M-p (Summary Mode) ! @findex gnus-summary-prev-same-subject Read the previous article with the same subject as the current article ! (@code{gnus-summary-prev-same-subject}). @ifset GNUS ! @item M-x gnus-summary-next-unread-same-subject ! @findex gnus-summary-next-unread-same-subject Read the next article with the same subject as the current article, skipping marked articles. ! @item M-x gnus-summary-prev-unread-same-subject ! @findex gnus-summary-prev-unread-same-subject Read the previous article with the same subject as the current article, skipping marked articles. @end ifset *************** skipping marked articles. *** 946,1002 **** @item . @kindex . (Summary Mode) ! @findex gnus-Summary-first-unread-article Read the first unread article ! (@code{gnus-Summary-first-unread-article}). @item l @kindex l (Summary Mode) ! @findex gnus-Summary-goto-last-article ! Read the article selected last (@code{gnus-Summary-goto-last-article}). If you repeat @kbd{l}, it keeps moving to articles that you read longer and longer ago. @c ??? That isn't implemented yet. @c Equivalent to C-u j g. @ignore @item J @var{number} RET @kindex J (Summary Mode) ! @findex gnus-Summary-goto-article Read the article specified by the article @var{number} ! (@code{gnus-Summary-goto-article}). @end ignore @end table @kindex n (Summary Mode) ! @findex gnus-Summary-next-unread-article @kindex p (Summary Mode) ! @findex gnus-Summary-prev-unread-article @vindex gnus-auto-select-same @pindex rn If the variable @code{gnus-auto-select-same} is non-@code{nil}, the ! commands @kbd{n} and @kbd{p} (@code{gnus-Summary-next-unread-article} ! and @code{gnus-Summary-prev-unread-article}) skip articles until they come to another article with the same subject. If you are used to reading news with @samp{rn -S}, set the variable to non-@code{nil} to get familiar behavior. @c ??? Does this apply to anything besides N and P? ! @ignore @kindex N (Summary Mode) ! @findex gnus-Summary-next-article @kindex P (Summary Mode) ! @findex gnus-Summary-prev-article @vindex gnus-auto-extend-newsgroup If the variable @code{gnus-auto-extend-newsgroup} is non-@code{nil}, ! the commands @kbd{N} and @kbd{P} (@code{gnus-Summary-next-article} and ! @code{gnus-Summary-prev-article}) extend visible articles to forward and backward if possible. The Summary buffer normally displays just a subset of the extant articles; extending the buffer means that if you try to move forward from the last article shown, it looks for later articles that are not shown, and puts them into the buffer so you can move to them. - @end ignore @vindex gnus-auto-select-next The variable @code{gnus-auto-select-next} defines the behavior of GNUS --- 990,1047 ---- @item . @kindex . (Summary Mode) ! @findex gnus-summary-first-unread-article Read the first unread article ! (@code{gnus-summary-first-unread-article}). @item l @kindex l (Summary Mode) ! @findex gnus-summary-goto-last-article ! Read the article selected last (@code{gnus-summary-goto-last-article}). If you repeat @kbd{l}, it keeps moving to articles that you read longer and longer ago. @c ??? That isn't implemented yet. + @c !!! I hope in the next version. @c Equivalent to C-u j g. + @c !!! Remove key binding. @ignore @item J @var{number} RET @kindex J (Summary Mode) ! @findex gnus-summary-goto-article Read the article specified by the article @var{number} ! (@code{gnus-summary-goto-article}). @end ignore @end table @kindex n (Summary Mode) ! @findex gnus-summary-next-unread-article @kindex p (Summary Mode) ! @findex gnus-summary-prev-unread-article @vindex gnus-auto-select-same @pindex rn If the variable @code{gnus-auto-select-same} is non-@code{nil}, the ! commands @kbd{n} and @kbd{p} (@code{gnus-summary-next-unread-article} ! and @code{gnus-summary-prev-unread-article}) skip articles until they come to another article with the same subject. If you are used to reading news with @samp{rn -S}, set the variable to non-@code{nil} to get familiar behavior. @c ??? Does this apply to anything besides N and P? ! @c !!! Yes. @kindex N (Summary Mode) ! @findex gnus-summary-next-article @kindex P (Summary Mode) ! @findex gnus-summary-prev-article @vindex gnus-auto-extend-newsgroup If the variable @code{gnus-auto-extend-newsgroup} is non-@code{nil}, ! the commands @kbd{N} and @kbd{P} (@code{gnus-summary-next-article} and ! @code{gnus-summary-prev-article}) extend visible articles to forward and backward if possible. The Summary buffer normally displays just a subset of the extant articles; extending the buffer means that if you try to move forward from the last article shown, it looks for later articles that are not shown, and puts them into the buffer so you can move to them. @vindex gnus-auto-select-next The variable @code{gnus-auto-select-next} defines the behavior of GNUS *************** article. *** 1022,1028 **** @cindex newly arrived article A newly arrived article. ! @item (@samp{-}) @cindex saved article An article marked as saved. --- 1067,1073 ---- @cindex newly arrived article A newly arrived article. ! @item @samp{-} @cindex saved article An article marked as saved. *************** buffer. Here are some commands for chan *** 1041,1063 **** @table @kbd @item d @kindex d (Summary Mode) ! @findex gnus-Summary-mark-as-read-forward Mark this line's article as read, then move point to the following line ! (@code{gnus-Summary-mark-as-read-forward}). This and the following similar commands do not select an article; they only move point in the Summary buffer. @item u @kindex u (Summary Mode) ! @findex gnus-Summary-mark-as-unread-forward Mark this line's article as saved, then move point to the following line ! (@code{gnus-Summary-mark-as-unread-forward}). @item M-u @kindex M-u (Summary Mode) ! @findex gnus-Summary-clear-mark-forward Clear marks on this line's article, then move point to the next line ! (@code{gnus-Summary-clear-mark-forward}). This sets the status to ``newly arrived''. @item D --- 1086,1108 ---- @table @kbd @item d @kindex d (Summary Mode) ! @findex gnus-summary-mark-as-read-forward Mark this line's article as read, then move point to the following line ! (@code{gnus-summary-mark-as-read-forward}). This and the following similar commands do not select an article; they only move point in the Summary buffer. @item u @kindex u (Summary Mode) ! @findex gnus-summary-mark-as-unread-forward Mark this line's article as saved, then move point to the following line ! (@code{gnus-summary-mark-as-unread-forward}). @item M-u @kindex M-u (Summary Mode) ! @findex gnus-summary-clear-mark-forward Clear marks on this line's article, then move point to the next line ! (@code{gnus-summary-clear-mark-forward}). This sets the status to ``newly arrived''. @item D *************** backwards instead of forwards in the Sum *** 1071,1137 **** @item k @kindex k (Summary Mode) ! @findex gnus-Summary-kill-same-subject-and-select Mark as read all articles with the same subject as the current article, then select the next unread article ! (@code{gnus-Summary-kill-same-subject-and-select}). Use this when you decide a certain discussion is not interesting. @item C-k @kindex C-k (Summary Mode) ! @findex gnus-Summary-kill-same-subject Mark as read all articles with the same subject as the current article ! (@code{gnus-Summary-kill-same-subject}). @item c @kindex c (Summary Mode) ! @findex gnus-Summary-catch-up-and-exit @cindex catch up Mark all newly arrived articles as read; then exit the current newsgroup ! (@code{gnus-Summary-catch-up-and-exit}). This does not change the status of articles that are saved. ! @ignore ! @item M-x gnus-Summary-catch-up-all-and-exit ! @findex gnus-Summary-catch-up-all-and-exit @cindex catch up ! Mark all articles as read, and then exit the current newsgroup. ! @item M-x gnus-Summary-catch-up ! @findex gnus-Summary-catch-up @cindex catch up Mark all newly arrived articles as read, but don't alter saved articles. ! @item M-x gnus-Summary-catch-up-all ! @findex gnus-Summary-catch-up-all @cindex catch up Mark all articles as read. - @end ignore @item x @kindex x (Summary Mode) ! @findex gnus-Summary-delete-marked-as-read Delete summary lines for articles marked as read ! (@code{gnus-Summary-delete-marked-as-read}). @item X @var{marks} RET @kindex X (Summary Mode) ! @findex gnus-Summary-delete-marked-with Delete headers marked with any of @var{marks} ! (@code{gnus-Summary-delete-marked-with}). @end table @kindex x (Summary Mode) ! @findex gnus-Summary-delete-marked-as-read @kindex X (Summary Mode) ! @findex gnus-Summary-delete-marked-with @cindex large newsgroup You can make it easier to see the remaining unread articles in the Summary buffer by deleting the lines describing the already read articles. To do this, use the command @kbd{x} ! (@code{gnus-Summary-delete-marked-as-read}). The command @kbd{X} ! (@code{gnus-Summary-delete-marked-with}) deletes headers which have certain specified marks. Thus, @kbd{X D - @key{RET}} deletes all articles marked with @samp{D} or @samp{-}---which is to say, all read and saved articles. (There are no spaces in that command; we inserted --- 1116,1181 ---- @item k @kindex k (Summary Mode) ! @findex gnus-summary-kill-same-subject-and-select Mark as read all articles with the same subject as the current article, then select the next unread article ! (@code{gnus-summary-kill-same-subject-and-select}). Use this when you decide a certain discussion is not interesting. @item C-k @kindex C-k (Summary Mode) ! @findex gnus-summary-kill-same-subject Mark as read all articles with the same subject as the current article ! (@code{gnus-summary-kill-same-subject}). @item c @kindex c (Summary Mode) ! @findex gnus-summary-catchup-and-exit @cindex catch up Mark all newly arrived articles as read; then exit the current newsgroup ! (@code{gnus-summary-catchup-and-exit}). This does not change the status of articles that are saved. ! @item M-x gnus-summary-catchup-all-and-exit ! @findex gnus-summary-catchup-all-and-exit @cindex catch up ! Mark all articles (including saved articles) as read, and then exit the ! current newsgroup. ! @item M-x gnus-summary-catchup ! @findex gnus-summary-catchup @cindex catch up Mark all newly arrived articles as read, but don't alter saved articles. ! @item M-x gnus-summary-catchup-all ! @findex gnus-summary-catchup-all @cindex catch up Mark all articles as read. @item x @kindex x (Summary Mode) ! @findex gnus-summary-delete-marked-as-read Delete summary lines for articles marked as read ! (@code{gnus-summary-delete-marked-as-read}). @item X @var{marks} RET @kindex X (Summary Mode) ! @findex gnus-summary-delete-marked-with Delete headers marked with any of @var{marks} ! (@code{gnus-summary-delete-marked-with}). @end table @kindex x (Summary Mode) ! @findex gnus-summary-delete-marked-as-read @kindex X (Summary Mode) ! @findex gnus-summary-delete-marked-with @cindex large newsgroup You can make it easier to see the remaining unread articles in the Summary buffer by deleting the lines describing the already read articles. To do this, use the command @kbd{x} ! (@code{gnus-summary-delete-marked-as-read}). The command @kbd{X} ! (@code{gnus-summary-delete-marked-with}) deletes headers which have certain specified marks. Thus, @kbd{X D - @key{RET}} deletes all articles marked with @samp{D} or @samp{-}---which is to say, all read and saved articles. (There are no spaces in that command; we inserted *************** spaces for clarity when showing it here. *** 1142,1150 **** @cindex threads (in GNUS) @cindex references between articles ! A @dfn{thread} is defined as a set of articles related by cross-reference. ! These references make use of header fields such as @samp{In-reply-to:}, ! which cite the message ID of another article. Conversations in a newsgroup usually contain several threads under a single subject. This makes it difficult to know which article follows --- 1186,1195 ---- @cindex threads (in GNUS) @cindex references between articles ! A @dfn{thread} is defined as a set of articles related by ! cross-reference. These references make use of header fields ! @samp{References:} and @samp{In-Reply-To:}, which cite the message ID of ! another article. Conversations in a newsgroup usually contain several threads under a single subject. This makes it difficult to know which article follows *************** conversation, mark entire threads as rea *** 1154,1161 **** trees. @kindex M-C-t (Summary Mode) ! @findex gnus-Summary-toggle-threads ! The command @kbd{M-C-t} (@code{gnus-Summary-toggle-threads}) toggles showing conversation threads in Summary mode. If it is turned on, Summary buffer is displayed in a tree structured form which shows the thread structure. --- 1199,1206 ---- trees. @kindex M-C-t (Summary Mode) ! @findex gnus-summary-toggle-threads ! The command @kbd{M-C-t} (@code{gnus-summary-toggle-threads}) toggles showing conversation threads in Summary mode. If it is turned on, Summary buffer is displayed in a tree structured form which shows the thread structure. *************** thread structure. *** 1163,1239 **** @table @kbd @item C-M-t @kindex C-M-t (Summary Mode) ! @findex gnus-Summary-toggle-threads Toggle thread-based reading ! (@code{gnus-Summary-toggle-threads}). @item C-M-s @kindex C-M-s (Summary Mode) ! @findex gnus-Summary-show-thread Show the thread subtree of the current line ! (@code{gnus-Summary-show-thread}). ! @item M-x gnus-Summary-show-all-threads ! @findex gnus-Summary-show-all-threads Show all thread subtrees. @item C-M-h @kindex C-M-h (Summary Mode) ! @findex gnus-Summary-hide-thread Hide the thread subtrees of the current line ! (@code{gnus-Summary-hide-thread}). ! @item M-x gnus-Summary-hide-all-threads ! @findex gnus-Summary-hide-all-threads Hide all thread subtrees. @item C-M-f @kindex C-M-f (Summary Mode) ! @findex gnus-Summary-next-thread Go to the next thread at the same level ! (@code{gnus-Summary-next-thread}). @item C-M-b @kindex C-M-b (Summary Mode) ! @findex gnus-Summary-prev-thread Go to the previous thread at the same level ! (@code{gnus-Summary-prev-thread}). @item C-M-d @kindex C-M-d (Summary Mode) ! @findex gnus-Summary-down-thread Go down to next thread subordinate to the current line. ! (@code{gnus-Summary-down-thread}). @item C-M-u @kindex C-M-u (Summary Mode) ! @findex gnus-Summary-up-thread Go up to the parent thread of the current line ! (@code{gnus-Summary-up-thread}). @item C-M-k @kindex C-M-k (Summary Mode) ! @findex gnus-Summary-kill-thread Mark all articles under current thread as read ! (@code{gnus-Summary-kill-thread}). @end table @c ??? Unclear @kindex C-M-h (Summary Mode) ! @findex gnus-Summary-hide-thread @kindex C-M-s (Summary Mode) ! @findex gnus-Summary-show-thread Thread subtrees can be hidden by using the command @kbd{C-M-h} ! (@code{gnus-Summary-hide-thread}), and the hidden subtrees can be shown by using the command @kbd{C-M-s} ! (@code{gnus-Summary-show-thread}). @vindex gnus-thread-hide-killed @kindex C-M-k (Summary Mode) ! @findex gnus-Summary-kill-thread If the variable @code{gnus-thread-hide-killed} is non-@code{nil}, thread subtrees killed by the command @kbd{C-M-k} ! (@code{gnus-Summary-kill-thread}) are hidden automatically. @vindex gnus-thread-hide-subtree If you want to hide thread subtrees initially, set the variable --- 1208,1284 ---- @table @kbd @item C-M-t @kindex C-M-t (Summary Mode) ! @findex gnus-summary-toggle-threads Toggle thread-based reading ! (@code{gnus-summary-toggle-threads}). @item C-M-s @kindex C-M-s (Summary Mode) ! @findex gnus-summary-show-thread Show the thread subtree of the current line ! (@code{gnus-summary-show-thread}). ! @item M-x gnus-summary-show-all-threads ! @findex gnus-summary-show-all-threads Show all thread subtrees. @item C-M-h @kindex C-M-h (Summary Mode) ! @findex gnus-summary-hide-thread Hide the thread subtrees of the current line ! (@code{gnus-summary-hide-thread}). ! @item M-x gnus-summary-hide-all-threads ! @findex gnus-summary-hide-all-threads Hide all thread subtrees. @item C-M-f @kindex C-M-f (Summary Mode) ! @findex gnus-summary-next-thread Go to the next thread at the same level ! (@code{gnus-summary-next-thread}). @item C-M-b @kindex C-M-b (Summary Mode) ! @findex gnus-summary-prev-thread Go to the previous thread at the same level ! (@code{gnus-summary-prev-thread}). @item C-M-d @kindex C-M-d (Summary Mode) ! @findex gnus-summary-down-thread Go down to next thread subordinate to the current line. ! (@code{gnus-summary-down-thread}). @item C-M-u @kindex C-M-u (Summary Mode) ! @findex gnus-summary-up-thread Go up to the parent thread of the current line ! (@code{gnus-summary-up-thread}). @item C-M-k @kindex C-M-k (Summary Mode) ! @findex gnus-summary-kill-thread Mark all articles under current thread as read ! (@code{gnus-summary-kill-thread}). @end table @c ??? Unclear @kindex C-M-h (Summary Mode) ! @findex gnus-summary-hide-thread @kindex C-M-s (Summary Mode) ! @findex gnus-summary-show-thread Thread subtrees can be hidden by using the command @kbd{C-M-h} ! (@code{gnus-summary-hide-thread}), and the hidden subtrees can be shown by using the command @kbd{C-M-s} ! (@code{gnus-summary-show-thread}). @vindex gnus-thread-hide-killed @kindex C-M-k (Summary Mode) ! @findex gnus-summary-kill-thread If the variable @code{gnus-thread-hide-killed} is non-@code{nil}, thread subtrees killed by the command @kbd{C-M-k} ! (@code{gnus-summary-kill-thread}) are hidden automatically. @vindex gnus-thread-hide-subtree If you want to hide thread subtrees initially, set the variable *************** digest. *** 1260,1313 **** @table @kbd @item C-c C-n @kindex C-c C-n (Summary Mode) ! @findex gnus-Summary-next-digest Scroll to the next digest message of the current article ! (@code{gnus-Summary-next-digest}). @item C-c C-p @kindex C-c C-p (Summary Mode) ! @findex gnus-Summary-prev-digest Scroll to the previous digest message of the current article ! (@code{gnus-Summary-prev-digest}). @item C-d @kindex C-d (Summary Mode) ! @findex gnus-Summary-rmail-digest @cindex Rmail Read the current digest article using Rmail ! (@code{gnus-Summary-rmail-digest}). @end table @kindex C-c C-n (Summary Mode) ! @findex gnus-Summary-next-digest @kindex C-c C-p (Summary Mode) ! @findex gnus-Summary-prev-digest @vindex gnus-digest-separator @cindex digest separator The commands @kbd{C-c C-n} and @kbd{C-c C-p} ! (@code{gnus-Summary-next-digest} and @code{gnus-Summary-prev-digest}) scroll a digest article to the next and previous digested message, respectively. The variable @code{gnus-digest-separator} specifies a regexp which separates digested messages. @kindex C-d (Summary Mode) ! @findex gnus-Summary-rmail-digest ! @vindex gnus-Select-article-hook @cindex Rmail @c ??? Fix the xref. ! The command @kbd{C-d} (@code{gnus-Summary-rmail-digest}) runs Rmail on a digest article and makes it possible to read messages not in digest form using Rmail Mode. @xref{Rmail, Rmail, emacs}, for more ! information on Rmail Mode. Use the hook @code{gnus-Select-article-hook} to run Rmail on digest articles automatically. ! @vindex gnus-Select-digest-hook @cindex incomplete digest articles Some newsgroups use a digest format that cannot be read using Rmail. In this case, @kbd{C-d} displays @samp{Article is not a digest} in the echo area. It is, however, possible to read these incomplete digest articles by modifying the message headers or bodies appropriately using ! the hook @code{gnus-Select-digest-hook}. @xref{Hooks}, to modify incomplete digest articles. @vindex gnus-digest-show-summary --- 1305,1358 ---- @table @kbd @item C-c C-n @kindex C-c C-n (Summary Mode) ! @findex gnus-summary-next-digest Scroll to the next digest message of the current article ! (@code{gnus-summary-next-digest}). @item C-c C-p @kindex C-c C-p (Summary Mode) ! @findex gnus-summary-prev-digest Scroll to the previous digest message of the current article ! (@code{gnus-summary-prev-digest}). @item C-d @kindex C-d (Summary Mode) ! @findex gnus-summary-rmail-digest @cindex Rmail Read the current digest article using Rmail ! (@code{gnus-summary-rmail-digest}). @end table @kindex C-c C-n (Summary Mode) ! @findex gnus-summary-next-digest @kindex C-c C-p (Summary Mode) ! @findex gnus-summary-prev-digest @vindex gnus-digest-separator @cindex digest separator The commands @kbd{C-c C-n} and @kbd{C-c C-p} ! (@code{gnus-summary-next-digest} and @code{gnus-summary-prev-digest}) scroll a digest article to the next and previous digested message, respectively. The variable @code{gnus-digest-separator} specifies a regexp which separates digested messages. @kindex C-d (Summary Mode) ! @findex gnus-summary-rmail-digest ! @vindex gnus-select-article-hook @cindex Rmail @c ??? Fix the xref. ! The command @kbd{C-d} (@code{gnus-summary-rmail-digest}) runs Rmail on a digest article and makes it possible to read messages not in digest form using Rmail Mode. @xref{Rmail, Rmail, emacs}, for more ! information on Rmail Mode. Use the hook @code{gnus-select-article-hook} to run Rmail on digest articles automatically. ! @vindex gnus-select-digest-hook @cindex incomplete digest articles Some newsgroups use a digest format that cannot be read using Rmail. In this case, @kbd{C-d} displays @samp{Article is not a digest} in the echo area. It is, however, possible to read these incomplete digest articles by modifying the message headers or bodies appropriately using ! the hook @code{gnus-select-digest-hook}. @xref{Hooks}, to modify incomplete digest articles. @vindex gnus-digest-show-summary *************** is invoked. *** 1324,1375 **** @table @kbd @item s @kindex s (Summary Mode) ! @findex gnus-Summary-isearch-article Do incremental search on the current article ! (@code{gnus-Summary-isearch-article}). @item M-s @var{regexp} RET @kindex M-s (Summary Mode) ! @findex gnus-Summary-search-article-forward Search for articles containing a match for @var{regexp} forward ! (@code{gnus-Summary-search-article-forward}). If @var{regexp} is empty, the last regexp used is used again. ! @ignore ! @item M-S @var{regexp} RET ! @kindex M-S (Summary Mode) ! @findex gnus-Summary-search-article-backward Search for articles containing a match for @var{regexp} backward ! (@code{gnus-Summary-search-article-backward}). If @var{regexp} is empty, the last regexp used is used again. - @end ignore @item & @var{field} RET @var{regexp} RET @var{command} RET @kindex & (Summary Mode) ! @findex gnus-Summary-execute-command Execute @var{command} on articles containing a match for @var{regexp} in ! @var{field} of the headers (@code{gnus-Summary-execute-command}). If @var{field} is empty, the entire article is searched for. @end table @kindex s (Summary Mode) ! @findex gnus-Summary-isearch-article @kindex M-s (Summary Mode) ! @findex gnus-Summary-search-article-forward ! @c @kindex M-S (Summary Mode) ! @c @findex gnus-Summary-search-article-backward ! The command @kbd{s} (@code{gnus-Summary-isearch-article}) does an incremental search on the current article. This is like switching to the Article buffer and typing @kbd{C-s} except that the Summary buffer remains selected. The command @kbd{M-s} ! (@code{gnus-Summary-search-article-forward}) searches for articles containing a match for regexp. The search starts from the current point ! of the current article. To search backwards, use a negative prefix ! argument. @kindex & (Summary Mode) ! @findex gnus-Summary-execute-command ! The command @kbd{&} (@code{gnus-Summary-execute-command}) interactively reads a header field name, a regular expression, and a valid key sequence. It then searches for all articles in which that regular expression matches the contents of the specified header field. --- 1369,1419 ---- @table @kbd @item s @kindex s (Summary Mode) ! @findex gnus-summary-isearch-article Do incremental search on the current article ! (@code{gnus-summary-isearch-article}). @item M-s @var{regexp} RET @kindex M-s (Summary Mode) ! @findex gnus-summary-search-article-forward Search for articles containing a match for @var{regexp} forward ! (@code{gnus-summary-search-article-forward}). If @var{regexp} is empty, the last regexp used is used again. ! @c !!! M-S moved to M-r ! @item M-r @var{regexp} RET ! @kindex M-r (Summary Mode) ! @findex gnus-summary-search-article-backward Search for articles containing a match for @var{regexp} backward ! (@code{gnus-summary-search-article-backward}). If @var{regexp} is empty, the last regexp used is used again. @item & @var{field} RET @var{regexp} RET @var{command} RET @kindex & (Summary Mode) ! @findex gnus-summary-execute-command Execute @var{command} on articles containing a match for @var{regexp} in ! @var{field} of the headers (@code{gnus-summary-execute-command}). If @var{field} is empty, the entire article is searched for. @end table @kindex s (Summary Mode) ! @findex gnus-summary-isearch-article @kindex M-s (Summary Mode) ! @findex gnus-summary-search-article-forward ! @kindex M-r (Summary Mode) ! @findex gnus-summary-search-article-backward ! The command @kbd{s} (@code{gnus-summary-isearch-article}) does an incremental search on the current article. This is like switching to the Article buffer and typing @kbd{C-s} except that the Summary buffer remains selected. The command @kbd{M-s} ! (@code{gnus-summary-search-article-forward}) searches for articles containing a match for regexp. The search starts from the current point ! of the current article. To search backwards, use the command @kbd{M-r} ! (@code{gnus-summary-search-article-backward}).@refill @kindex & (Summary Mode) ! @findex gnus-summary-execute-command ! The command @kbd{&} (@code{gnus-summary-execute-command}) interactively reads a header field name, a regular expression, and a valid key sequence. It then searches for all articles in which that regular expression matches the contents of the specified header field. *************** It executes the key sequence in each suc *** 1382,1408 **** @table @kbd @item ^ @kindex ^ (Summary Mode) ! @findex gnus-Summary-refer-parent-article ! Refer to parent of the current article ! (@code{gnus-Summary-refer-parent-article}). With a prefix argument, go ! back to the child. ! ! @item M-r @var{Message-ID} RET ! @kindex M-r (Summary Mode) ! @findex gnus-Summary-refer-article Refer to the article by using the @var{Message-ID} ! (@code{gnus-Summary-refer-article}). @end table @kindex ^ (Summary Mode) ! @findex gnus-Summary-refer-parent-article ! The command @kbd{^} (@code{gnus-Summary-refer-parent-article}) refers to parent article of the current article. You can go back to the child article with @kbd{C-u ^}. ! @kbd{^} and @kbd{M-r} select a new article without moving point in the Summary buffer. As a consequence, you can use @kbd{g} to go back to the ! article in which you started the last sequence of @kbd{^} and @kbd{M-r} commands. You can use the @kbd{r} command in Article mode to follow a reference --- 1426,1452 ---- @table @kbd @item ^ @kindex ^ (Summary Mode) ! @findex gnus-summary-refer-parent-article ! Refer to parent of the current article in terms of the @samp{References} ! field (@code{gnus-summary-refer-parent-article}). With a prefix ! argument, go back to the child. ! ! @item M-^ @var{Message-ID} RET ! @kindex M-^ (Summary Mode) ! @findex gnus-summary-refer-article Refer to the article by using the @var{Message-ID} ! (@code{gnus-summary-refer-article}). @end table @kindex ^ (Summary Mode) ! @findex gnus-summary-refer-parent-article ! The command @kbd{^} (@code{gnus-summary-refer-parent-article}) refers to parent article of the current article. You can go back to the child article with @kbd{C-u ^}. ! @kbd{^} and @kbd{M-^} select a new article without moving point in the Summary buffer. As a consequence, you can use @kbd{g} to go back to the ! article in which you started the last sequence of @kbd{^} and @kbd{M-^} commands. You can use the @kbd{r} command in Article mode to follow a reference *************** format, Unix mailbox format, MH folder, *** 1418,1455 **** @table @kbd @item o @kindex o (Summary Mode) ! @findex gnus-Summary-save-article Save the current article in Rmail format ! (@code{gnus-Summary-save-article}). @item C-o @kindex C-o (Summary Mode) ! @findex gnus-Summary-save-in-mail Save the current article in Unix mail file format ! (@code{gnus-Summary-save-in-mail}). @item | @var{command} RET @kindex | (Summary Mode) ! @findex gnus-Summary-pipe-output Send contents of the current article through a pipe to a subprocess ! running @var{command} (@code{gnus-Summary-pipe-output}). @end table The variable @code{gnus-default-article-saver} controls the formats used by the @kbd{o} command. By default, it uses Rmail format. If you ! set the variable to @code{gnus-Summary-save-in-folder}, @kbd{o} uses MH ! format. If you set it to @code{gnus-Summary-save-in-file}, @kbd{o} saves the article text verbatim. The default value is ! @code{gnus-Summary-save-in-rmail}. (All three of these values are commands that you can bind to other keys.) @vindex gnus-article-save-directory @c ??? Is this right? @cindex @code{SAVEDIR} environment variable The variable @code{gnus-article-save-directory} specifies the default directory for saving articles. If you don't set this variable explicitly, it is initialized from the @code{SAVEDIR} environment ! variable, or, as a last resort, @code{"~/News/"}. @ifset GNUS @vindex gnus-mail-save-name --- 1462,1500 ---- @table @kbd @item o @kindex o (Summary Mode) ! @findex gnus-summary-save-article Save the current article in Rmail format ! (@code{gnus-summary-save-article}). @item C-o @kindex C-o (Summary Mode) ! @findex gnus-summary-save-in-mail Save the current article in Unix mail file format ! (@code{gnus-summary-save-in-mail}). @item | @var{command} RET @kindex | (Summary Mode) ! @findex gnus-summary-pipe-output Send contents of the current article through a pipe to a subprocess ! running @var{command} (@code{gnus-summary-pipe-output}). @end table The variable @code{gnus-default-article-saver} controls the formats used by the @kbd{o} command. By default, it uses Rmail format. If you ! set the variable to @code{gnus-summary-save-in-folder}, @kbd{o} uses MH ! format. If you set it to @code{gnus-summary-save-in-file}, @kbd{o} saves the article text verbatim. The default value is ! @code{gnus-summary-save-in-rmail}. (All three of these values are commands that you can bind to other keys.) @vindex gnus-article-save-directory @c ??? Is this right? + @c !!! Yes. @cindex @code{SAVEDIR} environment variable The variable @code{gnus-article-save-directory} specifies the default directory for saving articles. If you don't set this variable explicitly, it is initialized from the @code{SAVEDIR} environment ! variable, or, as a last resort, @file{~/News}. @ifset GNUS @vindex gnus-mail-save-name *************** variable, or, as a last resort, @code{"~ *** 1459,1467 **** The variables @code{gnus-mail-save-name}, @code{gnus-rmail-save-name}, @code{gnus-folder-save-name}, and @code{gnus-file-save-name} specify functions generating default file name to which articles are saved using ! @code{gnus-Summary-save-in-mail}, @code{gnus-Summary-save-in-rmail}, ! @code{gnus-Summary-save-in-folder}, and ! @code{gnus-Summary-save-in-file}, respectively. The function is called with @var{newsgroup}, @var{headers}, and optional @var{last-name}. --- 1504,1512 ---- The variables @code{gnus-mail-save-name}, @code{gnus-rmail-save-name}, @code{gnus-folder-save-name}, and @code{gnus-file-save-name} specify functions generating default file name to which articles are saved using ! @code{gnus-summary-save-in-mail}, @code{gnus-summary-save-in-rmail}, ! @code{gnus-summary-save-in-folder}, and ! @code{gnus-summary-save-in-file}, respectively. The function is called with @var{newsgroup}, @var{headers}, and optional @var{last-name}. *************** of articles. *** 1478,1500 **** @table @kbd @itemx C-c C-s C-n @kindex C-c C-s C-n (Summary Mode) ! @findex gnus-Summary-sort-by-number ! Sort the headers by number (@code{gnus-Summary-sort-by-number}). @itemx C-c C-s C-s @kindex C-c C-s C-s (Summary Mode) ! @findex gnus-Summary-sort-by-subject ! Sort the headers by subject (@code{gnus-Summary-sort-by-subject}). @itemx C-c C-s C-d @kindex C-c C-s C-d (Summary Mode) ! @findex gnus-Summary-sort-by-date ! Sort the headers by date (@code{gnus-Summary-sort-by-date}). @itemx C-c C-s C-a @kindex C-c C-s C-a (Summary Mode) ! @findex gnus-Summary-sort-by-author ! Sort the headers by author (@code{gnus-Summary-sort-by-author}). @end table Sorting is @dfn{stable}, which means that it does not disturb the --- 1523,1545 ---- @table @kbd @itemx C-c C-s C-n @kindex C-c C-s C-n (Summary Mode) ! @findex gnus-summary-sort-by-number ! Sort the headers by number (@code{gnus-summary-sort-by-number}). @itemx C-c C-s C-s @kindex C-c C-s C-s (Summary Mode) ! @findex gnus-summary-sort-by-subject ! Sort the headers by subject (@code{gnus-summary-sort-by-subject}). @itemx C-c C-s C-d @kindex C-c C-s C-d (Summary Mode) ! @findex gnus-summary-sort-by-date ! Sort the headers by date (@code{gnus-summary-sort-by-date}). @itemx C-c C-s C-a @kindex C-c C-s C-a (Summary Mode) ! @findex gnus-summary-sort-by-author ! Sort the headers by author (@code{gnus-summary-sort-by-author}). @end table Sorting is @dfn{stable}, which means that it does not disturb the *************** each author by date, and any messages wi *** 1506,1514 **** sorted by number. To sort in reverse order, give a prefix argument to the sort commands. ! @vindex gnus-Select-group-hook It is also possible to sort the headers automatically when a newsgroup ! is selected using the hook @code{gnus-Select-group-hook} (@pxref{Hooks}). @node Posting Articles --- 1551,1559 ---- sorted by number. To sort in reverse order, give a prefix argument to the sort commands. ! @vindex gnus-select-group-hook It is also possible to sort the headers automatically when a newsgroup ! is selected using the hook @code{gnus-select-group-hook} (@pxref{Hooks}). @node Posting Articles *************** is selected using the hook @code{gnus-Se *** 1521,1560 **** @table @kbd @item a @kindex a (Summary Mode) ! @findex gnus-Summary-post-news ! Compose a new article (@code{gnus-Summary-post-news}). @item f @kindex f (Summary Mode) ! @findex gnus-Summary-followup ! @c ??? Name is to be changed; now gnus-Summary-post-reply Compose a followup to the current article ! (@code{gnus-Summary-followup}). @item F @kindex F (Summary Mode) ! @findex gnus-Summary-followup-with-original ! @c ??? Name is to be changed; now gnus-Summary-post-reply-with-original Compose a followup, and insert the original article right away ! (@code{gnus-Summary-followup-with-original}). @item C @kindex C (Summary Mode) @cindex cancel article ! @findex gnus-Summary-cancel-article Cancel the current article you posted ! (@code{gnus-Summary-cancel-article}). @end table @kindex a (Summary Mode) ! @findex gnus-Summary-post-news @kindex f (Summary Mode) ! @findex gnus-Summary-followup @vindex gnus-interactive-post ! Type @kbd{a} (@code{gnus-Summary-post-news}) to post a new article. If the variable @code{gnus-interactive-post} is non-@code{nil}, this command reads the newsgroup, subject, and distribution interactively. ! The command @kbd{f} (@code{gnus-Summary-followup}) fills these values in automatically from those of the selected article; thus, the article you post will be a @dfn{followup} to the selected article. --- 1566,1607 ---- @table @kbd @item a @kindex a (Summary Mode) ! @findex gnus-summary-post-news ! Compose a new article (@code{gnus-summary-post-news}). @item f @kindex f (Summary Mode) ! @findex gnus-summary-followup ! @c ??? Name is to be changed; now gnus-summary-post-reply ! @c !!! Renamed in the source. Compose a followup to the current article ! (@code{gnus-summary-followup}). @item F @kindex F (Summary Mode) ! @findex gnus-summary-followup-with-original ! @c ??? Name is to be changed; now gnus-summary-post-reply-with-original ! @c !!! Renamed in the source. Compose a followup, and insert the original article right away ! (@code{gnus-summary-followup-with-original}). @item C @kindex C (Summary Mode) @cindex cancel article ! @findex gnus-summary-cancel-article Cancel the current article you posted ! (@code{gnus-summary-cancel-article}). @end table @kindex a (Summary Mode) ! @findex gnus-summary-post-news @kindex f (Summary Mode) ! @findex gnus-summary-followup @vindex gnus-interactive-post ! Type @kbd{a} (@code{gnus-summary-post-news}) to post a new article. If the variable @code{gnus-interactive-post} is non-@code{nil}, this command reads the newsgroup, subject, and distribution interactively. ! The command @kbd{f} (@code{gnus-summary-followup}) fills these values in automatically from those of the selected article; thus, the article you post will be a @dfn{followup} to the selected article. *************** article is quite short, you should edit *** 1566,1573 **** sentences you are directly responding to. @kindex F (Summary Mode) ! @findex gnus-Summary-followup-with-original ! The command @kbd{F} (@code{gnus-Summary-followup-with-original}) yanks the original article automatically. If you want to followup to several articles in a single article and want to include them in it, type @kbd{F} for each of them. You will be asked if a text being edited --- 1613,1620 ---- sentences you are directly responding to. @kindex F (Summary Mode) ! @findex gnus-summary-followup-with-original ! The command @kbd{F} (@code{gnus-summary-followup-with-original}) yanks the original article automatically. If you want to followup to several articles in a single article and want to include them in it, type @kbd{F} for each of them. You will be asked if a text being edited *************** borrowed from @file{rnewspost.el}. Type *** 1586,1596 **** @kindex C (Summary Mode) @cindex cancel article ! @findex gnus-Summary-cancel-article Suppose you post an article and then later realize that you made a horrible mistake. You really do not want anyone to see your article. You want the article to be removed from any machines that it may have ! reached. The command @kbd{C} (@code{gnus-Summary-cancel-article}) is intended to do this. First select the offending article as current, then type @kbd{C}. --- 1633,1643 ---- @kindex C (Summary Mode) @cindex cancel article ! @findex gnus-summary-cancel-article Suppose you post an article and then later realize that you made a horrible mistake. You really do not want anyone to see your article. You want the article to be removed from any machines that it may have ! reached. The command @kbd{C} (@code{gnus-summary-cancel-article}) is intended to do this. First select the offending article as current, then type @kbd{C}. *************** then type @kbd{C}. *** 1599,1629 **** @table @kbd @item r @kindex r (Summary Mode) ! @findex gnus-Summary-reply ! Reply to the author of the current article (@code{gnus-Summary-reply}). @item R @kindex R (Summary Mode) ! @findex gnus-Summary-reply-with-original Reply to the author of the current article with the original article ! (@code{gnus-Summary-reply-with-original}). @item m @kindex m (Summary Mode) ! @findex gnus-Summary-mail-other-window ! Compose a mail message in other window (@code{gnus-Summary-mail-other-window}). @end table @kindex r (Summary Mode) ! @findex gnus-Summary-reply @kindex R (Summary Mode) ! @findex gnus-Summary-reply-with-original ! @c ??? Names are to be changed; they are currently gnus-Summary-mail-reply ! @c ??? and gnus-Summary-mail-reply-with-original ! Use the command @kbd{r} (@code{gnus-Summary-reply}) to mail a reply to the author of the article. Type @kbd{C-c C-y} to yank the text of the article you are replying to. The command @kbd{R} ! (@code{gnus-Summary-reply-with-original}) yanks the original article automatically. @xref{Mail Mode}, for information on how to finish sending the reply. --- 1646,1683 ---- @table @kbd @item r @kindex r (Summary Mode) ! @findex gnus-summary-reply ! Reply to the author of the current article (@code{gnus-summary-reply}). @item R @kindex R (Summary Mode) ! @findex gnus-summary-reply-with-original Reply to the author of the current article with the original article ! (@code{gnus-summary-reply-with-original}). ! ! @item C-c C-f ! @kindex C-c C-f (Summary Mode) ! @findex gnus-summary-mail-forward ! Forward current message to someone else. ! (@code{gnus-summary-mail-forward}).@refill @item m @kindex m (Summary Mode) ! @findex gnus-summary-mail-other-window ! Compose a mail message in other window (@code{gnus-summary-mail-other-window}). @end table @kindex r (Summary Mode) ! @findex gnus-summary-reply @kindex R (Summary Mode) ! @findex gnus-summary-reply-with-original ! @c ??? Names are to be changed; they are currently gnus-summary-mail-reply ! @c ??? and gnus-summary-mail-reply-with-original ! @c !!! Renamed in the source. ! Use the command @kbd{r} (@code{gnus-summary-reply}) to mail a reply to the author of the article. Type @kbd{C-c C-y} to yank the text of the article you are replying to. The command @kbd{R} ! (@code{gnus-summary-reply-with-original}) yanks the original article automatically. @xref{Mail Mode}, for information on how to finish sending the reply. *************** automatically. *** 1631,1646 **** @ignore @cindex Mail Mode @vindex gnus-mail-reply-method @vindex gnus-mail-other-window-method @findex gnus-mail-reply-using-mhe @findex gnus-mail-other-window-using-mhe ! Mail message composer is defaulted to use Mail Mode. If you want to ! use mh-e letter Mode instead of it, set the variable ! @code{gnus-mail-reply-method} to @code{gnus-mail-reply-using-mhe} and ! the variable @code{gnus-mail-other-window-method} to @code{gnus-mail-other-window-using-mhe}. It is possible to use other mailers by customizing these variables. @inforef{Mail Mode, Mail Mode, ! emacs}, for more information on Mail Mode. @end ignore @node Exiting Newsgroup --- 1685,1706 ---- @ignore @cindex Mail Mode @vindex gnus-mail-reply-method + @vindex gnus-mail-forward-method @vindex gnus-mail-other-window-method @findex gnus-mail-reply-using-mhe @findex gnus-mail-other-window-using-mhe ! When composing a mail message, the message composer (or mailer) is ! selected by the values of the variables @code{gnus-mail-reply-method}, ! @code{gnus-mail-forward-method}, and ! @code{gnus-mail-other-window-method}. These are defaulted to use Mail ! Mode. If you want to use mh-e letter Mode instead of it, set the ! variable @code{gnus-mail-reply-method} to ! @code{gnus-mail-reply-using-mhe}, variable ! @code{gnus-mail-forward-method} to @code{gnus-mail-forward-using-mhe}, ! and the variable @code{gnus-mail-other-window-method} to @code{gnus-mail-other-window-using-mhe}. It is possible to use other mailers by customizing these variables. @inforef{Mail Mode, Mail Mode, ! emacs}, for more information on Mail Mode.@refill @end ignore @node Exiting Newsgroup *************** emacs}, for more information on Mail Mod *** 1652,1684 **** @table @kbd @item q @kindex q (Summary Mode) ! @findex gnus-Summary-exit Exit the current newsgroup, and return to Group Mode ! (@code{gnus-Summary-exit}). This updates the startup file to indicate the changes in article status in this newsgroup. @item Q @kindex Q (Summary Mode) ! @findex gnus-Summary-quit Exit the current newsgroup without saving information about article ! status (@code{gnus-Summary-quit}). The effect is to cancel all the status changes that took place while you were reading this newsgroup. @c ??? This is a pending change. The command is now G. @item C-x C-s @kindex C-x C-s (Summary Mode) ! @findex gnus-Summary-reselect-current-group Save the article status changes, but keep the newsgroup selected ! (@code{gnus-Summary-reselect-current-group}). @ignore ! @item M-x gnus-Summary-next-group ! @findex gnus-Summary-next-group Record unread articles information, then select the next newsgroup containing unread articles. ! @item M-x gnus-Summary-prev-group ! @findex gnus-Summary-prev-group Record unread articles information, then select the previous newsgroup containing unread articles. @end ignore --- 1712,1745 ---- @table @kbd @item q @kindex q (Summary Mode) ! @findex gnus-summary-exit Exit the current newsgroup, and return to Group Mode ! (@code{gnus-summary-exit}). This updates the startup file to indicate the changes in article status in this newsgroup. @item Q @kindex Q (Summary Mode) ! @findex gnus-summary-quit Exit the current newsgroup without saving information about article ! status (@code{gnus-summary-quit}). The effect is to cancel all the status changes that took place while you were reading this newsgroup. @c ??? This is a pending change. The command is now G. + @c !!! C-x C-s is used in the source. @item C-x C-s @kindex C-x C-s (Summary Mode) ! @findex gnus-summary-reselect-current-group Save the article status changes, but keep the newsgroup selected ! (@code{gnus-summary-reselect-current-group}). @ignore ! @item M-x gnus-summary-next-group ! @findex gnus-summary-next-group Record unread articles information, then select the next newsgroup containing unread articles. ! @item M-x gnus-summary-prev-group ! @findex gnus-summary-prev-group Record unread articles information, then select the previous newsgroup containing unread articles. @end ignore *************** containing unread articles. *** 1687,1695 **** @c ??? Does this reread the active file? @c ??? If so, it should be g. @c ??? If not, it should be C-x C-s. ! @kindex G (Summary Mode) ! @findex gnus-Summary-reselect-current-group ! The command @kbd{G} (@code{gnus-Summary-reselect-current-group}) selects the current newsgroup again after temporary exiting the newsgroup. If no articles remain unread, all articles in the newsgroup will be selected. A prefix argument to the command means to select all --- 1748,1757 ---- @c ??? Does this reread the active file? @c ??? If so, it should be g. @c ??? If not, it should be C-x C-s. ! @c !!! C-x C-s in the source. ! @kindex C-x C-s (Summary Mode) ! @findex gnus-summary-reselect-current-group ! The command @kbd{C-x C-s} (@code{gnus-summary-reselect-current-group}) selects the current newsgroup again after temporary exiting the newsgroup. If no articles remain unread, all articles in the newsgroup will be selected. A prefix argument to the command means to select all *************** articles in the newsgroup. *** 1704,1721 **** @table @kbd @item M-k @kindex M-k (Summary Mode) ! @findex gnus-Summary-edit-local-kill @cindex edit local KILL file Edit a local KILL file applied to the current newsgroup ! (@code{gnus-Summary-edit-local-kill}). @xref{KILL File}, for more information. @item M-K @kindex M-K (Summary Mode) ! @findex gnus-Summary-edit-global-kill @cindex edit global KILL file Edit a global KILL file applied to all newsgroups ! (@code{gnus-Summary-edit-local-kill}). @xref{KILL File}, for more information. @ignore --- 1766,1783 ---- @table @kbd @item M-k @kindex M-k (Summary Mode) ! @findex gnus-summary-edit-local-kill @cindex edit local KILL file Edit a local KILL file applied to the current newsgroup ! (@code{gnus-summary-edit-local-kill}). @xref{KILL File}, for more information. @item M-K @kindex M-K (Summary Mode) ! @findex gnus-summary-edit-global-kill @cindex edit global KILL file Edit a global KILL file applied to all newsgroups ! (@code{gnus-summary-edit-local-kill}). @xref{KILL File}, for more information. @ignore *************** Print the version number of this GNUS (@ *** 1728,1745 **** @item ? @kindex ? (Summary Mode) ! @findex gnus-Summary-describe-briefly @cindex brief help message @cindex help briefly Describe Summary Mode commands briefly ! (@code{gnus-Summary-describe-briefly}). @item C-c C-i @kindex C-c C-i (Summary Mode) ! @findex gnus-Info-find-node @cindex read Info file @cindex Info ! Read Info on Summary Mode (@code{gnus-Info-find-node}). @xref{Texinfo Manual}, to prepare an Info file of GNUS. @end table @end ignore --- 1790,1807 ---- @item ? @kindex ? (Summary Mode) ! @findex gnus-summary-describe-briefly @cindex brief help message @cindex help briefly Describe Summary Mode commands briefly ! (@code{gnus-summary-describe-briefly}). @item C-c C-i @kindex C-c C-i (Summary Mode) ! @findex gnus-info-find-node @cindex read Info file @cindex Info ! Read Info on Summary Mode (@code{gnus-info-find-node}). @xref{Texinfo Manual}, to prepare an Info file of GNUS. @end table @end ignore *************** these commands: *** 1763,1818 **** @table @kbd @item SPC @kindex SPC (Article Mode) ! @findex gnus-Article-next-page ! Scroll this window forward (@code{gnus-Article-next-page}). @item DEL @kindex DEL (Article Mode) ! @findex gnus-Article-prev-page ! Scroll this window backward (@code{gnus-Article-prev-page}). @item r @kindex r (Article Mode) ! @findex gnus-Article-refer-article Select another article by following a cross reference ! (@code{gnus-Article-refer-article}). A cross reference is specified by a Message-ID included in the text of the article. Move point to a message ID before using this command. @c ??? This is a change not yet made. @c ??? As of now, the character is o and the command name ! @c ??? is gnus-Article-pop-article. @item l @kindex l (Article Mode) ! @findex gnus-Article-last-article Go back to a previously selected article ! (@code{gnus-Article-last-article}). If you use this repeatedly, it moves back to articles that were selected longer and longer ago. @item h @kindex h (Article Mode) ! @c ??? This name is yet to be changed; currently gnus-Article-show-subject ! @findex gnus-Article-show-summary Reconfigure Emacs windows to show the Summary buffer above the Article buffer and select the Summary buffer ! (@code{gnus-Article-show-summary}). The occasion to use this is when you have been editing a message to send or article to post. @ignore @item ? @kindex ? (Article Mode) ! @findex gnus-Article-describe-briefly @cindex brief help message @cindex help briefly Describe Article Mode commands briefly ! (@code{gnus-Article-describe-briefly}). @item C-c C-i @kindex C-c C-i (Article Mode) ! @findex gnus-Info-find-node @cindex read Info file @cindex Info ! Read Info on Article Mode (@code{gnus-Info-find-node}). @xref{Texinfo Manual}, to prepare an Info file of GNUS. @end ignore @end table --- 1825,1890 ---- @table @kbd @item SPC @kindex SPC (Article Mode) ! @findex gnus-article-next-page ! Scroll this window forward (@code{gnus-article-next-page}). @item DEL @kindex DEL (Article Mode) ! @findex gnus-article-prev-page ! Scroll this window backward (@code{gnus-article-prev-page}). @item r @kindex r (Article Mode) ! @findex gnus-article-refer-article Select another article by following a cross reference ! (@code{gnus-article-refer-article}). A cross reference is specified by a Message-ID included in the text of the article. Move point to a message ID before using this command. @c ??? This is a change not yet made. @c ??? As of now, the character is o and the command name ! @c ??? is gnus-article-pop-article. ! @c !!! This is wrong. gnus-article-pop-article pops reference history, ! @c !!! and goes back along the history. ! @item o ! @kindex o (Article Mode) ! @findex gnus-article-pop-article ! Return to the previous article from the referenced article ! (@code{gnus-article-pop-article}).@refill ! @ignore @item l @kindex l (Article Mode) ! @findex gnus-article-last-article Go back to a previously selected article ! (@code{gnus-article-last-article}). If you use this repeatedly, it moves back to articles that were selected longer and longer ago. + @end ignore @item h @kindex h (Article Mode) ! @c ??? This name is yet to be changed; currently gnus-article-show-subject ! @c !!! Renamed in the source. ! @findex gnus-article-show-summary Reconfigure Emacs windows to show the Summary buffer above the Article buffer and select the Summary buffer ! (@code{gnus-article-show-summary}). The occasion to use this is when you have been editing a message to send or article to post. @ignore @item ? @kindex ? (Article Mode) ! @findex gnus-article-describe-briefly @cindex brief help message @cindex help briefly Describe Article Mode commands briefly ! (@code{gnus-article-describe-briefly}). @item C-c C-i @kindex C-c C-i (Article Mode) ! @findex gnus-info-find-node @cindex read Info file @cindex Info ! Read Info on Article Mode (@code{gnus-info-find-node}). @xref{Texinfo Manual}, to prepare an Info file of GNUS. @end ignore @end table *************** Read Info on Article Mode (@code{gnus-In *** 1822,1828 **** @cindex startup file @cindex quick startup file @cindex raw startup file ! @cindex @file{.newsrc} Each user who reads news has a file called the @dfn{startup file} which records which groups he or she subscribes to and which articles have --- 1894,1900 ---- @cindex startup file @cindex quick startup file @cindex raw startup file ! @cindex .newsrc Each user who reads news has a file called the @dfn{startup file} which records which groups he or she subscribes to and which articles have *************** These commands in Group mode operate on *** 1842,1860 **** @table @kbd @item R @kindex R (Group Mode) ! @findex gnus-Group-restart Restart GNUS, using the raw startup file instead of the quick one, and ! get newly arrived articles (@code{gnus-Group-restart}). @item s @kindex s (Group Mode) @c @itemx x @c @kindex x (Group Mode) ! @findex gnus-Group-force-update @cindex update startup file @cindex save startup file Update both startup files based on changes you have made in the ! Newsgroups buffer (@code{gnus-Group-force-update}). @end table @node Kill File --- 1914,1932 ---- @table @kbd @item R @kindex R (Group Mode) ! @findex gnus-group-restart Restart GNUS, using the raw startup file instead of the quick one, and ! get newly arrived articles (@code{gnus-group-restart}). @item s @kindex s (Group Mode) @c @itemx x @c @kindex x (Group Mode) ! @findex gnus-group-force-update @cindex update startup file @cindex save startup file Update both startup files based on changes you have made in the ! Newsgroups buffer (@code{gnus-group-force-update}). @end table @node Kill File *************** newsgroup. *** 1874,1881 **** @menu * Making a Kill File:: How to make a kill file. * Editing Kill Files:: How to edit kill files. ! * Kill File Example:: A real example of a kill file. ! * Names of Kill Files:: Where kill files are kept in the file system. * Background Kills:: Background kill processing. * Advanced Kills:: Advanced kill processing. @end menu --- 1946,1953 ---- @menu * Making a Kill File:: How to make a kill file. * Editing Kill Files:: How to edit kill files. ! * Kill File Example:: A real example of a kill file. ! * Names of Kill Files:: Where kill files are kept in the file system. * Background Kills:: Background kill processing. * Advanced Kills:: Advanced kill processing. @end menu *************** You can use these GNUS commands to find *** 1966,1989 **** @table @kbd @item M-k @kindex M-k (Summary Mode) ! @findex gnus-Summary-edit-local-kill @cindex edit local KILL file Edit a local KILL file applied to the current newsgroup ! (@code{gnus-Summary-edit-local-kill}). @item M-K @kindex M-K (Summary Mode) ! @findex gnus-Summary-edit-global-kill @cindex edit global KILL file Edit a global KILL file applied to all newsgroups ! (@code{gnus-Summary-edit-local-kill}). @end table @noindent The same key sequences (@kbd{M-k} and @kbd{M-K}) are available in Group mode also, but the commands that implement them are ! @code{gnus-Group-edit-local-kill} and ! @code{gnus-Group-edit-global-kill}. @cindex Kill-File mode The major mode of these buffers is Kill-File mode, which is like Emacs --- 2038,2061 ---- @table @kbd @item M-k @kindex M-k (Summary Mode) ! @findex gnus-summary-edit-local-kill @cindex edit local KILL file Edit a local KILL file applied to the current newsgroup ! (@code{gnus-summary-edit-local-kill}). @item M-K @kindex M-K (Summary Mode) ! @findex gnus-summary-edit-global-kill @cindex edit global KILL file Edit a global KILL file applied to all newsgroups ! (@code{gnus-summary-edit-local-kill}). @end table @noindent The same key sequences (@kbd{M-k} and @kbd{M-K}) are available in Group mode also, but the commands that implement them are ! @code{gnus-group-edit-local-kill} and ! @code{gnus-group-edit-global-kill}. @cindex Kill-File mode The major mode of these buffers is Kill-File mode, which is like Emacs *************** Lisp mode but with the following additio *** 1992,2033 **** @table @kbd @item C-c C-k C-s @kindex C-c C-k C-s (Kill-File Mode) ! @findex gnus-Kill-file-kill-by-subject Insert a template of a kill command on subject ! (@code{gnus-Kill-file-kill-by-subject}). @item C-c C-k C-a @kindex C-c C-k C-a (Kill-File Mode) ! @findex gnus-Kill-file-kill-by-author Insert a template of a kill command on author ! (@code{gnus-Kill-file-kill-by-author}). @item C-c C-a @kindex C-c C-a (Kill-File Mode) ! @findex gnus-Kill-file-apply-buffer Evaluate the whole current buffer, but do so with the Summary buffer ! current (@code{gnus-Kill-file-apply-buffer}). This is a convenient way to try out a kill file you have been editing. @item C-c C-e @kindex C-c C-e (Kill-File Mode) ! @findex gnus-Kill-file-apply-last-sexp Evaluate the sexp before point in current buffer, but do so with the ! Summary buffer current (@code{gnus-Kill-file-apply-last-sexp}). - @ignore @item C-c C-c @kindex C-c C-c (Kill-File Mode) ! @findex gnus-Kill-file-exit Save the kill file and then return to the previous buffer ! (@code{gnus-Kill-file-exit}). @item C-c C-i @kindex C-c C-i (Kill-File Mode) ! @findex gnus-Info-find-node @cindex read Info file @cindex Info ! Read Info on kill file (@code{gnus-Info-find-node}). @xref{Texinfo Manual}, to prepare an Info file of GNUS. @end ignore @end table --- 2064,2105 ---- @table @kbd @item C-c C-k C-s @kindex C-c C-k C-s (Kill-File Mode) ! @findex gnus-kill-file-kill-by-subject Insert a template of a kill command on subject ! (@code{gnus-kill-file-kill-by-subject}). @item C-c C-k C-a @kindex C-c C-k C-a (Kill-File Mode) ! @findex gnus-kill-file-kill-by-author Insert a template of a kill command on author ! (@code{gnus-kill-file-kill-by-author}). @item C-c C-a @kindex C-c C-a (Kill-File Mode) ! @findex gnus-kill-file-apply-buffer Evaluate the whole current buffer, but do so with the Summary buffer ! current (@code{gnus-kill-file-apply-buffer}). This is a convenient way to try out a kill file you have been editing. @item C-c C-e @kindex C-c C-e (Kill-File Mode) ! @findex gnus-kill-file-apply-last-sexp Evaluate the sexp before point in current buffer, but do so with the ! Summary buffer current (@code{gnus-kill-file-apply-last-sexp}). @item C-c C-c @kindex C-c C-c (Kill-File Mode) ! @findex gnus-kill-file-exit Save the kill file and then return to the previous buffer ! (@code{gnus-kill-file-exit}). + @ignore @item C-c C-i @kindex C-c C-i (Kill-File Mode) ! @findex gnus-info-find-node @cindex read Info file @cindex Info ! Read Info on kill file (@code{gnus-info-find-node}). @xref{Texinfo Manual}, to prepare an Info file of GNUS. @end ignore @end table *************** Read Info on kill file (@code{gnus-Info- *** 2034,2041 **** @kindex C-c C-k C-s (Kill-File Mode) @kindex C-c C-k C-a (Kill-File Mode) ! @findex gnus-Kill-file-kill-by-subject ! @findex gnus-Kill-file-kill-by-author The effects of @kbd{C-c C-k C-s} and @kbd{C-c C-k C-a} depend on how you began editing the kill file. If you gave the command @kbd{M-k} or @kbd{M-K} while in the Summary buffer, then the article that was current --- 2106,2113 ---- @kindex C-c C-k C-s (Kill-File Mode) @kindex C-c C-k C-a (Kill-File Mode) ! @findex gnus-kill-file-kill-by-subject ! @findex gnus-kill-file-kill-by-author The effects of @kbd{C-c C-k C-s} and @kbd{C-c C-k C-a} depend on how you began editing the kill file. If you gave the command @kbd{M-k} or @kbd{M-K} while in the Summary buffer, then the article that was current *************** author. *** 2054,2061 **** ;; Apply to the newsgroup `control' if the NNTP server is flab. (if (string-equal gnus-nntp-server "flab") (progn ! (gnus-kill "Summary" "ihave flab\\|sendme") ! (gnus-kill "Summary" "cancel\\|newgroup\\|rmgroup" "d") (gnus-expunge "X"))) @end example --- 2126,2133 ---- ;; Apply to the newsgroup `control' if the NNTP server is flab. (if (string-equal gnus-nntp-server "flab") (progn ! (gnus-kill "Subject" "ihave flab\\|sendme") ! (gnus-kill "Subject" "cancel\\|newgroup\\|rmgroup" "d") (gnus-expunge "X"))) @end example *************** emacs -batch -l gnus -f gnus-batch-kill *** 2091,2097 **** @noindent where @var{newsgroups} are newsgroup names separated by whitespace. @samp{!} preceding a newsgroup name means negation, and @samp{all} ! Specifies all newsgroups not yet decided. These interpretations are the same as the options line of the startup file (@pxref{Startup File}). @node Advanced Kills --- 2163,2169 ---- @noindent where @var{newsgroups} are newsgroup names separated by whitespace. @samp{!} preceding a newsgroup name means negation, and @samp{all} ! specifies all newsgroups not yet decided. These interpretations are the same as the options line of the startup file (@pxref{Startup File}). @node Advanced Kills *************** same as the options line of the startup *** 2098,2106 **** @subsection Advanced Kill Processing @findex gnus-apply-kill-file ! @vindex gnus-Apply-kill-hook Internally, applying kills means to run the hook ! @code{gnus-Apply-kill-hook}. It is called after the Summary buffer is prepared for a selected newsgroup. The default hook is the function @code{gnus-apply-kill-file} which loads a global kill file and a local kill file in this order. A different style of the kill processing can --- 2170,2178 ---- @subsection Advanced Kill Processing @findex gnus-apply-kill-file ! @vindex gnus-apply-kill-hook Internally, applying kills means to run the hook ! @code{gnus-apply-kill-hook}. It is called after the Summary buffer is prepared for a selected newsgroup. The default hook is the function @code{gnus-apply-kill-file} which loads a global kill file and a local kill file in this order. A different style of the kill processing can *************** file. *** 2115,2122 **** @findex gnus-newsgroup-kill-file @example ;; @r{Get rid of the default hook.} ! (setq gnus-Apply-kill-hook nil) ! (add-hook 'gnus-Apply-kill-hook '(lambda () ;; Apply a local kill file. (load (gnus-newsgroup-kill-file gnus-newsgroup-name) t nil t))) --- 2187,2194 ---- @findex gnus-newsgroup-kill-file @example ;; @r{Get rid of the default hook.} ! (setq gnus-apply-kill-hook nil) ! (add-hook 'gnus-apply-kill-hook '(lambda () ;; Apply a local kill file. (load (gnus-newsgroup-kill-file gnus-newsgroup-name) t nil t))) *************** hook variable to @code{nil}.) *** 2132,2139 **** @example ;; @r{Get rid of the default hook.} ! (setq gnus-Apply-kill-hook nil) ! (add-hook 'gnus-Apply-kill-hook '(lambda () ;; Apply a global kill file. (load (gnus-newsgroup-kill-file nil) t nil t))) --- 2204,2211 ---- @example ;; @r{Get rid of the default hook.} ! (setq gnus-apply-kill-hook nil) ! (add-hook 'gnus-apply-kill-hook '(lambda () ;; Apply a global kill file. (load (gnus-newsgroup-kill-file nil) t nil t))) *************** without loading the kill files. *** 2147,2163 **** @vindex gnus-newsgroup-name @example ;; @r{Get rid of the default hook.} ! (setq gnus-Apply-kill-hook nil) ! (add-hook 'gnus-Apply-kill-hook '(lambda () ;; Apply to the newsgroup `control' ;; if the NNTP server is flab. (and (string-equal gnus-nntp-server "flab") ! (string-equal gnus-newsgroup-name "control") ! (progn ! (gnus-kill "Summary" "ihave flab\\|sendme") ! (gnus-kill "Summary" "cancel\\|newgroup\\|rmgroup" "d") ! (gnus-expunge "X"))))) @end example @node Customization --- 2219,2235 ---- @vindex gnus-newsgroup-name @example ;; @r{Get rid of the default hook.} ! (setq gnus-apply-kill-hook nil) ! (add-hook 'gnus-apply-kill-hook '(lambda () ;; Apply to the newsgroup `control' ;; if the NNTP server is flab. (and (string-equal gnus-nntp-server "flab") ! (string-equal gnus-newsgroup-name "control") ! (progn ! (gnus-kill "Subject" "ihave flab\\|sendme") ! (gnus-kill "Subject" "cancel\\|newgroup\\|rmgroup" "d") ! (gnus-expunge "X"))))) @end example @node Customization *************** spool of your machine rather than NNTP, *** 2200,2210 **** @xref{NNTP Service}, and @pxref{Local News Spool}, for more information. ! @vindex gnus-your-domain @vindex DOMAINNAME @findex system-name @cindex domain ! @item gnus-your-domain Specifies the domain which is the domain part of your mail address excluding the local host name of your machine. The environment variable @code{DOMAINNAME} is used instead if defined. If the function --- 2272,2283 ---- @xref{NNTP Service}, and @pxref{Local News Spool}, for more information. ! @c !!! gnus-your-domain is renamed to gnus-local-domain. ! @vindex gnus-local-domain @vindex DOMAINNAME @findex system-name @cindex domain ! @item gnus-local-domain Specifies the domain which is the domain part of your mail address excluding the local host name of your machine. The environment variable @code{DOMAINNAME} is used instead if defined. If the function *************** excluding the local host name of your ma *** 2212,2229 **** define the domain. @xref{Domain,, Domain and Organization}, for more information. ! @vindex gnus-your-organization @vindex ORGANIZATION @cindex organization ! @item gnus-your-organization Specifies the organization you belong to. The environment variable @code{ORGANIZATION} is used instead if defined. If the value begins with a slash, it is taken as the name of a file whose contents are read for the value. @xref{Domain,, Domain and Organization}, for more information. @vindex gnus-use-generic-from ! @vindex gnus-your-domain @vindex DOMAINNAME @cindex GENERICFROM @cindex From field --- 2285,2340 ---- define the domain. @xref{Domain,, Domain and Organization}, for more information. ! @c !!! gnus-your-organization is renamed ot gnus-local-organization. ! @vindex gnus-local-organization @vindex ORGANIZATION @cindex organization ! @item gnus-local-organization Specifies the organization you belong to. The environment variable @code{ORGANIZATION} is used instead if defined. If the value begins with a slash, it is taken as the name of a file whose contents are read for the value. @xref{Domain,, Domain and Organization}, for more information. + + @cindex time zone + @cindex Date field + @cindex RFC822 + @pindex inews + @pindex timezone.el + @pindex Bnews + @pindex Cnews + @pindex INN + @findex gnus-gmt-to-local + @vindex gnus-article-prepare-hook + @vindex gnus-local-timezone + @vindex gnus-required-headers + @item gnus-local-timezone + + Specifies the local time zone you belong to. The value can be either a + time zone name such as @samp{"JST"} or a difference in hour from GMT + such as @samp{+0900}. If the variable is non-@code{nil}, a general time + zone handling package @file{timezone.el} is used to generate a valid + date for @samp{Date:} field in terms of RFC822. Otherwise, if it is + nil, GNUS generate a date ignoring the local time zone. If you are + using Bnews, it is okay since @file{inews} will rewrite the invalid + date. However, if you are using Cnews or INN, you must set the variable + to the correct time zone or remove @code{Date} from the variable + @code{gnus-required-headers} since their @file{inews} do not rewrite the + wrong @samp{Date:} field.@refill + + If you want to display the time of articles in your local time zone, + call the function @code{gnus-gmt-to-local} from the hook + @code{gnus-article-prepare-hook}.@refill + + @vindex gnus-local-distributions + @cindex distributions + @item gnus-local-distributions + Specifies a list of distributions. The head of the list is used as + default. Each element of the list must be a string. If distributions + file is available, its content is also used as distributions. @vindex gnus-use-generic-from ! @vindex gnus-local-domain @vindex DOMAINNAME @cindex GENERICFROM @cindex From field *************** information. *** 2231,2237 **** Non-@code{nil} means the local host name of your machine will not appear in the @samp{From:} field of article headers. If the variable is a string, it is used as your domain instead of the definition by the ! variable @code{gnus-your-domain} or the environment variable @code{DOMAINNAME}. @xref{GENERICFROM}, for more information. @vindex gnus-use-generic-path --- 2342,2348 ---- Non-@code{nil} means the local host name of your machine will not appear in the @samp{From:} field of article headers. If the variable is a string, it is used as your domain instead of the definition by the ! variable @code{gnus-local-domain} or the environment variable @code{DOMAINNAME}. @xref{GENERICFROM}, for more information. @vindex gnus-use-generic-path *************** is used in the @samp{Path:} field as the *** 2244,2252 **** --- 2355,2391 ---- definition by the variable @code{gnus-nntp-server}. @xref{GENERICPATH}, for more information. + @vindex gnus-ignored-newsgroups + @item gnus-ignored-newsgroups + + Specify a regular expression used to ignore uninterested newsgroups in + the active file. Any lines in the active file matching this regular + expression are removed from the newsgroup list before anything else is + done to it, thus making them effectively invisible. There is no way to + know what newsgroups there are if they are ignored. + + @vindex gnus-ignored-headers + @item gnus-ignored-headers + + Specifies header fields which should be ignored in an article. + + @pindex Cnews + @pindex RFC977 + @pindex RFC1036 + @vindex gnus-required-headers + @item gnus-required-headers + + Specifies header fields which should be included in an article you will + post. RFC977 and RFC1036 require From, Date, Newsgroups, Subject, + Message-ID and Path fields. Organization, Distribution and Lines are + optional. If you want GNUS not to generate some fields, remove them + from the variable. If news system is Cnews, you may have to remove Date + and to add Lines.@refill + @vindex gnus-startup-file @cindex startup file @cindex .newsrc + @pindex Bnews @item gnus-startup-file Specifies a startup file of the Bnews system, usually @file{.newsrc}. If there is a file named @file{.newsrc-@var{server}}, it is used instead *************** when talking to @var{server}. @xref{Sta *** 2254,2267 **** information. @vindex gnus-signature-file @cindex .signature @cindex signature @item gnus-signature-file Specifies a signature file of the Bnews system, usually ! @file{.signature}. If there is a file named ! @file{.signature-@var{distribution}}, it is used instead when posting an ! article in @var{distribution}. Set the variable to @code{nil} to ! prevent appending the signature file automatically. @vindex gnus-use-cross-reference @cindex cross-references --- 2393,2410 ---- information. @vindex gnus-signature-file + @vindex gnus-prepare-article-hook + @findex gnus-inews-insert-signature @cindex .signature @cindex signature @item gnus-signature-file Specifies a signature file of the Bnews system, usually ! @file{.signature}. The signature file is processed by the function ! @code{gnus-inews-insert-signature} called from the hook ! @code{gnus-prepare-article-hook} by default. If there is a file named ! @file{.signature-@var{distribution}}, it is used instead when the ! distribution of the article is @var{distribution}. Set the variable to ! @code{nil} to prevent appending the signature file automatically. @vindex gnus-use-cross-reference @cindex cross-references *************** The following example is the default win *** 2317,2325 **** @example (setq gnus-window-configuration ! '((summary (0 1 0)) ! (newsgroups (1 0 0)) ! (article (0 3 10)))) @end example The following is an example of yet another two windows mode. Article --- 2460,2468 ---- @example (setq gnus-window-configuration ! '((summary (0 1 0)) ! (newsgroups (1 0 0)) ! (article (0 3 10)))) @end example The following is an example of yet another two windows mode. Article *************** terminal. *** 2328,2336 **** @example (setq gnus-window-configuration ! '((summary (0 1 0)) ! (newsgroups (1 0 3)) ! (article (0 1 3)))) @end example The following is an example of three windows mode. Three buffers are --- 2471,2479 ---- @example (setq gnus-window-configuration ! '((summary (0 1 0)) ! (newsgroups (1 0 3)) ! (article (0 1 3)))) @end example The following is an example of three windows mode. Three buffers are *************** always displayed on a screen. This is a *** 2338,2346 **** @example (setq gnus-window-configuration ! '((summary (1 4 0)) ! (newsgroups (1 1 3)) ! (article (1 1 3)))) @end example @vindex gnus-large-newsgroup --- 2481,2489 ---- @example (setq gnus-window-configuration ! '((summary (1 4 0)) ! (newsgroups (1 1 3)) ! (article (1 1 3)))) @end example @vindex gnus-large-newsgroup *************** inserted in @samp{FCC:} field, so you ha *** 2364,2375 **** name or disable saving a copy by editing this field. @vindex gnus-author-copy-saver @findex rmail-output @cindex Unix mailbox @cindex MH folder @pindex MH ! If the first character of the value is not @code{`|'}, the article is ! saved to the specified file using the function specified by the variable @code{gnus-author-copy-saver}. The default function @code{rmail-output} saves in Unix mailbox format. Instead, if the first character is @code{`|'}, the contents of the article is send to a program specified --- 2507,2523 ---- name or disable saving a copy by editing this field. @vindex gnus-author-copy-saver + @vindex gnus-inews-article-hook @findex rmail-output + @findex gnus-inews-do-fcc @cindex Unix mailbox @cindex MH folder @pindex MH ! The @samp{FCC:} field is processed by the function ! @code{gnus-inews-do-fcc} called from the hook ! @code{gnus-inews-article-hook} by default. Unless the first character ! of the field is @code{`|'}, the article is saved to the specified file ! using the function specified by the variable @code{gnus-author-copy-saver}. The default function @code{rmail-output} saves in Unix mailbox format. Instead, if the first character is @code{`|'}, the contents of the article is send to a program specified *************** Return a folder name like @samp{+@var{Ne *** 2458,2501 **** @vindex gnus-default-article-saver @cindex save articles @item gnus-default-article-saver ! @findex gnus-Summary-save-article Specifies a function to save articles in your favorite format using the ! command @code{gnus-Summary-save-article}. The function must be ! interactively callable; in other words, it must be an Emacs command. The functions currently provided are as follows: @table @code ! @item gnus-Summary-save-in-mail ! @findex gnus-Summary-save-in-mail @cindex Unix mailbox Save articles in Unix mailbox format. ! @item gnus-Summary-save-in-rmail ! @findex gnus-Summary-save-in-rmail @cindex Rmail file Save articles in Rmail format. ! @item gnus-Summary-save-in-folder ! @findex gnus-Summary-save-in-folder @cindex MH folder @pindex MH Save articles in an MH folder. ! @item gnus-Summary-save-in-file ! @findex gnus-Summary-save-in-file Save articles in article format. @end table @vindex gnus-article-save-directory @vindex SAVEDIR ! @findex gnus-Summary-save-in-mail ! @findex gnus-Summary-save-in-rmail ! @findex gnus-Summary-save-in-file @cindex save articles @item gnus-article-save-directory Specifies a directory name to save articles in using the commands ! @code{gnus-Summary-save-in-mail}, @code{gnus-Summary-save-in-rmail}, and ! @code{gnus-Summary-save-in-file}. The variable is initialized from the @code{SAVEDIR} environment variable. Its default value is @file{~/News}. --- 2606,2649 ---- @vindex gnus-default-article-saver @cindex save articles @item gnus-default-article-saver ! @findex gnus-summary-save-article Specifies a function to save articles in your favorite format using the ! command @code{gnus-summary-save-article}. The function must be ! interactively funcallable. In other words, it must be an Emacs command. The functions currently provided are as follows: @table @code ! @item gnus-summary-save-in-mail ! @findex gnus-summary-save-in-mail @cindex Unix mailbox Save articles in Unix mailbox format. ! @item gnus-summary-save-in-rmail ! @findex gnus-summary-save-in-rmail @cindex Rmail file Save articles in Rmail format. ! @item gnus-summary-save-in-folder ! @findex gnus-summary-save-in-folder @cindex MH folder @pindex MH Save articles in an MH folder. ! @item gnus-summary-save-in-file ! @findex gnus-summary-save-in-file Save articles in article format. @end table @vindex gnus-article-save-directory @vindex SAVEDIR ! @findex gnus-summary-save-in-mail ! @findex gnus-summary-save-in-rmail ! @findex gnus-summary-save-in-file @cindex save articles @item gnus-article-save-directory Specifies a directory name to save articles in using the commands ! @code{gnus-summary-save-in-mail}, @code{gnus-summary-save-in-rmail}, and ! @code{gnus-summary-save-in-file}. The variable is initialized from the @code{SAVEDIR} environment variable. Its default value is @file{~/News}. *************** Specifies a directory name to save artic *** 2504,2526 **** Specifies a file name of kill file (@pxref{Kill File}). Its default value is @file{KILL}. - @vindex gnus-default-distribution - @cindex distribution - @item gnus-default-distribution - Specifies a distribution inserted automatically when no distribution is - specified. - @vindex gnus-novice-user @item gnus-novice-user Non-@code{nil} means you are a novice to USENET. If it is non-@code{nil}, verbose messages may be displayed or your confirmations may be required. @vindex gnus-interactive-post @item gnus-interactive-post Non-@code{nil} means that newsgroup, subject, and distribution are asked for interactively when composing a new article. @vindex gnus-user-login-name @vindex USER @vindex LOGNAME --- 2652,2680 ---- Specifies a file name of kill file (@pxref{Kill File}). Its default value is @file{KILL}. @vindex gnus-novice-user @item gnus-novice-user Non-@code{nil} means you are a novice to USENET. If it is non-@code{nil}, verbose messages may be displayed or your confirmations may be required. + + @vindex gnus-interactive-catchup + @item gnus-interactive-catchup + + Non-@code{nil} means that your confirmation is required when catching up + a newsgroup in Group mode.@refill @vindex gnus-interactive-post @item gnus-interactive-post Non-@code{nil} means that newsgroup, subject, and distribution are asked for interactively when composing a new article. + + @vindex gnus-interactive-exit + @item gnus-interactive-exit + Non-@code{nil} means that your confirmation is required when exiting + GNUS.@refill + @vindex gnus-user-login-name @vindex USER @vindex LOGNAME *************** Non-@code{nil} means all headers of an a *** 2548,2553 **** --- 2702,2714 ---- @item gnus-save-all-headers Non-@code{nil} means all headers of an article are saved in a file. + @cindex MIME + @vindex gnus-show-mime + @vindex gnus-show-mime-method + @item gnus-show-mime + Non-@code{nil} means process a MIME message. The message is processed + by the function specified by the variable @code{gnus-show-mime-method}. + @vindex gnus-show-threads @cindex threads @cindex conversation threads *************** thread-based reading is turned on. *** 2568,2575 **** @item gnus-thread-hide-subtree Non-@code{nil} means thread subtrees are hidden initially. If thread subtrees are hidden, you have to run the command ! @code{gnus-Summary-show-thread} by hand or by using ! @code{gnus-Select-article-hook} to show them. @vindex gnus-thread-hide-killed @cindex threads --- 2729,2736 ---- @item gnus-thread-hide-subtree Non-@code{nil} means thread subtrees are hidden initially. If thread subtrees are hidden, you have to run the command ! @code{gnus-summary-show-thread} by hand or by using ! @code{gnus-select-article-hook} to show them. @vindex gnus-thread-hide-killed @cindex threads *************** Specifies indentation level of thread su *** 2597,2603 **** @item gnus-auto-extend-newsgroup Non-@code{nil} means visible articles are automatically extended to forward and backward if possible when the commands @kbd{N} and @kbd{P} ! (@code{gnus-Summary-next-article} and @code{gnus-Summary-prev-article}) are executed in Summary Mode. @vindex gnus-auto-select-first --- 2758,2764 ---- @item gnus-auto-extend-newsgroup Non-@code{nil} means visible articles are automatically extended to forward and backward if possible when the commands @kbd{N} and @kbd{P} ! (@code{gnus-summary-next-article} and @code{gnus-summary-prev-article}) are executed in Summary Mode. @vindex gnus-auto-select-first *************** are executed in Summary Mode. *** 2605,2612 **** Non-@code{nil} means the first unread article is selected automatically when a newsgroup is selected. If you'd like to prevent automatic selection of the first unread article in some newsgroups, set the ! variable to @code{nil} in the hook @code{gnus-Select-group-hook} or ! @code{gnus-Apply-kill-hook} (@pxref{Hooks}). @vindex gnus-auto-select-next @item gnus-auto-select-next --- 2766,2773 ---- Non-@code{nil} means the first unread article is selected automatically when a newsgroup is selected. If you'd like to prevent automatic selection of the first unread article in some newsgroups, set the ! variable to @code{nil} in the hook @code{gnus-select-group-hook} or ! @code{gnus-apply-kill-hook} (@pxref{Hooks}). @vindex gnus-auto-select-next @item gnus-auto-select-next *************** without any confirmations. *** 2624,2634 **** Non-@code{nil} means an article with the same subject as the current article is selected automatically like @samp{rn -S}. ! @vindex gnus-auto-center-subject ! @item gnus-auto-center-subject Non-@code{nil} means that the cursor is always kept centered in the Summary Mode window. @vindex gnus-break-pages @vindex gnus-page-delimiter @cindex page break --- 2785,2802 ---- Non-@code{nil} means an article with the same subject as the current article is selected automatically like @samp{rn -S}. ! @vindex gnus-auto-center-summary ! @item gnus-auto-center-summary Non-@code{nil} means that the cursor is always kept centered in the Summary Mode window. + @vindex gnus-auto-mail-to-author + @vindex gnus-mail-send-method + @item gnus-auto-mail-to-author + Non-@code{nil} means that inserts @samp{To:} field which is filled with + the author of the article when followuping. Mail is sent using the + function specified by the variable @code{gnus-mail-send-method}. + @vindex gnus-break-pages @vindex gnus-page-delimiter @cindex page break *************** articles. Its default value is @code{"^ *** 2651,2671 **** @cindex digest summary @cindex summary of digest @item gnus-digest-show-summary ! @findex gnus-Summary-rmail-digest Non-@code{nil} means that a summary of digest messages is shown when reading a digest article using the command ! @code{gnus-Summary-rmail-digest}. @vindex gnus-digest-separator @cindex digest separator @item gnus-digest-separator ! @findex gnus-Summary-next-digest ! @findex gnus-Summary-prev-digest ! @findex gnus-Summary-rmail-digest Specifies a regexp which separates messages in a digest article. Changes to this variable only affect the commands ! @code{gnus-Summary-next-digest} and @code{gnus-Summary-prev-digest}, but ! not the command @code{gnus-Summary-rmail-digest}. @vindex gnus-optional-headers @item gnus-optional-headers --- 2819,2839 ---- @cindex digest summary @cindex summary of digest @item gnus-digest-show-summary ! @findex gnus-summary-rmail-digest Non-@code{nil} means that a summary of digest messages is shown when reading a digest article using the command ! @code{gnus-summary-rmail-digest}. @vindex gnus-digest-separator @cindex digest separator @item gnus-digest-separator ! @findex gnus-summary-next-digest ! @findex gnus-summary-prev-digest ! @findex gnus-summary-rmail-digest Specifies a regexp which separates messages in a digest article. Changes to this variable only affect the commands ! @code{gnus-summary-next-digest} and @code{gnus-summary-prev-digest}, but ! not the command @code{gnus-summary-rmail-digest}. @vindex gnus-optional-headers @item gnus-optional-headers *************** in an article. *** 2697,2711 **** @xref{Hooks}, to change optional headers according to selected newsgroups. ! @vindex gnus-Info-directory @cindex Info ! @item gnus-Info-directory @vindex Info-directory Specifies a directory where the GNUS Info file is placed. It is not necessary to change this variable unless you install an Info file in a directory different from the variable @code{Info-directory}. @xref{Texinfo Manual}, for more information. @vindex gnus-mail-reply-method @findex gnus-mail-reply-using-mail @findex gnus-mail-reply-using-mhe --- 2865,2890 ---- @xref{Hooks}, to change optional headers according to selected newsgroups. ! @vindex gnus-info-directory @cindex Info ! @item gnus-info-directory @vindex Info-directory + Specifies a directory where the GNUS Info file is placed. It is not necessary to change this variable unless you install an Info file in a directory different from the variable @code{Info-directory}. @xref{Texinfo Manual}, for more information. + @cindex MIME + @pindex metamail + @findex metamail-buffer + @vindex gnus-show-mime-method + @item gnus-show-mime-method + + Specifies a function to process a MIME message in current buffer. The + function @code{metamail-buffer} which process the buffer through + @samp{metamail} is called by default.@refill + @vindex gnus-mail-reply-method @findex gnus-mail-reply-using-mail @findex gnus-mail-reply-using-mhe *************** directory different from the variable @c *** 2717,2727 **** --- 2896,2924 ---- @cindex MH @pindex mh-e @item gnus-mail-reply-method + Specifies a function to begin composing reply mail messages. The function will be called with an optional argument which means yank original article automatically if non-@code{nil}. To use Mail Mode, set the variable to @code{gnus-mail-reply-using-mail}. To use mh-e letter Mode, set the variable to @code{gnus-mail-reply-using-mhe}. + + @vindex gnus-mail-forward-method + @findex gnus-mail-forward-using-mail + @findex gnus-mail-forward-using-mhe + @cindex forward article + @cindex mail + @cindex Mail Mode + @cindex mh-e letter Mode + @cindex mh-e + @cindex MH + @pindex mh-e + @item gnus-mail-forward-method + + Specifies a function to forward the current message to another user. To + use Mail Mode, set the variable to @code{gnus-mail-forward-using-mail}. + To use mh-e letter Mode, set the variable to + @code{gnus-mail-forward-using-mhe}.@refill @vindex gnus-mail-other-window-method @findex gnus-mail-other-window-using-mail *************** To use Mail Mode, set the variable to *** 2738,2743 **** --- 2935,2948 ---- @code{gnus-mail-other-window-using-mail}. To use mh-e letter Mode, set the variable to @code{gnus-mail-other-window-using-mhe}. + @vindex gnus-mail-send-method + @vindex send-mail-function + @item gnus-mail-send-method + Specifies a function to mail a message too which is being posted as an + article. The message must have @samp{To:} or @samp{Cc:} field. The + value of the variable @code{send-mail-function} is the default function + which uses sendmail mail program. + @cindex add newsgroups @cindex new newsgroups @cindex kill newsgroups *************** the variable to @code{gnus-mail-other-wi *** 2746,2753 **** @vindex gnus-subscribe-newsgroup-method @item gnus-subscribe-newsgroup-method Specifies a function called with a newsgroup name when a new newsgroup ! is found. The following default definition adds new newsgroup at the ! beginning of newsgroups: @findex gnus-subscribe-newsgroup @vindex gnus-newsrc-assoc --- 2951,2983 ---- @vindex gnus-subscribe-newsgroup-method @item gnus-subscribe-newsgroup-method Specifies a function called with a newsgroup name when a new newsgroup ! is found. GNUS provides the following three functions: ! ! @table @code ! @findex gnus-subscribe-randomly ! @item gnus-subscribe-randomly ! Inserts a new newsgroup at the beginning of newsgroups. Thus, ! newsgroups are in random order.@refill ! ! @findex gnus-subscribe-alphabetically ! @item gnus-subscribe-alphabetically ! Inserts a new newsgroup in strict alphabetic order.@refill ! ! @findex gnus-subscribe-hierarchically ! @item gnus-subscribe-hierarchically ! Inserts a new newsgroup in hierarchical newsgroup order.@refill ! ! @findex gnus-subscribe-interactively ! @item gnus-subscribe-interactively ! Asks for your decision about a new newsgroup subscription, and inserts ! it in hierarchical newsgroup order if it is subscribed. Unless, it is ! killed.@refill ! @end table ! ! The following two definitions illustrate how to write your favorite ! subscribing method. The following definition (is the definition of the ! function gnus-subscribe-randomly) adds new newsgroup at the beginning of ! newsgroups: @findex gnus-subscribe-newsgroup @vindex gnus-newsrc-assoc *************** the following: *** 2769,2778 **** @end example @kindex U (Group Mode) ! @findex gnus-Group-unsubscribe-group If you want to prevent adding new newsgroups automatically and want to subscribe them later using the command @kbd{U} ! (@code{gnus-Group-unsubscribe-group}) in the Newsgroup buffer, use the following: @example --- 2999,3008 ---- @end example @kindex U (Group Mode) ! @findex gnus-group-unsubscribe-group If you want to prevent adding new newsgroups automatically and want to subscribe them later using the command @kbd{U} ! (@code{gnus-group-unsubscribe-group}) in the Newsgroup buffer, use the following: @example *************** Specifies the number of articles which i *** 2826,2839 **** the number of articles is greater than the value, verbose messages will be shown to indicate the current status. @vindex tcp-program-name @item tcp-program-name @pindex tcp.c Specifies a program which establishes communications between Emacs and ! the NNTP server. Its default value is @file{tcp} which is distributed as ! @file{tcp.c} with other files of GNUS (@pxref{Files of GNUS}). If your ! Emacs has the function @code{open-network-stream}, there is no need to ! define this variable. @end table --- 3056,3083 ---- the number of articles is greater than the value, verbose messages will be shown to indicate the current status. + @vindex nntp-debug-read + @cindex NNTP debugging + @cindex debug NNTP communication + @cindex slow terminal + @item nntp-debug-read + + Non-@code{nil} means display dots ``...'' every 10000 bytes of a message + being received. If it is a number, dots are displayed per the number. + Set the variable to @code{nil} if you are annoyed about verbose messages + while reading news from slow terminal.@refill + + @c !!! telnet is default instead of tcp. @vindex tcp-program-name @item tcp-program-name @pindex tcp.c + @pindex tcp + @pindex telnet Specifies a program which establishes communications between Emacs and ! the NNTP server. Its default value is @file{telnet}. Alternative is ! @file{tcp} which is distributed as @file{tcp.c} with other files of GNUS ! (@pxref{Files of GNUS}). If your Emacs has the function ! @code{open-network-stream}, there is no need to define this variable. @end table *************** variable @code{news-path} which is defau *** 2867,2882 **** @item nnspool-active-file @cindex active file @cindex /usr/lib/news/active ! Specifies an active file of the Bnews system for a local news spool. ! Its default value is @file{/usr/lib/news/active}. @vindex nnspool-history-file @item nnspool-history-file @cindex history file @cindex /usr/lib/news/history ! Specifies a history file of the Bnews system for a local news spool. ! Its default value is @file{/usr/lib/news/history}. Some machines may ! not have this file. In this case, commands to refer to articles by Message-IDs will not work at all (@pxref{Referencing Articles}). @end table --- 3111,3140 ---- @item nnspool-active-file @cindex active file @cindex /usr/lib/news/active ! Specifies an active file of the system for a local news spool. Its ! default value is @file{/usr/lib/news/active}. ! ! @vindex nnspool-newsgroups-file ! @item nnspool-newsgroups-file ! @cindex newsgroups file ! @cindex /usr/lib/news/newsgroups ! Specifies an newsgroups file of the system for a local news spool. Its ! default value is @file{/usr/lib/news/newsgroups}. ! ! @vindex nnspool-distributions-file ! @item nnspool-distributions-file ! @cindex distributions file ! @cindex /usr/lib/news/distributions ! Specifies an distributions file of the system for a local news spool. ! Its default value is @file{/usr/lib/news/distributions}. @vindex nnspool-history-file @item nnspool-history-file @cindex history file @cindex /usr/lib/news/history ! Specifies a history file of the system for a local news spool. Its ! default value is @file{/usr/lib/news/history}. Some machines may not ! have this file. In this case, commands to refer to articles by Message-IDs will not work at all (@pxref{Referencing Articles}). @end table *************** Message-IDs will not work at all (@pxref *** 2886,2900 **** @cindex private directory @table @code @vindex mhspool-list-directory-switches @item mhspool-list-directory-switches ! @findex mhspool-request-list @pindex ls ! Specifies switches for the function @code{mhspool-request-list} to pass ! to the command @file{ls} for getting file listings in a private directory. There should be one entry for each line. Its default value ! is @code{("-R")}. Some machines may require the @code{("-R1")} ! switch. @end table --- 3144,3167 ---- @cindex private directory @table @code + @vindex mhspool-list-folders-method + @item mhspool-list-folders-method + @findex mhspool-list-folders-using-ls + @findex mhspool-list-folders-using-sh + Specifies a function to fill the current buffer with file and directory + names for a given directory name. The output format must be the same as + that of the Unix command @samp{ls -R1}. Two functions + @code{mhspool-list-folders-using-ls} and + @code{mhspool-list-folders-using-sh} are provided now.@refill + @vindex mhspool-list-directory-switches @item mhspool-list-directory-switches ! @findex mhspool-list-folders-using-ls @pindex ls ! Specifies switches for the function @code{mhspool-list-folders-using-ls} ! to pass to the command @file{ls} for getting file listings in a private directory. There should be one entry for each line. Its default value ! is @code{("-R")}. Some machines may require the @code{("-R1")} switch. @end table *************** switch. *** 2902,2909 **** @appendixsec Function Hooks @table @code ! @vindex gnus-Group-mode-hook ! @item gnus-Group-mode-hook Called with no arguments after initializing Group Mode if its value is non-@code{nil}. This hook is intended to customize Group Mode only once. It is possible to define or change the NNTP server as you like in --- 3169,3176 ---- @appendixsec Function Hooks @table @code ! @vindex gnus-group-mode-hook ! @item gnus-group-mode-hook Called with no arguments after initializing Group Mode if its value is non-@code{nil}. This hook is intended to customize Group Mode only once. It is possible to define or change the NNTP server as you like in *************** once. It is possible to define or chang *** 2910,2917 **** this hook since the hook is called before GNUS is connected to an NNTP server. ! @vindex gnus-Summary-mode-hook ! @item gnus-Summary-mode-hook Called with no arguments after initializing Summary Mode if its value is non-@code{nil}. This hook is intended to customize Summary Mode only once. All sorts of searches in Summary Mode normally ignore the case of --- 3177,3184 ---- this hook since the hook is called before GNUS is connected to an NNTP server. ! @vindex gnus-summary-mode-hook ! @item gnus-summary-mode-hook Called with no arguments after initializing Summary Mode if its value is non-@code{nil}. This hook is intended to customize Summary Mode only once. All sorts of searches in Summary Mode normally ignore the case of *************** case, set the variable @code{case-fold-s *** 2920,2980 **** hook. The following example shows how to assign the functions ! @code{gnus-Summary-next-group} and @code{gnus-Summary-prev-group} to keys in Summary Mode. @example ! (setq gnus-Summary-mode-hook '(lambda () ! (local-set-key "\C-cn" 'gnus-Summary-next-group) ! (local-set-key "\C-cp" 'gnus-Summary-prev-group))) @end example ! @vindex gnus-Article-mode-hook ! @item gnus-Article-mode-hook Called with no arguments after initializing Article Mode if its value is non-@code{nil}. This hook is intended to customize Article Mode only once. ! @vindex gnus-Kill-file-mode-hook ! @item gnus-Kill-file-mode-hook Called with no arguments after initializing Kill-File Mode if its value is non-@code{nil}. ! @vindex gnus-Browse-killed-mode-hook ! @item gnus-Browse-killed-mode-hook Called with no arguments after initializing Browse-Killed Mode if its value is non-@code{nil}. ! @vindex gnus-Open-server-hook ! @item gnus-Open-server-hook Called with no arguments just before opening a connection to NNTP server if its value is non-@code{nil}. ! @vindex gnus-Startup-hook ! @item gnus-Startup-hook Called with no arguments after an NNTP server is successfully connected to if its value is non-@code{nil}. It is possible to change the behavior of GNUS according to the server. ! @vindex gnus-Group-prepare-hook ! @item gnus-Group-prepare-hook Called with no arguments after a list of newsgroups is prepared in the Newsgroup buffer. This hook is intended to modify the buffer. ! @vindex gnus-Summary-prepare-hook ! @item gnus-Summary-prepare-hook Called with no arguments after list of subjects is prepared in the Summary buffer. This hook is intended to modify the buffer. ! @vindex gnus-Article-prepare-hook ! @item gnus-Article-prepare-hook Called with no arguments after an article is prepared in the Article buffer. This hook is intended to modify the buffer. For example, kanji ! code conversion or un-ROT13-ing can be done in this hook. ! @vindex gnus-Select-group-hook ! @item gnus-Select-group-hook Called with no arguments when a newsgroup is selected. This hook is intended to change the behavior of GNUS according to the selected newsgroup. --- 3187,3247 ---- hook. The following example shows how to assign the functions ! @code{gnus-summary-next-group} and @code{gnus-summary-prev-group} to keys in Summary Mode. @example ! (setq gnus-summary-mode-hook '(lambda () ! (local-set-key "\C-cn" 'gnus-summary-next-group) ! (local-set-key "\C-cp" 'gnus-summary-prev-group))) @end example ! @vindex gnus-article-mode-hook ! @item gnus-article-mode-hook Called with no arguments after initializing Article Mode if its value is non-@code{nil}. This hook is intended to customize Article Mode only once. ! @vindex gnus-kill-file-mode-hook ! @item gnus-kill-file-mode-hook Called with no arguments after initializing Kill-File Mode if its value is non-@code{nil}. ! @vindex gnus-browse-killed-mode-hook ! @item gnus-browse-killed-mode-hook Called with no arguments after initializing Browse-Killed Mode if its value is non-@code{nil}. ! @vindex gnus-open-server-hook ! @item gnus-open-server-hook Called with no arguments just before opening a connection to NNTP server if its value is non-@code{nil}. ! @vindex gnus-startup-hook ! @item gnus-startup-hook Called with no arguments after an NNTP server is successfully connected to if its value is non-@code{nil}. It is possible to change the behavior of GNUS according to the server. ! @vindex gnus-group-prepare-hook ! @item gnus-group-prepare-hook Called with no arguments after a list of newsgroups is prepared in the Newsgroup buffer. This hook is intended to modify the buffer. ! @vindex gnus-summary-prepare-hook ! @item gnus-summary-prepare-hook Called with no arguments after list of subjects is prepared in the Summary buffer. This hook is intended to modify the buffer. ! @vindex gnus-article-prepare-hook ! @item gnus-article-prepare-hook Called with no arguments after an article is prepared in the Article buffer. This hook is intended to modify the buffer. For example, kanji ! code conversion or un-ROT13/47-ing can be done in this hook. ! @vindex gnus-select-group-hook ! @item gnus-select-group-hook Called with no arguments when a newsgroup is selected. This hook is intended to change the behavior of GNUS according to the selected newsgroup. *************** ignored while comparing subjects. *** 2991,3022 **** @findex gnus-header-subject @findex gnus-simplify-subject @example ! (setq gnus-Select-group-hook '(lambda () ;; First of all, sort by date. ! (gnus-sort-headers ! '(lambda (a b) ! (gnus-date-lessp (gnus-header-date a) ! (gnus-header-date b)))) ;; Then sort by subject ignoring `Re:'. ! (gnus-sort-headers ! '(lambda (a b) ! (gnus-string-lessp ! (gnus-simplify-subject ! (gnus-header-subject a) 're-only) ! (gnus-simplify-subject ! (gnus-header-subject b) 're-only) ! ))))) @end example @cindex simplify subjects The following is an example of simplifying subjects like the ! @code{gnus-Summary-next-same-subject} command does: @findex nntp-set-header-subject @vindex gnus-newsgroup-headers @example ! (setq gnus-Select-group-hook '(lambda () (mapcar (function (lambda (header) --- 3258,3290 ---- @findex gnus-header-subject @findex gnus-simplify-subject @example ! (setq gnus-select-group-hook '(lambda () ;; First of all, sort by date. ! (gnus-keysort-headers ! (function string-lessp) ! (function ! (lambda (a) ! (gnus-sortable-date (gnus-header-date a))))) ;; Then sort by subject ignoring `Re:'. ! (gnus-keysort-headers ! (function string-lessp) ! (function ! (lambda (a) ! (if case-fold-search ! (downcase (gnus-simplify-subject (gnus-header-subject a) t)) ! (gnus-simplify-subject (gnus-header-subject a) t))))) ! )) @end example @cindex simplify subjects The following is an example of simplifying subjects like the ! @code{gnus-summary-next-same-subject} command does: @findex nntp-set-header-subject @vindex gnus-newsgroup-headers @example ! (setq gnus-select-group-hook '(lambda () (mapcar (function (lambda (header) *************** prevent listing author names in the Summ *** 3035,3041 **** @findex gnus-optional-lines @findex gnus-optional-lines-and-from @example ! (setq gnus-Select-group-hook '(lambda () (cond ((string-equal "comp.sources.unix" gnus-newsgroup-name) --- 3303,3309 ---- @findex gnus-optional-lines @findex gnus-optional-lines-and-from @example ! (setq gnus-select-group-hook '(lambda () (cond ((string-equal "comp.sources.unix" gnus-newsgroup-name) *************** prevent listing author names in the Summ *** 3047,3065 **** gnus-optional-lines-and-from)))))) @end example ! @vindex gnus-Select-article-hook ! @item gnus-Select-article-hook Called with no arguments when an article is selected if its value is non-@code{nil}. ! @findex gnus-Summary-show-thread The default hook definition shows conversation thread subtrees of the selected article automatically as follows: @example ! (setq gnus-Select-article-hook '(lambda () ! (gnus-Summary-show-thread))) @end example It is possible to run Rmail on a digest article automatically as --- 3315,3333 ---- gnus-optional-lines-and-from)))))) @end example ! @vindex gnus-select-article-hook ! @item gnus-select-article-hook Called with no arguments when an article is selected if its value is non-@code{nil}. ! @findex gnus-summary-show-thread The default hook definition shows conversation thread subtrees of the selected article automatically as follows: @example ! (setq gnus-select-article-hook '(lambda () ! (gnus-summary-show-thread))) @end example It is possible to run Rmail on a digest article automatically as *************** follows: *** 3068,3090 **** @vindex gnus-newsgroup-name @vindex gnus-current-headers @example ! (setq gnus-Select-article-hook '(lambda () ! (gnus-Summary-show-thread) (cond ((string-equal "comp.sys.sun" gnus-newsgroup-name) ! (gnus-Summary-rmail-digest)) ((and (string-equal "comp.text" gnus-newsgroup-name) (string-match "^TeXhax Digest" (gnus-header-subject gnus-current-headers))) ! (gnus-Summary-rmail-digest) )))) @end example ! @vindex gnus-Select-digest-hook ! @item gnus-Select-digest-hook Called with no arguments when reading digest messages using Rmail if its value is non-@code{nil}. This hook is intended to modify an article so that Rmail can work with it. @xref{Digest Articles}, for more --- 3336,3358 ---- @vindex gnus-newsgroup-name @vindex gnus-current-headers @example ! (setq gnus-select-article-hook '(lambda () ! (gnus-summary-show-thread) (cond ((string-equal "comp.sys.sun" gnus-newsgroup-name) ! (gnus-summary-rmail-digest)) ((and (string-equal "comp.text" gnus-newsgroup-name) (string-match "^TeXhax Digest" (gnus-header-subject gnus-current-headers))) ! (gnus-summary-rmail-digest) )))) @end example ! @vindex gnus-select-digest-hook ! @item gnus-select-digest-hook Called with no arguments when reading digest messages using Rmail if its value is non-@code{nil}. This hook is intended to modify an article so that Rmail can work with it. @xref{Digest Articles}, for more *************** incomplete digest articles: *** 3095,3101 **** @findex gnus-fetch-field @example ! (setq gnus-Select-digest-hook '(lambda () ;; Reply-To: is required by ;; `undigestify-rmail-message'. --- 3363,3369 ---- @findex gnus-fetch-field @example ! (setq gnus-select-digest-hook '(lambda () ;; Reply-To: is required by ;; `undigestify-rmail-message'. *************** incomplete digest articles: *** 3105,3118 **** (insert (gnus-fetch-field "From")))))) @end example ! @vindex gnus-Rmail-digest-hook ! @item gnus-Rmail-digest-hook Called with no arguments when reading digest messages using Rmail if its value is non-@code{nil}. This hook is intended to customize Rmail Mode for reading digest articles. ! @vindex gnus-Apply-kill-hook ! @item gnus-Apply-kill-hook Called with no arguments when a newsgroup is selected and the Summary buffer is prepared if its value is non-@code{nil}. This hook is intended to apply kill files to the selected newsgroup. It is set to the --- 3373,3386 ---- (insert (gnus-fetch-field "From")))))) @end example ! @vindex gnus-rmail-digest-hook ! @item gnus-rmail-digest-hook Called with no arguments when reading digest messages using Rmail if its value is non-@code{nil}. This hook is intended to customize Rmail Mode for reading digest articles. ! @vindex gnus-apply-kill-hook ! @item gnus-apply-kill-hook Called with no arguments when a newsgroup is selected and the Summary buffer is prepared if its value is non-@code{nil}. This hook is intended to apply kill files to the selected newsgroup. It is set to the *************** hook: *** 3127,3191 **** @findex gnus-kill @vindex gnus-newsgroup-name @example ! (setq gnus-Apply-kill-hook '(lambda () (cond ((string-match "control" gnus-newsgroup-name) ! (gnus-kill "Summary" "rmgroup") (gnus-expunge "X"))))) @end example @xref{Kill File}, for more information on kill files. ! @vindex gnus-Mark-article-hook ! @item gnus-Mark-article-hook Called with no arguments when an article is selected for the first time if its value is non-@code{nil}. The hook is intended to mark an article ! as read (or unread) automatically when it is selected. The following example is the default definition of the hook: @vindex gnus-current-article @vindex gnus-newsgroup-marked ! @findex gnus-Summary-mark-as-read ! @findex gnus-Summary-set-current-mark @example ! (setq gnus-Mark-article-hook '(lambda () ;; Mark the selected article as read. (or (memq gnus-current-article gnus-newsgroup-marked) ! (gnus-Summary-mark-as-read gnus-current-article)) ;; Put "+" on the current subject. ! (gnus-Summary-set-current-mark "+") )) @end example ! It is possible to mark as unread (@samp{-}) instead when an article is selected as follows: ! @findex gnus-Summary-mark-as-unread ! @findex gnus-Summary-set-current-mark @example ! (setq gnus-Mark-article-hook '(lambda () ! ;; Mark the selected article as unread. ! (gnus-Summary-mark-as-unread gnus-current-article) ;; Put "+" on the current subject. ! (gnus-Summary-set-current-mark "+") )) @end example ! @vindex gnus-Inews-article-hook ! @item gnus-Inews-article-hook @pindex inews Called with no arguments before posting an article if its value is non-@code{nil}. This hook is called just before sending an article to ! the NNTP server or calling the @file{inews} program, while the hook ! @code{news-inews-hook} is called before preparing article headers. This ! hook is intended to run special encoding programs such as kanji code ! conversion on the article. ! @vindex gnus-Exit-group-hook ! @item gnus-Exit-group-hook @vindex gnus-newsgroup-headers Called with no arguments when exiting the current newsgroup if its value is non-@code{nil}. If your machine is so slow that exiting from Summary --- 3395,3471 ---- @findex gnus-kill @vindex gnus-newsgroup-name @example ! (setq gnus-apply-kill-hook '(lambda () (cond ((string-match "control" gnus-newsgroup-name) ! (gnus-kill "Subject" "rmgroup") (gnus-expunge "X"))))) @end example @xref{Kill File}, for more information on kill files. ! @vindex gnus-mark-article-hook ! @item gnus-mark-article-hook Called with no arguments when an article is selected for the first time if its value is non-@code{nil}. The hook is intended to mark an article ! as read (or saved) automatically when it is selected. The following example is the default definition of the hook: @vindex gnus-current-article @vindex gnus-newsgroup-marked ! @findex gnus-summary-mark-as-read ! @findex gnus-summary-set-current-mark @example ! (setq gnus-mark-article-hook '(lambda () ;; Mark the selected article as read. (or (memq gnus-current-article gnus-newsgroup-marked) ! (gnus-summary-mark-as-read gnus-current-article)) ;; Put "+" on the current subject. ! (gnus-summary-set-current-mark "+") )) @end example ! It is possible to mark as saved (@samp{-}) instead when an article is selected as follows: ! @findex gnus-summary-mark-as-unread ! @findex gnus-summary-set-current-mark @example ! (setq gnus-mark-article-hook '(lambda () ! ;; Mark the selected article as saved. ! (gnus-summary-mark-as-unread gnus-current-article) ;; Put "+" on the current subject. ! (gnus-summary-set-current-mark "+") )) @end example ! @vindex gnus-prepare-article-hook ! @item gnus-prepare-article-hook ! @cindex signature ! @findex gnus-inews-insert-signature ! Called with no arguments after preparing message body, but before ! preparing header fields which is automatically generated if its value is ! non-@code{nil}. Text changes made by this hook does not affect on the ! editing text. The default hook inserts a signature file by calling the ! function @code{gnus-inews-insert-signature}.@refill ! ! @vindex gnus-inews-article-hook ! @item gnus-inews-article-hook @pindex inews + @findex gnus-inews-do-fcc Called with no arguments before posting an article if its value is non-@code{nil}. This hook is called just before sending an article to ! the NNTP server or calling the @file{inews} program. Text changes made ! by this hook does not affect on the editing text. It is no recommended ! to alter the number of lines of the article since @samp{Lines:} field ! may be already there. The default hook does FCC (save an article to the ! specified file) by calling the function @code{gnus-inews-do-fcc}.@refill ! @vindex gnus-exit-group-hook ! @item gnus-exit-group-hook @vindex gnus-newsgroup-headers Called with no arguments when exiting the current newsgroup if its value is non-@code{nil}. If your machine is so slow that exiting from Summary *************** using cross-reference information in the *** 3194,3201 **** the variable @code{gnus-newsgroup-headers} to @code{nil} in this hook. ! @vindex gnus-Exit-gnus-hook ! @item gnus-Exit-gnus-hook Called with no arguments when exiting GNUS if its value is non-@code{nil}. If you want to clear out Emacs buffers which were created by GNUS and remain afterwards, you can use this hook. --- 3474,3481 ---- the variable @code{gnus-newsgroup-headers} to @code{nil} in this hook. ! @vindex gnus-exit-gnus-hook ! @item gnus-exit-gnus-hook Called with no arguments when exiting GNUS if its value is non-@code{nil}. If you want to clear out Emacs buffers which were created by GNUS and remain afterwards, you can use this hook. *************** The following example shows how to kill *** 3204,3210 **** posting news. @example ! (setq gnus-Exit-gnus-hook '(lambda () ;; Kill a buffer used for posting news. (and (get-buffer "*post-news*") --- 3484,3490 ---- posting news. @example ! (setq gnus-exit-gnus-hook '(lambda () ;; Kill a buffer used for posting news. (and (get-buffer "*post-news*") *************** posting news. *** 3211,3224 **** (kill-buffer "*post-news*")))) @end example ! @vindex gnus-Suspend-gnus-hook ! @item gnus-Suspend-gnus-hook Called with no arguments when suspending GNUS if its value is non-@code{nil}. The purpose is the same as the hook ! @code{gnus-Exit-gnus-hook}. ! @vindex gnus-Save-newsrc-hook ! @item gnus-Save-newsrc-hook Called with no arguments before saving the startup file @file{.newsrc} if its value is non-@code{nil}. This hook is intended to change the way of backing up the startup file. --- 3491,3504 ---- (kill-buffer "*post-news*")))) @end example ! @vindex gnus-suspend-gnus-hook ! @item gnus-suspend-gnus-hook Called with no arguments when suspending GNUS if its value is non-@code{nil}. The purpose is the same as the hook ! @code{gnus-exit-gnus-hook}. ! @vindex gnus-save-newsrc-hook ! @item gnus-save-newsrc-hook Called with no arguments before saving the startup file @file{.newsrc} if its value is non-@code{nil}. This hook is intended to change the way of backing up the startup file. diff -cprP -x *.elc emacs-19.12/man/killing.texi emacs-19.13/man/killing.texi *** emacs-19.12/man/killing.texi Tue Jun 8 05:45:34 1993 --- emacs-19.13/man/killing.texi Tue Jun 8 01:18:19 1993 *************** *** 385,397 **** Append region to contents of specified file, at the end. @end table ! To accumulate text into a buffer, use the command ! @kbd{M-x append-to-buffer}. This reads a buffer name, them inserts a copy ! of the region into the buffer specified. If you specify a nonexistent ! buffer, @code{append-to-buffer} creates the buffer. The text is ! inserted wherever point is in that buffer. If you have been using the ! buffer for editing, the copied text goes into the middle of the text of ! the buffer, wherever point happens to be in it. Point in that buffer is left at the end of the copied text, so successive uses of @code{append-to-buffer} accumulate the text in the --- 385,397 ---- Append region to contents of specified file, at the end. @end table ! To accumulate text into a buffer, use @kbd{M-x append-to-buffer}. ! This reads a buffer name, them inserts a copy of the region into the ! buffer specified. If you specify a nonexistent buffer, ! @code{append-to-buffer} creates the buffer. The text is inserted ! wherever point is in that buffer. If you have been using the buffer for ! editing, the copied text goes into the middle of the text of the buffer, ! wherever point happens to be in it. Point in that buffer is left at the end of the copied text, so successive uses of @code{append-to-buffer} accumulate the text in the diff -cprP -x *.elc emacs-19.12/man/programs.texi emacs-19.13/man/programs.texi *** emacs-19.12/man/programs.texi Tue Jun 8 05:45:43 1993 --- emacs-19.13/man/programs.texi Tue Jun 8 01:27:21 1993 *************** *** 1893,1899 **** Indent the current line (@code{fortran-indent-line}). @item @key{LFD} Indent the current and start a new indented line ! (@code{fortran-reindent-then-newline-and-indent}). @item M-@key{LFD} Break the current line and set up a continuation line. @item C-M-q --- 1893,1899 ---- Indent the current line (@code{fortran-indent-line}). @item @key{LFD} Indent the current and start a new indented line ! (@code{fortran-indent-new-line}). @item M-@key{LFD} Break the current line and set up a continuation line. @item C-M-q *************** and continuation markers to their requir *** 1908,1919 **** indents the body of the statement based on its nesting in the program. @kindex LFD @r{(Fortran mode)} ! @findex fortran-reindent-then-newline-and-indent ! The key @kbd{LFD} runs the command ! @code{fortran-reindent-then-newline-and-indent}, which reindents the ! current line then makes and indents a new line. This command is useful ! to reindent the closing statement of @samp{do} loops and other blocks ! before starting a new line. @kindex C-M-q @r{(Fortran mode)} @findex fortran-indent-subprogram --- 1908,1918 ---- indents the body of the statement based on its nesting in the program. @kindex LFD @r{(Fortran mode)} ! @findex fortran-indent-new-line ! The key @kbd{LFD} runs the command @code{fortran-indent-new-line}, ! which reindents the current line then makes and indents a new line. ! This command is useful to reindent the closing statement of @samp{do} ! loops and other blocks before starting a new line. @kindex C-M-q @r{(Fortran mode)} @findex fortran-indent-subprogram *************** followed. *** 2033,2041 **** @vindex fortran-if-indent @vindex fortran-structure-indent @vindex fortran-continuation-indent ! @vindex fortran-check-all-num-for-matching-do ! @vindex fortran-minimum-statement-indent-fixed ! @vindex fortran-minimum-statement-indent-tab Several additional variables control how Fortran indentation works: @table @code --- 2032,2039 ---- @vindex fortran-if-indent @vindex fortran-structure-indent @vindex fortran-continuation-indent ! @vindex fortran-check-all-num@dots{} ! @vindex fortran-minimum-statement-indent@dots{} Several additional variables control how Fortran indentation works: @table @code diff -cprP -x *.elc emacs-19.12/man/rmail.texi emacs-19.13/man/rmail.texi *** emacs-19.12/man/rmail.texi Tue Jun 8 05:45:46 1993 --- emacs-19.13/man/rmail.texi Tue Jun 8 01:38:51 1993 *************** *** 864,873 **** to @dfn{undigestify} it: to turn it back into many individual messages. Then you can read and delete the individual messages as it suits you. ! To undigestify a message, select it and then type @kbd{M-x ! undigestify-rmail-message}. This copies each submessage as a separate ! Rmail message and inserts them all following the digest. The digest ! message itself is flagged as deleted. @node Out of Rmail @section Converting an Rmail File to Mailbox Format --- 864,873 ---- to @dfn{undigestify} it: to turn it back into many individual messages. Then you can read and delete the individual messages as it suits you. ! To do this, type @kbd{M-x undigestify-rmail-message} after selecting ! the digest message. This extracts the submessages as separate Rmail ! messages, and inserts them following the digest. The digest message ! itself is flagged as deleted. @node Out of Rmail @section Converting an Rmail File to Mailbox Format diff -cprP -x *.elc emacs-19.12/man/text.texi emacs-19.13/man/text.texi *** emacs-19.12/man/text.texi Tue Jun 8 05:45:51 1993 --- emacs-19.13/man/text.texi Tue Jun 8 01:37:05 1993 *************** *** 525,536 **** after the newline that it deletes (@pxref{Indentation}). @findex fill-individual-paragraphs ! Another way to use fill prefixes is through @kbd{M-x ! fill-individual-paragraphs}. This command divides the region into ! paragraphs, treating every change in the amount of indentation as the ! start of a new paragraph, and fills each of these paragraphs. Thus, all ! the lines in one ``paragraph'' have the same amount of indentation. ! That indentation serves as the fill prefix for that paragraph. @findex fill-nonuniform-paragraphs @kbd{M-x fill-nonuniform-paragraphs} is a similar command that divides --- 525,537 ---- after the newline that it deletes (@pxref{Indentation}). @findex fill-individual-paragraphs ! You can use @kbd{M-x fill-individual-paragraphs} to set the fill ! prefix for each paragraph automatically. This command divides the ! region into paragraphs, treating every change in the amount of ! indentation as the start of a new paragraph, and fills each of these ! paragraphs. Thus, all the lines in one ``paragraph'' have the same ! amount of indentation. That indentation serves as the fill prefix for ! that paragraph. @findex fill-nonuniform-paragraphs @kbd{M-x fill-nonuniform-paragraphs} is a similar command that divides *************** input; it then selects the appropriate m *** 929,937 **** right (e.g., the buffer is empty), the variable @code{tex-default-mode} controls which mode is used. ! The commands @kbd{M-x plain-tex-mode}, @kbd{M-x latex-mode},and ! @kbd{M-x slitex-mode} explicitly select the variants of @TeX{} mode. ! Use these commands when @kbd{M-x tex-mode} does not guess right.@refill @menu * Editing: TeX Editing. Special commands for editing in TeX mode. --- 930,939 ---- right (e.g., the buffer is empty), the variable @code{tex-default-mode} controls which mode is used. ! When @kbd{M-x tex-mode} does not guess right, you can use the commands ! @kbd{M-x plain-tex-mode}, @kbd{M-x latex-mode}, and @kbd{M-x ! slitex-mode} to select explicitly the particular variants of @TeX{} ! mode. @menu * Editing: TeX Editing. Special commands for editing in TeX mode. diff -cprP -x *.elc emacs-19.12/man/trouble.texi emacs-19.13/man/trouble.texi *** emacs-19.12/man/trouble.texi Tue Jun 8 05:45:54 1993 --- emacs-19.13/man/trouble.texi Tue Jun 8 02:40:36 1993 *************** *** 374,383 **** @node Checklist @subsection Checklist for Bug Reports ! The best way to send a bug report is by electronic mail to ! @samp{bug-gnu-emacs@@prep.ai.mit.edu}. Do not post the bug report as ! netnews; mail is more reliable about reporting a correct address for how ! to reach you if we need more information. If you can't send electronic mail, then mail the bug report on paper to this address: --- 374,384 ---- @node Checklist @subsection Checklist for Bug Reports ! The best way to send a bug report is to mail it electronically to the ! Emacs maintainers at @samp{bug-gnu-emacs@@prep.ai.mit.edu}. Please do ! not post the bug report as netnews; mail is more reliable than netnews ! about reporting your correct address, which we may need in order to ask ! you for more information. If you can't send electronic mail, then mail the bug report on paper to this address: diff -cprP -x *.elc emacs-19.12/man/windows.texi emacs-19.13/man/windows.texi *** emacs-19.12/man/windows.texi Tue Jun 8 05:45:55 1993 --- emacs-19.13/man/windows.texi Tue Jun 8 01:18:53 1993 *************** *** 187,196 **** @item C-x 1 Get rid of all windows except the selected one (@code{delete-other-windows}). @item C-x ^ ! Make the selected window taller, at the expense of the other(s) ! (@code{enlarge-window}). @item C-x @} ! Make the selected window wider (@code{enlarge-window-horizontally}). @end table @kindex C-x 0 --- 187,195 ---- @item C-x 1 Get rid of all windows except the selected one (@code{delete-other-windows}). @item C-x ^ ! Make selected window taller (@code{enlarge-window}). @item C-x @} ! Make selected window wider (@code{enlarge-window-horizontally}). @end table @kindex C-x 0 Only in emacs-19.12/src: #README-xterm# diff -cprP -x *.elc emacs-19.12/src/ChangeLog emacs-19.13/src/ChangeLog *** emacs-19.12/src/ChangeLog Tue Jun 8 05:42:28 1993 --- emacs-19.13/src/ChangeLog Tue Jun 8 03:19:08 1993 *************** *** 1,3 **** --- 1,225 ---- + Tue Jun 8 00:38:15 1993 Jim Blandy (jimb@totoro.cs.oberlin.edu) + + * ymakefile (C_DEBUG_SWITCH, C_OPTIMIZE_SWITCH): Remove these; + people shouldn't edit this file to choose optimization and + debugging switches anyway. ../configure will set CFLAGS to an + appropriate default, which they will be able to override. + * Makefile.in (xmakefile): Don't try to turn -g and -O in + CFLAGS into C_DEBUG_SWITCH and C_OPTIMIZE_SWITCH. CFLAGS should + be the sole source of such switches, so that setting CFLAGS + controls them completely. + + Mon Jun 7 23:54:46 1993 Jim Blandy (jimb@totoro.cs.oberlin.edu) + + * config.h.in (HAVE_LIBDNET): New macro, to be defined by + ../configure. + * m/pmax.h (LIBS_MACHINE): Only put "-ldnet" here if HAVE_LIBDNET + is #defined. + + Mon Jun 7 00:10:09 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * fileio.c (syms_of_fileio): Set up Qset_visited_file_modtime. + (Fset_visited_file_modtime): Use the proper operation. + + * sysdep.c (init_baud_rate) [HAVE_TERMIOS]: Use cfgetospeed. + + * systty.h: Add NO_TERMIO conditional. + + * textprop.c (Fadd_text_properties): Don't treat the initial + interval specially, aside from splitting off the part starting + where we want to start changing things. + (Fremove_text_properties): Likewise. + For ending interval, split it left as in Fadd_text_properties. + (Fset_text_properties): Don't set starting interval if it goes + past END. Instead, split it left and set the left part. + + * keymap.c (Fdescribe_vector): Use current buf, not standard-output. + (describe_vector_princ): Add newline at end. + + * keymap.c (store_in_keymap, access_keymap): Use CHAR_META + when clearing excess high bits. + + * s/dgux.h (INTERRUPTIBLE_*): Fix spelling of macros. + + * s/hpux9.h (SYSTEM_MALLOC, GNU_MALLOC, REL_ALLOC): Definition and + #undefs deleted. + + * keymap.c: Doc fix. + + * buffer.c (Fdelete_overlay): Do nothing if overlay already deleted. + Bind inhibit-quit to t. + (Fmove_overlay): Properly handle changing buffers, or no prev buffer. + Bind inhibit-quit to t. + + * lread.c (syms_of_lread): Set up Qload. + (Fload): Handle magic file names. + + Mon Jun 7 17:07:28 1993 Shane Hartman (shane@nugget.spr.com) + + * xterm.c (x_caught_error_message): Change type to char* from char*[]. + (X_CAUGHT_ERROR_MESSAGE_SIZE): New macro. + (x_error_catcher): Corresponding changes. + (x_catch_errors): Corresponding changes. + (x_check_errors): Do not free x_caught_error_message. + (x_uncatch_errors): Set x_caught_error_message to 0 after freeing it. + + Sun Jun 6 18:38:55 1993 Paul Eggert (eggert@twinsun.com) + + * uaf.h (uaf$v_thursday): Fix misspelling of "thursday". + + * floatfns.c (Fceiling): Fix spelling of "ceiling". + + Sun Jun 6 13:41:08 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * ymakefile [__GNUC__ >= 2] (LIB_GCC): Delete spurious -L. + + * m/tekXD88.h (HAVE_RENAME): Deleted. + + * data.c (Ffset): Delete special check for t and nil. + + * xfaces.c (same_size_fonts): Compare only the width. + + * dispnew.c: Include lisp.h earlier (before termhooks.h). + + * editfns.c (Fcurrent_time_zone): Add alternative for !HAVE_TM_ZONE. + * systime.h [HAVE_TZNAME]: Declare tzname if not macro. + * config.h.in (HAVE_TZNAME): Add #undef. + + Sun Jun 6 13:42:35 1993 Nobuyuki Hikichi (hikichi@sra.co.jp) + + * m/news-risc.h (NO_MODE_T): Defined. + (LINKER): Add #undef. + + Sun Jun 6 02:44:47 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * keymap.c (access_keymap, store_in_keymap): Discard meaningless + high bits of a character event. + + Sat Jun 5 04:04:33 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * lisp.h: Don't declare malloc or realloc. + + * xfns.c [EMACS_BIT_MAPS]: Include gray.xbm from ./bitmaps. + + * xterm.c (x_new_font): Don't give up right away if XListFontsWithInfo + finds no fonts--try XLoadQueryFont anyway. + + * xfns.c (Fx_open_connection): Make `data' unsigned char. + + * window.c (Fset_window_configuration): If a window is supposed + to have a buffer, always give it one. + + * xmenu.c (Fx_popup_menu): Error if we don't get a window + or a frame somehow. + + * puresize.h: Test MULTI_FRAME, not HAVE_X_WINDOWS. + + * frame.c (Frubber_band_rectangle): Deleted. + (syms_of_frame): Don't defsubr it. + + * xselect.c (x_get_foreign_selection): Handle x_selection_timeout + as milliseconds, not as seconds. + (syms_of_xselect): Doc fix to match. + + * m/mips4.h (MIPS2): Comment out define. + (LIB_STANDARD): Delete -lisode. + + Fri Jun 4 03:06:37 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * syssignal.h [POSIX] [!__GNUC__] (sys_sigmask): Add declaration. + + * alloc.c (make_event_array): Ignore bits above CHAR_META. + + * frame.c [!MULTI_FRAME] (Fframep): New dummy definition. + (syms_of_frame): Defsubr that. + + * buffer.c (syms_of_buffer): Set up Lisp var inhibit-read-only. + * lisp.h (Vinhibit_read_only): Declared. + * buffer.c (Fbarf_if_buffer_read_only): Check Vinhibit_read_only. + * cmds.c (Fnewline): Use Fbarf_if_buffer_read_only. + + * intervals.h (INTERVAL_VISIBLE_P): Use textget. + (INTERVAL_WRITABLE_P): Use textget. + Check Vinhibit_read_only. + + * window.c (syms_of_window): Always defvar pop-up-frames + and pop-up-frame-function. + + * process.c (read_process_output): Deactivate the mark. + Save and restore Vdeactivate_mark. + + * xfns.c (x_set_menu_bar_lines_1): Adjust just the uppermost child + in a vertical split. Adjust the hight counter to the top. + (x_set_menu_bar_lines): Don't change overall frame height. + + Fri Jun 4 12:41:07 1993 Francesco Potorti` (pot@cnuce.cnr.it) + + * filelock.c (MAKE_LOCK_PATH): If SHORT_FILE_NAMES allocates + different space and calls fill_in_lock_short_file_name. + (fill_in_lock_short_file_name): New function for 14-chars hashed + file names. Replaces fill_in_lock_file_name if SHORT_FILE_NAMES. + + Thu Jun 3 00:07:07 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * sysdep.c (wait_for_termination): Fix sigpause in POSIX_SIGNALS case. + + * xterm.c (x_catch_errors): Fill in missing array size in cast. + + * Makefile.in (xmakefile): Depend on ../config.status. + + * buffer.c (init_buffer): Init default-directory of minibuffer. + + * m/iris4d.h (LIB_STANDARD): Delete -lbsd. + + * keyboard.c (read_key_sequence): Reset fkey_map when we find + something at the end of Vfunction_key_map. + + * m/ibmrt-aix.h (HAVE_FTIME): Defined. + + * emacs.c (syms_of_emacs): Doc fix. + + * keyboard.c (read_char_menu_prompt): Now static. Add declaration. + + * dispnew.c (Fredraw_display): Redraw all visible frames. + (redraw_garbaged_frames): New function. + * xdisp.c (redisplay, echo_area_display): Use redraw_garbaged_frames. + + * dispnew.c (do_pending_window_change): No need to clear + FRAME_NEW_HEIGHT/WIDTH. Do test width != 0. + + * xterm.c (x_wm_set_size_hint): Handle XGetNormalHints returning 0. + + * xfns.c (x_set_frame_parameters): Process all parms in reverse order. + + * frame.h (FRAME_MINIBUF_WINDOW): Use minibuffer_window. + + Wed Jun 2 16:12:30 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * sysdep.c (init_sys_modes): Disable VLNEXT char. + Also VWERASE, VREPRINT, VDISCARD. + + * xfaces.c: Test XOS_NEEDS_TIME_H, not HPUX, for including time.hj. + * s/sol2.h, s/hpux.h (XOS_NEEDS_TIME_H): Defined. + + Wed Jun 2 20:11:29 1993 Francesco Potorti` (pot@cnuce.cnr.it) + + * ymakefile (alloca.o): Use temp names allocax.o, allocax.s + + * m/delta.h (MOTOROLA_DELTA): Defined. + (HAVE_SYSVIPC, BAT68K, BAT_ALLOCA): Deleted--obsolete. + (STACK_DIRECTION, HAVE_X_WINDOWS): Deleted--configure knows. + (C_SWITCH_MACHINE): Set to -ga if using the Green Hills compiler. + (LIB_STANDARD, LIB_MATH): Defined to the 68881 versions. + (LIBS_SYSTEM): -lbsd brings sigblock and sigsetmask. + (sigsetmask): Undefined--it is in -lbsd. + (LDAV_SYMBOL): Undefined--we have no such thing. + (KERNEL_FILE): Defined to "/sysV68". + (BSTRING, HAVE_SELECT, HAVE_UNISTD_H, HAVE_TIMEVAL): Defined. + (SIGNALS_VIA_CHARACTERS): Defined. + (memmove): Defined as memcpy--we have no memmove. + (SIGIO, INTERRUPT_INPUT): Undefined--not yet tested. + (SHORT_FILE_NAMES, CLASH_DETECTION): Defined. + Wed Jun 2 02:06:21 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) * Version 19.12 released. *************** Tue Sep 6 20:43:10 1988 Richard Stallm *** 16771,16780 **** too-complex expression. * fileio.c (Fdo_auto_save): No "file has shrunk" msg if < 5000 chars. - - Local Variables: - mode: indented-text - left-margin: 8 - fill-column: 74 - version-control: never - End: --- 16993,16995 ---- diff -cprP -x *.elc emacs-19.12/src/Makefile.in emacs-19.13/src/Makefile.in *** emacs-19.12/src/Makefile.in Tue Jun 8 05:42:02 1993 --- emacs-19.13/src/Makefile.in Tue Jun 8 02:57:40 1993 *************** *** 71,83 **** ### appropriate CPP symbols to use in ymakefile. ### If you have a problem with cc -E here, changing ### the definition of CPP above may fix it. ! xmakefile: ymakefile config.h -rm -f xmakefile xmakefile.new junk.c junk.cpp cp ${srcdir}/ymakefile junk.c ! ${CPP} -I${srcdir} ${CFLAGS} junk.c > junk.cpp \ ! -DC_SWITCH_SITE="`echo ${CFLAGS}' ' \ ! | sed -e 's/-g /C_DEBUG_SWITCH /' \ ! -e 's/-O[0-9]* /C_OPTIMIZE_SWITCH /'`" < junk.cpp \ sed -e 's/^#.*//' \ -e 's/^[ \f\t][ \f\t]*$$//' \ --- 71,82 ---- ### appropriate CPP symbols to use in ymakefile. ### If you have a problem with cc -E here, changing ### the definition of CPP above may fix it. ! ! # Remake xmakefile whenever we reconfigure even if config.h didn't change. ! xmakefile: ymakefile config.h ../config.status -rm -f xmakefile xmakefile.new junk.c junk.cpp cp ${srcdir}/ymakefile junk.c ! ${CPP} -I${srcdir} ${CFLAGS} junk.c > junk.cpp < junk.cpp \ sed -e 's/^#.*//' \ -e 's/^[ \f\t][ \f\t]*$$//' \ diff -cprP -x *.elc emacs-19.12/src/alloc.c emacs-19.13/src/alloc.c *** emacs-19.12/src/alloc.c Tue Jun 8 05:39:53 1993 --- emacs-19.13/src/alloc.c Fri Jun 4 14:59:56 1993 *************** *** 958,966 **** for (i = 0; i < nargs; i++) /* The things that fit in a string ! are characters that are in 0...127 after discarding the meta bit. */ if (XTYPE (args[i]) != Lisp_Int ! || (XUINT (args[i]) & ~CHAR_META) >= 0200) return Fvector (nargs, args); /* Since the loop exited, we know that all the things in it are --- 958,967 ---- for (i = 0; i < nargs; i++) /* The things that fit in a string ! are characters that are in 0...127, ! after discarding the meta bit and all the bits above it. */ if (XTYPE (args[i]) != Lisp_Int ! || (XUINT (args[i]) & ~(-CHAR_META)) >= 0200) return Fvector (nargs, args); /* Since the loop exited, we know that all the things in it are diff -cprP -x *.elc emacs-19.12/src/buffer.c emacs-19.13/src/buffer.c *** emacs-19.12/src/buffer.c Tue Jun 8 05:39:56 1993 --- emacs-19.13/src/buffer.c Mon Jun 7 00:59:54 1993 *************** *** 112,117 **** --- 112,122 ---- Lisp_Object Vtransient_mark_mode; + /* t means ignore all read-only text properties. + A list means ignore such a property if its value is a member of the list. + Any non-nil value means ignore buffer-read-only. */ + Lisp_Object Vinhibit_read_only; + /* List of functions to call before changing an unmodified buffer. */ Lisp_Object Vfirst_change_hook; Lisp_Object Qfirst_change_hook; *************** DEFUN ("barf-if-buffer-read-only", Fbarf *** 939,945 **** "Signal a `buffer-read-only' error if the current buffer is read-only.") () { ! while (!NILP (current_buffer->read_only)) Fsignal (Qbuffer_read_only, (Fcons (Fcurrent_buffer (), Qnil))); return Qnil; } --- 944,951 ---- "Signal a `buffer-read-only' error if the current buffer is read-only.") () { ! if (!NILP (current_buffer->read_only) ! && NILP (Vinhibit_read_only)) Fsignal (Qbuffer_read_only, (Fcons (Fcurrent_buffer (), Qnil))); return Qnil; } *************** buffer.") *** 1545,1551 **** (overlay, beg, end, buffer) Lisp_Object overlay, beg, end, buffer; { ! struct buffer *b; CHECK_OVERLAY (overlay, 0); if (NILP (buffer)) --- 1551,1559 ---- (overlay, beg, end, buffer) Lisp_Object overlay, beg, end, buffer; { ! struct buffer *b, *ob; ! Lisp_Object obuffer; ! int count = specpdl_ptr - specpdl; CHECK_OVERLAY (overlay, 0); if (NILP (buffer)) *************** buffer.") *** 1564,1569 **** --- 1572,1579 ---- CHECK_NUMBER_COERCE_MARKER (beg, 1); CHECK_NUMBER_COERCE_MARKER (end, 1); + specbind (Qinhibit_quit, Qt); + if (XINT (beg) > XINT (end)) { Lisp_Object temp = beg; *************** buffer.") *** 1570,1579 **** beg = end; end = temp; } b = XBUFFER (buffer); /* If the overlay has changed buffers, do a thorough redisplay. */ ! if (b != XMARKER (OVERLAY_START (overlay))->buffer) windows_or_buffers_changed = 1; else /* Redisplay the area the overlay has just left, or just enclosed. */ --- 1580,1591 ---- beg = end; end = temp; } + obuffer = Fmarker_buffer (OVERLAY_START (overlay)); b = XBUFFER (buffer); + ob = XBUFFER (obuffer); /* If the overlay has changed buffers, do a thorough redisplay. */ ! if (!EQ (buffer, obuffer)) windows_or_buffers_changed = 1; else /* Redisplay the area the overlay has just left, or just enclosed. */ *************** buffer.") *** 1597,1604 **** } } ! b->overlays_before = Fdelq (overlay, b->overlays_before); ! b->overlays_after = Fdelq (overlay, b->overlays_after); Fset_marker (OVERLAY_START (overlay), beg, buffer); Fset_marker (OVERLAY_END (overlay), end, buffer); --- 1609,1619 ---- } } ! if (!NILP (obuffer)) ! { ! ob->overlays_before = Fdelq (overlay, ob->overlays_before); ! ob->overlays_after = Fdelq (overlay, ob->overlays_after); ! } Fset_marker (OVERLAY_START (overlay), beg, buffer); Fset_marker (OVERLAY_END (overlay), end, buffer); *************** buffer.") *** 1613,1619 **** /* This puts it in the right list, and in the right order. */ recenter_overlay_lists (b, XINT (b->overlay_center)); ! return overlay; } DEFUN ("delete-overlay", Fdelete_overlay, Sdelete_overlay, 1, 1, 0, --- 1628,1634 ---- /* This puts it in the right list, and in the right order. */ recenter_overlay_lists (b, XINT (b->overlay_center)); ! return unbind_to (count, overlay); } DEFUN ("delete-overlay", Fdelete_overlay, Sdelete_overlay, 1, 1, 0, *************** DEFUN ("delete-overlay", Fdelete_overlay *** 1621,1631 **** (overlay) Lisp_Object overlay; { struct buffer *b; CHECK_OVERLAY (overlay, 0); ! b = XBUFFER (Fmarker_buffer (OVERLAY_START (overlay))); b->overlays_before = Fdelq (overlay, b->overlays_before); b->overlays_after = Fdelq (overlay, b->overlays_after); --- 1636,1654 ---- (overlay) Lisp_Object overlay; { + Lisp_Object buffer; struct buffer *b; + int count = specpdl_ptr - specpdl; CHECK_OVERLAY (overlay, 0); ! buffer = Fmarker_buffer (OVERLAY_START (overlay)); ! if (NILP (buffer)) ! return Qnil; ! ! b = XBUFFER (buffer); ! ! specbind (Qinhibit_quit, Qt); b->overlays_before = Fdelq (overlay, b->overlays_before); b->overlays_after = Fdelq (overlay, b->overlays_after); *************** DEFUN ("delete-overlay", Fdelete_overlay *** 1637,1643 **** Fset_marker (OVERLAY_START (overlay), Qnil, Qnil); Fset_marker (OVERLAY_END (overlay), Qnil, Qnil); ! return Qnil; } /* Overlay dissection functions. */ --- 1660,1666 ---- Fset_marker (OVERLAY_START (overlay), Qnil, Qnil); Fset_marker (OVERLAY_END (overlay), Qnil, Qnil); ! return unbind_to (count, Qnil); } /* Overlay dissection functions. */ *************** init_buffer () *** 1972,1977 **** --- 1995,2001 ---- char buf[MAXPATHLEN+1]; char *pwd; struct stat dotstat, pwdstat; + Lisp_Object temp; Fset_buffer (Fget_buffer_create (build_string ("*scratch*"))); *************** init_buffer () *** 1994,1999 **** --- 2018,2026 ---- strcat (buf, "/"); #endif /* not VMS */ current_buffer->directory = build_string (buf); + + temp = get_minibuffer (0); + XBUFFER (temp)->directory = current_buffer->directory; } /* initialize the buffer routines */ *************** Automatically local in all buffers."); *** 2308,2313 **** --- 2335,2348 ---- DEFVAR_LISP ("transient-mark-mode", &Vtransient_mark_mode, "*Non-nil means deactivate the mark when the buffer contents change."); Vtransient_mark_mode = Qnil; + + DEFVAR_LISP ("inhibit-read-only", &Vinhibit_read_only, + "*Non-nil means disregard read-only status of buffers or characters.\n\ + If the value is t, disregard `buffer-read-only' and all `read-only'\n\ + text properties. If the value is a list, disregard `buffer-read-only'\n\ + and disregard a `read-only' text property if the property value\n\ + is a member of the list."); + Vinhibit_read_only = Qnil; defsubr (&Sbuffer_list); defsubr (&Sget_buffer); diff -cprP -x *.elc emacs-19.12/src/cmds.c emacs-19.13/src/cmds.c *** emacs-19.12/src/cmds.c Tue Jun 8 05:40:02 1993 --- emacs-19.13/src/cmds.c Fri Jun 4 14:01:34 1993 *************** *** 241,247 **** arg = Fprefix_numeric_value (arg1); if (!NILP (current_buffer->read_only)) ! Fsignal (Qbuffer_read_only, Qnil); /* Inserting a newline at the end of a line produces better redisplay in try_window_id than inserting at the ebginning fo a --- 241,247 ---- arg = Fprefix_numeric_value (arg1); if (!NILP (current_buffer->read_only)) ! Fbarf_if_buffer_read_only (); /* Inserting a newline at the end of a line produces better redisplay in try_window_id than inserting at the ebginning fo a diff -cprP -x *.elc emacs-19.12/src/config.h.in emacs-19.13/src/config.h.in *** emacs-19.12/src/config.h.in Tue Jun 8 05:42:29 1993 --- emacs-19.13/src/config.h.in Tue Jun 8 02:57:44 1993 *************** *** 88,93 **** --- 88,94 ---- #undef HAVE_DUP2 #undef HAVE_RENAME #undef HAVE_TM_ZONE + #undef HAVE_TZNAME #undef TM_IN_SYS_TIME #undef STDC_HEADERS #undef TIME_WITH_SYS_TIME *************** *** 95,100 **** --- 96,102 ---- #undef STACK_DIRECTION #undef const #undef UNEXEC_SRC + #undef HAVE_LIBDNET /* If using GNU, then support inline function declarations. */ #ifdef __GNUC__ diff -cprP -x *.elc emacs-19.12/src/data.c emacs-19.13/src/data.c *** emacs-19.12/src/data.c Tue Jun 8 05:40:05 1993 --- emacs-19.13/src/data.c Sun Jun 6 18:50:23 1993 *************** *** 521,528 **** register Lisp_Object sym, newdef; { CHECK_SYMBOL (sym, 0); - if (NILP (sym) || EQ (sym, Qt)) - return Fsignal (Qsetting_constant, Fcons (sym, Qnil)); if (!NILP (Vautoload_queue) && !EQ (XSYMBOL (sym)->function, Qunbound)) Vautoload_queue = Fcons (Fcons (sym, XSYMBOL (sym)->function), --- 521,526 ---- diff -cprP -x *.elc emacs-19.12/src/dispnew.c emacs-19.13/src/dispnew.c *** emacs-19.12/src/dispnew.c Tue Jun 8 05:40:08 1993 --- emacs-19.13/src/dispnew.c Sun Jun 6 17:16:22 1993 *************** *** 24,34 **** #include #include #include "termchar.h" #include "termopts.h" #include "termhooks.h" #include "cm.h" - #include "lisp.h" #include "dispextern.h" #include "buffer.h" #include "frame.h" --- 24,34 ---- #include #include + #include "lisp.h" #include "termchar.h" #include "termopts.h" #include "termhooks.h" #include "cm.h" #include "dispextern.h" #include "buffer.h" #include "frame.h" *************** DEFUN ("redraw-display", Fredraw_display *** 201,226 **** Lisp_Object tail, frame; FOR_EACH_FRAME (tail, frame) ! /* If we simply redrew all visible frames, whether or not they ! were garbaged, then this would make all frames clear and ! nredraw whenever a new frame is created or an existing frame ! is de-iconified; those events set the global frame_garbaged ! flag, to which redisplay responds by calling this function. ! ! This used to redraw all visible frames; the only advantage of ! that approach is that if a frame changes from invisible to ! visible without setting its garbaged flag, it still gets ! redisplayed. But that should never happen; since invisible ! frames are not updated, they should always be marked as ! garbaged when they become visible again. If that doesn't ! happen, it's a bug in the visibility code, not a bug here. */ ! if (FRAME_VISIBLE_P (XFRAME (frame)) ! && FRAME_GARBAGED_P (XFRAME (frame))) Fredraw_frame (frame); return Qnil; } static struct frame_glyphs * make_frame_glyphs (frame, empty) --- 201,226 ---- Lisp_Object tail, frame; FOR_EACH_FRAME (tail, frame) ! if (FRAME_VISIBLE_P (XFRAME (frame))) Fredraw_frame (frame); return Qnil; } + /* This is used when frame_garbaged is set. + Redraw the individual frames marked as garbaged. */ + + void + redraw_garbaged_frames () + { + Lisp_Object tail, frame; + + FOR_EACH_FRAME (tail, frame) + if (FRAME_VISIBLE_P (XFRAME (frame)) + && FRAME_GARBAGED_P (XFRAME (frame))) + Fredraw_frame (frame); + } + static struct frame_glyphs * make_frame_glyphs (frame, empty) *************** do_pending_window_change () *** 1657,1667 **** int height = FRAME_NEW_HEIGHT (f); int width = FRAME_NEW_WIDTH (f); - - FRAME_NEW_HEIGHT (f) = 0; - FRAME_NEW_WIDTH (f) = 0; ! if (height != 0) change_frame_size (f, height, width, 0, 0); } } --- 1657,1664 ---- int height = FRAME_NEW_HEIGHT (f); int width = FRAME_NEW_WIDTH (f); ! if (height != 0 || width != 0) change_frame_size (f, height, width, 0, 0); } } *************** change_frame_size (frame, newheight, new *** 1693,1699 **** FRAME_NEW_HEIGHT (frame) = 0; FRAME_NEW_WIDTH (frame) = 0; ! /* If an arguments is zero, set it to the current value. */ newheight || (newheight = FRAME_HEIGHT (frame)); newwidth || (newwidth = FRAME_WIDTH (frame)); --- 1690,1696 ---- FRAME_NEW_HEIGHT (frame) = 0; FRAME_NEW_WIDTH (frame) = 0; ! /* If an argument is zero, set it to the current value. */ newheight || (newheight = FRAME_HEIGHT (frame)); newwidth || (newwidth = FRAME_WIDTH (frame)); diff -cprP -x *.elc emacs-19.12/src/editfns.c emacs-19.13/src/editfns.c *** emacs-19.12/src/editfns.c Tue Jun 8 05:40:10 1993 --- emacs-19.13/src/editfns.c Sun Jun 6 03:59:42 1993 *************** *** 656,662 **** --- 656,667 ---- #ifdef HAVE_TM_ZONE if (t->tm_zone) s = t->tm_zone; + #else /* not HAVE_TM_ZONE */ + #ifdef HAVE_TZNAME + if (t->tm_isdst == 0 || t->tm_isdst == 1) + s = tzname[t->tm_isdst]; #endif + #endif /* not HAVE_TM_ZONE */ if (!s) { /* No local time zone name is available; use "+-NNNN" instead. */ diff -cprP -x *.elc emacs-19.12/src/emacs.c emacs-19.13/src/emacs.c *** emacs-19.12/src/emacs.c Tue Jun 8 05:40:11 1993 --- emacs-19.13/src/emacs.c Thu Jun 3 14:32:13 1993 *************** *** 874,880 **** "Hook to be run whenever kill-emacs is called.\n\ Since kill-emacs may be invoked when the terminal is disconnected (or\n\ in other similar situations), functions placed on this hook should not\n\ ! not expect to be able to interact with the user."); Vkill_emacs_hook = Qnil; DEFVAR_INT ("emacs-priority", &emacs_priority, --- 874,880 ---- "Hook to be run whenever kill-emacs is called.\n\ Since kill-emacs may be invoked when the terminal is disconnected (or\n\ in other similar situations), functions placed on this hook should not\n\ ! expect to be able to interact with the user."); Vkill_emacs_hook = Qnil; DEFVAR_INT ("emacs-priority", &emacs_priority, diff -cprP -x *.elc emacs-19.12/src/fileio.c emacs-19.13/src/fileio.c *** emacs-19.12/src/fileio.c Tue Jun 8 05:40:17 1993 --- emacs-19.13/src/fileio.c Mon Jun 7 21:08:52 1993 *************** *** 165,170 **** --- 165,171 ---- Lisp_Object Qinsert_file_contents; Lisp_Object Qwrite_region; Lisp_Object Qverify_visited_file_modtime; + Lisp_Object Qset_visited_file_modtime; DEFUN ("find-file-name-handler", Ffind_file_name_handler, Sfind_file_name_handler, 1, 1, 0, "Return FILENAME's handler function, if its syntax is handled specially.\n\ *************** An argument specifies the modification t *** 2908,2914 **** call the corresponding file handler. */ handler = Ffind_file_name_handler (filename); if (!NILP (handler)) ! return call3 (handler, Qfile_name_directory, filename, Qnil); else if (stat (XSTRING (filename)->data, &st) >= 0) current_buffer->modtime = st.st_mtime; } --- 2909,2915 ---- call the corresponding file handler. */ handler = Ffind_file_name_handler (filename); if (!NILP (handler)) ! return call3 (handler, Qset_visited_file_modtime, filename, Qnil); else if (stat (XSTRING (filename)->data, &st) >= 0) current_buffer->modtime = st.st_mtime; } *************** syms_of_fileio () *** 3336,3341 **** --- 3337,3343 ---- Qinsert_file_contents = intern ("insert-file-contents"); Qwrite_region = intern ("write-region"); Qverify_visited_file_modtime = intern ("verify-visited-file-modtime"); + Qset_visited_file_modtime = intern ("set-visited-file-modtime"); staticpro (&Qexpand_file_name); staticpro (&Qdirectory_file_name); diff -cprP -x *.elc emacs-19.12/src/filelock.c emacs-19.13/src/filelock.c *** emacs-19.12/src/filelock.c Tue Jun 8 05:40:17 1993 --- emacs-19.13/src/filelock.c Fri Jun 4 13:13:47 1993 *************** *** 66,75 **** --- 66,119 ---- /* Set LOCK to the name of the lock file for the filename FILE. char *LOCK; Lisp_Object FILE; */ + + #ifdef SHORT_FILE_NAMES + + #define MAKE_LOCK_PATH(lock, file) \ + (lock = (char *) alloca (14 + strlen (lock_path) + 1), \ + fill_in_lock_short_file_name (lock, (file))) + + + fill_in_lock_short_file_name (lockfile, fn) + register char *lockfile; + register Lisp_Object fn; + { + register union + { + unsigned int word [2]; + unsigned char byte [8]; + } crc; + register unsigned char *p, new; + + /* 7-bytes cyclic code for burst correction on byte-by-byte basis. + the used polynomial is D^7 + D^6 + D^3 +1. pot@cnuce.cnr.it */ + + crc.word[0] = crc.word[1] = 0; + + for (p = XSTRING (fn)->data; new = *p++; ) + { + new += crc.byte[7]; + crc.byte[7] = crc.byte[6]; + crc.byte[6] = crc.byte[5] + new; + crc.byte[5] = crc.byte[4]; + crc.byte[4] = crc.byte[3]; + crc.byte[3] = crc.byte[2] + new; + crc.byte[2] = crc.byte[1]; + crc.byte[1] = crc.byte[0]; + crc.byte[0] = new; + } + sprintf (lockfile, "%s%.2x%.2x%.2x%.2x%.2x%.2x%.2x", lock_path, + crc.byte[0], crc.byte[1], crc.byte[2], crc.byte[3], + crc.byte[4], crc.byte[5], crc.byte[6]); + } + + #else /* !defined SHORT_FILE_NAMES */ + #define MAKE_LOCK_PATH(lock, file) \ (lock = (char *) alloca (XSTRING (file)->size + strlen (lock_path) + 1), \ fill_in_lock_file_name (lock, (file))) + fill_in_lock_file_name (lockfile, fn) register char *lockfile; register Lisp_Object fn; *************** fill_in_lock_file_name (lockfile, fn) *** 88,93 **** --- 132,138 ---- *p = '!'; } } + #endif /* SHORT_FILE_NAMES */ static Lisp_Object lock_file_owner_name (lfname) *************** lock_file_owner_name (lfname) *** 123,128 **** --- 168,178 ---- /* The lock file name is the file name with "/" replaced by "!" and put in the Emacs lock directory. */ /* (ie., /ka/king/junk.tex -> /!/!ka!king!junk.tex). */ + + /* If SHORT_FILE_NAMES is defined, the lock file name is the hex + representation of a 14-bytes CRC generated from the file name + and put in the Emacs lock directory (not very nice, but it works). + (ie., /ka/king/junk.tex -> /!/ec92d3ed24a8f0). */ void lock_file (fn) diff -cprP -x *.elc emacs-19.12/src/filemode.c emacs-19.13/src/filemode.c *** emacs-19.12/src/filemode.c Tue Jun 8 05:40:18 1993 --- emacs-19.13/src/filemode.c Sun Jun 6 03:52:20 1993 *************** *** 15,30 **** along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #ifndef S_IREAD #define S_IREAD S_IRUSR #define S_IWRITE S_IWUSR #define S_IEXEC S_IXUSR #endif ! #ifndef S_ISREG /* Doesn't have POSIX.1 stat stuff. */ #define mode_t unsigned short #endif #if !defined(S_ISBLK) && defined(S_IFBLK) #define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) #endif --- 15,38 ---- along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + #ifdef HAVE_CONFIG_H + #include "config.h" + #endif + #include #include + #ifndef S_IREAD #define S_IREAD S_IRUSR #define S_IWRITE S_IWUSR #define S_IEXEC S_IXUSR #endif ! ! #if !defined(S_ISREG) || defined(NO_MODE_T) ! /* Doesn't have POSIX.1 stat stuff or doesn't have mode_t. */ #define mode_t unsigned short #endif + #if !defined(S_ISBLK) && defined(S_IFBLK) #define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) #endif diff -cprP -x *.elc emacs-19.12/src/floatfns.c emacs-19.13/src/floatfns.c *** emacs-19.12/src/floatfns.c Tue Jun 8 05:40:20 1993 --- emacs-19.13/src/floatfns.c Mon Jun 7 14:28:24 1993 *************** *** 659,665 **** CHECK_NUMBER_OR_FLOAT (arg, 0); if (XTYPE (arg) == Lisp_Float) ! IN_FLOAT (XSET (arg, Lisp_Int, ceil (XFLOAT (arg)->data)), "celing", arg); return arg; } --- 659,665 ---- CHECK_NUMBER_OR_FLOAT (arg, 0); if (XTYPE (arg) == Lisp_Float) ! IN_FLOAT (XSET (arg, Lisp_Int, ceil (XFLOAT (arg)->data)), "ceiling", arg); return arg; } diff -cprP -x *.elc emacs-19.12/src/frame.c emacs-19.13/src/frame.c *** emacs-19.12/src/frame.c Tue Jun 8 05:40:23 1993 --- emacs-19.13/src/frame.c Sat Jun 5 13:02:40 1993 *************** *** 1372,1417 **** } - #ifndef HAVE_X11 - DEFUN ("rubber-band-rectangle", Frubber_band_rectangle, Srubber_band_rectangle, - 3, 3, "", - "Ask user to specify a window position and size on FRAME with the mouse.\n\ - Arguments are FRAME, NAME and GEO. NAME is a name to be displayed as\n\ - the purpose of this rectangle. GEO is an X-windows size spec that can\n\ - specify defaults for some sizes/positions. If GEO specifies everything,\n\ - the mouse is not used.\n\ - Returns a list of five values: (FRAME LEFT TOP WIDTH HEIGHT).") - (frame, name, geo) - Lisp_Object frame; - Lisp_Object name; - Lisp_Object geo; - { - int vals[4]; - Lisp_Object nums[4]; - int i; - - CHECK_FRAME (frame, 0); - CHECK_STRING (name, 1); - CHECK_STRING (geo, 2); - - switch (XFRAME (frame)->output_method) - { - case output_x_window: - x_rubber_band (XFRAME (frame), &vals[0], &vals[1], &vals[2], &vals[3], - XSTRING (geo)->data, XSTRING (name)->data); - break; - - default: - return Qnil; - } - - for (i = 0; i < 4; i++) - XFASTINT (nums[i]) = vals[i]; - return Fcons (frame, Flist (4, nums)); - return Qnil; - } - #endif /* not HAVE_X11 */ - choose_minibuf_frame () { /* For lowest-level minibuf, put it on currently selected frame --- 1372,1377 ---- *************** For values specific to the separate mini *** 1530,1538 **** defsubr (&Sset_frame_width); defsubr (&Sset_frame_size); defsubr (&Sset_frame_position); - #ifndef HAVE_X11 - defsubr (&Srubber_band_rectangle); - #endif /* HAVE_X11 */ } keys_of_frame () --- 1490,1495 ---- *************** DEFUN ("selected-frame", Fselected_frame *** 1556,1561 **** --- 1513,1528 ---- XFASTINT (tem) = 0; return tem; } + DEFUN ("framep", Fframep, Sframep, 1, 1, 0, + "Return non-nil if OBJECT is a frame.\n\ + Value is t for a termcap frame (a character-only terminal),\n\ + `x' for an Emacs frame that is really an X window.\n\ + Also see `live-frame-p'.") + (object) + Lisp_Object object; + { + return Qnil; + } DEFUN ("set-frame-height", Fset_frame_height, Sset_frame_height, 2, 3, 0, "Specify that the frame FRAME has LINES lines.\n\ *************** but that the idea of the actual width of *** 1692,1697 **** --- 1659,1665 ---- syms_of_frame () { defsubr (&Sselected_frame); + defsubr (&Sframep); defsubr (&Sframe_char_height); defsubr (&Sframe_char_width); defsubr (&Sframe_pixel_height); diff -cprP -x *.elc emacs-19.12/src/frame.h emacs-19.13/src/frame.h *** emacs-19.12/src/frame.h Tue Jun 8 05:41:45 1993 --- emacs-19.13/src/frame.h Thu Jun 3 00:07:25 1993 *************** *** 392,398 **** #define FRAME_NO_SPLIT_P(f) 0 #define FRAME_WANTS_MODELINE_P(f) 1 #define FRAME_ICONIFIED_P(f) 0 ! #define FRAME_MINIBUF_WINDOW(f) (the_only_frame.root_window) #define FRAME_ROOT_WINDOW(f) (the_only_frame.root_window) #define FRAME_SELECTED_WINDOW(f) (selected_window) #define SET_GLYPHS_FRAME(glyphs,frame) do ; while (0) --- 392,398 ---- #define FRAME_NO_SPLIT_P(f) 0 #define FRAME_WANTS_MODELINE_P(f) 1 #define FRAME_ICONIFIED_P(f) 0 ! #define FRAME_MINIBUF_WINDOW(f) (minibuf_window) #define FRAME_ROOT_WINDOW(f) (the_only_frame.root_window) #define FRAME_SELECTED_WINDOW(f) (selected_window) #define SET_GLYPHS_FRAME(glyphs,frame) do ; while (0) diff -cprP -x *.elc emacs-19.12/src/gmalloc.c emacs-19.13/src/gmalloc.c *** emacs-19.12/src/gmalloc.c Tue Jun 8 05:41:40 1993 --- emacs-19.13/src/gmalloc.c Tue Jun 8 07:08:10 1993 *************** *** 31,42 **** #define _MALLOC_H 1 #ifdef _MALLOC_INTERNAL ! /* Harmless, gets __GNU_LIBRARY__ defined. ! We must do this before #defining size_t and ptrdiff_t ! because tries to typedef them on some systems. */ ! #include #endif #ifdef __cplusplus extern "C" { --- 31,64 ---- #define _MALLOC_H 1 #ifdef _MALLOC_INTERNAL ! ! #ifdef HAVE_CONFIG_H ! #include "config.h" ! #endif ! ! #if defined(_LIBC) || defined(STDC_HEADERS) || defined(USG) ! #include ! #else ! #ifndef memset ! #define memset(s, zero, n) bzero ((s), (n)) ! #endif ! #ifndef memcpy ! #define memcpy(d, s, n) bcopy ((s), (d), (n)) ! #endif ! #ifndef memmove ! #define memmove(d, s, n) bcopy ((s), (d), (n)) #endif + #endif + + #if defined(__GNU_LIBRARY__) || defined(__STDC__) + #include + #else + #define CHAR_BIT 8 + #endif + + #endif /* _MALLOC_INTERNAL. */ + #ifdef __cplusplus extern "C" { *************** extern "C" *** 47,65 **** #define __P(args) args #undef __ptr_t #define __ptr_t void * - #define CONST const #else /* Not C++ or ANSI C. */ #undef __P #define __P(args) () ! #define CONST #undef __ptr_t #define __ptr_t char * #endif /* C++ or ANSI C. */ - #ifndef NULL - #define NULL 0 - #endif - #ifdef __STDC__ #include #else --- 69,83 ---- #define __P(args) args #undef __ptr_t #define __ptr_t void * #else /* Not C++ or ANSI C. */ #undef __P #define __P(args) () ! #undef const ! #define const #undef __ptr_t #define __ptr_t char * #endif /* C++ or ANSI C. */ #ifdef __STDC__ #include #else *************** extern "C" *** 69,74 **** --- 87,96 ---- #define ptrdiff_t int #endif + #ifndef NULL + #define NULL 0 + #endif + /* Allocate SIZE bytes of memory. */ extern __ptr_t malloc __P ((size_t __size)); *************** extern __ptr_t valloc __P ((size_t __siz *** 89,119 **** #ifdef _MALLOC_INTERNAL - #ifdef HAVE_CONFIG_H - #include "config.h" - #endif - - #if defined(__GNU_LIBRARY__) || defined(STDC_HEADERS) || defined(USG) - #include - #else - #ifndef memset - #define memset(s, zero, n) bzero ((s), (n)) - #endif - #ifndef memcpy - #define memcpy(d, s, n) bcopy ((s), (d), (n)) - #endif - #ifndef memmove - #define memmove(d, s, n) bcopy ((s), (d), (n)) - #endif - #endif - - - #if defined(__GNU_LIBRARY__) || defined(__STDC__) - #include - #else - #define CHAR_BIT 8 - #endif - /* The allocator divides the heap into blocks of fixed size; large requests receive one or more whole blocks, and small requests receive a fragment of a block. Fragment sizes are powers of two, --- 111,116 ---- *************** extern struct mstats mstats __P ((void)) *** 248,254 **** /* Call WARNFUN with a warning message when memory usage is high. */ extern void memory_warnings __P ((__ptr_t __start, ! void (*__warnfun) __P ((CONST char *)))); /* Relocating allocator. */ --- 245,251 ---- /* Call WARNFUN with a warning message when memory usage is high. */ extern void memory_warnings __P ((__ptr_t __start, ! void (*__warnfun) __P ((__const char *)))); /* Relocating allocator. */ *************** malloc (size) *** 425,434 **** register size_t i; struct list *next; ! #ifdef emacs ! if (size == 0) ! size = 1; ! #else if (size == 0) return NULL; #endif --- 422,435 ---- register size_t i; struct list *next; ! /* ANSI C allows `malloc (0)' to either return NULL, or to return a ! valid address you can realloc and free (though not dereference). ! ! It turns out that some extant code (sunrpc, at least Ultrix's version) ! expects `malloc (0)' to return non-NULL and breaks otherwise. ! Be compatible. */ ! ! #if 0 if (size == 0) return NULL; #endif diff -cprP -x *.elc emacs-19.12/src/intervals.h emacs-19.13/src/intervals.h *** emacs-19.12/src/intervals.h Tue Jun 8 05:41:48 1993 --- emacs-19.13/src/intervals.h Fri Jun 4 14:08:51 1993 *************** *** 137,147 **** /* Is this interval visible? Replace later with cache access */ #define INTERVAL_VISIBLE_P(i) \ ! (! NULL_INTERVAL_P (i) && NILP (Fmemq (Qinvisible, (i)->plist))) /* Is this interval writable? Replace later with cache access */ #define INTERVAL_WRITABLE_P(i) \ ! (! NULL_INTERVAL_P (i) && NILP (Fmemq (Qread_only, (i)->plist))) /* Macros to tell whether insertions before or after this interval should stick to it. */ --- 137,151 ---- /* Is this interval visible? Replace later with cache access */ #define INTERVAL_VISIBLE_P(i) \ ! (! NULL_INTERVAL_P (i) && NILP (textget ((i)->plist, Qinvisible))) /* Is this interval writable? Replace later with cache access */ #define INTERVAL_WRITABLE_P(i) \ ! (! NULL_INTERVAL_P (i) && NILP (textget ((i)->plist, Qread_only)) \ ! && (NILP (Vinhibit_read_only) \ ! || (CONSP (Vinhibit_read_only) \ ! && !NILP (Fmemq (textget ((i)->plist, Qread_only), \ ! Vinhibit_read_only))))) /* Macros to tell whether insertions before or after this interval should stick to it. */ diff -cprP -x *.elc emacs-19.12/src/keyboard.c emacs-19.13/src/keyboard.c *** emacs-19.12/src/keyboard.c Tue Jun 8 05:40:33 1993 --- emacs-19.13/src/keyboard.c Thu Jun 3 17:31:14 1993 *************** *** 435,440 **** --- 435,441 ---- static int read_avail_input (); static void get_input_pending (); + static Lisp_Object read_char_menu_prompt (); /* > 0 if we are to echo keystrokes. */ static int echo_keystrokes; *************** static int echo_now; *** 3218,3224 **** The prompting is done based on the prompt-string of the map and the strings associated with various map elements. */ ! Lisp_Object read_char_menu_prompt (nmaps, maps, prev_event, used_mouse_menu) int nmaps; Lisp_Object *maps; --- 3219,3225 ---- The prompting is done based on the prompt-string of the map and the strings associated with various map elements. */ ! static Lisp_Object read_char_menu_prompt (nmaps, maps, prev_event, used_mouse_menu) int nmaps; Lisp_Object *maps; *************** read_key_sequence (keybuf, bufsize, prom *** 4022,4027 **** --- 4023,4029 ---- mock_input = t; fkey_start = fkey_end = t; + fkey_map = Vfunction_key_map; goto replay_sequence; } diff -cprP -x *.elc emacs-19.12/src/keymap.c emacs-19.13/src/keymap.c *** emacs-19.12/src/keymap.c Tue Jun 8 05:40:35 1993 --- emacs-19.13/src/keymap.c Mon Jun 7 16:41:47 1993 *************** *** 272,277 **** --- 272,281 ---- be put in the canonical order. */ if (XTYPE (idx) == Lisp_Symbol) idx = reorder_modifiers (idx); + else if (INTEGERP (idx)) + /* Clobber the high bits that can be present on a machine + with more than 24 bits of integer. */ + XFASTINT (idx) = XINT (idx) & (CHAR_META | (CHAR_META - 1)); { Lisp_Object tail; *************** store_in_keymap (keymap, idx, def) *** 368,375 **** be put in the canonical order. */ if (XTYPE (idx) == Lisp_Symbol) idx = reorder_modifiers (idx); - /* Scan the keymap for a binding of idx. */ { Lisp_Object tail; --- 372,382 ---- be put in the canonical order. */ if (XTYPE (idx) == Lisp_Symbol) idx = reorder_modifiers (idx); + else if (INTEGERP (idx)) + /* Clobber the high bits that can be present on a machine + with more than 24 bits of integer. */ + XFASTINT (idx) = XINT (idx) & (CHAR_META | (CHAR_META - 1)); /* Scan the keymap for a binding of idx. */ { Lisp_Object tail; *************** DEFUN ("global-set-key", Fglobal_set_key *** 847,853 **** "kSet key globally: \nCSet key %s to command: ", "Give KEY a global binding as COMMAND.\n\ COMMAND is a symbol naming an interactively-callable function.\n\ ! KEY is a string representing a sequence of keystrokes.\n\ Note that if KEY has a local binding in the current buffer\n\ that local binding will continue to shadow any global binding.") (keys, function) --- 854,860 ---- "kSet key globally: \nCSet key %s to command: ", "Give KEY a global binding as COMMAND.\n\ COMMAND is a symbol naming an interactively-callable function.\n\ ! KEY is a key sequence (a string or vector of characters or event types).\n\ Note that if KEY has a local binding in the current buffer\n\ that local binding will continue to shadow any global binding.") (keys, function) *************** DEFUN ("local-set-key", Flocal_set_key, *** 865,871 **** "kSet key locally: \nCSet key %s locally to command: ", "Give KEY a local binding as COMMAND.\n\ COMMAND is a symbol naming an interactively-callable function.\n\ ! KEY is a string representing a sequence of keystrokes.\n\ The binding goes in the current buffer's local map,\n\ which is shared with other buffers in the same major mode.") (keys, function) --- 872,878 ---- "kSet key locally: \nCSet key %s locally to command: ", "Give KEY a local binding as COMMAND.\n\ COMMAND is a symbol naming an interactively-callable function.\n\ ! KEY is a key sequence (a string or vector of characters or event types).\n\ The binding goes in the current buffer's local map,\n\ which is shared with other buffers in the same major mode.") (keys, function) *************** describe_vector_princ (elt) *** 1854,1869 **** Lisp_Object elt; { Fprinc (elt, Qnil); } DEFUN ("describe-vector", Fdescribe_vector, Sdescribe_vector, 1, 1, 0, ! "Print on `standard-output' a description of contents of VECTOR.\n\ This is text showing the elements of vector matched against indices.") (vector) Lisp_Object vector; { CHECK_VECTOR (vector, 0); describe_vector (vector, Qnil, describe_vector_princ, 0, Qnil); } describe_vector (vector, elt_prefix, elt_describer, partial, shadow) --- 1861,1882 ---- Lisp_Object elt; { Fprinc (elt, Qnil); + Fterpri (Qnil); } DEFUN ("describe-vector", Fdescribe_vector, Sdescribe_vector, 1, 1, 0, ! "Insert a description of contents of VECTOR.\n\ This is text showing the elements of vector matched against indices.") (vector) Lisp_Object vector; { + int count = specpdl_ptr - specpdl; + + specbind (Qstandard_output, Fcurrent_buffer ()); CHECK_VECTOR (vector, 0); describe_vector (vector, Qnil, describe_vector_princ, 0, Qnil); + + return unbind_to (count, Qnil); } describe_vector (vector, elt_prefix, elt_describer, partial, shadow) diff -cprP -x *.elc emacs-19.12/src/lisp.h emacs-19.13/src/lisp.h *** emacs-19.12/src/lisp.h Tue Jun 8 05:41:50 1993 --- emacs-19.13/src/lisp.h Sat Jun 5 23:43:44 1993 *************** *** 1135,1141 **** extern Lisp_Object Fchar_to_string (); /* defined in buffer.c */ ! extern Lisp_Object Vbuffer_alist; extern Lisp_Object Fget_buffer (), Fget_buffer_create (), Fset_buffer (); extern Lisp_Object Fbarf_if_buffer_read_only (); extern Lisp_Object Fcurrent_buffer (), Fswitch_to_buffer (), Fpop_to_buffer (); --- 1135,1141 ---- extern Lisp_Object Fchar_to_string (); /* defined in buffer.c */ ! extern Lisp_Object Vbuffer_alist, Vinhibit_read_only; extern Lisp_Object Fget_buffer (), Fget_buffer_create (), Fset_buffer (); extern Lisp_Object Fbarf_if_buffer_read_only (); extern Lisp_Object Fcurrent_buffer (), Fswitch_to_buffer (), Fpop_to_buffer (); *************** extern int immediate_quit; /* Nonzer *** 1295,1301 **** extern void debugger (); - extern void *malloc (), *realloc (); extern char *getenv (), *ctime (), *getwd (); extern long *xmalloc (), *xrealloc (); extern void xfree (); --- 1295,1300 ---- diff -cprP -x *.elc emacs-19.12/src/lread.c emacs-19.13/src/lread.c *** emacs-19.12/src/lread.c Tue Jun 8 05:40:36 1993 --- emacs-19.13/src/lread.c Mon Jun 7 00:13:44 1993 *************** *** 52,58 **** Lisp_Object Qread_char, Qget_file_char, Qstandard_input, Qcurrent_load_list; Lisp_Object Qvariable_documentation, Vvalues, Vstandard_input, Vafter_load_alist; ! Lisp_Object Qascii_character; extern Lisp_Object Qevent_symbol_element_mask; --- 52,58 ---- Lisp_Object Qread_char, Qget_file_char, Qstandard_input, Qcurrent_load_list; Lisp_Object Qvariable_documentation, Vvalues, Vstandard_input, Vafter_load_alist; ! Lisp_Object Qascii_character, Qload; extern Lisp_Object Qevent_symbol_element_mask; *************** Return t if file exists.") *** 318,327 **** --- 318,333 ---- Lisp_Object found; /* 1 means inhibit the message at the beginning. */ int nomessage1 = 0; + Lisp_Object handler; CHECK_STRING (str, 0); str = Fsubstitute_in_file_name (str); + /* If file name is magic, call the handler. */ + handler = Ffind_file_name_handler (str); + if (!NILP (handler)) + return call2 (handler, Qload, str); + /* Avoid weird lossage with null string as arg, since it would try to load a directory as a Lisp file */ if (XSTRING (str)->size > 0) *************** or variables, and cons cells `(provide . *** 1893,1896 **** --- 1899,1905 ---- Qascii_character = intern ("ascii-character"); staticpro (&Qascii_character); + + Qload = intern ("load"); + staticpro (&Qload); } diff -cprP -x *.elc emacs-19.12/src/m/delta.h emacs-19.13/src/m/delta.h *** emacs-19.12/src/m/delta.h Tue Jun 8 05:39:01 1993 --- emacs-19.13/src/m/delta.h Wed Jun 2 14:34:54 1993 *************** *** 1,23 **** ! /* machine description file for the Motorola delta running System V.3. ! tested on sys1147 (mvme147 - based system). ! Copyright (C) 1986 Free Software Foundation, Inc. This file is part of GNU Emacs. GNU Emacs is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY. No author or distributor ! accepts responsibility to anyone for the consequences of using it ! or for whether it serves any particular purpose or works at all, ! unless he says so in writing. Refer to the GNU Emacs General Public ! License for full details. ! ! Everyone is granted permission to copy, modify and redistribute ! GNU Emacs, but only under the conditions described in the ! GNU Emacs General Public License. A copy of this license is ! supposed to have been given to you along with GNU Emacs so you ! can know your rights and responsibilities. It should be in a ! file named COPYING. Among other things, the copyright notice ! and this notice must be preserved on all copies. */ /* The following line tells the configuration script what sort of --- 1,22 ---- ! /* machine description file for the Motorola delta running System V.3.X ! tested on mvme147. ! Copyright (C) 1986, 1993 Free Software Foundation, Inc. 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. */ /* The following line tells the configuration script what sort of *************** and this notice must be preserved on all *** 50,64 **** /* Now define a symbol for the cpu type, if your compiler does not define it automatically: ! vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO ! are the ones defined so far. */ ! #define m68000 ! #define NO_REMAP ! #define HAVE_SYSVIPC ! ! #define HAVE_PTYS ! #define SYSV_PTYS /* Use type int rather than a union, to represent Lisp_Object */ /* This is desirable for most machines. */ --- 49,59 ---- /* Now define a symbol for the cpu type, if your compiler does not define it automatically: ! Ones defined so far include vax, m68000, ns16000, pyramid, ! orion, tahoe, APOLLO and many others */ ! #define m68000 ! #define MOTOROLA_DELTA /* Use type int rather than a union, to represent Lisp_Object */ /* This is desirable for most machines. */ *************** and this notice must be preserved on all *** 65,70 **** --- 60,66 ---- #define NO_UNION_TYPE #define SWITCH_ENUM_BUG + /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend the 24-bit bit field into an int. In other words, if bit fields are always unsigned. *************** and this notice must be preserved on all *** 103,139 **** Define neither one if an assembler-language alloca in the file alloca.s should be used. */ ! /*#define C_ALLOCA */ ! /*#define HAVE_ALLOCA */ ! #ifdef __GNUC__ ! /* easy. use builtin one. also be sure that no other ones are tried out. */ ! # define alloca __builtin_alloca ! # define HAVE_ALLOCA ! # undef C_ALLOCA ! #else ! # ifdef C_ALLOCA ! # define STACK_DIRECTION (-1) /* C_ALLOCA needs to know about stack. */ ! # else /* C_ALLOCA */ ! # ifndef HAVE_ALLOCA ! # define BAT_ALLOCA /* if not in library, alloca.s needs this. */ ! # endif /* HAVE_ALLOCA */ ! # endif /* C_ALLOCA */ ! #endif /* __GNUC__ */ ! /* The standard C library is -lcieee, not -lc. ! Also use the PW library, which contains alloca. ! DO NOT USE -lPW. That version of alloca is broken, at last until version ! SVR3V5.1 . -riku@field.fi */ ! #define LIB_STANDARD -lc ! #define LIBS_TERMCAP -lcurses ! /* define this if you want to use X11 */ ! #undef HAVE_X_WINDOWS #ifdef HAVE_X_WINDOWS /* debug switches enabled because of some difficulties w/X11 */ # define C_DEBUG_SWITCH -g # define OBJECTS_MACHINE -lg --- 99,164 ---- Define neither one if an assembler-language alloca in the file alloca.s should be used. */ ! /* #define C_ALLOCA */ ! /* #define HAVE_ALLOCA */ ! /* Define NO_REMAP if memory segmentation makes it not work well ! to change the boundary between the text section and data section ! when Emacs is dumped. If you define this, the preloaded Lisp ! code will not be sharable; but that's better than failing completely. */ ! #define NO_REMAP ! /* Some really obscure 4.2-based systems (like Sequent DYNIX) ! * do not support asynchronous I/O (using SIGIO) on sockets, ! * even though it works fine on tty's. If you have one of ! * these systems, define the following, and then use it in ! * config.h (or elsewhere) to decide when (not) to use SIGIO. ! * ! * You'd think this would go in an operating-system description file, ! * but since it only occurs on some, but not all, BSD systems, the ! * reasonable place to select for it is in the machine description ! * file. ! */ ! ! /* #define NO_SOCK_SIGIO */ ! ! ! /* Define these if you want to edit files up to 32Mbytes. ! Leaving them undefined (files up to 8 Mbytes) should be more efficient. */ ! ! /* #define VALBITS 26 ! #define GCTYPEBITS 5 */ ! /* Machine specific stuff */ ! ! #define BSTRING ! #define HAVE_PTYS ! #define SYSV_PTYS ! #define HAVE_SELECT ! #define HAVE_SOCKETS /***** only if NSE has been installed *****/ ! #define HAVE_UNISTD_H ! #define HAVE_TIMEVAL ! #define SIGNALS_VIA_CHARACTERS ! #define memmove memcpy /* memmove not provided until R3V7 */ ! #undef KERNEL_FILE ! #define KERNEL_FILE "/sysv68" ! #undef LDAV_SYMBOL ! #define SHORT_FILE_NAMES ! ! /* The standard C library is -lc881, not -lc. ! -lbsd brings sigblock and sigsetmask. ! DO NOT USE -lPW. That version of alloca is broken, at last until version ! R3V7. -riku@field.fi -pot@cnuce.cnr.it. */ ! #define LIB_STANDARD -lc881 ! #define LIB_MATH -lm881 ! #define LIBS_TERMCAP -lcurses ! #define LIBS_SYSTEM -lbsd ! #undef sigsetmask #ifdef HAVE_X_WINDOWS + /* not sure if this makes sense any more */ /* debug switches enabled because of some difficulties w/X11 */ # define C_DEBUG_SWITCH -g # define OBJECTS_MACHINE -lg *************** and this notice must be preserved on all *** 141,163 **** # define CANNOT_DUMP /*# define XDEBUG*/ # define X11 - /* X library implements these. */ - # define BSTRING /* X library is in 'nonstandard' location. */ # define LD_SWITCH_MACHINE -L/usr/lib/X11/ - #else - /* No sufficient justification for this. */ - /* # define C_DEBUG_SWITCH */ - # define C_OPTIMIZE_SWITCH -O #endif /* HAVE_X_WINDOWS */ ! /* enable batdevice-dependent code to compile. */ ! #define BAT68K ! #define HAVE_SOCKETS /* crt0.c should use the vax-bsd style of entry, with no dummy args. */ - /* emacs's magic number isn't temacs's; ! temacs is writeable text (the default!). */ --- 166,205 ---- # define CANNOT_DUMP /*# define XDEBUG*/ # define X11 /* X library is in 'nonstandard' location. */ # define LD_SWITCH_MACHINE -L/usr/lib/X11/ #endif /* HAVE_X_WINDOWS */ ! #ifdef __GNUC__ ! /* Use builtin one. Also be sure that no other ones are tried out. */ ! # define alloca __builtin_alloca ! # define HAVE_ALLOCA ! #else ! /* Not __GNUC__, use the one in alloca.s. */ ! ! /* Try to guess if we are using the Green Hills Compiler */ ! # if defined mc68000 && defined MC68000 ! /* Required only for use with Green Hills compiler: ! -ga Because alloca relies on stack frames. This option forces ! the Green Hills compiler to create stack frames even for ! functions with few local variables. */ ! # define C_SWITCH_MACHINE -ga ! # endif ! #endif /* __GNUC__ */ ! ! /* emacs19 beta release stuff */ /* crt0.c should use the vax-bsd style of entry, with no dummy args. */ /* emacs's magic number isn't temacs's; ! temacs is writable text (the default!). */ ! ! /* Don't use interrupt I/O */ ! #undef INTERRUPT_INPUT ! #undef SIGIO ! ! #define CLASH_DETECTION ! ! ! diff -cprP -x *.elc emacs-19.12/src/m/ibmrt-aix.h emacs-19.13/src/m/ibmrt-aix.h *** emacs-19.12/src/m/ibmrt-aix.h Tue Jun 8 05:39:07 1993 --- emacs-19.13/src/m/ibmrt-aix.h Thu Jun 3 16:27:06 1993 *************** *** 178,180 **** --- 178,183 ---- /* AIX defines FIONREAD, but it does not work. */ #define BROKEN_FIONREAD + + /* rocky@watson.ibm.com says this is needed. */ + #define HAVE_FTIME diff -cprP -x *.elc emacs-19.12/src/m/iris4d.h emacs-19.13/src/m/iris4d.h *** emacs-19.12/src/m/iris4d.h Tue Jun 8 05:39:08 1993 --- emacs-19.13/src/m/iris4d.h Thu Jun 3 17:46:13 1993 *************** *** 141,155 **** in which crt1.o and crt1.n should be used. */ #define HAVE_CRTN #ifdef HAVE_CRTN /* Must define START-FILES so that the linker can find /usr/lib/crt0.o. */ #define START_FILES pre-crt0.o /usr/lib/crt1.o ! #define LIB_STANDARD -lbsd -lc /usr/lib/crtn.o #else #define START_FILES pre-crt0.o /usr/lib/crt0.o /* The entry-point label (start of text segment) is `start', not `__start'. */ #define DEFAULT_ENTRY_ADDRESS start ! #define LIB_STANDARD -lbsd -lc #endif /* Use terminfo instead of termcap. */ --- 141,157 ---- in which crt1.o and crt1.n should be used. */ #define HAVE_CRTN + /* thomas@mathematik.uni-Bremen.de says -lbsd is not needed + and does harm with GETPGRP_ONE_ARG. */ #ifdef HAVE_CRTN /* Must define START-FILES so that the linker can find /usr/lib/crt0.o. */ #define START_FILES pre-crt0.o /usr/lib/crt1.o ! #define LIB_STANDARD -lc /usr/lib/crtn.o #else #define START_FILES pre-crt0.o /usr/lib/crt0.o /* The entry-point label (start of text segment) is `start', not `__start'. */ #define DEFAULT_ENTRY_ADDRESS start ! #define LIB_STANDARD -lc #endif /* Use terminfo instead of termcap. */ diff -cprP -x *.elc emacs-19.12/src/m/mips4.h emacs-19.13/src/m/mips4.h *** emacs-19.12/src/m/mips4.h Tue Jun 8 05:39:11 1993 --- emacs-19.13/src/m/mips4.h Sat Jun 5 04:06:11 1993 *************** *** 11,18 **** --- 11,20 ---- world. NOTE-END */ + #if 0 /* Define MIPS2 if you have an R6000 or R4000. */ #define MIPS2 + #endif #ifdef __GNUC__ #define C_DEBUG_SWITCH -g -O *************** NOTE-END */ *** 29,35 **** #endif #define START_FILES pre-crt0.o /lib/crt1.o ! #define LIB_STANDARD -lisode -lmld -lc /lib/crtn.o #define COFF --- 31,39 ---- #endif #define START_FILES pre-crt0.o /lib/crt1.o ! /* Used to have -lisode, but jlp@math.byu.edu says remove it ! (for RISCOS 4.52). */ ! #define LIB_STANDARD -lmld -lc /lib/crtn.o #define COFF diff -cprP -x *.elc emacs-19.12/src/m/news-risc.h emacs-19.13/src/m/news-risc.h *** emacs-19.12/src/m/news-risc.h Tue Jun 8 05:39:11 1993 --- emacs-19.13/src/m/news-risc.h Sun Jun 6 03:53:38 1993 *************** *** 19,21 **** --- 19,27 ---- #define C_DEBUG_SWITCH -g3 #undef TERMINFO + + /* We have no mode_t. */ + #define NO_MODE_T + + /* Don't use the definitoion in m/mips.h. */ + #undef LINKER diff -cprP -x *.elc emacs-19.12/src/m/pmax.h emacs-19.13/src/m/pmax.h *** emacs-19.12/src/m/pmax.h Tue Jun 8 05:39:15 1993 --- emacs-19.13/src/m/pmax.h Tue Jun 8 02:57:51 1993 *************** *** 50,59 **** #define HAVE_ALLOCA #endif ! /* mcc@timessqr.gc.cuny.edu says this makes Emacs work with DECnet. ! If you don't have DECnet and this causes trouble, ! just delete the definition. */ #define LIBS_MACHINE -ldnet /* mcc@timessqr.gc.cuny.edu says it is /vmunix on Ultrix 4.2a. */ #undef KERNEL_FILE --- 50,59 ---- #define HAVE_ALLOCA #endif ! /* mcc@timessqr.gc.cuny.edu says this makes Emacs work with DECnet. */ ! #ifdef HAVE_LIBDNET #define LIBS_MACHINE -ldnet + #endif /* mcc@timessqr.gc.cuny.edu says it is /vmunix on Ultrix 4.2a. */ #undef KERNEL_FILE diff -cprP -x *.elc emacs-19.12/src/m/sparc.h emacs-19.13/src/m/sparc.h *** emacs-19.12/src/m/sparc.h Tue Jun 8 05:39:17 1993 --- emacs-19.13/src/m/sparc.h Fri Jun 4 01:21:02 1993 *************** *** 5,11 **** 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 1, or (at your option) any later version. GNU Emacs is distributed in the hope that it will be useful, --- 5,11 ---- 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, diff -cprP -x *.elc emacs-19.12/src/m/tekXD88.h emacs-19.13/src/m/tekXD88.h *** emacs-19.12/src/m/tekXD88.h Tue Jun 8 05:39:22 1993 --- emacs-19.13/src/m/tekXD88.h Sun Jun 6 23:34:23 1993 *************** *** 150,156 **** #define BSTRING /* its in libc but not declared in any <*.h> file. */ #define HAVE_TZSET #define HAVE_SETSID - #define HAVE_RENAME #ifdef ghs /* Stands for "Green Hills Software", defined in /bin/cc */ /* Only required for use with the Green Hills compiler: --- 150,155 ---- diff -cprP -x *.elc emacs-19.12/src/process.c emacs-19.13/src/process.c *** emacs-19.12/src/process.c Tue Jun 8 05:40:43 1993 --- emacs-19.13/src/process.c Fri Jun 4 13:12:43 1993 *************** *** 2075,2083 **** --- 2075,2099 ---- hitting ^G when a filter happens to be running won't screw it up. */ int count = specpdl_ptr - specpdl; + Lisp_Object odeactivate; + + odeactivate = Vdeactivate_mark; + specbind (Qinhibit_quit, Qt); call2 (outstream, proc, make_string (chars, nchars)); + /* Deactivate the mark now, so it doesn't happen + *after* the following command. */ + if (!NILP (current_buffer->mark_active)) + { + if (!NILP (Vdeactivate_mark) && !NILP (Vtransient_mark_mode)) + { + current_buffer->mark_active = Qnil; + call1 (Vrun_hooks, intern ("deactivate-mark-hook")); + } + } + Vdeactivate_mark = odeactivate; + #ifdef VMS start_vms_process_read (vs); #endif *************** *** 2090,2096 **** --- 2106,2115 ---- { Lisp_Object old_read_only; Lisp_Object old_begv, old_zv; + Lisp_Object odeactivate; + odeactivate = Vdeactivate_mark; + Fset_buffer (p->buffer); opoint = point; old_read_only = current_buffer->read_only; *************** *** 2133,2138 **** --- 2152,2170 ---- /* If the restriction isn't what it should be, set it. */ if (XFASTINT (old_begv) != BEGV || XFASTINT (old_zv) != ZV) Fnarrow_to_region (old_begv, old_zv); + + /* Deactivate the mark now, so it doesn't happen + *after* the following command. */ + if (!NILP (current_buffer->mark_active)) + { + if (!NILP (Vdeactivate_mark) && !NILP (Vtransient_mark_mode)) + { + current_buffer->mark_active = Qnil; + call1 (Vrun_hooks, intern ("deactivate-mark-hook")); + } + } + + Vdeactivate_mark = odeactivate; current_buffer->read_only = old_read_only; SET_PT (opoint); diff -cprP -x *.elc emacs-19.12/src/puresize.h emacs-19.13/src/puresize.h *** emacs-19.12/src/puresize.h Tue Jun 8 05:41:52 1993 --- emacs-19.13/src/puresize.h Sat Jun 5 13:03:58 1993 *************** *** 28,34 **** storage to allocate. */ #ifndef PURESIZE ! #ifdef HAVE_X_WINDOWS #define PURESIZE 200000 #else #define PURESIZE 185000 --- 28,34 ---- storage to allocate. */ #ifndef PURESIZE ! #ifdef MULTI_FRAME #define PURESIZE 200000 #else #define PURESIZE 185000 diff -cprP -x *.elc emacs-19.12/src/regex.c emacs-19.13/src/regex.c *** emacs-19.12/src/regex.c Tue Jun 8 05:40:51 1993 --- emacs-19.13/src/regex.c Mon Jun 7 04:06:10 1993 *************** *** 4130,4140 **** detect that here, the alternative has put on a dummy failure point which is what we will end up popping. */ ! /* Skip over open/close-group commands. */ ! while (p2 + 2 < pend ! && ((re_opcode_t) *p2 == stop_memory ! || (re_opcode_t) *p2 == start_memory)) ! p2 += 3; /* Skip over args, too. */ /* If we're at the end of the pattern, we can change. */ if (p2 == pend) --- 4130,4156 ---- detect that here, the alternative has put on a dummy failure point which is what we will end up popping. */ ! /* Skip over open/close-group commands. ! If what follows this loop is a ...+ construct, ! look at what begins its body, since we will have to ! match at least one of that. */ ! while (1) ! { ! if (p2 + 2 < pend ! && ((re_opcode_t) *p2 == stop_memory ! || (re_opcode_t) *p2 == start_memory)) ! p2 += 3; ! else if (p2 + 6 < pend ! && (re_opcode_t) *p2 == dummy_failure_jump) ! p2 += 6; ! else ! break; ! } ! ! p1 = p + mcnt; ! /* p1[0] ... p1[2] are the `on_failure_jump' corresponding ! to the `maybe_finalize_jump' of this case. Examine what ! follows. */ /* If we're at the end of the pattern, we can change. */ if (p2 == pend) *************** *** 4152,4162 **** { register unsigned char c = *p2 == (unsigned char) endline ? '\n' : p2[2]; - p1 = p + mcnt; - /* p1[0] ... p1[2] are the `on_failure_jump' corresponding - to the `maybe_finalize_jump' of this case. Examine what - follows. */ if ((re_opcode_t) p1[3] == exactn && p1[5] != c) { p[-3] = (unsigned char) pop_failure_jump; --- 4168,4174 ---- *************** *** 4176,4181 **** --- 4188,4241 ---- /* `not' is equal to 1 if c would match, which means that we can't change to pop_failure_jump. */ if (!not) + { + p[-3] = (unsigned char) pop_failure_jump; + DEBUG_PRINT1 (" No match => pop_failure_jump.\n"); + } + } + } + else if ((re_opcode_t) *p2 == charset) + { + register unsigned char c + = *p2 == (unsigned char) endline ? '\n' : p2[2]; + + if ((re_opcode_t) p1[3] == exactn + && ! (p2[1] * BYTEWIDTH > p1[4] + && (p2[1 + p1[4] / BYTEWIDTH] + & (1 << (p1[4] % BYTEWIDTH))))) + { + p[-3] = (unsigned char) pop_failure_jump; + DEBUG_PRINT3 (" %c != %c => pop_failure_jump.\n", + c, p1[5]); + } + + else if ((re_opcode_t) p1[3] == charset_not) + { + int idx; + /* We win if the charset_not inside the loop + lists every character listed in the charset after. */ + for (idx = 0; idx < p2[1]; idx++) + if (! (p2[2 + idx] == 0 + || (idx < p1[4] + && ((p2[2 + idx] & ~ p1[5 + idx]) == 0)))) + break; + + if (idx == p2[1]) + { + p[-3] = (unsigned char) pop_failure_jump; + DEBUG_PRINT1 (" No match => pop_failure_jump.\n"); + } + } + else if ((re_opcode_t) p1[3] == charset) + { + int idx; + /* We win if the charset inside the loop + has no overlap with the one after the loop. */ + for (idx = 0; idx < p2[1] && idx < p1[4]; idx++) + if ((p2[2 + idx] & p1[5 + idx]) != 0) + break; + + if (idx == p2[1] || idx == p1[4]) { p[-3] = (unsigned char) pop_failure_jump; DEBUG_PRINT1 (" No match => pop_failure_jump.\n"); diff -cprP -x *.elc emacs-19.12/src/s/dgux.h emacs-19.13/src/s/dgux.h *** emacs-19.12/src/s/dgux.h Tue Jun 8 05:39:31 1993 --- emacs-19.13/src/s/dgux.h Mon Jun 7 14:20:27 1993 *************** *** 271,280 **** #define read sys_read #define write sys_write ! #define INTERRUPTABLE_OPEN ! #define INTERRUPTABLE_CLOSE /* can't hurt to define these, even though read/write should auto restart */ ! #define INTERRUPTABLE_IO /* Can't use sys_signal because then etc/server.c would need sysdep.o. */ #define signal(SIG,FUNC) berk_signal(SIG,FUNC) --- 271,280 ---- #define read sys_read #define write sys_write ! #define INTERRUPTIBLE_OPEN ! #define INTERRUPTIBLE_CLOSE /* can't hurt to define these, even though read/write should auto restart */ ! #define INTERRUPTIBLE_IO /* Can't use sys_signal because then etc/server.c would need sysdep.o. */ #define signal(SIG,FUNC) berk_signal(SIG,FUNC) diff -cprP -x *.elc emacs-19.12/src/s/hpux.h emacs-19.13/src/s/hpux.h *** emacs-19.12/src/s/hpux.h Tue Jun 8 05:39:32 1993 --- emacs-19.13/src/s/hpux.h Wed Jun 2 16:14:32 1993 *************** *** 258,260 **** --- 258,263 ---- /* This is how to get the device name of the control end of a pty. */ #define PTY_NAME_SPRINTF \ sprintf (pty_name, "/dev/ptym/pty%c%x", c, i); + + /* This triggers a conditional in xfaces.c. */ + #define XOS_NEEDS_TIME_H diff -cprP -x *.elc emacs-19.12/src/s/hpux9.h emacs-19.13/src/s/hpux9.h *** emacs-19.12/src/s/hpux9.h Tue Jun 8 05:39:33 1993 --- emacs-19.13/src/s/hpux9.h Mon Jun 7 14:05:13 1993 *************** *** 4,10 **** --- 4,12 ---- #define HPUX9 + #if 0 /* Try some debugging and see if gnu malloc hurts us */ #define SYSTEM_MALLOC 1 #undef GNU_MALLOC #undef REL_ALLOC + #endif diff -cprP -x *.elc emacs-19.12/src/s/sol2.h emacs-19.13/src/s/sol2.h *** emacs-19.12/src/s/sol2.h Tue Jun 8 05:39:38 1993 --- emacs-19.13/src/s/sol2.h Wed Jun 2 16:12:38 1993 *************** *** 1,5 **** --- 1,8 ---- #include "usg5-4.h" + /* This triggers a conditional in xfaces.c. */ + #define XOS_NEEDS_TIME_H + #define POSIX /* Here is how to find X Windows. The -R option says where diff -cprP -x *.elc emacs-19.12/src/sysdep.c emacs-19.13/src/sysdep.c *** emacs-19.12/src/sysdep.c Tue Jun 8 05:40:59 1993 --- emacs-19.13/src/sysdep.c Mon Jun 7 19:56:56 1993 *************** *** 239,245 **** sg.c_cflag = (sg.c_cflag & ~CBAUD) | B9600; tcgetattr (0, &sg); ! ospeed = sg.c_cflag & CBAUD; #else /* neither VMS nor TERMIOS */ #ifdef HAVE_TERMIO struct termio sg; --- 239,245 ---- sg.c_cflag = (sg.c_cflag & ~CBAUD) | B9600; tcgetattr (0, &sg); ! ospeed = cfgetospeed (&sg); #else /* neither VMS nor TERMIOS */ #ifdef HAVE_TERMIO struct termio sg; *************** *** 255,261 **** struct sgttyb sg; sg.sg_ospeed = B9600; ! ioctl (0, TIOCGETP, &sg); ospeed = sg.sg_ospeed; #endif /* not HAVE_TERMIO */ #endif /* not HAVE_TERMIOS */ --- 255,262 ---- struct sgttyb sg; sg.sg_ospeed = B9600; ! if (ioctl (0, TIOCGETP, &sg) < 0) ! abort (); ospeed = sg.sg_ospeed; #endif /* not HAVE_TERMIO */ #endif /* not HAVE_TERMIOS */ *************** wait_for_termination (pid) *** 346,352 **** sigunblock (sigmask (SIGCHLD)); break; } ! sigpause (sigmask (SIGCHLD)); #else /* not POSIX_SIGNALS */ #ifdef HAVE_SYSV_SIGPAUSE sighold (SIGCHLD); --- 347,353 ---- sigunblock (sigmask (SIGCHLD)); break; } ! sigpause (SIGEMPTYMASK); #else /* not POSIX_SIGNALS */ #ifdef HAVE_SYSV_SIGPAUSE sighold (SIGCHLD); *************** init_sys_modes () *** 1035,1040 **** --- 1036,1053 ---- #ifdef VDSUSP /* Some systems have VDSUSP, some have V_DSUSP. */ tty.main.c_cc[VDSUSP] = CDISABLE; #endif /* VDSUSP */ + #ifdef VLNEXT + tty.main.c_cc[VLNEXT] = CDISABLE; + #endif /* VLNEXT */ + #ifdef VREPRINT + tty.main.c_cc[VREPRINT] = CDISABLE; + #endif /* VREPRINT */ + #ifdef VWERASE + tty.main.c_cc[VWERASE] = CDISABLE; + #endif /* VWERASE */ + #ifdef VDISCARD + tty.main.c_cc[VDISCARD] = CDISABLE; + #endif /* VDISCARD */ #endif /* mips or HAVE_TCATTR */ #ifdef AIX #ifndef IBMR2AIX diff -cprP -x *.elc emacs-19.12/src/syssignal.h emacs-19.13/src/syssignal.h *** emacs-19.12/src/syssignal.h Tue Jun 8 05:41:55 1993 --- emacs-19.13/src/syssignal.h Fri Jun 4 22:06:24 1993 *************** *** 43,48 **** --- 43,49 ---- _mask; \ }) #else /* ! defined (__GNUC__) */ + extern sigset_t sys_sigmask (); #define sigmask(SIG) (sys_sigmask (SIG)) #endif /* ! defined (__GNUC__) */ #endif diff -cprP -x *.elc emacs-19.12/src/systime.h emacs-19.13/src/systime.h *** emacs-19.12/src/systime.h Tue Jun 8 05:41:56 1993 --- emacs-19.13/src/systime.h Sun Jun 6 03:59:45 1993 *************** *** 28,33 **** --- 28,39 ---- #endif #endif + #ifdef HAVE_TZNAME + #ifndef tzname /* For SGI. */ + extern char *tzname[]; /* RS6000 and others want it this way. */ + #endif + #endif + /* SVr4 doesn't actually declare this in its #include files. */ #ifdef USG5_4 extern long timezone; diff -cprP -x *.elc emacs-19.12/src/systty.h emacs-19.13/src/systty.h *** emacs-19.12/src/systty.h Tue Jun 8 05:41:56 1993 --- emacs-19.13/src/systty.h Mon Jun 7 19:39:44 1993 *************** *** 26,32 **** --- 26,34 ---- #ifdef __DGUX #include #endif + #ifndef NO_TERMIO #include + #endif /* not NO_TERMIO */ #include #else #ifdef HAVE_TERMIOS diff -cprP -x *.elc emacs-19.12/src/textprop.c emacs-19.13/src/textprop.c *** emacs-19.12/src/textprop.c Tue Jun 8 05:41:03 1993 --- emacs-19.13/src/textprop.c Mon Jun 7 18:15:29 1993 *************** *** 649,670 **** unchanged = i; i = split_interval_right (unchanged, s - unchanged->position + 1); copy_properties (unchanged, i); - if (LENGTH (i) > len) - { - i = split_interval_left (i, len + 1); - copy_properties (unchanged, i); - add_properties (properties, i, object); - return Qt; - } - - add_properties (properties, i, object); - modified = 1; - len -= LENGTH (i); - i = next_interval (i); } } ! /* We are at the beginning of an interval, with len to scan */ for (;;) { if (i == 0) --- 649,658 ---- unchanged = i; i = split_interval_right (unchanged, s - unchanged->position + 1); copy_properties (unchanged, i); } } ! /* We are at the beginning of interval I, with LEN chars to scan. */ for (;;) { if (i == 0) *************** is the string or buffer containing the t *** 742,756 **** { unchanged = i; i = split_interval_right (unchanged, s - unchanged->position + 1); - set_properties (props, i, object); if (LENGTH (i) > len) { - i = split_interval_right (i, len); copy_properties (unchanged, i); return Qt; } if (LENGTH (i) == len) return Qt; --- 730,746 ---- { unchanged = i; i = split_interval_right (unchanged, s - unchanged->position + 1); if (LENGTH (i) > len) { copy_properties (unchanged, i); + i = split_interval_left (i, len + 1); + set_properties (props, i, object); return Qt; } + set_properties (props, i, object); + if (LENGTH (i) == len) return Qt; *************** Return t if any property was actually re *** 828,852 **** return Qnil; len -= got; } ! /* Remove the properties from this interval. If it's short ! enough, return, splitting it if it's too short. */ else { unchanged = i; i = split_interval_right (unchanged, s - unchanged->position + 1); copy_properties (unchanged, i); - if (LENGTH (i) > len) - { - i = split_interval_left (i, len + 1); - copy_properties (unchanged, i); - remove_properties (props, i, object); - return Qt; - } - - remove_properties (props, i, object); - modified = 1; - len -= LENGTH (i); - i = next_interval (i); } } --- 818,830 ---- return Qnil; len -= got; } ! /* Split away the beginning of this interval; what we don't ! want to modify. */ else { unchanged = i; i = split_interval_right (unchanged, s - unchanged->position + 1); copy_properties (unchanged, i); } } *************** Return t if any property was actually re *** 868,874 **** } /* i has the properties, and goes past the change limit */ ! unchanged = split_interval_right (i, len + 1); copy_properties (unchanged, i); remove_properties (props, i, object); return Qt; --- 846,853 ---- } /* i has the properties, and goes past the change limit */ ! unchanged = i; ! i = split_interval_left (i, len + 1); copy_properties (unchanged, i); remove_properties (props, i, object); return Qt; diff -cprP -x *.elc emacs-19.12/src/uaf.h emacs-19.13/src/uaf.h *** emacs-19.12/src/uaf.h Tue Jun 8 05:41:58 1993 --- emacs-19.13/src/uaf.h Mon Jun 7 14:21:23 1993 *************** *** 230,236 **** uaf_v_wednesday : 1, #define uaf$v_wednesday uaf_u_primedays.uaf_v_wednesday uaf_v_thursday : 1, ! #define uaf$v_thursday uaf_u_primedays.uaf_v_thrusday uaf_v_friday : 1, #define uaf$v_friday uaf_u_primedays.uaf_v_friday uaf_v_saturday : 1, --- 230,236 ---- uaf_v_wednesday : 1, #define uaf$v_wednesday uaf_u_primedays.uaf_v_wednesday uaf_v_thursday : 1, ! #define uaf$v_thursday uaf_u_primedays.uaf_v_thursday uaf_v_friday : 1, #define uaf$v_friday uaf_u_primedays.uaf_v_friday uaf_v_saturday : 1, diff -cprP -x *.elc emacs-19.12/src/window.c emacs-19.13/src/window.c *** emacs-19.12/src/window.c Tue Jun 8 05:41:24 1993 --- emacs-19.13/src/window.c Sat Jun 5 14:07:17 1993 *************** *** 2569,2576 **** XBUFFER (p->buffer) == current_buffer) Fgoto_char (w->pointm); } ! else if (NILP (XBUFFER (w->buffer)->name)) ! /* Else if window's old buffer is dead too, get a live one. */ { w->buffer = Fcdr (Fcar (Vbuffer_alist)); /* This will set the markers to beginning of visible --- 2569,2576 ---- XBUFFER (p->buffer) == current_buffer) Fgoto_char (w->pointm); } ! else if (NILP (w->buffer) || NILP (XBUFFER (w->buffer)->name)) ! /* Else unless window has a live buffer, get one. */ { w->buffer = Fcdr (Fcar (Vbuffer_alist)); /* This will set the markers to beginning of visible *************** *** 2581,2588 **** } else /* Keeping window's old buffer; make sure the markers ! are real. Else if window's old buffer is dead too, ! get a live one. */ { /* Set window markers at start of visible range. */ if (XMARKER (w->start)->buffer == 0) --- 2581,2587 ---- } else /* Keeping window's old buffer; make sure the markers ! are real. */ { /* Set window markers at start of visible range. */ if (XMARKER (w->start)->buffer == 0) *************** work using this function."); *** 2900,2906 **** "If non-nil, this is a buffer and \\[scroll-other-window] should scroll its window."); Vother_window_scroll_buffer = Qnil; - #ifdef MULTI_FRAME DEFVAR_BOOL ("pop-up-frames", &pop_up_frames, "*Non-nil means `display-buffer' should make a separate frame."); pop_up_frames = 0; --- 2899,2904 ---- *************** It is called with no arguments and shoul *** 2912,2918 **** A typical value might be `(lambda () (new-frame pop-up-frame-alist))'\n\ where `pop-up-frame-alist' would hold the default frame parameters."); Vpop_up_frame_function = Qnil; - #endif DEFVAR_BOOL ("pop-up-windows", &pop_up_windows, "*Non-nil means display-buffer should make new windows."); --- 2910,2915 ---- diff -cprP -x *.elc emacs-19.12/src/xdisp.c emacs-19.13/src/xdisp.c *** emacs-19.12/src/xdisp.c Tue Jun 8 05:41:21 1993 --- emacs-19.13/src/xdisp.c Thu Jun 3 13:34:42 1993 *************** *** 312,318 **** if (frame_garbaged) { ! Fredraw_display (); frame_garbaged = 0; } --- 312,318 ---- if (frame_garbaged) { ! redraw_garbaged_frames (); frame_garbaged = 0; } *************** redisplay () *** 394,400 **** if (frame_garbaged) { ! Fredraw_display (); frame_garbaged = 0; } --- 394,400 ---- if (frame_garbaged) { ! redraw_garbaged_frames (); frame_garbaged = 0; } diff -cprP -x *.elc emacs-19.12/src/xfaces.c emacs-19.13/src/xfaces.c *** emacs-19.12/src/xfaces.c Tue Jun 8 05:41:25 1993 --- emacs-19.13/src/xfaces.c Sun Jun 6 18:45:58 1993 *************** *** 34,41 **** #include "blockinput.h" #include "window.h" ! /* Compensate for bug in Xos.h on hpux. */ ! #ifdef HPUX #include #define __TIMEVAL__ #endif --- 34,41 ---- #include "blockinput.h" #include "window.h" ! /* Compensate for bug in Xos.h on some systems. */ ! #ifdef XOS_NEEDS_TIME_H #include #define __TIMEVAL__ #endif *************** same_size_fonts (font1, font2) *** 590,598 **** XCharStruct *bounds1 = &font1->min_bounds; XCharStruct *bounds2 = &font2->min_bounds; ! return (bounds1->width == bounds2->width && bounds1->ascent == bounds2->ascent ! && bounds1->descent == bounds2->descent); } /* Modify face TO by copying from FROM all properties which have --- 590,605 ---- XCharStruct *bounds1 = &font1->min_bounds; XCharStruct *bounds2 = &font2->min_bounds; ! return (bounds1->width == bounds2->width); ! /* Checking the following caused bad results in some cases ! when fonts that should be the same size ! actually have very slightly different size. ! It is possible that this reintroduces the bug whereby line positions ! were not right. However, the right way to fix that is to change xterm.c ! so that the vertical positions of lines ! depend only on the height of the frame's font. && bounds1->ascent == bounds2->ascent ! && bounds1->descent == bounds2->descent); */ } /* Modify face TO by copying from FROM all properties which have diff -cprP -x *.elc emacs-19.12/src/xfns.c emacs-19.13/src/xfns.c *** emacs-19.12/src/xfns.c Tue Jun 8 05:41:30 1993 --- emacs-19.13/src/xfns.c Sat Jun 5 23:31:37 1993 *************** *** 39,45 **** --- 39,49 ---- extern void abort (); #ifndef VMS + #ifdef EMACS_BITMAP_FILES + #include "bitmaps/gray.xbm" + #else #include + #endif #else #include "[.bitmaps]gray.xbm" #endif *************** x_set_frame_parameters (f, alist) *** 332,357 **** /* Same here. */ Lisp_Object left, top; ! width = height = top = left = Qnil; for (tail = alist; CONSP (tail); tail = Fcdr (tail)) { Lisp_Object elt, prop, val; elt = Fcar (tail); ! prop = Fcar (elt); ! val = Fcdr (elt); ! /* Ignore all but the first set presented. You're supposed to ! be able to append two parameter lists and have the first ! shadow the second. */ ! if (EQ (prop, Qwidth) && NILP (width)) width = val; ! else if (EQ (prop, Qheight) && NILP (height)) height = val; ! else if (EQ (prop, Qtop) && NILP (top)) top = val; ! else if (EQ (prop, Qleft) && NILP (left)) left = val; else { --- 336,386 ---- /* Same here. */ Lisp_Object left, top; ! /* Record in these vectors all the parms specified. */ ! Lisp_Object *parms; ! Lisp_Object *values; ! int i; ! ! i = 0; ! for (tail = alist; CONSP (tail); tail = Fcdr (tail)) ! i++; ! ! parms = (Lisp_Object *) alloca (i * sizeof (Lisp_Object)); ! values = (Lisp_Object *) alloca (i * sizeof (Lisp_Object)); + /* Extract parm names and values into those vectors. */ + + i = 0; for (tail = alist; CONSP (tail); tail = Fcdr (tail)) { Lisp_Object elt, prop, val; elt = Fcar (tail); ! parms[i] = Fcar (elt); ! values[i] = Fcdr (elt); ! i++; ! } ! XSET (width, Lisp_Int, FRAME_WIDTH (f)); ! XSET (height, Lisp_Int, FRAME_HEIGHT (f)); ! XSET (top, Lisp_Int, f->display.x->top_pos); ! XSET (left, Lisp_Int, f->display.x->left_pos); ! ! /* Now process them in reverse of specified order. */ ! for (i--; i >= 0; i--) ! { ! Lisp_Object prop, val; ! ! prop = parms[i]; ! val = values[i]; ! ! if (EQ (prop, Qwidth)) width = val; ! else if (EQ (prop, Qheight)) height = val; ! else if (EQ (prop, Qtop)) top = val; ! else if (EQ (prop, Qleft)) left = val; else { *************** x_set_frame_parameters (f, alist) *** 372,383 **** { Lisp_Object frame; - if (NILP (width)) XSET (width, Lisp_Int, FRAME_WIDTH (f)); - if (NILP (height)) XSET (height, Lisp_Int, FRAME_HEIGHT (f)); - - if (NILP (top)) XSET (top, Lisp_Int, f->display.x->top_pos); - if (NILP (left)) XSET (left, Lisp_Int, f->display.x->left_pos); - XSET (frame, Lisp_Frame, f); if (XINT (width) != FRAME_WIDTH (f) || XINT (height) != FRAME_HEIGHT (f)) --- 401,406 ---- *************** x_set_menu_bar_lines_1 (window, n) *** 910,926 **** Lisp_Object window; int n; { ! for (; !NILP (window); window = XWINDOW (window)->next) ! { ! struct window *w = XWINDOW (window); ! XFASTINT (w->top) += n; ! if (!NILP (w->vchild)) ! x_set_menu_bar_lines_1 (w->vchild, n); ! if (!NILP (w->hchild)) ! x_set_menu_bar_lines_1 (w->hchild, n); } } --- 933,952 ---- Lisp_Object window; int n; { ! struct window *w = XWINDOW (window); ! XFASTINT (w->top) += n; ! XFASTINT (w->height) -= n; ! /* Handle just the top child in a vertical split. */ ! if (!NILP (w->vchild)) ! x_set_menu_bar_lines_1 (w->vchild, n); ! /* Adjust all children in a horizontal split. */ ! for (window = w->hchild; !NILP (window); window = w->next) ! { ! w = XWINDOW (window); ! x_set_menu_bar_lines_1 (window, n); } } *************** x_set_menu_bar_lines (f, value, oldval) *** 946,961 **** FRAME_MENU_BAR_LINES (f) = nlines; x_set_menu_bar_lines_1 (f->root_window, nlines - olines); - /* Use FRAME_NEW_WIDTH, HEIGHT so as not to override a size change - made by the user but not fully reflected in the Emacs frame object. */ - x_set_window_size (f, - (FRAME_NEW_WIDTH (f) - ? FRAME_NEW_WIDTH (f) - : FRAME_WIDTH (f)), - ((FRAME_NEW_HEIGHT (f) - ? FRAME_NEW_HEIGHT (f) - : FRAME_HEIGHT (f)) - + nlines - olines)); } /* Change the name of frame F to ARG. If ARG is nil, set F's name to --- 972,977 ---- *************** arg XRM_STRING is a string of resources *** 3471,3477 **** { int i; int len = XSTRING (Vxrdb_name)->size; ! char *data = XSTRING (Vxrdb_name)->data; for (i = 0; i < len; i++) if (data[i] == '.' || data[i] == '*') --- 3487,3493 ---- { int i; int len = XSTRING (Vxrdb_name)->size; ! unsigned char *data = XSTRING (Vxrdb_name)->data; for (i = 0; i < len; i++) if (data[i] == '.' || data[i] == '*') diff -cprP -x *.elc emacs-19.12/src/xmenu.c emacs-19.13/src/xmenu.c *** emacs-19.12/src/xmenu.c Tue Jun 8 05:41:31 1993 --- emacs-19.13/src/xmenu.c Sat Jun 5 13:31:46 1993 *************** *** 163,168 **** --- 163,172 ---- XMenu_xpos = FONT_WIDTH (f->display.x->font) * XWINDOW (window)->left; XMenu_ypos = FONT_HEIGHT (f->display.x->font) * XWINDOW (window)->top; } + else + /* ??? Not really clean; should be CHECK_WINDOW_OR_FRAME, + but I don't want to make one now. */ + CHECK_WINDOW (window, 0); XMenu_xpos += FONT_WIDTH (f->display.x->font) * XINT (x); XMenu_ypos += FONT_HEIGHT (f->display.x->font) * XINT (y); diff -cprP -x *.elc emacs-19.12/src/xselect.c emacs-19.13/src/xselect.c *** emacs-19.12/src/xselect.c Tue Jun 8 05:41:34 1993 --- emacs-19.13/src/xselect.c Sat Jun 5 04:37:41 1993 *************** *** 18,27 **** the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ /* x_handle_selection_notify ! x_reply_selection_request ! XFree ! x_selection_timeout initial value */ /* Rewritten by jwz */ #include "config.h" --- 18,26 ---- the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ /* x_handle_selection_notify ! x_reply_selection_request */ + /* Rewritten by jwz */ #include "config.h" *************** Lisp_Object Vselection_alist; *** 96,102 **** Lisp_Object Vselection_converter_alist; /* If the selection owner takes too long to reply to a selection request, ! we give up on it. This is in seconds (0 = no timeout.) */ int x_selection_timeout; --- 95,101 ---- Lisp_Object Vselection_converter_alist; /* If the selection owner takes too long to reply to a selection request, ! we give up on it. This is in milliseconds (0 = no timeout.) */ int x_selection_timeout; *************** x_get_foreign_selection (selection_symbo *** 958,963 **** --- 957,963 ---- Atom target_property = Xatom_EMACS_TMP; Atom selection_atom = symbol_to_x_atom (display, selection_symbol); Atom type_atom; + int secs, usecs; if (CONSP (target_type)) type_atom = symbol_to_x_atom (display, XCONS (target_type)->car); *************** x_get_foreign_selection (selection_symbo *** 975,983 **** XCONS (reading_selection_reply)->car = Qnil; UNBLOCK_INPUT; ! /* This allows quits. */ ! wait_reading_process_input (x_selection_timeout, 0, ! reading_selection_reply, 0); if (NILP (XCONS (reading_selection_reply)->car)) error ("timed out waiting for reply from selection owner"); --- 975,984 ---- XCONS (reading_selection_reply)->car = Qnil; UNBLOCK_INPUT; ! /* This allows quits. Also, don't wait forever. */ ! secs = x_selection_timeout / 1000; ! usecs = (x_selection_timeout % 1000) * 1000; ! wait_reading_process_input (secs, usecs, reading_selection_reply, 0); if (NILP (XCONS (reading_selection_reply)->car)) error ("timed out waiting for reply from selection owner"); *************** it merely informs you that they have hap *** 1935,1944 **** Vx_sent_selection_hooks = Qnil; DEFVAR_INT ("x-selection-timeout", &x_selection_timeout, ! "Number of seconds to wait for a selection reply from another X client.\n\ ! If the selection owner doens't reply in this many seconds, we give up.\n\ A value of 0 means wait as long as necessary. This is initialized from the\n\ ! \"*selectionTimeout\" resource (which is expressed in milliseconds)."); x_selection_timeout = 0; QPRIMARY = intern ("PRIMARY"); staticpro (&QPRIMARY); --- 1936,1945 ---- Vx_sent_selection_hooks = Qnil; DEFVAR_INT ("x-selection-timeout", &x_selection_timeout, ! "Number of milliseconds to wait for a selection reply.\n\ ! If the selection owner doens't reply in this time, we give up.\n\ A value of 0 means wait as long as necessary. This is initialized from the\n\ ! \"*selectionTimeout\" resource."); x_selection_timeout = 0; QPRIMARY = intern ("PRIMARY"); staticpro (&QPRIMARY); diff -cprP -x *.elc emacs-19.12/src/xterm.c emacs-19.13/src/xterm.c *** emacs-19.12/src/xterm.c Tue Jun 8 05:41:39 1993 --- emacs-19.13/src/xterm.c Mon Jun 7 19:52:20 1993 *************** *** 3801,3807 **** } /* A buffer for storing X error messages. */ ! static char (*x_caught_error_message)[200]; /* An X error handler which stores the error message in x_caught_error_message. This is what's installed when --- 3801,3808 ---- } /* A buffer for storing X error messages. */ ! static char *x_caught_error_message; ! #define X_CAUGHT_ERROR_MESSAGE_SIZE 200 /* An X error handler which stores the error message in x_caught_error_message. This is what's installed when *************** x_error_catcher (display, error) *** 3812,3818 **** XErrorEvent *error; { XGetErrorText (display, error->error_code, ! *x_caught_error_message, sizeof (*x_caught_error_message)); } --- 3813,3819 ---- XErrorEvent *error; { XGetErrorText (display, error->error_code, ! x_caught_error_message, X_CAUGHT_ERROR_MESSAGE_SIZE); } *************** x_catch_errors () *** 3835,3843 **** XSync (x_current_display, False); /* Set up the error buffer. */ ! x_caught_error_message = ! (char (*)[]) xmalloc (sizeof (*x_caught_error_message)); ! (*x_caught_error_message)[0] = '\0'; /* Install our little error handler. */ XHandleError (x_error_catcher); --- 3836,3844 ---- XSync (x_current_display, False); /* Set up the error buffer. */ ! x_caught_error_message ! = (char*) xmalloc (X_CAUGHT_ERROR_MESSAGE_SIZE); ! x_caught_error_message[0] = '\0'; /* Install our little error handler. */ XHandleError (x_error_catcher); *************** x_check_errors (format) *** 3853,3865 **** /* Make sure to catch any errors incurred so far. */ XSync (x_current_display, False); ! if ((*x_caught_error_message)[0]) { ! char buf[256]; ! sprintf (buf, format, *x_caught_error_message); ! xfree (x_caught_error_message); ! x_uncatch_errors (); error (buf); } --- 3854,3864 ---- /* Make sure to catch any errors incurred so far. */ XSync (x_current_display, False); ! if (x_caught_error_message[0]) { ! char buf[X_CAUGHT_ERROR_MESSAGE_SIZE + 56]; ! sprintf (buf, format, x_caught_error_message); x_uncatch_errors (); error (buf); } *************** void *** 3869,3874 **** --- 3868,3874 ---- x_uncatch_errors () { xfree (x_caught_error_message); + x_caught_error_message = 0; XHandleError (x_error_quitter); } *************** x_new_font (f, fontname) *** 3916,3945 **** font_names = (char **) XListFontsWithInfo (x_current_display, fontname, 1024, &n_matching_fonts, &font_info); ! ! /* If the server couldn't find any fonts whose named matched fontname, ! return an error code. */ ! if (n_matching_fonts == 0) ! return Qnil; /* See if we've already loaded a matching font. */ ! { ! int i, j; ! already_loaded = 0; ! for (i = 0; i < n_fonts; i++) ! for (j = 0; j < n_matching_fonts; j++) ! if (x_font_table[i]->fid == font_info[j].fid) ! { ! already_loaded = i; ! fontname = font_names[j]; ! goto found_font; ! } ! } found_font: /* If we have, just return it from the table. */ ! if (already_loaded) f->display.x->font = x_font_table[already_loaded]; /* Otherwise, load the font and add it to the table. */ --- 3916,3944 ---- font_names = (char **) XListFontsWithInfo (x_current_display, fontname, 1024, &n_matching_fonts, &font_info); ! /* Don't just give up if n_matching_fonts is 0. ! Apparently there's a bug on Suns: XListFontsWithInfo can ! fail to find a font, but XLoadQueryFont may still find it. */ /* See if we've already loaded a matching font. */ ! already_loaded = -1; ! if (n_matching_fonts != 0) ! { ! int i, j; ! for (i = 0; i < n_fonts; i++) ! for (j = 0; j < n_matching_fonts; j++) ! if (x_font_table[i]->fid == font_info[j].fid) ! { ! already_loaded = i; ! fontname = font_names[j]; ! goto found_font; ! } ! } found_font: /* If we have, just return it from the table. */ ! if (already_loaded > 0) f->display.x->font = x_font_table[already_loaded]; /* Otherwise, load the font and add it to the table. */ *************** x_new_font (f, fontname) *** 3958,3971 **** i = 0; #endif ! if (i >= n_matching_fonts) ! return Qt; ! else fontname = font_names[i]; font = (XFontStruct *) XLoadQueryFont (x_current_display, fontname); if (! font) ! return Qnil; /* Do we need to create the table? */ if (x_font_table_size == 0) --- 3957,3974 ---- i = 0; #endif ! /* See comment above. */ ! if (n_matching_fonts != 0) fontname = font_names[i]; font = (XFontStruct *) XLoadQueryFont (x_current_display, fontname); if (! font) ! { ! /* Free the information from XListFontsWithInfo. */ ! if (n_matching_fonts) ! XFreeFontInfo (font_names, font_info, n_matching_fonts); ! return Qnil; ! } /* Do we need to create the table? */ if (x_font_table_size == 0) *************** x_wm_set_size_hint (f, prompting) *** 4559,4565 **** { XSizeHints hints; /* Sometimes I hate X Windows... */ ! XGetNormalHints (x_current_display, window, &hints); if (hints.flags & PSize) size_hints.flags |= PSize; if (hints.flags & PPosition) --- 4562,4569 ---- { XSizeHints hints; /* Sometimes I hate X Windows... */ ! if (XGetNormalHints (x_current_display, window, &hints) == 0) ! hints.flags = 0; if (hints.flags & PSize) size_hints.flags |= PSize; if (hints.flags & PPosition) diff -cprP -x *.elc emacs-19.12/src/ymakefile emacs-19.13/src/ymakefile *** emacs-19.12/src/ymakefile Tue Jun 8 05:42:03 1993 --- emacs-19.13/src/ymakefile Tue Jun 8 02:57:36 1993 *************** *** 170,192 **** #endif /* not ORDINARY_LINK */ - /* This macro says how to compile for debugging. - If you want to optimize, DON'T change this macro. - Instead, replace C_DEBUG_SWITCH with C_OPTIMIZE_SWITCH - where ALL_CFLAGS is set. */ - #ifndef C_DEBUG_SWITCH - #ifdef __GNUC__ - #define C_DEBUG_SWITCH -g -O - #else /* ! defined (__GNUC__) */ - #define C_DEBUG_SWITCH -g - #endif /* ! defined (__GNUC__) */ - #endif /* C_DEBUG_SWITCH */ - - /* If user wants to optimize, this is how. */ - #ifndef C_OPTIMIZE_SWITCH - #define C_OPTIMIZE_SWITCH -O - #endif - /* cc switches needed to make `asm' keyword work. Nothing special needed on most machines. */ #ifndef C_SWITCH_ASM --- 170,175 ---- *************** LIBX= $(LIBXMENU) LD_SWITCH_X_SITE -lX10 *** 304,310 **** #ifndef LIB_GCC /* Ask GCC where to find libgcc.a. */ ! #define LIB_GCC -L`gcc -print-libgcc-file-name` #endif /* LIB_GCC */ GNULIB_VAR = LIB_GCC --- 287,293 ---- #ifndef LIB_GCC /* Ask GCC where to find libgcc.a. */ ! #define LIB_GCC `gcc -print-libgcc-file-name` #endif /* LIB_GCC */ GNULIB_VAR = LIB_GCC *************** alloca.o : alloca.s config.h *** 637,652 **** /* $(CPP) is cc -E, which may get confused by filenames that do not end in .c. So copy file to a safe name. */ cp ${srcdir}/alloca.s allocatem.c ! /* remove any ^L, blank lines, and preprocessor comments, ! since some assemblers barf on them */ $(CPP) $(CPPFLAGS) $(ALL_CFLAGS) allocatem.c | \ sed -e 's/ //' -e 's/^#.*//' | \ ! sed -n -e '/^..*$$/p' > allocatem.s -rm -f alloca.o /* Xenix, in particular, needs to run assembler via cc. */ ! $(CC) -c allocatem.s ! mv allocatem.o alloca.o ! rm allocatem.s allocatem.c #endif /* HAVE_ALLOCA */ #endif /* ! defined (C_ALLOCA) */ --- 620,637 ---- /* $(CPP) is cc -E, which may get confused by filenames that do not end in .c. So copy file to a safe name. */ cp ${srcdir}/alloca.s allocatem.c ! /* Remove any ^L, blank lines, and preprocessor comments, ! since some assemblers barf on them. Use a different basename for the ! output file, since some stupid compilers (Green Hill's) use that ! name for the intermediate assembler file. */ $(CPP) $(CPPFLAGS) $(ALL_CFLAGS) allocatem.c | \ sed -e 's/ //' -e 's/^#.*//' | \ ! sed -n -e '/^..*$$/p' > allocax.s -rm -f alloca.o /* Xenix, in particular, needs to run assembler via cc. */ ! $(CC) -c allocax.s ! mv allocax.o alloca.o ! rm allocax.s allocax.c #endif /* HAVE_ALLOCA */ #endif /* ! defined (C_ALLOCA) */