This file contains patches to turn version 19.13 of GNU Emacs into 19.14. To apply them, cd to the top of the Emacs source tree, and then run the shell commands below. rm README-c++ rm README-sol2 (cd lisp mv c++-mode-1.el cplus-md1.el mv c++-mode.el cplus-md.el mv c++-mode.elc cplus-md.elc rm cmulisp.el cmulisp.elc (cd forms-mode mv * ..) rmdir forms-mode rm term/ChangeLog) # this has been integrated into lisp/ChangeLog (cd src/s rm 3700.h) patch -p1 < emacs-19.13-19.14.diff.gz diff -cprP --exclude=*.elc emacs-19.13/ChangeLog emacs-19.14/ChangeLog *** emacs-19.13/ChangeLog Tue Jun 8 03:26:11 1993 --- emacs-19.14/ChangeLog Thu Jun 17 21:24:04 1993 *************** *** 1,4 **** --- 1,89 ---- + Thu Jun 17 19:29:56 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Version 19.14 released. + + Thu Jun 17 00:53:41 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * make-dist: If using gzip, create distribution with '.gz' extension. + + * make-dist (lisp/term): This doesn't have a ChangeLog anymore. + (lisp/forms-mode): This doesn't exist anymore. + + * configure.in: Look for the closedir function. + + Wed Jun 16 16:48:35 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * configure.in (CPP): Autoconf sets this to a shell variable + reference, which doesn't work when it's edited into a makefile. + Expand that variable reference. + + * Makefile.in (CPP): New variable. + (src/Makefile): Edit CPP into src/Makefile. + + * Makefile.in (src/Makefile): Don't bother exiting single quotes + and entering double quotes to get the values of LD_SWITCH_X_SITE + and the other make variables; make substitutes them in anyway. + + * Makefile.in (uninstall): Don't remove the lisp and etc + directories if they're in the source tree. + + Bring mumbleclean targets into conformance with GNU coding standards. + * Makefile.in (mostlyclean, clean): Separate these two; just have + them pass the request to the subdirectory makefiles. + (distclean): Pass the request down, and then get rid of the + files configure built, and get rid of the Makefiles. + (realclean): Pass the request down, and then do the same things + distclean does. + (uninstall, info, dvi): New targets. + + * configure.in: Move clause for PC-compatible i386 box to the end + of the case statement, to avoid masking configurations below. + + * configure.in: Add case for m88k-motorola-sysv4. + + * configure.in: Add support for HP/UX versions 7, 8, and 9 on + the HP 68000 machines. + + * configure.in: Put the arguments to LD_SWITCH_X_SITE's and + C_SWITCH_X_SITE's -L and -I switches in quotes, so the + preprocessor won't fiddle with them. + + Sun Jun 13 04:23:31 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile.in (TAGS): cd to src to run etags. + + Sat Jun 12 05:54:23 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * configure.in (version): Check the X libraries for XrmSetDatabase + and random, and see if we have -lXbsd. + + Fri Jun 11 02:35:54 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * configure.in: Pass "-Isrc" to the CPP we run to examine the + s/*.h and m/*.h files. Martin Tomes + says ISC Unix 3.0.1 needs it. + + Thu Jun 10 19:03:24 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * configure.in: Move i386-prime-sysv* and i386-sequent-bsd* + above the general i386 alternative. + + Thu Jun 10 01:45:45 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * configure.in: Recognize configuration name for Data General + AViiON machines. + + * configure.in: Use AC_LONG_FILE_NAMES. + + Wed Jun 9 00:05:06 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * configure.in: Test for bison. + * Makefile.in (YACC): New variable. + (lib-src/Makefile.in): Edit YACC into the makefile. + Tue Jun 8 02:42:18 1993 Jim Blandy (jimb@totoro.cs.oberlin.edu) + + * Version 19.13 released. * configure.in (CFLAGS): Don't set this according to the value of the GCC shell variable. Instead, consult the machine and system diff -cprP --exclude=*.elc emacs-19.13/GETTING.GNU.SOFTWARE emacs-19.14/GETTING.GNU.SOFTWARE *** emacs-19.13/GETTING.GNU.SOFTWARE Tue Jun 8 07:11:01 1993 --- emacs-19.14/GETTING.GNU.SOFTWARE Mon Jun 14 11:10:33 1993 *************** *** 36,42 **** Free Software Foundation. See `/pub/gnu/GNUinfo/DISTRIB' and `/pub/gnu/GNUinfo/ORDERS'. ! * What format are the *.z files in? Because the unix `compress' utility is patented (by two separate patents, in fact), we cannot use it; it's not free software. --- 36,42 ---- Free Software Foundation. See `/pub/gnu/GNUinfo/DISTRIB' and `/pub/gnu/GNUinfo/ORDERS'. ! * What format are the *.gz files in? Because the unix `compress' utility is patented (by two separate patents, in fact), we cannot use it; it's not free software. *************** Therefore, the GNU Project has chosen a *** 46,56 **** compress better anyway. As of March 1993, all compressed files in the GNU anonymous FTP area, `prep.ai.mit.edu:/pub/gnu', have been converted to the new format. Files compressed with this new ! compression program end in `.z' (as opposed to `compress'-compressed files, which end in `.Z'). Gzip can uncompress `compress'-compressed files and `pack' files ! (which also end in `.z'). This is possible because the various decompression algorithms are not patented---only compression is. The gzip program is available from any GNU mirror site in shar, tar, --- 46,56 ---- compress better anyway. As of March 1993, all compressed files in the GNU anonymous FTP area, `prep.ai.mit.edu:/pub/gnu', have been converted to the new format. Files compressed with this new ! compression program end in `.gz' (as opposed to `compress'-compressed files, which end in `.Z'). Gzip can uncompress `compress'-compressed files and `pack' files ! (which end in `.z'). This is possible because the various decompression algorithms are not patented---only compression is. The gzip program is available from any GNU mirror site in shar, tar, diff -cprP --exclude=*.elc emacs-19.13/INSTALL emacs-19.14/INSTALL *** emacs-19.13/INSTALL Tue Jun 8 07:11:02 1993 --- emacs-19.14/INSTALL Wed Jun 9 06:54:50 1993 *************** *** 389,395 **** 4) Typing `make src/Makefile lib-src/Makefile' builds the makefiles for the subdirectories, editing in the values for the path ! variables you establed in step 3. -- or -- --- 389,395 ---- 4) Typing `make src/Makefile lib-src/Makefile' builds the makefiles for the subdirectories, editing in the values for the path ! variables you established in step 3. -- or -- diff -cprP --exclude=*.elc emacs-19.13/Makefile.in emacs-19.14/Makefile.in *** emacs-19.13/Makefile.in Tue Jun 8 07:11:04 1993 --- emacs-19.14/Makefile.in Wed Jun 16 21:04:47 1993 *************** *** 37,42 **** --- 37,43 ---- # ==================== Things `configure' Might Edit ==================== CC=@CC@ + CPP=@CPP@ C_SWITCH_SYSTEM=@c_switch_system@ ALLOCA=@ALLOCA@ LN_S=@LN_S@ *************** LN_S=@LN_S@ *** 43,48 **** --- 44,50 ---- CFLAGS=@CFLAGS@ C_SWITCH_X_SITE=@C_SWITCH_X_SITE@ LD_SWITCH_X_SITE=@LD_SWITCH_X_SITE@ + YACC=@YACC@ ### These help us choose version- and architecture-specific directories ### to install files in. *************** lib-src/Makefile: ${srcdir}/lib-src/Make *** 256,261 **** --- 258,264 ---- -e 's|^\(VPATH *=\).*$$|\1'"${srcdir}"'/lib-src|' \ -e 's|^\(archlibdir *=\).*$$|\1'"${archlibdir}"'|' \ -e 's|^\(ALLOCA *=\).*$$|\1'"${ALLOCA}"'|' \ + -e 's|^\(YACC *=\).*$$|\1'"${YACC}"'|' \ -e 's|^CC *=.*$$|CC='"${CC}"'|' \ -e 's|^CFLAGS *=.*$$|CFLAGS='"${CFLAGS}"'|' \ -e 's|^C_SWITCH_SYSTEM *=.*$$|C_SWITCH_SYSTEM='"${C_SWITCH_SYSTEM}"'|' \ *************** src/Makefile: ${srcdir}/src/Makefile.in *** 273,284 **** echo "# Emacs build tree instead, or editing" ; \ echo "# \`${srcdir}/src/Makefile.in' itself." ; \ sed < ${srcdir}/src/Makefile.in \ ! -e 's|^\(srcdir *=\).*$$|\1'"${srcdir}"'/src|' \ ! -e 's|^\(VPATH *=\).*$$|\1'"${srcdir}"'/src|' \ ! -e 's|^CC *=.*$$|CC='"${CC}"'|' \ ! -e 's|^LN_S *=.*$$|LN_S='"${LN_S}"'|' \ ! -e 's|^CFLAGS *=.*$$|CFLAGS='"${CFLAGS}"'|' \ ! -e 's|^\(LD_SWITCH_X_SITE *=\).*$$|\1'"${LD_SWITCH_X_SITE}"'|' \ -e '/^# DIST: /d') > src/Makefile.tmp @${srcdir}/move-if-change src/Makefile.tmp src/Makefile chmod -w src/Makefile --- 276,288 ---- echo "# Emacs build tree instead, or editing" ; \ echo "# \`${srcdir}/src/Makefile.in' itself." ; \ sed < ${srcdir}/src/Makefile.in \ ! -e 's|^\(srcdir *=\).*$$|\1${srcdir}/src|' \ ! -e 's|^\(VPATH *=\).*$$|\1${srcdir}/src|' \ ! -e 's|^CC *=.*$$|CC=${CC}|' \ ! -e 's|^CPP *=.*$$|CPP=${CPP}|' \ ! -e 's|^LN_S *=.*$$|LN_S=${LN_S}|' \ ! -e 's|^CFLAGS *=.*$$|CFLAGS=${CFLAGS}|' \ ! -e 's|^\(LD_SWITCH_X_SITE *=\).*$$|\1${LD_SWITCH_X_SITE}|' \ -e '/^# DIST: /d') > src/Makefile.tmp @${srcdir}/move-if-change src/Makefile.tmp src/Makefile chmod -w src/Makefile *************** mkdir: FRC.mkdir *** 381,432 **** `echo ${locallisppath} | sed 's/:/ /'` chmod 777 ${COPYDESTS} ${lockdir} ### Some makes seem to remember that they've built something called FRC, ### so you can only use a given FRC once per makefile. FRC FRC.src.paths.h FRC.src FRC.lib-src FRC.mkdir: ! # ==================== Cleaning up and miscellanea ==================== - ### `clean' - ### Delete all files from the current directory that are normally - ### created by building the program. Don't delete the files that - ### record the configuration. Also preserve files that could be made - ### by building, but normally aren't because the distribution comes - ### with them. ### `mostlyclean' ! ### Like `clean', but may refrain from deleting a few files that ! ### people normally don't want to recompile. For example, the ! ### `mostlyclean' target for GCC does not delete `libgcc.a', because ! ### recompiling it is rarely necessary and takes a lot of time. ### ! clean mostlyclean: ! cd src; $(MAKE) clean ! cd lib-src; $(MAKE) clean ! cd oldXMenu; $(MAKE) clean ! if [ `(cd ${etcdir} && /bin/pwd)` != `(cd etc && /bin/pwd)` ] ; then \ ! cd etc; $(MAKE) clean; \ ! else true; \ ! fi ### `distclean' ! ### Delete all files from the current directory that are created by ! ### configuring or building the program. This should leave only the ! ### files that would be in the distribution. ! distclean: ! for i in ${SUBDIR}; do (cd $$i; $(MAKE) ${MFLAGS} distclean); done ! -(cd lock; rm *) ! -rm config.status config-tmp-* ### `realclean' ! ### Delete everything from the current directory that can be ! ### reconstructed with this makefile. This typically includes ! ### everything deleted by distclean, plus more: C source files ! ### produced by Bison, tags tables, info files, and so on. ! realclean: ! for i in ${SUBDIR}; do (cd $$i; $(MAKE) ${MFLAGS} realclean); done ! (cd lock; rm *) ! rm config.status ### This doesn't actually appear in the coding standards, but Karl ### says GCC supports it, and that's where the configuration part of --- 385,483 ---- `echo ${locallisppath} | sed 's/:/ /'` chmod 777 ${COPYDESTS} ${lockdir} + ### Delete all the installed files that the `install' target would + ### create (but not the noninstalled files such as `make all' would + ### create). + ### + ### Don't delete the lisp and etc directories if they're in the source tree. + uninstall: + (cd lib-src; \ + $(MAKE) ${MFLAGS} uninstall \ + prefix=${prefix} exec_prefix=${exec_prefix} \ + bindir=${bindir} libdir=${libdir} archlibdir=${archlibdir}) + for dir in ${lispdir} ${etcdir} ; do \ + case `(cd $${dir} ; pwd)` in \ + `(cd ${srcdir} ; pwd)`* ) ;; \ + * ) rm -rf $${dir} ;; \ + esac ; \ + case $${dir} in \ + ${datadir}/emacs/${version}/* ) \ + rm -rf ${datadir}/emacs/${version} \ + ;; \ + esac ; \ + done + (cd ${infodir}; rm -f cl* emacs* forms* info* vip*) + (cd ${mandir}; rm -f emacs.1 etags.1 ctags.1) + (cd ${bindir}; rm -f emacs-${version} emacs) + + ### Some makes seem to remember that they've built something called FRC, ### so you can only use a given FRC once per makefile. FRC FRC.src.paths.h FRC.src FRC.lib-src FRC.mkdir: ! FRC.mostlyclean FRC.clean FRC.distclean FRC.realclean: # ==================== Cleaning up and miscellanea ==================== ### `mostlyclean' ! ### Like `clean', but may refrain from deleting a few files that people ! ### normally don't want to recompile. For example, the `mostlyclean' ! ### target for GCC does not delete `libgcc.a', because recompiling it ! ### is rarely necessary and takes a lot of time. ! mostlyclean: FRC.mostlyclean ! (cd src; make ${MFLAGS} mostlyclean) ! (cd oldXMenu; make ${MFLAGS} mostlyclean) ! (cd lib-src; make ${MFLAGS} mostlyclean) ! (cd man; make ${MFLAGS} mostlyclean) ! ! ### `clean' ! ### Delete all files from the current directory that are normally ! ### created by building the program. Don't delete the files that ! ### record the configuration. Also preserve files that could be made ! ### by building, but normally aren't because the distribution comes ! ### with them. ### ! ### Delete `.dvi' files here if they are not part of the distribution. ! clean: FRC.clean ! (cd src; make ${MFLAGS} clean) ! (cd oldXMenu; make ${MFLAGS} clean) ! (cd lib-src; make ${MFLAGS} clean) ! (cd man; make ${MFLAGS} clean) ### `distclean' ! ### Delete all files from the current directory that are created by ! ### configuring or building the program. If you have unpacked the ! ### source and built the program without creating any other files, ! ### `make distclean' should leave only the files that were in the ! ### distribution. ! top_distclean=\ ! rm -f config.status build-install ; \ ! rm -f Makefile ${SUBDIR_MAKEFILES} ; \ ! (cd lock ; rm *) ! distclean: FRC.distclean ! (cd src; make ${MFLAGS} distclean) ! (cd oldXMenu; make ${MFLAGS} distclean) ! (cd lib-src; make ${MFLAGS} distclean) ! (cd man; make ${MFLAGS} distclean) ! ${top_distclean} ! ### `realclean' ! ### Delete everything from the current directory that can be ! ### reconstructed with this Makefile. This typically includes ! ### everything deleted by distclean, plus more: C source files ! ### produced by Bison, tags tables, info files, and so on. ! ### ! ### One exception, however: `make realclean' should not delete ! ### `configure' even if `configure' can be remade using a rule in the ! ### Makefile. More generally, `make realclean' should not delete ! ### anything that needs to exist in order to run `configure' and then ! ### begin to build the program. ! realclean: FRC.realclean ! (cd src; make ${MFLAGS} realclean) ! (cd oldXMenu; make ${MFLAGS} realclean) ! (cd lib-src; make ${MFLAGS} realclean) ! (cd man; make ${MFLAGS} realclean) ! ${top_distclean} ### This doesn't actually appear in the coding standards, but Karl ### says GCC supports it, and that's where the configuration part of *************** relock: *** 474,481 **** (cd src; make relock) TAGS tags: lib-src ! (cd ${srcdir} ; lib-src/etags --output=./src/TAGS \ ! src/*.[ch] lisp/*.el lisp/term/*.el) check: @echo "We don't have any tests for GNU Emacs yet." --- 525,532 ---- (cd src; make relock) TAGS tags: lib-src ! (cd ${srcdir}/src; \ ! ../lib-src/etags *.[ch] ../lisp/*.el ../lisp/term/*.el) check: @echo "We don't have any tests for GNU Emacs yet." *************** check: *** 482,484 **** --- 533,540 ---- dist: cd ${srcdir}; make-dist + + info: + (cd ${srcdir}/man; make ${MFLAGS} info) + dvi: + (cd ${srcdir}/man; make ${MFLAGS} dvi) diff -cprP --exclude=*.elc emacs-19.13/PROBLEMS emacs-19.14/PROBLEMS *** emacs-19.13/PROBLEMS Tue Jun 8 07:11:03 1993 --- emacs-19.14/PROBLEMS Wed Jun 9 06:54:56 1993 *************** *** 41,47 **** This typically happens on Suns and other systems that use shared libraries. The cause is that the site has installed a version of the shared library which uses a name server--but has not installed a ! similiar version of the unshared library which Emacs uses. The result is that most programs, using the shared library, work with the nameserver, but Emacs does not. --- 41,47 ---- This typically happens on Suns and other systems that use shared libraries. The cause is that the site has installed a version of the shared library which uses a name server--but has not installed a ! similar version of the unshared library which Emacs uses. The result is that most programs, using the shared library, work with the nameserver, but Emacs does not. *************** corresponding pair of files should fix t *** 65,71 **** * Trouble using ptys on AIX. ! People often instll the pty devices on AIX incorrectly. Use `smit pty' to reinstall them properly. * Shell mode on HP/UX gives the message, "`tty`: Ambiguous". --- 65,71 ---- * Trouble using ptys on AIX. ! People often install the pty devices on AIX incorrectly. Use `smit pty' to reinstall them properly. * Shell mode on HP/UX gives the message, "`tty`: Ambiguous". *************** in sysV.) You can use keyboard-translat *** 458,464 **** to map two other input characters (such as C-^ and C-\) into C-s and C-q, so that you can still search and quote. ! I have no intention of ever redisigning the Emacs command set for the assumption that terminals use C-s/C-q flow control. This flow control technique is a bad design, and terminals that need it are bad merchandise and should not be purchased. If you can --- 458,464 ---- to map two other input characters (such as C-^ and C-\) into C-s and C-q, so that you can still search and quote. ! I have no intention of ever redesigning the Emacs command set for the assumption that terminals use C-s/C-q flow control. This flow control technique is a bad design, and terminals that need it are bad merchandise and should not be purchased. If you can diff -cprP --exclude=*.elc emacs-19.13/README emacs-19.14/README *** emacs-19.13/README Tue Jun 8 07:07:09 1993 --- emacs-19.14/README Thu Jun 17 21:24:40 1993 *************** *** 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 --- 1,4 ---- ! This directory tree holds version 19.14 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 *************** Emacs for several architectures installe *** 16,21 **** --- 16,26 ---- The file PROBLEMS contains information on many common problems that occur in building, installing and running Emacs. + + Reports of bugs in Emacs should be sent to the mailing list + bug-gnu-emacs@prep.ai.mit.edu. See the "Bugs" node of the info tree + for more information on how to report bugs. See `etc/MAILINGLISTS' + for more information on mailing lists relating to GNU products. The `etc' subdirectory contains several other files, named in capital letters, which you should look at when installing GNU Emacs. Only in emacs-19.13: README-c++ Only in emacs-19.13: README-sol2 diff -cprP --exclude=*.elc emacs-19.13/config.guess emacs-19.14/config.guess *** emacs-19.13/config.guess Tue Jun 8 07:07:08 1993 --- emacs-19.14/config.guess Thu Jun 17 21:24:39 1993 *************** *** 17,23 **** # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ # ! # This script attempts to guess a cononical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it prints an error message on stderr, and # exits with 1. --- 17,23 ---- # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ # ! # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it prints an error message on stderr, and # exits with 1. *************** case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ *** 122,127 **** --- 122,129 ---- # "miniframe" echo m68010-convergent-sysv exit 0 ;; + M680[234]0:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; esac echo '(No uname command or uname output not recognized.)' 1>&2 diff -cprP --exclude=*.elc emacs-19.13/configure emacs-19.14/configure *** emacs-19.13/configure Tue Jun 8 03:22:15 1993 --- emacs-19.14/configure Thu Jun 17 18:04:17 1993 *************** *** 195,201 **** val=`eval echo '$'$index` fi x_includes="${val}" ! C_SWITCH_X_SITE="-I${x_includes}" ;; "x_libraries" ) ## If the value was omitted, get it from the next argument. --- 195,201 ---- val=`eval echo '$'$index` fi x_includes="${val}" ! C_SWITCH_X_SITE="-I\"${x_includes}\"" ;; "x_libraries" ) ## If the value was omitted, get it from the next argument. *************** *** 211,217 **** val=`eval echo '$'$index` fi x_libraries="${val}" ! LD_SWITCH_X_SITE="-L${x_libraries}" ;; ## Should this use the "development configuration"? --- 211,217 ---- val=`eval echo '$'$index` fi x_libraries="${val}" ! LD_SWITCH_X_SITE="-L\"${x_libraries}\"" ;; ## Should this use the "development configuration"? *************** *** 220,226 **** inst_paths='#disabled# ' ;; ! ## Has the user specifiec an installation prefix? "prefix" ) ## If the value was omitted, get it from the next argument. if [ "${valomitted}" = "yes" ]; then --- 220,226 ---- inst_paths='#disabled# ' ;; ! ## Has the user specified an installation prefix? "prefix" ) ## If the value was omitted, get it from the next argument. if [ "${valomitted}" = "yes" ]; then *************** *** 237,243 **** prefix="${val}" ;; ! ## Has the user specifiec an installation prefix? "exec_prefix" ) ## If the value was omitted, get it from the next argument. if [ "${valomitted}" = "yes" ]; then --- 237,243 ---- prefix="${val}" ;; ! ## Has the user specified an installation prefix? "exec_prefix" ) ## If the value was omitted, get it from the next argument. if [ "${valomitted}" = "yes" ]; then *************** if [ `pwd` != `(cd ${srcdir} && pwd)` ] *** 357,377 **** fi ### Make the necessary directories, if they don't exist. ! if [ ! -d ./src ]; then ! mkdir ./src ! fi ! if [ ! -d ./lib-src ]; then ! mkdir ./lib-src ! fi ! if [ ! -d ./cpp ]; then ! mkdir ./cpp ! fi ! if [ ! -d ./oldXMenu ]; then ! mkdir ./oldXMenu ! fi ! if [ ! -d ./etc ]; then ! mkdir ./etc ! fi #### Given the configuration name, set machfile and opsysfile to the #### names of the m/*.h and s/*.h files we should use. --- 357,367 ---- fi ### Make the necessary directories, if they don't exist. ! for dir in ./src ./lib-src ./cpp ./oldXMenu ./etc ; do ! if [ ! -d ${dir} ]; then ! mkdir ${dir} ! fi ! done #### Given the configuration name, set machfile and opsysfile to the #### names of the m/*.h and s/*.h files we should use. *************** case "${configuration}" in *** 485,490 **** --- 475,485 ---- machine=cydra5 opsys=usg5-3 ;; + ## Data General AViiON Machines + m88k-dg-dgux* ) + machine=aviion opsys=dgux + ;; + ## DECstations mips-dec-ultrix[0-3].* | mips-dec-ultrix4.0 | mips-dec-bsd4.2 ) machine=pmax opsys=bsd4-2 *************** case "${configuration}" in *** 500,505 **** --- 495,503 ---- m68*-motorola-sysv* ) machine=delta opsys=usg5-3 ;; + m88k-motorola-sysv4* ) + machine=delta88k opsys=usg5-4 + ;; m88k-motorola-sysv* | m88k-motorola-m88kbcs* ) machine=delta88k opsys=usg5-3 ;; *************** case "${configuration}" in *** 544,552 **** m68*-hp-bsd* ) machine=hp9000s300 opsys=bsd4-3 ;; ! ## HP/UX 8 doesn't run on these machines, so use HP/UX 7. m68*-hp-hpux* ) ! machine=hp9000s300 opsys=hpux ;; ## HP 9000 series 700 and 800, running HP/UX --- 542,554 ---- m68*-hp-bsd* ) machine=hp9000s300 opsys=bsd4-3 ;; ! ## HP/UX 7, 8 and 9 are supported on these machines. m68*-hp-hpux* ) ! case "`uname -r`" in ! *.08.* ) machine=hp9000s300 opsys=hpux8 ;; ! *.09.* ) machine=hp9000s300 opsys=hpux9 ;; ! *) machine=hp9000s300 opsys=hpux ;; ! esac ;; ## HP 9000 series 700 and 800, running HP/UX *************** case "${configuration}" in *** 625,646 **** i[34]86-intsys-sysv* ) 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 ;; ! *-isc2.2 ) opsys=isc2-2 ;; ! *-isc* ) opsys=isc3-0 ;; ! *-esix5* ) opsys=esix5r4 ;; ! *-esix* ) opsys=esix ;; ! *-xenix* ) opsys=xenix ;; ! *-linux* ) opsys=linux ;; ! *-sco3.2v4* ) opsys=sco4 ;; ! *-bsd386* ) opsys=bsd386 ;; ! *-386bsd ) opsys=386bsd ;; ! ## Otherwise, we'll fall through to the generic opsys code at the bottom. ! esac ;; ## Intel 860 --- 627,641 ---- i[34]86-intsys-sysv* ) machine=is386 opsys=usg5-2-2 ;; ! ! ## Prime EXL ! i386-prime-sysv* ) ! machine=i386 opsys=usg5-3 ! ;; ! ! ## Sequent Symmetry ! i386-sequent-bsd* ) ! machine=symmetry opsys=bsd4-3 ;; ## Intel 860 *************** case "${configuration}" in *** 732,742 **** machine=plexus opsys=usg5-2 ;; - ## Prime EXL - i386-prime-sysv* ) - machine=i386 opsys=usg5-3 - ;; - ## Pyramid machines ## I don't really have any idea what sort of processor the Pyramid has, ## so I'm assuming it is its own architecture. --- 727,732 ---- *************** case "${configuration}" in *** 751,760 **** ns32k-sequent-bsd4.3 ) machine=sequent opsys=bsd4-3 ;; - ## Sequent Symmetry - i386-sequent-bsd* ) - machine=symmetry opsys=bsd4-3 - ;; ## SONY machines m68*-sony-bsd4.2 ) --- 741,746 ---- *************** case "${configuration}" in *** 862,867 **** --- 848,871 ---- machine=wicat opsys=usg5-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 ;; + *-isc2.2 ) opsys=isc2-2 ;; + *-isc* ) opsys=isc3-0 ;; + *-esix5* ) opsys=esix5r4 ;; + *-esix* ) opsys=esix ;; + *-xenix* ) opsys=xenix ;; + *-linux* ) opsys=linux ;; + *-sco3.2v4* ) opsys=sco4 ;; + *-bsd386* ) opsys=bsd386 ;; + *-386bsd ) opsys=386bsd ;; + ## Otherwise, we'll fall through to the generic opsys code at the bottom. + esac + ;; + * ) unported=true ;; *************** opsysfile="s/${opsys}.h" *** 903,912 **** trap 'rm -f conftest* core; exit 1' 1 3 15 ! # Needed for some versions of `tr' so that character classes in `[]' work. ! if test "${LANG+set}" = "set" ; then ! LANG=C ! fi rm -f conftest* compile='${CC-cc} $CFLAGS $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1' --- 907,914 ---- trap 'rm -f conftest* core; exit 1' 1 3 15 ! # NLS nuisances. ! LANG=C; LC_ALL=C; export LANG; export LC_ALL; rm -f conftest* compile='${CC-cc} $CFLAGS $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1' *************** if test -z "$CPP"; then *** 1004,1009 **** --- 1006,1012 ---- CPP='${CC-cc} -E' cat > conftest.c < + Syntax Error EOF err=`eval "($CPP \$DEFS conftest.c >/dev/null) 2>&1"` if test -z "$err"; then *************** INSTALL=${INSTALL-cp} *** 1054,1059 **** --- 1057,1085 ---- INSTALL_PROGRAM=${INSTALL_PROGRAM-'$(INSTALL)'} INSTALL_DATA=${INSTALL_DATA-'$(INSTALL)'} + for p in 'bison -y' byacc + do + if test -z "$YACC"; then + # Extract the first word of `$p', so it can be a program name with args. + set dummy $p; word=$2 + echo checking for $word + IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/$word; then + YACC="$p" + break + fi + done + IFS="$saveifs" + fi + + test -n "$YACC" -a -n "$verbose" && echo " setting YACC to $YACC" + + test -n "$YACC" && break + done + test -n "$YACC" || YACC="yacc" + for hdr in sys/timeb.h sys/time.h *************** fi *** 1449,1455 **** rm -f conftest* fi ! for func in gettimeofday gethostname dup2 rename do trfunc=HAVE_`echo $func | tr '[a-z]' '[A-Z]'` echo checking for ${func} --- 1475,1481 ---- rm -f conftest* fi ! for func in gettimeofday gethostname dup2 rename closedir do trfunc=HAVE_`echo $func | tr '[a-z]' '[A-Z]'` echo checking for ${func} *************** fi *** 1624,1629 **** --- 1650,1681 ---- rm -f conftest* + echo checking for long file names + lost=false + # Test for long file names in all the places we know might matter: + # . the current directory, where building will happen + # /tmp where it might want to write temporary files + # /usr/tmp likewise + # $prefix where we will be installing things + # $exec_prefix likewise + for dir in . /tmp /usr/tmp $prefix $exec_prefix ; do + (echo 1 > $dir/conftest9012345) 2>/dev/null + (echo 2 > $dir/conftest9012346) 2>/dev/null + val=`cat $dir/conftest9012345 2>/dev/null` + test -f $dir/conftest9012345 && test "$val" = 1 || lost=true + rm -f $dir/conftest9012345 $dir/conftest9012346 + done + $lost || { + test -n "$verbose" && \ + echo ' defining' HAVE_LONG_FILE_NAMES + DEFS="$DEFS -DHAVE_LONG_FILE_NAMES=1" + SEDDEFS="${SEDDEFS}\${SEDdA}HAVE_LONG_FILE_NAMES\${SEDdB}HAVE_LONG_FILE_NAMES\${SEDdC}1\${SEDdD} + \${SEDuA}HAVE_LONG_FILE_NAMES\${SEDuB}HAVE_LONG_FILE_NAMES\${SEDuC}1\${SEDuD} + \${SEDeA}HAVE_LONG_FILE_NAMES\${SEDeB}HAVE_LONG_FILE_NAMES\${SEDeC}1\${SEDeD} + " + } + + *************** echo ' *** 1787,1794 **** ' > ${tempcname} # The value of CPP is a quoted variable reference, so we need to do this # to get its actual value... ! foo=`eval "echo $CPP"` ! eval `${foo} ${tempcname} \ | grep '@configure@' \ | sed -e 's/^@configure@ \([^=]*=\)\(.*\)$/\1"\2"/'` rm ${tempcname} --- 1839,1846 ---- ' > ${tempcname} # The value of CPP is a quoted variable reference, so we need to do this # to get its actual value... ! CPP=`eval "echo $CPP"` ! eval `${CPP} -Isrc ${tempcname} \ | grep '@configure@' \ | sed -e 's/^@configure@ \([^=]*=\)\(.*\)$/\1"\2"/'` rm ${tempcname} *************** fi *** 1812,1817 **** --- 1864,1946 ---- LISP_FLOAT_TYPE=yes + #### Add the X libraries to the list, and check for some functions found there. + CFLAGS_save="$CFLAGS" + CFLAGS="${CFLAGS} ${LD_SWITCH_X_SITE}" + + LIBS_save="${LIBS}" + LIBS="${LIBS} -lXbsd" + have_lib="" + echo checking for -lXbsd + cat > conftest.c < conftest.c < + int main() { exit(0); } + int t() { + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ + #if defined (__stub_${func}) || defined (__stub___${func}) + choke me + #else + /* Override any gcc2 internal prototype to avoid an error. */ + extern char ${func}(); ${func}(); + #endif + } + EOF + if eval $compile; then + { + test -n "$verbose" && \ + echo ' defining' ${trfunc} + DEFS="$DEFS -D${trfunc}=1" + SEDDEFS="${SEDDEFS}\${SEDdA}${trfunc}\${SEDdB}${trfunc}\${SEDdC}1\${SEDdD} + \${SEDuA}${trfunc}\${SEDuB}${trfunc}\${SEDuC}1\${SEDuD} + \${SEDeA}${trfunc}\${SEDeB}${trfunc}\${SEDeC}1\${SEDeD} + " + } + + fi + rm -f conftest* + done + + + CFLAGS="$CFLAGS_save" + LIBS="$LIBS_save" + + #### Find out which version of Emacs this is. version=`grep 'defconst[ ]*emacs-version' ${srcdir}/lisp/version.el \ | sed -e 's/^.*"\([0-9][0-9]*\.[0-9][0-9]*\)\..*$/\1/'` *************** if test -n "$prefix"; then *** 1998,2007 **** fi if test -n "$exec_prefix"; then prsub="$prsub ! s%^exec_prefix\\([ ]*\\)=\\([ ]*\\).*$%\ ! exec_prefix\\1=\\2$exec_prefix%" fi ! DEFS="`echo \"$DEFS\" | sed 's%[&\\\]%\\\&%g'`" trap 'rm -f config.status; exit 1' 1 3 15 echo creating config.status --- 2127,2140 ---- fi if test -n "$exec_prefix"; then prsub="$prsub ! s%^exec_prefix\\([ ]*\\)=\\([ ]*\\).*$%exec_prefix\\1=\\2$exec_prefix%" fi ! cat >conftest.def < ${tempcname} # The value of CPP is a quoted variable reference, so we need to do this # to get its actual value... ! foo=`eval "echo $CPP"` ! eval `${foo} ${tempcname} \ | grep '@configure@' \ | sed -e 's/^@configure@ \([^=]*=\)\(.*\)$/\1"\2"/'` rm ${tempcname} --- 1106,1113 ---- ' > ${tempcname} # The value of CPP is a quoted variable reference, so we need to do this # to get its actual value... ! CPP=`eval "echo $CPP"` ! eval `${CPP} -Isrc ${tempcname} \ | grep '@configure@' \ | sed -e 's/^@configure@ \([^=]*=\)\(.*\)$/\1"\2"/'` rm ${tempcname} *************** if [ x"${REL_ALLOC}" = x ]; then *** 1123,1128 **** --- 1129,1151 ---- fi LISP_FLOAT_TYPE=yes + + + #### Add the X libraries to the list, and check for some functions found there. + CFLAGS_save="$CFLAGS" + CFLAGS="${CFLAGS} ${LD_SWITCH_X_SITE}" + ] + AC_HAVE_LIBRARY(-lXbsd) + [ + LIBS_save="$LIBS" + if [ "${HAVE_X11}" = "yes" ] ; then + LIBS="-lX11 ${LIBS}" + fi + ] + AC_HAVE_FUNCS(XrmSetDatabase random) + [ + CFLAGS="$CFLAGS_save" + LIBS="$LIBS_save" #### Find out which version of Emacs this is. diff -cprP --exclude=*.elc emacs-19.13/etc/AIX.DUMP emacs-19.14/etc/AIX.DUMP *** emacs-19.13/etc/AIX.DUMP Tue Jun 8 07:23:27 1993 --- emacs-19.14/etc/AIX.DUMP Wed Jun 9 06:55:04 1993 *************** *** 57,63 **** 2) Pure data is defined as a shared memory segment and attached automatically as read-only data during initialization. This ! allows the pure data to be a shared resource amoung all Emacs processes. The shared memory segment size is PURESIZE bytes. If the shared memory segment is unavailable or invalid, a new shared memory segment is created and the impure data save file --- 57,63 ---- 2) Pure data is defined as a shared memory segment and attached automatically as read-only data during initialization. This ! allows the pure data to be a shared resource among all Emacs processes. The shared memory segment size is PURESIZE bytes. If the shared memory segment is unavailable or invalid, a new shared memory segment is created and the impure data save file *************** *** 146,152 **** Sections two and three contain the preloaded data which is ! resotred at locations _data and initial sbrk(0) respectively. The reason two separate sections are needed is that process initialization allocates data (via malloc) prior to main() --- 146,152 ---- Sections two and three contain the preloaded data which is ! restored at locations _data and initial sbrk(0) respectively. The reason two separate sections are needed is that process initialization allocates data (via malloc) prior to main() diff -cprP --exclude=*.elc emacs-19.13/etc/APPLE emacs-19.14/etc/APPLE *** emacs-19.13/etc/APPLE Tue Jun 8 07:23:28 1993 --- emacs-19.14/etc/APPLE Wed Jun 16 10:05:21 1993 *************** *** 55,57 **** --- 55,70 ---- Newspapers report that Macintosh clones will be available soon. If you must buy a Macintosh-like machine, buy a clone. Don't feed the lawyers! + + If you would like further information about the boycott, or want to + help please ask: + + League for Programming Freedom + 1 Kendall Square #143 + P.O. Box 9171 + Cambridge, MA 02139 + E-Mail: lpf@uunet.uu.net + Phone: 617-243-4091 + Dues: $42.00/yr for programmers + $10.50/yr for students + $21.00/yr for others. diff -cprP --exclude=*.elc emacs-19.13/etc/COOKIES emacs-19.14/etc/COOKIES *** emacs-19.13/etc/COOKIES Tue Jun 8 07:23:29 1993 --- emacs-19.14/etc/COOKIES Wed Jun 9 06:55:13 1993 *************** *** 85,91 **** (The nuts were listed as optional and I added the coconut myself, but I really love them there! You could also add things like m&m's, or ! raisons (I don't care for raisons in cookies, but you might). I've always wanted to try banana chips.) Mix well. Drop by teaspoonfuls on greased cookie sheet (I use pam). --- 85,91 ---- (The nuts were listed as optional and I added the coconut myself, but I really love them there! You could also add things like m&m's, or ! raisins (I don't care for raisins in cookies, but you might). I've always wanted to try banana chips.) Mix well. Drop by teaspoonfuls on greased cookie sheet (I use pam). *************** a cookie recipe was a bit odd for a book *** 97,103 **** healthiest a cookie is ever likely to get. They are also very easy to make (no blending, sifting, rolling, etc.) ! and extrememly delicious. I get rave reviews and recipe requests whenever I make them. - rene --- 97,103 ---- healthiest a cookie is ever likely to get. They are also very easy to make (no blending, sifting, rolling, etc.) ! and extremely delicious. I get rave reviews and recipe requests whenever I make them. - rene diff -cprP --exclude=*.elc emacs-19.13/etc/ChangeLog emacs-19.14/etc/ChangeLog *** emacs-19.13/etc/ChangeLog Tue Jun 8 07:23:29 1993 --- emacs-19.14/etc/ChangeLog Thu Jun 17 19:42:03 1993 *************** *** 1,3 **** --- 1,18 ---- + Thu Jun 17 19:29:56 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Version 19.14 released. + + Wed Jun 16 11:55:03 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + Bring mumbleclean targets into conformance with GNU coding standards. + * Makefile (distclean): Don't remove backup and autosave files. + These are easy to get rid of in other ways, and a pain to lose. + (mostlyclean, realclean): New targets. + + Tue Jun 8 08:27:09 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Version 19.13 released. + Sun May 30 00:15:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) * Version 19.10 released. diff -cprP --exclude=*.elc emacs-19.13/etc/DEBUG emacs-19.14/etc/DEBUG *** emacs-19.13/etc/DEBUG Tue Jun 8 07:23:30 1993 --- emacs-19.14/etc/DEBUG Wed Jun 9 06:55:14 1993 *************** *** 36,42 **** It is useful, when debugging, to have a guaranteed way to return to the debugger at any time. If you are using ! interrupt-drived input, which is the default, then Emacs is using RAW mode and the only way you can do it is to store the code for some character into the variable stop_character: --- 36,42 ---- It is useful, when debugging, to have a guaranteed way to return to the debugger at any time. If you are using ! interrupt-driven input, which is the default, then Emacs is using RAW mode and the only way you can do it is to store the code for some character into the variable stop_character: *************** terminal, and the termscript file contai *** 107,113 **** the terminal. The use of the directory `~/' prevents interference with any other user. ! If you have unreproduceable display problems, put those two expressions in your ~/.emacs file. When the problem happens, exit the Emacs that you were running, kill it, and rename the two files. Then you can start another Emacs without clobbering those files, and use it to examine them. --- 107,113 ---- the terminal. The use of the directory `~/' prevents interference with any other user. ! If you have irreproducible display problems, put those two expressions in your ~/.emacs file. When the problem happens, exit the Emacs that you were running, kill it, and rename the two files. Then you can start another Emacs without clobbering those files, and use it to examine them. diff -cprP --exclude=*.elc emacs-19.13/etc/FAQ emacs-19.14/etc/FAQ *** emacs-19.13/etc/FAQ Tue Jun 8 07:23:33 1993 --- emacs-19.14/etc/FAQ Wed Jun 9 07:50:34 1993 *************** *** 434,440 **** The real legal meaning of the GNU General Public Licence (copyleft) is however it is interpreted by a judge. There has never been a copyright ! infringment case involving the GPL to set any precedents. Please take any discussion regarding this issue to the newsgroup gnu.misc.discuss, which was created to hold the extensive flame wars on the subject. --- 434,440 ---- The real legal meaning of the GNU General Public Licence (copyleft) is however it is interpreted by a judge. There has never been a copyright ! infringement case involving the GPL to set any precedents. Please take any discussion regarding this issue to the newsgroup gnu.misc.discuss, which was created to hold the extensive flame wars on the subject. *************** *** 525,531 **** If you are receiving a GNU mailing list named `XXX', you might be able to unsubscribe to it by sending a request to the address `XXX-request@prep.ai.mit.edu'. However, this will not work if you are ! not listed on the main mailing list, but instead recieve the mail from a distribution point. In that case, you will have to track down at which distribution point you are listed. Inspecting the `Received:' headers on the mail messages may help, along with liberal use of the `EXPN' or --- 525,531 ---- If you are receiving a GNU mailing list named `XXX', you might be able to unsubscribe to it by sending a request to the address `XXX-request@prep.ai.mit.edu'. However, this will not work if you are ! not listed on the main mailing list, but instead receive the mail from a distribution point. In that case, you will have to track down at which distribution point you are listed. Inspecting the `Received:' headers on the mail messages may help, along with liberal use of the `EXPN' or *************** Bugs/Problems *** 2087,2093 **** Cliff Stoll in his book `The Cuckoo's Egg' describes this in chapter 4. The site at LBL had installed the `etc/movemail' program setuid root. Since `movemail' had not been designed for this situation, a security ! hole was created and users could get root priveleges. `movemail' has since been changed so that even if it is installed setuid root this security hole will not be a result. --- 2087,2093 ---- Cliff Stoll in his book `The Cuckoo's Egg' describes this in chapter 4. The site at LBL had installed the `etc/movemail' program setuid root. Since `movemail' had not been designed for this situation, a security ! hole was created and users could get root privileges. `movemail' has since been changed so that even if it is installed setuid root this security hole will not be a result. *************** Bugs/Problems *** 2132,2139 **** Emacs accepts synthetic X events generated by the SendEvent request as though they were regular events. As a result, if you are using the trivial host-based authentication, other users who can open X ! connections to your X workstatation can make your Emacs process do ! anything, including run other processes with your priveleges. The only fix for this is to prevent other users from being able to open X connections. The standard way to prevent this is to use a real --- 2132,2139 ---- Emacs accepts synthetic X events generated by the SendEvent request as though they were regular events. As a result, if you are using the trivial host-based authentication, other users who can open X ! connections to your X workstation can make your Emacs process do ! anything, including run other processes with your privileges. The only fix for this is to prevent other users from being able to open X connections. The standard way to prevent this is to use a real *************** Finding/Getting Emacs and Related Packag *** 2328,2334 **** ;; LCD Archive Entry: ;; tex-complete|Sebastian Kremer|sk@thp.Uni-Koeln.DE ;; |Minibuffer name completion for editing [La]TeX. ! ;; |91-03-26|$Revision: 1.4 $|~/packages/tex-complete.el.Z ! Dave Brennan has software which automatically looks for data in this format. The format is fairly flexible. The entry ends when a line is --- 2328,2334 ---- ;; LCD Archive Entry: ;; tex-complete|Sebastian Kremer|sk@thp.Uni-Koeln.DE ;; |Minibuffer name completion for editing [La]TeX. ! ;; |91-03-26|$Revision: 1.5 $|~/packages/tex-complete.el.Z ! Dave Brennan has software which automatically looks for data in this format. The format is fairly flexible. The entry ends when a line is *************** Changing Key Bindings and Handling Key B *** 3198,3204 **** X keysyms Up, Left, Right, and Down.) Break (the `Alternate' key is given this keysym) ! These keys work like Sun function keys. When Emacs recieves the keysym, it will internally use character sequences that look like "ESC [ ### z", where ### is replaced by a number. The character sequences are identical to those generated by Sun's keyboard under SunView. Any --- 3198,3204 ---- X keysyms Up, Left, Right, and Down.) Break (the `Alternate' key is given this keysym) ! These keys work like Sun function keys. When Emacs receives the keysym, it will internally use character sequences that look like "ESC [ ### z", where ### is replaced by a number. The character sequences are identical to those generated by Sun's keyboard under SunView. Any *************** Using Emacs with Alternate Character Set *** 3881,3887 **** With these patches, Emacs becomes fully 8-bit operational. There is support for displaying 8-bit characters, as well as for entering such ! characters from the keyboard. In addition, upcase/lowcase tranlatsion is supported, accented characters are recognized as "letters" (important when doing 'forward-word', for example), and text with 8-bit characters can be sorted correctly. --- 3881,3887 ---- With these patches, Emacs becomes fully 8-bit operational. There is support for displaying 8-bit characters, as well as for entering such ! characters from the keyboard. In addition, upcase/lowcase translation is supported, accented characters are recognized as "letters" (important when doing 'forward-word', for example), and text with 8-bit characters can be sorted correctly. diff -cprP --exclude=*.elc emacs-19.13/etc/FTP emacs-19.14/etc/FTP *** emacs-19.13/etc/FTP Mon Jun 7 19:00:08 1993 --- emacs-19.14/etc/FTP Wed Jun 16 13:39:31 1993 *************** *** 142,157 **** ftp.cs.widener.edu, itstd.sri.com, a.cs.uiuc.edu, uxc.cso.uiuc.edu, 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, ! Internet Address 131.155.70.100), nic.funet.fi:/pub/gnu (Finland ! 128.214.6.100, ran by gnu-adm), ftp.denet.dk (Denmark), ugle.unit.no ! (Norway 129.241.1.97), ftp.eunet.ch or nic.switch.ch:/mirror/gnu (Switzerland), irisa.irisa.fr:/pub/gnu or grasp1.univ-lyon1.fr:pub/gnu (France), archive.eu.net (Europe, 192.16.202.1), cair.kaist.ac.kr:/pub/gnu (Korea 143.248.11.170), --- 142,159 ---- ftp.cs.widener.edu, itstd.sri.com, a.cs.uiuc.edu, uxc.cso.uiuc.edu, 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: ftp.cs.ubc.ca:/mirror2/gnu (Canada, daily full ! mirror, ran by ftp-admin@cs.ubc.ca), archie.oz.au:/gnu (Australia ! (archie.oz or archie.oz.au for ACSnet)), ! ftp.technion.ac.il:/pub/unsupported/gnu (Israel, daily full mirror, ! ran by ftp-admin), ftp.sun.ac.za:/pub/gnu (South Africa), ! ftp.informatik.tu-muenchen.de, ftp.informatik.rwth-aachen.de or ! germany.eu.net (mirror ran by archive-admin@germany.eu.net) (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, Internet ! Address 131.155.70.100), nic.funet.fi:/pub/gnu (Finland 128.214.6.100, ! ran by gnu-adm), ftp.denet.dk (Denmark), ugle.unit.no (Norway ! 129.241.1.97), ftp.eunet.ch or nic.switch.ch:/mirror/gnu (Switzerland), irisa.irisa.fr:/pub/gnu or grasp1.univ-lyon1.fr:pub/gnu (France), archive.eu.net (Europe, 192.16.202.1), cair.kaist.ac.kr:/pub/gnu (Korea 143.248.11.170), diff -cprP --exclude=*.elc emacs-19.13/etc/GNU emacs-19.14/etc/GNU *** emacs-19.13/etc/GNU Tue Jun 8 07:23:34 1993 --- emacs-19.14/etc/GNU Wed Jun 9 06:55:34 1993 *************** *** 209,215 **** With Unix, the price of sources puts this out of consideration for most businesses. With GNU this will be easy. It is still possible for there to be no available competent person, but this problem cannot be blamed on ! distibution arrangements. GNU does not eliminate all the world's problems, only some of them. Meanwhile, the users who know nothing about computers need handholding: --- 209,215 ---- With Unix, the price of sources puts this out of consideration for most businesses. With GNU this will be easy. It is still possible for there to be no available competent person, but this problem cannot be blamed on ! distribution arrangements. GNU does not eliminate all the world's problems, only some of them. Meanwhile, the users who know nothing about computers need handholding: *************** to let the free market decide this? *** 247,253 **** GNU will remove operating system software from the realm of competition. You will not be able to get an edge in this area, but neither will your competitors be able to get an edge over you. You and they will compete in ! other areas, while benefitting mutually in this one. If your business is selling an operating system, you will not like GNU, but that's tough on you. If your business is something else, GNU can save you from being pushed into the expensive business of selling operating systems. --- 247,253 ---- GNU will remove operating system software from the realm of competition. You will not be able to get an edge in this area, but neither will your competitors be able to get an edge over you. You and they will compete in ! other areas, while benefiting mutually in this one. If your business is selling an operating system, you will not like GNU, but that's tough on you. If your business is something else, GNU can save you from being pushed into the expensive business of selling operating systems. diff -cprP --exclude=*.elc emacs-19.13/etc/JOKES emacs-19.14/etc/JOKES *** emacs-19.13/etc/JOKES Tue Jun 8 07:23:35 1993 --- emacs-19.14/etc/JOKES Wed Jun 9 06:55:35 1993 *************** *** 312,318 **** Communist Subversion ! Extensibilty and Modifiability Aggravate Confirmed --- 312,318 ---- Communist Subversion ! Extensibility and Modifiability Aggravate Confirmed *************** Are *** 354,360 **** Considerably Smaller ! Embarrasingly Mundane Advertising Cuts --- 354,360 ---- Considerably Smaller ! Embarrassingly Mundane Advertising Cuts diff -cprP --exclude=*.elc emacs-19.13/etc/LPF emacs-19.14/etc/LPF *** emacs-19.13/etc/LPF Tue Jun 8 07:23:38 1993 --- emacs-19.14/etc/LPF Wed Jun 9 06:55:36 1993 *************** *** 65,71 **** Cambridge, Massachusetts 02139 (Outside the US, please send a check in US dollars on a bank ! having a US correspondant bank, to save us check cashing fees.) Your name: --- 65,71 ---- Cambridge, Massachusetts 02139 (Outside the US, please send a check in US dollars on a bank ! having a US correspondent bank, to save us check cashing fees.) Your name: diff -cprP --exclude=*.elc emacs-19.13/etc/MACHINES emacs-19.14/etc/MACHINES *** emacs-19.13/etc/MACHINES Thu Jun 3 13:23:03 1993 --- emacs-19.14/etc/MACHINES Wed Jun 16 18:05:52 1993 *************** *** 198,205 **** Motorola Delta boxes running System V/68 release 3. (tested on sys1147 with SVR3V5). ! Motorola Delta 187 (m88k-motorola-sysv or m88k-motorola-m88kbcs) Machine support added in version 19. HAVE_X_MENU does not work due to lack of insque. --- 198,208 ---- Motorola Delta boxes running System V/68 release 3. (tested on sys1147 with SVR3V5). ! Motorola Delta 187 (m88k-motorola-sysv, ! m88k-motorola-sysvr4, or ! m88k-motorola-m88kbcs) + As of version 19.13, Emacs is reported to run under SYSVr3 and SYSVr4. Machine support added in version 19. HAVE_X_MENU does not work due to lack of insque. *************** Hewlett-Packard 9000 series 200 or 300 ( *** 294,300 **** a s200 (upgraded) or s310. Define the symbol HPUX_NET if you have the optional network features ! that include the `netunam' system call. This is refered to as Network Services (NS/9000) in HP literature. HP 9000 series 500: not supported. --- 297,303 ---- a s200 (upgraded) or s310. Define the symbol HPUX_NET if you have the optional network features ! that include the `netunam' system call. This is referred to as Network Services (NS/9000) in HP literature. HP 9000 series 500: not supported. *************** HP 9000 series 700 or 800 (Spectrum) (hp *** 310,317 **** 840. Use hppa1.1 for the 700 series and hppa1.0 for the 800 series machines. (Emacs may not actually care which one you use.) ! It hasn't been tested on the 700's at all. If you try it out on ! this system, please send us comments and patches. If you are running HP-UX release 8.0 or later, you need the optional "C/ANSI C" software in order to build Emacs (older releases of HP-UX --- 313,320 ---- 840. Use hppa1.1 for the 700 series and hppa1.0 for the 800 series machines. (Emacs may not actually care which one you use.) ! As of version 19.13, Emacs is reported to build (using GCC) and run ! on HP 9000/700 series machines running HP/UX versions 8.07 and 9.01. If you are running HP-UX release 8.0 or later, you need the optional "C/ANSI C" software in order to build Emacs (older releases of HP-UX *************** Intel 386 (i386-*-isc, i386-*-esix, *** 396,404 **** you specify does not matter, and you can use any name you like (but it should not contain any dashes). ! 18.58 should support a wide variety of operating systems. ! Make sure to use i386-*-isc2.2 for Interactive 386/ix version ! 2.2 or later. Use i386-*-esix for Esix; Emacs runs as of version 19.6. Use i386-*-linux for Linux; Emacs runs as of version 19.7. Use i386-intsys-sysv for Integrated Solutions 386 machines. --- 399,407 ---- you specify does not matter, and you can use any name you like (but it should not contain any dashes). ! When using the ISC configurations, be sure to specify the isc ! version number - for example, if you're running ISC 3.0, use ! i386-unknown-isc3.0 as your configuration name. Use i386-*-esix for Esix; Emacs runs as of version 19.6. Use i386-*-linux for Linux; Emacs runs as of version 19.7. Use i386-intsys-sysv for Integrated Solutions 386 machines. *************** Stride (m68k-stride-sysv) *** 656,662 **** It may be possible to run on their V.1 system but changes in the s- file would be needed. ! Sun 3, Sun 4 (sparc), Sun 386 (m68k-sun-sunos, sparc-sun-sunos, i386-sun-sunos) Emacs runs on Sparcs and Sun 3's, as of version 19.7. --- 659,666 ---- It may be possible to run on their V.1 system but changes in the s- file would be needed. ! Sun 3, Sun 4 (sparc), Sun 386 (m68k-sun-sunos, sparc-sun-sunos, i386-sun-sunos, ! sparc-sun-solaris2.*) Emacs runs on Sparcs and Sun 3's, as of version 19.7. diff -cprP --exclude=*.elc emacs-19.13/etc/MAILINGLISTS emacs-19.14/etc/MAILINGLISTS *** emacs-19.13/etc/MAILINGLISTS Tue Jun 8 07:23:39 1993 --- emacs-19.14/etc/MAILINGLISTS Wed Jun 9 22:33:40 1993 *************** *** 1,4 **** ! GNU Project Electronic Mailing Lists. Last Updated 31 Mar 93 Please report improvements to: gnu@prep.ai.mit.edu --- 1,4 ---- ! GNU Project Electronic Mailing Lists. Last Updated 9 Jun 93 Please report improvements to: gnu@prep.ai.mit.edu *************** Subscribers to bug-vm get all info-vm me *** 744,750 **** ** gnUSENET newsgroup: gnu.emacs.vm.info ** Send contributions to: info-vm@uunet.uu.net ! This list dicusses the View Mail mode for GNU Emacs, an alternative to rmail mode. * supercite-request@warsaw.nlm.nih.gov to subscribe to supercite --- 744,750 ---- ** gnUSENET newsgroup: gnu.emacs.vm.info ** Send contributions to: info-vm@uunet.uu.net ! This list discusses the View Mail mode for GNU Emacs, an alternative to rmail mode. * supercite-request@warsaw.nlm.nih.gov to subscribe to supercite diff -cprP --exclude=*.elc emacs-19.13/etc/Makefile emacs-19.14/etc/Makefile *** emacs-19.13/etc/Makefile Tue Jun 8 07:23:42 1993 --- emacs-19.14/etc/Makefile Wed Jun 16 11:45:33 1993 *************** *** 6,16 **** all: ! distclean: ! -rm -f *~ \#* DOC* core ! ! clean: -rm -f core SOURCES = [0-9A-QS-Z]* README *.[ch16] emacs.* etags.* ledit.l ms-* \ news.texi rc2log refcard.tex spook-lines termcap.* ulimit.hack \ --- 6,16 ---- all: ! mostlyclean clean: -rm -f core + + distclean realclean: + -rm -f DOC* core SOURCES = [0-9A-QS-Z]* README *.[ch16] emacs.* etags.* ledit.l ms-* \ news.texi rc2log refcard.tex spook-lines termcap.* ulimit.hack \ diff -cprP --exclude=*.elc emacs-19.13/etc/NEWS emacs-19.14/etc/NEWS *** emacs-19.13/etc/NEWS Tue Jun 8 01:35:08 1993 --- emacs-19.14/etc/NEWS Thu Jun 17 00:22:04 1993 *************** *** 6,11 **** --- 6,49 ---- For older news, see the file ONEWS. For Lisp changes in Emacs 19, see the file LNEWS. + Changes in version 19.14. + + * If you call `get-buffer-window' passing t as its second argument, it + will only search for windows on visible frames. Previously, passing t + as the secord argument caused `get-buffer-window' to search all + frames, visible or not. + + * If you call `other-buffer' with a nil or omitted second argument, it + will ignore buffers displayed windows on any visible frame, not just + the selected frame. + + * You can specify a window or a frame for C-x # to use when + selects a server buffer. Set the variable server-window + to the window or frame that you want. + + * The command M-( now inserts spaces outside the open-parentheses in + some cases--depending on the syntax classes of the surrounding + characters. If the variable `parens-dont-require-spaces' is non-nil, + it inhibits insertion of these spaces. + + * The GUD package now supports the debugger known as xdb on HP/UX + systems. Use M-x xdb. The variable `gud-xdb-directories' lets you + specify a list of directories to search for source code. + + * If you are using the mailabbrev package, you should note that its + function for defining an alias is now called `define-mail-abbrev'. + This package no longer contains a definition for `define-mail-alias'; + that name is used only in mailaliases. + + * Inserted characters now inherit the properties of the text before + them, by default, rather than those of the following text. + + * The function `insert-file-contents' now takes optional arguments BEG + and END that specify which part of the file to insert. BEG defaults to + 0 (the beginning of the file), and END defaults to the end of the file. + + If you specify BEG or END, then the argument VISIT must be nil. + Changes in version 19.13. * Magic file names can now handle the `load' operation. *************** These bindings have been removed: *** 571,577 **** C-c C-r (was comint-show-output; now gud-cont) Since GUD mode uses comint, it uses comint's input history commands, ! superceding C-c C-y (copy-last-shell-input): M-p comint-next-input M-n comint-previous-input M-r comint-previous-similar-input --- 609,615 ---- C-c C-r (was comint-show-output; now gud-cont) Since GUD mode uses comint, it uses comint's input history commands, ! superseding C-c C-y (copy-last-shell-input): M-p comint-next-input M-n comint-previous-input M-r comint-previous-similar-input *************** operation needed to change the file's wr *** 845,851 **** perform initial checkin on an unregistered file. By default, VC uses RCS if RCS is installed on your machine; ! otherwise, SCCS. If you want to make the choice explicity, you can do it by setting `vc-default-back-end' to the symbol `RCS' or the symbol `SCCS'. --- 883,889 ---- perform initial checkin on an unregistered file. By default, VC uses RCS if RCS is installed on your machine; ! otherwise, SCCS. If you want to make the choice explicitly, you can do it by setting `vc-default-back-end' to the symbol `RCS' or the symbol `SCCS'. *************** directions to Emerge: "fast" mode and "e *** 930,936 **** In Fast mode, Emerge commands are single characters, and ordinary Emacs commands are disabled. This makes Emerge operations fast, but ! prevents you from doing more than selecing the A or the B version of differences. In Edit mode, all emerge commands use the C-c prefix, and the usual Emacs commands are available. This allows editing the merge buffer, but slows down Emerge operations. Edit and fast modes --- 968,974 ---- In Fast mode, Emerge commands are single characters, and ordinary Emacs commands are disabled. This makes Emerge operations fast, but ! prevents you from doing more than selecting the A or the B version of differences. In Edit mode, all emerge commands use the C-c prefix, and the usual Emacs commands are available. This allows editing the merge buffer, but slows down Emerge operations. Edit and fast modes *************** subdirectory. A prefix argument serves *** 1345,1351 **** *** `M-$' hides all subdirectories, leaving only their header lines. Or, if at least one subdirectory is currently hidden, it makes everything visible again. You can use this command to get an overview ! in very deep directory trees or to move quickly to subdirectoriess far away. ** Editing the Dired Buffer --- 1383,1389 ---- *** `M-$' hides all subdirectories, leaving only their header lines. Or, if at least one subdirectory is currently hidden, it makes everything visible again. You can use this command to get an overview ! in very deep directory trees or to move quickly to subdirectories far away. ** Editing the Dired Buffer *************** ordinary Dired commands are available. *** 1385,1391 **** If you want to test the contents of files, rather than their names, use `find-grep-dired'. This command takes two minibuffer arguments, DIRECTORY and REGEXP; it selects all the files in ! DIRECTORY or its subdiretories that contain a match for REGEXP. It works by running `find' and `grep'. The most general command in this series is `find-dired', which lets --- 1423,1429 ---- If you want to test the contents of files, rather than their names, use `find-grep-dired'. This command takes two minibuffer arguments, DIRECTORY and REGEXP; it selects all the files in ! DIRECTORY or its subdirectories that contain a match for REGEXP. It works by running `find' and `grep'. The most general command in this series is `find-dired', which lets diff -cprP --exclude=*.elc emacs-19.13/etc/ORDERS emacs-19.14/etc/ORDERS *** emacs-19.13/etc/ORDERS Mon Jun 7 18:54:09 1993 --- emacs-19.14/etc/ORDERS Mon Jun 14 12:44:46 1993 *************** *** 172,178 **** * GNU time * GNU tput (a portable way to allow shell scripts to use special terminal capabilities) ! * Taylor UUCP (the GNU implemetation of the UUCP communication suite) * wdiff (report diffs on a word by word basis) * GNU fileutils (chgrp, chmod, chown, cp, dd, df, du, install, ln, ls, mkdir, mkfifo, mknod, mktime, mv, mvdir, rm, rmdir, touch & vdir) --- 172,178 ---- * GNU time * GNU tput (a portable way to allow shell scripts to use special terminal capabilities) ! * Taylor UUCP (the GNU implementation of the UUCP communication suite) * wdiff (report diffs on a word by word basis) * GNU fileutils (chgrp, chmod, chown, cp, dd, df, du, install, ln, ls, mkdir, mkfifo, mknod, mktime, mv, mvdir, rm, rmdir, touch & vdir) *************** GNU Experimental Tape *** 195,200 **** --- 195,201 ---- The tape includes source code for: * GCC 2 (the GNU C/C++/Objective-C Compiler with many new features) * The Manual `Using and Porting GNU CC 2', as Texinfo source + * Compiled binaries of GCC for Sun Solaris systems * GNU binary file utilities 2 (ar, gprof, ld, nm, ranlib, size, & strip - completely rewritten to use the BFD library) * BFD (Binary File Descriptor Library) diff -cprP --exclude=*.elc emacs-19.13/etc/SERVICE emacs-19.14/etc/SERVICE *** emacs-19.13/etc/SERVICE Tue Jun 8 07:23:51 1993 --- emacs-19.14/etc/SERVICE Fri Jun 11 21:06:31 1993 *************** *** 292,328 **** Updated: 4/29/91  - Equivalent Software HB - Repslagaregatan 34 or - 582 22 Linkoping - SWEDEN - +46 (0)13 13 54 21 - - Equivalent Software HB is the worlds second(?) company dedicated to - supporting free UNIX software. The owners have more than 5 years of - UNIX experience, both as system adminstrators and programmers. We - also have extensive experience in maintaining the GNU programs, both - administrating it and fixing bugs. - - Services offered: - - - Installation and custumizing GNU and other free software. We will - make free software as easy to install and use as shrink wrapped - programs. - - Customization and porting. - - Subscriptions to new versions which we will send monthly or with - any other interval. - - Finding, Recommending and Investigation of free software in any - area of the customers choise. - - Regular consulting. We prefer smaller jobs, but are willing to - consider larger ones. We can work through the Internet, but prefer - jobs in Sweden. - - Rates: For software items, request our price list. - For consulting, 450 SEK/hour. - - Entered: 2/14/92 -  Free Software Association of Germany Michaela Merz Heimatring 19 --- 292,297 ---- *************** Qualifications: BS Math/CS 1985: Carnegi *** 496,502 **** customization in universities and industry. Extensive troubleshooting and user support experience. ! Updated:10/10/91  Scott J. Kramer P.O. Box 3392 --- 465,471 ---- customization in universities and industry. Extensive troubleshooting and user support experience. ! Updated: 10/10/91  Scott J. Kramer P.O. Box 3392 *************** Experience: Installed and supported thes *** 633,639 **** Degrees: Master of Engineering in CS. Currently working towards a PhD in Distributed computing and programming languages. ! Updated: 1 Dec 1991  Mojave Systems 1254 Harvard Avenue --- 602,608 ---- Degrees: Master of Engineering in CS. Currently working towards a PhD in Distributed computing and programming languages. ! Updated: 1 Dec 91  Mojave Systems 1254 Harvard Avenue *************** Unix Free software: X11, GNU, TeX, etc. *** 677,683 **** Rates: $150/hour ! Updated: Dec 1991  Adam J. Richter ...!ucbvax!soda!adam 409 Evelyn Avenue, Apartment 312 (510) 528-3209 --- 646,652 ---- Rates: $150/hour ! Updated: Dec 91  Adam J. Richter ...!ucbvax!soda!adam 409 Evelyn Avenue, Apartment 312 (510) 528-3209 *************** Experience: 11 years of Unix work. Heavy *** 719,725 **** I have supported VAxes, HP's with HPUX, HP's with 4.3 BSD, Sequent's, Next's and a few other misc. machines. ! Updated: 28 Oct 1991  Steve Simmons Inland Sea --- 688,725 ---- I have supported VAxes, HP's with HPUX, HP's with 4.3 BSD, Sequent's, Next's and a few other misc. machines. ! Updated: 28 Oct 91 !  ! Signum Support AB ! Box 2044 _ ...!seunet!signum!info ! S-580 02 Linkoping, Sweden ! +46 13 21 46 00 voice ! +46 13 21 47 00 fax ! ! Signum Support AB is a company dedicated to supporting, developing ! and distributing free software for, including but not limited to, ! UNIX systems. The people behind Signum Support AB have many years ! of general UNIX experience, both as system administrators and as ! programmers, and also extensive experience in maintaining the GNU ! programs, both administrating it and finding and fixing bugs. ! ! Services offered: ! ! - Installation and customizing GNU and other free software. We will ! make free software as easy to install and use as shrink wrapped ! programs. ! - Warranty protection. ! - Customization and porting. ! - Subscriptions to new versions which we will send monthly or with ! any other interval. ! - Finding, Recommending and Investigation of free software in any ! area of the customers choise. ! - Regular consulting. ! ! Rates: For software items, request our price list. ! For consulting, 400-800 SEK/hour. ! ! Entered: 11 Jun 93  Steve Simmons Inland Sea diff -cprP --exclude=*.elc emacs-19.13/etc/SUN-SUPPORT emacs-19.14/etc/SUN-SUPPORT *** emacs-19.13/etc/SUN-SUPPORT Tue Jun 8 07:23:53 1993 --- emacs-19.14/etc/SUN-SUPPORT Wed Jun 9 06:55:44 1993 *************** *** 73,79 **** be called the "Right-Margin" region. The scroll bar region is basically the rightmost five columns (see documentation on variable scrollbar-width). Mouse hits in this region can have special bindings, currently those binding ! effect scrolling of the window, and so are refered to as the "Scroll-bar" region. For information on what mouse bindings are in effect, use the command --- 73,79 ---- be called the "Right-Margin" region. The scroll bar region is basically the rightmost five columns (see documentation on variable scrollbar-width). Mouse hits in this region can have special bindings, currently those binding ! effect scrolling of the window, and so are referred to as the "Scroll-bar" region. For information on what mouse bindings are in effect, use the command *************** etc/emacs.icon: *** 109,115 **** The "Kitchen Sink" GNU Emacs icon. src/sunfns.c: ! This contains the auxilary functions that allow elisp code to interact with the sunwindows, selection, and menu functions. lisp/sun-mouse.el: --- 109,115 ---- The "Kitchen Sink" GNU Emacs icon. src/sunfns.c: ! This contains the auxiliary functions that allow elisp code to interact with the sunwindows, selection, and menu functions. lisp/sun-mouse.el: *************** lisp/sun-mouse.el: *** 116,122 **** Defines the lisp function which is called when a mouse hit is found in the input queue. This handler decodes the mouse hit via a keymap-like structure sensitive to a particular window and where in the window the ! hit occured (text-region, right-margin, mode-line). Three variables are bound (*mouse-window* *mouse-x* *mouse-y*) and the selected function is called. See documentation on "define-mouse" or look at lisp/sun-fns.el --- 116,122 ---- Defines the lisp function which is called when a mouse hit is found in the input queue. This handler decodes the mouse hit via a keymap-like structure sensitive to a particular window and where in the window the ! hit occurred (text-region, right-margin, mode-line). Three variables are bound (*mouse-window* *mouse-x* *mouse-y*) and the selected function is called. See documentation on "define-mouse" or look at lisp/sun-fns.el diff -cprP --exclude=*.elc emacs-19.13/etc/condom.1 emacs-19.14/etc/condom.1 *** emacs-19.13/etc/condom.1 Tue Jun 8 07:23:57 1993 --- emacs-19.14/etc/condom.1 Wed Jun 9 06:55:45 1993 *************** *** 25,31 **** o Syphilis o Crabs o Genital warts ! o Gonhorrea o Chlamydia o Michelangelo o Jerusalem --- 25,31 ---- o Syphilis o Crabs o Genital warts ! o Gonorrhea o Chlamydia o Michelangelo o Jerusalem diff -cprP --exclude=*.elc emacs-19.13/etc/emacs.1 emacs-19.14/etc/emacs.1 *** emacs-19.13/etc/emacs.1 Tue Jun 8 07:23:59 1993 --- emacs-19.14/etc/emacs.1 Fri Jun 11 00:12:28 1993 *************** *** 391,443 **** manual is also included in the Emacs source distribution. .PP .SH FILES ! /usr/local/emacs/src - C source files and object files ! /usr/local/emacs/lisp - Lisp source files and compiled files that define most editing commands. Some are preloaded; others are autoloaded from this directory when used. ! /usr/local/emacs/man - sources for the Emacs reference manual. ! ! /usr/local/emacs/etc - various programs that are used with GNU Emacs, and some files of information. ! /usr/local/emacs/etc/DOC.* - contains the documentation strings for the Lisp primitives and preloaded Lisp functions of GNU Emacs. They are stored here to reduce the size of Emacs proper. ! /usr/local/emacs/etc/DIFF discusses GNU Emacs vs. Twenex Emacs; .br ! /usr/local/emacs/etc/CCADIFF discusses GNU Emacs vs. CCA Emacs; .br ! /usr/local/emacs/etc/GOSDIFF discusses GNU Emacs vs. Gosling Emacs. .br ! /usr/local/emacs/etc/SERVICE lists people offering various services ! to assist users of GNU Emacs, including education, troubleshooting, ! porting and customization. .br These files also have information useful to anyone wishing to write programs in the Emacs Lisp extension language, which has not yet been fully documented. ! /usr/local/emacs/info - files for the Info documentation browser ! (a subsystem of Emacs) to refer to. Currently not much of Unix ! is documented here, but the complete text of the Emacs reference ! manual is included in a convenient tree structured form. ! ! /usr/local/emacs/lock - holds lock files that are made for all files being modified in Emacs, to prevent simultaneous modification of one file by two users. ! /usr/local/emacs/cpp - the GNU cpp, needed for building Emacs on ! certain versions of Unix where the standard cpp cannot handle long ! names for macros. ! ! /usr/local/emacs/shortnames - facilities for translating long names to ! short names in C code, needed for building Emacs on certain versions ! of Unix where the C compiler cannot handle long names for functions ! or variables. .\" START DELETING HERE IF YOU'RE NOT USING X /usr/lib/X11/rgb.txt - list of valid X color names. --- 391,439 ---- manual is also included in the Emacs source distribution. .PP .SH FILES ! /usr/local/info - files for the Info documentation browser ! (a subsystem of Emacs) to refer to. Currently not much of Unix ! is documented here, but the complete text of the Emacs reference ! manual is included in a convenient tree structured form. ! /usr/local/lib/emacs/$VERSION/src - C source files and object files ! ! /usr/local/lib/emacs/$VERSION/lisp - Lisp source files and compiled files that define most editing commands. Some are preloaded; others are autoloaded from this directory when used. ! /usr/local/lib/emacs/$VERSION/etc - various programs that are used with GNU Emacs, and some files of information. ! /usr/local/lib/emacs/$VERSION/etc/DOC.* - contains the documentation strings for the Lisp primitives and preloaded Lisp functions of GNU Emacs. They are stored here to reduce the size of Emacs proper. ! /usr/local/lib/emacs/$VERSION/etc/DIFF discusses GNU Emacs vs. Twenex ! Emacs; .br ! /usr/local/lib/emacs/$VERSION/etc/CCADIFF discusses GNU Emacs vs. CCA ! Emacs; .br ! /usr/local/lib/emacs/$VERSION/etc/GOSDIFF discusses GNU Emacs ! vs. Gosling Emacs. .br ! /usr/local/lib/emacs/$VERSION/etc/SERVICE lists people offering ! various services to assist users of GNU Emacs, including education, ! troubleshooting, porting and customization. .br These files also have information useful to anyone wishing to write programs in the Emacs Lisp extension language, which has not yet been fully documented. ! /usr/local/lib/emacs/lock - holds lock files that are made for all files being modified in Emacs, to prevent simultaneous modification of one file by two users. ! /usr/local/lib/emacs/$VERSION/$ARCHITECTURE/cpp - the GNU cpp, needed ! for building Emacs on certain versions of Unix where the standard cpp ! cannot handle long names for macros. .\" START DELETING HERE IF YOU'RE NOT USING X /usr/lib/X11/rgb.txt - list of valid X color names. diff -cprP --exclude=*.elc emacs-19.13/etc/emacs.csh emacs-19.14/etc/emacs.csh *** emacs-19.13/etc/emacs.csh Tue Jun 8 07:24:01 1993 --- emacs-19.14/etc/emacs.csh Wed Jun 9 06:55:46 1993 *************** *** 11,17 **** # 4 = resume emacs under X # 5 = new emacs under suntools # 6 = resume emacs under suntools ! # 7 = new emacs under X and suntools - doesn't make any sence, so use X # 8 = resume emacs under X and suntools - doesn't make any sense, so use X set EMACS_PATTERN="^\[[0-9]\] . Stopped ............ $EMACS" --- 11,17 ---- # 4 = resume emacs under X # 5 = new emacs under suntools # 6 = resume emacs under suntools ! # 7 = new emacs under X and suntools - doesn't make any sense, so use X # 8 = resume emacs under X and suntools - doesn't make any sense, so use X set EMACS_PATTERN="^\[[0-9]\] . Stopped ............ $EMACS" diff -cprP --exclude=*.elc emacs-19.13/etc/emacstool.1 emacs-19.14/etc/emacstool.1 *** emacs-19.13/etc/emacstool.1 Tue Jun 8 07:24:03 1993 --- emacs-19.14/etc/emacstool.1 Wed Jun 9 06:55:47 1993 *************** *** 57,63 **** .I Emacs. In addition, the run command can be set by the .I pathname ! following the last occurence of the .I \-rc flag. This is convenient for using Emacstool to run on remote machines. --- 57,63 ---- .I Emacs. In addition, the run command can be set by the .I pathname ! following the last occurrence of the .I \-rc flag. This is convenient for using Emacstool to run on remote machines. *************** when running on a Sun workstation. *** 104,110 **** .PP In addition, Emacstool sets the environment variable IN_EMACSTOOL = "t". Lisp code in your ~/.emacs can use (getenv "IN_EMACSTOOL") ! to determine whether to do Emacstool specific initalization. Sun.el uses this to automatically call emacstool-init (getenv "IN_EMACSTOOL") is defined. .PP --- 104,110 ---- .PP In addition, Emacstool sets the environment variable IN_EMACSTOOL = "t". Lisp code in your ~/.emacs can use (getenv "IN_EMACSTOOL") ! to determine whether to do Emacstool specific initialization. Sun.el uses this to automatically call emacstool-init (getenv "IN_EMACSTOOL") is defined. .PP diff -cprP --exclude=*.elc emacs-19.13/etc/etags.notes emacs-19.14/etc/etags.notes *** emacs-19.13/etc/etags.notes Tue Jun 8 07:24:05 1993 --- emacs-19.14/etc/etags.notes Wed Jun 9 06:55:48 1993 *************** *** 91,97 **** * Generalize file suffix stuff -- clumsy and verbose now. Should be config-file- or environment variable- or option-driven. ! * Treat C++ "operator token" as a single identifier -- canonicalicalize to leave one space between "operator" and token when token is an identifier, no space when token is an operator. * Make a tag for a struct tag in plain C as `struct name' (likewise --- 91,97 ---- * Generalize file suffix stuff -- clumsy and verbose now. Should be config-file- or environment variable- or option-driven. ! * Treat C++ "operator token" as a single identifier -- canonicalize to leave one space between "operator" and token when token is an identifier, no space when token is an operator. * Make a tag for a struct tag in plain C as `struct name' (likewise *************** *** 127,133 **** ("domain" keyword), so these can be taken out of the etags source. * For C++, "::" is only understood if it occurs between identifiers with no intervening whitespace. This style of C++ function definition: ! returnntype classname:: functionname(formals) { ... } --- 127,133 ---- ("domain" keyword), so these can be taken out of the etags source. * For C++, "::" is only understood if it occurs between identifiers with no intervening whitespace. This style of C++ function definition: ! returntype classname:: functionname(formals) { ... } diff -cprP --exclude=*.elc emacs-19.13/etc/refcard.ps emacs-19.14/etc/refcard.ps *** emacs-19.13/etc/refcard.ps --- emacs-19.14/etc/refcard.ps Wed Jun 9 14:06:57 1993 *************** *** 0 **** --- 1,1624 ---- + %!PS-Adobe-2.0 + %%Creator: dvipsk 5.512a Copyright 1986, 1993 Radical Eye Software + %%Title: refcard.dvi + %%Pages: 6 + %%PageOrder: Ascend + %%BoundingBox: 0 0 612 792 + %%EndComments + %DVIPSCommandLine: dvips -r0 -s -F -Z -D 1016 -o refcard.ps refcard.dvi + %DVIPSSource: TeX output 1993.06.09:1802 + /SafetyEnclosure save def + %%BeginProcSet: texc.pro + /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N} + B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0] + concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize + -72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix + currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put + setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed + true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N + /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix + fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{ + CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn + put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 + 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data + dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 + ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 + sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type + /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N + /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get + S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height + sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 + -1 -.1 ch-xoff sub ch-yoff .1 add]/id ch-image N /rw ch-width 7 add 8 idiv + string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse} + imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get + exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index getinterval + putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get + dup 0 eq{pop 1}{dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse} + ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127} + {dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string + putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval adv}B + /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}{adv 1 chg + nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add + adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]dup{ + bind pop}forall N /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr + put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf + div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook + known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 + get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N + /eop{SI restore showpage userdict /eop-hook known{eop-hook}if}N /@start{ + userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 + div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put} + for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0 + ]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V{}B /RV + statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval + dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}ifelse}{false} + ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley false RMat{BDot} + imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley scale 1 1 false RMat{ + BDot}imagemask grestore}}ifelse B /QV{gsave transform round exch round exch + itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill + grestore}B /a{moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta + add tail}B /b{S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{ + 1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p + -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto} + B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end + %%EndProcSet + TeXDict begin 40258431 52099146 1000 1016 1016 (refcard.dvi) + @start /Fa 1 59 df58 D E /Fb 19 122 df<003FB612E05AA2B7FCA216C0A26C1580230874A132> + 45 D97 DII<193F95B5FC171FA319FEEF001F1807A219FCA2180FA2 + 19F8A2181FA219F0A2183FA219E0A2187FA219C0A218FFA21980A25FA21900A25FED0FF0DB7FFE + 5B4AB5FC913907FC1F8791391FF007C7913A3FC003E7FC91387F80014AC712FF495A49486E5A49 + 5A010F153F495A49485D137F5C13FF48495DA24890C8127FA2485F5B000F16FFA248485EA25E12 + 3F4993C7FCA25E127F495DA21607A2495D12FF160F19604D13F05B161F1801007F04F013E0A204 + 3F1303047F14C017E0003F15FF4B14076D491580001F03DF130FDB079F14006C6CEB1F1F0007DA + 3E0F131E6C6C017C143E3C01FC01F807F03C3C00FE0FF003F8F8903B7FFFC001FFF0011F90C75B + D907FCEC3FC0406371E148>II103 + D<153F91B5FC131FA35DEB001F1407A25DA2140FA25DA2141FA25DA2143FA25DA2147FA25DA214 + FFA25DA25BA292CAFCA25BEE1FF84A90B5FC030314C0010790390FF03FE092391F800FF0913AFC + 7E0007F815F890260FFDF06D7EECFFE05D4B804990C7FC5CA25C495AA25CA249481407605CA201 + FF150F605CA248161F6091C8FC173F485FA25B177F00075F17FF495EA2000F5DF0000649170F5E + 001F4C131F191E4914075F003F183C160F494B137C1978127F4D13F05BF001E000FF1703040714 + C049EE07800403EB1F00933801F87E90C9B45A48705A003CEE1FC0406375E148>I<151FED7F80 + EDFFC05CA4168016006E5A157C92C7FCB3A2EB03F8EB0FFEEB3FFF90387E1F809038F80FC0D801 + F07FEA03E001C07FEA0780120F13005A001E131FA25A143F007C5C1278147F5D00F813FF485C12 + 70C65A92C7FCA25B5CA213075C130F5CA2131F5CA2133F5C137F9138C00180ED03C013FFEC8007 + 16805A1400ED0F005A495B151EA2495BA25D15F800015C4A5A0000EB07C090387E1F806DB4C7FC + 6D5AEB07F0225E74DC2B>I<15FCEB03FF137FA315F8EB007F141FA215F0A2143FA215E0A2147F + A215C0A214FFA21580A25BA21500A25BA25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA2 + 137FA25CA213FFA25CA25AA291C7FCA25AA25BA21207A25BA2120FA25BA2121FA25BA2123FEC01 + 809038E003C0A2127F140701C01380A2140F00FF14001380A25C141E007F133E143CA2003F5B14 + F86C6C5A380FE3E06CB45A6C5BC690C7FC1E6373E124>108 DIIII114 DI<15F0EC03F84A7EA2140FA25DA2 + 141FA25DA2143FA25DA2147FA25DA214FFA25DA25BA2B712FC16FEA216FC260003FEC7FCA21307 + A25CA2130FA25CA2131FA25CA2133FA25CA2137FA25CA213FFA25CA25AA291C8FCA25AA25BA212 + 0716604914F0A2000F140116E049130316C01507001F158049130F16005D151E000F5C157C5D00 + 07495A4A5A6C6C485A3901FC3F802600FFFEC7FC6D5AEB1FE0275872D62F>II + 121 D E /Fc 1 14 df13 + D E /Fd 45 122 df<121FEA3F80EA7FC0EAFFE0A313F0A2127F123FEA1F701200A413F013E0A2 + 1201A213C0120313801207EA0F00121E123E5A127812300C1E768A20>44 + DI<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B768A20>I< + EC3FE0903803FFFE010F6D7E90391FE03FC090397F800FF09039FE0003F848486D7E48486D7E49 + 147E0007157F4848EC3F80A24848EC1FC0A3003F16E0A34848EC0FF0A600FF16F8B3A2007F16F0 + A46D141F003F16E0A3001F16C0A26D143F000F1680A26C6CEC7F000003157E6D14FE6C6C495A6C + 6C495A90397F800FF090391FE03FC06DB55A010349C7FC9038003FE02D437BC038>48 + D<143C147C14FC1303130F13FFB5FCA213F313031200B3B3AD497E497EB712E0A4234175C038> + I<903801FFC0010F13F8013F13FF90B612C02601FC037F3A03E0007FF8D80F80EB1FFC90C76C7E + 001E6E7E488000386E1380127800706E13C0127EB47E6DEC7FE0A66C5A001EC8FCC9FCEEFFC0A3 + 4B1380A24B13005E4B5A150F5E4B5AED3FC04B5A4BC7FC4A5A4A5AEC07F04A5A4A5A4AC8FC147E + 5C495A494814E0EB07C0495A49C7EA01C0133E5B5B48481403EA03C04848EC078048B7FC5A5A5A + B8FC1700A32B417AC038>II< + 0003150C01E0147C01FFEB0FFC91B55A5E5E5E93C7FC5D15F815C0D987FEC8FC0180C9FCACEC3F + E0903881FFFC018713FF90399FE03FC09039BF000FE001FCEB07F801F06D7E491301496D7E826C + 4880C91380A217C0163FA217E0A5123EEA7F8012FFA317C0167F90C8FC00FC168012700078EDFF + 007E4B5A6C4A5AD81F80495A6C6C495AD807F0495AD801FEEBFFC06CB6C7FC013F13FC010F13F0 + 010113802B437AC038>53 D<4AB4FC020F13E0027F13F84948C67ED903F8133ED90FE0130F495A + 4948EB3F8049C7127F01FE14FF12015B485A0007ED7F00163E484891C7FCA2485AA2123FA3485A + A2EC3FF8ECFFFED8FFC16D7E9039C3C01FE09039C7000FF001CE6D7E01DC6D7E6F7E13F8496D7E + 1780A249EC7FC0A317E05BA3127FA66C7EA217C0121FA2000FEDFF807F000716006D495A12036D + 495A6C6C495A6C6C495A90397FC03FE0011FB512806D91C7FC010313FC9038007FC02B437AC038 + >I<121C121EEA1FC090B712F8A35A17F017E017C0A2003CC8EA078048ED0F00161E0070151C16 + 3C5E5E485D15014B5AC8485A4BC7FC150E151E5D5DA25DA24A5A14035D1407A24A5AA2141FA292 + C8FC5CA25CA35CA25CA21301A61303AB6D5A6D5A2D4479C138>I57 D<1618163C167EA316FFA24B7FA34B7FA39238073FE0A2030F + 7FED0E1FA24B6C7EA2033C7FED3807A203707F160303F07F4B7EA20201814B7EA24A486D7EA202 + 078192C7123FA2020E6E7EA2021E81021C140FA24A811707027881027FB6FCA291B8FCA202E0C7 + 120149486E7FA20103834A157FA249C96C7EA24983010E161FA24983180F013C831807137E48B4 + 4C7E000F01C092381FFF80B500F80207B6FCA448467BC553>65 D<922601FFC0EB0180031F01FC + 130392B613070207EDC00F021F9038C00FF0913B3FFC0001F81FDAFFE09038007E3F01030180EC + 1F7F4948C8EA0FFF4948814948814948814948814948167F485B4890CA123F191F485A000F180F + 5B121F491707123FA2491703127FA396C7FC485AAD6C7EA2F10380A2123F7FA2001F18076D1800 + 120F7F0007606C6C170E191E6C6D161C6C6D163C6D6C5E6D6C5E6D6C15016D6C4B5A6D6C4B5A6D + 6C6C4A5A010001E0023FC7FCDA3FFC14FC913A1FFFC00FF8020790B512E002001580031F01FCC8 + FC030113E0414779C450>67 D69 DI<922601FFC0497E031F01FC + 130392B613070207EDC00F021F9038C00FF0913B3FFC0001F81FDAFFE09038007E3F01030180EC + 1F7F4948C8EA0FFF4948814948814948814948814948167F485B4890CA123F191F485A000F180F + 5B121F491707123FA2491703127FA396C8FC485AAC053FB612806C7EA3DD0003EBC000003F715B + 6D82A2121F7F120F7F12076C7E807E6C7F6D7E6D7E6D6C5D6D7E6DB45D6D6DEC07BF010001F0EC + 1F1FDA3FFCEC7E0F913B1FFFE003FC07020790B5EAF0030200EDC001031F91C9FC030113F04947 + 79C457>I73 + D77 DI80 D83 + D85 + D97 DI< + EC3FFC49B512C0010714F090391FE003F890397F8000FC9039FE0001FE48481303485A1207485A + 121F49EB01FC003FEC0070491400127FA35B12FFAA6C7EA3123F6D1407121F6D140F000F150E6C + 6C141E6D143C6C6C1478C66C14F890397FC001F090393FF00FC0010FB512800101EBFC00903800 + 3FE0282D7BAB32>IIIIIII107 DIIIII<3901FC01F800FF + EB07FE91381FFF80EC3E3F9138787FC000071370000313E01201EBFDC09138803F8001FFEB0E00 + 92C7FC91C8FCA35BB3A5486C7EB6FCA4222B7BAA2C>114 D<90381FFC0390B5128F000314FF38 + 0FF007381F800048C7123F007E80A2007C8012FC81A27E7E6D90C7FC13E0EA7FFCEBFFF06C13FF + 6C14C06C14F06C800001806C6C7F010F7FD9007F13801403020013C000E0147F153F151F7E150F + 7EA26C1580151F7E6CEC3F006D133E6D13FE39F9F803F800F0B55AD8E03F13C026C007FCC7FC22 + 2D7BAB2D>IIIIIII E /Fe 25 122 df<94B5913803FFE0043F02E0017F + 13FC0303B6D8FC03B6FC031FDBFE0F1580037FDBFFBF15E04AB5D8C00790B5008013F0020701FC + C7ECFC034A01E049DAF00713F8023F494914E04A90C7484A4813FC4A48178049495C4B17005B49 + 495EA25D494E6D13F84B6E6F13F07613E0726F13C072EE1E007293C7FCAFBD12FEA7D8000F01E0 + C849C9FCB3B3AC003FB6D8F803B712E0A766637DE25E>11 D<4AB5FC027F14F049B612FE0107ED + FFC0011F16F049D9801F7F9027FFF0000313FE02FC01007F486D6E7F717F486D6E7FA2717F8583 + A285836C5B6C5B6D5A6D5AEB0FC090C9FCA4047FB5FC033FB6FC0203B7FC143F49B612830107EC + E003011FEBFE00017F13F090B512C0000391C7FC4813FC485B485B485BA2485B5CB5FCA291C8FC + A35FA26E5CA26C5E6E5C6E027E7F6C6D02FEEBFFC06C6D4948ECFF806C01FE902607F87F14C06C + 9039FFC07FF0000191B5EAC03F6C6C4B7E011F9138FE0007010302F801001480D9001F018091C8 + FC4A417CBF4F>97 D<903807FF80B6FCA7C6FC7F7FB3A7933801FFF0041FEBFF8093B612F00383 + 15FC038F15FF039F010080DBFFF0011F13E004C001077F93C76C13FC03FC6E7F4B6E7F4B814B6F + 13801BC04B6F13E0A21BF0851BF8A31BFC85A31BFEAE1BFCA3611BF8A21BF0611BE0A24F13C081 + 6F4B13806F92B51200626F4A5B03FF4A5B4A6D010F5B9126FC7FE0013F13C09127F81FFC01B55A + 4A6CB648C7FCDAE00315F84AC615E04A013F49C8FC90C8000313E04F637BE15A>I<92380FFFF0 + 4AB67E020F15E0023F15F891B712FE010382499026FE003F13C0011F01F0130F4901C04913E049 + 5B90B5C74813F0485B485B5A5C5A5C5A7113E048496E13C071138071130048EE00FC95C7FC5CA2 + B5FCAE6C7FA47E8019F86CEF01FC6E15037E6C6DED07F8806CEF0FF06C6D151F6C6EEC3FE06D6D + EC7FC06D01F014FF6D01FC010313806D903AFFC03FFE00010391B55A01005E023F15E0020F1580 + 020102FCC7FCDA000F13C03E417BBF48>II<92380FFFC04AB5 + 12FC020FECFF80023F15E091B712F80103D9FE0113FE010F9039F0003FFF4901C0010F7F49496D + 7F4990C76C7F49486E7F484980484982187F48498248173F85485BA248717EA3485B1A80A284B5 + FCA291B9FCA41A0002C0CBFCA57EA380A27EA27E6E161F6CF03F80A26C6D167F1A006C6D5E6C6D + 4B5A6C6D15036D6D4A5A6D6D4A5A6D01F0EC3FF06D01FCECFFE06D9026FFC00F5B010191B65A6D + 6C4BC7FC021F15F8020715E0020092C8FC030713F041417CBF4A>III<903807FF80B6FCA7 + C6FC7F7FB3A7EF1FFF4CB512F0040714FC041F14FF4C819326FFE03F13E00381EB000FDB83F86D + 7FDB87F081DB8FC07FDB9F808103BFC7FC15BE03FE6E7F5D5DA25DA25DA35DB3B0B7D8F007B712 + 80A751627AE15A>II<9038 + 07FF80B6FCA7C6FC7F7FB3A80507B61280A7DD007F90C7FCF03FF84E5A943801FFC04D5B4D90C8 + FC4D5AEF3FF84D5A4D5A4C5B040790C9FC4C5A4C5A4C5AEEFFE015811583038F7F039F7F03BF7F + 92B57EA283844B804B7EDBF03F7F03E0804B6C7F4B6C7F4B7E84707F708082717F85717F717F83 + 85717F717F8386718086B7D8C00FECFFF0A74C627BE155>107 D<903807FF80B6FCA7C6FC7F7F + B3B3B3B3A9B712E0A723627AE12C>III<923807FFE092B6FC020715E0023F15FC91B8FC4949C66C7F0107 + 01F0010F13E04901C001037F49496D7FD97FFEC8EA7FFE49486F7EA248496F138048496F13C048 + 19E0A248496F13F0A24819F8A248496F13FCA34819FEA4B518FFAC6C19FEA56C6D4B13FCA26C19 + F8A26C6D4B13F0A26C19E06E5D6C19C06C6D4B13806C6D4B13006D6C4B5A6D01C001035B6D01F0 + 010F5B6D01FE017F5B010390B712C0010094C7FC023F15FC020F15F0020092C8FC030713E04841 + 7CBF51>I<902607FF80EBFFF8B6011FEBFF80047F14F00383B612FC038715FF039F16C09226BF + FE01809227FFF0003F13F8C60380010F7F6D91C76C7F6D01FC6E7F4B6E14804B804B17C04B6F13 + E0A27313F0A27313F8A37313FCA47313FEAD611BFCA44F13F8A21BF0611BE0611BC06F92B5FC6F + 17804E14006F4A5B6F4A5B03FF4A5B70495B04E0017F13C09226DFFC03B55A03CFB648C7FC03C3 + 15F803C015E0043F49C8FC040313E093CBFCB3B712F0A74F5A7BBE5A>III<91393FFF80070107B538F81F80011FECFF + 7F017F15FF3901FFF0014890C7121FD807FC1407484880484880484880A24848157FA300FF163F + 7FA27F6DED1F0001FE92C7FC6D7E14F0ECFFC06C14FF16F016FE6C6F7E6C16E06C826C16FC6C82 + 6C826C6C16806D16C01307010116E0D9001F15F0EC007F1501DB003F13F81607007C150100FE81 + 177F7E173FA26D151FA27F18F07F173F6D16E06D157F6D16C06D15FF6D4A138002E0010F130002 + FCEB7FFC01DFB65A010F15E0D8FE035D48C66C49C7FC0070010F13E035417BBF40>II<902607FFC0ED3FFEB60207B5FCA7C6EE00076D826D82B3B060 + A460A260A26D5E6F5C6D047E7F4E806D6D0101EDFF806D6DEB07F86D01FFEB3FE06D91B55A023F + 5D6E4A5A020314F8DA001F01C002F0C7FC51407ABE5A>III<007FB66C90B612E0A7D800 + 1F01F0C7000FEB80006D6DDA07FCC7FC6D6D4A5A6D6D4A5A6D6D4A5A6D167F70495A6E6D485B6E + 01E091C8FC6E6D485A6E6D485A6E4A5A70485A6EEBFE3F6E6D485A6E4A5A6F5C6F91C9FC5F6F5B + 6F5B6F7F6F7F81836F804B804B804B805D4B80DB3FF77F04E37FDB7FC17FDBFF80804A497E4A48 + 814A486D7F020F6E7F4A486D7F4B6D7F4A487F4A48814A486D7F4990C88049486F7F0107707FD9 + 1FFF81B600F00103B612FCA74E3E7DBD55>I<007FB600C00107B512F8A7D8003F01E0C8381FF8 + 00735A6D6D4B5AA26D6D4B5AA26D6D5E197F6D95C7FC6F5D6D5F6F14016D5F701303A26E6D495A + A26E6D495AA26E6D5C181F6E5E70133F6E5E70137F6E93C8FC705BA26E6D485AA26EEC83FCA26F + EBC3F817C76F5C17EF6F5C17FF6F5CA36F5CA26F91C9FCA26F5BA26F5BA2705AA2705AA3705AA2 + 4C5AA25F167F94CAFCD807F05CD81FFC5C486C1301486C5C1503B512804B5AA24B5A4B5AA24B5A + 6C49485A4BCBFC6C48485A9038D807FC391FF03FF86CB55A6C5C6C1480C649CCFCEB1FE04D5A7D + BD55>I E /Ff 72 126 df33 DII<153E157F4B7EA9020313F0023F13FF91B612E0010715F84915FE013F814916C090 + B87E4883484913BF4801F001837F48018001807F4849143F01FC6F7E4848150F496F7E485A8349 + 178000FF82495D5FA56D6F1300715A6C6C6F5A95C7FC7F6C7E13FE6C7E14C06C13F86C90B5FC7E + 6C15E06C15FC6DECFF80011F15E06D15F8010315FED9007F80020F810200818404BF7F04877F16 + 819338807FFC173FEF0FFEA2717E83EA1F80486C6F1380487E83487EA45BA25F007F18005F7F4D + 5A6C6C150F6D4B5A6C6C153F6D4B5A6C6D903881FFF002F013876C01FE90B55A6C90B75A6C5F6C + 94C7FC6D15FC011F5D010715E001011580D9003F01FCC8FC020313C002005BA96FC9FC153E396E + 78E14A>I<017E167848B46C15FE486D1401486D4A7E487F486D5CA2486D5D170F13E7267FC3FE + 4A5AA201815E00FF6D143FA201005E177FA24D5AA2605EA201814A5BA2007F4992C7FC01C35CA2 + 263FE7FC495A13FF5F6C49131FA26C49495A6C5B6C495C6C49137FD8007EC7FC90C85B16FFA24B + 5BA25F5DA24B90C8FCA25E150FA24B5AA25E153FA25E157FA24B5AA25E5CA24A5BA293C9FC5CA2 + 4A5AA25D021F15FCEF03FF4B491380023F4A13C04D13E04A484913F0A24B4913F814FF18CF4949 + 9038FF87FCA24B1403494A14FEA2490100EBFE01A25C130FA2495AA25C013FEDFF03A24A6D14FC + 017F1687A2494891387FCFF818FF5C487013F0A24A6E13E07113C06C90C86C13806D6F1300013C + ED00FC3F6E7BE14A>I<137EEBFF804813C04813E04813F014F8A214FCA37E6C13FE7E137F1303 + A7130714FCA2130FA2EB1FF8A2EB3FF0A2137FEBFFE04813C05A000F1380481300485A485A485A + 5B6C5A5B6C5A001EC7FC172C67D54A>39 DI<123EEA7F80487E7F13F8 + 7F6C7E6C7E000F7F6C7F6C7FC67F6D7E6D7E6D7E6D7E7F6D7F816D7F7F6E7EA26E7E6E7EA26E7E + A214078180168080A216C080A216E0157FA316F0153FA5ED1FF8B0ED3FF0A5157F16E0A315FF16 + C0A25C1680A25C16005C5D140FA24A5AA24A5A4A5AA24A5A5B495B5D4990C7FC5B495A495A495A + 495A00035B485B485B003F90C8FC485A485A5B13E05B6C5A003EC9FC256E74E14A>I<157C15FE + 4A7EAB001E17F0D87F80ED03FC01C01507D8FFF0ED1FFE01FC157F01FE15FF267FFF81010313FC + 02E1130F001F01F14913F0000701FD017F13C06C90B71280C6EEFE00013F15F8010F15E0010315 + 8001004AC7FC6E5B021F13F0027F13FC91B57E01036E7E010F15E0013F15F890B712FE0003EEFF + 804801FD6D13C0001F01F1011F13F0007F01E16D13FC0281130326FFFE01010013FE01FC157F01 + F0151FD87FC0ED07FC01801503D81E00ED00F0C71600AB6E5A157C373D77C84A>II<137E3801FFC04813E04813F04813F814FC5A14FEA314FFA27EA27E7E7E + 6C7E130314FEA21307A2EB0FFC131FEB3FF8137FEBFFF0000313E0121F4813C0481380B512005B + EA7FF85BEA3FC0001EC7FC182667914A>I<001FB812FC007F17FFA2BA1280A46C1800A2001F17 + FC390A78AF4A>II<183C187F604D1380A25FA24D1300A24D5AA24D5AA260173FA24D5AA24D5AA2 + 4C5BA24C5BA24C90C7FCA24C5AA24C5AA25F163FA24C5AA24C5AA24B5BA24B5BA24B90C8FCA24B + 5AA24B5AA25E153FA24B5AA24B5AA24A5BA24A5BA24A90C9FCA24A5AA25D141FA24A5AA24A5AA2 + 4A5AA2495BA2495BA24990CAFCA2495AA25C131FA2495AA2495AA2495AA2485BA2485BA24890CB + FCA2485AA25B121FA2485AA2485AA2485AA25BA26C5AA2001ECCFC396E78E14A>III<913803FFC0023F13FC49B67E010715F0011F15FC498190B87E488348 + 8348D9FC008002E0010F7F48018001017F4890C87F01FC153F003F707E498148486F138083496F + 13C012FF837F19E0187FA36C5AA26C5A0006CAFCCBFCA2F0FFC0A35F19805FA24D13005F60171F + 4D5A4D5AA24D5A4C5B4C5B4C5B041F90C7FC4C5A4C5A4C5A4B5B4B5B030F5B4B5B4B90C8FC4B5A + 4B5A020313F04A5B4A5B4A5B4A48C9FCECFFFC495B495B495B491380013F90C8EA1F804948ED3F + C04948ED7FE0485B4813E0000F5B485B4890B8FC5ABAFCA56C18C06C18803B5779D64A>I<9138 + 01FFF8023FEBFF8049B612F0010715FC011F15FF017F8290B87E48838448DA000F7F4801F00101 + 7F02C06D6C7E91C8121F48486F7E6D8183198083A26C5A6C5A6C5AEA006090C95A1900A25FA24D + 5A171F60173FEFFFF804035B160F0303B55A0207B65A4A5D4A92C7FC17FC838318C06E816E8191 + C7000F7F04017F706C7EEF1FFF050713807113C0837113E0A2F07FF0A2183F19F8181FA3120FEA + 3FC0487EA2487E183F19F0187FA249EEFFE0127F6D4B13C06D5D6C6C4B138001FF151F6C01C002 + 7F130002F049485A6C9026FF800F5B6C91B65A6C5F6C5F6C6C5E011F93C7FC010715FC010115F0 + D9001F1480020101F8C8FC3D587AD64A>II<1818187E4DB4FC4D1380170F + 5F177F94B5FC040314004C5B041F13F84C5B93B512C04B5C030749C7FC031F5B4B13F092B55A4A + 1480020791C8FC4A13FC023F5B4A13E049B512804991C9FC010F13FC013F5B4913E048B55A4891 + CAFC000F5B4813F8007F5B14C0B5CBFC5BA27F6C13C014F0001F7F6C13FE00037F6C14C06C6C7F + 6D13F8010F7F010313FF6D806D6C13E06E13F8020F7F6E13FF0201806E14E0033F7F6F13FC0307 + 7F03016D7E6F80043F13F0707F040713FE707F0400148083171F831703711300EF007E18183948 + 78CE4A>60 D<120C123FEA7FC0487E13F87F13FF806C13E06C7F000F13FC6C7F00016D7E6C8001 + 3F13F06D13FC01077F6D6D7E0100806E13F0021F7F6E13FE02037F020014C06F7F031F13F86F13 + FE03037F6F14C06F6C7F7013F8040F7F7013FF1601706C138083A25F4CB5120016074C13FC043F + 5B4C13E04BB55A4B91C7FC030F5B4B13F8037F13E092B55A020391C8FC020F5B4A13F8027F5B91 + B512C001035C4949C9FC011F5B4913F090B512C0485C000749CAFC485B003F13F0485BB5128091 + CBFC13FC5B13E06C5A6CCCFC120C394878CE4A>62 D<91383FFFE00103B512FE011FECFFE0017F + 15F848B712FE48824817C04817E04817F0489038F0007F91C7000313F8D87FFC020013FC49153F + 01E0151F00FFEE0FFE6D1507A56C48150F6C48ED1FFC6C48153FCA12FF040313F84C13F0161F4C + 13E093B512C04B14004B5B4B13F84B13E04B5B4B90C7FC4B5A4B5A5E4A5B4A5B5EA24A5B93C8FC + 5C5DAC5DA26E5A91CAFCADEC01E0EC07F84A7E4A7EA24A7EA46E5AA26E5A6E5AEC01E0375777D6 + 4A>I<4BB47E031F13F092B512FC020314FF020F814A15E0027F8191B77E5B4902007F4901F0EB + 1FFE4901C0130F4990C7EA03FF494880D97FF816804A804948903907F87FC04849EB3FFF4A4913 + BF484948B612E0495B00075C495B48484915F0A2484890383FFC0F92387FF003494A7E003F4A48 + 7E4C137F494816F8007F92C7123FA2494848141FA24B140F12FF140713004B1407AA6F140F1380 + 020316F0127F6F141FA26D6C6CEC3FE0A2003F6F137F6D6C16C07013FF001F6E6C4813806D6E5A + 92263FFC0F13006C6C6DB55AA26C6C6D5C6D6D5C00036E5C6D6D5C6C6D6C6C13806E6D90C7FC6C + 6DEB07F86D6C90C7EA0FE06EED1FF0D93FFEED3FF86D6C157F6D01C0EB01FF6D01F013076D01FF + 017F13F06D91B612E06D17C06E1680021FEDFE006E5D020315F002001580031F01FCC7FC030113 + C03D587AD64A>II<003FB712 + E04816FCEFFF80B97E18F0846C83846C8326003FF0C7003F1380050F13C017037113E083F07FF0 + A2183FA219F8181FA7F03FF0A2187F19E018FF4D13C05F4D13804D1300EF3FFE933803FFFC91B7 + 5A6018C095C7FC18C018F018FC848402F0C7000F1380050313C0050013E0F07FF0F03FF8181F19 + FC180F19FE1807A3F003FFA86019FE180FA2181FF03FFC187FF0FFF85F050713F0053F13E0003F + B9FC4818C01980BA120018FC606C17E018806C04FCC7FC40567DD54A>II<003FB7FC4816F0B812FC17FF848418F06C836C8328007FE0 + 00077F1600EF3FFF717F717F1703717FA2717F727E183FA2727EA2727EA2180785A284A21A8084 + A57213C0AF601A80A4601A00A260A261180FA24E5A183F61187F4E5AA24D5B5F4D5B051F5B5F94 + B5C7FC04075B003FB85A485FB95A60188095C8FC17FC6C16F06C93C9FC42567ED54A>I<003FB9 + 12FC4884BBFCA57E7E26003FF0C81203AB725A725A96C7FCA717FC4C7E4C7EA691B7FCA99138F0 + 0003A6705A705A94C9FCA8F11F80F13FC0F17FE0AD003FBAFC5ABBFCA56C19C06C198043567DD5 + 4A>I71 D<003FB67E4881B7FC82A35E7E6C5D26001FF8 + CAFCB3B3B119FCF001FEF003FFAD003FBAFC5ABBFCA56C18FE6C18FC40567CD54A>76 + D<263FFF8092383FFF804801E092B512C0B56C4A14E0A36E5CA26C19C06C6D4A14800001F0F000 + 01FE16EF6E140FA3027FEC1FCFA36F133F023F158FA26F137FA2021F150F6F13FFA2020F14FEA2 + EDF001A2020714FCEDF803A2020314F8EDFC07A2020114F0A2EDFE0F020014E0A2EDFF1FA2037F + 13C0A216BF033F1380A216FF6F1300A36F5AA36F5A6F5A6F5A92C8FCB3A2263FFFF04AB5128048 + 6D4A14C0B56C4A14E0A56C496E14C06C496E148043567DD54A>I<263FFFE091387FFFFE4801F8 + 91B6FCB56C491580A280A36C6D6D15006C705BC66C030090C7FCECBF80A2EC9FC0A381148FA281 + 1487A2811483A281148181A2148081A28182A2153F82A2151F82A2150F82A26F7EA2150382A215 + 0182A2150082A28283A2163F83A2161F83160FA2831607A2831603A2831601A3707EA2177F003F + B5FC4880B66C7FA383A26C4A6D5A6C91C7EA03FC41567CD54A>I<003FB712E04816FEB97E18E0 + 18F884846C836C188026003FF0C714C0051F13E0050713F017017113F8187FF03FFC181FF00FFE + A21807A219FF84A86019FEA2180FA2F01FFC183FF07FF818FF4D13F01707051F13E094B512C091 + B81280190060606018E018804DC7FC17E002F0CAFCB3A7003FB512F04880B67EA56C5C6C5C4056 + 7DD54A>80 D<003FB612F04815FFB812E017F88317FF846C836C8328007FE0003F7F04077F1601 + 706C7E173F717E170F717EA2838583A75F96C7FC5FA24D5A171F4D5A177F4C485A1607043F5B91 + B75A606095C8FC17FCA28383849126E0003F7F1607707F1600717EA2173F84171FADF103F0F107 + F8F10FFCA4EF0FFCA29538FE1FF8003FB500C014FF486E6D13FFB66C16F0831AE0837114C06C4A + 6E13806C4A91381FFE00CBEA03F846577DD54A>82 DI< + 003FB912FE4884BB1280A7903BC0000FFC0001AB6C487013006CC7167EC893C7FCB3B3B3027FB6 + 7E91B77E4982A56D5E6E5D41567CD54A>I<263FFFF092387FFFE0486D92B512F0B56C4A14F8A5 + 6C496E14F06C496F13E0D807F8CA1300A46D5E000360A76C6C4C5AA86C6C4C5AA5ED01FCED07FF + 6D4901805B0280150FA24B13C0A5013F90263FDFE05B02C0151FA2168FA2037F13F0A3011F5F02 + E00107133F03FF13F8A4EDFE03D90FE102FC5BA3EDFC0102F1157FA202F314FEA20107D9F80091 + C7FCA54B137EA2D903F7EC7F7EA202FF15FE4B133FA44B131F6D5EA36D496D5A027EC7EA03F045 + 577ED54A>87 D<003FB612F04815F8B712FCA516F816F001C0C8FCB3B3B3B3B3A290B612F016F8 + 16FCA56C15F86C15F0266E62E14A>91 D<121EEA7F80A2487EA27FA26C7EA26C7EA26C7EA2120F + 7FA26C7EA26C7FA26C7FA26C7FA26D7EA26D7EA26D7EA2130F80A26D7EA26D7FA26D7FA26D7FA2 + 6E7EA26E7EA26E7EA2140F81A26E7EA26E7FA26E7FA26E7FA26F7EA26F7EA2151F82A26F7EA26F + 7EA26F7FA26F7FA26F7FA2707EA2707EA2161F83A2707EA2707EA2707FA2707FA2707FA2717EA2 + 717EA2171F84A2717EA2717EA2711380A283A271130084183C396E78E14A>I<003FB612F04815 + F8B712FCA57E7EC8120FB3B3B3B3B3A2003FB6FC5AB7FCA56C15F86C15F0266E7BE14A>II<001FB812FC007F17FFA2BA1280A46C1800A2001F17FC390A787C4A> + I<14F0EB03F8EB07FC130FEB1FFE133FEB7FFCEBFFF84813F04813E04813801400485A485A5BA2 + 485AA2485AA25BA212FF5BA713FC7F7F6C138014C0A37EA27E6C13806C13006C5AC65A172C66DF + 4A>I<903801FFFE011FEBFFE0017F14F890B612FE486F7E48824882834882DA80037F91C76C7E + 707E160F6C486E7F826C486E7FEA00F090C9FC84177FA593B5FC157F020FB6FC147F0103B7FC13 + 0F133F90B8FC48EDFC7F48ECF0004849C7FC4813F04813C04890C8FCEA7FFC5B5B485A5BA66D15 + FF6C6C5CA26D1407D83FFE141F6D027F13F86CD9E007B612FE6C90B9FC6C19807E6C16DF6C160F + 6DECFC07011FDAF00314000107913980003FFE9026007FF8CAFC414078BE4A>I<383FFFF0487F + B57EA57E7EEA000FAFEE1FF893B5FC030714E0031F14F8037F8092B67E02FD8191B87E85DCE01F + 7FDC00077F03FC01017F4B6D6C7E03E0143F4B6E7E180F4B8192C87E7213805C844A17C084A31A + E0197FAB19FF1AC08060A26E1780604E1300816F5C4E5A6F143F6F4A5A6F4A5A6F130303FF495B + DCC03F5B93B65A6102FD93C7FC02FC5D6F14F8031F5C6D486C14C0902603F00149C8FC90C8EA3F + F043577FD54A>I<92387FFFC00203B512FC021F14FF027F158049B712C04916E0010F16F05B49 + 16F849EBC0004948C7127F4813F8485B02C0EC3FF0485B4890C8EA1FE0EF0780484892C7FC5B5B + 123F5BA2127F5BA212FF5BAA7F127FA37F123F7FEF01F86C6CED03FC6DED07FE6C7E170F6C13C0 + 6EEC1FFC6C6D143F6C01FCEC7FF86C01FFEB01FF6DD9F00F13F06D90B612E06D16C06D16806D16 + 0001015D6D6C5C021F14F0020714809126007FF8C7FC374076BE4A>I<93381FFFF84C7F4C7FA5 + 8282EE0007AF913801FF80020F13F8027F13FE49B612874915C7010F15F74915FF5B5B90B5EA80 + 7F489038FC000F4849130302E07F48497F4849147F91C8123F485A49151F170F485A5B007F1607 + A25BA212FF5BAB7F127F170FA27F003F161F7F173F6C7E6D157F000F16FF6D5C6C7F6E13076C01 + F05B6C01FC133F6C01FF90B712806D90B812C06D03F714E06D15E76D15C76D15870101ECFE076D + 4A6C14C0021FD9E0011480020390CAFC43577BD54A>II<933803FF80043F13F093B512FC0303804B80151F4B15805D92B7 + FCEEFC074A13F04AD9C00313004C6C5A715A4A90C712304B91C7FCAB003FB812F04883B97EA56C + 5F6C5FC7D807FEC9FCB3B3A7001FB87E48834883A56C5F6C5F39577BD64A>I<4AB46CEB1FF802 + 0F01F090B5FC023FD9FC07148091B6001F14C0010392B6FC4918E05B5B5B4901819138F07FC091 + 26FC003F130049486DEC3F8002E00107EC040048496D6DC7FCA248496D7FA291C8FC488349157F + A86D15FF6C5F6E5BA26C6D495BA26C6D4990C8FC02F8131F6D6C495A9138FF81FF92B55A5F90B7 + 5A5F485E94C9FCD9FE3F13FC020F13F00201138091CCFCA37F7E8014E46DB612E017FF6D16F049 + 16FC90B9FC48844818E04884480180C7003F7F4848C8120101F89238003FFC4848EE0FFE491607 + 4848707E84498200FF198090CB127FA66D17FF007F19006D5E6D5E6C6C4C5A01FC161F6CB4EE7F + FC6C01C04A485A02F8140F6C9026FFC001B55A6C91B75AC618806D94C7FC6D5E010F16F8010316 + E0D9007F92C8FC020F14F8DA007F90C9FC435F7CBD4A>I<383FFFF0487FB57EA57E7EEA000FAF + EE1FFC93B57E030714E0031F804B804B8002FDB67E91B8FC85EEE01FEE80034B486C7F15F84B7F + 4B815D4B147FA292C8FCA25CA35CB3AC003FB6017FB512F8486FB612FCB700C115FEA56C038015 + FC6C4B6C14F847567FD54A>I<15F0EC03FC4A7E4A7EA24A7FA46E90C8FCA26E5A6E5AEC00F092 + C9FCAC001FB512FE4880825AA37EA27EC71201B3B3A7003FB812E04817F018F8B9FCA37E18F06C + 17E0355775D64A>I<160FEE3FC0EE7FE0EEFFF0A24B13F8A46F13F0A2EE7FE0EE3FC0EE0F0093 + C7FCAC0107B612E04915F04915F8A57F7F90C8121FB3B3B3A9163F17F0A2167F000F16E0D83FC0 + 14FF487E4B13C0486C5B4B1380031F13006D137F90B65A6C5D5E5E6C5D6C1580000792C7FC0001 + 14F8D8001F13C02D7779D64A>I<383FFFE0487F80B5FCA37EA27EEA0007B0043FB6FC4C1580A2 + 93B712C0A3701580A27015009326001FFCC7FC4D5A4D5A4C485A4C5B4C5B4C90C8FC4C5A4C5A4C + 5AEEFFE04B5B4B5B4B90C9FC4B5A4B5A153F4B7E92B5FC02F98014FB91B67E4B6C7E4B6C7E15F8 + 4B6C7E4B6C7E4B6C7E15804B6C7E4A6D7F4A6D7F5C717E717E717EA2717E717E717EA2717F717F + 003FB6013FEBFFE0486F4814F0A2B76CB612F8A36C4B6C14F0A26C4B6C14E045567ED54A>I<00 + 3FB6FC4881B77EA57E7EC8FCB3B3B3AE003FB9FC481880BA12C0A56C18806C18003A5678D54A> + I<037FEC1FC0283FFC03FFE0EBFFF8267FFE0FD9F0037FB5003FD9F80F7F4A6D487F91B56C4880 + 70488094B6FC7E6C02819138E07FE0C649C6EC803F4A15004A6D48131F4A4A804A6D48130FA24A + 5CA24A5CA491C75BB3AD003FD9FC07B548B512C0486D48028314E0B603C314F04B14C7A36F14C3 + 6C01FE038314E06C496C020114C04C3E81BD4A>IIIII + III<263FFFF049B57E486D4980B56C4980A5 + 6C816C81D8000F91C7127FB3B118FFA25F5FA26E140F6D6C5C6F137FDBF003B612F86D90B812FC + 1AFE7F7F6E816E14FC020FDAF03F13FC0203DA801F13F89126007FFCC9FC473E7FBC4A>I<003F + B500C0017FB51280486E90B612C06F5AB617E0A36C19C04B7E6C4A6D148026003FE0C8EB800001 + 1F94C7FC6E5CA2010F5E6E1403A201075E6E1407A201035E6E140FA201015E6E141FA26D5E6F13 + 3FA2027F5D6F137FA2023F5D6F13FFA2021F92C8FC6F5AA2020F5CEDF803A202075CEDFC07A202 + 035CEDFE0FA202015CEDFF1FA26E5C16BFA2037F5B16FFA26F5BA36F90C9FC6F5A6F5A433D7DBC + 4A>I<003FB500C0011FB512E0486E4914F06F5BB617F8A36C19F04B7F6C4A6D14E0C690C93807 + F800A580017F4C5AA56E151F013F5FA316FCED03FF6E48EB803F011F5FA24B13C0A36D6C485DEF + E07F16DF16CF033F13F0A2010794C7FCDAF87F5C83168F168715FF01035E6E14FC160317FD14FD + A20101D9FE015B02FF14FFA24B7EA26D5EA24B137FA26E486D5ADA3FC0EB0FE0453D7EBC4A>I< + 001FB5D8E007B512F8486E4880484B8015F8A315F06C6F5C6C4A6C5C260007FCC7D83FE0C7FC6E + 4A5A6D6C14FF6D6D485B6D93C8FC6E6C485AEDE007DA3FF05B021F495A6E6C485AEDFC3F02075C + 6E6C485A6EB55A8094C9FC6F5A6F5A151F5E6F5A4B7E82153F4B7E92B5FC83913801FE7F4A486C + 7E02076D7E03F87F4A486C7E021F1307DA3FE07F4B6C7E027F6D7E4A487E4990C77F717E49486E + 7E494881010F151F4A6E7E003FB5D8C001B512FE486E4880B649158015F0A315E06C6F15006C4A + 6C5C413D7CBC4A>I<003FB500C090B6FC486E481580B65B03F016C0A303E016806C816C4A6C15 + 0026003FE0C7000190C7FC60131F6E1403010F5EA26E140701075E80170F01035E800101151F6E + 5DA26D153F6F5C147F177F6F5C143F6F13FF021F92C8FCA26F5A020F5CA2EDF80302075CA29138 + 03FC075F15FE14014C5AEC00FFA24C5AED7F9FA25FED3FBF16FF6F5BA36F90C9FCA2815EA21503 + 5E1507A25E150FA25E151FA25E153FA25E157F486C5CD80FF013FF487E4A90CAFC486C5A5D1407 + EC1FFCEC7FF890B5FC6C5C5D6C5C6C5C92CBFC000113FC6C5BEB1FC0425D7CBC4A>I<000FB912 + E04818F04818F8A619F001F0C8000713E04D13C04D13804D13004D5A4D5A4C5B6C484A5B6C484A + 5BC9485B4C5B4C90C7FC4C5A4C5A4B5B4B13E04B5B4B5B4B90C8FC4B5A4B5A4B5A4A5B4A5B4A5B + 4A5B4A90C9FC4A5AECFFFC495B495B495B4949EC07E04949EC0FF04990C8EA1FF8495A495A485B + 485B485B485B485B4890C9FC4890B8FCBAFCA66C18F06C18E03D3D7BBC4A>II<121EEA7F80A2EAFFC0B3B3B3B3B3AEEA7F80A2EA1E000A6E60E14A>II E /Fg 42 123 df[<96263FFFFC93387FFF80063FB600C0021FB512F8 + 0507B700F891B612FE053F04FF01076F7E4CB9D8C03F82040F72B812F0043F06F98393B626F800 + 1F90B6D8F8037F030392C70001DCC0077F4B02F86E6C4AC65A031F02C092B648497F4B91C84803 + F016804B494B4B5B92B500F84B5D4A4A4B4B4914C04A5C4A4A4B92C7FC4A5C94C95D5C4A4961A2 + 4A49761480A2754A6E140091B5775B4C70715B7B5B75715B759438007FC07595C8FCB3A4C212FC + AAC702FCCA02FCCBFCB3B3B3B0003FB800F0013FB9FCA99126E0001F9438E00007>146 + 142 123 269 136 11 D[159 141 120 268 176 65 D[144 139 120 266 166 I[<0803B500C0EE01F00703B600FEEE03F8 + 077FDBFFE015070607B800FC150F063FDDFF80143F4DBA00E0147F050F07F814FF053F07FE5B94 + BC6C5A0407755A4C9326F8000FECF00F043F4BC86C6D5A93B700E0030FEBFE7F03034BC9000190 + B6FC4B03F8707E4B03C0171F033F92CB12074B02FC8492B648844A03E0727E02074B854A92CD7E + 4A4A864A4A864A4A864D8691B64886494B875B494B8794CF7E495C498B5E498B495C8D90B65A8D + 5A5E488CA2485D227FA2485DA2223F5AA293D1FC5AFA1FF09FC7FCA25AA35DA3B6FCB37EA381A3 + 7EA46CF90FF070F51FF8A27EA2827EA36C6F1D3F23F07E826C217F23E06D8022FF6D6E1EC06D67 + 826D6E5213807F715113006D816D555A6D6F1B1F6E6E515A71515A6E6E1BFF6E6E505B6E6E505B + 6E03C04F5B02016F4F5B6E03F8073F90C7FC6F6E4F5A6F02FF4E485A030F03C005075B6F03F805 + 1F5B6F03FF057F5B030004E00303B51280043F03FE033F91C8FC040FDBFFF80107B55A7093B812 + F804001BE0053F1A80050F4FC9FC050119F8DD003F18E0060795CAFCDE007F16F8070393CBFCDF + 000314C0>141 143 115 268 168 I[157 139 120 266 179 I[138 138 120 265 153 I[127 138 120 265 + 146 I[<0803B500C0EE01F00703B600FE4C7E077FDBFFE015070607B800FC150F063FDDFF8014 + 3F4DBA00E0147F050F07F814FF053F07FE5B94BC6C5A0407755A4C9326F8000FECF00F043F4BC8 + 6C6D5A93B700E0030FEBFE7F03034BC9000190B6FC4B03F8707E4B03C0171F033F92CB12074B02 + FC8492B648844A03E0727E02074B854A92CD7E4A4A864A4A864A4A864D8691B64886494B875B49 + 4B8794CF7E495C498B5E498B495C8D90B65A8D5A5E488CA2485D227FA2485DA2223F5AA293D1FC + 5A7C5A9FC9FCA25AA35DA3B6FCB37EA36F061FB692387FFFF89DB8FCA27EA46C81A36C98C903F8 + C7FCA2827EA36C81A27E827E827FA26D806D80A26D807F836D816D816D8180836E806E14FF6E6F + 606E81020103F0606E816F02FE606F6E6C5F030F03E05F6F03F8177F6F03FF4CB7FC030004F003 + 0713FD043F03FF033F13F8040F04FC0107B5487E7093B8EAE01F0400517E053FF20003050F4F13 + 00050107F8143FDD003F06E0140F060795C81203DE007F04F8ED00F00703048093C8FCDF000302 + E0CDFC>157 143 115 268 183 I[165 139 120 266 182 I[75 139 122 266 88 I[163 + 139 120 266 182 75 D[121 139 120 266 140 I[204 139 120 + 266 221 I[<97B512F0077FECFFE0060FB8FC067F17E00507B912FE051F727E94BB12F004031A + FC040FDBF00015FF043F4AC7000715C093B600F0020015F04B0380031F8003074AC9000714FE4B + 02F8040180033F4A7015C04B02C0053F8092B64871804A92CB6C80020702FC060314FE4A4A7280 + 4A4A72814A4A7380A24A4A738091B64873804992CD6C80498C494A7480A2494A7480494A7481A2 + 498D4C86498D4C8790B68B4C87488EA2488E4C87488EA293CF7E488EA3482380A24B884823C0A5 + 4823E0A24B88A5B621F0B36C23E0A46F64A26C23C0A56C23806F64A26C2300A36C6F515CA36C6A + 70636C6AA26C6F515CA26D697098B6FC6DDE07FE617092267FFFC05C6D4DB500F8606D6E02076E + 4A92C7FC4F14FF6D6E4A6F495C6D4D6F5E6D6E91267FFC036D495C719028FFE0007FF05B6D6F02 + 80D91FF8495C6E4B90C76C6C5E6E02E0496E6C495C6E6E48486E6C90B65A6E02F8704992C8FC6E + 02FC4904835C6E02FE7001C75C6EDAFF8394B65A6E6C02C37015E06F02E3626FDAFBFC6F5D0307 + 02FF4FC9FC6F6F6003006F4B14F0043F03C00107B612C0040F03F0017F92CAFC040392B812FC04 + 001AF0053F07C01640050773ED01F0050073ED03F8060F84DE007F15E70700DAF0037F97C86E15 + 078B0EC0140F7A143F7702F814FF0EFE131F9DB7FCA112F089A47817E0A38AA112C0A2781780A3 + 781700A2785E6B8A785E6B8A795D795D795D794AC7FC795C0D0114F0796C13C0E60FFEC8FC> + 149 180 115 268 175 81 D[165 141 120 266 175 I[<93260FFFF8163E4BB600E0157F031F + 03FE5D037FDBFFC05B4AB800F05B020F05FE5B4A716C5A027F725A91BAEAF03F01039126FE000F + 6E5A4902C0D9003F01FEB5FC4991C8000790B6FC4901FC15004901F0163F4949160F90B5481603 + 4B824891CB7E4849848748498487484984A2488687485B88A24887A288A288B57EA38880A2806E + 85A2818115F06F725A6C6E95C8FC15FF16E016FC6CEDFFE017FEEFFFF06CEFFF8019F8F1FFC06C + 19FCF2FF806C1AE06C1AF81BFE6C747E6C1BE0886D866D1AFE6D866D876D876D876D876D7E6E86 + 020F866E8614016E6C85151F03031A80DB003F19C01601EE001F050018E01807DE007F16F01903 + F1003F080F15F81A031A008787090F14FCA287D83F8085486C8512FF87A288A46D86A21EF8A27F + A36D1CF0A27F5213E07FA26D1CC06E96B5FC6E1B806E606E1B006E6002FE4E5B6E6203C05F03F0 + 4D5B03FC057F5BDBFF8093B55A04F803035CDCFF80021F5C6E02FF49B6C7FC496C92B75AD9FC0F + 61D9F80319F049C66149013F18804901074DC8FC49010017F890C8001F16C04803004BC9FC007C + 04011480>102 143 115 268 129 I[<000FC312F8A6488EA404E0C7003F4AC7120303FCC8F000 + 1F03E01C0392C9F1007F4A8A02F81E0F4A8A4A8A4849787F4A8A91CA1B7FA249203FA249201FA3 + 49200FA3492007007F8EA4498CA848487A1380A6CC98C8FCB3B3B3B3A6031FBD12FCA90780C8FC + >145 137 120 264 162 I[230 140 123 266 241 87 D<93387FFFFE031FB612F84AB8FC020F17E0023F17F84A17 + FF49BA7E499126F0003F14E04901FCC700078049040114FC496D6E6C7F6F6F7F497180706E8073 + 804980738088858885A2886D5C866D91C9806D5B6D5B6D5B6D5B9038007FC091CBFCA796B7FC05 + 07B8FC0403B9FC167F0303BAFC153F4ABBFC0207EE007F023F15C091B600FCC7FC010315E04992 + C8FC011F14FC4914F04914C090B65A484AC9FC485C485C485CA2485C485CA25A5DA2B6FC92CAFC + A497B6FCA361816C60A26C6E5D6FED0FEF6C061F816FDB3FCF14E06C6EDB7F8F14FC6C02FE9126 + 01FF0F91B512806C6E02077F6C03C0D91FFE17C06C923AFC01FFF803013F91B612F0010F4D7E01 + 03943880007F01004CC77E021F03F802071580020103E0EC007FDA000349CDFC6A5D7ADB71>97 + D[113 142 121 268 129 I<94387FFFF8041FB612E093B712FE0307EEFFC003 + 3F17F092B97E020318FE4A84021F9126F8001F14804A02C0010014C091B548C74814E0494A5C49 + 02F017F0494A5C495C494A4A14F84991C8FCA2495B90B55A5AA2485C7314F0485C7314E0487214 + C0731480484A701300745AF20FF84896C8FCA3485CA5B6FCB07EA281A37EA36C80A36CF201FE6F + EF03FF7EA26C6E5F6C1BFE6F170F6C1BFC6F171F6D6EEE3FF87F6D6EEE7FF06D6EEEFFE06D6E15 + 036D02FC4B13C06D6E031F13806D6E6C027F13006E02F049485A021F02FF013F5B6E92B612F002 + 036002001880033F4CC7FC030716F8030016C0041F4AC8FCDC007F13C0585D78DB67>I[113 + 142 120 268 129 I<94383FFFE0040FB6FC93B712F0030716FE033F707E92B912E0020318F802 + 0FDAFC01804A9126C0001F13FF027F91C700078091B500FC020180494A6E804902E06F7F494A6F + 7F494A6F7F4991C97E49727F4949844B8290B51A8048854B19C04885484A19E0A248861DF0485C + A27513F85AA3485CA21DFCA287B6FCA392BBFCA51DF8A203C0CDFCA67EA381A27EA37EA2817EF4 + 07F86C80F40FFC7E6C6E181FA26C6EF03FF86D1A7F6F19F06D6E17FF6D6E4C13E06D6E4C13C06D + 6E040F13806D6E5E6D02FE047F13006D6E6C4A485A6E02E002075B021F02F8023F5B6E9126FFC0 + 07B512E0020392B75A020096C7FC033F5F030F17F8030117C0DB003F4BC8FC040315E0DC000F01 + FCC9FC5E5D7ADB6B>I[81 142 121 269 71 I<52B47E93260FFFFC031F13F04BB600 + E0027F7F031F03FE0103B57E92B8D8C00F800203DDF01F80020FDDFC7F1580023F94B6123F4ADA + 003FDBF07F13C091B500F801071580010302E00101ECFE004902806D6C01F890B5FC4991C86C6D + 7F49496F7FA249496F6D158049747E4B6F6F130090B5736C5AF507F8489838E000E04B6F93C7FC + 4887A34887AB6C63A36C636F5D6C63A26D626F5D6D97C9FC6D6D4B5BA26D6D4B5B6D6E4A5B6D02 + E049B55A010002F8010714C04902FF013F5C4992B7CAFC4918FC02F317F0D90FF017C0DAE01F4B + CBFC011F010115E0DB000F01FCCCFC013F91CFFCA3137FA480A28080A214FF8115F092B812F06D + F0FFE01BFEF3FFC06D1AF81CFE6D747E1DE06D87896D876D876D876E8791BD7E010788131F017F + 8890BEFC000302E0C9003F814891CB7E4801FC18074A0601804849727E4849191F4A85488988B5 + 5A88A66E616C65A26E616C656E616C6D4F5B6C6D4F5B6E96B5FC6C6D4E5C6C02C005075C6C02F0 + 051F91C7FC6C6C01FC057F13FC6DD9FF800303B55A010F02F0031F14E06DDAFFC00107B65A0101 + 92B9C8FC6D6C19FC020F19E0020196C9FCDA003F17F8030194CAFCDB000192CBFC6A857ADB74> + I[114 141 119 268 129 I[49 + 142 119 269 65 I[111 141 121 + 268 123 107 D[50 141 119 268 65 III<94381FFFF00407B612C0047F15FC0303B87E + 031F17F0037F17FC4ABAFC02079126FC007F14C04A02C0010780023F49C814F84A01F8033F7F91 + B5486F7F494A6F7F4902800303804991C96C804987494970804949717F498790B548717FA2484A + 717FA2481D80484A7114C0A2481DE0A3481DF0A24B83481DF8A3481DFCA5B61BFEAF6C1DFCA56C + 1DF86F5FA26C1DF0A36C1DE06F5F6C1DC0A26C1D806F5F6C1D006C6E4D5BA26D6D94B55A6D6D4C + 5C6D6E4B5C6D6E4B5C6D6E4B5C6D6E4B5C6D02FC037F91C7FC6D6E92B55A023FD9FFC0010714F8 + 6E02FC017F5C020791B812C0020196C8FC6E6C17FC031F17F0030717C0DB007F03FCC9FC040715 + C0DC001F01F0CAFC675D7ADB74>II114 + D<92261FFFF8EB01F00207B638C007F8023FEDF81F91B7EAFE7F010393B5FC130F013F9038F800 + 1F4990C71201D9FFF8EC003F4801E081484915074849814890C97E4982121F197F485A193F127F + A2191F12FF7FA27F80806E705A02F893C8FC14FF15E06C14FEEDFFF8EEFFE06C16FF18F018FC6C + EFFF806C18E0856C18FC6C846C727E6C856D84011F846D841303010084023F83140F020183DA00 + 1F1780ED007F1601DC000F15C01700181F060714E0D83F801601486C8200FF84856D83A285A26D + 83A26D19C0A37F6D1980617F6E1800616E5F6E163F6E4C5A02FC4C5A6E4B5B6E6C02075B03F002 + 3F5B03FF0107B55A93B7C7FCD9FC7F16FCD9F03F16F0D9E00F16C0D9800193C8FC90C7003F14F8 + 007C020349C9FC4B5D78DB5C>I[73 130 124 256 + 91 IIIIII<0003BC12F0 + 1CF81CFCA41CF80480C7123F03F0C84814F04802C092B612E092C915C002FC5D4A4B15804A4B15 + 004A60604A4B5C4A4B5C4E5CA291C9B65A4D5D4D5D5B4D92C7FC4D5C000F4C5CA24D5C494B5C94 + B65A625E4C5D4C92C8FCC95D5E4C5C4C5C4C5CA293B65A4B5D4B5DA24B92C9FC4B5C4B5CA24B4A + EC0FFC4B5C92B65A605C4A4BEC1FF84A92C8FC5F5C4A5C4A5C4A5C1B3F91B65A495D494B16F01B + 7F4992C9FC495C494A16FFA2494A5D495C90B6485D62484B5D484B4B13E04892C95A4B5E484EB5 + FC484A1507484A153F4B0207B6FC4891BAFCBDFCA21CC0A37E7E565A7AD967>I + E /Fh 61 124 df11 DI34 D39 DI<126012F012787E7E121F6C7E6C7E6C7E6C7E6C7E7F137E + 7FA26D7E6D7EA26D7E801303806D7EA26D7EA2147FA26E7EA36E7EA281140FA281A2140781A36E + 7EA4811401A481A280A61680B3A41600A65CA25DA414035DA44A5AA35D140FA25DA2141F5DA24A + 5AA34AC7FCA214FEA2495AA2495A5C13075C495AA2495A49C8FCA2137E5B5B485A485A485A485A + 48C9FC121E5A5A5A1260218C78E837>I44 DII<157815F814011403140F143F14FF + 130790B5FCB6FC143F13F81300C7FCB3B3B3B34A7E4A7E0107EBFFC0B812FEA42F5D74DC46>49 + DI<913803FFC0023F + 13FC49B67E902607FE0113E0903A0FE0007FF0D93F80EB1FFC017EC76C7E496E7ED801F06E7F49 + 8200036F7FEA07FC6D826D80486D8180A66C5BA26C90C8FCD800FC5E90C85AA260A24C5BA2604C + 90C7FCA24C5A5F4C5A4C5AEE7FC04C5ADB03FEC8FCEDFFFC027F13E016FCEEFF80DA000113E06F + 6C7EEE1FFC707E707E707F707F707F84717EA284717EA38483A21980A3EA0FE0487E487E487E48 + 7EA31900A25F5B606C5A494B5A13C0003EC95B4D5A7E6C6C4A5B6C6C4A5BD803F05ED801FC4A90 + C7FC6CB4EC1FFED97FC0495A903A1FFE01FFF06DB612C0010392C8FCD9007F13FC020713C0395F + 7ADC46>I<171E173E177EA217FE1601A216031607A2160F161FA2163FA2167F16F7A2ED01E7ED + 03C7A2ED0787ED0F07A2151E153CA2157815F0A2EC01E0140315C0EC0780140F1500141EA25C5C + A25C495AA2495A495AA249C7FC131EA25B5BA25B12015B485AA2485A48C8FCA2121E5AA25A5ABA + 12F8A4C9D80FFEC7FCB14C7EA293B512E00203B712F8A43D5E7CDD46>I<01C0ED01C0D801F015 + 0701FE153FD9FFC0903801FF8002FE011F130091B65A5F5F5F5F5F5F4CC7FC16F801E714E001E0 + 49C8FC91CAFCB3913801FFC0020F13F8027F13FF9026E1FF007FD9E3F8EB3FE0D9E7C0EB0FF001 + EFC76C7E01FE6E7E4981496E7E496E13804916C06C48157F90C913E0A2EF3FF0A218F8A218FC17 + 1FA318FEA5EA0FC0EA3FE0487E7F12FF7FA318FC5B173F4916F86C5A90C9FC007CEE7FF0A2003C + 17E0003E16FF6C17C04C13806C7E6C6C4A13006D4A5A6C6C4A5A6C6C4A5AD800FEEC7FF0903A7F + 8001FFC090261FF8075B6DB548C7FC010314F8010014E0DA0FFEC8FC375F79DC46>I<923801FF + C0031F13F8037F13FE913901FF80FF913A07FC001F80DA1FF0EB07C0DA3FC06D7E4A486D7E4AC8 + FC4948EC01784948EC0FF849484A7E4948143F011F157F495A495AA2495A5A715A4890C86C5A71 + 5A4893C8FC5B120FA3485AA3123FA3485AED7FE0913803FFFE4A6D7E91391FC07FE091393E001F + F000FF49EB07F802F06D7E4A6D7E01F96E7ED9FBC0814A6E7E01FF6F7E91C87F8449151F84A284 + 5B717EA4491780A2127FA7123FA27FA3001F1800A3120F4D5A7F12076012036D4B5A6C5F806C4C + 5A6D6C4A5A013F5E6D6C4990C7FC6E495A6D6C495AD903FEEB1FF86D6C6CB45A6D90B512C0023F + 91C8FC020F13FC020113E0395F7ADC46>I<913801FFC0021F13F8027F13FF902601FF807F903A + 03FE003FE0D90FF8EB0FF049486D7E49486D7E49486D7E4948804890C87F48167F49821207000F + 707E5B001F83003F161F845B007F83A400FF83A2170FA284A71980A2127F5FA3123F7F5F121FA2 + 000F5E6C7EA2000393B5FC6C6C15EF6C6D1301017FEC03CF6D6C148F6D6C13076D6CEB1F0FD907 + FC013E1400903903FF01FC0100EBFFF0023F13E00203130091C8FC4D5AA460A34D5AA260A2D803 + F84B5A487E486C5E486C15FF605E95C7FC4C5AA2494A5A494A5A6C484A5A01C05D00074B5A6DEC + FF806C6C4990C8FCD801FCEB07FE3A00FFC03FF86DB55A011F14C0010749C9FC9038007FF0395F + 7ADC46>57 DII65 D68 DIIIII76 + DIII<001FBDFCA49126E0000301FCC7FC4848C76C49020F138001F86E49140301E01900491A + 7F491A3F1C1F90C9FC003E1B0FA3003C1B07007C1CC0A300781B03A748F301E0A5CA94C7FCB3B3 + B3A34C7F4C7F043FEBFFC0020FB9FCA45B5F7BDE66>84 DII<003FB7021FB612F0A4D8001F02F0020302FCC7FC010302C0020014C0010091C9D8 + 3FFEC8FC4B705A027F18F0023F606E6C705A705E6E4DC9FC6E7F70153E6E5F6E7F705D6E4C5A6F + 7E704A5A033F4B5A6F7E71495A6F4BCAFC836F6D133E6F5D836F6D5B6F4A5A17FC706C485A043F + 495A05FF5B70130F70019FCBFC18DE7013FE705B60828284177F717E848385855F4D7F057B7F17 + F9DC01F07F4D7F0403137F4C486C7E05807F040F7FDC1F0080041E6D7F043E7F4C8104786D7F04 + F87F4B48814C7F03036F7E4B48814C143F030F6F7E4BC880031E81033E6F7F4B8303788103F86F + 7F4A48834B810203717E4A48834B163F020F717E021F85023F83027F717F02FF85497F01074E7F + 013F01F0043F13FC0003B500FC93B67EB76C020FEDFFC0A462607DDF69>88 + D<010CEC0180011EEC03C049EC078049EC0F0049141E49141C0001153C48485C48485C90C85A48 + 1401000E5D001E1403001C5D003C1407003892C7FCA200785C0070140EA300F0141E48141CA5D8 + E3F8147FD8E7FCECFF80D8EFFE011D13C0B5011F13E0028014F0A26C80A36C80A26C496C13E06C + 486D13C06C486D13806C48EC7F002C2A6CE146>92 D97 + D<14F8EA07FFB5FCA41201EA007F133F131FB3A9EE7FF00303B5FC030F14C092393FC03FF09239 + 7E000FFC03F8EB03FEDAFBF0EB00FFDAFFC06E7E4BEC3FE092C8121F4A82727E4A82727E5C727E + 1A80A2841AC0A21AE0A284A21AF0AC1AE0A3601AC0A31A80601A00A24E5A6E5E180F6E4B5A616E + 4B5ADAEF804A5ADAE7C04A5ADAC3E04990C7FCDAC1F8EB07FCDA80FCEB1FF8913A003F80FFE06F + B51280011E010749C8FC90C813E044637CE14E>I + II<913801FFC0020F13FC027F13FF + 902601FF8113C0903A03FE003FE0D907F8EB0FF0D91FF06D7E49486D7E49486D7E4948804890C8 + 1380A24848ED7FC012074916E0000F163F121F4916F0A2003F161FA2127F18F85BA312FFA290B8 + FCA301F0CAFCA7127FA37F123FA3001F17787F120F18F86C6C16F0000316016D16E06C16036C6D + EC07C06D6C15806D6C140F6D6CEC1F006D6C147E6D6C5CD901FFEB03F06D9038E03FE0023FB512 + 80020749C7FC9138007FF035407CBE3E>II< + F01FE0DA07FFECFFF0023FD9E00313F891B539F80FF0FC0103903A07FE1F81FE903B0FF800FFBE + 01494890387FF803494890383FF0014948131F494890390FF800FC19784890C76C6C13004882A2 + 48824980A2000F83A9000794C7FCA26D5C6C5EA26C5E6C6D495AA26D6C495A6D6C495A6E495A49 + 6C495A902773FF07FEC8FC01F0EBFFF8023F13E02601E00790C9FC91CBFCA21203A47FA27F1201 + 13FE6D7E6C90B67E17FC6DEDFF806D16E06D16F86D824982017F824848C81480D803FC030713C0 + D807F0030113E04848ED007F4848EE1FF04848160F127F90CAEA07F8A200FE1703A66C17076C18 + F06D160F003F18E06C6CEE1FC06D163F6C6CEE7F80D803FC923801FE006C6C4B5A2600FFC0EC1F + F8D93FF0EC7FE0903B0FFF800FFF80010390B548C7FCD9003F14E0020101FCC8FC3F5C7CBE46> + I<14F8EA07FFB5FCA41201EA007F133F131FB3A9EE1FFC93B57E030314E092390FF03FF092391F + 800FF892393E0007FC03786D7E4B80DAF9E07FDAFBC0815D14FF92C8FC855CA25CA45CB3B2496C + 4A7F90B5020713F8B70007B612F8A445627BE14E>I<131FEB7FC0497E487FA2487FA56C5BA26C + 5B6D5A011FC7FC90C8FCB214F8EA03FF127FA41201EA003FA2131FB3B3AB497E90B5FCB612FEA4 + 1F5F7CDE27>I<153EEDFF804A13C04A13E0A24A13F0A56E13E0A26E13C06E1380ED3E0092C7FC + B2ED03F0EC1FFF0103B5FCA4EB00031400157F153FB3B3B3AAEA1FC0486C14E0486C137F487EA2 + 16C015FF168016006C48485A13E06C48485A6C48485A390FF01FE06CB55A000191C7FC38001FF8 + 247B86DE2B>I<14F8EA07FFB5FCA41201EA007F133F131FB3AA0407B6FCA4040014E07190C7FC + EF3FFC18F06018804DC8FC177E5F4C5A4C5AEE07C04C5A4CC9FC167E5E4B5A4B5A1507150F4B7E + 4B7E157F4B7E9138F9F7FFECFBE7DAFFC37F03817F15014A6C7F4A6D7E5C4A6D7E707EA2707E70 + 7EA2707F707FA2707F717EA2717E717EA2717E848585496C82D9FFFE023F13F8B6D8FE01B612E0 + A443627CE14A>I<14F8EA07FFB5FCA41201EA007F133F131FB3B3B3B3AB497E90B5FCB7FCA420 + 627CE127>IIII<02F8EB7FF0D807FF + 0103B5FCB5010F14C092393FC07FF092397E000FFC03F8EB03FEC6D9FBF06D7E90263FFFC06D7F + 6D49EC7FE092C8123F4A82727E4A82727E5C727E1A8084A21AC0841AE0A47213F0AC1AE060A31A + C060A21A80601A00A24E5A6E5E181F6E4B5A616E4B5A6F4A5A6F495BDAFBE04990C7FCDAF9F8EB + 07FCDAF8FCEB1FF892393F80FFE06FB51280030749C8FC030013E093CAFCB3A2497E90B5FCB7FC + A444597CBD4E>III<903A01FFE00380011FEBFC07017FEBFF0F3A01FF803FDF3A03F80007FFD8 + 07E0130148487F4848147F48C8123FA248151F127E160F12FEA216077EA27FA213E06D91C7FCEA + 7FFCEBFF806C13FCECFFE06C14FE6C6E7E6C15E06C816C816C6C80011F80010780D9007F148002 + 0314C0EC001F030713E015010070EC007F00F0ED3FF0161F7E160FA216077EA37E17E07E160F6D + 15C0A26DEC1F806DEC3F006D147E486C5CD8FC7EEB03F83AF83FC01FF0010FB512C0D8F00391C7 + FC39E0007FF02C407BBE37>I<143CA6147CA514FCA31301A21303A21307130FA2131F133F13FF + 1203000F90B61280B8FCA326000FFCC8FCB3AEEE01E0AD010714036E14C0A213036EEB07807F92 + 38800F007F91387FC01E91383FF07C91380FFFF802035B9138007FC02B577DD537>I<02F8ED07 + C0D807FFED3FFFB50207B5FCA40001ED000FD8007F1503013F81011F81B3B15FA45FA2130F5FA2 + 6D6C5C171E01034B7F6E4A7F6D6C02F813FC6D90268003F0EBFFF891397FF00FC0021FB55A0207 + 495A9126007FF8ECC000453F7BBD4E>IIIII<000FB812E0A39126C0000113C001FCC75A01F04A138048481600494A5A4914 + 1F5F90C8485A167F5F001E4B5A5D4B5B5F003E4A90C7FC003C5C5E4B5A153F4B5AC85B4B5A5C5E + 4A5B5C4A90C8FC5D141F4A5A5D4A5A02FFEC01E05D495B5B495B92C7FC4948EC03C0131F5C495A + 137F495A4A1407485B5A4A140F4890C8FC48161F49153F4848ED7F80003F16FF4848140349143F + B9FCA3333D7CBC3E>II E /Fi 15 116 df[<0A07B500E0183F0907B7 + 6C5F50B800F8933801FF80083F05FF5E4FBA00E05D071F07FC5D96BC5D060709C05C061F09F05C + 95BD00FC91B5FC05030AFF1303050F9426F80007EDC007053F04FCC8003F6E5A94B800800303EC + F81F4C04FCCA6C6D5A040704E0051F6D5A4C93CB000790B7FC043F03FC18014C03F0727E4BB700 + C0854B93CD120F4B4B864B03F886033F4B1A004B4B8792B70080874A93CF7E4A4B884A4B884A4B + 884E884A5D4A4B884A8D91B7488995D1FC498E494B8A5F498E495DA17E495D498EA2494B8AA290 + B75AA17F5A5FA17F5A94D3FC48A17EA35A5EA17F5AA34C7A13005AA190C8FCA35AA45EA3B7FCB3 + A37EA382A47EA47E82A149B4FCA26CA1481380A2827EA36C82A15B7EA11500837EA15B6D81A15C + 6D6F1F1FA27F6D6F555AA26D6F1F7F6DA15A711FFF6D6F686D6A72676E6F656E6F535B6E575B6E + 6F65729CC7FC6E6F535A6E6F1D7F6E6F535A6E7009035B6F03E0515B6F6F515B030F6F515B6F03 + FE097F5B6F6F6C97B5C8FC6F7007035B6F6C03F0070F5B7003FC073F5B040F03FF96B55A7004E0 + 05035C040104FC051F148070DCFFC093B6C9FC053F04FC030F14FC050FDCFFF80103B65A050394 + B912E005001D80061F51CAFC06071BF806001BE0071F97CBFC070119F8DF003F18C008014DCCFC + E0000716C0E1000702E0CDFC>169 171 112 296 202 67 D[165 166 118 293 184 69 D[<0A03B500E0F01F8009 + 07B76C173F50B800FCEFFFC0081FDDFF805D4FBA00F05D070F07FE5D077F736C5C0603BC00E05C + 061F09F85C067F09FE5C4DBE6C48B5FC050F9426F800036F5A4D04FCC8001FECF007057F04C003 + 016E5A4CB700FCCA6CEBFE1F040704E0050F6D5A4C0480050391B6FC043F03FCCCFC4C03F08593 + B700C0191F03034C854B4BCD12034B4B864B03F0864B4B1B3F92B748874A93CF7E4A4B884E884A + 4B884A4B884A5D4A8D4A4B8991B7488995D1FC498E494B8AA2494B8A495DA17E495DA17E5B494B + 8BA290B75AA17F5A5FA17F5AA24893D37EA35A5EA17F5AA34C7A5B5AA190CAFCA35AA45EA3B7FC + B3A37EA382A20C07B500FE94380FFFF89EBBFC7EA46C81A47E9BCA04C0C7FC827EA36C82A27E83 + A27E837FA26D817F837F837F6D81A26D816D82A26E816E816E816E816E816E81846E70626E8203 + 3F816F03F8626F816F03FF626F7061030004E0617003F8617003FE96B8FC040FDBFFC05F7004F0 + 1707040104FE051F5B706CDBFFE0047F497E051F04FF0307B5487E7105FE91B6487E050194B9EA + E007716CF4C001061F99C7FC060309FC143FDE007F08F0140F070F08C0140307014FC9FCDF001F + 06F0EE3F80080106801607E0000704F0CEFCE1000302F8CFFC>189 171 + 112 296 220 71 D[198 167 118 294 219 78 D[198 169 118 294 210 82 + D[194 169 118 294 215 85 D<94B67E93B712FE030FEEFFE0037F17FE0203 + BA12C0020F19F0023F19FC4A19FF91BC12C0499226C0001F15F04902E0C7000181496E6E6C8070 + 031F80496E6F8049060381706F817481496E858775808A878A878AA275816D5CA26D5C75816D5C + 6D5C6D5C6D5C023F90CAFCEC07F891CCFCA81B0F071FB8FC061FB9FC0507BAFC94BBFC160F93BC + FC1507033F17C392B8EA80030207EEE000021F4BC7FC027F15F091B7128001034BC8FC4915F001 + 1F15C0495D494AC9FC90B65A485D4815E05E5A485D4892CAFC5D5A5D5AA25DA2B6FC5DA363A463 + 81637E6F5F636C6E18BF6F17FF6C0703133F6C6F4B8204E0DB0FFE816C6FDB3FFC15FC6C6F4B48 + 6CECFFC06C03FE912603FFF0EEFFF86C6F6C010F01E017FC6DDBF801B5486C16FE011F92B71280 + 6D4F7E010306FC7F01004E1300021F05E08002030580141FDA007F03FCC8000315FC030703E0DB + 001F14F8DB000701FCCEFC7F6F78ED88>97 D<061FB57E050FB77E94B812F8040717FF043F18E0 + 93BA12F8030719FE031F854B8692BC7E02034BC76C804A03E00207804A03805C023F4AC848804A + 02F88491B6485D495D4903804B804992C9FCA2495C495C495CA2495C90B6FC5E48745C5A4C705C + 5A755C484B705C755C755C48746C48C7FC93CBEA0FF099C9FC5AA45A5DA4B6FCB27E81A47EA382 + 7EA36C81A26CF5FF80826C5213C0A26C6F60A26C6F4E13807F704E13006D806D515A70183F6D6F + 4D5A6D6F4D5A6D6F5E6D03F84C5B6D6F040F5B6E02FF4C5B6E03C0157F6E03F04AB55A020703FC + 020F49C7FC6E9226FFE001B55A020093B75A6F61031F19C003076103014EC8FCDB003F17F00407 + 17C004004CC9FC050F15E0DD001F01F8CAFC6A6F77ED7C>99 D[137 170 119 296 155 I<95383FFFF8050FB612E094B712FE0407EEFFC0043F17F04BB912 + FE0307727E031F85037F19F092B626FC007F80020303C0010714FE4A92C7000180021F02FC6E6C + 804A02F0031F804A4A6F8091B6486F80494B6F804992C97E494A7080494A717F5B494A717F4C71 + 14805B90B6487114C0A2485D7614E05A4C1AF04887A25A93CB15F8885AA21FFC5AA24B84A25A1F + FEA4B6FCA292BDFCA61FFC1FF84BCFFCA67EA5817EA37EA36C81A36CF503F870F107FC6CF50FFE + A26C811E1F6C816DF43FFC70197F6D1DF86D6E19FF704E13F06D6E606D6F4D13E06D6F4D13C06D + 6F5F6D6F057F13806E6E94B512006E02FE04035B6E6E6C030F5B020703E0037F5B6E03FC0207B5 + 5A0200DBFFE090B65A6F92B81280031F97C7FC030719FC030119F06F6C18C0040F95C8FC040117 + F8DC003F16C0050103FCC9FCDD000791CAFC6F6F78ED80>I[<96381FFFF0060FB6FC95B712C005 + 0716F8053F8294B9FC04031880040F18C0043F18E093B6D8FE0114F04BDBE00314F84BED80074B + DAFE0015FC4B4A5B4B02F04914FE4B5C4B4A16FF92B6485BA24A92C7FC5C5F5C5F5CA24A4A6E14 + FEA27414FCA24A4A6E14F87414F07414E07414C0093F1300F30FFC98C8FCB3A8BCFCABC7003F02 + F8CBFCB3B3B3B3AE007FBA12C0AA91C97E>96 170 118 297 85 I109 DI<4BB46CEC3FFE013FB64AB512E0B8020F14FC073F14FF96B7 + 12C04E824E16F84E824E824EEBE07F4E0100B6FC95267FFC011580F0FFF0D8000F4D4815C00101 + 038113C06D0383494815E019006EEC87FE60EF8FF8A2EF9FF06017BF607415C017FF4E6D1580A2 + 95C81500755B755B4D6F5B090713E0090090C7FC4D93C8FCA55FA75FB3B3AFBB7EAA49C9FC636D + 78EC73>114 D<93263FFFFCEC07E0031FB600F0131F92B700FEEB7FF002079338FFC1FF023F94 + B5FC91BBFC1303130F499138E0000F4901FCC87E4901E0150F90B5008015034849CAFC48498348 + 01F0171F86484983484983A248855CA24885A31B7FB57EA28080806E725A806E6C94C8FC15E015 + FCEDFF8016FC6CEDFFF0EFFFC018FE6CEFFFF019FE6CF0FFC01AF86C19FE6C737E876C1AF06C86 + 6C866D19FF6D866D866D860103867F6D6C85021F851407020085031F841501DB000F1880EE003F + 1701DD000716C0F0007F190F070115E0737ED83FC084007F190F486C84866D8486A2877FA26D85 + A26D1BC0A27FA26E1A8063806E1A006E95B5FC6E616E5F6E4D5B6E4D5B03C05E6F4C5B03F8047F + 5B03FE4BB55ADBFFC0020F5C04FE49B6C7FC93B85A1BF8020F60496C18C0D9F80195C8FC9026F0 + 003F16F801C0010716C06C4801004BC9FC007EC8000791CAFC5B6F77ED6E>I + E end + %%EndProlog + %%BeginSetup + %%Feature: *Resolution 1016dpi + TeXDict begin + + %%EndSetup + %%Page: 1 1 + 1 0 bop 268 -542 a Fi(GNU)92 b(Emacs)h(Reference)g(Card)1561 + -313 y Fh(\(for)46 b(v)l(ersion)j(19\))0 110 y Fg(Starting)77 + b(Emacs)0 454 y Fh(T)-12 b(o)47 b(en)l(ter)h(GNU)g(Emacs)g(19,)f(just)g(t)l + (yp)t(e)h(its)f(name:)63 b Ff(emacs)0 681 y Fh(T)-12 b(o)47 + b(read)h(in)f(a)g(\014le)g(to)g(edit,)g(see)i(Files,)e(b)t(elo)l(w.)0 + 1083 y Fg(Lea)-6 b(ving)77 b(Emacs)0 1427 y Fh(susp)t(end)49 + b(Emacs)e(\(or)g(iconify)h(it)f(under)h(X\))684 b Ff(C-z)0 + 1596 y Fh(exit)47 b(Emacs)h(p)t(ermanen)l(tly)1555 b Ff(C-x)73 + b(C-c)0 1998 y Fg(Files)0 2341 y Fe(read)46 b Fh(a)h(\014le)h(in)l(to)f + (Emacs)1663 b Ff(C-x)73 b(C-f)0 2510 y Fe(sa)l(v)l(e)46 b Fh(a)h(\014le)g + (bac)l(k)h(to)f(disk)1619 b Ff(C-x)73 b(C-s)0 2679 y Fh(sa)l(v)l(e)48 + b Fe(all)h Fh(\014les)2297 b Ff(C-x)73 b(s)0 2848 y Fe(insert)47 + b Fh(con)l(ten)l(ts)h(of)f(another)h(\014le)g(in)l(to)f(this)g(bu\013er)227 + b Ff(C-x)73 b(i)0 3016 y Fh(replace)49 b(this)e(\014le)g(with)g(the)g(\014le) + g(y)l(ou)h(really)g(w)l(an)l(t)332 b Ff(C-x)73 b(C-v)0 3185 + y Fh(write)47 b(bu\013er)g(to)g(a)g(sp)t(eci\014ed)i(\014le)1251 + b Ff(C-x)73 b(C-w)0 3587 y Fg(Getting)k(Help)0 3931 y Fh(The)47 + b(Help)h(system)g(is)f(simple.)64 b(T)l(yp)t(e)47 b Ff(C-h)g + Fh(and)g(follo)l(w)g(the)g(directions.)64 b(If)0 4099 y(y)l(ou)48 + b(are)f(a)g(\014rst-time)h(user,)g(t)l(yp)t(e)f Ff(C-h)73 b(t)47 + b Fh(for)g(a)g Fe(tutorial)p Fh(.)0 4327 y(remo)l(v)l(e)i(Help)f(windo)l(w) + 1770 b Ff(C-x)73 b(1)0 4496 y Fh(scroll)48 b(Help)g(windo)l(w)1883 + b Ff(ESC)73 b(C-v)0 4723 y Fh(aprop)t(os:)64 b(sho)l(w)47 b(commands)i(matc)l + (hing)f(a)g(string)338 b Ff(C-h)73 b(a)0 4892 y Fh(sho)l(w)47 + b(the)g(function)h(a)f(k)l(ey)h(runs)1270 b Ff(C-h)73 b(c)0 + 5061 y Fh(describ)t(e)49 b(a)e(function)1884 b Ff(C-h)73 b(f)0 + 5229 y Fh(get)47 b(mo)t(de-sp)t(eci\014c)j(information)1232 + b Ff(C-h)73 b(m)0 5632 y Fg(Error)78 b(Reco)-6 b(v)g(ery)0 + 5975 y Fe(ab)t(ort)46 b Fh(partially)i(t)l(yp)t(ed)f(or)g(executing)i + (command)264 b Ff(C-g)0 6144 y Fe(reco)l(v)l(er)45 b Fh(a)i(\014le)h(lost)f + (b)l(y)g(a)h(system)g(crash)487 b Ff(M-x)73 b(recover-file)0 + 6313 y Fe(undo)46 b Fh(an)h(un)l(w)l(an)l(ted)h(c)l(hange)1403 + b Ff(C-x)73 b(u)h Fh(or)g Ff(C-_)0 6481 y Fh(restore)48 b(a)g(bu\013er)f(to)g + (its)g(original)h(con)l(ten)l(ts)388 b Ff(M-x)73 b(revert-buffer)0 + 6650 y Fh(redra)l(w)47 b(garbaged)i(screen)1607 b Ff(C-l)0 + 7052 y Fg(Incremen)-6 b(tal)77 b(Searc)-6 b(h)0 7396 y Fh(searc)l(h)49 + b(forw)l(ard)2152 b Ff(C-s)0 7564 y Fh(searc)l(h)49 b(bac)l(kw)l(ard)2040 + b Ff(C-r)0 7733 y Fh(regular)48 b(expression)i(searc)l(h)1515 + b Ff(C-M-s)0 7902 y Fh(rev)l(erse)49 b(regular)f(expression)i(searc)l(h)1045 + b Ff(C-M-r)0 8129 y Fh(select)48 b(previous)h(searc)l(h)g(string)1326 + b Ff(M-p)0 8298 y Fh(select)48 b(next)g(later)f(searc)l(h)i(string)1241 + b Ff(M-n)0 8467 y Fh(exit)47 b(incremen)l(tal)i(searc)l(h)1631 + b Ff(RET)0 8636 y Fh(undo)47 b(e\013ect)h(of)g(last)f(c)l(haracter)1334 + b Ff(DEL)0 8804 y Fh(ab)t(ort)47 b(curren)l(t)h(searc)l(h)1802 + b Ff(C-g)0 9032 y Fh(Use)58 b Ff(C-s)e Fh(or)h Ff(C-r)f Fh(again)i(to)f(rep)t + (eat)h(the)f(searc)l(h)h(in)f(either)h(direction.)93 b(If)0 + 9200 y(Emacs)48 b(is)f(still)g(searc)l(hing,)j Ff(C-g)c Fh(cancels)j(only)f + (the)f(part)g(not)g(done.)436 9427 y Fd(c)405 9430 y Fc(\015)38 + b Fd(1993)g(F)-9 b(ree)38 b(Soft)m(w)m(are)g(F)-9 b(oundation,)38 + b(Inc.)50 b(P)m(ermissions)37 b(on)h(bac)m(k.)50 b(v2.0)6534 + 9589 y Fh(1)p eop + %%Page: 2 2 + 2 1 bop 0 -571 a Fg(Motion)0 -220 y Fe(en)l(tit)l(y)54 b(to)f(mo)l(v)l(e)g(o) + l(v)l(er)1189 b(bac)l(kw)l(ard)138 b(forw)l(ard)0 -52 y Fh(c)l(haracter)2005 + b Ff(C-b)587 b(C-f)0 117 y Fh(w)l(ord)2269 b Ff(M-b)587 b(M-f)0 + 286 y Fh(line)2352 b Ff(C-p)587 b(C-n)0 454 y Fh(go)47 b(to)g(line)h(b)t + (eginning)g(\(or)f(end\))801 b Ff(C-a)587 b(C-e)0 623 y Fh(sen)l(tence)2060 + b Ff(M-a)587 b(M-e)0 792 y Fh(paragraph)1946 b Ff(M-{)587 b(M-})0 + 961 y Fh(page)2290 b Ff(C-x)74 b([)439 b(C-x)74 b(])0 1129 + y Fh(sexp)2301 b Ff(C-M-b)439 b(C-M-f)0 1298 y Fh(function)2067 + b Ff(C-M-a)439 b(C-M-e)0 1467 y Fh(go)47 b(to)g(bu\013er)h(b)t(eginning)g + (\(or)f(end\))664 b Ff(M-<)587 b(M->)0 1696 y Fh(scroll)48 + b(to)f(next)g(screen)1818 b Ff(C-v)0 1865 y Fh(scroll)48 b(to)f(previous)i + (screen)1574 b Ff(M-v)0 2033 y Fh(scroll)48 b(left)2481 b Ff(C-x)73 + b(<)0 2202 y Fh(scroll)48 b(righ)l(t)2387 b Ff(C-x)73 b(>)0 + 2371 y Fh(scroll)48 b(curren)l(t)g(line)g(to)f(cen)l(ter)h(of)f(screen)801 + b Ff(C-u)73 b(C-l)0 2782 y Fg(Killing)k(and)i(Deleting)0 3132 + y Fe(en)l(tit)l(y)54 b(to)f(kill)1691 b(bac)l(kw)l(ard)138 + b(forw)l(ard)0 3301 y Fh(c)l(haracter)49 b(\(delete,)f(not)f(kill\))960 + b Ff(DEL)587 b(C-d)0 3469 y Fh(w)l(ord)2269 b Ff(M-DEL)439 + b(M-d)0 3638 y Fh(line)48 b(\(to)e(end)i(of)11 b(\))1633 b + Ff(M-0)74 b(C-k)291 b(C-k)0 3807 y Fh(sen)l(tence)2060 b Ff(C-x)74 + b(DEL)291 b(M-k)0 3975 y Fh(sexp)2301 b Ff(M--)74 b(C-M-k)143 + b(C-M-k)0 4205 y Fh(kill)47 b Fe(region)2373 b Ff(C-w)0 4373 + y Fh(cop)l(y)48 b(region)g(to)f(kill)g(ring)1646 b Ff(M-w)0 + 4542 y Fh(kill)47 b(through)h(next)f(o)t(ccurrence)j(of)d Fb(char)834 + b Ff(M-z)73 b Fb(char)0 4771 y Fh(y)l(ank)48 b(bac)l(k)g(last)f(thing)g + (killed)1416 b Ff(C-y)0 4940 y Fh(replace)49 b(last)e(y)l(ank)h(with)e + (previous)j(kill)894 b Ff(M-y)0 5368 y Fg(Marking)0 5718 y + Fh(set)47 b(mark)h(here)2208 b Ff(C-@)73 b Fh(or)h Ff(C-SPC)0 + 5887 y Fh(exc)l(hange)49 b(p)t(oin)l(t)e(and)h(mark)1490 b + Ff(C-x)73 b(C-x)0 6116 y Fh(set)47 b(mark)h Fb(ar)-7 b(g)59 + b Fe(w)l(ords)45 b Fh(a)l(w)l(a)l(y)1453 b Ff(M-@)0 6285 y + Fh(mark)48 b Fe(paragraph)1962 b Ff(M-h)0 6454 y Fh(mark)48 + b Fe(page)2360 b Ff(C-x)73 b(C-p)0 6622 y Fh(mark)48 b Fe(sexp)2371 + b Ff(C-M-@)0 6791 y Fh(mark)48 b Fe(function)2105 b Ff(C-M-h)0 + 6960 y Fh(mark)48 b(en)l(tire)f Fe(bu\013er)1875 b Ff(C-x)73 + b(h)0 7370 y Fg(Query)k(Replace)0 7721 y Fh(in)l(teractiv)l(ely)49 + b(replace)g(a)e(text)g(string)1004 b Ff(M-\045)0 7889 y Fh(using)48 + b(regular)g(expressions)765 b Ff(M-x)73 b(query-replace-regexp)0 + 8119 y Fh(V)-12 b(alid)48 b(resp)t(onses)i(in)d(query-replace)i(mo)t(de)f + (are)0 8348 y Fe(replace)f Fh(this)g(one,)h(go)f(on)g(to)g(next)1107 + b Ff(SPC)0 8517 y Fh(replace)49 b(this)e(one,)h(don't)f(mo)l(v)l(e)1318 + b Ff(,)0 8685 y Fe(skip)48 b Fh(to)f(next)g(without)f(replacing)1153 + b Ff(DEL)0 8854 y Fh(replace)49 b(all)e(remaining)i(matc)l(hes)1224 + b Ff(!)0 9023 y Fe(bac)l(k)53 b(up)46 b Fh(to)h(the)g(previous)i(matc)l(h) + 1095 b Ff(^)0 9191 y Fe(exit)48 b Fh(query-replace)1916 b Ff(ESC)0 + 9360 y Fh(en)l(ter)48 b(recursiv)l(e)h(edit)e(\()p Ff(C-M-c)f + Fh(to)h(exit\))896 b Ff(C-r)6534 9589 y Fh(2)p eop + %%Page: 3 3 + 3 2 bop 0 -571 a Fg(Multiple)77 b(Windo)-6 b(ws)0 -297 y Fh(delete)48 + b(all)f(other)h(windo)l(ws)1559 b Ff(C-x)73 b(1)0 -128 y Fh(delete)48 + b(this)f(windo)l(w)1903 b Ff(C-x)73 b(0)0 40 y Fh(split)47 + b(windo)l(w)g(in)g(t)l(w)l(o)f(v)l(ertically)1229 b Ff(C-x)73 + b(2)0 209 y Fh(split)47 b(windo)l(w)g(in)g(t)l(w)l(o)f(horizon)l(tally)1069 + b Ff(C-x)73 b(3)0 419 y Fh(scroll)48 b(other)g(windo)l(w)1847 + b Ff(C-M-v)0 588 y Fh(switc)l(h)47 b(cursor)i(to)d(another)i(windo)l(w)1038 + b Ff(C-x)73 b(o)0 798 y Fh(shrink)48 b(windo)l(w)e(shorter)1385 + b Ff(M-x)73 b(shrink-window)0 966 y Fh(gro)l(w)47 b(windo)l(w)g(taller)1876 + b Ff(C-x)73 b(^)0 1135 y Fh(shrink)48 b(windo)l(w)e(narro)l(w)l(er)1571 + b Ff(C-x)73 b({)0 1304 y Fh(gro)l(w)47 b(windo)l(w)g(wider)1860 + b Ff(C-x)73 b(})0 1514 y Fh(select)48 b(bu\013er)g(in)f(other)h(windo)l(w) + 1265 b Ff(C-x)73 b(4)h(b)0 1683 y Fh(displa)l(y)48 b(bu\013er)g(in)f(other)g + (windo)l(w)1172 b Ff(C-x)73 b(4)h(C-o)0 1851 y Fh(\014nd)47 + b(\014le)h(in)f(other)g(windo)l(w)1544 b Ff(C-x)73 b(4)h(f)0 + 2020 y Fh(\014nd)47 b(\014le)h(read-only)g(in)f(other)g(windo)l(w)923 + b Ff(C-x)73 b(4)h(r)0 2189 y Fh(run)47 b(Dired)h(in)f(other)h(windo)l(w)1404 + b Ff(C-x)73 b(4)h(d)0 2357 y Fh(\014nd)47 b(tag)g(in)g(other)h(windo)l(w)1528 + b Ff(C-x)73 b(4)h(.)0 2672 y Fg(F)-19 b(ormatting)0 2946 y + Fh(inden)l(t)47 b(curren)l(t)h Fe(line)h Fh(\(mo)t(de-dep)t(enden)l(t\))706 + b Ff(TAB)0 3115 y Fh(inden)l(t)47 b Fe(region)g Fh(\(mo)t(de-dep)t(enden)l + (t\))1012 b Ff(C-M-\\)0 3283 y Fh(inden)l(t)47 b Fe(sexp)g + Fh(\(mo)t(de-dep)t(enden)l(t\))1136 b Ff(C-M-q)0 3452 y Fh(inden)l(t)47 + b(region)i(rigidly)e Fb(ar)-7 b(g)59 b Fh(columns)1004 b Ff(C-x)73 + b(TAB)0 3662 y Fh(insert)48 b(newline)f(after)h(p)t(oin)l(t)1496 + b Ff(C-o)0 3831 y Fh(mo)l(v)l(e)48 b(rest)g(of)f(line)g(v)l(ertically)i(do)l + (wn)1047 b Ff(C-M-o)0 3999 y Fh(delete)48 b(blank)g(lines)g(around)g(p)t(oin) + l(t)1137 b Ff(C-x)73 b(C-o)0 4168 y Fh(join)47 b(line)h(with)e(previous)j + (\(with)d(arg,)h(next\))645 b Ff(M-^)0 4337 y Fh(delete)48 + b(all)f(white)g(space)i(around)f(p)t(oin)l(t)891 b Ff(M-\\)0 + 4505 y Fh(put)47 b(exactly)h(one)g(space)g(at)f(p)t(oin)l(t)1181 + b Ff(M-SPC)0 4715 y Fh(\014ll)47 b(paragraph)2221 b Ff(M-q)0 + 4884 y Fh(set)47 b(\014ll)h(column)2181 b Ff(C-x)73 b(f)0 5053 + y Fh(set)47 b(pre\014x)h(eac)l(h)h(line)e(starts)h(with)1185 + b Ff(C-x)73 b(.)0 5368 y Fg(Case)k(Change)0 5641 y Fh(upp)t(ercase)49 + b(w)l(ord)2094 b Ff(M-u)0 5810 y Fh(lo)l(w)l(ercase)49 b(w)l(ord)2129 + b Ff(M-l)0 5979 y Fh(capitalize)49 b(w)l(ord)2122 b Ff(M-c)0 + 6189 y Fh(upp)t(ercase)49 b(region)2021 b Ff(C-x)73 b(C-u)0 + 6357 y Fh(lo)l(w)l(ercase)49 b(region)2056 b Ff(C-x)73 b(C-l)0 + 6526 y Fh(capitalize)49 b(region)1515 b Ff(M-x)73 b(capitalize-region)0 + 6858 y Fg(The)78 b(Minibu\013er)0 7132 y Fh(The)47 b(follo)l(wing)h(k)l(eys)g + (are)g(de\014ned)g(in)f(the)g(minibu\013er.)0 7342 y(complete)i(as)e(m)l(uc)l + (h)h(as)g(p)t(ossible)1254 b Ff(TAB)0 7510 y Fh(complete)49 + b(up)e(to)f(one)i(w)l(ord)1521 b Ff(SPC)0 7679 y Fh(complete)49 + b(and)e(execute)1726 b Ff(RET)0 7848 y Fh(sho)l(w)47 b(p)t(ossible)i + (completions)1446 b Ff(?)0 8017 y Fh(fetc)l(h)48 b(previous)g(minibu\013er)g + (input)1141 b Ff(M-p)0 8185 y Fh(fetc)l(h)48 b(next)f(later)g(minibu\013er)h + (input)1056 b Ff(M-n)0 8354 y Fh(regexp)48 b(searc)l(h)h(bac)l(kw)l(ard)f + (through)g(history)585 b Ff(M-r)0 8523 y Fh(regexp)48 b(searc)l(h)h(forw)l + (ard)f(through)f(history)698 b Ff(M-s)0 8691 y Fh(ab)t(ort)47 + b(command)2077 b Ff(C-g)0 8901 y Fh(T)l(yp)t(e)43 b Ff(C-x)73 + b(ESC)g(ESC)42 b Fh(to)g(edit)h(and)f(rep)t(eat)i(the)e(last)h(command)h + (that)e(used)0 9070 y(the)47 b(minibu\013er.)64 b(The)47 b(follo)l(wing)g(k)l + (eys)i(are)e(then)h(de\014ned.)0 9280 y(previous)h(minibu\013er)f(command) + 1220 b Ff(M-p)0 9449 y Fh(next)47 b(minibu\013er)h(command)1464 + b Ff(M-n)6534 9589 y Fh(3)p eop + %%Page: 4 4 + 4 3 bop 268 -542 a Fi(GNU)92 b(Emacs)h(Reference)g(Card)0 -71 + y Fg(Bu\013ers)0 279 y Fh(select)48 b(another)g(bu\013er)1794 + b Ff(C-x)73 b(b)0 448 y Fh(list)47 b(all)g(bu\013ers)2208 b + Ff(C-x)73 b(C-b)0 617 y Fh(kill)47 b(a)g(bu\013er)2338 b Ff(C-x)73 + b(k)0 1027 y Fg(T)-19 b(ransp)6 b(osing)0 1378 y Fh(transp)t(ose)49 + b Fe(c)l(haracters)1694 b Ff(C-t)0 1546 y Fh(transp)t(ose)49 + b Fe(w)l(ords)2002 b Ff(M-t)0 1715 y Fh(transp)t(ose)49 b Fe(lines)2101 + b Ff(C-x)73 b(C-t)0 1884 y Fh(transp)t(ose)49 b Fe(sexps)2040 + b Ff(C-M-t)0 2295 y Fg(Sp)6 b(elling)78 b(Chec)-6 b(k)0 2645 + y Fh(c)l(hec)l(k)49 b(sp)t(elling)f(of)f(curren)l(t)h(w)l(ord)1207 + b Ff(M-$)0 2814 y Fh(c)l(hec)l(k)49 b(sp)t(elling)f(of)f(all)h(w)l(ords)f(in) + g(region)565 b Ff(M-x)73 b(ispell-region)0 2982 y Fh(c)l(hec)l(k)49 + b(sp)t(elling)f(of)f(en)l(tire)h(bu\013er)952 b Ff(M-x)73 b(ispell-buffer)0 + 3409 y Fg(T)-19 b(ags)0 3759 y Fh(\014nd)47 b(a)g(tag)g(\(a)g(de\014nition\)) + 1604 b Ff(M-.)0 3928 y Fh(\014nd)47 b(next)g(o)t(ccurrence)j(of)d(tag)1396 + b Ff(C-u)73 b(M-.)0 4096 y Fh(sp)t(ecify)48 b(a)g(new)f(tags)g(\014le)1240 + b Ff(M-x)73 b(visit-tags-table)0 4325 y Fh(regexp)48 b(searc)l(h)h(on)f(all)f + (\014les)h(in)f(tags)g(table)439 b Ff(M-x)73 b(tags-search)0 + 4494 y Fh(run)47 b(query-replace)j(on)d(all)g(the)g(\014les)448 + b Ff(M-x)73 b(tags-query-replace)0 4663 y Fh(con)l(tin)l(ue)48 + b(last)g(tags)f(searc)l(h)i(or)e(query-replace)505 b Ff(M-,)0 + 5074 y Fg(Shells)0 5424 y Fh(execute)49 b(a)e(shell)h(command)1514 + b Ff(M-!)0 5593 y Fh(run)47 b(a)g(shell)h(command)h(on)e(the)g(region)900 + b Ff(M-|)0 5761 y Fh(\014lter)47 b(region)h(through)g(a)f(shell)h(command)728 + b Ff(C-u)73 b(M-|)0 5930 y Fh(start)47 b(a)g(shell)h(in)f(windo)l(w)g + Ff(*shell*)784 b(M-x)73 b(shell)0 6341 y Fg(Rectangles)0 6691 + y Fh(cop)l(y)48 b(rectangle)h(to)e(register)1493 b Ff(C-x)73 + b(r)h(r)0 6860 y Fh(kill)47 b(rectangle)2257 b Ff(C-x)73 b(r)h(k)0 + 7029 y Fh(y)l(ank)48 b(rectangle)2155 b Ff(C-x)73 b(r)h(y)0 + 7197 y Fh(op)t(en)48 b(rectangle,)h(shifting)e(text)g(righ)l(t)977 + b Ff(C-x)73 b(r)h(o)0 7366 y Fh(blank)48 b(out)f(rectangle)1472 + b Ff(M-x)73 b(clear-rectangle)0 7535 y Fh(pre\014x)48 b(eac)l(h)g(line)g + (with)e(a)h(string)822 b Ff(M-x)73 b(string-rectangle)0 7963 + y Fg(Abbrevs)0 8313 y Fh(add)47 b(global)h(abbrev)1944 b Ff(C-x)73 + b(a)h(g)0 8482 y Fh(add)47 b(mo)t(de-lo)t(cal)i(abbrev)1647 + b Ff(C-x)73 b(a)h(l)0 8650 y Fh(add)47 b(global)h(expansion)h(for)e(this)h + (abbrev)801 b Ff(C-x)73 b(a)h(i)f(g)0 8819 y Fh(add)47 b(mo)t(de-lo)t(cal)i + (expansion)g(for)e(this)g(abbrev)505 b Ff(C-x)73 b(a)h(i)f(l)0 + 8988 y Fh(explicitly)48 b(expand)g(abbrev)1534 b Ff(C-x)73 + b(a)h(e)0 9217 y Fh(expand)48 b(previous)h(w)l(ord)e(dynamically)912 + b Ff(M-/)6534 9589 y Fh(4)p eop + %%Page: 5 5 + 5 4 bop 0 -571 a Fg(Regular)77 b(Expressions)0 -220 y Fh(an)l(y)48 + b(single)g(c)l(haracter)h(except)f(a)f(newline)759 b Ff(.)147 + b Fh(\(dot\))0 -52 y(zero)48 b(or)f(more)h(rep)t(eats)1786 + b Ff(*)0 117 y Fh(one)48 b(or)f(more)h(rep)t(eats)1825 b Ff(+)0 + 286 y Fh(zero)48 b(or)f(one)h(rep)t(eat)1935 b Ff(?)0 454 y + Fh(an)l(y)48 b(c)l(haracter)g(in)f(the)h(set)1590 b Ff([)74 + b Fa(:)23 b(:)g(:)74 b Ff(])0 623 y Fh(an)l(y)48 b(c)l(haracter)g(not)f(in)g + (the)g(set)1341 b Ff([^)73 b Fa(:)23 b(:)g(:)75 b Ff(])0 792 + y Fh(b)t(eginning)48 b(of)f(line)2026 b Ff(^)0 961 y Fh(end)48 + b(of)f(line)2404 b Ff($)0 1129 y Fh(quote)48 b(a)f(sp)t(ecial)h(c)l(haracter) + h Fb(c)1408 b Ff(\\)p Fb(c)0 1298 y Fh(alternativ)l(e)48 b(\(\\or"\))1970 + b Ff(\\|)0 1467 y Fh(grouping)2510 b Ff(\\\()73 b Fa(:)23 b(:)g(:)75 + b Ff(\\\))0 1635 y Fb(n)11 b Fh(th)46 b(group)2428 b Ff(\\)p + Fb(n)0 1804 y Fh(b)t(eginning)48 b(of)f(bu\013er)1889 b Ff(\\`)0 + 1973 y Fh(end)48 b(of)f(bu\013er)2267 b Ff(\\')0 2141 y Fh(w)l(ord)47 + b(break)2361 b Ff(\\b)0 2310 y Fh(not)47 b(b)t(eginning)h(or)f(end)h(of)f(w)l + (ord)1255 b Ff(\\B)0 2479 y Fh(b)t(eginning)48 b(of)f(w)l(ord)1943 + b Ff(\\<)0 2648 y Fh(end)48 b(of)f(w)l(ord)2321 b Ff(\\>)0 + 2816 y Fh(an)l(y)48 b(w)l(ord-syn)l(tax)f(c)l(haracter)1420 + b Ff(\\w)0 2985 y Fh(an)l(y)48 b(non-w)l(ord-syn)l(tax)g(c)l(haracter)1146 + b Ff(\\W)0 3154 y Fh(c)l(haracter)49 b(with)d(syn)l(tax)i Fb(c)1599 + b Ff(\\s)p Fb(c)0 3322 y Fh(c)l(haracter)49 b(with)d(syn)l(tax)i(not)f + Fb(c)1349 b Ff(\\S)p Fb(c)0 3733 y Fg(Registers)0 4083 y Fh(sa)l(v)l(e)48 + b(region)h(in)e(register)1707 b Ff(C-x)73 b(r)h(s)0 4252 y + Fh(insert)48 b(register)g(con)l(ten)l(ts)g(in)l(to)f(bu\013er)960 + b Ff(C-x)73 b(r)h(i)0 4481 y Fh(sa)l(v)l(e)48 b(v)-8 b(alue)49 + b(of)e(p)t(oin)l(t)g(in)g(register)1239 b Ff(C-x)73 b(r)h(SPC)0 + 4650 y Fh(jump)47 b(to)g(p)t(oin)l(t)g(sa)l(v)l(ed)i(in)e(register)1149 + b Ff(C-x)73 b(r)h(j)0 5078 y Fg(Info)0 5428 y Fh(en)l(ter)48 + b(the)f(Info)g(do)t(cumen)l(tation)i(reader)818 b Ff(C-h)73 + b(i)0 5658 y Fh(Mo)l(ving)48 b(within)e(a)h(no)t(de:)141 5887 + y(scroll)h(forw)l(ard)2070 b Ff(SPC)141 6056 y Fh(scroll)48 + b(rev)l(erse)2118 b Ff(DEL)141 6224 y Fh(b)t(eginning)48 b(of)f(no)t(de)1811 + b Ff(.)147 b Fh(\(dot\))0 6454 y(Mo)l(ving)48 b(b)t(et)l(w)l(een)g(no)t(des:) + 141 6683 y Fe(next)f Fh(no)t(de)2256 b Ff(n)141 6851 y Fe(previous)47 + b Fh(no)t(de)1973 b Ff(p)141 7020 y Fh(mo)l(v)l(e)48 b Fe(up)2364 + b Ff(u)141 7189 y Fh(select)48 b(men)l(u)g(item)f(b)l(y)g(name)1303 + b Ff(m)141 7358 y Fh(select)48 b Fb(n)11 b Fh(th)47 b(men)l(u)g(item)h(b)l(y) + f(n)l(um)l(b)t(er)h(\(1{5\))528 b Fb(n)141 7526 y Fh(follo)l(w)47 + b(cross)h(reference)i(\(return)d(with)f Ff(l)p Fh(\))631 b + Ff(f)141 7695 y Fh(return)47 b(to)g(last)g(no)t(de)h(y)l(ou)f(sa)l(w)1211 + b Ff(l)141 7864 y Fh(return)47 b(to)g(directory)h(no)t(de)1415 + b Ff(d)141 8032 y Fh(go)47 b(to)g(an)l(y)g(no)t(de)h(b)l(y)f(name)1421 + b Ff(g)0 8262 y Fh(Other:)141 8491 y(run)47 b(Info)g Fe(tutorial)1829 + b Ff(h)141 8659 y Fh(list)47 b(Info)g(commands)1736 b Ff(?)141 + 8828 y Fe(quit)47 b Fh(Info)2336 b Ff(q)141 8997 y Fh(searc)l(h)48 + b(no)t(des)h(for)e(regexp)1469 b Ff(s)6534 9589 y Fh(5)p eop + %%Page: 6 6 + 6 5 bop 0 -571 a Fg(Keyb)6 b(oard)79 b(Macros)0 -220 y Fe(start)46 + b Fh(de\014ning)i(a)f(k)l(eyb)t(oard)h(macro)1035 b Ff(C-x)73 + b(\()0 -52 y Fe(end)47 b Fh(k)l(eyb)t(oard)h(macro)g(de\014nition)1139 + b Ff(C-x)73 b(\))0 117 y Fe(execute)47 b Fh(last-de\014ned)i(k)l(eyb)t(oard)f + (macro)735 b Ff(C-x)73 b(e)0 286 y Fh(app)t(end)48 b(to)f(last)g(k)l(eyb)t + (oard)i(macro)1130 b Ff(C-u)73 b(C-x)g(\()0 454 y Fh(name)48 + b(last)f(k)l(eyb)t(oard)i(macro)741 b Ff(M-x)74 b(name-last-kbd-macro)0 + 623 y Fh(insert)48 b(Lisp)f(de\014nition)h(in)f(bu\013er)745 + b Ff(M-x)73 b(insert-kbd-macro)0 1034 y Fg(Commands)79 b(Dealing)e(with)g + (Emacs)h(Lisp)0 1384 y Fh(ev)-8 b(al)48 b Fe(sexp)f Fh(b)t(efore)h(p)t(oin)l + (t)1661 b Ff(C-x)73 b(C-e)0 1553 y Fh(ev)-8 b(al)48 b(curren)l(t)g + Fe(defun)1881 b Ff(C-M-x)0 1722 y Fh(ev)-8 b(al)48 b Fe(region)2031 + b Ff(M-x)73 b(eval-region)0 1890 y Fh(ev)-8 b(al)48 b(en)l(tire)g + Fe(bu\013er)1271 b Ff(M-x)74 b(eval-current-buffer)0 2059 y + Fh(read)48 b(and)f(ev)-8 b(al)48 b(minibu\013er)1549 b Ff(M-ESC)0 + 2228 y Fh(re-execute)49 b(last)e(minibu\013er)h(command)846 + b Ff(C-x)73 b(ESC)g(ESC)0 2396 y Fh(read)48 b(and)f(ev)-8 b(al)48 + b(Emacs)g(Lisp)f(\014le)948 b Ff(M-x)73 b(load-file)0 2565 + y Fh(load)48 b(from)f(standard)h(system)g(directory)513 b Ff(M-x)73 + b(load-library)0 2993 y Fg(Simple)k(Customization)0 3343 y + Fh(Here)37 b(are)f(some)h(examples)g(of)f(binding)g(global)g(k)l(eys)h(in)f + (Emacs)g(Lisp.)59 b(Note)0 3512 y(that)47 b(y)l(ou)g(cannot)h(sa)l(y)g + Ff("\\M-#")p Fh(;)e(y)l(ou)h(m)l(ust)g(sa)l(y)h Ff("\\e#")p + Fh(.)0 3741 y Ff(\(global-set-key)71 b("\\C-cg")h('goto-line\))0 + 3910 y(\(global-set-key)f("\\C-x\\C-k")h('kill-region\))0 4079 + y(\(global-set-key)f("\\e#")i('query-replace-regexp\))0 4308 + y Fh(An)47 b(example)i(of)e(setting)h(a)f(v)-8 b(ariable)48 + b(in)f(Emacs)h(Lisp:)0 4537 y Ff(\(setq)73 b(backup-by-copying-when-linked)68 + b(t\))0 4965 y Fg(W)-19 b(riting)76 b(Commands)0 5316 y Ff(\(defun)d + Fb(c)-7 b(ommand-name)83 b Ff(\()p Fb(ar)-7 b(gs)12 b Ff(\))148 + 5484 y(")p Fb(do)-7 b(cumentation)11 b Ff(")148 5653 y(\(interactive)71 + b(")p Fb(template)11 b Ff("\))148 5822 y Fb(b)-7 b(o)g(dy)12 + b Ff(\))0 6051 y Fh(An)47 b(example:)0 6280 y Ff(\(defun)73 + b(this-line-to-top-of-window)68 b(\(line\))148 6449 y("Reposition)j(line)i + (point)g(is)h(on)f(to)g(top)h(of)f(window.)0 6618 y(With)g(ARG,)g(put)g + (point)g(on)h(line)f(ARG.)0 6786 y(Negative)f(counts)h(from)g(bottom.")148 + 6955 y(\(interactive)e("P"\))148 7124 y(\(recenter)h(\(if)h(\(null)g(line\)) + 1181 7292 y(0)1033 7461 y(\(prefix-numeric-value)d(line\)\)\)\))0 + 7690 y Fh(The)39 b(argumen)l(t)h(to)e Ff(interactive)f Fh(is)i(a)g(string)g + (sp)t(ecifying)i(ho)l(w)e(to)g(get)g(the)0 7859 y(argumen)l(ts)59 + b(when)e(the)g(function)g(is)h(called)g(in)l(teractiv)l(ely)-12 + b(.)95 b(T)l(yp)t(e)57 b Ff(C-h)73 b(f)0 8028 y(interactive)45 + b Fh(for)i(more)h(information.)805 8407 y Fd(Cop)m(yrigh)m(t)1364 + 8404 y(c)1332 8407 y Fc(\015)38 b Fd(1993)g(F)-9 b(ree)38 b(Soft)m(w)m(are)g + (F)-9 b(oundation,)38 b(Inc.)958 8542 y(designed)h(b)m(y)f(Stephen)g(Gildea,) + i(Ma)m(y)e(1993)g(v2.0)951 8677 y(for)g(GNU)g(Emacs)e(v)m(ersion)j(19)f(on)g + (Unix)h(systems)0 8872 y(P)m(ermission)c(is)g(gran)m(ted)g(to)g(mak)m(e)f + (and)h(distribute)h(copies)g(of)f(this)g(card)g(pro)m(vided)h(the)f(cop)m(y-) + 0 9007 y(righ)m(t)k(notice)f(and)h(this)f(p)s(ermission)g(notice)h(are)e + (preserv)m(ed)h(on)g(all)i(copies.)0 9203 y(F)-9 b(or)35 b(copies)h(of)f(the) + g(GNU)g(Emacs)f(man)m(ual,)i(write)h(to)e(the)g(F)-9 b(ree)35 + b(Soft)m(w)m(are)g(F)-9 b(oundation,)37 b(Inc.,)0 9338 y(675)h(Massac)m(h)m + (usetts)e(Av)m(e,)i(Cam)m(bridge)g(MA)g(02139.)6534 9589 y + Fh(6)p eop + %%Trailer + end + userdict /end-hook known{end-hook}if + SafetyEnclosure restore + %%EOF diff -cprP --exclude=*.elc emacs-19.13/etc/refcard.tex emacs-19.14/etc/refcard.tex *** emacs-19.13/etc/refcard.tex Tue Jun 8 07:24:09 1993 --- emacs-19.14/etc/refcard.tex Wed Jun 9 14:02:47 1993 *************** *** 6,12 **** % This file can be printed with 1, 2, or 3 columns per page (see below). % Specify how many you want here. Nothing else needs to be changed. ! \columnsperpage=2 % Copyright (c) 1987, 1993 Free Software Foundation, Inc. --- 6,12 ---- % This file can be printed with 1, 2, or 3 columns per page (see below). % Specify how many you want here. Nothing else needs to be changed. ! \columnsperpage=1 % Copyright (c) 1987, 1993 Free Software Foundation, Inc. diff -cprP --exclude=*.elc emacs-19.13/etc/termcap.dat emacs-19.14/etc/termcap.dat *** emacs-19.13/etc/termcap.dat Tue Jun 8 07:24:12 1993 --- emacs-19.14/etc/termcap.dat Wed Jun 9 06:55:54 1993 *************** *** 79,85 **** # Briefly, the settings are for the following modes: # (values are for bit set/clear with * indicating our preference # and the value used to test these termcaps) ! # Note that many of these settings are irelevent to the termcap # and are just set to the default mode of the terminal as shipped # by the factory. # --- 79,85 ---- # Briefly, the settings are for the following modes: # (values are for bit set/clear with * indicating our preference # and the value used to test these termcaps) ! # Note that many of these settings are irrelevant to the termcap # and are just set to the default mode of the terminal as shipped # by the factory. # *************** *** 120,126 **** # transmit all characters/transmit only selected characters* # transmit all selected areas/transmit only 1 selected area* # ! # transmit/do not transmit line seperators to host* # transmit/do not transmit page tab stops tabs to host* # transmit/do not transmit column tab stop tabs to host* # transmit/do not transmit graphics control (underline,inverse..)* --- 120,126 ---- # transmit all characters/transmit only selected characters* # transmit all selected areas/transmit only 1 selected area* # ! # transmit/do not transmit line separators to host* # transmit/do not transmit page tab stops tabs to host* # transmit/do not transmit column tab stop tabs to host* # transmit/do not transmit graphics control (underline,inverse..)* *************** *** 159,165 **** # # D menu: 0110 1001 1 0 # LF is newline/LF is down one line, same column* ! # wrap to preceeding line if move left from col 1*/don't wrap # wrap to next line if move right from col 80*/don't wrap # backspace is/is not destructive* # --- 159,165 ---- # # D menu: 0110 1001 1 0 # LF is newline/LF is down one line, same column* ! # wrap to preceding line if move left from col 1*/don't wrap # wrap to next line if move right from col 80*/don't wrap # backspace is/is not destructive* # *************** MS|soroc|Soroc 120:\ *** 804,810 **** :kl=^H:ku=^K:kr=^L:kd=^J:tc=adm3a: # Needs function keys added. Also can't use 60 line mode because it needs # too much nl delay - can fix for nl but not out of vi. ! # The cl delay is sufficent, but a smaller one could do. # This entry is merged from Mike O'Brien@Rand and Howard Katseff at # Bell Labs, and is untested. Mb|aaa|ambas|ambassador|ann arbor ambassador/48 lines:\ --- 804,810 ---- :kl=^H:ku=^K:kr=^L:kd=^J:tc=adm3a: # Needs function keys added. Also can't use 60 line mode because it needs # too much nl delay - can fix for nl but not out of vi. ! # The cl delay is sufficient, but a smaller one could do. # This entry is merged from Mike O'Brien@Rand and Howard Katseff at # Bell Labs, and is untested. Mb|aaa|ambas|ambassador|ann arbor ambassador/48 lines:\ diff -cprP --exclude=*.elc emacs-19.13/etc/termcap.ucb emacs-19.14/etc/termcap.ucb *** emacs-19.13/etc/termcap.ucb Tue Jun 8 07:24:14 1993 --- emacs-19.14/etc/termcap.ucb Wed Jun 9 06:55:59 1993 *************** *** 811,817 **** :so=\Ef:sr=\ET:up=\EA:ve=:vs=\EN: Mp|plasma|plasma panel:\ :am:le=^H:bs:cl=^L:co#85:ho=^^:li#45:nd=\030:up=\026:do=^J: ! Mq|pty|psuedo teletype:\ :do=^J:co#80:li#24:am:cl=\EJ:le=^H:bs:cm=\EG%+ %+ :nd=\EC:\ :up=\EA:ce=\EK:cd=\EL:al=\EP:dl=\EN:ic=\EO:\ :so=\Ea$:se=\Eb$:us=\Ea!:ue=\Eb!: --- 811,817 ---- :so=\Ef:sr=\ET:up=\EA:ve=:vs=\EN: Mp|plasma|plasma panel:\ :am:le=^H:bs:cl=^L:co#85:ho=^^:li#45:nd=\030:up=\026:do=^J: ! Mq|pty|pseudo teletype:\ :do=^J:co#80:li#24:am:cl=\EJ:le=^H:bs:cm=\EG%+ %+ :nd=\EC:\ :up=\EA:ce=\EK:cd=\EL:al=\EP:dl=\EN:ic=\EO:\ :so=\Ea$:se=\Eb$:us=\Ea!:ue=\Eb!: *************** S1|wsiris|iris40|iris emulating a 40 lin *** 966,972 **** # Briefly, the settings are for the following modes: # (values are for bit set/clear with * indicating our preference # and the value used to test these termcaps) ! # Note that many of these settings are irelevent to the termcap # and are just set to the default mode of the terminal as shipped # by the factory. # --- 966,972 ---- # Briefly, the settings are for the following modes: # (values are for bit set/clear with * indicating our preference # and the value used to test these termcaps) ! # Note that many of these settings are irrelevant to the termcap # and are just set to the default mode of the terminal as shipped # by the factory. # *************** S1|wsiris|iris40|iris emulating a 40 lin *** 1007,1013 **** # transmit all characters/transmit only selected characters* # transmit all selected areas/transmit only 1 selected area* # ! # transmit/do not transmit line seperators to host* # transmit/do not transmit page tab stops tabs to host* # transmit/do not transmit column tab stop tabs to host* # transmit/do not transmit graphics control (underline,inverse..)* --- 1007,1013 ---- # transmit all characters/transmit only selected characters* # transmit all selected areas/transmit only 1 selected area* # ! # transmit/do not transmit line separators to host* # transmit/do not transmit page tab stops tabs to host* # transmit/do not transmit column tab stop tabs to host* # transmit/do not transmit graphics control (underline,inverse..)* *************** S1|wsiris|iris40|iris emulating a 40 lin *** 1046,1052 **** # # D menu: 0110 1001 1 0 # LF is newline/LF is down one line, same column* ! # wrap to preceeding line if move left from col 1*/don't wrap # wrap to next line if move right from col 80*/don't wrap # backspace is/is not destructive* # --- 1046,1052 ---- # # D menu: 0110 1001 1 0 # LF is newline/LF is down one line, same column* ! # wrap to preceding line if move left from col 1*/don't wrap # wrap to next line if move right from col 80*/don't wrap # backspace is/is not destructive* # *************** P1|ansi.sys|ansisys|PC-DOS 3.1 ANSI.SYS: *** 1345,1351 **** # (^U and ^D are already defined for tn3270). The ESC is safe for vi but it # does "beep". ESC ESC i is used for Ins to avoid tn3270 ESC i for coltab. # Left arrow is always BS, because PC-dos can tolerate this change. ! # Caution: vi is limited to 256 string bytes, longer crashes or wierds vi. # Consequently the End keypad key could not be set (it is relatively safe and # actually useful because it sends ^@ O, which beeps and opens a line above). P2|ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi:\ --- 1345,1351 ---- # (^U and ^D are already defined for tn3270). The ESC is safe for vi but it # does "beep". ESC ESC i is used for Ins to avoid tn3270 ESC i for coltab. # Left arrow is always BS, because PC-dos can tolerate this change. ! # Caution: vi is limited to 256 string bytes, longer crashes or weirds vi. # Consequently the End keypad key could not be set (it is relatively safe and # actually useful because it sends ^@ O, which beeps and opens a line above). P2|ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi:\ *************** X5|4025|4027|4024|tek4025|tek4027|tek402 *** 1497,1503 **** # Other modes may be set according to communication requirements. # If the command character is inadvertently changed, termcap can't restore it. # Insert-character cannot be made to work on both top and bottom rows. ! # Clear-to-end-of-display emulation via !DLI 988 is too groady to use, alas. # There also seems to be a problem with vertical motion, perhaps involving # delete/insert-line, following a typed carriage return. This terminal sucks. # Delays not specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! --- 1497,1503 ---- # Other modes may be set according to communication requirements. # If the command character is inadvertently changed, termcap can't restore it. # Insert-character cannot be made to work on both top and bottom rows. ! # Clear-to-end-of-display emulation via !DLI 988 is too grody to use, alas. # There also seems to be a problem with vertical motion, perhaps involving # delete/insert-line, following a typed carriage return. This terminal sucks. # Delays not specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! *************** Xq|4107-s|tek4107-s|Tektronix 4107 with *** 1536,1542 **** :es:hs:i2=\E7\E[?6l\E[2K\E[?6h\E8:ts=\E7\E[?6l\E[2K\E[;%i%df:\ :fs=\E[?6h\E8:ds=\E7\E[?6l\E[2K\E[?6h\E8:tc=4107: # From cbosg!teklabs!davem Wed Sep 16 21:11:41 1981 ! # Here's the comamnd file that I use to get rogue to work on the 4025. # It should work with any program using the old curses (e.g. it better # not try to scroll, or cursor addressing won't work. Also, you can't # see the cursor.) --- 1536,1542 ---- :es:hs:i2=\E7\E[?6l\E[2K\E[?6h\E8:ts=\E7\E[?6l\E[2K\E[;%i%df:\ :fs=\E[?6h\E8:ds=\E7\E[?6l\E[2K\E[?6h\E8:tc=4107: # From cbosg!teklabs!davem Wed Sep 16 21:11:41 1981 ! # Here's the command file that I use to get rogue to work on the 4025. # It should work with any program using the old curses (e.g. it better # not try to scroll, or cursor addressing won't work. Also, you can't # see the cursor.) *************** cf|c100-rv-s|concept-rv-s|concept100-rv- *** 1904,1910 **** # it in the list of terminals in reorder, since the first vt100 in # /etc/termcap is the one that it will find. The choice is between # nam (no automatic margins) and am (automatic margins), as determined ! # by the wrapline switch (group 3 #2). I presonally recommend turning # on the bit and using vt100-am, since having stuff hammer on the right # margin is sort of hard to read. However, the xn glitch does not occur # if you turn the bit off. --- 1904,1910 ---- # it in the list of terminals in reorder, since the first vt100 in # /etc/termcap is the one that it will find. The choice is between # nam (no automatic margins) and am (automatic margins), as determined ! # by the wrapline switch (group 3 #2). I personally recommend turning # on the bit and using vt100-am, since having stuff hammer on the right # margin is sort of hard to read. However, the xn glitch does not occur # if you turn the bit off. *************** wj|wy75ap|wyse75ap|wy-75ap|wyse-75ap|Wys *** 2965,2971 **** # 24 line screen with status line. # # The vt220 mode permits more function keys but it wipes out ! # the escape key. I strongly reccomend that f11 be set to # escape (esc). # The terminal may have to be set for 8 data bits and 2 stop # bits for the arrow keys to work. --- 2965,2971 ---- # 24 line screen with status line. # # The vt220 mode permits more function keys but it wipes out ! # the escape key. I strongly recommend that f11 be set to # escape (esc). # The terminal may have to be set for 8 data bits and 2 stop # bits for the arrow keys to work. *************** y6|t1061|teleray 1061:\ *** 3054,3060 **** :li#24:nd=\EC:pt:se=\ER@:so= \ERD:\ :is=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5\EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef:\ :up=\EA:us=\ERH:ue=\ER@:xs:xt:sg#2:ug#1: ! # "Teleray Arpa Special", offically designated as # "Teleray Arpa network model 10" with "Special feature 720". # This is the new (1981) fast microcode updating the older "arpa" proms # (which gave meta-key and pgmmable-fxn keys). 720 is much much faster, --- 3054,3060 ---- :li#24:nd=\EC:pt:se=\ER@:so= \ERD:\ :is=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5\EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef:\ :up=\EA:us=\ERH:ue=\ER@:xs:xt:sg#2:ug#1: ! # "Teleray Arpa Special", officially designated as # "Teleray Arpa network model 10" with "Special feature 720". # This is the new (1981) fast microcode updating the older "arpa" proms # (which gave meta-key and pgmmable-fxn keys). 720 is much much faster, *************** Y0|yterm10|yterm 1.0 UCB ascii.kbd:\ *** 3304,3314 **** :ku=^K:kd=^J:kl=^H:kr=^L:kh=^^:ma=h\012j k lH:\ :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\ :vs=^O\E[7i\E[m\E[?7h\E[?3g\r\EHY0 \EH \EH \EH \EH \EH \EH \EH \EH \EH\r: ! # YTERM varient version 1.1. (gts 9-13-84) Version 1.1 has :xn:. Y1|yterm11|yterm 1.1 UCB ascii.kbd:\ :xn:is=^O\E[7i\E[m\E[?7h\E[?3g\r\EHY1 for \EHYTERM 1.\EH1 with A\EHSCII.KBD\EH 9-13-84\EH \EH \EH \EH \EH\n:\ :tc=yterm10: ! # YTERM 1.0 varient no autowrap or tabs # X does not remember autowrap or tabs when T is deleted and restarted. Y2|yterm10nat|yterm 1.0 UCB ascii.kbd no autowrap or tabs:\ :am@:pt@:vs=^O\E[7i\E[m\E[?7l\E[?3g\rY2\r:\ --- 3304,3314 ---- :ku=^K:kd=^J:kl=^H:kr=^L:kh=^^:ma=h\012j k lH:\ :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\ :vs=^O\E[7i\E[m\E[?7h\E[?3g\r\EHY0 \EH \EH \EH \EH \EH \EH \EH \EH \EH\r: ! # YTERM variant version 1.1. (gts 9-13-84) Version 1.1 has :xn:. Y1|yterm11|yterm 1.1 UCB ascii.kbd:\ :xn:is=^O\E[7i\E[m\E[?7h\E[?3g\r\EHY1 for \EHYTERM 1.\EH1 with A\EHSCII.KBD\EH 9-13-84\EH \EH \EH \EH \EH\n:\ :tc=yterm10: ! # YTERM 1.0 variant no autowrap or tabs # X does not remember autowrap or tabs when T is deleted and restarted. Y2|yterm10nat|yterm 1.0 UCB ascii.kbd no autowrap or tabs:\ :am@:pt@:vs=^O\E[7i\E[m\E[?7l\E[?3g\rY2\r:\ diff -cprP --exclude=*.elc emacs-19.13/etc/vipcard.tex emacs-19.14/etc/vipcard.tex *** emacs-19.13/etc/vipcard.tex Tue Jun 8 07:24:16 1993 --- emacs-19.14/etc/vipcard.tex Wed Jun 9 06:56:01 1993 *************** *** 357,363 **** \key{{\bf switch} to a buffer in the current window}{s {\sl buffer}} \key{{\bf switch} to a buffer in another window}{S {\sl buffer}} \key{{\bf kill} a buffer}{K} ! \key{list exisiting {\bf buffers}}{X B} \section{Files} --- 357,363 ---- \key{{\bf switch} to a buffer in the current window}{s {\sl buffer}} \key{{\bf switch} to a buffer in another window}{S {\sl buffer}} \key{{\bf kill} a buffer}{K} ! \key{list existing {\bf buffers}}{X B} \section{Files} diff -cprP --exclude=*.elc emacs-19.13/info/cl emacs-19.14/info/cl *** emacs-19.13/info/cl Tue Jun 8 07:24:22 1993 --- emacs-19.14/info/cl Thu Jun 17 19:43:08 1993 *************** *** 1,4 **** ! This is Info file ../info/cl, produced by Makeinfo-1.54 from the input file cl.texinfo. Copyright (C) 1987 Cesar Quiroz --- 1,4 ---- ! This is Info file ../info/cl, produced by Makeinfo-1.55 from the input file cl.texinfo. Copyright (C) 1987 Cesar Quiroz diff -cprP --exclude=*.elc emacs-19.13/info/emacs emacs-19.14/info/emacs *** emacs-19.13/info/emacs Tue Jun 8 07:24:23 1993 --- emacs-19.14/info/emacs Thu Jun 17 19:44:47 1993 *************** *** 1,406 **** ! This is Info file ../info/emacs, produced by Makeinfo-1.54 from the input file emacs.texi.  Indirect: emacs-1: 92 ! 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: Top92 ! Node: Distrib14552 ! Node: Copying17294 ! Node: Intro36442 ! Node: Screen39333 ! Node: Point41235 ! Node: Echo Area43084 ! Node: Mode Line45412 ! Node: User Input49065 ! Node: Keys52757 ! Node: Commands54970 ! Node: Text Characters57679 ! Node: Entering Emacs58672 ! Node: Exiting61195 ! Node: Basic63995 ! Node: Inserting Text65029 ! Node: Moving Point67543 ! Node: Erasing70584 ! Node: Basic Files71804 ! Node: Basic Help73457 ! Node: Blank Lines74013 ! Node: Continuation Lines75583 ! Node: Position Info77237 ! Node: Arguments80460 ! Node: Undo84100 ! Node: Minibuffer87969 ! Node: Minibuffer File90561 ! Node: Minibuffer Edit92178 ! Node: Completion94167 ! Node: Minibuffer History100207 ! Node: Repetition102906 ! Node: M-x105115 ! Node: Help107451 ! Node: Help Summary108569 ! Node: Key Help110606 ! Node: Name Help111407 ! Node: Apropos113795 ! Node: Library Keywords115976 ! Node: Misc Help117662 ! Node: Mark120133 ! Node: Setting Mark121839 ! Node: Transient Mark124022 ! Node: Using Region126114 ! Node: Marking Objects126971 ! Node: Mark Ring128885 ! Node: Killing130821 ! Node: Deletion132086 ! Node: Killing by Lines133968 ! Node: Other Kill Commands135490 ! Node: Yanking136812 ! Node: Kill Ring137620 ! 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 --- 1,408 ---- ! This is Info file ../info/emacs, produced by Makeinfo-1.55 from the input file emacs.texi.  Indirect: emacs-1: 92 ! emacs-2: 32628 ! emacs-3: 80365 ! emacs-4: 129131 ! emacs-5: 178995 ! emacs-6: 226919 ! emacs-7: 276698 ! emacs-8: 326464 ! emacs-9: 374424 ! emacs-10: 419985 ! emacs-11: 469595 ! emacs-12: 517969 ! emacs-13: 567203 ! emacs-14: 616306 ! emacs-15: 665025 ! emacs-16: 710826 ! emacs-17: 760317 ! emacs-18: 809742 ! emacs-19: 851572 ! emacs-20: 885901 ! emacs-21: 913464 ! emacs-22: 954606  Tag Table: (Indirect) Node: Top92 ! Node: Distrib29886 ! Node: Copying32628 ! Node: Intro51776 ! Node: Screen54667 ! Node: Point56569 ! Node: Echo Area58418 ! Node: Mode Line60746 ! Node: User Input64399 ! Node: Keys68091 ! Node: Commands70304 ! Node: Text Characters73013 ! Node: Entering Emacs74006 ! Node: Exiting76529 ! Node: Basic79329 ! Node: Inserting Text80365 ! Node: Moving Point82879 ! Node: Erasing85920 ! Node: Basic Files87140 ! Node: Basic Help88793 ! Node: Blank Lines89349 ! Node: Continuation Lines90919 ! Node: Position Info92573 ! Node: Arguments95796 ! Node: Undo99436 ! Node: Minibuffer103305 ! Node: Minibuffer File105897 ! Node: Minibuffer Edit107514 ! Node: Completion109503 ! Node: Minibuffer History115543 ! Node: Repetition118242 ! Node: M-x120451 ! Node: Help122787 ! Node: Help Summary123905 ! Node: Key Help125942 ! Node: Name Help126743 ! Node: Apropos129131 ! Node: Library Keywords131312 ! Node: Misc Help132998 ! Node: Mark135469 ! Node: Setting Mark137175 ! Node: Transient Mark139358 ! Node: Using Region141756 ! Node: Marking Objects142613 ! Node: Mark Ring144527 ! Node: Killing146463 ! Node: Deletion147989 ! Node: Killing by Lines149871 ! Node: Other Kill Commands151393 ! Node: Yanking152715 ! Node: Kill Ring153523 ! Node: Appending Kills154735 ! Node: Earlier Kills156950 ! Node: Accumulating Text159739 ! Node: Rectangles162778 ! Node: Registers167175 ! Node: RegPos168254 ! Node: RegText169133 ! Node: RegRect170120 ! Node: RegConfig170859 ! Node: RegFiles171548 ! Node: Display172184 ! Node: Scrolling173721 ! Node: Horizontal Scrolling177551 ! Node: Selective Display178995 ! Node: European Display180169 ! Node: Optional Display181414 ! Node: Display Vars183046 ! Node: Search187114 ! Node: Incremental Search188308 ! Node: Nonincremental Search195760 ! Node: Word Search197217 ! Node: Regexp Search198835 ! Node: Regexps200774 ! Node: Search Case211748 ! Node: Replace212754 ! Node: Unconditional Replace213866 ! Node: Regexp Replace214995 ! Node: Replacement and Case215913 ! Node: Query Replace216862 ! Node: Other Repeating Search220681 ! Node: Fixit221898 ! Node: Kill Errors222486 ! Node: Transpose223753 ! Node: Fixing Case226262 ! Node: Spelling226919 ! Node: Files229919 ! Node: File Names231207 ! Node: Visiting235268 ! Node: Saving241171 ! Node: Backup247277 ! Node: Backup Names248669 ! Node: Backup Deletion250640 ! Node: Backup Copying251815 ! Node: Interlocking253545 ! Node: Reverting257465 ! Node: Auto Save258647 ! Node: Auto Save Files259788 ! Node: Auto Save Control261903 ! Node: Recover263768 ! Node: File Aliases264634 ! Node: Version Control265786 ! Node: Concepts of VC267822 ! Node: Editing with VC269283 ! Node: Variables for Check-in/out273844 ! Node: Log Entries275508 ! Node: Change Logs and VC276698 ! Node: Comparing Versions279966 ! Node: VC Status281346 ! Node: Renaming and VC283042 ! Node: Snapshots283717 ! Node: Making Snapshots284212 ! Node: Snapshot Caveats285471 ! Node: Version Headers287137 ! Node: ListDir289584 ! Node: Comparing Files291086 ! Node: Misc File Ops292703 ! Node: Buffers295687 ! Node: Select Buffer297962 ! Node: List Buffers299245 ! Node: Misc Buffer300721 ! Node: Kill Buffer303285 ! Node: Several Buffers304741 ! Node: Windows309002 ! Node: Basic Window309694 ! Node: Split Window311854 ! Node: Other Window313819 ! Node: Pop Up Window315580 ! Node: Change Window317047 ! Node: Frames318878 ! Node: Mouse Commands320443 ! Node: Creating Frames322075 ! Node: Frame Parameters323428 ! Node: Scroll Bars324942 ! Node: Menu Bars326464 ! Node: Faces327375 ! Node: Misc X329817 ! Node: Major Modes330448 ! Node: Choosing Modes332716 ! Node: Indentation335369 ! Node: Indentation Commands337556 ! Node: Tab Stops340489 ! Node: Just Spaces342397 ! Node: Text343202 ! Node: Words345237 ! Node: Sentences348181 ! Node: Paragraphs350360 ! Node: Pages352661 ! Node: Filling355251 ! Node: Auto Fill355821 ! Node: Fill Commands357966 ! Node: Fill Prefix360597 ! Node: Case364033 ! Node: Text Mode366337 ! Node: Outline Mode368422 ! Node: Outline Format370078 ! Node: Outline Motion372858 ! Node: Outline Visibility374424 ! Node: TeX Mode377385 ! Node: TeX Editing378864 ! Node: LaTeX Editing382192 ! Node: TeX Print383630 ! Node: TeX Distrib389843 ! Node: Nroff Mode390955 ! Node: Programs392499 ! Node: Program Modes395189 ! Node: Lists397403 ! Node: List Commands399366 ! Node: Defuns402878 ! Node: Program Indent405535 ! Node: Basic Indent406168 ! Node: Multi-line Indent408165 ! Node: Lisp Indent409800 ! Node: C Indent413186 ! Node: Matching418436 ! Node: Comments419985 ! Node: Balanced Editing427368 ! Node: Symbol Completion428379 ! Node: Documentation429764 ! Node: Change Log431226 ! Node: Tags433604 ! Node: Tag Syntax435342 ! Node: Create Tag Table436523 ! Node: Select Tag Table438116 ! Node: Find Tag439644 ! Node: Tags Search442618 ! Node: Tags Stepping445483 ! Node: List Tags446025 ! Node: Emerge447180 ! Node: Overview of Emerge448122 ! Node: Submodes of Emerge451223 ! Node: State of Difference452903 ! Node: Merge Commands455417 ! Node: Exiting Emerge457974 ! Node: Combining in Emerge458822 ! Node: Fine Points of Emerge459681 ! Node: C Mode460626 ! Node: Fortran463007 ! Node: Fortran Motion464305 ! Node: Fortran Indent465092 ! Node: ForIndent Commands465840 ! Node: ForIndent Cont467257 ! Node: ForIndent Num469595 ! Node: ForIndent Conv470564 ! Node: ForIndent Vars471611 ! Node: Fortran Comments473428 ! Node: Fortran Autofill477332 ! Node: Fortran Columns478942 ! Node: Fortran Abbrev480468 ! Node: Asm Mode481374 ! Node: Building481916 ! Node: Compilation483074 ! Node: Debuggers488255 ! Node: Starting GUD488878 ! Node: Debugger Operation490366 ! Node: Commands of GUD491652 ! Node: GUD Customization494121 ! Node: Executing Lisp495872 ! Node: Lisp Libraries497801 ! Node: Lisp Eval501442 ! Node: Lisp Interaction505067 ! Node: External Lisp506236 ! Node: Abbrevs508412 ! Node: Defining Abbrevs510621 ! Node: Expanding Abbrevs513053 ! Node: Editing Abbrevs516083 ! Node: Saving Abbrevs517969 ! Node: Dynamic Abbrevs519958 ! Node: Picture521254 ! Node: Basic Picture523620 ! Node: Insert in Picture526078 ! Node: Tabs in Picture527494 ! Node: Rectangles in Picture528997 ! Node: Sending Mail530734 ! Node: Mail Format533088 ! Node: Mail Headers534429 ! Node: Mail Aliases537954 ! Node: Mail Mode539886 ! Node: Distracting NSA544662 ! Node: Rmail545430 ! Node: Rmail Scrolling548698 ! Node: Rmail Motion549674 ! Node: Rmail Deletion552823 ! Node: Rmail Inbox555570 ! Node: Rmail Files557841 ! Node: Rmail Output560317 ! Node: Rmail Labels563438 ! Node: Rmail Reply567203 ! Node: Rmail Summary571531 ! Node: Rmail Make Summary572514 ! Node: Rmail Summary Edit574281 ! Node: Rmail Editing576829 ! Node: Rmail Digest579060 ! Node: Out of Rmail580156 ! Node: Rmail Rot13580640 ! Node: Dired581259 ! Node: Dired Enter582641 ! Node: Dired Commands583504 ! Node: Dired Deletion584521 ! Node: Dired Visiting588520 ! Node: Marks vs Flags589785 ! Node: Operating on Files592441 ! Node: Shell Commands in Dired595764 ! Node: Transforming File Names597448 ! Node: Comparison in Dired599865 ! Node: Subdirectories in Dired600684 ! Node: Subdirectory Motion602299 ! Node: Hiding Subdirectories603235 ! Node: Dired Updating604446 ! Node: Dired and Find606263 ! Node: Calendar/Diary607482 ! Node: Calendar Motion608842 ! Node: Calendar Unit Motion609666 ! Node: Move to Beginning or End611958 ! Node: Specified Dates612973 ! Node: Scroll Calendar613857 ! Node: Counting Days615874 ! Node: General Calendar616306 ! Node: Holidays617265 ! Node: Sunrise/Sunset619582 ! Node: Lunar Phases622211 ! Node: Other Calendars623609 ! Node: Calendar Systems624784 ! Node: To Other Calendar626636 ! Node: From Other Calendar627766 ! Node: Mayan Calendar629583 ! Node: Diary632739 ! Node: Diary Commands634245 ! Node: Format of Diary File636985 ! Node: Date Formats639758 ! Node: Adding to Diary642302 ! Node: Special Diary Entries643930 ! Node: Appointments648213 ! Node: Daylight Savings650155 ! Node: GNUS652859 ! Node: Buffers of GNUS653590 ! Node: GNUS Startup654601 ! Node: Summary of GNUS655575 ! Node: Sorting659055 ! Node: Shell664027 ! Node: Single Shell665025 ! Node: Interactive Shell666681 ! Node: Shell Mode669829 ! Node: Shell History672757 ! Node: Narrowing674529 ! Node: Hardcopy676815 ! Node: Two-Column677943 ! Node: Editing Binary Files681127 ! Node: Emacs Server682460 ! Node: Recursive Edit685152 ! Node: Dissociated Press688476 ! Node: Amusements691172 ! Node: Emulation692100 ! Node: Customization694741 ! Node: Minor Modes696653 ! Node: Variables699865 ! Node: Examining701985 ! Node: Edit Options703552 ! Node: Hooks705303 ! Node: Locals707419 ! Node: File Variables710826 ! Node: Keyboard Macros715449 ! Node: Basic Kbd Macro717630 ! Node: Save Kbd Macro720322 ! Node: Kbd Macro Query721996 ! Node: Key Bindings723954 ! Node: Keymaps725170 ! Node: Prefix Keymaps728577 ! Node: Local Keymaps729862 ! Node: Minibuffer Maps732027 ! Node: Rebinding732645 ! Node: Init Rebinding735713 ! Node: Function Keys737199 ! Node: Mouse Buttons739883 ! Node: Disabling742364 ! Node: Keyboard Translations744103 ! Node: Syntax745610 ! Node: Init File746740 ! Node: Init Syntax748201 ! Node: Init Examples750295 ! Node: Terminal Init754224 ! Node: Find Init755899 ! Node: Quitting756759 ! Node: Lossage760317 ! Node: DEL Gets Help761029 ! Node: Stuck Recursive761397 ! Node: Screen Garbled762103 ! Node: Text Garbled763222 ! Node: Unasked-for Search763861 ! Node: Emergency Escape765345 ! Node: Total Frustration767096 ! Node: Bugs767715 ! Node: Bug Criteria768420 ! Node: Understanding Bug Reporting771014 ! Node: Checklist773511 ! Node: Sending Patches784119 ! Node: Service788990 ! Node: Command Arguments789586 ! Node: Ordinary Arguments791546 ! Node: Initial Options792298 ! Node: Command Example794230 ! Node: Resume Arguments795080 ! Node: Display X796731 ! Node: Font X799112 ! Node: Colors X800586 ! Node: Window Size X801803 ! Node: Borders X804140 ! Node: Icons X805071 ! Node: Resources X806031 ! Node: Antinews809742 ! Node: Manifesto825576 ! Node: Glossary851572 ! Node: Key Index885901 ! Node: Command Index913464 ! Node: Variable Index954606 ! Node: Concept Index966800  End Tag Table diff -cprP --exclude=*.elc emacs-19.13/info/emacs-1 emacs-19.14/info/emacs-1 *** emacs-19.13/info/emacs-1 Tue Jun 8 07:24:24 1993 --- emacs-19.14/info/emacs-1 Thu Jun 17 19:44:44 1993 *************** *** 1,4 **** ! This is Info file ../info/emacs, produced by Makeinfo-1.54 from the input file emacs.texi.  --- 1,4 ---- ! This is Info file ../info/emacs, produced by Makeinfo-1.55 from the input file emacs.texi.  *************** File: emacs, Node: Top, Next: Distrib, *** 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: --- 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.14. * Menu: *************** to GNU Emacs version 19.13. *** 20,25 **** --- 20,26 ---- * Intro:: An introduction to Emacs concepts. * Glossary:: The glossary. * Manifesto:: What's GNU? Gnu's Not Unix! + * Antinews:: Information about Emacs version 18. Indexes, nodes containing large menus * Key Index:: An item for each standard Emacs key sequence. *************** Recovery from Problems. *** 105,213 **** Here are some other nodes which are really inferiors of the ones already listed, mentioned here so you can get to them in one step: ! Subnodes of Screen * Point:: The place in the text where editing commands operate. * Echo Area:: Short messages appear at the bottom of the screen. * Mode Line:: Interpreting the mode line. ! Subnodes of Basic ! * Blank Lines:: Commands to make or delete blank lines. * Continuation Lines:: Lines too wide for the screen. * Position Info:: What page, line, row, or column is point on? ! * Arguments:: Giving numeric arguments to commands. ! Subnodes of Minibuffer ! * Minibuffer File:: Entering file names with the minibuffer. ! * Minibuffer Edit:: How to edit in the minibuffer. ! * Completion:: An abbreviation facility for minibuffer input. ! * Repetition:: Re-executing previous commands that used the minibuffer. ! ! Subnodes of Mark ! * Setting Mark:: Commands to set the mark. ! * Using Region:: Summary of ways to operate on contents of the region. ! * Marking Objects:: Commands to put region around textual units. ! * Mark Ring:: Previous mark positions saved so you can go back there. ! ! Subnodes of Yanking ! * Kill Ring:: Where killed text is stored. Basic yanking. ! * Appending Kills:: Several kills in a row all yank together. ! * Earlier Kills:: Yanking something killed some time ago. ! ! Subnodes of Registers ! * RegPos:: Saving positions in registers. ! * RegText:: Saving text in registers. ! * RegRect:: Saving rectangles in registers. ! Subnodes of Display * Scrolling:: Moving text up and down in a window. * Horizontal Scrolling:: Moving text left and right in a window. * Selective Display:: Hiding lines with lots of indentation. * Display Vars:: Information on variables for customizing display. ! Subnodes of Search ! * Incremental Search:: Search happens as you type the string. ! * Nonincremental Search:: Specify entire string and then search. ! * Word Search:: Search for sequence of words. ! * Regexp Search:: Search for match for a regexp. ! * Regexps:: Syntax of regular expressions. ! * Search Case:: To ignore case while searching, or not. ! * Replace:: Search, and replace some or all matches. ! * Unconditional Replace:: Everything about replacement except for querying. * Query Replace:: How to use querying. ! * Other Repeating Search:: Operating on all matches for some regexp. - Subnodes of Fixit * Kill Errors:: Commands to kill a batch of recently entered text. * Transpose:: Exchanging two characters, words, lines, lists... * Fixing Case:: Correcting case of last word entered. * Spelling:: Apply spelling checker to a word, or a whole file. ! Subnodes of Files ! * File Names:: How to type and edit file name arguments. ! * Visiting:: Visiting a file prepares Emacs to edit the file. ! * Saving:: Saving makes your changes permanent. ! * Backup:: How Emacs saves the old version of your file. ! * Interlocking::How Emacs protects against simultaneous editing ! of one file by two users. ! * Reverting:: Reverting cancels all the changes not saved. ! * Auto Save:: Auto Save periodically protects against loss of data. ! * ListDir:: Listing the contents of a file directory. ! * Misc File Ops:: Other things you can do on files. ! Subnodes of Buffers * Select Buffer:: Creating a new buffer or reselecting an old one. * List Buffers:: Getting a list of buffers that exist. ! * Misc Buffer:: Renaming; changing read-only status. * Kill Buffer:: Killing buffers you no longer need. * Several Buffers:: How to go through the list of all buffers ! and operate variously on several of them. ! Subnodes of Windows ! * Basic Window:: Introduction to Emacs windows. ! * Split Window:: New windows are made by splitting existing windows. ! * Other Window:: Moving to another window or doing something to it. ! * Pop Up Window:: Finding a file or buffer in another window. ! * Change Window:: Deleting windows and changing their sizes. ! ! Subnodes of Indentation ! * Indentation Commands:: Various commands and techniques for indentation. ! * Tab Stops:: You can set arbitrary "tab stops" and then ! indent to the next tab stop when you want to. ! * Just Spaces:: You can request indentation using just spaces. ! Subnodes of Text ! * Text Mode:: The major mode for editing text files. * Nroff Mode:: The major mode for editing input to the formatter nroff. ! * TeX Mode:: The major mode for editing input to the formatter TeX. * Outline Mode::The major mode for editing outlines. ! * Words:: Moving over and killing words. ! * Sentences:: Moving over and killing sentences. ! * Paragraphs:: Moving over paragraphs. ! * Pages:: Moving over pages. ! * Filling:: Filling or justifying text ! * Case:: Changing the case of text ! Subnodes of Programs * Program Modes:: Major modes for editing programs. * Lists:: Expressions with balanced parentheses. * List Commands:: The commands for working with list and sexps. --- 106,359 ---- Here are some other nodes which are really inferiors of the ones already listed, mentioned here so you can get to them in one step: ! -- The Detailed Node Listing -- ! ! The Organization of the Screen ! * Point:: The place in the text where editing commands operate. * Echo Area:: Short messages appear at the bottom of the screen. * Mode Line:: Interpreting the mode line. ! Basic Editing Commands ! ! * Inserting Text:: Inserting text by simply typing it. ! * Moving Point:: How to move the cursor to the place where you want to ! change something. ! * Erasing:: Deleting and killing text. ! * Files: Basic Files. Visiting, creating, and saving files. ! * Help: Basic Help. Asking what a character does. ! * Blank Lines:: Commands to make or delete blank lines. * Continuation Lines:: Lines too wide for the screen. * Position Info:: What page, line, row, or column is point on? ! * Arguments:: Numeric arguments for repeating a command. ! ! The Minibuffer ! ! * File: Minibuffer File. Entering file names with the minibuffer. ! * Edit: Minibuffer Edit. How to edit in the minibuffer. ! * Completion:: An abbreviation facility for minibuffer input. ! * Minibuffer History:: Reusing recent minibuffer arguments. ! * Repetition:: Re-executing commands that used the minibuffer. ! ! Help ! ! * Help Summary:: Brief list of all Help commands. ! * Key Help:: Asking what a key does in Emacs. ! * Name Help:: Asking about a command, variable or function name. ! * Apropos:: Asking what pertains to a given topic. ! * Library Keywords:: Finding Lisp libraries by keywords (topics). ! * Misc Help:: Other help commands. ! ! The Mark and the Region ! ! * Setting Mark:: Commands to set the mark. ! * Transient Mark:: How to make Emacs highlight the region- ! when there is one. ! * Using Region:: Summary of ways to operate on contents of the region. ! * Marking Objects:: Commands to put region around textual units. ! * Mark Ring:: Previous mark positions saved so you can go back there. ! Deletion and Killing ! * Deletion:: Commands for deleting small amounts of text and ! blank areas. ! * Killing by Lines:: How to kill entire lines of text at one time. ! * Other Kill Commands:: Commands to kill large regions of text and ! syntactic units such as words and sentences. ! ! Yanking ! ! * Kill Ring:: Where killed text is stored. Basic yanking. ! * Appending Kills:: Several kills in a row all yank together. ! * Earlier Kills:: Yanking something killed some time ago. ! ! Registers ! ! * Position: RegPos. Saving positions in registers. ! * Text: RegText. Saving text in registers. ! * Rectangle: RegRect. Saving rectangles in registers. ! * Configurations: RegConfig. Saving window configurations in registers. ! * Files: RegFiles. File names in registers. ! ! Controlling the Display ! * Scrolling:: Moving text up and down in a window. * Horizontal Scrolling:: Moving text left and right in a window. * Selective Display:: Hiding lines with lots of indentation. + * Optional Display:: Optional display features. + * European Display:: Displaying (and inputting) European characters. * Display Vars:: Information on variables for customizing display. ! Searching and Replacement ! ! * Incremental Search:: Search happens as you type the string. ! * Nonincremental Search:: Specify entire string and then search. ! * Word Search:: Search for sequence of words. ! * Regexp Search:: Search for match for a regexp. ! * Regexps:: Syntax of regular expressions. ! * Search Case:: To ignore case while searching, or not. ! * Replace:: Search, and replace some or all matches. ! * Other Repeating Search:: Operating on all matches for some regexp. ! ! Replacement Commands ! ! * Unconditional Replace:: Replacing all matches for a string. ! * Regexp Replace:: Replacing all matches for a regexp. ! * Replacement and Case:: How replacements preserve case of letters. * Query Replace:: How to use querying. ! ! Commands for Fixing Typos * Kill Errors:: Commands to kill a batch of recently entered text. * Transpose:: Exchanging two characters, words, lines, lists... * Fixing Case:: Correcting case of last word entered. * Spelling:: Apply spelling checker to a word, or a whole file. ! File Handling ! ! * File Names:: How to type and edit file name arguments. ! * Visiting:: Visiting a file prepares Emacs to edit the file. ! * Saving:: Saving makes your changes permanent. ! * Reverting:: Reverting cancels all the changes not saved. ! * Auto Save:: Auto Save periodically protects against loss of data. ! * File Aliases:: Handling multiple names for one file. ! * Version Control:: Version control systems (RCS and SCCS). ! * ListDir:: Listing the contents of a file directory. ! * Comparing Files:: Finding where two files differ. ! * Misc File Ops:: Other things you can do on files. ! ! Saving Files ! ! * Backup:: How Emacs saves the old version of your file. ! * Interlocking:: How Emacs protects against simultaneous editing ! of one file by two users. ! ! Backup Files ! ! * Names: Backup Names. How backup files are named; ! choosing single or numbered backup files. ! * Deletion: Backup Deletion. Emacs deletes excess numbered backups. ! * Copying: Backup Copying. Backups can be made by copying or renaming. ! ! Auto-Saving: Protection Against Disasters ! ! * Files: Auto Save Files. The file where auto-saved changes are ! actually made until you save the file. ! * Control: Auto Save Control. Controlling when and how often to auto-save. ! * Recover:: Recovering text from auto-save files. ! ! Version Control ! ! * Concepts of VC:: Basic version control information; ! checking files in and out. ! * Editing with VC:: Commands for editing a file maintained ! with version control. ! * Variables for Check-in/out:: Variables that affect the commands used ! to check files in or out. ! * Log Entries:: Logging your changes. ! * Change Logs and VC:: Generating a change log file from log ! entries. ! * Comparing Versions:: How to compare two versions of a file. ! * VC Status:: Commands to view the VC status of files and ! look at log entries. ! * Renaming and VC:: A command to rename both the source and ! master file correctly. ! * Snapshots:: How to make and use snapshots, a set of ! file versions that can be treated as a unit. ! * Version Headers:: Inserting version control headers into ! working files. ! ! Snapshots ! * Making Snapshots:: The snapshot facilities. ! * Snapshot Caveats:: Things to be careful of when using snapshots. ! ! Using Multiple Buffers ! * Select Buffer:: Creating a new buffer or reselecting an old one. * List Buffers:: Getting a list of buffers that exist. ! * Misc Buffer:: Renaming; changing read-onliness; copying text. * Kill Buffer:: Killing buffers you no longer need. * Several Buffers:: How to go through the list of all buffers ! and operate variously on several of them. ! ! Multiple Windows ! ! * Basic Window:: Introduction to Emacs windows. ! * Split Window:: New windows are made by splitting existing windows. ! * Other Window:: Moving to another window or doing something to it. ! * Pop Up Window:: Finding a file or buffer in another window. ! * Change Window:: Deleting windows and changing their sizes. ! ! Frames and X Windows ! ! * Mouse Commands:: Moving, cutting, and pasting, with the mouse. ! * Creating Frames:: Creating additional Emacs frames with various contents. ! * Frame Parameters:: Changing the colors and other modes of frames. ! * Scroll Bars:: How to enable and disable scroll bars; how to use them. ! * Menu Bars:: Enabling and disabling the menu bar. ! * Faces:: How to change the display style using faces. ! * Misc X:: Iconifying and deleting frames. Region highlighting. ! ! Major Modes ! ! * Choosing Modes:: How major modes are specified or chosen. ! ! Indentation ! ! * Indentation Commands:: Various commands and techniques for indentation. ! * Tab Stops:: You can set arbitrary "tab stops" and then ! indent to the next tab stop when you want to. ! * Just Spaces:: You can request indentation using just spaces. ! Commands for Human Languages ! * Words:: Moving over and killing words. ! * Sentences:: Moving over and killing sentences. ! * Paragraphs:: Moving over paragraphs. ! * Pages:: Moving over pages. ! * Filling:: Filling or justifying text. ! * Case:: Changing the case of text. ! * Text Mode:: The major modes for editing text files. ! * Outline Mode:: The major mode for editing outlines. ! * TeX Mode:: The major modes for editing input to the formatter TeX. ! * Nroff Mode:: The major mode for editing input to the formatter nroff. ! ! Filling Text ! ! * Auto Fill:: Auto Fill mode breaks long lines automatically. ! * Fill Commands:: Commands to refill paragraphs and center lines. ! * Fill Prefix:: Filling when every line is indented or in a comment, etc. ! ! Commands for Human Languages ! * Nroff Mode:: The major mode for editing input to the formatter nroff. ! * TeX Mode:: The major modes for editing input to the formatter TeX. ! ! Another similar mode is used for editing outlines. It allows you ! to view the text at various levels of detail. You can view either ! the outline headings alone or both headings and text; you can also ! hide some of the headings at lower levels from view to make the high ! level structure more visible. ! * Outline Mode::The major mode for editing outlines. ! ! Outline Mode ! ! * Format: Outline Format. What the text of an outline looks like. ! * Motion: Outline Motion. Special commands for moving through ! outlines. ! * Visibility: Outline Visibility. Commands to control what is visible. ! ! TeX Mode ! * Editing: TeX Editing. Special commands for editing in TeX mode. ! * LaTeX: LaTeX Editing. Additional commands for LaTeX input files. ! * Printing: TeX Print. Commands for printing part of a file with TeX. ! * Getting: TeX Distrib. Getting the latest Unix TeX distribution. ! ! Editing Programs ! * Program Modes:: Major modes for editing programs. * Lists:: Expressions with balanced parentheses. * List Commands:: The commands for working with list and sexps. *************** Subnodes of Programs *** 227,244 **** * Fortran:: Fortran mode and its special features. * Asm Mode:: Asm mode and its special features. ! Subnodes of Building ! * Compilation:: Compiling programs in languages other than Lisp ! (C, Pascal, etc.) ! * Debuggers:: Running symbolic debuggers for non-Lisp programs. ! * Executing Lisp:: Various modes for editing Lisp programs, with ! different facilities for running the Lisp programs. * Libraries: Lisp Libraries. Creating Lisp programs to run in Emacs. * Interaction: Lisp Interaction. Executing Lisp in an Emacs buffer. ! * Eval: Lisp Eval. Executing a single Lisp expression in Emacs. ! * External Lisp:: Communicating through Emacs with a separate Lisp. ! Subnodes of Abbrevs * Defining Abbrevs:: Defining an abbrev, so it will expand when typed. * Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion. * Editing Abbrevs:: Viewing or editing the entire list of defined abbrevs. --- 373,461 ---- * Fortran:: Fortran mode and its special features. * Asm Mode:: Asm mode and its special features. ! Indentation for Programs ! ! * Basic Indent:: Indenting a single line. ! * Multi-line Indent:: Commands to reindent many lines at once. ! * Lisp Indent:: Specifying how each Lisp function should be indented. ! * C Indent:: Choosing an indentation style for C code. ! ! Tag Tables ! ! * Tag Syntax:: Tag syntax for various types of code and text ! files. ! * Create Tag Table:: Creating a tag table with `etags'. ! * Select Tag Table:: How to visit a tag table. ! * Find Tag:: Commands to find the definition of a specific ! tag. ! * Tags Search:: Using a tag table for searching and replacing. ! * Tags Stepping:: Visiting files in a tag table, one by one. ! * List Tags:: Listing and finding tags defined in a file. ! ! Merging Files with Emerge ! ! * Overview of Emerge:: How to start Emerge. Basic concepts. ! * Submodes of Emerge:: Fast mode vs. Edit mode. ! Skip Prefers mode and Auto Advance mode. ! * State of Difference:: You do the merge by specifying state A or B ! for each difference. ! * Merge Commands:: Commands for selecting a difference, ! changing states of differences, etc. ! * Exiting Emerge:: What to do when you've finished the merge. ! * Combining in Emerge:: How to keep both alternatives for a difference. ! * Fine Points of Emerge:: Misc. ! ! Fortran Mode ! ! * Motion: Fortran Motion. Moving point by statements or subprograms. ! * Indent: Fortran Indent. Indentation commands for Fortran. ! * Comments: Fortran Comments. Inserting and aligning comments. ! * Autofill: Fortran Autofill. Auto fill minor mode for Fortran. ! * Columns: Fortran Columns. Measuring columns for valid Fortran. ! * Abbrev: Fortran Abbrev. Built-in abbrevs for Fortran keywords. ! ! Fortran Indentation ! ! * Commands: ForIndent Commands. Commands for indenting Fortran. ! * Contline: ForIndent Cont. How continuation lines indent. ! * Numbers: ForIndent Num. How line numbers auto-indent. ! * Conv: ForIndent Conv. Conventions you must obey to avoid trouble. ! * Vars: ForIndent Vars. Variables controlling Fortran indent style. ! ! Compiling and Testing Programs ! ! * Compilation:: Compiling programs in languages other ! than Lisp (C, Pascal, etc.) ! * Debuggers:: Running symbolic debuggers for ! non-Lisp programs. ! * Executing Lisp:: Various modes for editing Lisp programs, ! with different facilities for running ! the Lisp programs. * Libraries: Lisp Libraries. Creating Lisp programs to run in Emacs. * Interaction: Lisp Interaction. Executing Lisp in an Emacs buffer. ! * Eval: Lisp Eval. Executing a single Lisp expression in Emacs. ! * External Lisp:: Communicating through Emacs with a ! separate Lisp. ! ! Running Debuggers Under Emacs ! ! * Starting GUD:: How to start a debugger subprocess. ! * Debugger Operation:: Connection between the debugger and source buffers. ! * Commands of GUD:: Keybindings for common commands. ! * GUD Customization:: Defining your own commands for GUD. ! ! Compiling and Testing Programs ! ! * Lists:: Expressions with balanced parentheses. ! * List Commands:: The commands for working with list and sexps. ! * Defuns:: Each program is made up of separate functions. ! There are editing commands to operate on them. ! * Program Indent:: Adjusting indentation to show the nesting. ! * Matching:: Insertion of a close-delimiter flashes matching open. ! * Comments:: Inserting, killing, and aligning comments. ! Abbrevs ! * Defining Abbrevs:: Defining an abbrev, so it will expand when typed. * Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion. * Editing Abbrevs:: Viewing or editing the entire list of defined abbrevs. *************** Subnodes of Abbrevs *** 245,305 **** * Saving Abbrevs:: Saving the entire list of abbrevs for another session. * Dynamic Abbrevs:: Abbreviations for words already in the buffer. ! Subnodes of Picture ! * Basic Picture:: Basic concepts and simple commands of Picture Mode. ! * Insert in Picture:: Controlling direction of cursor motion ! after "self-inserting" characters. ! * Tabs in Picture:: Various features for tab stops and indentation. * Rectangles in Picture:: Clearing and superimposing rectangles. ! Subnodes of Sending Mail ! * Mail Format:: Format of the mail being composed. ! * Mail Headers:: Details of allowed mail header fields. ! * Mail Aliases:: Abbreviating and grouping mail addresses. ! * Mail Mode:: Special commands for editing mail being composed. ! ! Subnodes of Rmail ! * Rmail Scrolling:: Scrolling through a message. ! * Rmail Motion:: Moving to another message. ! * Rmail Deletion:: Deleting and expunging messages. ! * Rmail Inbox:: How mail gets into the Rmail file. ! * Rmail Files:: Using multiple Rmail files. ! * Rmail Output:: Copying message out to files. ! * Rmail Labels:: Classifying messages by labeling them. ! * Rmail Summary:: Summaries show brief info on many messages. ! * Rmail Reply:: Sending replies to messages you are viewing. ! * Rmail Editing:: Editing message text and headers in Rmail. ! * Rmail Digest:: Extracting the messages from a digest message. ! ! Subnodes of Shell ! * Single Shell:: Commands to run one shell command and return. ! * Interactive Shell:: Permanent shell taking input via Emacs. ! * Shell Mode:: Special Emacs commands used with permanent shell. ! ! Subnodes of Customization ! * Minor Modes:: Each minor mode is one feature you can turn on ! independently of any others. ! * Variables:: Many Emacs commands examine Emacs variables ! to decide what to do; by setting variables, ! you can control their functioning. ! * Keyboard Macros:: A keyboard macro records a sequence of keystrokes ! to be replayed with a single command. ! * Key Bindings:: The keymaps say what command each key runs. ! By changing them, you can "redefine keys". * Keyboard Translations:: If your keyboard passes an undesired code ! for a key, you can tell Emacs to substitute another code. ! * Syntax:: The syntax table controls how words and expressions ! are parsed. ! * Init File:: How to write common customizations in the `.emacs' file. ! ! Subnodes of Lossage (and recovery) ! * Stuck Recursive:: `[...]' in mode line around the parentheses. ! * Screen Garbled:: Garbage on the screen. ! * Text Garbled:: Garbage in the text. ! * Unasked-for Search::Spontaneous entry to incremental search. ! * Emergency Escape:: Emergency escape-- ! What to do if Emacs stops responding. ! * Total Frustration:: When you are at your wits' end.  File: emacs, Node: Distrib, Next: Copying, Prev: Top, Up: Top --- 462,662 ---- * Saving Abbrevs:: Saving the entire list of abbrevs for another session. * Dynamic Abbrevs:: Abbreviations for words already in the buffer. ! Editing Pictures ! ! * Basic Picture:: Basic concepts and simple commands of Picture Mode. ! * Insert in Picture:: Controlling direction of cursor motion ! after "self-inserting" characters. ! * Tabs in Picture:: Various features for tab stops and indentation. * Rectangles in Picture:: Clearing and superimposing rectangles. ! Sending Mail ! ! * Format: Mail Format. Format of the mail being composed. ! * Headers: Mail Headers. Details of permitted mail header fields. ! * Aliases: Mail Aliases. Abbreviating and grouping mail addresses. ! * Mode: Mail Mode. Special commands for editing mail being composed. ! * Spook: Distracting NSA. How to distract the NSA's attention. ! ! Reading Mail with Rmail ! ! * Scroll: Rmail Scrolling. Scrolling through a message. ! * Motion: Rmail Motion. Moving to another message. ! * Deletion: Rmail Deletion. Deleting and expunging messages. ! * Inbox: Rmail Inbox. How mail gets into the Rmail file. ! * Files: Rmail Files. Using multiple Rmail files. ! * Output: Rmail Output. Copying message out to files. ! * Labels: Rmail Labels. Classifying messages by labeling them. ! * Reply: Rmail Reply. Sending replies to messages you are viewing. ! * Summary: Rmail Summary. Summaries show brief info on many messages. ! * Editing: Rmail Editing. Editing message text and headers in Rmail. ! * Digest: Rmail Digest. Extracting the messages from a digest message. ! * Out of Rmail:: Converting an Rmail file to mailbox format. ! * Rot13: Rmail Rot13. Reading messages encoded in the rot13 code. ! ! Summaries ! ! * Rmail Make Summary:: Making various sorts of summaries. ! * Rmail Summary Edit:: Manipulating messages from the summary. ! ! Dired, the Directory Editor ! ! * Enter: Dired Enter. How to invoke Dired. ! * Commands: Dired Commands. Commands in the Dired buffer. ! * Deletion: Dired Deletion. Deleting files with Dired. ! * Visit: Dired Visiting. Other file operations through Dired. ! * Marks vs Flags:: Flagging for deletion vs marking. ! * Operating on Files:: How to copy, rename, print, compress, etc. ! either one file or several files. ! * Shell Commands in Dired:: Running a shell command on the marked files. ! * Transforming File Names:: Using patterns to rename multiple files. ! * Comparison in Dired:: Running `diff' by way of Dired. ! * Subdirectories in Dired:: Adding subdirectories to the Dired buffer. ! * Subdirectory Motion:: Moving across subdirectories, and up and down. ! * Hiding Subdirectories:: Making subdirectories visible or invisible. ! * Updating: Dired Updating. Discarding lines for files of no interest. ! * Find: Dired and Find. Using `find' to choose the files for Dired. ! ! The Calendar and the Diary ! ! * Calendar Motion:: Moving through the calendar; selecting a date. ! * Scroll Calendar:: Bringing earlier or later months onto the screen. ! * Counting Days:: How many days are there between two dates? ! * General Calendar:: Exiting or recomputing the calendar. ! * Holidays:: Displaying dates of holidays. ! * Sunrise/Sunset:: Displaying local times of sunrise and sunset. ! * Lunar Phases:: Displaying phases of the moon. ! * Other Calendars:: Converting dates to other calendar systems. ! * Diary:: Displaying events from your diary. ! * Appointments:: Reminders when it's time to do something. ! * Daylight Savings:: How to specify when daylight savings time is active. ! ! Movement in the Calendar ! ! * Calendar Unit Motion:: Moving by days, weeks, months, and years. ! * Move to Beginning or End:: Moving to start/end of weeks, months, and ! years. ! * Specified Dates:: Moving to the current date or another ! specific date. ! ! Conversion To and From Other Calendars ! ! * Calendar Systems:: The calendars Emacs understands ! (aside from Gregorian). ! * To Other Calendar:: Converting the selected date to various calendars. ! * From Other Calendar:: Moving to a date specified in another calendar. ! * Mayan Calendar:: Moving to a date specified in a Mayan calendar. ! ! The Diary ! ! * Diary Commands:: Viewing diary entries and associated calendar dates. ! * Format of Diary File:: Entering events in your diary. ! * Date Formats:: Various ways you can specify dates. ! * Adding to Diary:: Commands to create diary entries. ! * Special Diary Entries:: Anniversaries, blocks of dates, cyclic entries, etc. ! ! GNUS ! ! * Buffers of GNUS:: The Newsgroups, Summary and Article buffers. ! * GNUS Startup:: What you should know about starting GNUS. ! * Summary of GNUS:: A short description of the basic GNUS commands. ! ! Running Shell Commands from Emacs ! ! * Single Shell:: How to run one shell command and return. ! * Interactive Shell:: Permanent shell taking input via Emacs. ! * Shell Mode:: Special Emacs commands used with permanent shell. ! * History: Shell History. Repeating previous commands in a shell buffer. ! ! Customization ! ! * Minor Modes:: Each minor mode is one feature you can turn on ! independently of any others. ! * Variables:: Many Emacs commands examine Emacs variables ! to decide what to do; by setting variables, ! you can control their functioning. ! * Keyboard Macros:: A keyboard macro records a sequence of ! keystrokes to be replayed with a single ! command. ! * Key Bindings:: The keymaps say what command each key runs. ! By changing them, you can "redefine keys". * Keyboard Translations:: If your keyboard passes an undesired code ! for a key, you can tell Emacs to ! substitute another code. ! * Syntax:: The syntax table controls how words and ! expressions are parsed. ! * Init File:: How to write common customizations in the ! `.emacs' file. ! ! Variables ! ! * Examining:: Examining or setting one variable's value. ! * Edit Options:: Examining or editing list of all variables' values. ! * Hooks:: Hook variables let you specify programs for parts ! of Emacs to run on particular occasions. ! * Locals:: Per-buffer values of variables. ! * File Variables:: How files can specify variable values. ! ! Keyboard Macros ! ! * Basic Kbd Macro:: Defining and running keyboard macros. ! * Save Kbd Macro:: Giving keyboard macros names; saving them in files. ! * Kbd Macro Query:: Keyboard macros that do different things each use. ! ! Customizing Key Bindings ! ! * Keymaps:: Generalities. The global keymap. ! * Prefix Keymaps:: Keymaps for prefix keys. ! * Local Keymaps:: Major and minor modes have their own keymaps. ! * Minibuffer Maps:: The minibuffer uses its own local keymaps. ! * Rebinding:: How to redefine one key's meaning conveniently. ! * Init Rebinding:: Rebinding keys with your init file, `.emacs'. ! * Function Keys:: Rebinding terminal function keys. ! * Mouse Buttons:: Rebinding mouse buttons in Emacs. ! * Disabling:: Disabling a command means confirmation is required ! before it can be executed. This is done to protect ! beginners from surprises. ! ! The Init File, `~/.emacs' ! ! * Init Syntax:: Syntax of constants in Emacs Lisp. ! * Init Examples:: How to do some things with an init file. ! * Terminal Init:: Each terminal type can have an init file. ! * Find Init:: How Emacs finds the init file. ! ! Dealing with Emacs Trouble ! ! * DEL Gets Help:: What to do if DEL doesn't delete. ! * Stuck Recursive:: `[...]' in mode line around the parentheses. ! * Screen Garbled:: Garbage on the screen. ! * Text Garbled:: Garbage in the text. ! * Unasked-for Search:: Spontaneous entry to incremental search. ! * Emergency Escape:: Emergency escape-- ! What to do if Emacs stops responding. ! * Total Frustration:: When you are at your wits' end. ! ! Reporting Bugs ! ! * Criteria: Bug Criteria. Have you really found a bug? ! * Understanding Bug Reporting:: How to report a bug effectively. ! * Checklist:: Steps to follow for a good bug report. ! * Sending Patches:: How to send a patch for GNU Emacs. ! ! Command Line Options and Arguments ! ! * Ordinary Arguments:: Arguments to visit files, load libraries, ! and call functions. ! * Initial Options:: Arguments that must come at the start of the command. ! * Command Example:: Examples of using command line arguments. ! * Resume Arguments:: Specifying arguments when you resume a running Emacs. ! ! * Display X:: Changing the default display and using remote login. ! * Font X:: Choosing a font for text, under X. ! * Colors X:: Choosing colors, under X. ! * Window Size X:: Start-up window size, under X. ! * Borders X:: Internal and external borders, under X. ! * Icons X:: Choosing what sort of icon to use, under X. ! * Resources X:: Advanced use of classes and resources, under X.  File: emacs, Node: Distrib, Next: Copying, Prev: Top, Up: Top *************** Software Foundation are tax deductible. *** 356,984 **** workplace, suggest that the company make a donation. If the management of your office opposes the idea of donations, you might instead suggest ordering a CD-ROM from the Foundation occasionally. - -  - File: emacs, Node: Copying, Next: Intro, Prev: Distrib, Up: Top - - GNU GENERAL PUBLIC LICENSE - ************************** - - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - ======== - - The licenses for most software are designed to take away your - freedom to share and change it. By contrast, the GNU General Public - License is intended to guarantee your freedom to share and change free - software--to make sure the software is free for all its users. This - General Public License applies to most of the Free Software - Foundation's software and to any other program whose authors commit to - using it. (Some other Free Software Foundation software is covered by - the GNU Library General Public License instead.) You can apply it to - your programs, too. - - When we speak of free software, we are referring to freedom, not - price. Our General Public Licenses are designed to make sure that you - have the freedom to distribute copies of free software (and charge for - this service if you wish), that you receive source code or can get it - if you want it, that you can change the software or use pieces of it in - new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid - anyone to deny you these rights or to ask you to surrender the rights. - These restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether - gratis or for a fee, you must give the recipients all the rights that - you have. You must make sure that they, too, receive or can get the - source code. And you must show them these terms so they know their - rights. - - We protect your rights with two steps: (1) copyright the software, - and (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. - - Finally, any free program is threatened constantly by software - patents. We wish to avoid the danger that redistributors of a free - program will individually obtain patent licenses, in effect making the - program proprietary. To prevent this, we have made it clear that any - patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and - modification follow. - - 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 - the Program" means either the Program or any derivative work under - copyright law: that is to say, a work containing the Program or a - portion of it, either verbatim or with modifications and/or - translated into another language. (Hereinafter, translation is - included without limitation in the term "modification".) Each - licensee is addressed as "you". - - Activities other than copying, distribution and modification are - not covered by this License; they are outside its scope. The act - of running the Program is not restricted, and the output from the - Program is covered only if its contents constitute a work based on - 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 - notices that refer to this License and to the absence of any - warranty; and give any other recipients of the Program a copy of - this License along with the Program. - - You may charge a fee for the physical act of transferring a copy, - 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: - - a. You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b. You must cause any work that you distribute or publish, that - in whole or in part contains or is derived from the Program - or any part thereof, to be licensed as a whole at no charge - to all third parties under the terms of this License. - - c. If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display - an announcement including an appropriate copyright notice and - a notice that there is no warranty (or else, saying that you - provide a warranty) and that users may redistribute the - program under these conditions, and telling the user how to - view a copy of this License. (Exception: if the Program - itself is interactive but does not normally print such an - announcement, your work based on the Program is not required - to print an announcement.) - - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the - Program, and can be reasonably considered independent and separate - works in themselves, then this License, and its terms, do not - apply to those sections when you distribute them as separate - works. But when you distribute the same sections as part of a - whole which is a work based on the Program, the distribution of - the whole must be on the terms of this License, whose permissions - for other licensees extend to the entire whole, and thus to each - and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or - contest your rights to work written entirely by you; rather, the - intent is to exercise the right to control the distribution of - derivative or collective works based on the Program. - - In addition, mere aggregation of another work not based on the - Program with the Program (or with a work based on the Program) on - 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: - - a. Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of - Sections 1 and 2 above on a medium customarily used for - software interchange; or, - - b. Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a - medium customarily used for software interchange; or, - - c. Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with - such an offer, in accord with Subsection b above.) - - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete - source code means all the source code for all modules it contains, - plus any associated interface definition files, plus the scripts - used to control compilation and installation of the executable. - However, as a special exception, the source code distributed need - not include anything that is normally distributed (in either - source or binary form) with the major components (compiler, - kernel, and so on) of the operating system on which the executable - runs, unless that component itself accompanies the executable. - - If distribution of executable or object code is made by offering - access to copy from a designated place, then offering equivalent - access to copy the source code from the same place counts as - 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 - License. However, parties who have received copies, or rights, - 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. - Therefore, by modifying or distributing the Program (or any work - based on the Program), you indicate your acceptance of this - 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 - further restrictions on the recipients' exercise of the rights - 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 - License, they do not excuse you from the conditions of this - License. If you cannot distribute so as to satisfy simultaneously - your obligations under this License and any other pertinent - obligations, then as a consequence you may not distribute the - Program at all. For example, if a patent license would not permit - royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only - way you could satisfy both it and this License would be to refrain - entirely from distribution of the Program. - - If any portion of this section is held invalid or unenforceable - under any particular circumstance, the balance of the section is - intended to apply and the section as a whole is intended to apply - in other circumstances. - - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of - any such claims; this section has the sole purpose of protecting - the integrity of the free software distribution system, which is - implemented by public license practices. Many people have made - generous contributions to the wide range of software distributed - through that system in reliance on consistent application of that - system; it is up to the author/donor to decide if he or she is - willing to distribute software through any other system and a - licensee cannot impose that choice. - - 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 - excluding those countries, so that distribution is permitted only - in or among countries not thus excluded. In such case, this - 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. - - Each version is given a distinguishing version number. If the - Program specifies a version number of this License which applies - to it and "any later version", you have the option of following - the terms and conditions either of that version or of any later - version published by the Free Software Foundation. If the Program - 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 - Foundation; we sometimes make exceptions for this. Our decision - will be guided by the two goals of preserving the free status of - all derivatives of our free software and of promoting the sharing - and reuse of software generally. - - 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 - WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT - NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE - QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE - 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, - INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR - INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF - DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU - OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY - OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - ============================================= - - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these - terms. - - To do so, attach the following notices to the program. It is safest - to attach them to the start of each source file to most effectively - convey the exclusion of warranty; and each file should have at least - the "copyright" line and a pointer to where the full notice is found. - - ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES. - Copyright (C) 19YY NAME OF AUTHOR - - This program 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 - of the License, or (at your option) any later version. - - This program 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 this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - Also add information on how to contact you by electronic and paper - mail. - - If the program is interactive, make it output a short notice like - this when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details - type `show w'. This is free software, and you are welcome - to redistribute it under certain conditions; type `show c' - for details. - - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the - commands you use may be called something other than `show w' and `show - c'; they could even be mouse-clicks or menu items--whatever suits your - program. - - You should also get your employer (if you work as a programmer) or - your school, if any, to sign a "copyright disclaimer" for the program, - if necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright - interest in the program `Gnomovision' - (which makes passes at compilers) written - by James Hacker. - - SIGNATURE OF TY COON, 1 April 1989 - Ty Coon, President of Vice - - This General Public License does not permit incorporating your - program into proprietary programs. If your program is a subroutine - library, you may consider it more useful to permit linking proprietary - applications with the library. If this is what you want to do, use the - GNU Library General Public License instead of this License. - -  - File: emacs, Node: Intro, Next: Glossary, Prev: Copying, Up: Top - - Introduction - ************ - - You are reading about GNU Emacs, the GNU incarnation of the advanced, - self-documenting, customizable, extensible real-time display editor - Emacs. (The `G' in `GNU' is not silent.) - - We say that Emacs is a "display" editor because normally the text - being edited is visible on the screen and is updated automatically as - you type your commands. *Note Display: Screen. - - We call it a "real-time" editor because the display is updated very - frequently, usually after each character or pair of characters you - type. This minimizes the amount of information you must keep in your - head as you edit. *Note Real-time: Basic. - - We call Emacs advanced because it provides facilities that go beyond - simple insertion and deletion: filling of text; automatic indentation of - programs; viewing two or more files at once; and dealing in terms of - characters, words, lines, sentences, paragraphs, and pages, as well as - expressions and comments in several different programming languages. - - "Self-documenting" means that at any time you can type a special - character, `Control-h', to find out what your options are. You can - also use it to find out what any command does, or to find all the - commands that pertain to a topic. *Note Help::. - - "Customizable" means that you can change the definitions of Emacs - commands in little ways. For example, if you use a programming - language in which comments start with `<**' and end with `**>', you can - tell the Emacs comment manipulation commands to use those strings - (*note Comments::.). Another sort of customization is rearrangement of - the command set. For example, if you prefer the four basic cursor - motion commands (up, down, left and right) on keys in a diamond pattern - on the keyboard, you can have it. *Note Customization::. - - "Extensible" means that you can go beyond simple customization and - write entirely new commands, programs in the Lisp language to be run by - Emacs's own Lisp interpreter. Emacs is an "on-line extensible" system, - which means that it is divided into many functions that call each other, - any of which can be redefined in the middle of an editing session. Any - part of Emacs can be replaced without making a separate copy of all of - Emacs. Most of the editing commands of Emacs are written in Lisp - already; the few exceptions could have been written in Lisp but are - written in C for efficiency. Although only a programmer can write an - extension, anybody can use it afterward. - - When run under the X Window System, Emacs provides its own menus and - convenient bindings to mouse buttons. But Emacs can provide many of the - benefits of a window system on a text-only terminal. For instance, you - can look at or edit several files at once, move text between them, and - edit files at the same time as you run shell commands. - -  - File: emacs, Node: Screen, Next: User Input, Prev: Concept Index, Up: Top - - The Organization of the Screen - ****************************** - - On a text-only terminal, the Emacs display occupies the whole screen. - On the X Window System, Emacs creates its own X windows to use. We use - the term "frame" to mean an entire text-only screen or an entire X - window used by Emacs. Emacs uses both kinds of frames in the same way - to display your editing. Emacs normally starts out with just one frame, - but under X you can create additional frames if you wish. *Note - Frames::. - - When you start Emacs, the entire frame except for the last line is - devoted to the text you are editing. This area is called "window". - The last line is a special "echo area" or "minibuffer window" where - prompts appear and where you can enter responses. You can subdivide - the large text window horizontally or vertically into multiple text - windows, each of which can be used for a different file (*note - Windows::.). In this manual, the word "window" always refers to the - subdivisions of a frame within Emacs. - - The window that the cursor is in is the "selected window", in which - editing takes place. Most Emacs commands implicitly apply to the text - in the selected window. The other windows display text for reference - only, unless/until you select them. - - Each window's last line is a "mode line" which describes what is - going on in that window. It is in inverse video if the terminal - supports that, and contains text that starts like `-----Emacs: - SOMETHING'. Its purpose is to indicate what buffer is being displayed - above it in the window; what major and minor modes are in use; and - whether the buffer contains unsaved changes. - - * Menu: - - * Point:: The place in the text where editing commands operate. - * Echo Area:: Short messages appear at the bottom of the screen. - * Mode Line:: Interpreting the mode line. - -  - File: emacs, Node: Point, Next: Echo Area, Up: Screen - - Point - ===== - - Within Emacs, the terminal's cursor shows the location at which - editing commands will take effect. This location is called "point". - Other commands move point through the text, so that you can edit at - different places in it. - - While the cursor appears to point AT a character, you should think - of point as BETWEEN two characters; it points BEFORE the character that - appears under the cursor. For example, if your text looks like `frob' - with the cursor over the `b', then point is between the `o' and the - `b'. If you insert the character `!' at that position, the result is - `fro!b', with point between the `!' and the `b'. Thus, the cursor - remains over the `b', as before. - - Sometimes people speak of "the cursor" when they mean "point", or - speak of commands that move point as "cursor motion" commands. - - Terminals have only one cursor, and when output is in progress it - must appear where the typing is being done. This does not mean that - point is moving. It is only that Emacs has no way to show you the - location of point except when the terminal is idle. - - If you are editing several files in Emacs, each in its own buffer, - each buffer has its own point location. A buffer that is not currently - displayed remembers where point is in case you display it again later. - - When there are multiple windows, each window has its own point - location. The cursor shows the location of point in the selected - window. This also is how you can tell which window is selected. If the - same buffer appears in more than one window, each window has its own - position for point in that buffer. - - The term `point' comes from the character `.', which was the command - in TECO (the language in which the original Emacs was written) for - accessing the value now called `point'. - -  - File: emacs, Node: Echo Area, Next: Mode Line, Prev: Point, Up: Screen - - The Echo Area - ============= - - The line at the bottom of the screen (below the mode line) is the - "echo area". It is used to display small amounts of text for several - purposes. - - "Echoing" means printing out the characters that you type. Outside - Emacs, the operating system normally echoes all your input. Emacs - handles echoing differently. - - Single-character commands do not echo in Emacs, and multi-character - commands echo only if you pause while typing them. As soon as you pause - for more than a second in the middle of a command, Emacs echoes all the - characters of the command so far. This is to "prompt" you for the rest - of the command. Once echoing has started, the rest of the command - echoes immediately as you type it. This behavior is designed to give - confident users fast response, while giving hesitant users maximum - feedback. You can change this behavior by setting a variable (*note - Display Vars::.). - - If a command cannot be executed, it may print an "error message" in - the echo area. Error messages are accompanied by a beep or by flashing - the screen. Also, any input you have typed ahead is thrown away when - an error happens. - - Some commands print informative messages in the echo area. These - messages look much like error messages, but they are not announced with - a beep and do not throw away input. Sometimes the message tells you - what the command has done, when this is not obvious from looking at the - text being edited. Sometimes the sole purpose of a command is to print - a message giving you specific information--for example, `C-x =' prints - a message describing the character position of point in the text and - its current column in the window. Commands that take a long time often - display messages ending in `...' while they are working, and add `done' - at the end when they are finished. - - The echo area is also used to display the "minibuffer", a window that - is used for reading arguments to commands, such as the name of a file - to be edited. When the minibuffer is in use, the echo area begins with - a prompt string that usually ends with a colon; also, the cursor - appears in that line because it is the selected window. You can always - get out of the minibuffer by typing `C-g'. *Note Minibuffer::. - -  - File: emacs, Node: Mode Line, Prev: Echo Area, Up: Screen - - The Mode Line - ============= - - Each text window's last line is a "mode line" which describes what is - going on in that window. When there is only one text window, the mode - line appears right above the echo area. The mode line is in inverse - video if the terminal supports that, starts and ends with dashes, and - contains text like `Emacs: SOMETHING'. - - If a mode line has something else in place of `Emacs: SOMETHING', - then the window above it is in a special subsystem such as Dired. The - mode line then indicates the status of the subsystem. - - Normally, the mode line looks like this: - - --CH-Emacs: BUF (MAJOR MINOR)----POS------ - - This gives information about the buffer being displayed in the window: - the buffer's name, what major and minor modes are in use, whether the - buffer's text has been changed, and how far down the buffer you are - currently looking. - - CH contains two stars `**' if the text in the buffer has been edited - (the buffer is "modified"), or `--' if the buffer has not been edited. - Exception: for a read-only buffer, it is `%%'. - - BUF is the name of the window's "buffer". In most cases this is the - same as the name of a file you are editing. *Note Buffers::. - - The buffer displayed in the selected window (the window that the - cursor is in) is also Emacs's selected buffer, the one that editing - takes place in. When we speak of what some command does to "the - buffer", we are talking about the currently selected buffer. - - POS tells you whether there is additional text above the top of the - window, or below the bottom. If your buffer is small and it is all - visible in the window, POS is `All'. Otherwise, it is `Top' if you are - looking at the beginning of the buffer, `Bot' if you are looking at the - end of the buffer, or `NN%', where NN is the percentage of the buffer - above the top of the window. - - MAJOR is the name of the "major mode" in effect in the buffer. At - any time, each buffer is in one and only one of the possible major - modes. The major modes available include Fundamental mode (the least - specialized), Text mode, Lisp mode, and C mode. *Note Major Modes::, - for details of how the modes differ and how to select one. - - MINOR is a list of some of the "minor modes" that are turned on at - the moment in the window's chosen buffer. `Fill' means that Auto Fill - mode is on. `Abbrev' means that Word Abbrev mode is on. `Ovwrt' means - that Overwrite mode is on. *Note Minor Modes::, for more information. - `Narrow' means that the buffer being displayed has editing restricted - to only a portion of its text. This is not really a minor mode, but is - like one. *Note Narrowing::. `Def' means that a keyboard macro is - being defined. *Note Keyboard Macros::. - - Some buffers display additional information after the minor modes. - For example, Rmail buffers display the current message number and the - total number of messages. Compilation buffers and Shell mode display - the status of the subprocess. - - In addition, if Emacs is currently inside a recursive editing level, - square brackets (`[...]') appear around the parentheses that surround - the modes. If Emacs is in one recursive editing level within another, - double square brackets appear, and so on. Since recursive editing - levels affect Emacs globally and not any one buffer, the square - brackets appear in every window's mode line or not in any of them. - *Note Recursive Edit::. - - *Note Optional Display::, for features that add other handy - information to the mode line, such as the current line number of point, - the current time, and whether mail has arrived for you. --- 713,716 ---- diff -cprP --exclude=*.elc emacs-19.13/info/emacs-10 emacs-19.14/info/emacs-10 *** emacs-19.13/info/emacs-10 Tue Jun 8 07:24:25 1993 --- emacs-19.14/info/emacs-10 Thu Jun 17 19:44:45 1993 *************** *** 1,7 **** ! This is Info file ../info/emacs, produced by Makeinfo-1.54 from the input file emacs.texi.  File: emacs, Node: Overview of Emerge, Next: Submodes of Emerge, Up: Emerge Overview of Emerge --- 1,647 ---- ! This is Info file ../info/emacs, produced by Makeinfo-1.55 from the input file emacs.texi.  + File: emacs, Node: Comments, Next: Balanced Editing, Prev: Matching, Up: Programs + + Manipulating Comments + ===================== + + The comment commands insert, kill and align comments. + + `M-;' + Insert or align comment (`indent-for-comment'). + + `C-x ;' + Set comment column (`set-comment-column'). + + `C-u - C-x ;' + Kill comment on current line (`kill-comment'). + + `M-LFD' + Like RET followed by inserting and aligning a comment + (`indent-new-comment-line'). + + `M-x comment-region' + Add or remove comment delimiters on all the lines in the region. + + The command that creates a comment is `M-;' (`indent-for-comment'). + If there is no comment already on the line, a new comment is created, + aligned at a specific column called the "comment column". The comment + is created by inserting the string Emacs thinks comments should start + with (the value of `comment-start'; see below). Point is left after + that string. If the text of the line extends past the comment column, + then the indentation is done to a suitable boundary (usually, at least + one space is inserted). If the major mode has specified a string to + terminate comments, that is inserted after point, to keep the syntax + valid. + + `M-;' can also be used to align an existing comment. If a line + already contains the string that starts comments, then `M-;' just moves + point after it and re-indents it to the conventional place. Exception: + comments starting in column 0 are not moved. + + Some major modes have special rules for indenting certain kinds of + comments in certain contexts. For example, in Lisp code, comments which + start with two semicolons are indented as if they were lines of code, + instead of at the comment column. Comments which start with three + semicolons are supposed to start at the left margin. Emacs understands + these conventions by indenting a double-semicolon comment using TAB, + and by not changing the indentation of a triple-semicolon comment at + all. + + ;; This function is just an example + ;;; Here either two or three semicolons are appropriate. + (defun foo (x) + ;;; And now, the first part of the function: + ;; The following line adds one. + (1+ x)) ; This line adds one. + + In C code, a comment preceded on its line by nothing but whitespace + is indented like a line of code. + + Even when an existing comment is properly aligned, `M-;' is still + useful for moving directly to the start of the comment. + + `C-u - C-x ;' (`kill-comment') kills the comment on the current line, + if there is one. The indentation before the start of the comment is + killed as well. If there does not appear to be a comment in the line, + nothing is done. To reinsert the comment on another line, move to the + end of that line, do `C-y', and then do `M-;' to realign it. Note that + `C-u - C-x ;' is not a distinct key; it is `C-x ;' + (`set-comment-column') with a negative argument. That command is + programmed so that when it receives a negative argument it calls + `kill-comment'. However, `kill-comment' is a valid command which you + could bind directly to a key if you wanted to. + + The `M-x comment-region' command adds comment delimiters to the + lines that start in the region, thus commenting them out. With a + negative argument, it does the opposite--it deletes comment delimiters + from the lines in the region. + + With a positive argument, `comment-region' adds comment delimiters + and duplicates the last character of the comment start sequence as many + times as the argument specifies. Thus, in Lisp mode, `C-u 2 M-x + comment-region' adds `;;' to each line. + + Duplicating the comment delimiter is a way of calling attention to + the comment. It can also affect how the comment is indented. In Lisp, + for proper indentation, you should use an argument of two, if between + defuns, and three, if within a defun. + + Multiple Lines of Comments + -------------------------- + + If you are typing a comment and find that you wish to continue it on + another line, you can use the command `M-LFD' + (`indent-new-comment-line'), which terminates the comment you are + typing, creates a new blank line afterward, and begins a new comment + indented under the old one. When Auto Fill mode is on, going past the + fill column while typing a comment causes the comment to be continued in + just this fashion. If point is not at the end of the line when `M-LFD' + is typed, the text on the rest of the line becomes part of the new + comment line. + + Options Controlling Comments + ---------------------------- + + The comment column is stored in the variable `comment-column'. You + can set it to a number explicitly. Alternatively, the command `C-x ;' + (`set-comment-column') sets the comment column to the column point is + at. `C-u C-x ;' sets the comment column to match the last comment + before point in the buffer, and then does a `M-;' to align the current + line's comment under the previous one. Note that `C-u - C-x ;' runs + the function `kill-comment' as described above. + + The variable `comment-column' is per-buffer: setting the variable in + the normal fashion affects only the current buffer, but there is a + default value which you can change with `setq-default'. *Note + Locals::. Many major modes initialize this variable for the current + buffer. + + The comment commands recognize comments based on the regular + expression that is the value of the variable `comment-start-skip'. + This regexp should not match the null string. It may match more than + the comment starting delimiter in the strictest sense of the word; for + example, in C mode the value of the variable is `"/\\*+ *"', which + matches extra stars and spaces after the `/*' itself. (Note that `\\' + is needed in Lisp syntax to include a `\' in the string, which is needed + to deny the first star its special meaning in regexp syntax. *Note + Regexps::.) + + When a comment command makes a new comment, it inserts the value of + `comment-start' to begin it. The value of `comment-end' is inserted + after point, so that it will follow the text that you will insert into + the comment. In C mode, `comment-start' has the value `"/* "' and + `comment-end' has the value `" */"'. + + The variable `comment-multi-line' controls how `M-LFD' + (`indent-new-comment-line') behaves when used inside a comment. If + `comment-multi-line' is `nil', as it normally is, then the comment on + the starting line is terminated and a new comment is started on the new + following line. If `comment-multi-line' is not `nil', then the new + following line is set up as part of the same comment that was found on + the starting line. This is done by not inserting a terminator on the + old line, and not inserting a starter on the new line. In languages + where multi-line comments work, the choice of value for this variable + is a matter of taste. + + The variable `comment-indent-function' should contain a function + that will be called to compute the indentation for a newly inserted + comment or for aligning an existing comment. It is set differently by + various major modes. The function is called with no arguments, but with + point at the beginning of the comment, or at the end of a line if a new + comment is to be inserted. It should return the column in which the + comment ought to start. For example, in Lisp mode, the indent hook + function bases its decision on how many semicolons begin an existing + comment, and on the code in the preceding lines. + +  + File: emacs, Node: Balanced Editing, Next: Symbol Completion, Prev: Comments, Up: Programs + + Editing Without Unbalanced Parentheses + ====================================== + + `M-(' + Put parentheses around next sexp(s) (`insert-parentheses'). + + `M-)' + Move past next close parenthesis and re-indent + (`move-over-close-and-reindent'). + + The commands `M-(' (`insert-parentheses') and `M-)' + (`move-over-close-and-reindent') are designed to facilitate a style of + editing which keeps parentheses balanced at all times. `M-(' inserts a + pair of parentheses, either together as in `()', or, if given an + argument, around the next several sexps, and leaves point after the open + parenthesis. Instead of typing `( F O O )', you can type `M-( F O O', + which has the same effect except for leaving the cursor before the + close parenthesis. Then you can type `M-)', which moves past the close + parenthesis, deleting any indentation preceding it (in this example + there is none), and indenting with LFD after it. + +  + File: emacs, Node: Symbol Completion, Next: Documentation, Prev: Balanced Editing, Up: Programs + + Completion for Symbol Names + =========================== + + Usually completion happens in the minibuffer. But one kind of + completion is available in all buffers: completion for symbol names. + + The character `M-TAB' runs a command to complete the partial symbol + before point against the set of meaningful symbol names. Any + additional characters determined by the partial name are inserted at + point. + + If the partial name in the buffer has more than one possible + completion and they have no additional characters in common, a list of + all possible completions is displayed in another window. + + There are two ways of determining the set of legitimate symbol names + to complete against. In most major modes, this uses a tag table (*note + Tags::.); the legitimate symbol names are the tag names listed in the + tag table file. The command which implements this is `complete-tag'. + + In Emacs-Lisp mode, the name space for completion normally consists + of nontrivial symbols present in Emacs--those that have function + definitions, values or properties. However, if there is an + open-parenthesis immediately before the beginning of the partial symbol, + only symbols with function definitions are considered as completions. + The command which implements this is `lisp-complete-symbol'. + +  + File: emacs, Node: Documentation, Next: Change Log, Prev: Symbol Completion, Up: Programs + + Documentation Commands + ====================== + + As you edit Lisp code to be run in Emacs, the commands `C-h f' + (`describe-function') and `C-h v' (`describe-variable') can be used to + print documentation of functions and variables that you want to call. + These commands use the minibuffer to read the name of a function or + variable to document, and display the documentation in a window. + + For extra convenience, these commands provide default arguments + based on the code in the neighborhood of point. `C-h f' sets the + default to the function called in the innermost list containing point. + `C-h v' uses the symbol name around or adjacent to point as its default. + + Documentation on Unix commands, system calls and libraries can be + obtained with the `M-x manual-entry' command. This reads a topic as an + argument, and displays the text on that topic from the Unix manual. + `manual-entry' starts a background process that formats the manual + page, by running the `man' program. The result goes in a buffer named + `*man TOPIC*'. These buffers have a special major mode that + facilitates scrolling and examining other manual pages. + + Eventually the GNU project hopes to replace most man pages with + better-organized manuals that you can browse with Info. *Note Misc + Help::. Since this process is only partially completed, it is still + useful to read manual pages. + +  + File: emacs, Node: Change Log, Next: Tags, Prev: Documentation, Up: Programs + + Change Logs + =========== + + The Emacs command `C-x 4 a' adds a new entry to the change log file + for the file you are editing (`add-change-log-entry-other-window'). + + A change log file contains a chronological record of when and why you + have changed a program, consisting of a sequence of entries describing + individual changes. Normally it is kept in a file called `ChangeLog' + in the same directory as the file you are editing, or one of its parent + directories. A single `ChangeLog' file can record changes for all the + files in its directory and all its subdirectories. + + A change log entry starts with a header line that contains your name + and the current date. Aside from these header lines, every line in the + change log starts with a space or a tab. The bulk of the entry consists + of "items", each of which starts with a line starting with whitespace + and a star. Here are two entries, each with two items: + + Wed May 5 14:11:45 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * man.el: Rename functions and variables `man-*' to `Man-*'. + (manual-entry): Make prompt string clearer. + + * simple.el (blink-matching-paren-distance): Change default to 12,000. + + Tue May 4 12:42:19 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * vc.el (minor-mode-map-alist): Don't use it if it's void. + (vc-cancel-version): Doc fix. + + One entry can describe several changes; each change should have its + own item. Normally there should be a blank line between items. When + items are related (parts of the same change, in different places), group + them by leaving no blank line between them. The second entry above + contains two items grouped in this way. + + `C-x 4 a' visits the change log file and creates a new entry unless + the most recent entry is for today's date and your name. It also + creates a new item for the current file. For many languages, it can + even guess the name of the function or other object that was changed. + + The change log file is visited in Change Log mode. Each bunch of + grouped item counts as one paragraph, and each entry is considered a + page. This facilitates editing the entries. LFD and auto-fill indent + each new line like the previous line; this is convenient for entering + the contents of an entry. + +  + File: emacs, Node: Tags, Next: Emerge, Prev: Change Log, Up: Programs + + Tag Tables + ========== + + A "tag table" is a description of how a multi-file program is broken + up into files. It lists the names of the component files and the names + and positions of the functions (or other named subunits) in each file. + Grouping the related files makes it possible to search or replace + through all the files with one command. Recording the function names + and positions makes possible the `M-.' command which you can use to + find the definition of a function without having to know which of the + files it is in. + + Tag tables are stored in files called "tag table files". The + conventional name for a tag table file is `TAGS'. + + Each entry in the tag table records the name of one tag, the name of + the file that the tag is defined in (implicitly), and the position in + that file of the tag's definition. + + Just what names from the described files are recorded in the tag + table depends on the programming language of the described file. They + normally include all functions and subroutines, and may also include + global variables, data types, and anything else convenient. Each name + recorded is called a "tag". + + * Menu: + + * Tag Syntax:: Tag syntax for various types of code and text + files. + * Create Tag Table:: Creating a tag table with `etags'. + * Select Tag Table:: How to visit a tag table. + * Find Tag:: Commands to find the definition of a specific + tag. + * Tags Search:: Using a tag table for searching and replacing. + * Tags Stepping:: Visiting files in a tag table, one by one. + * List Tags:: Listing and finding tags defined in a file. + +  + File: emacs, Node: Tag Syntax, Next: Create Tag Table, Up: Tags + + Source File Tag Syntax + ---------------------- + + In Lisp code, any function defined with `defun', any variable + defined with `defvar' or `defconst', and in general the first argument + of any expression that starts with `(def' in column zero, is a tag. + + In Scheme code, tags include anything defined with `def' or with a + construct whose name starts with `def'. They also include variables + set with `set!' at top level in the file. + + In C code, any C function is a tag, and so is any typedef if `-t' is + specified when the tag table is constructed. + + In Yacc or Bison input files, each rule defines as a tag the + nonterminal it constructs. The portions of the file that contain C code + are parsed as C code. + + In Fortran code, functions and subroutines are tags. + + In Prolog code, a tag name appears at the left margin. + + In assembler code, labels appearing at the beginning of a line, + followed by a colon, are tags. + + In LaTeX text, the argument of any of the commands `\chapter', + `\section', `\subsection', `\subsubsection', `\eqno', `\label', `\ref', + `\cite', `\bibitem' and `\typeout' is a tag. + +  + File: emacs, Node: Create Tag Table, Next: Select Tag Table, Prev: Tag Syntax, Up: Tags + + Creating Tag Tables + ------------------- + + The `etags' program is used to create a tag table file. It knows + the syntax of several languages, as described in *Note Tag Syntax::. + Here is how to run `etags': + + etags INPUTFILES... + + The `etags' program reads the specified files, and writes a tag table + named `TAGS' in the current working directory. `etags' recognizes the + language used in an input file based on its file name and contents; + there are no switches for specifying the language. The `-t' switch + tells `etags' to record typedefs in C code as tags. + + If the tag table data become outdated due to changes in the files + described in the table, the way to update the tag table is the same way + it was made in the first place. It is not necessary to do this often. + + If the tag table fails to record a tag, or records it for the wrong + file, then Emacs cannot possibly find its definition. However, if the + position recorded in the tag table becomes a little bit wrong (due to + some editing in the file that the tag definition is in), the only + consequence is a slight delay in finding the tag. Even if the stored + position is very wrong, Emacs will still find the tag, but it must + search the entire file for it. + + So you should update a tag table when you define new tags that you + want to have listed, or when you move tag definitions from one file to + another, or when changes become substantial. Normally there is no need + to update the tag table after each edit, or even every day. + +  + File: emacs, Node: Select Tag Table, Next: Find Tag, Prev: Create Tag Table, Up: Tags + + Selecting a Tag Table + --------------------- + + Emacs has at any time one "selected" tag table, and all the commands + for working with tag tables use the selected one. To select a tag + table, type `M-x visit-tags-table', which reads the tag table file name + as an argument. The name `TAGS' in the default directory is used as the + default file name. + + All this command does is store the file name in the variable + `tags-file-name'. Emacs does not actually read in the tag table + contents until you try to use them. Setting this variable yourself is + just as good as using `visit-tags-table'. The variable's initial value + is `nil'; that value tells all the commands for working with tag tables + that they must ask for a tag table file name to use. + + Using `visit-tags-table' to load a new tag table does not discard + the other tables previously loaded. The other tags commands use all + the tag tables that are loaded; the first one they use is the one that + mentions the current visited file. + + You can specify a precise list of tag tables by setting the variable + `tags-table-list' to a list of strings, like this: + + (setq tags-table-list + '("~/emacs" "/usr/local/lib/emacs/src")) + + This tells the tags commands to look at the `TAGS' files in your + `~/emacs' directory and in the `/usr/local/lib/emacs/src' directory. + The order depends on which file you are in and which tags table + mentions that file, as explained above. + +  + File: emacs, Node: Find Tag, Next: Tags Search, Prev: Select Tag Table, Up: Tags + + Finding a Tag + ------------- + + The most important thing that a tag table enables you to do is to + find the definition of a specific tag. + + `M-. TAG RET' + Find first definition of TAG (`find-tag'). + + `C-u M-.' + Find next alternate definition of last tag specified. + + `C-u - M-.' + Go back to previous tag found. + + `M-x find-tag-regexp RET PATTERN RET' + Find a tag whose name matches PATTERN. + + `C-u M-x find-tag-regexp' + Find the next tag whose name matches the last pattern used. + + `C-x 4 . TAG RET' + Find first definition of TAG, but display it in another window + (`find-tag-other-window'). + + `C-x 5 . TAG RET' + Find first definition of TAG, and create a new frame to select the + buffer (`find-tag-other-frame'). + + `M-.' (`find-tag') is the command to find the definition of a + specified tag. It searches through the tag table for that tag, as a + string, and then uses the tag table info to determine the file that the + definition is in and the approximate character position in the file of + the definition. Then `find-tag' visits that file, moves point to the + approximate character position, and searches ever-increasing distances + away to find the tag definition. + + If an empty argument is given (just type RET), the sexp in the + buffer before or around point is used as the TAG argument. *Note + Lists::, for info on sexps. + + You don't need to give `M-.' the full name of the tag; a part will + do. This is because `M-.' finds tags in the table which contain TAG as + a substring. However, it prefers an exact match to a substring match. + + To find other tags that match the same substring, give `find-tag' a + numeric argument, as in `C-u M-.'; this does not read a tag name, but + continues searching the tag table's text for another tag containing the + same substring last used. If you have a real META key, `M-0 M-.' is an + easier alternative to `C-u M-.'. + + Like most commands that can switch buffers, `find-tag' has a variant + that displays the new buffer in another window, and one that makes a + new frame for it. The former is `C-x 4 .', which invokes the command + `find-tag-other-window'. The latter is `C-x 5 .', which invokes + `find-tag-other-frame'. + + To move back to places you've found tags recently, use `C-u - M-.'; + more generally, `M-.' with a negative numeric argument. This command + can take you to another buffer. `C-x 4 .' with a negative argument + finds the previous tag location in another window. + + The new command `M-x find-tag-regexp' visits the tags that match a + specified regular expression. It is just like `M-.' except that it + does regexp matching instead of substring matching. + + Emacs comes with a tag table file `src/TAGS' that includes all the + Lisp libraries and all the C sources of Emacs. By specifying this file + with `visit-tags-table' and then using `M-.' you can quickly find the + source for any Emacs function. + +  + File: emacs, Node: Tags Search, Next: Tags Stepping, Prev: Find Tag, Up: Tags + + Searching and Replacing with Tag Tables + --------------------------------------- + + The commands in this section visit and search all the files listed + in the selected tag table, one by one. For these commands, the tag + table serves only to specify a sequence of files to search. A related + command is `M-x grep' (*note Compilation::.). + + `M-x tags-search' + Search for the specified regexp through the files in the selected + tag table. + + `M-x tags-query-replace' + Perform a `query-replace' on each file in the selected tag table. + + `M-,' + Restart one of the commands above, from the current location of + point (`tags-loop-continue'). + + `M-x tags-search' reads a regexp using the minibuffer, then searches + for matches in all the files in the selected tag table, one file at a + time. It displays the name of the file being searched so you can + follow its progress. As soon as it finds an occurrence, `tags-search' + returns. + + Having found one match, you probably want to find all the rest. To + find one more match, type `M-,' (`tags-loop-continue') to resume the + `tags-search'. This searches the rest of the current buffer, followed + by the remaining files of the tag table. + + `M-x tags-query-replace' performs a single `query-replace' through + all the files in the tag table. It reads a regexp to search for and a + string to replace with, just like ordinary `M-x query-replace-regexp'. + It searches much like `M-x tags-search' but repeatedly, processing + matches according to your input. *Note Replace::, for more information + on query replace. + + It is possible to get through all the files in the tag table with a + single invocation of `M-x tags-query-replace'. But since any + unrecognized character causes the command to exit, you may need to + continue where you left off. `M-,' can be used for this. It resumes + the last tags search or replace command that you did. + + The commands in this section carry out much broader searches than the + `find-tags' family. The `find-tags' commands search only for + definitions of tags that match your substring or regexp. The commands + `tags-search' and `tags-query-replace' find every occurrence of the + regexp, as ordinary search commands and replace commands do in the + current buffer. + + These commands create buffers only temporarily for the files that + they have to search (those which are not already visited in Emacs + buffers). Buffers in which no match is found are quickly killed; the + others continue to exist. + + It may have struck you that `tags-search' is a lot like `grep'. You + can also run `grep' itself as an inferior of Emacs and have Emacs show + you the matching lines one by one. This works mostly the same as + running a compilation and having Emacs show you where the errors were. + *Note Compilation::. + +  + File: emacs, Node: Tags Stepping, Next: List Tags, Prev: Tags Search, Up: Tags + + Stepping Through a Tag Table + ---------------------------- + + If you wish to process all the files in the selected tag table, but + not in the specific ways that `M-x tags-search' and `M-x + tags-query-replace' do, you can use `M-x next-file' to visit the files + one by one. + + `C-u M-x next-file' + Visit the first file in the tag table, and prepare to advance + sequentially by files. + + `M-x next-file' + Visit the next file in the selected tag table. + +  + File: emacs, Node: List Tags, Prev: Tags Stepping, Up: Tags + + Tag Table Inquiries + ------------------- + + `M-x list-tags' + Display a list of the tags defined in a specific program file. + + `M-x tags-apropos' + Display a list of all tags matching a specified regexp. + + `M-x list-tags' reads the name of one of the files described by the + selected tag table, and displays a list of all the tags defined in that + file. The "file name" argument is really just a string to compare + against the names recorded in the tag table; it is read as a string + rather than as a file name. Therefore, completion and defaulting are + not available, and you must enter the string the same way it appears in + the tag table. Do not include a directory as part of the file name + unless the file name recorded in the tag table includes a directory. + + `M-x tags-apropos' is like `apropos' for tags. It reads a regexp, + then finds all the tags in the selected tag table whose entries match + that regexp, and displays the tag names found. + + You can also perform completion in the buffer on the name space of + tag names in the current tag tables. *Note Symbol Completion::. + +  + File: emacs, Node: Emerge, Next: C Mode, Prev: Tags, Up: Programs + + Merging Files with Emerge + ========================= + + It's not unusual for programmers to get their signals crossed and + modify the same program in two different directions. To recover from + this confusion, you need to merge the two versions. Emerge makes this + easier. See also *Note Comparing Files::. + + * Menu: + + * Overview of Emerge:: How to start Emerge. Basic concepts. + * Submodes of Emerge:: Fast mode vs. Edit mode. + Skip Prefers mode and Auto Advance mode. + * State of Difference:: You do the merge by specifying state A or B + for each difference. + * Merge Commands:: Commands for selecting a difference, + changing states of differences, etc. + * Exiting Emerge:: What to do when you've finished the merge. + * Combining in Emerge:: How to keep both alternatives for a difference. + * Fine Points of Emerge:: Misc. + +  File: emacs, Node: Overview of Emerge, Next: Submodes of Emerge, Up: Emerge Overview of Emerge *************** modes (*note Program Modes::.), C mode h *** 387,392 **** --- 1027,1040 ---- `#else' followed by `#if'. When going forwards, `#elif' is ignored. + `M-x c-macro-expand' + When you are debugging C code that uses macros, sometimes it is + hard to figure out precisely how the macros expand. The command + `M-x c-macro-expand' runs the C preprocessor and shows you what + expansion results from the region. The portion of the buffer + before the region is also included in preprocessing, for the sake + of macros defined there, but the output from this part isn't shown. + `M-x c-backslash-region' Insert or align `\' characters at the ends of the lines of the region, except for the last such line. This is useful after *************** runs the hook `fortran-mode-hook' (*note *** 428,439 **** * Menu: ! * Motion: Fortran Motion. Moving point by statements or subprograms. ! * Indent: Fortran Indent. Indentation commands for Fortran. ! * Comments: Fortran Comments. Inserting and aligning comments. ! * Autofill: Fortran Autofill. Auto fill minor mode for Fortran. ! * Columns: Fortran Columns. Measuring columns for valid Fortran. ! * Abbrev: Fortran Abbrev. Built-in abbrevs for Fortran keywords. Fortran mode was contributed by Michael Prange. It has been updated by Stephen A. Wood who has collated the contributions and suggestions --- 1076,1087 ---- * Menu: ! * Motion: Fortran Motion. Moving point by statements or subprograms. ! * Indent: Fortran Indent. Indentation commands for Fortran. ! * Comments: Fortran Comments. Inserting and aligning comments. ! * Autofill: Fortran Autofill. Auto fill minor mode for Fortran. ! * Columns: Fortran Columns. Measuring columns for valid Fortran. ! * Abbrev: Fortran Abbrev. Built-in abbrevs for Fortran keywords. Fortran mode was contributed by Michael Prange. It has been updated by Stephen A. Wood who has collated the contributions and suggestions *************** are required for standard Fortran. *** 482,492 **** * Menu: ! * Commands: ForIndent Commands. Commands for indenting Fortran. ! * Contline: ForIndent Cont. How continuation lines indent. ! * Numbers: ForIndent Num. How line numbers auto-indent. ! * Conv: ForIndent Conv. Conventions you must obey to avoid trouble. ! * Vars: ForIndent Vars. Variables controlling Fortran indent style.  File: emacs, Node: ForIndent Commands, Next: ForIndent Cont, Up: Fortran Indent --- 1130,1140 ---- * Menu: ! * Commands: ForIndent Commands. Commands for indenting Fortran. ! * Contline: ForIndent Cont. How continuation lines indent. ! * Numbers: ForIndent Num. How line numbers auto-indent. ! * Conv: ForIndent Conv. Conventions you must obey to avoid trouble. ! * Vars: ForIndent Vars. Variables controlling Fortran indent style.  File: emacs, Node: ForIndent Commands, Next: ForIndent Cont, Up: Fortran Indent *************** how many lines to consider (at the begin *** 570,1263 **** those lines indicates a style, then the variable `fortran-tab-mode-default' specifies the style. If it is `nil', that specifies fixed format, and non-`nil' specifies tab format. - -  - File: emacs, Node: ForIndent Num, Next: ForIndent Conv, Prev: ForIndent Cont, Up: Fortran Indent - - Line Numbers - ............ - - If a number is the first non-whitespace in the line, Fortran - indentation assumes it is a line number and moves it to columns 0 - through 4. (Columns always count from 0 in GNU Emacs.) - - Line numbers of four digits or less are normally indented one space. - The variable `fortran-line-number-indent' controls this; it specifies - the maximum indentation a line number can have. Line numbers are - indented to right-justify them to end in column 4 unless that would - require more than this maximum indentation. The default value of the - variable is 1. - - Simply inserting a line number is enough to indent it according to - these rules. As each digit is inserted, the indentation is recomputed. - To turn off this feature, set the variable - `fortran-electric-line-number' to `nil'. Then inserting line numbers - is like inserting anything else. - -  - File: emacs, Node: ForIndent Conv, Next: ForIndent Vars, Prev: ForIndent Num, Up: Fortran Indent - - Syntactic Conventions - ..................... - - Fortran mode assumes that you follow certain conventions that - simplify the task of understanding a Fortran program well enough to - indent it properly: - - * Two nested `do' loops never share a `continue' statement. - - * Fortran keywords such as `if', `else', `then', `do' and others are - written without embedded whitespace or line breaks. - - Fortran compilers generally ignore whitespace outside of string - constants, but Fortran mode does not recognize these keywords if - they are not contiguous. Constructs such as `else if' or `end do' - are acceptable, but the second word should be on the same line as - the first and not on a continuation line. - - If you fail to follow these conventions, the indentation commands may - indent some lines unaesthetically. However, a correct Fortran program - retains its meaning when reindented even if the conventions are not - followed. - -  - File: emacs, Node: ForIndent Vars, Prev: ForIndent Conv, Up: Fortran Indent - - Variables for Fortran Indentation - ................................. - - Several additional variables control how Fortran indentation works: - - `fortran-do-indent' - Extra indentation within each level of `do' statement (default 3). - - `fortran-if-indent' - Extra indentation within each level of `if' statement (default 3). - This value is also used for extra indentation within each level of - the Fortran 90 `where' statement. - - `fortran-structure-indent' - Extra indentation within each level of `structure', `union', or - `map' statements (default 3). - - `fortran-continuation-indent' - Extra indentation for bodies of continuation lines (default 5). - - `fortran-check-all-num-for-matching-do' - If this is `nil', indentation assumes that each `do' statement - ends on a `continue' statement. Therefore, when computing - indentation for a statement other than `continue', it can save time - by not checking for a `do' statement ending there. If this is - non-`nil', indenting any numbered statement must check for a `do' - that ends there. The default is `nil'. - - `fortran-blink-matching-if' - If this is `t', indenting an `endif' statement moves the cursor - momentarily to the matching `if' statement to show where it is. - The default is `nil'. - - `fortran-minimum-statement-indent-fixed' - Minimum indentation for fortran statements when using fixed format - continuation line style. Statement bodies are never indented less - than this much. The default is 6. - - `fortran-minimum-statement-indent-tab' - Minimum indentation for fortran statements for tab format - continuation line style. Statement bodies are never indented less - than this much. The default is 8. - -  - File: emacs, Node: Fortran Comments, Next: Fortran Autofill, Prev: Fortran Indent, Up: Fortran - - Comments - -------- - - The usual Emacs comment commands assume that a comment can follow a - line of code. In Fortran, the standard comment syntax requires an - entire line to be just a comment. Therefore, Fortran mode replaces the - standard Emacs comment commands and defines some new variables. - - Fortran mode can also handle a nonstandard comment syntax where - comments start with `!' and can follow other text. Because only some - Fortran compilers accept this syntax, Fortran mode will not insert such - comments unless you have said in advance to do so. To do this, set the - variable `comment-start' to `"!"' (*note Variables::.). - - `M-;' - Align comment or insert new comment (`fortran-comment-indent'). - - `C-x ;' - Applies to nonstandard `!' comments only. - - `C-c ;' - Turn all lines of the region into comments, or (with argument) - turn them back into real code (`fortran-comment-region'). - - `M-;' in Fortran mode is redefined as the command - `fortran-comment-indent'. Like the usual `M-;' command, this - recognizes any kind of existing comment and aligns its text - appropriately; if there is no existing comment, a comment is inserted - and aligned. But inserting and aligning comments are not the same in - Fortran mode as in other modes. - - When a new comment must be inserted, if the current line is blank, a - full-line comment is inserted. On a non-blank line, a nonstandard `!' - comment is inserted if you have said you want to use them. Otherwise a - full-line comment is inserted on a new line before the current line. - - Nonstandard `!' comments are aligned like comments in other - languages, but full-line comments are different. In a standard - full-line comment, the comment delimiter itself must always appear in - column zero. What can be aligned is the text within the comment. You - can choose from three styles of alignment by setting the variable - `fortran-comment-indent-style' to one of these values: - - `fixed' - Align the text at a fixed column, which is the sum of - `fortran-comment-line-extra-indent' and the minimum statement - indentation. This is the default. - - The minimum statement indentation is - `fortran-minimum-statement-indent-fixed' for fixed format - continuation line style and `fortran-minimum-statement-indent-tab' - for tab format style. - - `relative' - Align the text as if it were a line of code, but with an additional - `fortran-comment-line-extra-indent' columns of indentation. - - `nil' - Don't move text in full-line columns automatically at all. - - In addition, you can specify the character to be used to indent - within full-line comments by setting the variable - `fortran-comment-indent-char' to the single-character string you want - to use. - - Fortran mode introduces two variables `comment-line-start' and - `comment-line-start-skip' which play for full-line comments the same - roles played by `comment-start' and `comment-start-skip' for ordinary - text-following comments. Normally these are set properly by Fortran - mode so you do not need to change them. - - The normal Emacs comment command `C-x ;' has not been redefined. If - you use `!' comments, this command can be used with them. Otherwise it - is useless in Fortran mode. - - The command `C-c ;' (`fortran-comment-region') turns all the lines - of the region into comments by inserting the string `C$$$' at the front - of each one. With a numeric argument, it turns the region back into - live code by deleting `C$$$' from the front of each line in it. The - string used for these comments can be controlled by setting the - variable `fortran-comment-region'. Note that here we have an example - of a command and a variable with the same name; these two uses of the - name never conflict because in Lisp and in Emacs it is always clear - from the context which one is meant. - -  - File: emacs, Node: Fortran Autofill, Next: Fortran Columns, Prev: Fortran Comments, Up: Fortran - - Fortran Auto Fill Mode - ---------------------- - - Fortran Auto Fill mode is a minor mode which automatically splits - Fortran statements as you insert them when they become too wide. - Splitting a statement involves making continuation lines. This - splitting happens when you type SPC, RET, or TAB, and also in the - Fortran indentation commands. - - `M-x fortran-auto-fill-mode' turns Fortran Auto Fill mode on if it - was off, or off if it was on. This command works the same as `M-x - auto-fill-mode' does for normal Auto Fill mode (*note Filling::.). A - positive numeric argument turns Fortran Auto Fill mode on, and a - negative argument turns it off. You can see when Fortran Auto Fill mode - is in effect by the presence of the word `Fill' in the mode line, - inside the parentheses. Fortran Auto Fill mode is a minor mode, turned - on or off for each buffer individually. *Note Minor Modes::. - - Fortran Auto Fill mode breaks lines at spaces or delimiters when the - lines get longer than the desired width (the value of `fill-column'). - The delimiters that Fortran Auto Fill mode may break at are `,', `'', - `+', `-', `/', `*', `=', and `)'. The line break comes after the - delimiter if the variable `fortran-break-before-delimiters' is `nil'. - Otherwise (and by default), the break comes before the delimiter. - - By default, Fortran Auto Fill mode is not enabled. If you want this - feature turned on permanently, add a hook function to - `fortran-mode-hook' to execute `(fortran-auto-fill-mode 1)'. *Note - Hooks::. - -  - File: emacs, Node: Fortran Columns, Next: Fortran Abbrev, Prev: Fortran Autofill, Up: Fortran - - Columns - ------- - - `C-c C-r' - Display a "column ruler" momentarily above the current line - (`fortran-column-ruler'). - - `C-c C-w' - Split the current window horizontally temporarily so that it is 72 - columns wide. This may help you avoid making lines longer than - the 72 character limit that some fortran compilers impose - (`fortran-window-create-momentarily'). - - The command `C-c C-r' (`fortran-column-ruler') shows a column ruler - momentarily above the current line. The comment ruler is two lines of - text that show you the locations of columns with special significance in - Fortran programs. Square brackets show the limits of the columns for - line numbers, and curly brackets show the limits of the columns for the - statement body. Column numbers appear above them. - - Note that the column numbers count from zero, as always in GNU Emacs. - As a result, the numbers may be one less than those you are familiar - with; but the positions they indicate in the line are standard for - Fortran. - - The text used to display the column ruler is the value of the - variable `fortran-comment-ruler'. By changing this variable, you can - change the display. - - For even more help, use `C-c C-w' (`fortran-window-create'), a - command which splits the current window horizontally, making a window 72 - columns wide. By editing in this window you can immediately see when - you make a line too wide to be correct Fortran. - -  - File: emacs, Node: Fortran Abbrev, Prev: Fortran Columns, Up: Fortran - - Fortran Keyword Abbrevs - ----------------------- - - Fortran mode provides many built-in abbrevs for common keywords and - declarations. These are the same sort of abbrev that you can define - yourself. To use them, you must turn on Abbrev mode. *Note Abbrevs::. - - The built-in abbrevs are unusual in one way: they all start with a - semicolon. You cannot normally use semicolon in an abbrev, but Fortran - mode makes this possible by changing the syntax of semicolon to "word - constituent." - - For example, one built-in Fortran abbrev is `;c' for `continue'. If - you insert `;c' and then insert a punctuation character such as a space - or a newline, the `;c' expands automatically to `continue', provided - Abbrev mode is enabled. - - Type `;?' or `;C-h' to display a list of all the built-in Fortran - abbrevs and what they stand for. - -  - File: emacs, Node: Asm Mode, Prev: Fortran, Up: Programs - - Asm Mode - ======== - - Asm mode is a major mode for editing files of assembler code. It - defines these commands: - - `TAB' - `tab-to-tab-stop'. - - `LFD' - Insert a newline and then indent using `tab-to-tab-stop'. - - `:' - Insert a colon and then remove the indentation from before the - label preceding colon. Then do `tab-to-tab-stop'. - - `;' - Insert or align a comment. - - The variable `asm-comment-char' specifies which character starts - comments in assembler syntax. - -  - File: emacs, Node: Building, Next: Abbrevs, Prev: Programs, Up: Top - - Compiling and Testing Programs - ****************************** - - The previous chapter discusses the Emacs commands that are useful for - making changes in programs. This chapter deals with commands that - assist in the larger process of developing and maintaining programs. - - * Menu: - - * Compilation:: Compiling programs in languages other than Lisp - (C, Pascal, etc.) - * Debuggers:: Running symbolic debuggers for non-Lisp programs. - * Executing Lisp:: Various modes for editing Lisp programs, with - different facilities for running the Lisp programs. - * Libraries: Lisp Libraries. Creating Lisp programs to run in Emacs. - * Interaction: Lisp Interaction. Executing Lisp in an Emacs buffer. - * Eval: Lisp Eval. Executing a single Lisp expression in Emacs. - * External Lisp:: Communicating through Emacs with a separate Lisp. - -  - File: emacs, Node: Compilation, Next: Debuggers, Up: Building - - Running `make', or Compilers Generally - ====================================== - - Emacs can run compilers for noninteractive languages such as C and - Fortran as inferior processes, feeding the error log into an Emacs - buffer. It can also parse the error messages and show you the source - lines where compilation errors occurred. - - `M-x compile' - Run a compiler asynchronously under Emacs, with error messages to - `*compilation*' buffer. - - `M-x grep' - Run `grep' asynchronously under Emacs, with matching lines listed - in the buffer named `*grep*'. - - `M-x kill-compilation' - `M-x kill-grep' - Kill the running compilation or `grep' subprocess. - - `C-x `' - Visit the locus of the next compiler error message or `grep' match. - - To run `make' or another compilation command, do `M-x compile'. - This command reads a shell command line using the minibuffer, and then - executes the command in an inferior shell, putting output in the buffer - named `*compilation*'. The current buffer's default directory is used - as the working directory for the execution of the command; normally, - therefore, the compilation happens in this directory. - - When the shell command line is read, the minibuffer appears - containing a default command line, which is the command you used the - last time you did `M-x compile'. If you type just RET, the same command - line is used again. For the first `M-x compile', the default is `make - -k'. - - The default compilation command comes from the variable - `compile-command'; if the appropriate compilation command for a file is - something other than `make -k', it can be useful for the file to - specify a local value for `compile-command' (*note File Variables::.). - - Starting a compilation displays the buffer `*compilation*' in - another window but does not select it. The buffer's mode line tells you - whether compilation is finished, with the word `run' or `exit' inside - the parentheses. You do not have to keep this buffer visible; - compilation continues in any case. While a compilation is going on, the - string `Compiling' appears in the mode lines of all windows. When this - string disappears, the compilation is finished. - - To kill the compilation process, do `M-x kill-compilation'. When - the compiler process terminates, the mode line of the `*compilation*' - buffer changes to say `signal' instead of `run'. Starting a new - compilation also kills any running compilation, as only one can exist - at any time. However, `M-x compile' asks for confirmation before - actually killing a compilation that is running. - - The `*compilation*' buffer uses a special major mode, Compilation - mode. This mode provides the keys SPC and DEL to scroll by screenfuls, - and `M-n' and `M-p' to move to the next or previous error message. You - can also use `M-{' and `M-}' to move up or down to an error message for - a different source file. You can visit the source for any particular - error message by moving point in `*compilation*' to that error message - and typing `C-c C-c' (`compile-goto-error'). - - To parse the compiler error messages sequentially, type `C-x `' - (`next-error'). The character following the `C-x' is the backquote or - "grave accent," not the single-quote. This command is available in all - buffers, not just in `*compilation*'. It displays the next error - message at the top of one window and source location of the error in - another window. - - The first time `C-x `' is used after the start of a compilation, it - moves to the first error's location. Subsequent uses of `C-x `' - advance down the data set up by the first use. When the preparsed error - messages are exhausted, the next `C-x `' checks for any more error - messages that have come in; this is useful if you start editing the - compilation errors while the compilation is still going on. If no more - error messages have come in, `C-x `' reports an error. - - `C-u C-x `' discards the preparsed error message data and parses the - `*compilation*' buffer over again, then displaying the first error. - This way, you can process the same set of errors again. - - Instead of running a compiler, you can run `grep' and see the lines - on which matches were found. To do this, type `M-x grep' with an - argument line that contains the same arguments you would give `grep' - when running it normally: a `grep'-style regexp (usually in - single-quotes to quote the shell's special characters) followed by file - names which may use wildcards. The output from `grep' goes in the - `*grep*' buffer and the lines that matched can be found with `C-x `' as - if they were compilation errors. - - Note: a shell is used to run the compile command, but the shell is - told that it should be noninteractive. This means in particular that - the shell starts up with no prompt. If you find your usual shell - prompt making an unsightly appearance in the `*compilation*' buffer, it - means you have made a mistake in your shell's init file (`.cshrc' or - `.shrc' or ...) by setting the prompt unconditionally. The shell init - file should set the prompt only if there already is a prompt. In - `csh', here is how to do it: - - if ($?prompt) set prompt = ... - -  - File: emacs, Node: Debuggers, Next: Executing Lisp, Prev: Compilation, Up: Building - - Running Debuggers Under Emacs - ============================= - - The GUD (Grand Unified Debugger) library provides an interface to - various symbolic debuggers from within Emacs. We recommend the - debugger GDB, which is free software, but you can also run DBX or SDB - if you have them. - - * Menu: - - * Starting GUD:: How to start a debugger subprocess. - * Debugger Operation:: Connection between the debugger and source buffers. - * Commands of GUD:: Keybindings for common commands. - * GUD Customization:: Defining your own commands for GUD. - -  - File: emacs, Node: Starting GUD, Next: Debugger Operation, Up: Debuggers - - Starting GUD - ------------ - - There are three commands for starting a debugger, each corresponding - to a particular debugger program. - - `M-x gdb RET FILE RET' - Run GDB as a subprocess of Emacs. This command creates a buffer - for input and output to GDB, and switches to it. If a GDB buffer - already exists, it just switches to that buffer. - - `M-x dbx RET FILE RET' - Similar, but run DBX instead of GDB. - - `M-x sdb RET FILE RET' - Similar, but run SDB instead of GDB. - - Some versions of SDB do not mention source file names in their - messages. When you use them, you need to have a valid tags table - (*note Tags::.) in order for GUD to find functions in the source - code. If you have not visited a tags table or the tags table - doesn't list one of the functions, you get a message saying `The - sdb support requires a valid tags table to work'. If this - happens, generate a valid tags table in the working directory and - try again. - - You can only run one debugger process at a time. - - Each of these commands takes one argument: a command line to invoke - the debugger. In the simplest case, specify just the name of the - executable file you want to debug. You may also use options that the - debugger supports. However, shell wild cards and variables are not - allowed. GUD assumes that the first argument not preceded by a `-' is - the executable file name. - -  - File: emacs, Node: Debugger Operation, Next: Commands of GUD, Prev: Starting GUD, Up: Debuggers - - Debugger Operation - ------------------ - - When you run a debugger with GUD, the debugger uses an Emacs buffer - for its ordinary input and output. This is called the GUD buffer. The - debugger uses other Emacs buffers to display the source files of the - program. An arrow (`=>') in one of these buffers indicates the current - execution line. Moving point in this buffer does not move the arrow. - - You can start editing these source files at any time in the buffers - that were made to display them. The arrow is not part of the file's - text; it appears only on the screen. If you do modify a source file, - keep in mind that inserting or deleting lines will throw off the arrow's - positioning; GUD has no way of figuring out which line corresponded - before your changes to the line number in a debugger message. Also, - you'll typically have to recompile and restart the program for your - changes to be reflected in the debugger's tables. - - If you wish, you can control your debugger process entirely through - the debugger buffer, which uses a variant of Shell mode. All the usual - commands for your debugger are available, and you can use the Shell mode - history commands to repeat them. - -  - File: emacs, Node: Commands of GUD, Next: GUD Customization, Prev: Debugger Operation, Up: Debuggers - - Commands of GUD - --------------- - - GUD provides a command available in all buffers for setting - breakpoints. This command is defined globally because you need to use - it in the source files' buffers. - - `C-x SPC' - Set a breakpoint on the line that point is on. - - Here are the other commands provided by GUD. The keys starting with - `C-c' are available only in the GUD interaction buffer. The bindings - that start with `C-x C-a' are available in the GUD buffer and also in - source files. - - `C-c C-l' - `C-x C-a C-l' - Display in another window the last line referred to in the GUD - buffer (that is, the line indicated in the last location message). - This runs the command `gud-refresh'. - - `C-c C-s' - `C-x C-a C-s' - Execute a single line of code (`gud-step'). If the code contains - a function call, execution stops after entering the called - function. - - `C-c C-n' - `C-x C-a C-n' - Execute a single line of code, stepping across entire function - calls at full speed (`gud-next'). - - `C-c C-i' - `C-x C-a C-i' - Execute a single machine instruction (`gud-stepi'). - - `C-c C-c' - `C-x C-a C-c' - Continue execution until the next breakpoint, or other event that - would normally stop the program (`gud-cont'). - - `C-c C-d' - `C-x C-a C-d' - Delete the breakpoint(s) on the current source line, if any - (`gud-remove'). If you use this command in the GUD interaction - buffer, it applies to the line where the program last stopped. - - `C-c C-t' - `C-x C-a C-t' - Set a temporary breakpoint on the current source line, if any. If - you use this command in the GUD interaction buffer, it applies to - the line where the program last stopped. - - The above commands are common to all supported debuggers. If you are - using GDB or (some versions of) DBX, these additional commands are - available: - - `C-c <' - `C-x C-a <' - Select the next enclosing stack frame (`gud-up'). This is - equivalent to the `up' command. - - `C-c >' - `C-x C-a >' - Select the next inner stack frame (`gud-down'). This is - equivalent to the `down' command. - - If you are using GDB, two additional keybindings are available: - - `C-c C-f' - `C-x C-a C-f' - Run the program until the selected stack frame returns (or until it - stops for some other reason). - - These commands interpret a prefix argument as a repeat count, when - that makes sense. - -  - File: emacs, Node: GUD Customization, Prev: Commands of GUD, Up: Debuggers - - GUD Customization - ----------------- - - On startup, GUD runs one of the following hooks: `gdb-mode-hook', if - you are using GDB; `dbx-mode-hook', if you are using DBX; and - `sdb-mode-hook', if you are using SDB. You can use these hooks to - define custom keybindings for the debugger interaction buffer. *Note - Hooks::. - - Here is a convenient way to define a command that sends a particular - command string to the debugger, and set up a key binding for it in the - debugger interaction buffer: - - (gud-def FUNCTION CMDSTRING BINDING DOCSTRING) - - This defines a command named FUNCTION which sends CMDSTRING to the - debugger process, with documentation string DOCSTRING. You can use the - command thus defined in any buffer. If BINDING is non-`nil', `gud-def' - also binds the command to `C-c BINDING' in the GUD buffer's mode and to - `C-x C-a BINDING' generally. - - The command string CMDSTRING may contain certain escape sequences - that are filled in with varying data at the time FUNCTION is called: - - `%f' - Name of the current source file. If the current buffer is the GUD - buffer, then the "current source file" is the file that the - program stopped in. - - `%l' - Number of the current source line. If the current buffer is the - GUD buffer, then the "current source line" is the line that the - program stopped in. - - `%e' - Text of the C lvalue or function-call expression surrounding point. - - `%a' - Text of the hexadecimal address surrounding point. - - `%p' - Prefix (numeric) argument of the called function (if any) as a - number. (If you don't use `%p' in the command string, the command - you define ignores any prefix argument.) - -  - File: emacs, Node: Executing Lisp, Next: Lisp Libraries, Prev: Debuggers, Up: Building - - Executing Lisp Expressions - ========================== - - Emacs has several different major modes for Lisp and Scheme. They - are the same in terms of editing commands, but differ in the commands - for executing Lisp expressions. - - Emacs-Lisp mode - The mode for editing source files of programs to run in Emacs Lisp. - This mode defines `C-M-x' to evaluate the current defun. *Note - Lisp Libraries::. - - Lisp Interaction mode - The mode for an interactive session with Emacs Lisp. It defines - LFD to evaluate the sexp before point and insert its value in the - buffer. *Note Lisp Interaction::. - - Lisp mode - The mode for editing source files of programs that run in Lisps - other than Emacs Lisp. This mode defines `C-M-x' to send the - current defun to an inferior Lisp process. *Note External Lisp::. - - Inferior Lisp mode - The mode for an interactive session with an inferior Lisp process. - This mode combines the special features of Lisp mode and Shell mode - (*note Shell Mode::.). - - Scheme mode - Like Lisp mode but for Scheme programs. - - Inferior Scheme mode - The mode for an interactive session with an inferior Scheme - process. - - * Menu: - - These subnodes of the chapter on editing programs describe the editing - commands for working with Lisp programs, which are in fact available - globally. - - * Lists:: Expressions with balanced parentheses. - * List Commands:: The commands for working with list and sexps. - * Defuns:: Each program is made up of separate functions. - There are editing commands to operate on them. - * Program Indent:: Adjusting indentation to show the nesting. - * Matching:: Insertion of a close-delimiter flashes matching open. - * Comments:: Inserting, killing, and aligning comments. --- 1218,1221 ---- diff -cprP --exclude=*.elc emacs-19.13/info/emacs-11 emacs-19.14/info/emacs-11 *** emacs-19.13/info/emacs-11 Tue Jun 8 07:24:26 1993 --- emacs-19.14/info/emacs-11 Thu Jun 17 19:44:45 1993 *************** *** 1,7 **** ! This is Info file ../info/emacs, produced by Makeinfo-1.54 from the input file emacs.texi.  File: emacs, Node: Lisp Libraries, Next: Lisp Interaction, Prev: Executing Lisp, Up: Building Libraries of Lisp Code for Emacs --- 1,700 ---- ! This is Info file ../info/emacs, produced by Makeinfo-1.55 from the input file emacs.texi.  + File: emacs, Node: ForIndent Num, Next: ForIndent Conv, Prev: ForIndent Cont, Up: Fortran Indent + + Line Numbers + ............ + + If a number is the first non-whitespace in the line, Fortran + indentation assumes it is a line number and moves it to columns 0 + through 4. (Columns always count from 0 in GNU Emacs.) + + Line numbers of four digits or less are normally indented one space. + The variable `fortran-line-number-indent' controls this; it specifies + the maximum indentation a line number can have. Line numbers are + indented to right-justify them to end in column 4 unless that would + require more than this maximum indentation. The default value of the + variable is 1. + + Simply inserting a line number is enough to indent it according to + these rules. As each digit is inserted, the indentation is recomputed. + To turn off this feature, set the variable + `fortran-electric-line-number' to `nil'. Then inserting line numbers + is like inserting anything else. + +  + File: emacs, Node: ForIndent Conv, Next: ForIndent Vars, Prev: ForIndent Num, Up: Fortran Indent + + Syntactic Conventions + ..................... + + Fortran mode assumes that you follow certain conventions that + simplify the task of understanding a Fortran program well enough to + indent it properly: + + * Two nested `do' loops never share a `continue' statement. + + * Fortran keywords such as `if', `else', `then', `do' and others are + written without embedded whitespace or line breaks. + + Fortran compilers generally ignore whitespace outside of string + constants, but Fortran mode does not recognize these keywords if + they are not contiguous. Constructs such as `else if' or `end do' + are acceptable, but the second word should be on the same line as + the first and not on a continuation line. + + If you fail to follow these conventions, the indentation commands may + indent some lines unaesthetically. However, a correct Fortran program + retains its meaning when reindented even if the conventions are not + followed. + +  + File: emacs, Node: ForIndent Vars, Prev: ForIndent Conv, Up: Fortran Indent + + Variables for Fortran Indentation + ................................. + + Several additional variables control how Fortran indentation works: + + `fortran-do-indent' + Extra indentation within each level of `do' statement (default 3). + + `fortran-if-indent' + Extra indentation within each level of `if' statement (default 3). + This value is also used for extra indentation within each level of + the Fortran 90 `where' statement. + + `fortran-structure-indent' + Extra indentation within each level of `structure', `union', or + `map' statements (default 3). + + `fortran-continuation-indent' + Extra indentation for bodies of continuation lines (default 5). + + `fortran-check-all-num-for-matching-do' + If this is `nil', indentation assumes that each `do' statement + ends on a `continue' statement. Therefore, when computing + indentation for a statement other than `continue', it can save time + by not checking for a `do' statement ending there. If this is + non-`nil', indenting any numbered statement must check for a `do' + that ends there. The default is `nil'. + + `fortran-blink-matching-if' + If this is `t', indenting an `endif' statement moves the cursor + momentarily to the matching `if' statement to show where it is. + The default is `nil'. + + `fortran-minimum-statement-indent-fixed' + Minimum indentation for fortran statements when using fixed format + continuation line style. Statement bodies are never indented less + than this much. The default is 6. + + `fortran-minimum-statement-indent-tab' + Minimum indentation for fortran statements for tab format + continuation line style. Statement bodies are never indented less + than this much. The default is 8. + +  + File: emacs, Node: Fortran Comments, Next: Fortran Autofill, Prev: Fortran Indent, Up: Fortran + + Comments + -------- + + The usual Emacs comment commands assume that a comment can follow a + line of code. In Fortran, the standard comment syntax requires an + entire line to be just a comment. Therefore, Fortran mode replaces the + standard Emacs comment commands and defines some new variables. + + Fortran mode can also handle a nonstandard comment syntax where + comments start with `!' and can follow other text. Because only some + Fortran compilers accept this syntax, Fortran mode will not insert such + comments unless you have said in advance to do so. To do this, set the + variable `comment-start' to `"!"' (*note Variables::.). + + `M-;' + Align comment or insert new comment (`fortran-comment-indent'). + + `C-x ;' + Applies to nonstandard `!' comments only. + + `C-c ;' + Turn all lines of the region into comments, or (with argument) + turn them back into real code (`fortran-comment-region'). + + `M-;' in Fortran mode is redefined as the command + `fortran-comment-indent'. Like the usual `M-;' command, this + recognizes any kind of existing comment and aligns its text + appropriately; if there is no existing comment, a comment is inserted + and aligned. But inserting and aligning comments are not the same in + Fortran mode as in other modes. + + When a new comment must be inserted, if the current line is blank, a + full-line comment is inserted. On a non-blank line, a nonstandard `!' + comment is inserted if you have said you want to use them. Otherwise a + full-line comment is inserted on a new line before the current line. + + Nonstandard `!' comments are aligned like comments in other + languages, but full-line comments are different. In a standard + full-line comment, the comment delimiter itself must always appear in + column zero. What can be aligned is the text within the comment. You + can choose from three styles of alignment by setting the variable + `fortran-comment-indent-style' to one of these values: + + `fixed' + Align the text at a fixed column, which is the sum of + `fortran-comment-line-extra-indent' and the minimum statement + indentation. This is the default. + + The minimum statement indentation is + `fortran-minimum-statement-indent-fixed' for fixed format + continuation line style and `fortran-minimum-statement-indent-tab' + for tab format style. + + `relative' + Align the text as if it were a line of code, but with an additional + `fortran-comment-line-extra-indent' columns of indentation. + + `nil' + Don't move text in full-line columns automatically at all. + + In addition, you can specify the character to be used to indent + within full-line comments by setting the variable + `fortran-comment-indent-char' to the single-character string you want + to use. + + Fortran mode introduces two variables `comment-line-start' and + `comment-line-start-skip' which play for full-line comments the same + roles played by `comment-start' and `comment-start-skip' for ordinary + text-following comments. Normally these are set properly by Fortran + mode so you do not need to change them. + + The normal Emacs comment command `C-x ;' has not been redefined. If + you use `!' comments, this command can be used with them. Otherwise it + is useless in Fortran mode. + + The command `C-c ;' (`fortran-comment-region') turns all the lines + of the region into comments by inserting the string `C$$$' at the front + of each one. With a numeric argument, it turns the region back into + live code by deleting `C$$$' from the front of each line in it. The + string used for these comments can be controlled by setting the + variable `fortran-comment-region'. Note that here we have an example + of a command and a variable with the same name; these two uses of the + name never conflict because in Lisp and in Emacs it is always clear + from the context which one is meant. + +  + File: emacs, Node: Fortran Autofill, Next: Fortran Columns, Prev: Fortran Comments, Up: Fortran + + Fortran Auto Fill Mode + ---------------------- + + Fortran Auto Fill mode is a minor mode which automatically splits + Fortran statements as you insert them when they become too wide. + Splitting a statement involves making continuation lines. This + splitting happens when you type SPC, RET, or TAB, and also in the + Fortran indentation commands. + + `M-x fortran-auto-fill-mode' turns Fortran Auto Fill mode on if it + was off, or off if it was on. This command works the same as `M-x + auto-fill-mode' does for normal Auto Fill mode (*note Filling::.). A + positive numeric argument turns Fortran Auto Fill mode on, and a + negative argument turns it off. You can see when Fortran Auto Fill mode + is in effect by the presence of the word `Fill' in the mode line, + inside the parentheses. Fortran Auto Fill mode is a minor mode, turned + on or off for each buffer individually. *Note Minor Modes::. + + Fortran Auto Fill mode breaks lines at spaces or delimiters when the + lines get longer than the desired width (the value of `fill-column'). + The delimiters that Fortran Auto Fill mode may break at are `,', `'', + `+', `-', `/', `*', `=', and `)'. The line break comes after the + delimiter if the variable `fortran-break-before-delimiters' is `nil'. + Otherwise (and by default), the break comes before the delimiter. + + By default, Fortran Auto Fill mode is not enabled. If you want this + feature turned on permanently, add a hook function to + `fortran-mode-hook' to execute `(fortran-auto-fill-mode 1)'. *Note + Hooks::. + +  + File: emacs, Node: Fortran Columns, Next: Fortran Abbrev, Prev: Fortran Autofill, Up: Fortran + + Columns + ------- + + `C-c C-r' + Display a "column ruler" momentarily above the current line + (`fortran-column-ruler'). + + `C-c C-w' + Split the current window horizontally temporarily so that it is 72 + columns wide. This may help you avoid making lines longer than + the 72 character limit that some fortran compilers impose + (`fortran-window-create-momentarily'). + + The command `C-c C-r' (`fortran-column-ruler') shows a column ruler + momentarily above the current line. The comment ruler is two lines of + text that show you the locations of columns with special significance in + Fortran programs. Square brackets show the limits of the columns for + line numbers, and curly brackets show the limits of the columns for the + statement body. Column numbers appear above them. + + Note that the column numbers count from zero, as always in GNU Emacs. + As a result, the numbers may be one less than those you are familiar + with; but the positions they indicate in the line are standard for + Fortran. + + The text used to display the column ruler is the value of the + variable `fortran-comment-ruler'. By changing this variable, you can + change the display. + + For even more help, use `C-c C-w' (`fortran-window-create'), a + command which splits the current window horizontally, making a window 72 + columns wide. By editing in this window you can immediately see when + you make a line too wide to be correct Fortran. + +  + File: emacs, Node: Fortran Abbrev, Prev: Fortran Columns, Up: Fortran + + Fortran Keyword Abbrevs + ----------------------- + + Fortran mode provides many built-in abbrevs for common keywords and + declarations. These are the same sort of abbrev that you can define + yourself. To use them, you must turn on Abbrev mode. *Note Abbrevs::. + + The built-in abbrevs are unusual in one way: they all start with a + semicolon. You cannot normally use semicolon in an abbrev, but Fortran + mode makes this possible by changing the syntax of semicolon to "word + constituent." + + For example, one built-in Fortran abbrev is `;c' for `continue'. If + you insert `;c' and then insert a punctuation character such as a space + or a newline, the `;c' expands automatically to `continue', provided + Abbrev mode is enabled. + + Type `;?' or `;C-h' to display a list of all the built-in Fortran + abbrevs and what they stand for. + +  + File: emacs, Node: Asm Mode, Prev: Fortran, Up: Programs + + Asm Mode + ======== + + Asm mode is a major mode for editing files of assembler code. It + defines these commands: + + `TAB' + `tab-to-tab-stop'. + + `LFD' + Insert a newline and then indent using `tab-to-tab-stop'. + + `:' + Insert a colon and then remove the indentation from before the + label preceding colon. Then do `tab-to-tab-stop'. + + `;' + Insert or align a comment. + + The variable `asm-comment-char' specifies which character starts + comments in assembler syntax. + +  + File: emacs, Node: Building, Next: Abbrevs, Prev: Programs, Up: Top + + Compiling and Testing Programs + ****************************** + + The previous chapter discusses the Emacs commands that are useful for + making changes in programs. This chapter deals with commands that + assist in the larger process of developing and maintaining programs. + + * Menu: + + * Compilation:: Compiling programs in languages other + than Lisp (C, Pascal, etc.) + * Debuggers:: Running symbolic debuggers for + non-Lisp programs. + * Executing Lisp:: Various modes for editing Lisp programs, + with different facilities for running + the Lisp programs. + * Libraries: Lisp Libraries. Creating Lisp programs to run in Emacs. + * Interaction: Lisp Interaction. Executing Lisp in an Emacs buffer. + * Eval: Lisp Eval. Executing a single Lisp expression in Emacs. + * External Lisp:: Communicating through Emacs with a + separate Lisp. + +  + File: emacs, Node: Compilation, Next: Debuggers, Up: Building + + Running `make', or Compilers Generally + ====================================== + + Emacs can run compilers for noninteractive languages such as C and + Fortran as inferior processes, feeding the error log into an Emacs + buffer. It can also parse the error messages and show you the source + lines where compilation errors occurred. + + `M-x compile' + Run a compiler asynchronously under Emacs, with error messages to + `*compilation*' buffer. + + `M-x grep' + Run `grep' asynchronously under Emacs, with matching lines listed + in the buffer named `*grep*'. + + `M-x kill-compilation' + `M-x kill-grep' + Kill the running compilation or `grep' subprocess. + + `C-x `' + Visit the locus of the next compiler error message or `grep' match. + + To run `make' or another compilation command, do `M-x compile'. + This command reads a shell command line using the minibuffer, and then + executes the command in an inferior shell, putting output in the buffer + named `*compilation*'. The current buffer's default directory is used + as the working directory for the execution of the command; normally, + therefore, the compilation happens in this directory. + + When the shell command line is read, the minibuffer appears + containing a default command line, which is the command you used the + last time you did `M-x compile'. If you type just RET, the same command + line is used again. For the first `M-x compile', the default is `make + -k'. + + The default compilation command comes from the variable + `compile-command'; if the appropriate compilation command for a file is + something other than `make -k', it can be useful for the file to + specify a local value for `compile-command' (*note File Variables::.). + + Starting a compilation displays the buffer `*compilation*' in + another window but does not select it. The buffer's mode line tells you + whether compilation is finished, with the word `run' or `exit' inside + the parentheses. You do not have to keep this buffer visible; + compilation continues in any case. While a compilation is going on, the + string `Compiling' appears in the mode lines of all windows. When this + string disappears, the compilation is finished. + + To kill the compilation process, do `M-x kill-compilation'. When + the compiler process terminates, the mode line of the `*compilation*' + buffer changes to say `signal' instead of `run'. Starting a new + compilation also kills any running compilation, as only one can exist + at any time. However, `M-x compile' asks for confirmation before + actually killing a compilation that is running. + + The `*compilation*' buffer uses a special major mode, Compilation + mode. This mode provides the keys SPC and DEL to scroll by screenfuls, + and `M-n' and `M-p' to move to the next or previous error message. You + can also use `M-{' and `M-}' to move up or down to an error message for + a different source file. You can visit the source for any particular + error message by moving point in `*compilation*' to that error message + and typing `C-c C-c' (`compile-goto-error'). + + To parse the compiler error messages sequentially, type `C-x `' + (`next-error'). The character following the `C-x' is the backquote or + "grave accent," not the single-quote. This command is available in all + buffers, not just in `*compilation*'. It displays the next error + message at the top of one window and source location of the error in + another window. + + The first time `C-x `' is used after the start of a compilation, it + moves to the first error's location. Subsequent uses of `C-x `' + advance down the data set up by the first use. When the preparsed error + messages are exhausted, the next `C-x `' checks for any more error + messages that have come in; this is useful if you start editing the + compilation errors while the compilation is still going on. If no more + error messages have come in, `C-x `' reports an error. + + `C-u C-x `' discards the preparsed error message data and parses the + `*compilation*' buffer over again, then displaying the first error. + This way, you can process the same set of errors again. + + Instead of running a compiler, you can run `grep' and see the lines + on which matches were found. To do this, type `M-x grep' with an + argument line that contains the same arguments you would give `grep' + when running it normally: a `grep'-style regexp (usually in + single-quotes to quote the shell's special characters) followed by file + names which may use wildcards. The output from `grep' goes in the + `*grep*' buffer and the lines that matched can be found with `C-x `' as + if they were compilation errors. + + Note: a shell is used to run the compile command, but the shell is + told that it should be noninteractive. This means in particular that + the shell starts up with no prompt. If you find your usual shell + prompt making an unsightly appearance in the `*compilation*' buffer, it + means you have made a mistake in your shell's init file (`.cshrc' or + `.shrc' or ...) by setting the prompt unconditionally. The shell init + file should set the prompt only if there already is a prompt. In + `csh', here is how to do it: + + if ($?prompt) set prompt = ... + +  + File: emacs, Node: Debuggers, Next: Executing Lisp, Prev: Compilation, Up: Building + + Running Debuggers Under Emacs + ============================= + + The GUD (Grand Unified Debugger) library provides an interface to + various symbolic debuggers from within Emacs. We recommend the + debugger GDB, which is free software, but you can also run DBX or SDB + if you have them. + + * Menu: + + * Starting GUD:: How to start a debugger subprocess. + * Debugger Operation:: Connection between the debugger and source buffers. + * Commands of GUD:: Keybindings for common commands. + * GUD Customization:: Defining your own commands for GUD. + +  + File: emacs, Node: Starting GUD, Next: Debugger Operation, Up: Debuggers + + Starting GUD + ------------ + + There are three commands for starting a debugger, each corresponding + to a particular debugger program. + + `M-x gdb RET FILE RET' + Run GDB as a subprocess of Emacs. This command creates a buffer + for input and output to GDB, and switches to it. If a GDB buffer + already exists, it just switches to that buffer. + + `M-x dbx RET FILE RET' + Similar, but run DBX instead of GDB. + + `M-x sdb RET FILE RET' + Similar, but run SDB instead of GDB. + + Some versions of SDB do not mention source file names in their + messages. When you use them, you need to have a valid tags table + (*note Tags::.) in order for GUD to find functions in the source + code. If you have not visited a tags table or the tags table + doesn't list one of the functions, you get a message saying `The + sdb support requires a valid tags table to work'. If this + happens, generate a valid tags table in the working directory and + try again. + + You can only run one debugger process at a time. + + Each of these commands takes one argument: a command line to invoke + the debugger. In the simplest case, specify just the name of the + executable file you want to debug. You may also use options that the + debugger supports. However, shell wild cards and variables are not + allowed. GUD assumes that the first argument not preceded by a `-' is + the executable file name. + +  + File: emacs, Node: Debugger Operation, Next: Commands of GUD, Prev: Starting GUD, Up: Debuggers + + Debugger Operation + ------------------ + + When you run a debugger with GUD, the debugger uses an Emacs buffer + for its ordinary input and output. This is called the GUD buffer. The + debugger uses other Emacs buffers to display the source files of the + program. An arrow (`=>') in one of these buffers indicates the current + execution line. Moving point in this buffer does not move the arrow. + + You can start editing these source files at any time in the buffers + that were made to display them. The arrow is not part of the file's + text; it appears only on the screen. If you do modify a source file, + keep in mind that inserting or deleting lines will throw off the arrow's + positioning; GUD has no way of figuring out which line corresponded + before your changes to the line number in a debugger message. Also, + you'll typically have to recompile and restart the program for your + changes to be reflected in the debugger's tables. + + If you wish, you can control your debugger process entirely through + the debugger buffer, which uses a variant of Shell mode. All the usual + commands for your debugger are available, and you can use the Shell mode + history commands to repeat them. + +  + File: emacs, Node: Commands of GUD, Next: GUD Customization, Prev: Debugger Operation, Up: Debuggers + + Commands of GUD + --------------- + + GUD provides a command available in all buffers for setting + breakpoints. This command is defined globally because you need to use + it in the source files' buffers. + + `C-x SPC' + Set a breakpoint on the line that point is on. + + Here are the other commands provided by GUD. The keys starting with + `C-c' are available only in the GUD interaction buffer. The bindings + that start with `C-x C-a' are available in the GUD buffer and also in + source files. + + `C-c C-l' + `C-x C-a C-l' + Display in another window the last line referred to in the GUD + buffer (that is, the line indicated in the last location message). + This runs the command `gud-refresh'. + + `C-c C-s' + `C-x C-a C-s' + Execute a single line of code (`gud-step'). If the code contains + a function call, execution stops after entering the called + function. + + `C-c C-n' + `C-x C-a C-n' + Execute a single line of code, stepping across entire function + calls at full speed (`gud-next'). + + `C-c C-i' + `C-x C-a C-i' + Execute a single machine instruction (`gud-stepi'). + + `C-c C-c' + `C-x C-a C-c' + Continue execution until the next breakpoint, or other event that + would normally stop the program (`gud-cont'). + + `C-c C-d' + `C-x C-a C-d' + Delete the breakpoint(s) on the current source line, if any + (`gud-remove'). If you use this command in the GUD interaction + buffer, it applies to the line where the program last stopped. + + `C-c C-t' + `C-x C-a C-t' + Set a temporary breakpoint on the current source line, if any. If + you use this command in the GUD interaction buffer, it applies to + the line where the program last stopped. + + The above commands are common to all supported debuggers. If you are + using GDB or (some versions of) DBX, these additional commands are + available: + + `C-c <' + `C-x C-a <' + Select the next enclosing stack frame (`gud-up'). This is + equivalent to the `up' command. + + `C-c >' + `C-x C-a >' + Select the next inner stack frame (`gud-down'). This is + equivalent to the `down' command. + + If you are using GDB, two additional keybindings are available: + + `C-c C-f' + `C-x C-a C-f' + Run the program until the selected stack frame returns (or until it + stops for some other reason). + + These commands interpret a prefix argument as a repeat count, when + that makes sense. + +  + File: emacs, Node: GUD Customization, Prev: Commands of GUD, Up: Debuggers + + GUD Customization + ----------------- + + On startup, GUD runs one of the following hooks: `gdb-mode-hook', if + you are using GDB; `dbx-mode-hook', if you are using DBX; and + `sdb-mode-hook', if you are using SDB. You can use these hooks to + define custom keybindings for the debugger interaction buffer. *Note + Hooks::. + + Here is a convenient way to define a command that sends a particular + command string to the debugger, and set up a key binding for it in the + debugger interaction buffer: + + (gud-def FUNCTION CMDSTRING BINDING DOCSTRING) + + This defines a command named FUNCTION which sends CMDSTRING to the + debugger process, with documentation string DOCSTRING. You can use the + command thus defined in any buffer. If BINDING is non-`nil', `gud-def' + also binds the command to `C-c BINDING' in the GUD buffer's mode and to + `C-x C-a BINDING' generally. + + The command string CMDSTRING may contain certain escape sequences + that are filled in with varying data at the time FUNCTION is called: + + `%f' + Name of the current source file. If the current buffer is the GUD + buffer, then the "current source file" is the file that the + program stopped in. + + `%l' + Number of the current source line. If the current buffer is the + GUD buffer, then the "current source line" is the line that the + program stopped in. + + `%e' + Text of the C lvalue or function-call expression surrounding point. + + `%a' + Text of the hexadecimal address surrounding point. + + `%p' + Prefix (numeric) argument of the called function (if any) as a + number. (If you don't use `%p' in the command string, the command + you define ignores any prefix argument.) + +  + File: emacs, Node: Executing Lisp, Next: Lisp Libraries, Prev: Debuggers, Up: Building + + Executing Lisp Expressions + ========================== + + Emacs has several different major modes for Lisp and Scheme. They + are the same in terms of editing commands, but differ in the commands + for executing Lisp expressions. + + Emacs-Lisp mode + The mode for editing source files of programs to run in Emacs Lisp. + This mode defines `C-M-x' to evaluate the current defun. *Note + Lisp Libraries::. + + Lisp Interaction mode + The mode for an interactive session with Emacs Lisp. It defines + LFD to evaluate the sexp before point and insert its value in the + buffer. *Note Lisp Interaction::. + + Lisp mode + The mode for editing source files of programs that run in Lisps + other than Emacs Lisp. This mode defines `C-M-x' to send the + current defun to an inferior Lisp process. *Note External Lisp::. + + Inferior Lisp mode + The mode for an interactive session with an inferior Lisp process. + This mode combines the special features of Lisp mode and Shell mode + (*note Shell Mode::.). + + Scheme mode + Like Lisp mode but for Scheme programs. + + Inferior Scheme mode + The mode for an interactive session with an inferior Scheme + process. + + * Menu: + + These subnodes of the chapter on editing programs describe the editing + commands for working with Lisp programs, which are in fact available + globally. + + * Lists:: Expressions with balanced parentheses. + * List Commands:: The commands for working with list and sexps. + * Defuns:: Each program is made up of separate functions. + There are editing commands to operate on them. + * Program Indent:: Adjusting indentation to show the nesting. + * Matching:: Insertion of a close-delimiter flashes matching open. + * Comments:: Inserting, killing, and aligning comments. + +  File: emacs, Node: Lisp Libraries, Next: Lisp Interaction, Prev: Executing Lisp, Up: Building Libraries of Lisp Code for Emacs *************** not described in the buffer are eliminat *** 438,1093 **** The command `edit-abbrevs' is actually the same as `list-abbrevs' except that it selects the buffer `*Abbrevs*' whereas `list-abbrevs' merely displays it in another window. - -  - File: emacs, Node: Saving Abbrevs, Next: Dynamic Abbrevs, Prev: Editing Abbrevs, Up: Abbrevs - - Saving Abbrevs - ============== - - These commands allow you to keep abbrev definitions between editing - sessions. - - `M-x write-abbrev-file' - Write a file describing all defined abbrevs. - - `M-x read-abbrev-file' - Read such a file and define abbrevs as specified there. - - `M-x quietly-read-abbrev-file' - Similar but do not display a message about what is going on. - - `M-x define-abbrevs' - Define abbrevs from definitions in current buffer. - - `M-x insert-abbrevs' - Insert all abbrevs and their expansions into current buffer. - - `M-x write-abbrev-file' reads a file name using the minibuffer and - writes a description of all current abbrev definitions into that file. - The text stored in the file looks like the output of `M-x list-abbrevs'. - This is used to save abbrev definitions for use in a later session. - - `M-x read-abbrev-file' reads a file name using the minibuffer and - reads the file, defining abbrevs according to the contents of the file. - `M-x quietly-read-abbrev-file' is the same except that it does not - display a message in the echo area saying that it is doing its work; it - is actually useful primarily in the `.emacs' file. If an empty - argument is given to either of these functions, the file name used is - the value of the variable `abbrev-file-name', which is by default - `"~/.abbrev_defs"'. - - Emacs will offer to save abbrevs automatically if you have changed - any of them, whenever it offers to save all files (for `C-x s' or `C-x - C-c'). This feature can be inhibited by setting the variable - `save-abbrevs' to `nil'. - - The commands `M-x insert-abbrevs' and `M-x define-abbrevs' are - similar to the previous commands but work on text in an Emacs buffer. - `M-x insert-abbrevs' inserts text into the current buffer before point, - describing all current abbrev definitions; `M-x define-abbrevs' parses - the entire current buffer and defines abbrevs accordingly. - -  - File: emacs, Node: Dynamic Abbrevs, Prev: Saving Abbrevs, Up: Abbrevs - - Dynamic Abbrev Expansion - ======================== - - The abbrev facility described above operates automatically as you - insert text, but all abbrevs must be defined explicitly. By contrast, - "dynamic abbrevs" allow the meanings of abbrevs to be determined - automatically from the contents of the buffer, but dynamic abbrev - expansion happens only when you request it explicitly. - - `M-/' - Expand the word in the buffer before point as a "dynamic abbrev", - by searching in the buffer for words starting with that - abbreviation (`dabbrev-expand'). - - For example, if the buffer contains `does this follow ' and you type - `f o M-/', the effect is to insert `follow' because that is the last - word in the buffer that starts with `fo'. A numeric argument to `M-/' - says to take the second, third, etc. distinct expansion found looking - backward from point. Repeating `M-/' searches for an alternative - expansion by looking farther back. After the entire buffer before - point has been considered, the buffer after point is searched. - - Dynamic abbrev expansion is completely independent of Abbrev mode; - the expansion of a word with `M-/' is completely independent of whether - it has a definition as an ordinary abbrev. - -  - File: emacs, Node: Picture, Next: Sending Mail, Prev: Abbrevs, Up: Top - - Editing Pictures - **************** - - If you want to create a picture made out of text characters (for - example, a picture of the division of a register into fields, as a - comment in a program), use the command `M-x edit-picture' to enter - Picture mode. - - In Picture mode, editing is based on the "quarter-plane" model of - text, according to which the text characters lie studded on an area that - stretches infinitely far to the right and downward. The concept of the - end of a line does not exist in this model; the most you can say is - where the last nonblank character on the line is found. - - Of course, Emacs really always considers text as a sequence of - characters, and lines really do have ends. But in Picture mode most - frequently-used keys are rebound to commands that simulate the - quarter-plane model of text. They do this by inserting spaces or by - converting tabs to spaces. - - Most of the basic editing commands of Emacs are redefined by Picture - mode to do essentially the same thing but in a quarter-plane way. In - addition, Picture mode defines various keys starting with the `C-c' - prefix to run special picture editing commands. - - One of these keys, `C-c C-c', is pretty important. Often a picture - is part of a larger file that is usually edited in some other major - mode. `M-x edit-picture' records the name of the previous major mode - so you can use the `C-c C-c' command (`picture-mode-exit') later to go - back to that mode. `C-c C-c' also deletes spaces from the ends of - lines, unless given a numeric argument. - - The commands used in Picture mode all work in other modes (provided - the `picture' library is loaded), but are not bound to keys except in - Picture mode. Note that the descriptions below talk of moving "one - column" and so on, but all the picture mode commands handle numeric - arguments as their normal equivalents do. - - Turning on Picture mode runs the hook `picture-mode-hook' (*note - Hooks::.). - - * Menu: - - * Basic Picture:: Basic concepts and simple commands of Picture Mode. - * Insert in Picture:: Controlling direction of cursor motion - after "self-inserting" characters. - * Tabs in Picture:: Various features for tab stops and indentation. - * Rectangles in Picture:: Clearing and superimposing rectangles. - -  - File: emacs, Node: Basic Picture, Next: Insert in Picture, Prev: Picture, Up: Picture - - Basic Editing in Picture Mode - ============================= - - Most keys do the same thing in Picture mode that they usually do, but - do it in a quarter-plane style. For example, `C-f' is rebound to run - `picture-forward-column', a command which moves point one column to the - right, inserting a space if necessary so that the actual end of the - line makes no difference. `C-b' is rebound to run - `picture-backward-column', which always moves point left one column, - converting a tab to multiple spaces if necessary. `C-n' and `C-p' are - rebound to run `picture-move-down' and `picture-move-up', which can - either insert spaces or convert tabs as necessary to make sure that - point stays in exactly the same column. `C-e' runs - `picture-end-of-line', which moves to after the last nonblank character - on the line. There is no need to change `C-a', as the choice of screen - model does not affect beginnings of lines. - - Insertion of text is adapted to the quarter-plane screen model - through the use of Overwrite mode (*note Minor Modes::.). - Self-inserting characters replace existing text, column by column, - rather than pushing existing text to the right. RET runs - `picture-newline', which just moves to the beginning of the following - line so that new text will replace that line. - - Picture mode provides erasure instead of deletion and killing of - text. DEL (`picture-backward-clear-column') replaces the preceding - character with a space rather than removing it; this moves point - backwards. `C-d' (`picture-clear-column') replaces the next character - or characters with spaces, but does not move point. (If you want to - clear characters to spaces and move forward over them, use SPC.) `C-k' - (`picture-clear-line') really kills the contents of lines, but does not - delete the newlines from the buffer. - - To do actual insertion, you must use special commands. `C-o' - (`picture-open-line') still creates a blank line, but does so after the - current line; it never splits a line. `C-M-o', `split-line', makes - sense in Picture mode, so it is not changed. LFD - (`picture-duplicate-line') inserts below the current line another line - with the same contents. - - If you want to do real deletion in Picture mode, use `C-w', `C-c - C-d' (which is defined as `delete-char', as `C-d' is in other modes), - or one of the picture rectangle commands (*note Rectangles in - Picture::.). - -  - File: emacs, Node: Insert in Picture, Next: Tabs in Picture, Prev: Basic Picture, Up: Picture - - Controlling Motion after Insert - =============================== - - Since "self-inserting" characters in Picture mode just overwrite and - move point, there is no essential restriction on how point should be - moved. Normally point moves right, but you can specify any of the - eight orthogonal or diagonal directions for motion after a - "self-inserting" character. This is useful for drawing lines in the - buffer. - - `C-c <' - Move left after insertion (`picture-movement-left'). - - `C-c >' - Move right after insertion (`picture-movement-right'). - - `C-c ^' - Move up after insertion (`picture-movement-up'). - - `C-c .' - Move down after insertion (`picture-movement-down'). - - `C-c `' - Move up and left ("northwest") after insertion - (`picture-movement-nw'). - - `C-c '' - Move up and right ("northeast") after insertion - (`picture-movement-ne'). - - `C-c /' - Move down and left ("southwest") after insertion - (`picture-movement-sw'). - - `C-c \' - Move down and right ("southeast") after insertion - (`picture-movement-se'). - - Two motion commands move based on the current Picture insertion - direction. The command `C-c C-f' (`picture-motion') moves in the same - direction as motion after "insertion" currently does, while `C-c C-b' - (`picture-motion-reverse') moves in the opposite direction. - -  - File: emacs, Node: Tabs in Picture, Next: Rectangles in Picture, Prev: Insert in Picture, Up: Picture - - Picture Mode Tabs - ================= - - Two kinds of tab-like action are provided in Picture mode. Use - `M-TAB' (`picture-tab-search') for context-based tabbing. With no - argument, it moves to a point underneath the next "interesting" - character that follows whitespace in the previous nonblank line. - "Next" here means "appearing at a horizontal position greater than the - one point starts out at". With an argument, as in `C-u M-TAB', this - command moves to the next such interesting character in the current - line. `M-TAB' does not change the text; it only moves point. - "Interesting" characters are defined by the variable - `picture-tab-chars', which contains a string whose characters are all - considered interesting. Its default value is `"!-~"'. - - TAB itself runs `picture-tab', which operates based on the current - tab stop settings; it is the Picture mode equivalent of - `tab-to-tab-stop'. Normally it just moves point, but with a numeric - argument it clears the text that it moves over. - - The context-based and tab-stop-based forms of tabbing are brought - together by the command `C-c TAB', `picture-set-tab-stops'. This - command sets the tab stops to the positions which `M-TAB' would - consider significant in the current line. The use of this command, - together with TAB, can get the effect of context-based tabbing. But - `M-TAB' is more convenient in the cases where it is sufficient. - -  - File: emacs, Node: Rectangles in Picture, Prev: Tabs in Picture, Up: Picture - - Picture Mode Rectangle Commands - =============================== - - Picture mode defines commands for working on rectangular pieces of - the text in ways that fit with the quarter-plane model. The standard - rectangle commands may also be useful (*note Rectangles::.). - - `C-c C-k' - Clear out the region-rectangle (`picture-clear-rectangle'). With - argument, kill it. - - `C-c C-w R' - Similar but save rectangle contents in register R first - (`picture-clear-rectangle-to-register'). - - `C-c C-y' - Copy last killed rectangle into the buffer by overwriting, with - upper left corner at point (`picture-yank-rectangle'). With - argument, insert instead. - - `C-c C-x R' - Similar, but use the rectangle in register R - (`picture-yank-rectangle-from-register'). - - The picture rectangle commands `C-c C-k' (`picture-clear-rectangle') - and `C-c C-w' (`picture-clear-rectangle-to-register') differ from the - standard rectangle commands in that they normally clear the rectangle - instead of deleting it; this is analogous with the way `C-d' is changed - in Picture mode. - - However, deletion of rectangles can be useful in Picture mode, so - these commands delete the rectangle if given a numeric argument. - - The Picture mode commands for yanking rectangles differ from the - standard ones in overwriting instead of inserting. This is the same way - that Picture mode insertion of other text differs from other modes. - `C-c C-y' (`picture-yank-rectangle') inserts (by overwriting) the - rectangle that was most recently killed, while `C-c C-x' - (`picture-yank-rectangle-from-register') does likewise for the - rectangle found in a specified register. - -  - File: emacs, Node: Sending Mail, Next: Rmail, Prev: Picture, Up: Top - - Sending Mail - ************ - - To send a message in Emacs, you start by typing a command (`C-x m') - to select and initialize the `*mail*' buffer. Then you edit the text - and headers of the message in this buffer, and type another command - (`C-c C-c') to send the message. - - `C-x m' - Begin composing a message to send (`mail'). - - `C-x 4 m' - Likewise, but display the message in another window - (`mail-other-window'). - - `C-x 5 m' - Likewise, but make a new frame (`mail-other-frame'). - - `C-c C-c' - In Mail mode, send the message and switch to another buffer - (`mail-send-and-exit'). - - The command `C-x m' (`mail') selects a buffer named `*mail*' and - initializes it with the skeleton of an outgoing message. `C-x 4 m' - (`mail-other-window') selects the `*mail*' buffer in a different - window, leaving the previous current buffer visible. `C-x 5 m' - (`mail-other-frame') creates a new frame to select the `*mail*' buffer. - - Because the mail composition buffer is an ordinary Emacs buffer, you - can switch to other buffers while in the middle of composing mail, and - switch back later (or never). If you use the `C-x m' command again - when you have been composing another message but have not sent it, you - are asked to confirm before the old message is erased. If you answer - `n', the `*mail*' buffer is left selected with its old contents, so you - can finish the old message and send it. `C-u C-x m' is another way to - do this. Sending the message marks the `*mail*' buffer "unmodified", - which avoids the need for confirmation when `C-x m' is next used. - - If you are composing a message in the `*mail*' buffer and want to - send another message before finishing the first, rename the `*mail*' - buffer using `M-x rename-uniquely' (*note Misc Buffer::.). Then you - can use `C-x m' or its variants described above to make a new `*mail' - buffer. Once you've done that, you can work with each mail buffer - independently. - - * Menu: - - * Format: Mail Format. Format of the mail being composed. - * Headers: Mail Headers. Details of permitted mail header fields. - * Aliases: Mail Aliases. Abbreviating and grouping mail addresses. - * Mode: Mail Mode. Special commands for editing mail being composed. - * Spook: Distracting NSA. How to distract the NSA's attention. - -  - File: emacs, Node: Mail Format, Next: Mail Headers, Up: Sending Mail - - The Format of the Mail Buffer - ============================= - - In addition to the "text" or "body", a message has "header fields" - which say who sent it, when, to whom, why, and so on. Some header - fields such as the date and sender are created automatically after the - message is sent. Others, such as the recipient names, must be - specified by you in order to send the message properly. - - Mail mode provides a few commands to help you edit some header - fields, and some are preinitialized in the buffer automatically at - times. You can insert or edit any header fields using ordinary editing - commands. - - The line in the buffer that says - - --text follows this line-- - - is a special delimiter that separates the headers you have specified - from the text. Whatever follows this line is the text of the message; - the headers precede it. The delimiter line itself does not appear in - the message actually sent. The text used for the delimiter line is - controlled by the variable `mail-header-separator'. - - Here is an example of what the headers and text in the `*mail*' - buffer might look like. - - To: gnu@prep.ai.mit.edu - CC: lungfish@spam.org, byob@spam.org - Subject: The Emacs Manual - --Text follows this line-- - Please ignore this message. - -  - File: emacs, Node: Mail Headers, Next: Mail Aliases, Prev: Mail Format, Up: Sending Mail - - Mail Header Fields - ================== - - There are several header fields you can use in the `*mail*' buffer. - Each header field starts with a field name at the beginning of a line, - terminated by a colon. Upper and lower case are equivalent in field - names (and in mailing addresses also). After the colon and optional - whitespace comes the contents of the field. - - `To' - This field contains the mailing addresses to which the message is - addressed. - - `Subject' - The contents of the `Subject' field should be a piece of text that - says what the message is about. The reason `Subject' fields are - useful is that most mail-reading programs can provide a summary of - messages, listing the subject of each message but not its text. - - `CC' - This field contains additional mailing addresses to send the - message to, but whose readers should not regard the message as - addressed to them. - - `BCC' - This field contains additional mailing addresses to send the - message to, which should not appear in the header of the message - actually sent. Copies sent this way are called "blind carbon - copies". - - To send a blind carbon copy of every outgoing message to yourself, - set the variable `mail-self-blind' to `t'. - - `FCC' - This field contains the name of one file (in system mail file - format) to which a copy of the message should be appended when the - message is sent. Do not output directly into an Rmail file with - FCC; instead, output to an inbox file and "get new mail" from that - inbox file into the Rmail file. *Note Rmail Inbox::. - - `From' - Use the `From' field to say who you are, when the account you are - using to send the mail is not your own. The contents of the - `From' field should be a valid mailing address, since replies will - normally go there. - - `Reply-to' - Use this field to direct replies to a different address. Most - mail-reading programs (including Rmail) automatically send replies - to the `Reply-to' address in preference to the `From' address. By - adding a `Reply-to' field to your header, you can work around any - problems your `From' address may cause for replies. - - If you want to put the same `Reply-to' address into every outgoing - message, set the variable `mail-default-reply-to' to that address - (as a string). - - `In-reply-to' - This field contains a piece of text describing a message you are - replying to. Some mail systems can use this information to - correlate related pieces of mail. Normally this field is filled - in by Rmail when you are replying to a message in Rmail, and you - never need to think about it (*note Rmail::.). - - The `To', `CC', `BCC' and `FCC' fields can appear any number of times, - to specify many places to send the message. - - The `To', `CC', and `BCC' fields can have continuation lines. All the - lines starting with whitespace, following the line on which the field - starts, are considered part of the field. For example, - - To: foo@here.net, this@there.net, - me@gnu.cambridge.mass.usa.earth.spiral3281 - - If the variable `mail-archive-file-name' is non-`nil', it should be - a string naming a file; every time you start to edit a message to send, - the message starts out with an `FCC' field specifying that file. - Unless you remove the `FCC' field before sending, the message will be - written into that file when it is sent. - -  - File: emacs, Node: Mail Aliases, Next: Mail Mode, Prev: Mail Headers, Up: Sending Mail - - Mail Aliases - ============ - - You can define "mail aliases" in a file named `~/.mailrc'. These - are short mnemonic names stand for mail addresses or groups of mail - addresses. Like many other mail programs, Emacs expands aliases when - they occur in the `To', `CC', and `BCC' fields. - - To define an alias in `~/.mailrc', write a line in the following - format: - - alias SHORTADDRESS FULLADDRESS - - For instance, if you send want to use `maingnu' as a short form of the - address `gnu@prep.ai.mit.edu', put in the line: - - alias maingnu gnu@prep.ai.mit.edu - - The file `~/.mailrc' is used primarily by other mail-reading programs; - it can contain various other commands. Emacs ignores everything in it - except for alias definitions. - - Another way to define a mail alias, within Emacs alone, is with the - `define-mail-alias' command. It prompts for the alias and then the - full address. You can use it to define aliases in your `.emacs' file, - like this: - - (define-mail-alias "maingnu" "gnu@prep.ai.mit.edu") - - `define-mail-alias' records aliases by adding them to a variable - named `mail-aliases'. If your are comfortable with manipulating Lisp - lists, you can set `mail-aliases' directly. The initial value of - `mail-aliases' is `t', which means that Emacs should read `.mailrc' to - get the proper value. - - Normally, Emacs expands aliases when you send the message. If you - like, you can have mail aliases expand as abbrevs, as soon as you type - them in. To enable this feature, execute the following: - - (add-hook 'mail-setup-hook 'mail-abbrevs-setup) - - This can go in your `.emacs' file. *Note Hooks::. - - Note that abbrevs expand only if you insert a word-separator - character afterward. However, any mail aliases that you didn't expand - in the mail buffer are expanded subsequently when you send the message. - *Note Abbrevs::. - -  - File: emacs, Node: Mail Mode, Next: Distracting NSA, Prev: Mail Aliases, Up: Sending Mail - - Mail Mode - ========= - - The major mode used in the `*mail*' buffer is Mail mode, which is - much like Text mode except that various special commands are provided on - the `C-c' prefix. These commands all have to do specifically with - editing or sending the message. - - `C-c C-s' - Send the message, and leave the `*mail*' buffer selected - (`mail-send'). - - `C-c C-c' - Send the message, and select some other buffer - (`mail-send-and-exit'). - - `C-c C-f C-t' - Move to the `To' header field, creating one if there is none - (`mail-to'). - - `C-c C-f C-s' - Move to the `Subject' header field, creating one if there is none - (`mail-subject'). - - `C-c C-f C-c' - Move to the `CC' header field, creating one if there is none - (`mail-cc'). - - `C-c C-w' - Insert the file `~/.signature' at the end of the message text - (`mail-signature'). - - `C-c C-y' - Yank the selected message from Rmail (`mail-yank-original'). This - command does nothing unless your command to start sending a - message was issued with Rmail. - - `C-c C-q' - Fill all paragraphs of yanked old messages, each individually - (`mail-fill-yanked-message'). - - There are two ways to send the message. `C-c C-s' (`mail-send') - sends the message and marks the `*mail*' buffer unmodified, but leaves - that buffer selected so that you can modify the message (perhaps with - new recipients) and send it again. `C-c C-c' (`mail-send-and-exit') - sends and then deletes the window or switches to another buffer. It - puts the `*mail*' buffer at the lowest priority for reselection by - default, since you are finished with using it. This is the usual way - to send the message. - - Mail mode provides some other special commands that are useful for - editing the headers and text of the message before you send it. There - are three commands defined to move point to particular header fields, - all based on the prefix `C-c C-f' (`C-f' is for "field"). They are - `C-c C-f C-t' (`mail-to') to move to the `To' field, `C-c C-f C-s' - (`mail-subject') for the `Subject' field, and `C-c C-f C-c' (`mail-cc') - for the `CC' field. These fields have special motion commands because - they are the most common fields for the user to want to edit. - - `C-c C-w' (`mail-signature') adds a standard piece text at the end - of the message to say more about who you are. The text comes from the - file `.signature' in your home directory. - - To insert signatures automatically, set the variable - `mail-signature' non-`nil'; then starting a mail message automatically - inserts the contents of your `.signature' file. If you want to omit - your signature from a particular message, delete it from the buffer - before you send the message. - - When mail sending is invoked from the Rmail mail reader using an - Rmail command, `C-c C-y' can be used inside the `*mail*' buffer to - insert the text of the message you are replying to. Normally it - indents each line of that message four spaces and eliminates most - header fields. A numeric argument specifies the number of spaces to - indent. An argument of just `C-u' says not to indent at all and not to - eliminate anything. `C-c C-y' always uses the current message from the - `RMAIL' buffer, so you can insert several old messages by selecting one - in `RMAIL', switching to `*mail*' and yanking it, then switching back to - `RMAIL' to select another. - - You can specify the text for `C-c C-y' to insert at the beginning of - each line: set `mail-yank-prefix' to the desired string. (A value of - `nil' means to use indentation; this is the default.) However, `C-u C-c - C-y' never adds anything at the beginning of the inserted lines, - regardless of the value of `mail-yank-prefix'. - - After using `C-c C-y', you can use the command `C-c C-q' - (`mail-fill-yanked-message') to fill the paragraphs of the yanked old - message or messages. One use of `C-c C-q' fills all such paragraphs, - each one individually. - - Mail mode defines the character `%' as part of a word; this is - helpful for using the word commands to edit mail addresses. - - Turning on Mail mode (which `C-x m' does automatically) runs the - normal hooks `text-mode-hook' and `mail-mode-hook'. Initializing a new - outgoing message runs the normal hook `mail-setup-hook'; if you want to - add special fields to your mail header or make other changes to the - appearance of the mail buffer, use that hook. *Note Hooks::. - - The main difference between these hooks is just when they are - invoked. Whenever you type `M-x mail', `mail-mode-hook' runs as soon - as the `*mail*' buffer is created. Then the `mail-setup' function puts - in the default contents of the buffer. After these default contents - are inserted, `mail-setup-hook' runs. - -  - File: emacs, Node: Distracting NSA, Prev: Mail Mode, Up: Sending Mail - - Distracting the NSA - =================== - - `M-x spook' adds a line of randomly chosen keywords to an outgoing - mail message. The keywords are chosen from a list of words that suggest - you are discussing something subversive. - - The idea behind this feature is that the suspicion that the NSA - snoops on all electronic mail messages that contain keywords suggesting - they might be interested. (The NSA says they don't, but there is no - way to be certain.) The idea is that if lots of people add suspicious - words to their messages, the NSA will get so busy with spurious input - that they will have to give up reading it all. - - Whether or not this confuses the NSA, it at least amuses people. --- 1131,1134 ---- diff -cprP --exclude=*.elc emacs-19.13/info/emacs-12 emacs-19.14/info/emacs-12 *** emacs-19.13/info/emacs-12 Tue Jun 8 07:24:27 1993 --- emacs-19.14/info/emacs-12 Thu Jun 17 19:44:45 1993 *************** *** 1,7 **** ! This is Info file ../info/emacs, produced by Makeinfo-1.54 from the input file emacs.texi.  File: emacs, Node: Rmail, Next: Dired, Prev: Sending Mail, Up: Top Reading Mail with Rmail --- 1,659 ---- ! This is Info file ../info/emacs, produced by Makeinfo-1.55 from the input file emacs.texi.  + File: emacs, Node: Saving Abbrevs, Next: Dynamic Abbrevs, Prev: Editing Abbrevs, Up: Abbrevs + + Saving Abbrevs + ============== + + These commands allow you to keep abbrev definitions between editing + sessions. + + `M-x write-abbrev-file' + Write a file describing all defined abbrevs. + + `M-x read-abbrev-file' + Read such a file and define abbrevs as specified there. + + `M-x quietly-read-abbrev-file' + Similar but do not display a message about what is going on. + + `M-x define-abbrevs' + Define abbrevs from definitions in current buffer. + + `M-x insert-abbrevs' + Insert all abbrevs and their expansions into current buffer. + + `M-x write-abbrev-file' reads a file name using the minibuffer and + writes a description of all current abbrev definitions into that file. + The text stored in the file looks like the output of `M-x list-abbrevs'. + This is used to save abbrev definitions for use in a later session. + + `M-x read-abbrev-file' reads a file name using the minibuffer and + reads the file, defining abbrevs according to the contents of the file. + `M-x quietly-read-abbrev-file' is the same except that it does not + display a message in the echo area saying that it is doing its work; it + is actually useful primarily in the `.emacs' file. If an empty + argument is given to either of these functions, the file name used is + the value of the variable `abbrev-file-name', which is by default + `"~/.abbrev_defs"'. + + Emacs will offer to save abbrevs automatically if you have changed + any of them, whenever it offers to save all files (for `C-x s' or `C-x + C-c'). This feature can be inhibited by setting the variable + `save-abbrevs' to `nil'. + + The commands `M-x insert-abbrevs' and `M-x define-abbrevs' are + similar to the previous commands but work on text in an Emacs buffer. + `M-x insert-abbrevs' inserts text into the current buffer before point, + describing all current abbrev definitions; `M-x define-abbrevs' parses + the entire current buffer and defines abbrevs accordingly. + +  + File: emacs, Node: Dynamic Abbrevs, Prev: Saving Abbrevs, Up: Abbrevs + + Dynamic Abbrev Expansion + ======================== + + The abbrev facility described above operates automatically as you + insert text, but all abbrevs must be defined explicitly. By contrast, + "dynamic abbrevs" allow the meanings of abbrevs to be determined + automatically from the contents of the buffer, but dynamic abbrev + expansion happens only when you request it explicitly. + + `M-/' + Expand the word in the buffer before point as a "dynamic abbrev", + by searching in the buffer for words starting with that + abbreviation (`dabbrev-expand'). + + For example, if the buffer contains `does this follow ' and you type + `f o M-/', the effect is to insert `follow' because that is the last + word in the buffer that starts with `fo'. A numeric argument to `M-/' + says to take the second, third, etc. distinct expansion found looking + backward from point. Repeating `M-/' searches for an alternative + expansion by looking farther back. After the entire buffer before + point has been considered, the buffer after point is searched. + + Dynamic abbrev expansion is completely independent of Abbrev mode; + the expansion of a word with `M-/' is completely independent of whether + it has a definition as an ordinary abbrev. + +  + File: emacs, Node: Picture, Next: Sending Mail, Prev: Abbrevs, Up: Top + + Editing Pictures + **************** + + If you want to create a picture made out of text characters (for + example, a picture of the division of a register into fields, as a + comment in a program), use the command `M-x edit-picture' to enter + Picture mode. + + In Picture mode, editing is based on the "quarter-plane" model of + text, according to which the text characters lie studded on an area that + stretches infinitely far to the right and downward. The concept of the + end of a line does not exist in this model; the most you can say is + where the last nonblank character on the line is found. + + Of course, Emacs really always considers text as a sequence of + characters, and lines really do have ends. But in Picture mode most + frequently-used keys are rebound to commands that simulate the + quarter-plane model of text. They do this by inserting spaces or by + converting tabs to spaces. + + Most of the basic editing commands of Emacs are redefined by Picture + mode to do essentially the same thing but in a quarter-plane way. In + addition, Picture mode defines various keys starting with the `C-c' + prefix to run special picture editing commands. + + One of these keys, `C-c C-c', is pretty important. Often a picture + is part of a larger file that is usually edited in some other major + mode. `M-x edit-picture' records the name of the previous major mode + so you can use the `C-c C-c' command (`picture-mode-exit') later to go + back to that mode. `C-c C-c' also deletes spaces from the ends of + lines, unless given a numeric argument. + + The commands used in Picture mode all work in other modes (provided + the `picture' library is loaded), but are not bound to keys except in + Picture mode. Note that the descriptions below talk of moving "one + column" and so on, but all the picture mode commands handle numeric + arguments as their normal equivalents do. + + Turning on Picture mode runs the hook `picture-mode-hook' (*note + Hooks::.). + + * Menu: + + * Basic Picture:: Basic concepts and simple commands of Picture Mode. + * Insert in Picture:: Controlling direction of cursor motion + after "self-inserting" characters. + * Tabs in Picture:: Various features for tab stops and indentation. + * Rectangles in Picture:: Clearing and superimposing rectangles. + +  + File: emacs, Node: Basic Picture, Next: Insert in Picture, Prev: Picture, Up: Picture + + Basic Editing in Picture Mode + ============================= + + Most keys do the same thing in Picture mode that they usually do, but + do it in a quarter-plane style. For example, `C-f' is rebound to run + `picture-forward-column', a command which moves point one column to the + right, inserting a space if necessary so that the actual end of the + line makes no difference. `C-b' is rebound to run + `picture-backward-column', which always moves point left one column, + converting a tab to multiple spaces if necessary. `C-n' and `C-p' are + rebound to run `picture-move-down' and `picture-move-up', which can + either insert spaces or convert tabs as necessary to make sure that + point stays in exactly the same column. `C-e' runs + `picture-end-of-line', which moves to after the last nonblank character + on the line. There is no need to change `C-a', as the choice of screen + model does not affect beginnings of lines. + + Insertion of text is adapted to the quarter-plane screen model + through the use of Overwrite mode (*note Minor Modes::.). + Self-inserting characters replace existing text, column by column, + rather than pushing existing text to the right. RET runs + `picture-newline', which just moves to the beginning of the following + line so that new text will replace that line. + + Picture mode provides erasure instead of deletion and killing of + text. DEL (`picture-backward-clear-column') replaces the preceding + character with a space rather than removing it; this moves point + backwards. `C-d' (`picture-clear-column') replaces the next character + or characters with spaces, but does not move point. (If you want to + clear characters to spaces and move forward over them, use SPC.) `C-k' + (`picture-clear-line') really kills the contents of lines, but does not + delete the newlines from the buffer. + + To do actual insertion, you must use special commands. `C-o' + (`picture-open-line') still creates a blank line, but does so after the + current line; it never splits a line. `C-M-o', `split-line', makes + sense in Picture mode, so it is not changed. LFD + (`picture-duplicate-line') inserts below the current line another line + with the same contents. + + If you want to do real deletion in Picture mode, use `C-w', `C-c + C-d' (which is defined as `delete-char', as `C-d' is in other modes), + or one of the picture rectangle commands (*note Rectangles in + Picture::.). + +  + File: emacs, Node: Insert in Picture, Next: Tabs in Picture, Prev: Basic Picture, Up: Picture + + Controlling Motion after Insert + =============================== + + Since "self-inserting" characters in Picture mode just overwrite and + move point, there is no essential restriction on how point should be + moved. Normally point moves right, but you can specify any of the + eight orthogonal or diagonal directions for motion after a + "self-inserting" character. This is useful for drawing lines in the + buffer. + + `C-c <' + Move left after insertion (`picture-movement-left'). + + `C-c >' + Move right after insertion (`picture-movement-right'). + + `C-c ^' + Move up after insertion (`picture-movement-up'). + + `C-c .' + Move down after insertion (`picture-movement-down'). + + `C-c `' + Move up and left ("northwest") after insertion + (`picture-movement-nw'). + + `C-c '' + Move up and right ("northeast") after insertion + (`picture-movement-ne'). + + `C-c /' + Move down and left ("southwest") after insertion + (`picture-movement-sw'). + + `C-c \' + Move down and right ("southeast") after insertion + (`picture-movement-se'). + + Two motion commands move based on the current Picture insertion + direction. The command `C-c C-f' (`picture-motion') moves in the same + direction as motion after "insertion" currently does, while `C-c C-b' + (`picture-motion-reverse') moves in the opposite direction. + +  + File: emacs, Node: Tabs in Picture, Next: Rectangles in Picture, Prev: Insert in Picture, Up: Picture + + Picture Mode Tabs + ================= + + Two kinds of tab-like action are provided in Picture mode. Use + `M-TAB' (`picture-tab-search') for context-based tabbing. With no + argument, it moves to a point underneath the next "interesting" + character that follows whitespace in the previous nonblank line. + "Next" here means "appearing at a horizontal position greater than the + one point starts out at". With an argument, as in `C-u M-TAB', this + command moves to the next such interesting character in the current + line. `M-TAB' does not change the text; it only moves point. + "Interesting" characters are defined by the variable + `picture-tab-chars', which contains a string whose characters are all + considered interesting. Its default value is `"!-~"'. + + TAB itself runs `picture-tab', which operates based on the current + tab stop settings; it is the Picture mode equivalent of + `tab-to-tab-stop'. Normally it just moves point, but with a numeric + argument it clears the text that it moves over. + + The context-based and tab-stop-based forms of tabbing are brought + together by the command `C-c TAB', `picture-set-tab-stops'. This + command sets the tab stops to the positions which `M-TAB' would + consider significant in the current line. The use of this command, + together with TAB, can get the effect of context-based tabbing. But + `M-TAB' is more convenient in the cases where it is sufficient. + +  + File: emacs, Node: Rectangles in Picture, Prev: Tabs in Picture, Up: Picture + + Picture Mode Rectangle Commands + =============================== + + Picture mode defines commands for working on rectangular pieces of + the text in ways that fit with the quarter-plane model. The standard + rectangle commands may also be useful (*note Rectangles::.). + + `C-c C-k' + Clear out the region-rectangle (`picture-clear-rectangle'). With + argument, kill it. + + `C-c C-w R' + Similar but save rectangle contents in register R first + (`picture-clear-rectangle-to-register'). + + `C-c C-y' + Copy last killed rectangle into the buffer by overwriting, with + upper left corner at point (`picture-yank-rectangle'). With + argument, insert instead. + + `C-c C-x R' + Similar, but use the rectangle in register R + (`picture-yank-rectangle-from-register'). + + The picture rectangle commands `C-c C-k' (`picture-clear-rectangle') + and `C-c C-w' (`picture-clear-rectangle-to-register') differ from the + standard rectangle commands in that they normally clear the rectangle + instead of deleting it; this is analogous with the way `C-d' is changed + in Picture mode. + + However, deletion of rectangles can be useful in Picture mode, so + these commands delete the rectangle if given a numeric argument. + + The Picture mode commands for yanking rectangles differ from the + standard ones in overwriting instead of inserting. This is the same way + that Picture mode insertion of other text differs from other modes. + `C-c C-y' (`picture-yank-rectangle') inserts (by overwriting) the + rectangle that was most recently killed, while `C-c C-x' + (`picture-yank-rectangle-from-register') does likewise for the + rectangle found in a specified register. + +  + File: emacs, Node: Sending Mail, Next: Rmail, Prev: Picture, Up: Top + + Sending Mail + ************ + + To send a message in Emacs, you start by typing a command (`C-x m') + to select and initialize the `*mail*' buffer. Then you edit the text + and headers of the message in this buffer, and type another command + (`C-c C-c') to send the message. + + `C-x m' + Begin composing a message to send (`mail'). + + `C-x 4 m' + Likewise, but display the message in another window + (`mail-other-window'). + + `C-x 5 m' + Likewise, but make a new frame (`mail-other-frame'). + + `C-c C-c' + In Mail mode, send the message and switch to another buffer + (`mail-send-and-exit'). + + The command `C-x m' (`mail') selects a buffer named `*mail*' and + initializes it with the skeleton of an outgoing message. `C-x 4 m' + (`mail-other-window') selects the `*mail*' buffer in a different + window, leaving the previous current buffer visible. `C-x 5 m' + (`mail-other-frame') creates a new frame to select the `*mail*' buffer. + + Because the mail composition buffer is an ordinary Emacs buffer, you + can switch to other buffers while in the middle of composing mail, and + switch back later (or never). If you use the `C-x m' command again + when you have been composing another message but have not sent it, you + are asked to confirm before the old message is erased. If you answer + `n', the `*mail*' buffer is left selected with its old contents, so you + can finish the old message and send it. `C-u C-x m' is another way to + do this. Sending the message marks the `*mail*' buffer "unmodified", + which avoids the need for confirmation when `C-x m' is next used. + + If you are composing a message in the `*mail*' buffer and want to + send another message before finishing the first, rename the `*mail*' + buffer using `M-x rename-uniquely' (*note Misc Buffer::.). Then you + can use `C-x m' or its variants described above to make a new `*mail' + buffer. Once you've done that, you can work with each mail buffer + independently. + + * Menu: + + * Format: Mail Format. Format of the mail being composed. + * Headers: Mail Headers. Details of permitted mail header fields. + * Aliases: Mail Aliases. Abbreviating and grouping mail addresses. + * Mode: Mail Mode. Special commands for editing mail being composed. + * Spook: Distracting NSA. How to distract the NSA's attention. + +  + File: emacs, Node: Mail Format, Next: Mail Headers, Up: Sending Mail + + The Format of the Mail Buffer + ============================= + + In addition to the "text" or "body", a message has "header fields" + which say who sent it, when, to whom, why, and so on. Some header + fields such as the date and sender are created automatically after the + message is sent. Others, such as the recipient names, must be + specified by you in order to send the message properly. + + Mail mode provides a few commands to help you edit some header + fields, and some are preinitialized in the buffer automatically at + times. You can insert or edit any header fields using ordinary editing + commands. + + The line in the buffer that says + + --text follows this line-- + + is a special delimiter that separates the headers you have specified + from the text. Whatever follows this line is the text of the message; + the headers precede it. The delimiter line itself does not appear in + the message actually sent. The text used for the delimiter line is + controlled by the variable `mail-header-separator'. + + Here is an example of what the headers and text in the `*mail*' + buffer might look like. + + To: gnu@prep.ai.mit.edu + CC: lungfish@spam.org, byob@spam.org + Subject: The Emacs Manual + --Text follows this line-- + Please ignore this message. + +  + File: emacs, Node: Mail Headers, Next: Mail Aliases, Prev: Mail Format, Up: Sending Mail + + Mail Header Fields + ================== + + There are several header fields you can use in the `*mail*' buffer. + Each header field starts with a field name at the beginning of a line, + terminated by a colon. Upper and lower case are equivalent in field + names (and in mailing addresses also). After the colon and optional + whitespace comes the contents of the field. + + `To' + This field contains the mailing addresses to which the message is + addressed. + + `Subject' + The contents of the `Subject' field should be a piece of text that + says what the message is about. The reason `Subject' fields are + useful is that most mail-reading programs can provide a summary of + messages, listing the subject of each message but not its text. + + `CC' + This field contains additional mailing addresses to send the + message to, but whose readers should not regard the message as + addressed to them. + + `BCC' + This field contains additional mailing addresses to send the + message to, which should not appear in the header of the message + actually sent. Copies sent this way are called "blind carbon + copies". + + To send a blind carbon copy of every outgoing message to yourself, + set the variable `mail-self-blind' to `t'. + + `FCC' + This field contains the name of one file (in system mail file + format) to which a copy of the message should be appended when the + message is sent. Do not output directly into an Rmail file with + FCC; instead, output to an inbox file and "get new mail" from that + inbox file into the Rmail file. *Note Rmail Inbox::. + + `From' + Use the `From' field to say who you are, when the account you are + using to send the mail is not your own. The contents of the + `From' field should be a valid mailing address, since replies will + normally go there. + + `Reply-to' + Use this field to direct replies to a different address. Most + mail-reading programs (including Rmail) automatically send replies + to the `Reply-to' address in preference to the `From' address. By + adding a `Reply-to' field to your header, you can work around any + problems your `From' address may cause for replies. + + If you want to put the same `Reply-to' address into every outgoing + message, set the variable `mail-default-reply-to' to that address + (as a string). + + `In-reply-to' + This field contains a piece of text describing a message you are + replying to. Some mail systems can use this information to + correlate related pieces of mail. Normally this field is filled + in by Rmail when you are replying to a message in Rmail, and you + never need to think about it (*note Rmail::.). + + The `To', `CC', `BCC' and `FCC' fields can appear any number of times, + to specify many places to send the message. + + The `To', `CC', and `BCC' fields can have continuation lines. All the + lines starting with whitespace, following the line on which the field + starts, are considered part of the field. For example, + + To: foo@here.net, this@there.net, + me@gnu.cambridge.mass.usa.earth.spiral3281 + + If the variable `mail-archive-file-name' is non-`nil', it should be + a string naming a file; every time you start to edit a message to send, + the message starts out with an `FCC' field specifying that file. + Unless you remove the `FCC' field before sending, the message will be + written into that file when it is sent. + +  + File: emacs, Node: Mail Aliases, Next: Mail Mode, Prev: Mail Headers, Up: Sending Mail + + Mail Aliases + ============ + + You can define "mail aliases" in a file named `~/.mailrc'. These + are short mnemonic names stand for mail addresses or groups of mail + addresses. Like many other mail programs, Emacs expands aliases when + they occur in the `To', `CC', and `BCC' fields. + + To define an alias in `~/.mailrc', write a line in the following + format: + + alias SHORTADDRESS FULLADDRESS + + For instance, if you send want to use `maingnu' as a short form of the + address `gnu@prep.ai.mit.edu', put in the line: + + alias maingnu gnu@prep.ai.mit.edu + + The file `~/.mailrc' is used primarily by other mail-reading programs; + it can contain various other commands. Emacs ignores everything in it + except for alias definitions. + + Another way to define a mail alias, within Emacs alone, is with the + `define-mail-alias' command. It prompts for the alias and then the + full address. You can use it to define aliases in your `.emacs' file, + like this: + + (define-mail-alias "maingnu" "gnu@prep.ai.mit.edu") + + `define-mail-alias' records aliases by adding them to a variable + named `mail-aliases'. If your are comfortable with manipulating Lisp + lists, you can set `mail-aliases' directly. The initial value of + `mail-aliases' is `t', which means that Emacs should read `.mailrc' to + get the proper value. + + Normally, Emacs expands aliases when you send the message. If you + like, you can have mail aliases expand as abbrevs, as soon as you type + them in. To enable this feature, execute the following: + + (add-hook 'mail-setup-hook 'mail-abbrevs-setup) + + This can go in your `.emacs' file. *Note Hooks::. + + Note that abbrevs expand only if you insert a word-separator + character afterward. However, any mail aliases that you didn't expand + in the mail buffer are expanded subsequently when you send the message. + *Note Abbrevs::. + +  + File: emacs, Node: Mail Mode, Next: Distracting NSA, Prev: Mail Aliases, Up: Sending Mail + + Mail Mode + ========= + + The major mode used in the `*mail*' buffer is Mail mode, which is + much like Text mode except that various special commands are provided on + the `C-c' prefix. These commands all have to do specifically with + editing or sending the message. + + `C-c C-s' + Send the message, and leave the `*mail*' buffer selected + (`mail-send'). + + `C-c C-c' + Send the message, and select some other buffer + (`mail-send-and-exit'). + + `C-c C-f C-t' + Move to the `To' header field, creating one if there is none + (`mail-to'). + + `C-c C-f C-s' + Move to the `Subject' header field, creating one if there is none + (`mail-subject'). + + `C-c C-f C-c' + Move to the `CC' header field, creating one if there is none + (`mail-cc'). + + `C-c C-w' + Insert the file `~/.signature' at the end of the message text + (`mail-signature'). + + `C-c C-y' + Yank the selected message from Rmail (`mail-yank-original'). This + command does nothing unless your command to start sending a + message was issued with Rmail. + + `C-c C-q' + Fill all paragraphs of yanked old messages, each individually + (`mail-fill-yanked-message'). + + There are two ways to send the message. `C-c C-s' (`mail-send') + sends the message and marks the `*mail*' buffer unmodified, but leaves + that buffer selected so that you can modify the message (perhaps with + new recipients) and send it again. `C-c C-c' (`mail-send-and-exit') + sends and then deletes the window or switches to another buffer. It + puts the `*mail*' buffer at the lowest priority for reselection by + default, since you are finished with using it. This is the usual way + to send the message. + + Mail mode provides some other special commands that are useful for + editing the headers and text of the message before you send it. There + are three commands defined to move point to particular header fields, + all based on the prefix `C-c C-f' (`C-f' is for "field"). They are + `C-c C-f C-t' (`mail-to') to move to the `To' field, `C-c C-f C-s' + (`mail-subject') for the `Subject' field, and `C-c C-f C-c' (`mail-cc') + for the `CC' field. These fields have special motion commands because + they are the most common fields for the user to want to edit. + + `C-c C-w' (`mail-signature') adds a standard piece text at the end + of the message to say more about who you are. The text comes from the + file `.signature' in your home directory. + + To insert signatures automatically, set the variable + `mail-signature' non-`nil'; then starting a mail message automatically + inserts the contents of your `.signature' file. If you want to omit + your signature from a particular message, delete it from the buffer + before you send the message. + + When mail sending is invoked from the Rmail mail reader using an + Rmail command, `C-c C-y' can be used inside the `*mail*' buffer to + insert the text of the message you are replying to. Normally it + indents each line of that message four spaces and eliminates most + header fields. A numeric argument specifies the number of spaces to + indent. An argument of just `C-u' says not to indent at all and not to + eliminate anything. `C-c C-y' always uses the current message from the + `RMAIL' buffer, so you can insert several old messages by selecting one + in `RMAIL', switching to `*mail*' and yanking it, then switching back to + `RMAIL' to select another. + + You can specify the text for `C-c C-y' to insert at the beginning of + each line: set `mail-yank-prefix' to the desired string. (A value of + `nil' means to use indentation; this is the default.) However, `C-u C-c + C-y' never adds anything at the beginning of the inserted lines, + regardless of the value of `mail-yank-prefix'. + + After using `C-c C-y', you can use the command `C-c C-q' + (`mail-fill-yanked-message') to fill the paragraphs of the yanked old + message or messages. One use of `C-c C-q' fills all such paragraphs, + each one individually. + + Mail mode defines the character `%' as part of a word; this is + helpful for using the word commands to edit mail addresses. + + Turning on Mail mode (which `C-x m' does automatically) runs the + normal hooks `text-mode-hook' and `mail-mode-hook'. Initializing a new + outgoing message runs the normal hook `mail-setup-hook'; if you want to + add special fields to your mail header or make other changes to the + appearance of the mail buffer, use that hook. *Note Hooks::. + + The main difference between these hooks is just when they are + invoked. Whenever you type `M-x mail', `mail-mode-hook' runs as soon + as the `*mail*' buffer is created. Then the `mail-setup' function puts + in the default contents of the buffer. After these default contents + are inserted, `mail-setup-hook' runs. + +  + File: emacs, Node: Distracting NSA, Prev: Mail Mode, Up: Sending Mail + + Distracting the NSA + =================== + + `M-x spook' adds a line of randomly chosen keywords to an outgoing + mail message. The keywords are chosen from a list of words that suggest + you are discussing something subversive. + + The idea behind this feature is that the suspicion that the NSA + snoops on all electronic mail messages that contain keywords suggesting + they might be interested. (The NSA says they don't, but there is no + way to be certain.) The idea is that if lots of people add suspicious + words to their messages, the NSA will get so busy with spurious input + that they will have to give up reading it all. + + Whether or not this confuses the NSA, it at least amuses people. + +  File: emacs, Node: Rmail, Next: Dired, Prev: Sending Mail, Up: Top Reading Mail with Rmail *************** attributes: *** 504,1111 **** All other labels are assigned or removed only by the user, and have no standard meaning. - -  - File: emacs, Node: Rmail Reply, Next: Rmail Summary, Prev: Rmail Labels, Up: Rmail - - Sending Replies - =============== - - Rmail has several commands that use Mail mode to send outgoing mail. - *Note Sending Mail::, for information on using Mail mode. What are - documented here are the special commands of Rmail for entering Mail - mode. Note that the usual keys for sending mail, `C-x m' and `C-x 4 m', - are available in Rmail mode and work just as they usually do. - - `m' - Send a message (`rmail-mail'). - - `c' - Continue editing already started outgoing message - (`rmail-continue'). - - `r' - Send a reply to the current Rmail message (`rmail-reply'). - - `f' - Forward current message to other users (`rmail-forward'). - - `C-u f' - Resend the current message to other users (`rmail-resend'). - - `M-m' - Try sending a bounced message a second time - (`rmail-retry-failure'). - - The most common reason to send a message while in Rmail is to reply - to the message you are reading. To do this, type `r' (`rmail-reply'). - This displays the `*mail*' buffer in another window, much like `C-x 4 - m', but preinitializes the `Subject', `To', `CC' and `In-reply-to' - header fields based on the message you are replying to. The `To' field - is starts out as the address of the person who sent the message you - received, and the `CC' field starts out with all the other recipients - of that message. - - You can exclude certain recipients from being placed automatically in - the `CC', using the variable `rmail-dont-reply-to-names'. Its value - should be a regular expression (as a string); any recipient that the - regular expression matches, is excluded from the `CC' field. The - default value matches your own name, and any name starting with - `info-'. (Those names are excluded because there is a convention of - using them for large mailing lists to broadcast announcements.) - - To omit the `CC' field completely for a particular reply, enter the - reply command with a prefix argument: `C-u r'. - - Once the `*mail*' buffer has been initialized, editing and sending - the mail goes as usual (*note Sending Mail::.). You can edit the - presupplied header fields if they are not right for you. You can also - use the commands of Mail mode, including `C-c C-y' to yank in the - message that you are replying to, and `C-c C-q' to fill what was thus - yanked. You can also switch to the Rmail buffer, select a different - message, switch back, and yank the new current message. - - Sometimes a message does not reach its destination. Mailers usually - send the failed message back to you, enclosed in a "failure message". - The Rmail command `M-m' (`rmail-retry-failure') prepares to send the - same message a second time: it sets up a `*mail*' buffer with the same - text and header fields as before. If you type `C-c C-c' right away, - you send the message again exactly the same as the first time. - Alternatively, you can edit the text or headers and then send it. - - Another frequent reason to send mail in Rmail is to "forward" the - current message to other users. `f' (`rmail-forward') makes this easy - by preinitializing the `*mail*' buffer with the current message as the - text, and a subject designating a forwarded message. All you have to - do is fill in the recipients and send. When you forward a message, - recipients get a message which is "from" you, and which has the - original message in its contents. - - "Resending" is an alternative similar to forwarding; the difference - is that resending sends a message that is "from" the original sender, - just as it reached you--with a few added header fields `Resent-from' - and `Resent-to' to indicate that it came via you. To resend a message - in Rmail, use `C-u f'. (`f' runs `rmail-forward', which is programmed - to invoke `rmail-resend' if you provide a numeric argument.) - - The `m' (`rmail-mail') command is used to start editing an outgoing - message that is not a reply. It leaves the header fields empty. Its - only difference from `C-x 4 m' is that it makes the Rmail buffer - accessible for `C-c y', just as `r' does. Thus, `m' can be used to - reply to or forward a message; it can do anything `r' or `f' can do. - - The `c' (`rmail-continue') command resumes editing the `*mail*' - buffer, to finish editing an outgoing message you were already - composing, or to alter a message you have sent. - -  - File: emacs, Node: Rmail Summary, Next: Rmail Editing, Prev: Rmail Reply, Up: Rmail - - Summaries - ========= - - A "summary" is a buffer containing one line per message to give you - an overview of the mail in an Rmail file. Each line shows the message - number, the sender, the labels, and the subject. When the summary - buffer is selected, you can use almost all Rmail commands; these apply - to the message described by the current line of the summary. Moving - point in the summary buffer selects messages as you move to their - summary lines. - - A summary buffer applies to a single Rmail file only; if you are - editing multiple Rmail files, each one has its own summary buffer (if - you have asked for one). The summary buffer name is made by appending - `-summary' to the Rmail buffer's name. Normally only one summary - buffer is displayed at a time. - - * Menu: - - * Rmail Make Summary:: Making various sorts of summaries. - * Rmail Summary Edit:: Manipulating messages from the summary. - -  - File: emacs, Node: Rmail Make Summary, Next: Rmail Summary Edit, Up: Rmail Summary - - Making Summaries - ---------------- - - Here are the commands to create a summary for the current Rmail file. - Once the Rmail file has a summary buffer, changes in the Rmail file - (such as deleting or expunging messages, and getting new mail) - automatically update the summary. - - `h' - `C-M-h' - Summarize all messages (`rmail-summary'). - - `l LABELS RET' - `C-M-l LABELS RET' - Summarize message that have one or more of the specified labels - (`rmail-summary-by-labels'). - - `C-M-r RCPTS RET' - Summarize messages that have one or more of the specified - recipients (`rmail-summary-by-recipients'). - - `C-M-t TOPIC RET' - Summarize messages that have a match for the specified regexp - TOPIC in their subjects (`rmail-summary-by-topic'). - - The `h' or `C-M-h' (`rmail-summary') command fills the summary buffer - for the current Rmail file with a summary of all the messages in the - file. It then displays and selects the summary buffer in another - window. - - `C-M-l LABELS RET' (`rmail-summary-by-labels') makes a partial - summary mentioning only the messages that have one or more of the - labels LABELS. LABELS should contain label names separated by commas. - - `C-M-r RCPTS RET' (`rmail-summary-by-recipients') makes a partial - summary mentioning only the messages that have one or more of the - recipients RCPTS. RCPTS should contain mailing addresses separated by - commas. - - `C-M-t TOPIC RET' (`rmail-summary-by-topic') makes a partial summary - mentioning only the messages whose subjects have a match for the - regular expression TOPIC. - - Note that there is only one summary buffer for any Rmail file; - making one kind of summary discards any previously made summary. - -  - File: emacs, Node: Rmail Summary Edit, Prev: Rmail Make Summary, Up: Rmail Summary - - Editing in Summaries - -------------------- - - You can use the Rmail summary buffer to do almost anything you can do - in the Rmail buffer itself. In fact, once you have a summary buffer, - there's no need to switch back to the Rmail buffer. - - You can select and display various messages in the Rmail buffer, from - the summary buffer, just by moving point in the summary buffer to - different lines. It doesn't matter what Emacs command you use to move - point; whichever line point is on at the end of the command, that - message is selected in the Rmail buffer. - - Almost all Rmail commands work in the summary buffer as well as in - the Rmail buffer. Thus, `d' in the summary buffer deletes the current - message, `u' undeletes, and `x' expunges. `o' and `C-o' output the - current message to a file; `r' starts a reply to it. You can scroll - the current message while remaining in the summary buffer using SPC and - DEL. - - The Rmail commands to move between messages also work in the summary - buffer, but with a twist: they move through the set of messages included - in the summary. They also redisplay the Rmail buffer on the screen - (unlike cursor motion commands, which update the contents of the Rmail - buffer but don't display it in a window unless it already appears). - Here is a list of these commands: - - `n' - Move to next line, skipping lines saying `deleted', and select its - message. - - `p' - Move to previous line, skipping lines saying `deleted', and select - its message. - - `M-n' - Move to next line and select its message. - - `M-p' - Move to previous line and select its message. - - `>' - Move to the last line, and select its message. - - `<' - Move to the first line, and select its message. - - `M-s PATTERN RET' - Search through messages for PATTERN starting with the current - message; select the message found, and move point in the summary - buffer to that message's line. - - Deletion, undeletion, and getting new mail, and even selection of a - different message all update the summary buffer when you do them in the - Rmail buffer. If the variable `rmail-redisplay-summary' is non-`nil', - these actions also bring the summary buffer back onto the screen. - - When you are finished using the summary, type `w' - (`rmail-summary-wipe') to kill the summary buffer's window. You can - also exit Rmail while in the summary. `q' (`rmail-summary-quit') kills - the summary window, then saves the Rmail file and switches to another - buffer. - -  - File: emacs, Node: Rmail Editing, Next: Rmail Digest, Prev: Rmail Summary, Up: Rmail - - Editing Within a Message - ======================== - - Rmail mode provides a few special commands for moving within and - editing the current message. In addition, the usual Emacs commands are - available (except for a few, such as `C-M-n' and `C-M-h', that are - redefined by Rmail for other purposes). However, the Rmail buffer is - normally read-only, and to alter it you must use the Rmail command `e' - described below. - - `t' - Toggle display of original headers (`rmail-toggle-headers'). - - `e' - Edit current message (`rmail-edit-current-message'). - - Rmail reformats the header of each message before displaying it. - Normally this involves deleting most header fields, on the grounds that - they are not interesting. The variable `rmail-ignored-headers' - specifies a regexp that matches the header fields to discard in this - way. The original headers are saved permanently, and to see what they - look like, use the `t' command (`rmail-toggle-headers'). This discards - the reformatted headers of the current message and displays it with the - original headers. Repeating `t' reformats the message again. - Selecting the message again also reformats. - - The Rmail buffer is normally read only, and most of the characters - you would type to modify it (including most letters) are redefined as - Rmail commands. This is usually not a problem since it is rare to want - to change the text of a message. When you do want to do this, the way - is to type `e' (`rmail-edit-current-message'), which changes from Rmail - mode into Rmail Edit mode, another major mode which is nearly the same - as Text mode. The mode line indicates this change. - - In Rmail Edit mode, letters insert themselves as usual and the Rmail - commands are not available. When you are finished editing the message - and are ready to go back to Rmail, type `C-c C-c', which switches back - to Rmail mode. Alternatively, you can return to Rmail mode but cancel - all the editing that you have done by typing `C-c C-]'. - - Entering Rmail Edit mode runs the hook `text-mode-hook'; then it - runs the hook `rmail-edit-mode-hook' (*note Hooks::.). It adds the - attribute `edited' to the message. - -  - File: emacs, Node: Rmail Digest, Next: Out of Rmail, Prev: Rmail Editing, Up: Rmail - - Digest Messages - =============== - - A "digest message" is a message which exists to contain and carry - several other messages. Digests are used on some moderated mailing - lists; all the messages that arrive for the list during a period of time - such as one day are put inside a single digest which is then sent to the - subscribers. Transmitting the single digest uses much less computer - time than transmitting the individual messages even though the total - size is the same, because the per-message overhead in network mail - transmission is considerable. - - When you receive a digest message, the most convenient way to read - it is to "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 `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 - - Converting an Rmail File to Mailbox Format - ========================================== - - The command `M-x unrmail' converts a file in Rmail format to - ordinary system mailbox format, so that you can use it with other - mail-editing tools. You must specify two arguments, the name of the - Rmail file and the name to use for the converted file. `M-x unrmail' - does not alter the Rmail file itself. - -  - File: emacs, Node: Rmail Rot13, Prev: Out of Rmail, Up: Rmail - - Reading Rot13 Messages - ====================== - - Mailing list messages that might offend some readers are sometimes - encoded in a simple code called "rot13"--so named because it rotates - the alphabet by 13 letters. This code is not for secrecy, as it - provides none; rather, it enables those who might be offended to avoid - ever seeing the real text of the message. - - To view a buffer using the rot13 code, use the command `M-x - rot13-other-window'. This displays the current buffer in another window - which applies the code when displaying the text. - -  - File: emacs, Node: Dired, Next: Calendar/Diary, Prev: Rmail, Up: Top - - Dired, the Directory Editor - *************************** - - Dired makes an Emacs buffer containing a listing of a directory, and - optionally some of its subdirectories as well. You can use the normal - Emacs commands to move around in this buffer, and special Dired commands - to operate on the files listed. - - * Menu: - - * Enter: Dired Enter. How to invoke Dired. - * Commands: Dired Commands. Commands in the Dired buffer. - * Deletion: Dired Deletion. Deleting files with Dired. - * Visit: Dired Visiting. Other file operations through Dired. - * Marks vs. Flags:: Flagging for deletion vs marking. - * Operating on Files:: How to copy, rename, print, compress, etc. - either one file or several files. - * Shell Commands in Dired:: Running a shell command on the marked files. - * Transforming File Names:: Using patterns to rename multiple files. - * Comparison in Dired:: Running `diff' by way of Dired. - * Subdirectories in Dired:: Adding subdirectories to the Dired buffer. - * Subdirectory Motion:: Moving across subdirectories, and up and down. - * Hiding Subdirectories:: Making subdirectories visible or invisible. - * Updating: Dired Updating. Discarding lines for files of no interest. - * Find: Dired and Find. Using `find' to choose the files for Dired. - -  - File: emacs, Node: Dired Enter, Next: Dired Commands, Up: Dired - - Entering Dired - ============== - - To invoke Dired, do `C-x d' or `M-x dired'. The command reads a - directory name or wildcard file name pattern as a minibuffer argument - to specify which files to list. Where `dired' differs from - `list-directory' is in putting the buffer into Dired mode so that the - special commands of Dired are available. - - The variable `dired-listing-switches' specifies the options to give - to `ls' for listing directory; this string *must* contain `-l'. If you - use a numeric prefix argument with the `dired' command, you can specify - the `ls' switches with the minibuffer after you finish entering the - directory specification. - - To display the Dired buffer in another window rather than in the - selected window, use `C-x 4 d' (`dired-other-window)' instead of `C-x - d'. - -  - File: emacs, Node: Dired Commands, Next: Dired Deletion, Prev: Dired Enter, Up: Dired - - Commands in the Dired Buffer - ============================ - - The Dired buffer is "read-only", and inserting text in it is not - useful, so ordinary printing characters such as `d' and `x' are used - for special Dired commands. Some Dired commands "mark" or "flag" the - "current file" (that is, the file on the current line); other commands - operate on the marked files or on the flagged files. - - All the usual Emacs cursor motion commands are available in Dired - buffers. Some special purpose cursor motion commands are also - provided. The keys `C-n' and `C-p' are redefined to put the cursor at - the beginning of the file name on the line, rather than at the - beginning of the line. - - For extra convenience, SPC and `n' in Dired are equivalent to `C-n'. - `p' is equivalent to `C-p'. (Moving by lines is so common in Dired - that it deserves to be easy to type.) DEL (move up and unflag) is - often useful simply for moving up. - -  - File: emacs, Node: Dired Deletion, Next: Dired Visiting, Prev: Dired Commands, Up: Dired - - Deleting Files with Dired - ========================= - - The primary use of Dired is to "flag" files for deletion and then - delete the files previously flagged. - - `d' - Flag this file for deletion. - - `u' - Remove deletion flag on this line. - - `DEL' - Move point to previous line and remove the deletion flag on that - line. - - `x' - Delete the files that are flagged for deletion. - - `#' - Flag all auto-save files (files whose names start and end with `#') - for deletion (*note Auto Save::.). - - `~' - Flag all backup files (files whose names end with `~') for deletion - (*note Backup::.). - - `. (Period)' - Flag excess numeric backup files for deletion. The oldest and - newest few backup files of any one file are exempt; the middle - ones are flagged. - - `% d REGEXP RET' - Flag for deletion all files whose names match the regular - expression REGEXP (`dired-flag-files-regexp'). This is just like - `% m' except that it uses `D' instead of `*' to mark the files. - - Only the non-directory part of the file name is used in matching. - Use `^' and `$' to anchor matches. Exclude subdirectories by - hiding them (*note Hiding Subdirectories::.). - - You can flag a file for deletion by moving to the line describing the - file and typing `d'. The deletion flag is visible as a `D' at the - beginning of the line. This command moves point to the beginning of - the next line, so that repeated `d' commands flag successive files. - - The files are flagged for deletion rather than deleted immediately to - reduce the danger of deleting a file accidentally. Until you direct - Dired to expunge the flagged files, you can remove deletion flags using - the commands `u' and DEL. `u' works just like `d', but removes flags - rather than making flags. DEL moves upward, removing flags; it is like - `u' with numeric argument automatically negated. - - To delete the flagged files, type `x' (`dired-expunge'). This - command first displays a list of all the file names flagged for - deletion, and requests confirmation with `yes'. Once you confirm, `x' - deletes all the flagged files, then deletes their lines from the text - of the Dired buffer. The shortened Dired buffer remains selected. - - If you answer `no' or quit with `C-g' when asked to confirm, you - return immediately to Dired, with the deletion flags still present in - the buffer, and no files actually deleted. - - The `#', `~' and `.' commands flag many files for deletion, based on - their file names. These commands are useful precisely because they do - not actually delete any files; you can remove the deletion flags from - any flagged files that you really wish to keep. - - `#' flags for deletion all files whose names look like auto-save - files (*note Auto Save::.)--that is, files whose names begin and end - with `#'. `~' flags for deletion all files whose names say they are - backup files (*note Backup::.)--that is, whose names end in `~'. - - `.' (Period) flags just some of the backup files for deletion: all - but the oldest few and newest few backups of any one file. Normally - `dired-kept-versions' (*not* `kept-new-versions'; that applies only - when saving) specifies the number of newest versions of each file to - keep, and `kept-old-versions' specifies the number of oldest versions - to keep. - - Period with a positive numeric argument, as in `C-u 3 .', specifies - the number of newest versions to keep, overriding - `dired-kept-versions'. A negative numeric argument overrides - `kept-old-versions', using minus the value of the argument to specify - the number of oldest versions of each file to keep. - - The `% d' command flags all files whose names match a specified - regular expression (`dired-flag-files-regexp'). Only the non-directory - part of the file name is used in matching. You can use `^' and `$' to - anchor matches. You can exclude subdirectories by hiding them (*note - Hiding Subdirectories::.). - -  - File: emacs, Node: Dired Visiting, Next: Marks vs. Flags, Prev: Dired Deletion, Up: Dired - - Visiting Files in Dired - ======================= - - There are several Dired commands for visiting or examining the files - listed in the Dired buffer. All of them apply to the current line's - file; if that file is really a directory, these commands invoke Dired on - that subdirectory (using a separate Dired buffer). - - `f' - Visit the file described on the current line, like typing `C-x C-f' - and supplying that file name (`dired-find-file'). *Note - Visiting::. - - `o' - Like `f', but uses another window to display the file's buffer - (`dired-find-file-other-window'). The Dired buffer remains visible - in the first window. This is like using `C-x 4 C-f' to visit the - file. *Note Windows::. - - `C-o' - Visit the file described on the current line, and display the - buffer in another window, but do not select that window - (`dired-display-file'). - - `v' - View the file described on the current line, using `M-x view-file' - (`dired-view-file'). - - Viewing a file is like visiting it, but is slanted toward moving - around in the file conveniently and does not allow changing the - file. *Note View File: Misc File Ops. - -  - File: emacs, Node: Marks vs. Flags, Next: Operating on Files, Prev: Dired Visiting, Up: Dired - - Dired Marks vs. Flags - ===================== - - Instead of flagging a file with `D', you can "mark" the file with - some other character (usually `*'). Most Dired commands other than - "expunge" (`x') operate on files marked with `*'. - - Here are some commands for marking with `*' (and also for - unmarking). (*Note Dired Deletion::, for commands to flag and unflag - files.) - - `m' - Mark the current file with `*' (`dired-mark'). With a numeric - argument N, mark the next N files starting with the current file. - (If N is negative, mark the previous -N files.) - - `*' - Mark all executable files with `*' (`dired-mark-executables'). - With a prefix argument, unmark all those files. - - `@' - Mark all symbolic links with `*' (`dired-mark-symlinks'). With a - prefix argument, unmark all those files. - - `/' - Mark with `*' all files which are actually directories, except for - `.' and `..' (`dired-mark-directories'). With a prefix argument, - unmark all those files. - - `M-DEL MARKCHAR' - Remove all marks that use the character MARKCHAR - (`dired-unmark-all-files'). If you specify RET as MARKCHAR, this - command removes all marks, no matter what the marker character is. - - With a numeric argument, this command queries about each marked - file, asking whether to remove its mark. You can answer `y' - meaning yes, `n' meaning no, `!' to remove the marks from the - remaining files without asking about them. - - `c OLD NEW' - Replace all marks that use the character OLD with marks that use - the character NEW (`dired-change-marks'). This command is the - only way to create or use marks other than `*' or `D'. The - arguments are single characters--do not use RET to terminate them. - - You can use almost any character as a mark character by means of - this command, to distinguish various classes of files. If OLD is a - space (` '), then the command operates on all unmarked files; if - NEW is a space, then the command unmarks the files it acts on. - - To illustrate the power of this command, here is how to put `*' - marks on all the files that are unmarked, while unmarking all - those that have `*' marks: - - c * t c SPC * c t SPC - - `% m REGEXP RET' - Mark (with `*') all files whose names match the regular expression - REGEXP (`dired-mark-files-regexp'). - - Only the non-directory part of the file name is used in matching. - Use `^' and `$' to anchor matches. Exclude subdirectories by - hiding them (*note Hiding Subdirectories::.). --- 1156,1159 ---- diff -cprP --exclude=*.elc emacs-19.13/info/emacs-13 emacs-19.14/info/emacs-13 *** emacs-19.13/info/emacs-13 Tue Jun 8 07:24:28 1993 --- emacs-19.14/info/emacs-13 Thu Jun 17 19:44:45 1993 *************** *** 1,9 **** ! This is Info file ../info/emacs, produced by Makeinfo-1.54 from the input file emacs.texi.  ! File: emacs, Node: Operating on Files, Next: Shell Commands in Dired, Prev: Marks vs. Flags, Up: Dired Operating on Files ================== --- 1,613 ---- ! This is Info file ../info/emacs, produced by Makeinfo-1.55 from the input file emacs.texi.  ! File: emacs, Node: Rmail Reply, Next: Rmail Summary, Prev: Rmail Labels, Up: Rmail + Sending Replies + =============== + + Rmail has several commands that use Mail mode to send outgoing mail. + *Note Sending Mail::, for information on using Mail mode. What are + documented here are the special commands of Rmail for entering Mail + mode. Note that the usual keys for sending mail, `C-x m' and `C-x 4 m', + are available in Rmail mode and work just as they usually do. + + `m' + Send a message (`rmail-mail'). + + `c' + Continue editing already started outgoing message + (`rmail-continue'). + + `r' + Send a reply to the current Rmail message (`rmail-reply'). + + `f' + Forward current message to other users (`rmail-forward'). + + `C-u f' + Resend the current message to other users (`rmail-resend'). + + `M-m' + Try sending a bounced message a second time + (`rmail-retry-failure'). + + The most common reason to send a message while in Rmail is to reply + to the message you are reading. To do this, type `r' (`rmail-reply'). + This displays the `*mail*' buffer in another window, much like `C-x 4 + m', but preinitializes the `Subject', `To', `CC' and `In-reply-to' + header fields based on the message you are replying to. The `To' field + is starts out as the address of the person who sent the message you + received, and the `CC' field starts out with all the other recipients + of that message. + + You can exclude certain recipients from being placed automatically in + the `CC', using the variable `rmail-dont-reply-to-names'. Its value + should be a regular expression (as a string); any recipient that the + regular expression matches, is excluded from the `CC' field. The + default value matches your own name, and any name starting with + `info-'. (Those names are excluded because there is a convention of + using them for large mailing lists to broadcast announcements.) + + To omit the `CC' field completely for a particular reply, enter the + reply command with a prefix argument: `C-u r'. + + Once the `*mail*' buffer has been initialized, editing and sending + the mail goes as usual (*note Sending Mail::.). You can edit the + presupplied header fields if they are not right for you. You can also + use the commands of Mail mode, including `C-c C-y' to yank in the + message that you are replying to, and `C-c C-q' to fill what was thus + yanked. You can also switch to the Rmail buffer, select a different + message, switch back, and yank the new current message. + + Sometimes a message does not reach its destination. Mailers usually + send the failed message back to you, enclosed in a "failure message". + The Rmail command `M-m' (`rmail-retry-failure') prepares to send the + same message a second time: it sets up a `*mail*' buffer with the same + text and header fields as before. If you type `C-c C-c' right away, + you send the message again exactly the same as the first time. + Alternatively, you can edit the text or headers and then send it. + + Another frequent reason to send mail in Rmail is to "forward" the + current message to other users. `f' (`rmail-forward') makes this easy + by preinitializing the `*mail*' buffer with the current message as the + text, and a subject designating a forwarded message. All you have to + do is fill in the recipients and send. When you forward a message, + recipients get a message which is "from" you, and which has the + original message in its contents. + + "Resending" is an alternative similar to forwarding; the difference + is that resending sends a message that is "from" the original sender, + just as it reached you--with a few added header fields `Resent-from' + and `Resent-to' to indicate that it came via you. To resend a message + in Rmail, use `C-u f'. (`f' runs `rmail-forward', which is programmed + to invoke `rmail-resend' if you provide a numeric argument.) + + The `m' (`rmail-mail') command is used to start editing an outgoing + message that is not a reply. It leaves the header fields empty. Its + only difference from `C-x 4 m' is that it makes the Rmail buffer + accessible for `C-c C-y', just as `r' does. Thus, `m' can be used to + reply to or forward a message; it can do anything `r' or `f' can do. + + The `c' (`rmail-continue') command resumes editing the `*mail*' + buffer, to finish editing an outgoing message you were already + composing, or to alter a message you have sent. + +  + File: emacs, Node: Rmail Summary, Next: Rmail Editing, Prev: Rmail Reply, Up: Rmail + + Summaries + ========= + + A "summary" is a buffer containing one line per message to give you + an overview of the mail in an Rmail file. Each line shows the message + number, the sender, the labels, and the subject. When the summary + buffer is selected, you can use almost all Rmail commands; these apply + to the message described by the current line of the summary. Moving + point in the summary buffer selects messages as you move to their + summary lines. + + A summary buffer applies to a single Rmail file only; if you are + editing multiple Rmail files, each one has its own summary buffer (if + you have asked for one). The summary buffer name is made by appending + `-summary' to the Rmail buffer's name. Normally only one summary + buffer is displayed at a time. + + * Menu: + + * Rmail Make Summary:: Making various sorts of summaries. + * Rmail Summary Edit:: Manipulating messages from the summary. + +  + File: emacs, Node: Rmail Make Summary, Next: Rmail Summary Edit, Up: Rmail Summary + + Making Summaries + ---------------- + + Here are the commands to create a summary for the current Rmail file. + Once the Rmail file has a summary buffer, changes in the Rmail file + (such as deleting or expunging messages, and getting new mail) + automatically update the summary. + + `h' + `C-M-h' + Summarize all messages (`rmail-summary'). + + `l LABELS RET' + `C-M-l LABELS RET' + Summarize message that have one or more of the specified labels + (`rmail-summary-by-labels'). + + `C-M-r RCPTS RET' + Summarize messages that have one or more of the specified + recipients (`rmail-summary-by-recipients'). + + `C-M-t TOPIC RET' + Summarize messages that have a match for the specified regexp + TOPIC in their subjects (`rmail-summary-by-topic'). + + The `h' or `C-M-h' (`rmail-summary') command fills the summary buffer + for the current Rmail file with a summary of all the messages in the + file. It then displays and selects the summary buffer in another + window. + + `C-M-l LABELS RET' (`rmail-summary-by-labels') makes a partial + summary mentioning only the messages that have one or more of the + labels LABELS. LABELS should contain label names separated by commas. + + `C-M-r RCPTS RET' (`rmail-summary-by-recipients') makes a partial + summary mentioning only the messages that have one or more of the + recipients RCPTS. RCPTS should contain mailing addresses separated by + commas. + + `C-M-t TOPIC RET' (`rmail-summary-by-topic') makes a partial summary + mentioning only the messages whose subjects have a match for the + regular expression TOPIC. + + Note that there is only one summary buffer for any Rmail file; + making one kind of summary discards any previously made summary. + +  + File: emacs, Node: Rmail Summary Edit, Prev: Rmail Make Summary, Up: Rmail Summary + + Editing in Summaries + -------------------- + + You can use the Rmail summary buffer to do almost anything you can do + in the Rmail buffer itself. In fact, once you have a summary buffer, + there's no need to switch back to the Rmail buffer. + + You can select and display various messages in the Rmail buffer, from + the summary buffer, just by moving point in the summary buffer to + different lines. It doesn't matter what Emacs command you use to move + point; whichever line point is on at the end of the command, that + message is selected in the Rmail buffer. + + Almost all Rmail commands work in the summary buffer as well as in + the Rmail buffer. Thus, `d' in the summary buffer deletes the current + message, `u' undeletes, and `x' expunges. `o' and `C-o' output the + current message to a file; `r' starts a reply to it. You can scroll + the current message while remaining in the summary buffer using SPC and + DEL. + + The Rmail commands to move between messages also work in the summary + buffer, but with a twist: they move through the set of messages included + in the summary. They also redisplay the Rmail buffer on the screen + (unlike cursor motion commands, which update the contents of the Rmail + buffer but don't display it in a window unless it already appears). + Here is a list of these commands: + + `n' + Move to next line, skipping lines saying `deleted', and select its + message. + + `p' + Move to previous line, skipping lines saying `deleted', and select + its message. + + `M-n' + Move to next line and select its message. + + `M-p' + Move to previous line and select its message. + + `>' + Move to the last line, and select its message. + + `<' + Move to the first line, and select its message. + + `M-s PATTERN RET' + Search through messages for PATTERN starting with the current + message; select the message found, and move point in the summary + buffer to that message's line. + + Deletion, undeletion, and getting new mail, and even selection of a + different message all update the summary buffer when you do them in the + Rmail buffer. If the variable `rmail-redisplay-summary' is non-`nil', + these actions also bring the summary buffer back onto the screen. + + When you are finished using the summary, type `w' + (`rmail-summary-wipe') to kill the summary buffer's window. You can + also exit Rmail while in the summary. `q' (`rmail-summary-quit') kills + the summary window, then saves the Rmail file and switches to another + buffer. + +  + File: emacs, Node: Rmail Editing, Next: Rmail Digest, Prev: Rmail Summary, Up: Rmail + + Editing Within a Message + ======================== + + Rmail mode provides a few special commands for moving within and + editing the current message. In addition, the usual Emacs commands are + available (except for a few, such as `C-M-n' and `C-M-h', that are + redefined by Rmail for other purposes). However, the Rmail buffer is + normally read-only, and to alter it you must use the Rmail command `e' + described below. + + `t' + Toggle display of original headers (`rmail-toggle-headers'). + + `e' + Edit current message (`rmail-edit-current-message'). + + Rmail reformats the header of each message before displaying it. + Normally this involves deleting most header fields, on the grounds that + they are not interesting. The variable `rmail-ignored-headers' + specifies a regexp that matches the header fields to discard in this + way. The original headers are saved permanently, and to see what they + look like, use the `t' command (`rmail-toggle-headers'). This discards + the reformatted headers of the current message and displays it with the + original headers. Repeating `t' reformats the message again. + Selecting the message again also reformats. + + The Rmail buffer is normally read only, and most of the characters + you would type to modify it (including most letters) are redefined as + Rmail commands. This is usually not a problem since it is rare to want + to change the text of a message. When you do want to do this, the way + is to type `e' (`rmail-edit-current-message'), which changes from Rmail + mode into Rmail Edit mode, another major mode which is nearly the same + as Text mode. The mode line indicates this change. + + In Rmail Edit mode, letters insert themselves as usual and the Rmail + commands are not available. When you are finished editing the message + and are ready to go back to Rmail, type `C-c C-c', which switches back + to Rmail mode. Alternatively, you can return to Rmail mode but cancel + all the editing that you have done by typing `C-c C-]'. + + Entering Rmail Edit mode runs the hook `text-mode-hook'; then it + runs the hook `rmail-edit-mode-hook' (*note Hooks::.). It adds the + attribute `edited' to the message. + +  + File: emacs, Node: Rmail Digest, Next: Out of Rmail, Prev: Rmail Editing, Up: Rmail + + Digest Messages + =============== + + A "digest message" is a message which exists to contain and carry + several other messages. Digests are used on some moderated mailing + lists; all the messages that arrive for the list during a period of time + such as one day are put inside a single digest which is then sent to the + subscribers. Transmitting the single digest uses much less computer + time than transmitting the individual messages even though the total + size is the same, because the per-message overhead in network mail + transmission is considerable. + + When you receive a digest message, the most convenient way to read + it is to "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 `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 + + Converting an Rmail File to Mailbox Format + ========================================== + + The command `M-x unrmail' converts a file in Rmail format to + ordinary system mailbox format, so that you can use it with other + mail-editing tools. You must specify two arguments, the name of the + Rmail file and the name to use for the converted file. `M-x unrmail' + does not alter the Rmail file itself. + +  + File: emacs, Node: Rmail Rot13, Prev: Out of Rmail, Up: Rmail + + Reading Rot13 Messages + ====================== + + Mailing list messages that might offend some readers are sometimes + encoded in a simple code called "rot13"--so named because it rotates + the alphabet by 13 letters. This code is not for secrecy, as it + provides none; rather, it enables those who might be offended to avoid + ever seeing the real text of the message. + + To view a buffer using the rot13 code, use the command `M-x + rot13-other-window'. This displays the current buffer in another window + which applies the code when displaying the text. + +  + File: emacs, Node: Dired, Next: Calendar/Diary, Prev: Rmail, Up: Top + + Dired, the Directory Editor + *************************** + + Dired makes an Emacs buffer containing a listing of a directory, and + optionally some of its subdirectories as well. You can use the normal + Emacs commands to move around in this buffer, and special Dired commands + to operate on the files listed. + + * Menu: + + * Enter: Dired Enter. How to invoke Dired. + * Commands: Dired Commands. Commands in the Dired buffer. + * Deletion: Dired Deletion. Deleting files with Dired. + * Visit: Dired Visiting. Other file operations through Dired. + * Marks vs Flags:: Flagging for deletion vs marking. + * Operating on Files:: How to copy, rename, print, compress, etc. + either one file or several files. + * Shell Commands in Dired:: Running a shell command on the marked files. + * Transforming File Names:: Using patterns to rename multiple files. + * Comparison in Dired:: Running `diff' by way of Dired. + * Subdirectories in Dired:: Adding subdirectories to the Dired buffer. + * Subdirectory Motion:: Moving across subdirectories, and up and down. + * Hiding Subdirectories:: Making subdirectories visible or invisible. + * Updating: Dired Updating. Discarding lines for files of no interest. + * Find: Dired and Find. Using `find' to choose the files for Dired. + +  + File: emacs, Node: Dired Enter, Next: Dired Commands, Up: Dired + + Entering Dired + ============== + + To invoke Dired, do `C-x d' or `M-x dired'. The command reads a + directory name or wildcard file name pattern as a minibuffer argument + to specify which files to list. Where `dired' differs from + `list-directory' is in putting the buffer into Dired mode so that the + special commands of Dired are available. + + The variable `dired-listing-switches' specifies the options to give + to `ls' for listing directory; this string *must* contain `-l'. If you + use a numeric prefix argument with the `dired' command, you can specify + the `ls' switches with the minibuffer after you finish entering the + directory specification. + + To display the Dired buffer in another window rather than in the + selected window, use `C-x 4 d' (`dired-other-window)' instead of `C-x + d'. + +  + File: emacs, Node: Dired Commands, Next: Dired Deletion, Prev: Dired Enter, Up: Dired + + Commands in the Dired Buffer + ============================ + + The Dired buffer is "read-only", and inserting text in it is not + useful, so ordinary printing characters such as `d' and `x' are used + for special Dired commands. Some Dired commands "mark" or "flag" the + "current file" (that is, the file on the current line); other commands + operate on the marked files or on the flagged files. + + All the usual Emacs cursor motion commands are available in Dired + buffers. Some special purpose cursor motion commands are also + provided. The keys `C-n' and `C-p' are redefined to put the cursor at + the beginning of the file name on the line, rather than at the + beginning of the line. + + For extra convenience, SPC and `n' in Dired are equivalent to `C-n'. + `p' is equivalent to `C-p'. (Moving by lines is so common in Dired + that it deserves to be easy to type.) DEL (move up and unflag) is + often useful simply for moving up. + +  + File: emacs, Node: Dired Deletion, Next: Dired Visiting, Prev: Dired Commands, Up: Dired + + Deleting Files with Dired + ========================= + + The primary use of Dired is to "flag" files for deletion and then + delete the files previously flagged. + + `d' + Flag this file for deletion. + + `u' + Remove deletion flag on this line. + + `DEL' + Move point to previous line and remove the deletion flag on that + line. + + `x' + Delete the files that are flagged for deletion. + + `#' + Flag all auto-save files (files whose names start and end with `#') + for deletion (*note Auto Save::.). + + `~' + Flag all backup files (files whose names end with `~') for deletion + (*note Backup::.). + + `. (Period)' + Flag excess numeric backup files for deletion. The oldest and + newest few backup files of any one file are exempt; the middle + ones are flagged. + + `% d REGEXP RET' + Flag for deletion all files whose names match the regular + expression REGEXP (`dired-flag-files-regexp'). This is just like + `% m' except that it uses `D' instead of `*' to mark the files. + + Only the non-directory part of the file name is used in matching. + Use `^' and `$' to anchor matches. Exclude subdirectories by + hiding them (*note Hiding Subdirectories::.). + + You can flag a file for deletion by moving to the line describing the + file and typing `d'. The deletion flag is visible as a `D' at the + beginning of the line. This command moves point to the beginning of + the next line, so that repeated `d' commands flag successive files. + + The files are flagged for deletion rather than deleted immediately to + reduce the danger of deleting a file accidentally. Until you direct + Dired to expunge the flagged files, you can remove deletion flags using + the commands `u' and DEL. `u' works just like `d', but removes flags + rather than making flags. DEL moves upward, removing flags; it is like + `u' with numeric argument automatically negated. + + To delete the flagged files, type `x' (`dired-expunge'). This + command first displays a list of all the file names flagged for + deletion, and requests confirmation with `yes'. Once you confirm, `x' + deletes all the flagged files, then deletes their lines from the text + of the Dired buffer. The shortened Dired buffer remains selected. + + If you answer `no' or quit with `C-g' when asked to confirm, you + return immediately to Dired, with the deletion flags still present in + the buffer, and no files actually deleted. + + The `#', `~' and `.' commands flag many files for deletion, based on + their file names. These commands are useful precisely because they do + not actually delete any files; you can remove the deletion flags from + any flagged files that you really wish to keep. + + `#' flags for deletion all files whose names look like auto-save + files (*note Auto Save::.)--that is, files whose names begin and end + with `#'. `~' flags for deletion all files whose names say they are + backup files (*note Backup::.)--that is, whose names end in `~'. + + `.' (Period) flags just some of the backup files for deletion: all + but the oldest few and newest few backups of any one file. Normally + `dired-kept-versions' (*not* `kept-new-versions'; that applies only + when saving) specifies the number of newest versions of each file to + keep, and `kept-old-versions' specifies the number of oldest versions + to keep. + + Period with a positive numeric argument, as in `C-u 3 .', specifies + the number of newest versions to keep, overriding + `dired-kept-versions'. A negative numeric argument overrides + `kept-old-versions', using minus the value of the argument to specify + the number of oldest versions of each file to keep. + + The `% d' command flags all files whose names match a specified + regular expression (`dired-flag-files-regexp'). Only the non-directory + part of the file name is used in matching. You can use `^' and `$' to + anchor matches. You can exclude subdirectories by hiding them (*note + Hiding Subdirectories::.). + +  + File: emacs, Node: Dired Visiting, Next: Marks vs Flags, Prev: Dired Deletion, Up: Dired + + Visiting Files in Dired + ======================= + + There are several Dired commands for visiting or examining the files + listed in the Dired buffer. All of them apply to the current line's + file; if that file is really a directory, these commands invoke Dired on + that subdirectory (using a separate Dired buffer). + + `f' + Visit the file described on the current line, like typing `C-x C-f' + and supplying that file name (`dired-find-file'). *Note + Visiting::. + + `o' + Like `f', but uses another window to display the file's buffer + (`dired-find-file-other-window'). The Dired buffer remains visible + in the first window. This is like using `C-x 4 C-f' to visit the + file. *Note Windows::. + + `C-o' + Visit the file described on the current line, and display the + buffer in another window, but do not select that window + (`dired-display-file'). + + `v' + View the file described on the current line, using `M-x view-file' + (`dired-view-file'). + + Viewing a file is like visiting it, but is slanted toward moving + around in the file conveniently and does not allow changing the + file. *Note View File: Misc File Ops. + +  + File: emacs, Node: Marks vs Flags, Next: Operating on Files, Prev: Dired Visiting, Up: Dired + + Dired Marks vs. Flags + ===================== + + Instead of flagging a file with `D', you can "mark" the file with + some other character (usually `*'). Most Dired commands other than + "expunge" (`x') operate on files marked with `*'. + + Here are some commands for marking with `*' (and also for + unmarking). (*Note Dired Deletion::, for commands to flag and unflag + files.) + + `m' + Mark the current file with `*' (`dired-mark'). With a numeric + argument N, mark the next N files starting with the current file. + (If N is negative, mark the previous -N files.) + + `*' + Mark all executable files with `*' (`dired-mark-executables'). + With a prefix argument, unmark all those files. + + `@' + Mark all symbolic links with `*' (`dired-mark-symlinks'). With a + prefix argument, unmark all those files. + + `/' + Mark with `*' all files which are actually directories, except for + `.' and `..' (`dired-mark-directories'). With a prefix argument, + unmark all those files. + + `M-DEL MARKCHAR' + Remove all marks that use the character MARKCHAR + (`dired-unmark-all-files'). If you specify RET as MARKCHAR, this + command removes all marks, no matter what the marker character is. + + With a numeric argument, this command queries about each marked + file, asking whether to remove its mark. You can answer `y' + meaning yes, `n' meaning no, `!' to remove the marks from the + remaining files without asking about them. + + `c OLD NEW' + Replace all marks that use the character OLD with marks that use + the character NEW (`dired-change-marks'). This command is the + only way to create or use marks other than `*' or `D'. The + arguments are single characters--do not use RET to terminate them. + + You can use almost any character as a mark character by means of + this command, to distinguish various classes of files. If OLD is a + space (` '), then the command operates on all unmarked files; if + NEW is a space, then the command unmarks the files it acts on. + + To illustrate the power of this command, here is how to put `*' + marks on all the files that are unmarked, while unmarking all + those that have `*' marks: + + c * t c SPC * c t SPC + + `% m REGEXP RET' + Mark (with `*') all files whose names match the regular expression + REGEXP (`dired-mark-files-regexp'). + + Only the non-directory part of the file name is used in matching. + Use `^' and `$' to anchor matches. Exclude subdirectories by + hiding them (*note Hiding Subdirectories::.). + +  + File: emacs, Node: Operating on Files, Next: Shell Commands in Dired, Prev: Marks vs Flags, Up: Dired + Operating on Files ================== *************** simply to scroll the calendar. *** 430,437 **** * Menu: * Calendar Unit Motion:: Moving by days, weeks, months, and years. ! * Move to Beginning or End:: Moving to start/end of weeks, months, and years. ! * Specified Dates:: Moving to the current date or another specific date.  File: emacs, Node: Calendar Unit Motion, Next: Move to Beginning or End, Up: Calendar Motion --- 1034,1043 ---- * Menu: * Calendar Unit Motion:: Moving by days, weeks, months, and years. ! * Move to Beginning or End:: Moving to start/end of weeks, months, and ! years. ! * Specified Dates:: Moving to the current date or another ! specific date.  File: emacs, Node: Calendar Unit Motion, Next: Move to Beginning or End, Up: Calendar Motion *************** Counting Days *** 620,1262 **** To determine the number of days in the region, type `M-=' (`calendar-count-days-region'). The numbers of days printed is *inclusive*; that is, it includes the days specified by mark and point. - -  - File: emacs, Node: General Calendar, Next: Holidays, Prev: Counting Days, Up: Calendar/Diary - - Miscellaneous Calendar Commands - =============================== - - `p d' - Display day-in-year (`calendar-print-day-of-year'). - - `C-c C-l' - Regenerate the calendar window (`redraw-calendar'). - - `q' - Exit from calendar (`exit-calendar'). - - To print the number of days elapsed since the start of the year, or - the number of days remaining in the year, type the `p d' command - (`calendar-print-day-of-year'). This displays both of those numbers in - the echo area. The number of days elapsed includes the selected date. - The number of days remaining does not include that date. - - If the calendar window gets corrupted, type `C-c C-l' - (`redraw-calendar') to redraw it. - - To exit from the calendar, type `q' (`exit-calendar'). This buries - all buffers related to the calendar and returns the window display to - what it was when you entered the calendar. - -  - File: emacs, Node: Holidays, Next: Sunrise/Sunset, Prev: General Calendar, Up: Calendar/Diary - - Holidays - ======== - - The Emacs calendar knows about all major and many minor holidays, - and can display them. - - `h' - Display holidays for the selected date - (`calendar-cursor-holidays'). - - `x' - Mark holidays in the calendar window (`mark-calendar-holidays'). - - `u' - Unmark calendar window (`calendar-unmark'). - - `a' - List all holidays for the displayed three months in another window - (`list-calendar-holidays'). - - `M-x holidays' - List all holidays for three months around today's date in another - window. - - To see if any holidays fall on a given date, position point on that - date in the calendar window and use the `h' command. This names the - holidays for that date, in the echo area if they fit there, otherwise - in a separate window. - - To find the distribution of holidays for a wider period, use the `x' - command. This displays a `*' after each date on which a holiday falls. - The command applies both to the currently visible months and to other - months that subsequently become visible by scrolling. To turn marking - off and erase the current marks, type `u', which also erases any diary - marks (*note Diary::.). - - To get even more detailed information, use the `a' command, which - displays a separate buffer containing a list of all holidays in the - current three-month range. - - The command `M-x holidays' displays the list of holidays for the - current month and the preceding and succeeding months; this works even - if you don't have a calendar window. If you want the list of holidays - centered around a different month, use `C-u M-x holidays', which - prompts for the month and year. - - The holidays known to Emacs include American holidays and the major - Christian, Jewish, and Islamic holidays; when floating point is - available, the calendar also knows about solstices and equinoxes. - - The dates used by Emacs for holidays are based on *current - practice*, not historical fact. Historically, for instance, the start - of daylight savings time and even its existence have varied from year to - year, but present American law mandates that daylight savings time - begins on the first Sunday in April. Emacs always uses this definition, - even though it is wrong for some prior years. - -  - File: emacs, Node: Sunrise/Sunset, Next: Lunar Phases, Prev: Holidays, Up: Calendar/Diary - - Times of Sunrise and Sunset - =========================== - - Emacs can tell you, to within a minute or two, the times of sunrise - and sunset for any date, if floating point is available. - - `S' - Display times of sunrise and sunset for the selected date - (`calendar-sunrise-sunset'). - - `M-x sunrise-sunset' - Display times of sunrise and sunset for today's date. - - `C-u M-x sunrise-sunset' - Display times of sunrise and sunset for a specified date. - - Within the calendar, to display the *local times* of sunrise and - sunset in the echo area, move point to the date you want, and type `S'. - - The command `M-x sunrise-sunset' is available outside the calendar - to print this information for today's date or a specified date. To - specify a date other than today, use `C-u M-x sunrise-sunset', which - prompts for the year, month, and day. - - Because the times of sunrise and sunset depend on the location on - earth, you need to tell Emacs your latitude, longitude, and location - name before using these commands. Here is an example of what to set: - - (setq calendar-latitude 40.1) - (setq calendar-longitude -88.2) - (setq calendar-location-name "Urbana, IL") - - Use one decimal place in the values of `calendar-latitude' and - `calendar-longitude'. - - Your time zone also affects the local time of sunrise and sunset. - Emacs usually gets this information from the operating system, but if - these values are not what you want (or if the operating system does not - supply them), you must set them yourself. Here is an example: - - (setq calendar-time-zone -360) - (setq calendar-standard-time-zone-name "CST") - (setq calendar-daylight-time-zone-name "CDT") - - The value of `calendar-time-zone' is the number of minutes difference - between your local standard time and Universal Time (Greenwich time). - The values of `calendar-standard-time-zone-name' and - `calendar-daylight-time-zone-name' are the abbreviations used in your - time zone. - - Emacs displays the times of sunrise and sunset *corrected for - daylight savings time*. The default rule for the starting and stopping - dates of daylight savings time is the American rule. *Note Daylight - Savings::, for how to specify a different rule. - - You can display the times of sunrise and sunset for any location and - any date with `C-u C-u M-x sunrise-sunset'. This asks you for a - longitude, latitude, number of minutes difference from Universal time, - and date, and then tells you the times of sunrise and sunset for that - location on that date. - -  - File: emacs, Node: Lunar Phases, Next: Other Calendars, Prev: Sunrise/Sunset, Up: Calendar/Diary - - Phases of the Moon - ================== - - Emacs can tell you the dates and times of the phases of the moon (new - moon, first quarter, full moon, last quarter), if floating point is - available. This feature is useful for debugging problems that "depend - on the phase of the moon." - - `M' - Display the dates and times for all the quarters of the moon for - the three-month period shown (`calendar-phases-of-moon'). - - `M-x phases-of-moon' - Display dates and times of the quarters of the moon for three - months around today's date. - - Within the calendar, use the `M' command to display a separate - buffer of the phases of the moon for the current three-month range. The - dates and times listed are accurate to within a few minutes. - - Outside the calendar, use the command `M-x phases-of-moon' to - display the list of the phases of the moon for the current month and the - preceding and succeeding months. For information about a different - month, use `C-u M-x phases-of-moon', which prompts for the month and - year. - - The dates and times given for the phases of the moon are given in - local time (corrected for daylight savings, when appropriate); but if - the variable `calendar-time-zone' is void, Universal Time (the - Greenwich time zone) is used. *Note Daylight Savings::. - -  - File: emacs, Node: Other Calendars, Next: Diary, Prev: Lunar Phases, Up: Calendar/Diary - - Conversion To and From Other Calendars - ====================================== - - The Emacs calendar displayed is *always* the Gregorian calendar, - sometimes called the "new style" calendar, which is used in most of the - world today. However, this calendar did not exist before the sixteenth - century and was not widely used before the eighteenth century; it did - not fully displace the Julian calendar and gain universal acceptance - until the early twentieth century. The Emacs calendar can display any - month since January, year 1 of the current era, but the calendar - displayed is the Gregorian, even for a date at which the Gregorian - calendar did not exist. - - While Emacs cannot display other calendars, it can convert dates to - and from several other calendars. - - * Menu: - - * Calendar Systems:: The calendars Emacs understands - (aside from Gregorian). - * To Other Calendar:: Converting the selected date to various calendars. - * From Other Calendar:: Moving to a date specified in another calendar. - * Mayan Calendar:: Moving to a date specified in a Mayan calendar. - -  - File: emacs, Node: Calendar Systems, Next: To Other Calendar, Up: Other Calendars - - Supported Calendar Systems - -------------------------- - - The ISO commercial calendar is used largely in Europe. - - The Julian calendar, named after Julius Caesar, was the one used in - Europe throughout medieval times, and in many countries up until the - nineteenth century. - - Astronomers use a simple counting of days elapsed since noon, Monday, - January 1, 4713 B.C. on the Julian calendar. The number of days elapsed - is called the *Julian day number* or the *Astronomical day number*. - - The Hebrew calendar is the one used to determine the dates of Jewish - holidays. Hebrew calendar dates begin and end at sunset. - - The Islamic (Moslem) calendar is the one used to determine the dates - of Moslem holidays. There is no universal agreement in the Islamic - world about the calendar; Emacs uses a widely accepted version, but the - precise dates of Islamic holidays often depend on proclamation by - religious authorities, not on calculations. As a consequence, the - actual dates of occurrence can vary slightly from the dates computed by - Emacs. Islamic calendar dates begin and end at sunset. - - The French Revolutionary calendar was created by the Jacobins after - the 1789 revolution, to represent a more secular and nature-based view - of the annual cycle, and to install a 10-day week in a rationalization - measure similar to the metric system. The French government officially - abandoned this calendar at the end of 1805. - - The Maya of Central America used three separate, overlapping calendar - systems, the *long count*, the *tzolkin*, and the *haab*. Emacs knows - about all three of these calendars. Experts dispute the exact - correlation between the Mayan calendar and our calendar; Emacs uses the - Goodman-Martinez-Thompson correlation in its calculations. - -  - File: emacs, Node: To Other Calendar, Next: From Other Calendar, Prev: Calendar Systems, Up: Other Calendars - - Converting To Other Calendars - ----------------------------- - - The following commands describe the selected date (the date at point) - in various other calendar systems: - - `p c' - Display ISO commercial calendar equivalent for selected day - (`calendar-print-iso-date'). - - `p j' - Display Julian date for selected day - (`calendar-print-julian-date'). - - `p a' - Display astronomical (Julian) day number for selected day - (`calendar-print-astro-day-number'). - - `p h' - Display Hebrew date for selected day - (`calendar-print-hebrew-date'). - - `p i' - Display Islamic date for selected day - (`calendar-print-islamic-date'). - - `p f' - Display French Revolutionary date for selected day - (`calendar-print-french-date'). - - `p m' - Display Mayan date for selected day (`calendar-print-mayan-date'). - - Put point on the desired date of the Gregorian calendar, then type - the appropriate keys. The `p' is a mnemonic for "print" since Emacs - "prints" the equivalent date in the echo area. - -  - File: emacs, Node: From Other Calendar, Next: Mayan Calendar, Prev: To Other Calendar, Up: Other Calendars - - Converting From Other Calendars - ------------------------------- - - You can move to dates that you specify on the Commercial, Julian, - astronomical, Hebrew, Islamic, or French calendars: - - `g c' - Move to a date specified in the ISO commercial calendar - (`calendar-goto-iso-date'). - - `g j' - Move to a date specified in the Julian calendar - (`calendar-goto-julian-date'). - - `g a' - Move to a date specified in astronomical (Julian) day number - (`calendar-goto-astro-day-number'). - - `g h' - Move to a date specified in the Hebrew calendar - (`calendar-goto-hebrew-date'). - - `g i' - Move to a date specified in the Islamic calendar - (`calendar-goto-islamic-date'). - - `g f' - Move to a date specified in the French Revolutionary calendar - (`calendar-goto-french-date'). - - These commands ask you for a date on the other calendar, move point - to the Gregorian calendar date equivalent to that date, and display the - other calendar's date in the echo area. Emacs uses strict completion - (*note Completion::.) whenever it asks you to type a month name, so you - don't have to worry about the spelling of Hebrew, Islamic, or French - names. - - One common question concerning the Hebrew calendar is the computation - of the anniversary of a date of death, called a "yahrzeit." The Emacs - calendar includes a facility for such calculations. If you are in the - calendar, the command `M-x list-yahrzeit-dates' asks you for a range of - years and then displays a list of the yahrzeit dates for those years - for the date given by point. If you are not in the calendar, this - command first asks you for the date of death and the range of years, - and then displays the list of yahrzeit dates. - -  - File: emacs, Node: Mayan Calendar, Prev: From Other Calendar, Up: Other Calendars - - Converting from the Mayan Calendar - ---------------------------------- - - Here are the commands to select dates based on the Mayan calendar: - - `g m l' - Move to a date specified by the long count calendar - (`calendar-goto-mayan-long-count-date'). - - `g m p t' - Move to the previous occurrence of a place in the tzolkin calendar - (`calendar-previous-tzolkin-date'). - - `g m n t' - Move to the next occurrence of a place in the tzolkin calendar - (`calendar-next-tzolkin-date'). - - `g m p h' - Move to the previous occurrence of a place in the haab calendar - (`calendar-previous-haab-date'). - - `g m n h' - Move to the next occurrence of a place in the haab calendar - (`calendar-next-haab-date'). - - `g m p c' - Move to the previous occurrence of a place in the calendar round - (`calendar-previous-calendar-round-date'). - - `g m n c' - Move to the next occurrence of a place in the calendar round - (`calendar-next-calendar-round-date'). - - To understand these commands, you need to understand the Mayan - calendars. The "long count" is a counting of days with these units: - - 1 kin = 1 day 1 uinal = 20 kin 1 tun = 18 uinal - 1 katun = 20 tun 1 baktun = 20 katun - - Thus, the long count date 12.16.11.16.6 means 12 baktun, 16 katun, 11 - tun, 16 uinal, and 6 kin. The Emacs calendar can handle Mayan long - count dates as early as 7.17.18.13.1, but no earlier. When you use the - `g m l' command, type the Mayan long count date with the baktun, katun, - tun, uinal, and kin separated by periods. - - The Mayan tzolkin calendar is a cycle of 260 days formed by a pair of - independent cycles of 13 and 20 days. Since this cycle repeats - endlessly, Emacs provides commands to move backward and forward to the - previous or next point in the cycle. Type `g m p t' to go to the - previous tzolkin date; Emacs asks you for a tzolkin date and moves point - to the previous occurrence of that date. Similarly, type `g m n t' to - go to the next occurrence of a tzolkin date. - - The Mayan haab calendar is a cycle of 365 days arranged as 18 months - of 20 days each, followed a 5-day monthless period. Like the tzolkin - cycle, this cycle repeats endlessly, and there are commands to move - backward and forward to the previous or next point in the cycle. Type - `g m p h' to go to the previous haab date; Emacs asks you for a haab - date and moves point to the previous occurrence of that date. - Similarly, type `g m n h' to go to the next occurrence of a haab date. - - The Maya also used the combination of the tzolkin date and the haab - date. This combination is a cycle of about 52 years called a *calendar - round*. If you type `g m p c', Emacs asks you for both a haab and a - tzolkin date and then moves point to the previous occurrence of that - combination. Use `g m p c' to move point to the next occurrence of a - combination. Emacs signals an error if the haab/tzolkin date you have - typed is impossible. - - Emacs uses strict completion (*note Completion::.) whenever it asks - you to type a Mayan name, so you don't have to worry about spelling. - -  - File: emacs, Node: Diary, Next: Appointments, Prev: Other Calendars, Up: Calendar/Diary - - The Diary - ========= - - The Emacs diary keeps track of appointments or other events on a - daily basis, in conjunction with the calendar. To use the diary - feature, you must first create a "diary file" containing a list of - events and their dates. Then Emacs can automatically pick out and - display the events for today, for the immediate future, or for any - specified date. - - By default, Emacs uses `~/diary' as the diary file. This is the - same file that the `calendar' utility uses. A sample `~/diary' file is: - - 12/22/1988 Twentieth wedding anniversary!! - &1/1. Happy New Year! - 10/22 Ruth's birthday. - * 21, *: Payday - Tuesday--weekly meeting with grad students at 10am - Supowit, Shen, Bitner, and Kapoor to attend. - 1/13/89 Friday the thirteenth!! - &thu 4pm squash game with Lloyd. - mar 16 Dad's birthday - April 15, 1989 Income tax due. - &* 15 time cards due. - - Although you probably will start by creating a diary manually, Emacs - provides a number of commands to let you view, add, and change diary - entries. - - * Menu: - - * Diary Commands:: Viewing diary entries and associated calendar dates. - * Format of Diary File:: Entering events in your diary. - * Date Formats:: Various ways you can specify dates. - * Adding to Diary:: Commands to create diary entries. - * Special Diary Entries:: Anniversaries, blocks of dates, cyclic entries, etc. - -  - File: emacs, Node: Diary Commands, Next: Format of Diary File, Up: Diary - - Commands Displaying Diary Entries - --------------------------------- - - Once you have created a `~/diary' file, you can view it from within - the calendar. You can also view today's events outside of Calendar - mode. - - `d' - Display any diary entries for the selected date - (`view-diary-entries'). - - `s' - Display entire diary file (`show-all-diary-entries'). - - `m' - Mark all visible dates that have diary entries - (`mark-diary-entries'). - - `u' - Unmark calendar window (`calendar-unmark'). - - `M-x print-diary-entries' - Print hard copy of the diary display as it appears. - - `M-x diary' - Display any diary entries for today's date. - - Displaying the diary entries with `d' shows in a separate window the - diary entries for the selected date in the calendar. The mode line of - the new window shows the date of the diary entries and any holidays - that fall on that date. - - If you specify a numeric argument with `d', it shows all the diary - entries for that many successive days. Thus, `2 d' displays all the - entries for the selected date and for the following day. - - To get a broader view of which days are mentioned in the diary, use - the `m' command. This places a `+' after each date which has a diary - entry. The command applies both to the currently visible months and to - other months that subsequently become visible by scrolling. To turn - marking off and erase the current marks, type `u', which also turns off - holiday marks (*note Holidays::.). - - To see the full diary file, rather than just some of the entries, use - the `s' command. - - Display of selected diary entries uses the selective display feature - to hide entries that don't apply. This is the same feature that Outline - mode uses to show part of an outline (*note Outline Mode::.). The diary - buffer as you see it is an illusion, so simply printing the buffer does - not print what you see on your screen. - - There is a special command to print hard copy of the diary buffer - *as it appears*; this command is `M-x print-diary-entries'. It sends - the data directly to the printer. You can customize it like - `lpr-region' (*note Hardcopy::.). - - The command `M-x diary' displays the diary entries for the current - date, independently of the calendar display, and optionally for the next - few days as well; the variable `number-of-diary-entries' specifies how - many days to include. *Note Calendar/Diary Options: - (elisp)Calendar/Diary Options. - - If you put `(diary)' in your `.emacs' file, this automatically - displays a window with the day's diary entries, when you enter Emacs. - The mode line of the displayed window shows the date and any holidays - that fall on that date. - -  - File: emacs, Node: Format of Diary File, Next: Date Formats, Prev: Diary Commands, Up: Diary - - The Diary File - -------------- - - Your "diary file" is a file that records events associated with - particular dates. The name of the diary file is specified by the - variable `diary-file'; `~/diary' is the default. You can use the same - file for the `calendar' utility program, since its formats are a subset - of the ones allowed by the Emacs diary facilities. - - Each entry in the diary file describes one event and consists of one - or more lines. An entry always begins with a date specification at the - left margin. The rest of the entry is simply text to describe the - event. If the entry has more than one line, then the lines after the - first must begin with whitespace to indicate they continue a previous - entry. Lines that do not begin with valid dates and do not continue a - preceding entry are ignored. - - You can inhibit the marking of certain diary entries in the calendar - window; to do this, insert an ampersand (`&') at the beginning of the - entry, before the date. This has no effect on display of the entry in - the diary window; it affects only marks on dates in the calendar - window. Nonmarking entries are especially useful for generic entries - that would otherwise mark many different dates. - - If the first line of a diary entry consists only of the date or day - name with no following blanks or punctuation, then the diary window - display doesn't include that line; only the continuation lines appear. - For example: - - 02/11/1989 - Bill B. visits Princeton today - 2pm Cognitive Studies Committee meeting - 2:30-5:30 Liz at Lawrenceville - 4:00pm Dentist appt - 7:30pm Dinner at George's - 8:00-10:00pm concert - - appears in the diary window without the date line at the beginning. - This style of entry looks neater when you display just a single day's - entries, but can cause confusion if you ask for more than one day's - entries. - - You can edit the diary entries as they appear in the window, but it - is important to remember that the buffer displayed contains the *entire* - diary file, with portions of it concealed from view. This means, for - instance, that the `C-f' (`forward-char') command can put point at what - appears to be the end of the line, but what is in reality the middle of - some concealed line. - - *Be careful when editing the diary entries!* Inserting additional - lines or adding/deleting characters in the middle of a visible line - cannot cause problems, but editing at the end of a line may not do what - you expect. Deleting a line may delete other invisible entries that - follow it. Before editing the diary, it is best to display the entire - file with `s' (`show-all-diary-entries'). - -  - File: emacs, Node: Date Formats, Next: Adding to Diary, Prev: Format of Diary File, Up: Diary - - Date Formats - ------------ - - Here are some sample diary entries, illustrating different ways of - formatting a date. The examples all show dates in American order - (month, day, year), but Calendar mode supports European order (day, - month, year) as an option. - - 4/20/93 Switch-over to new tabulation system - apr. 25 Start tabulating annual results - 4/30 Results for April are due - */25 Monthly cycle finishes - Friday Don't leave without backing up files - - The first entry appears only once, on April 20, 1993. The second and - third appear every year on the specified dates, and the fourth uses a - wildcard (asterisk) for the month, so it appears on the 25th of every - month. The final entry appears every week on Friday. - - You can use just numbers to express a date, as in `MONTH/DAY' or - `MONTH/DAY/YEAR'. This must be followed by a nondigit. In the date - itself, MONTH and DAY are numbers of one or two digits. YEAR is a - number and may be abbreviated to the last two digits; that is, you can - use `11/12/1989' or `11/12/89'. - - Dates can also have the form `MONTHNAME DAY' or `MONTHNAME DAY, - YEAR', where the month's name can be spelled in full or abbreviated to - three characters (with or without a period). Case is not significant. - - A date may be "generic", or partially unspecified. Then the entry - applies to all dates that match the specification. If the date does not - contain a year, it is generic and applies to any year. Alternatively, - MONTH, DAY, or YEAR can be a `*'; this matches any month, day, or year, - respectively. Thus, a diary entry `3/*/*' matches any day in March of - any year; so does `march *'. - - If you prefer the European style of writing dates--in which the day - comes before the month--type `M-x european-calendar' while in the - calendar, or set the variable `european-calendar-style' to `t' *before* - using any calendar or diary command. This mode interprets all dates in - the diary in the European manner, and also uses European style for - displaying diary dates. (Note that there is no comma after the - MONTHNAME in the European style.) To go back to the (default) American - style of writing dates, type `M-x american-calendar'. - - You can use the name of a day of the week as a generic date which - applies to any date falling on that day of the week. You can abbreviate - the day of the week to three letters (with or without a period) or spell - it in full; case is not significant. --- 1226,1229 ---- diff -cprP --exclude=*.elc emacs-19.13/info/emacs-14 emacs-19.14/info/emacs-14 *** emacs-19.13/info/emacs-14 Tue Jun 8 07:24:29 1993 --- emacs-19.14/info/emacs-14 Thu Jun 17 19:44:45 1993 *************** *** 1,7 **** ! This is Info file ../info/emacs, produced by Makeinfo-1.54 from the input file emacs.texi.  File: emacs, Node: Adding to Diary, Next: Special Diary Entries, Prev: Date Formats, Up: Diary Commands to Add to the Diary --- 1,646 ---- ! This is Info file ../info/emacs, produced by Makeinfo-1.55 from the input file emacs.texi.  + File: emacs, Node: General Calendar, Next: Holidays, Prev: Counting Days, Up: Calendar/Diary + + Miscellaneous Calendar Commands + =============================== + + `p d' + Display day-in-year (`calendar-print-day-of-year'). + + `C-c C-l' + Regenerate the calendar window (`redraw-calendar'). + + `q' + Exit from calendar (`exit-calendar'). + + To print the number of days elapsed since the start of the year, or + the number of days remaining in the year, type the `p d' command + (`calendar-print-day-of-year'). This displays both of those numbers in + the echo area. The number of days elapsed includes the selected date. + The number of days remaining does not include that date. + + If the calendar window gets corrupted, type `C-c C-l' + (`redraw-calendar') to redraw it. + + To exit from the calendar, type `q' (`exit-calendar'). This buries + all buffers related to the calendar and returns the window display to + what it was when you entered the calendar. + +  + File: emacs, Node: Holidays, Next: Sunrise/Sunset, Prev: General Calendar, Up: Calendar/Diary + + Holidays + ======== + + The Emacs calendar knows about all major and many minor holidays, + and can display them. + + `h' + Display holidays for the selected date + (`calendar-cursor-holidays'). + + `x' + Mark holidays in the calendar window (`mark-calendar-holidays'). + + `u' + Unmark calendar window (`calendar-unmark'). + + `a' + List all holidays for the displayed three months in another window + (`list-calendar-holidays'). + + `M-x holidays' + List all holidays for three months around today's date in another + window. + + To see if any holidays fall on a given date, position point on that + date in the calendar window and use the `h' command. This names the + holidays for that date, in the echo area if they fit there, otherwise + in a separate window. + + To find the distribution of holidays for a wider period, use the `x' + command. This displays a `*' after each date on which a holiday falls. + The command applies both to the currently visible months and to other + months that subsequently become visible by scrolling. To turn marking + off and erase the current marks, type `u', which also erases any diary + marks (*note Diary::.). + + To get even more detailed information, use the `a' command, which + displays a separate buffer containing a list of all holidays in the + current three-month range. + + The command `M-x holidays' displays the list of holidays for the + current month and the preceding and succeeding months; this works even + if you don't have a calendar window. If you want the list of holidays + centered around a different month, use `C-u M-x holidays', which + prompts for the month and year. + + The holidays known to Emacs include American holidays and the major + Christian, Jewish, and Islamic holidays; when floating point is + available, the calendar also knows about solstices and equinoxes. + + The dates used by Emacs for holidays are based on *current + practice*, not historical fact. Historically, for instance, the start + of daylight savings time and even its existence have varied from year to + year, but present American law mandates that daylight savings time + begins on the first Sunday in April. Emacs always uses this definition, + even though it is wrong for some prior years. + +  + File: emacs, Node: Sunrise/Sunset, Next: Lunar Phases, Prev: Holidays, Up: Calendar/Diary + + Times of Sunrise and Sunset + =========================== + + Emacs can tell you, to within a minute or two, the times of sunrise + and sunset for any date, if floating point is available. + + `S' + Display times of sunrise and sunset for the selected date + (`calendar-sunrise-sunset'). + + `M-x sunrise-sunset' + Display times of sunrise and sunset for today's date. + + `C-u M-x sunrise-sunset' + Display times of sunrise and sunset for a specified date. + + Within the calendar, to display the *local times* of sunrise and + sunset in the echo area, move point to the date you want, and type `S'. + + The command `M-x sunrise-sunset' is available outside the calendar + to print this information for today's date or a specified date. To + specify a date other than today, use `C-u M-x sunrise-sunset', which + prompts for the year, month, and day. + + Because the times of sunrise and sunset depend on the location on + earth, you need to tell Emacs your latitude, longitude, and location + name before using these commands. Here is an example of what to set: + + (setq calendar-latitude 40.1) + (setq calendar-longitude -88.2) + (setq calendar-location-name "Urbana, IL") + + Use one decimal place in the values of `calendar-latitude' and + `calendar-longitude'. + + Your time zone also affects the local time of sunrise and sunset. + Emacs usually gets this information from the operating system, but if + these values are not what you want (or if the operating system does not + supply them), you must set them yourself. Here is an example: + + (setq calendar-time-zone -360) + (setq calendar-standard-time-zone-name "CST") + (setq calendar-daylight-time-zone-name "CDT") + + The value of `calendar-time-zone' is the number of minutes difference + between your local standard time and Coordinated Universal Time + (Greenwich time). The values of `calendar-standard-time-zone-name' and + `calendar-daylight-time-zone-name' are the abbreviations used in your + time zone. + + Emacs displays the times of sunrise and sunset *corrected for + daylight savings time*. The default rule for the starting and stopping + dates of daylight savings time is the American rule. *Note Daylight + Savings::, for how to specify a different rule. + + You can display the times of sunrise and sunset for any location and + any date with `C-u C-u M-x sunrise-sunset'. This asks you for a + longitude, latitude, number of minutes difference from Coordinated + Universal Time, and date, and then tells you the times of sunrise and + sunset for that location on that date. + +  + File: emacs, Node: Lunar Phases, Next: Other Calendars, Prev: Sunrise/Sunset, Up: Calendar/Diary + + Phases of the Moon + ================== + + Emacs can tell you the dates and times of the phases of the moon (new + moon, first quarter, full moon, last quarter), if floating point is + available. This feature is useful for debugging problems that "depend + on the phase of the moon." + + `M' + Display the dates and times for all the quarters of the moon for + the three-month period shown (`calendar-phases-of-moon'). + + `M-x phases-of-moon' + Display dates and times of the quarters of the moon for three + months around today's date. + + Within the calendar, use the `M' command to display a separate + buffer of the phases of the moon for the current three-month range. The + dates and times listed are accurate to within a few minutes. + + Outside the calendar, use the command `M-x phases-of-moon' to + display the list of the phases of the moon for the current month and the + preceding and succeeding months. For information about a different + month, use `C-u M-x phases-of-moon', which prompts for the month and + year. + + The dates and times given for the phases of the moon are given in + local time (corrected for daylight savings, when appropriate); but if + the variable `calendar-time-zone' is void, Coordinated Universal Time + (the Greenwich time zone) is used. *Note Daylight Savings::. + +  + File: emacs, Node: Other Calendars, Next: Diary, Prev: Lunar Phases, Up: Calendar/Diary + + Conversion To and From Other Calendars + ====================================== + + The Emacs calendar displayed is *always* the Gregorian calendar, + sometimes called the "new style" calendar, which is used in most of the + world today. However, this calendar did not exist before the sixteenth + century and was not widely used before the eighteenth century; it did + not fully displace the Julian calendar and gain universal acceptance + until the early twentieth century. The Emacs calendar can display any + month since January, year 1 of the current era, but the calendar + displayed is the Gregorian, even for a date at which the Gregorian + calendar did not exist. + + While Emacs cannot display other calendars, it can convert dates to + and from several other calendars. + + * Menu: + + * Calendar Systems:: The calendars Emacs understands + (aside from Gregorian). + * To Other Calendar:: Converting the selected date to various calendars. + * From Other Calendar:: Moving to a date specified in another calendar. + * Mayan Calendar:: Moving to a date specified in a Mayan calendar. + +  + File: emacs, Node: Calendar Systems, Next: To Other Calendar, Up: Other Calendars + + Supported Calendar Systems + -------------------------- + + The ISO commercial calendar is used largely in Europe. + + The Julian calendar, named after Julius Caesar, was the one used in + Europe throughout medieval times, and in many countries up until the + nineteenth century. + + Astronomers use a simple counting of days elapsed since noon, Monday, + January 1, 4713 B.C. on the Julian calendar. The number of days elapsed + is called the *Julian day number* or the *Astronomical day number*. + + The Hebrew calendar is the one used to determine the dates of Jewish + holidays. Hebrew calendar dates begin and end at sunset. + + The Islamic (Moslem) calendar is the one used to determine the dates + of Moslem holidays. There is no universal agreement in the Islamic + world about the calendar; Emacs uses a widely accepted version, but the + precise dates of Islamic holidays often depend on proclamation by + religious authorities, not on calculations. As a consequence, the + actual dates of occurrence can vary slightly from the dates computed by + Emacs. Islamic calendar dates begin and end at sunset. + + The French Revolutionary calendar was created by the Jacobins after + the 1789 revolution, to represent a more secular and nature-based view + of the annual cycle, and to install a 10-day week in a rationalization + measure similar to the metric system. The French government officially + abandoned this calendar at the end of 1805. + + The Maya of Central America used three separate, overlapping calendar + systems, the *long count*, the *tzolkin*, and the *haab*. Emacs knows + about all three of these calendars. Experts dispute the exact + correlation between the Mayan calendar and our calendar; Emacs uses the + Goodman-Martinez-Thompson correlation in its calculations. + +  + File: emacs, Node: To Other Calendar, Next: From Other Calendar, Prev: Calendar Systems, Up: Other Calendars + + Converting To Other Calendars + ----------------------------- + + The following commands describe the selected date (the date at point) + in various other calendar systems: + + `p c' + Display ISO commercial calendar equivalent for selected day + (`calendar-print-iso-date'). + + `p j' + Display Julian date for selected day + (`calendar-print-julian-date'). + + `p a' + Display astronomical (Julian) day number for selected day + (`calendar-print-astro-day-number'). + + `p h' + Display Hebrew date for selected day + (`calendar-print-hebrew-date'). + + `p i' + Display Islamic date for selected day + (`calendar-print-islamic-date'). + + `p f' + Display French Revolutionary date for selected day + (`calendar-print-french-date'). + + `p m' + Display Mayan date for selected day (`calendar-print-mayan-date'). + + Put point on the desired date of the Gregorian calendar, then type + the appropriate keys. The `p' is a mnemonic for "print" since Emacs + "prints" the equivalent date in the echo area. + +  + File: emacs, Node: From Other Calendar, Next: Mayan Calendar, Prev: To Other Calendar, Up: Other Calendars + + Converting From Other Calendars + ------------------------------- + + You can move to dates that you specify on the Commercial, Julian, + astronomical, Hebrew, Islamic, or French calendars: + + `g c' + Move to a date specified in the ISO commercial calendar + (`calendar-goto-iso-date'). + + `g j' + Move to a date specified in the Julian calendar + (`calendar-goto-julian-date'). + + `g a' + Move to a date specified in astronomical (Julian) day number + (`calendar-goto-astro-day-number'). + + `g h' + Move to a date specified in the Hebrew calendar + (`calendar-goto-hebrew-date'). + + `g i' + Move to a date specified in the Islamic calendar + (`calendar-goto-islamic-date'). + + `g f' + Move to a date specified in the French Revolutionary calendar + (`calendar-goto-french-date'). + + These commands ask you for a date on the other calendar, move point + to the Gregorian calendar date equivalent to that date, and display the + other calendar's date in the echo area. Emacs uses strict completion + (*note Completion::.) whenever it asks you to type a month name, so you + don't have to worry about the spelling of Hebrew, Islamic, or French + names. + + One common question concerning the Hebrew calendar is the computation + of the anniversary of a date of death, called a "yahrzeit." The Emacs + calendar includes a facility for such calculations. If you are in the + calendar, the command `M-x list-yahrzeit-dates' asks you for a range of + years and then displays a list of the yahrzeit dates for those years + for the date given by point. If you are not in the calendar, this + command first asks you for the date of death and the range of years, + and then displays the list of yahrzeit dates. + +  + File: emacs, Node: Mayan Calendar, Prev: From Other Calendar, Up: Other Calendars + + Converting from the Mayan Calendar + ---------------------------------- + + Here are the commands to select dates based on the Mayan calendar: + + `g m l' + Move to a date specified by the long count calendar + (`calendar-goto-mayan-long-count-date'). + + `g m p t' + Move to the previous occurrence of a place in the tzolkin calendar + (`calendar-previous-tzolkin-date'). + + `g m n t' + Move to the next occurrence of a place in the tzolkin calendar + (`calendar-next-tzolkin-date'). + + `g m p h' + Move to the previous occurrence of a place in the haab calendar + (`calendar-previous-haab-date'). + + `g m n h' + Move to the next occurrence of a place in the haab calendar + (`calendar-next-haab-date'). + + `g m p c' + Move to the previous occurrence of a place in the calendar round + (`calendar-previous-calendar-round-date'). + + `g m n c' + Move to the next occurrence of a place in the calendar round + (`calendar-next-calendar-round-date'). + + To understand these commands, you need to understand the Mayan + calendars. The "long count" is a counting of days with these units: + + 1 kin = 1 day 1 uinal = 20 kin 1 tun = 18 uinal + 1 katun = 20 tun 1 baktun = 20 katun + + Thus, the long count date 12.16.11.16.6 means 12 baktun, 16 katun, 11 + tun, 16 uinal, and 6 kin. The Emacs calendar can handle Mayan long + count dates as early as 7.17.18.13.1, but no earlier. When you use the + `g m l' command, type the Mayan long count date with the baktun, katun, + tun, uinal, and kin separated by periods. + + The Mayan tzolkin calendar is a cycle of 260 days formed by a pair of + independent cycles of 13 and 20 days. Since this cycle repeats + endlessly, Emacs provides commands to move backward and forward to the + previous or next point in the cycle. Type `g m p t' to go to the + previous tzolkin date; Emacs asks you for a tzolkin date and moves point + to the previous occurrence of that date. Similarly, type `g m n t' to + go to the next occurrence of a tzolkin date. + + The Mayan haab calendar is a cycle of 365 days arranged as 18 months + of 20 days each, followed a 5-day monthless period. Like the tzolkin + cycle, this cycle repeats endlessly, and there are commands to move + backward and forward to the previous or next point in the cycle. Type + `g m p h' to go to the previous haab date; Emacs asks you for a haab + date and moves point to the previous occurrence of that date. + Similarly, type `g m n h' to go to the next occurrence of a haab date. + + The Maya also used the combination of the tzolkin date and the haab + date. This combination is a cycle of about 52 years called a *calendar + round*. If you type `g m p c', Emacs asks you for both a haab and a + tzolkin date and then moves point to the previous occurrence of that + combination. Use `g m p c' to move point to the next occurrence of a + combination. Emacs signals an error if the haab/tzolkin date you have + typed is impossible. + + Emacs uses strict completion (*note Completion::.) whenever it asks + you to type a Mayan name, so you don't have to worry about spelling. + +  + File: emacs, Node: Diary, Next: Appointments, Prev: Other Calendars, Up: Calendar/Diary + + The Diary + ========= + + The Emacs diary keeps track of appointments or other events on a + daily basis, in conjunction with the calendar. To use the diary + feature, you must first create a "diary file" containing a list of + events and their dates. Then Emacs can automatically pick out and + display the events for today, for the immediate future, or for any + specified date. + + By default, Emacs uses `~/diary' as the diary file. This is the + same file that the `calendar' utility uses. A sample `~/diary' file is: + + 12/22/1988 Twentieth wedding anniversary!! + &1/1. Happy New Year! + 10/22 Ruth's birthday. + * 21, *: Payday + Tuesday--weekly meeting with grad students at 10am + Supowit, Shen, Bitner, and Kapoor to attend. + 1/13/89 Friday the thirteenth!! + &thu 4pm squash game with Lloyd. + mar 16 Dad's birthday + April 15, 1989 Income tax due. + &* 15 time cards due. + + Although you probably will start by creating a diary manually, Emacs + provides a number of commands to let you view, add, and change diary + entries. + + * Menu: + + * Diary Commands:: Viewing diary entries and associated calendar dates. + * Format of Diary File:: Entering events in your diary. + * Date Formats:: Various ways you can specify dates. + * Adding to Diary:: Commands to create diary entries. + * Special Diary Entries:: Anniversaries, blocks of dates, cyclic entries, etc. + +  + File: emacs, Node: Diary Commands, Next: Format of Diary File, Up: Diary + + Commands Displaying Diary Entries + --------------------------------- + + Once you have created a `~/diary' file, you can view it from within + the calendar. You can also view today's events outside of Calendar + mode. + + `d' + Display any diary entries for the selected date + (`view-diary-entries'). + + `s' + Display entire diary file (`show-all-diary-entries'). + + `m' + Mark all visible dates that have diary entries + (`mark-diary-entries'). + + `u' + Unmark calendar window (`calendar-unmark'). + + `M-x print-diary-entries' + Print hard copy of the diary display as it appears. + + `M-x diary' + Display any diary entries for today's date. + + Displaying the diary entries with `d' shows in a separate window the + diary entries for the selected date in the calendar. The mode line of + the new window shows the date of the diary entries and any holidays + that fall on that date. + + If you specify a numeric argument with `d', it shows all the diary + entries for that many successive days. Thus, `2 d' displays all the + entries for the selected date and for the following day. + + To get a broader view of which days are mentioned in the diary, use + the `m' command. This places a `+' after each date which has a diary + entry. The command applies both to the currently visible months and to + other months that subsequently become visible by scrolling. To turn + marking off and erase the current marks, type `u', which also turns off + holiday marks (*note Holidays::.). + + To see the full diary file, rather than just some of the entries, use + the `s' command. + + Display of selected diary entries uses the selective display feature + to hide entries that don't apply. This is the same feature that Outline + mode uses to show part of an outline (*note Outline Mode::.). The diary + buffer as you see it is an illusion, so simply printing the buffer does + not print what you see on your screen. + + There is a special command to print hard copy of the diary buffer + *as it appears*; this command is `M-x print-diary-entries'. It sends + the data directly to the printer. You can customize it like + `lpr-region' (*note Hardcopy::.). + + The command `M-x diary' displays the diary entries for the current + date, independently of the calendar display, and optionally for the next + few days as well; the variable `number-of-diary-entries' specifies how + many days to include. *Note Calendar/Diary Options: + (elisp)Calendar/Diary Options. + + If you put `(diary)' in your `.emacs' file, this automatically + displays a window with the day's diary entries, when you enter Emacs. + The mode line of the displayed window shows the date and any holidays + that fall on that date. + +  + File: emacs, Node: Format of Diary File, Next: Date Formats, Prev: Diary Commands, Up: Diary + + The Diary File + -------------- + + Your "diary file" is a file that records events associated with + particular dates. The name of the diary file is specified by the + variable `diary-file'; `~/diary' is the default. You can use the same + file for the `calendar' utility program, since its formats are a subset + of the ones allowed by the Emacs diary facilities. + + Each entry in the diary file describes one event and consists of one + or more lines. An entry always begins with a date specification at the + left margin. The rest of the entry is simply text to describe the + event. If the entry has more than one line, then the lines after the + first must begin with whitespace to indicate they continue a previous + entry. Lines that do not begin with valid dates and do not continue a + preceding entry are ignored. + + You can inhibit the marking of certain diary entries in the calendar + window; to do this, insert an ampersand (`&') at the beginning of the + entry, before the date. This has no effect on display of the entry in + the diary window; it affects only marks on dates in the calendar + window. Nonmarking entries are especially useful for generic entries + that would otherwise mark many different dates. + + If the first line of a diary entry consists only of the date or day + name with no following blanks or punctuation, then the diary window + display doesn't include that line; only the continuation lines appear. + For example: + + 02/11/1989 + Bill B. visits Princeton today + 2pm Cognitive Studies Committee meeting + 2:30-5:30 Liz at Lawrenceville + 4:00pm Dentist appt + 7:30pm Dinner at George's + 8:00-10:00pm concert + + appears in the diary window without the date line at the beginning. + This style of entry looks neater when you display just a single day's + entries, but can cause confusion if you ask for more than one day's + entries. + + You can edit the diary entries as they appear in the window, but it + is important to remember that the buffer displayed contains the *entire* + diary file, with portions of it concealed from view. This means, for + instance, that the `C-f' (`forward-char') command can put point at what + appears to be the end of the line, but what is in reality the middle of + some concealed line. + + *Be careful when editing the diary entries!* Inserting additional + lines or adding/deleting characters in the middle of a visible line + cannot cause problems, but editing at the end of a line may not do what + you expect. Deleting a line may delete other invisible entries that + follow it. Before editing the diary, it is best to display the entire + file with `s' (`show-all-diary-entries'). + +  + File: emacs, Node: Date Formats, Next: Adding to Diary, Prev: Format of Diary File, Up: Diary + + Date Formats + ------------ + + Here are some sample diary entries, illustrating different ways of + formatting a date. The examples all show dates in American order + (month, day, year), but Calendar mode supports European order (day, + month, year) as an option. + + 4/20/93 Switch-over to new tabulation system + apr. 25 Start tabulating annual results + 4/30 Results for April are due + */25 Monthly cycle finishes + Friday Don't leave without backing up files + + The first entry appears only once, on April 20, 1993. The second and + third appear every year on the specified dates, and the fourth uses a + wildcard (asterisk) for the month, so it appears on the 25th of every + month. The final entry appears every week on Friday. + + You can use just numbers to express a date, as in `MONTH/DAY' or + `MONTH/DAY/YEAR'. This must be followed by a nondigit. In the date + itself, MONTH and DAY are numbers of one or two digits. YEAR is a + number and may be abbreviated to the last two digits; that is, you can + use `11/12/1989' or `11/12/89'. + + Dates can also have the form `MONTHNAME DAY' or `MONTHNAME DAY, + YEAR', where the month's name can be spelled in full or abbreviated to + three characters (with or without a period). Case is not significant. + + A date may be "generic", or partially unspecified. Then the entry + applies to all dates that match the specification. If the date does not + contain a year, it is generic and applies to any year. Alternatively, + MONTH, DAY, or YEAR can be a `*'; this matches any month, day, or year, + respectively. Thus, a diary entry `3/*/*' matches any day in March of + any year; so does `march *'. + + If you prefer the European style of writing dates--in which the day + comes before the month--type `M-x european-calendar' while in the + calendar, or set the variable `european-calendar-style' to `t' *before* + using any calendar or diary command. This mode interprets all dates in + the diary in the European manner, and also uses European style for + displaying diary dates. (Note that there is no comma after the + MONTHNAME in the European style.) To go back to the (default) American + style of writing dates, type `M-x american-calendar'. + + You can use the name of a day of the week as a generic date which + applies to any date falling on that day of the week. You can abbreviate + the day of the week to three letters (with or without a period) or spell + it in full; case is not significant. + +  File: emacs, Node: Adding to Diary, Next: Special Diary Entries, Prev: Date Formats, Up: Diary Commands to Add to the Diary *************** Daylight Savings Time *** 202,216 **** Emacs understands the difference between standard time and daylight savings time--the times given for sunrise, sunset, solstices, ! equinoxes, and the phases of the moon take that into account. The ! default starting and stopping dates for daylight savings time are the ! present-day American rules of the first Sunday in April until the last ! Sunday in October, but you can specify whatever rules you want by ! setting `calendar-daylight-savings-starts' and `calendar-daylight-savings-ends'. Their values should be Lisp expressions that refer to the variable `year', and evaluate to the Gregorian date on which daylight savings time starts or (respectively) ! ends, in the form of a list `(MONTH DAY YEAR)'. Emacs uses these expressions to determine the starting date of daylight savings time for the holiday list and for correcting times of --- 841,867 ---- Emacs understands the difference between standard time and daylight savings time--the times given for sunrise, sunset, solstices, ! equinoxes, and the phases of the moon take that into account. The rules ! for daylight savings time vary from place to place and have also varied ! historically from year to year. To do the job properly, Emacs needs to ! know which rules to use. ! ! Some operating systems keep track of the rules that apply to the ! place where you are; on these systems, Emacs gets the information it ! needs from the system automatically. If the system does not know the ! rules, you can tell Emacs the rules to use by setting certain variables. ! ! If the system's data indicate that your area currently uses daylight ! savings time, the default starting and stopping dates for daylight ! savings time are the present-day American rules of the first Sunday in ! April until the last Sunday in October. If this isn't right, you can ! specify whatever rules you want by setting ! `calendar-daylight-savings-starts' and `calendar-daylight-savings-ends'. Their values should be Lisp expressions that refer to the variable `year', and evaluate to the Gregorian date on which daylight savings time starts or (respectively) ! ends, in the form of a list `(MONTH DAY YEAR)'. The values should be ! `nil' if your area does not use daylight savings time. Emacs uses these expressions to determine the starting date of daylight savings time for the holiday list and for correcting times of *************** this: *** 231,236 **** --- 882,898 ---- all times in standard time, set `calendar-daylight-savings-starts' and `calendar-daylight-savings-ends' to `nil'. + In some areas, the difference between daylight savings time and + standard time is not one hour. If this is so in your location, set the + variable `calendar-daylight-time-offset' to the difference, measured in + minutes. + + If the transition to or from daylight savings time does not take + place at 2AM, you can specify when it takes place by setting the + variable `calendar-daylight-savings-switchover-time'. Its value is the + number of minutes after midnight of the time when the transition should + occur. +  File: emacs, Node: GNUS, Next: Sorting, Prev: Calendar/Diary, Up: Top *************** to an Emacs buffer `*shell*'. *** 545,1187 **** * Menu: ! * Single Shell:: How to run one shell command and return. ! * Interactive Shell:: Permanent shell taking input via Emacs. ! * Shell Mode:: Special Emacs commands used with permanent shell. ! * History: Shell History. Repeating previous commands in a shell buffer. ! !  ! File: emacs, Node: Single Shell, Next: Interactive Shell, Up: Shell ! ! Single Shell Commands ! --------------------- ! ! `M-!' (`shell-command') reads a line of text using the minibuffer ! executes it as a shell command in a subshell made just for this ! command. Standard input for the command comes from the null device. ! If the shell command produces any output, the output goes into an Emacs ! buffer named `*Shell Command Output*', which is displayed in another ! window but not selected. A numeric argument, as in `M-1 M-!', directs ! this command to insert any output into the current buffer. In that ! case, point is left before the output and the mark is set after the ! output. ! ! If the shell command line ends in `&', it runs asynchronously. ! ! `M-|' (`shell-command-on-region') is like `M-!' but passes the ! contents of the region as input to the shell command, instead of no ! input. If a numeric argument is used, meaning insert output in the ! current buffer, then the old region is deleted first and the output ! replaces it as the contents of the region. ! ! Both `M-!' and `M-|' use `shell-file-name' to specify the shell to ! use. This variable is initialized based on your `SHELL' environment ! variable when Emacs is started. If the file name does not specify a ! directory, the directories in the list `exec-path' are searched; this ! list is initialized based on the environment variable `PATH' when Emacs ! is started. Your `.emacs' file can override either or both of these ! default initializations. ! ! With `M-!' and `M-|', Emacs has to wait until the shell command ! completes. To stop waiting, type `C-g' to quit; that also kills the ! shell command. ! !  ! File: emacs, Node: Interactive Shell, Next: Shell Mode, Prev: Single Shell, Up: Shell ! ! Interactive Inferior Shell ! -------------------------- ! ! To run a subshell interactively, putting its typescript in an Emacs ! buffer, use `M-x shell'. This creates (or reuses) a buffer named ! `*shell*' and runs a subshell with input coming from and output going ! to that buffer. That is to say, any "terminal output" from the subshell ! goes into the buffer, advancing point, and any "terminal input" for the ! subshell comes from text in the buffer. To give input to the subshell, ! go to the end of the buffer and type the input, terminated by RET. ! ! Emacs does not wait for the subshell to do anything. You can switch ! windows or buffers and edit them while the shell is waiting, or while ! it is running a command. Output from the subshell waits until Emacs ! has time to process it; this happens whenever Emacs is waiting for ! keyboard input or for time to elapse. ! ! To make multiple subshells, rename the buffer `*shell*' to something ! different using `M-x rename-uniquely'. Then type `M-x shell' again to ! create a new buffer `*shell*' with its own subshell. If you rename ! this buffer as well, you can create a third one, and so on. All the ! subshells run independently and in parallel. ! ! The file name used to load the subshell is the value of the variable ! `explicit-shell-file-name', if that is non-`nil'. Otherwise, the ! environment variable `ESHELL' is used, or the environment variable ! `SHELL' if there is no `ESHELL'. If the file name specified is ! relative, the directories in the list `exec-path' are searched (*note ! Single Shell Commands: Single Shell.). ! ! As soon as the subshell is started, it is sent as input the contents ! of the file `~/.emacs_SHELLNAME', if that file exists, where SHELLNAME ! is the name of the file that the shell was loaded from. For example, ! if you use `bash', the file sent to it is `~/.emacs_bash'. ! ! `cd', `pushd' and `popd' commands given to the inferior shell are ! watched by Emacs so it can keep the `*shell*' buffer's default ! directory the same as the shell's working directory. These commands ! are recognized syntactically by examining lines of input that are sent. ! If you use aliases for these commands, you can tell Emacs to recognize ! them also. For example, if the value of the variable ! `shell-pushd-regexp' matches the beginning of a shell command line, ! that line is regarded as a `pushd' command. Change this variable when ! you add aliases for `pushd'. Likewise, `shell-popd-regexp' and ! `shell-cd-regexp' are used to recognize commands with the meaning of ! `popd' and `cd'. These commands are recognized only at the beginning ! of a shell command line. ! ! If Emacs gets an error while trying to handle what it believes is a ! `cd', `pushd' or `popd' command, it runs the hook ! `shell-set-directory-error-hook' (*note Hooks::.). ! ! If Emacs does not properly track changes in the current directory of ! the subshell, use the command `M-x dirs' to ask the shell what its ! current directory is. This command works for shells that support the ! most common command syntax; it may not work for unusual shells. ! !  ! File: emacs, Node: Shell Mode, Next: Shell History, Prev: Interactive Shell, Up: Shell ! ! Shell Mode ! ---------- ! ! The shell buffer uses Shell mode, which defines several special keys ! attached to the `C-c' prefix. They are chosen to resemble the usual ! editing and job control characters present in shells that are not under ! Emacs, except that you must type `C-c' first. Here is a complete list ! of the special key bindings of Shell mode: ! ! `RET' ! At end of buffer send line as input; otherwise, copy current line ! to end of buffer and send it (`comint-send-input'). When a line is ! copied, any text at the beginning of the line that matches the ! variable `shell-prompt-pattern' is left out; this variable's value ! should be a regexp string that matches the prompts that your shell ! uses. ! ! `TAB' ! Complete the file name before point in the shell buffer ! (`comint-dynamic-complete'). ! ! `M-?' ! Display temporarily a list of the possible completions of the file ! name before point in the shell buffer ! (`comint-dynamic-list-completions'). ! ! `C-a' ! Move to the beginning of the line, but after the prompt if any ! (`comint-bol'). ! ! `C-d' ! Either delete a character or send EOF ! (`comint-delchar-or-maybe-eof'). Typed at the end of the shell ! buffer, `C-d' sends EOF to the subshell. Typed at any other ! position in the buffer, `C-d' deletes a character as usual. ! ! `C-c C-u' ! Kill all text pending at end of buffer to be sent as input ! (`comint-kill-input'). ! ! `C-c C-w' ! Kill a word before point (`backward-kill-word'). ! ! `C-c C-c' ! Interrupt the shell or its current subjob if any ! (`comint-interrupt-subjob'). ! ! `C-c C-z' ! Stop the shell or its current subjob if any (`comint-stop-subjob'). ! ! `C-c C-\' ! Send quit signal to the shell or its current subjob if any ! (`comint-quit-subjob'). ! ! `C-c C-o' ! Kill the last batch of output from a shell command ! (`comint-kill-output'). This is useful if a shell command spews ! out lots of output that just gets in the way. ! ! `C-c C-r' ! Scroll to display the beginning of the last batch of output at the ! top of the window; also move the cursor there ! (`comint-show-output'). ! ! `M-x dirs' ! Ask the shell what its current directory is, so that Emacs can ! agree with the shell. ! ! `M-x send-invisible RET TEXT RET' ! Send TEXT as input to the shell, after reading it without echoing. ! This is useful when a shell command runs a program that asks for ! a password. ! ! `M-x comint-continue-subjob' ! Continue the shell process. This is useful if you accidentally ! suspend the shell process.(1) ! ! ---------- Footnotes ---------- ! ! (1) You should not suspend the shell process. Suspending a subjob ! of the shell is a completely different matter-that is normal practice, ! but you must use the shell to continue the subjob; this command won't ! do it. ! !  ! File: emacs, Node: Shell History, Prev: Shell Mode, Up: Shell ! ! Shell Command History ! --------------------- ! ! Shell buffers support history commands much like the minibuffer ! history commands. ! ! `M-p' ! Fetch the next earlier old shell command. ! ! `M-n' ! Fetch the next later old shell command. ! ! `M-r REGEXP RET' ! `M-s REGEXP RET' ! Search backwards or forwards for old shell commands that match ! REGEXP. ! ! Shell buffers provide a history of previously entered shell ! commands. To reuse shell commands from the history, use the editing ! commands `M-p', `M-n', `M-r' and `M-s'. These work just like the ! minibuffer history commands except that they operate on the text at the ! end of the shell buffer, the text that typing RET will send to the ! shell. ! ! `M-p' fetches an earlier shell command to the end of the shell ! buffer. Successive use of `M-p' fetches successively earlier shell ! commands, each replacing any text that was already present as potential ! shell input. `M-n' does likewise except that it finds successively ! more recent shell commands from the buffer. ! ! The history search commands `M-r' and `M-s' read a regular ! expression and search through the history for a matching command. Aside ! from the choice of which command to fetch, they work just like `M-p' ! and `M-r'. If you enter an empty regexp, these commands reuse the same ! regexp used last time. ! ! When you find the previous input you want, you can resubmit it by ! typing RET, or you can edit it first and then resubmit it if you wish. ! ! These commands get the text of previous shell commands from a special ! history list, not from the shell buffer itself. Thus, editing the shell ! buffer, or even killing large parts of it, does not affect the history ! that these commands access. ! !  ! File: emacs, Node: Narrowing, Next: Hardcopy, Prev: Shell, Up: Top ! ! Narrowing ! ========= ! ! "Narrowing" means focusing in on some portion of the buffer, making ! the rest temporarily inaccessible. The portion which you can still get ! to is called the "accessible portion". Cancelling the narrowing, and ! making the entire buffer once again accessible, is called "widening". ! The amount of narrowing in effect in a buffer at any time is called the ! buffer's "restriction". ! ! `C-x n n' ! Narrow down to between point and mark (`narrow-to-region'). ! ! `C-x n w' ! Widen to make the entire buffer accessible again (`widen'). ! ! `C-x n p' ! Narrow down to the current page (`narrow-to-page'). ! ! When you have narrowed down to a part of the buffer, that part ! appears to be all there is. You can't see the rest, you can't move ! into it (motion commands won't go outside the accessible part), you ! can't change it in any way. However, it is not gone, and if you save ! the file all the inaccessible text will be saved. In addition to ! sometimes making it easier to concentrate on a single subroutine or ! paragraph by eliminating clutter, narrowing can be used to restrict the ! range of operation of a replace command or repeating keyboard macro. ! The word `Narrow' appears in the mode line whenever narrowing is in ! effect. ! ! The primary narrowing command is `C-x n n' (`narrow-to-region'). It ! sets the current buffer's restrictions so that the text in the current ! region remains accessible but all text before the region or after the ! region is invisible. Point and mark do not change. ! ! Alternatively, use `C-x n p' (`narrow-to-page') to narrow down to ! the current page. *Note Pages::, for the definition of a page. ! ! The way to undo narrowing is to widen with `C-x n w' (`widen'). ! This makes all text in the buffer accessible again. ! ! You can get information on what part of the buffer you are narrowed ! down to using the `C-x =' command. *Note Position Info::. ! ! Because narrowing can easily confuse users who do not understand it, ! `narrow-to-region' is normally a disabled command. Attempting to use ! this command asks for confirmation and gives you the option of enabling ! it; once you enable the command, confirmation will no longer be ! required for it. *Note Disabling::. ! !  ! File: emacs, Node: Hardcopy, Next: Two-Column, Prev: Narrowing, Up: Top ! ! Hardcopy Output ! =============== ! ! The Emacs commands for making hardcopy let you print either an entire ! buffer or just part of one, either with or without page headers. See ! also the hardcopy commands of Dired (*note Misc File Ops::.) and the ! diary (*note Diary Commands::.). ! ! `M-x print-buffer' ! Print hardcopy of current buffer using Unix command `print' (`lpr ! -p'). This makes page headings containing the file name and page ! number. ! ! `M-x lpr-buffer' ! Print hardcopy of current buffer using Unix command `lpr'. This ! makes no page headings. ! ! `M-x print-region' ! Like `print-buffer' but prints only the current region. ! ! `M-x lpr-region' ! Like `lpr-buffer' but prints only the current region. ! ! All the hardcopy commands pass extra switches to the `lpr' program ! based on the value of the variable `lpr-switches'. Its value should be ! a list of strings, each string an option starting with `-'. For ! example, to use a printer named `nearme', set `lpr-switches' like this: ! ! (setq lpr-switches '("-Pnearme")) ! !  ! File: emacs, Node: Two-Column, Next: Editing Binary Files, Prev: Hardcopy, Up: Top ! ! Two-Column Editing ! ================== ! ! Two-column mode lets you conveniently edit two side-by-side columns ! of text. It uses two side-by-side windows, each showing its own buffer. ! ! There are three ways to enter two-column mode: ! ! `C-x 6 2' ! Enter two-column mode with the current buffer on the left, and on ! the right, a buffer whose name is based on the current buffer's ! name (`tc-two-columns'). If the right-hand buffer doesn't already ! exist, it starts out empty; the current buffer's contents are not ! changed. ! ! This command is appropriate when the current buffer contains just ! one column and you want to add another column. ! ! `C-x 6 s' ! Split the current buffer, which contains two-column text, into two ! buffers, and display them side by side (`tc-split'). The current ! buffer becomes the left-hand buffer, but the text in the right-hand ! column is moved into the right-hand buffer. The current column ! specifies the split point. Splitting starts with the current line ! and continues to the end of the buffer. ! ! This command is appropriate when you have a buffer that already ! contains two-column text, and you wish to separate the columns ! temporarily. ! ! `C-x 6 b BUFFER RET' ! Enter two-column mode using the current buffer as the left-hand ! buffer, and using buffer BUFFER as the right-hand buffer ! (`tc-associate-buffer'). ! ! `C-x 6 s' looks for a column separator which is a string that ! appears on each line between the two columns. You can specify the width ! of the separator with a numeric argument to `C-x 6 s'; that many ! characters, before point, constitute the separator string. By default, ! the width is 1, so the column separator is the character before point. ! ! When a line has the separator at the proper place, `C-x 6 s' puts ! the text after the separator into the right-hand buffer, and deletes the ! separator. Lines that don't have the column separator at the proper ! place remain unsplit; they stay in the left-hand buffer, and the ! right-hand buffer gets an empty line to correspond. (This is the way ! to write a line which "spans both columns while in two-column mode: ! write it in the left-hand buffer, and put an empty line in the ! right-hand buffer.) ! ! It's not a good idea to use ordinary scrolling commands during ! two-column editing, because that separates the two parts of each split ! line. Instead, use these special scroll commands: ! ! `C-x 6 SPC' ! Scroll both buffers up, in lockstep (`tc-scroll-up'). ! ! `C-x 6 DEL' ! Scroll both buffers down, in lockstep (`tc-scroll-down'). ! ! `C-x 6 C-l' ! Recenter both buffers, in lockstep (`tc-recenter'). ! ! When you have edited both buffers as you wish, merge them with `C-x ! 6 1' (`tc-merge'). This copies the text from the right-hand buffer as ! a second column in the other buffer. To go back to two-column editing, ! use `C-x 6 s'. ! ! Use `C-x 6 d' to disassociate the two buffers, leaving each as it ! stands (`tc-dissociate'). If the other buffer, the one not current ! when you type `C-x 6 d', is empty, `C-x 6 d' kills it. ! !  ! File: emacs, Node: Editing Binary Files, Next: Emacs Server, Prev: Two-Column, Up: Top ! ! Editing Binary Files ! ==================== ! ! There is a special major mode for editing binary files: Hexl mode. ! To use it, use `M-x hexl-find-file' instead of `C-x C-f' to visit the ! file. This command converts the file's contents to hexadecimal and ! lets you edit the translation. When you save the file, it is converted ! automatically back to binary. ! ! You can also use `M-x hexl-mode' to translate an existing buffer ! into hex. This is useful if you visit a file normally and then discover ! it is a binary file. ! ! Ordinary text characters overwrite in Hexl mode. This is to reduce ! the risk of accidentally spoiling the alignment of data in the file. ! There are special commands for insertion. Here is a list of the ! commands of Hexl mode: ! ! `C-M-d' ! Insert a byte with a code typed in decimal. ! ! `C-M-o' ! Insert a byte with a code typed in octal. ! ! `C-M-x' ! Insert a byte with a code typed in hex. ! ! `C-x [' ! Move to the beginning of a 1k-byte "page". ! ! `C-x ]' ! Move to the end of a 1k-byte "page". ! ! `M-g' ! Move to an address specified in hex. ! ! `M-j' ! Move to an address specified in decimal. ! ! `C-c C-c' ! Leave Hexl mode, going back to the major mode this buffer had ! before you invoked `hexl-mode'. ! !  ! File: emacs, Node: Emacs Server, Next: Recursive Edit, Prev: Editing Binary Files, Up: Top ! ! Using Emacs as a Server ! ======================= ! ! Various programs such as `mail' can invoke your choice of editor to ! edit a particular piece of text, such as a message that you are ! sending. By convention, these programs use the environment variable ! `EDITOR' to specify which editor to run. If you set `EDITOR' to ! `emacs', they invoke Emacs--but in an inconvenient fashion, by starting ! a new, separate Emacs process. This is inconvenient because it takes ! time and because the new Emacs process doesn't share the buffers in the ! existing Emacs process. ! ! You can arrange to use your existing Emacs process as the editor for ! programs like `mail' by using the Emacs client and Emacs server ! programs. Here is how. ! ! First, the preparation. Within Emacs, call the function ! `server-start'. (Your `.emacs' file can do this automatically if you ! add the expression `(server-start)' to it.) Then, outside Emacs, set ! the `EDITOR' environment variable to `emacsclient'. ! ! Then, whenever any program invokes your specified `EDITOR' program, ! the effect is to send a message to your principal Emacs telling it to ! visit a file. (That's what the program `emacsclient' does.) Emacs ! obeys silently; it does not immediately switch to the new file's ! buffer. When you want to do that, type `C-x #' (`server-edit'). ! ! When you've finished editing that buffer, type `C-x #' again. This ! saves the file and sends a message back to the `emacsclient' program ! telling it to exit. The programs that use `EDITOR' wait for the ! "editor" (actually, `emacsclient') to exit. `C-x #' also checks to see ! if any other files are pending for you to edit, and selects the next ! one. ! ! You can switch to a server buffer manually if you wish; you don't ! have to arrive at it with `C-x #'. But `C-x #' is the only way to say ! that you are "finished" with one. ! ! While `mail' or another application is waiting for `emacsclient' to ! finish, `emacsclient' does not read terminal input. So the terminal ! that `mail' was using is effectively blocked for the duration. In ! order to edit with your principal Emacs, you need to be able to use it ! without using that terminal. There are two ways to do this: ! ! * Using a window system, run `mail' and the principal Emacs in two ! separate windows. While `mail' is waiting for `emacsclient', the ! window where it was running is blocked, but you can use Emacs by ! switching windows. ! ! * Use Shell mode in Emacs to run the other program such as `mail'; ! then, `emacsclient' blocks only the subshell under Emacs; you can ! still use Emacs to edit the file. ! !  ! File: emacs, Node: Recursive Edit, Next: Dissociated Press, Prev: Emacs Server, Up: Top ! ! Recursive Editing Levels ! ======================== ! ! A "recursive edit" is a situation in which you are using Emacs ! commands to perform arbitrary editing while in the middle of another ! Emacs command. For example, when you type `C-r' inside of a ! `query-replace', you enter a recursive edit in which you can change the ! current buffer. On exiting from the recursive edit, you go back to the ! `query-replace'. ! ! "Exiting" the recursive edit means returning to the unfinished ! command, which continues execution. To exit, type `C-M-c' ! (`exit-recursive-edit'). ! ! You can also "abort" the recursive edit. This is like exiting, but ! also quits the unfinished command immediately. Use the command `C-]' ! (`abort-recursive-edit') for this. *Note Quitting::. ! ! The mode line shows you when you are in a recursive edit by ! displaying square brackets around the parentheses that always surround ! the major and minor mode names. Every window's mode line shows this, ! in the same way, since being in a recursive edit is true of Emacs as a ! whole rather than any particular window or buffer. ! ! It is possible to be in recursive edits within recursive edits. For ! example, after typing `C-r' in a `query-replace', you may type a ! command that enters the debugger. This begins a recursive editing level ! for the debugger, within the recursive editing level for `C-r'. Mode ! lines display a pair of square brackets for each recursive editing ! level currently in progress. ! ! Exiting the inner recursive edit (such as, with the debugger `c' ! command) resumes the command running in the next level up. When that ! command finishes, you can then use `C-M-c' to exit another recursive ! editing level, and so on. Exiting applies to the innermost level only. ! Aborting also gets out of only one level of recursive edit; it returns ! immediately to the command level of the previous recursive edit. If you ! wish, you can then abort the next recursive editing level. ! ! Alternatively, the command `M-x top-level' aborts all levels of ! recursive edits, returning immediately to the top level command reader. ! ! The text being edited inside the recursive edit need not be the same ! text that you were editing at top level. It depends on what the ! recursive edit is for. If the command that invokes the recursive edit ! selects a different buffer first, that is the buffer you will edit ! recursively. In any case, you can switch buffers within the recursive ! edit in the normal manner (as long as the buffer-switching keys have ! not been rebound). You could probably do all the rest of your editing ! inside the recursive edit, visiting files and all. But this could have ! surprising effects (such as stack overflow) from time to time. So ! remember to exit or abort the recursive edit when you no longer need it. ! ! In general, we try to minimize the use of recursive editing levels in ! GNU Emacs. This is because they constrain you to "go back" in a ! particular order-from the innermost level toward the top level. When ! possible, we present different activities in separate buffers. Some ! commands switch to a new major mode but provide a way to switch back. ! These approaches give you more flexibility to go back to unfinished ! tasks in the order you choose. ! !  ! File: emacs, Node: Dissociated Press, Next: Amusements, Prev: Recursive Edit, Up: Top ! ! Dissociated Press ! ================= ! ! `M-x dissociated-press' is a command for scrambling a file of text ! either word by word or character by character. Starting from a buffer ! of straight English, it produces extremely amusing output. The input ! comes from the current Emacs buffer. Dissociated Press writes its ! output in a buffer named `*Dissociation*', and redisplays that buffer ! after every couple of lines (approximately) to facilitate reading it. ! ! Dissociated Press asks every so often whether to continue operating. ! Answer `n' to stop it. You can also stop at any time by typing `C-g'. ! The dissociation output remains in the `*Dissociation*' buffer for you ! to copy elsewhere if you wish. ! ! Dissociated Press operates by jumping at random from one point in the ! buffer to another. In order to produce plausible output rather than ! gibberish, it insists on a certain amount of overlap between the end of ! one run of consecutive words or characters and the start of the next. ! That is, if it has just printed out `president' and then decides to jump ! to a different point in the file, it might spot the `ent' in `pentagon' ! and continue from there, producing `presidentagon'.(1) Long sample ! texts produce the best results. ! ! A positive argument to `M-x dissociated-press' tells it to operate ! character by character, and specifies the number of overlap characters. ! A negative argument tells it to operate word by word and specifies the ! number of overlap words. In this mode, whole words are treated as the ! elements to be permuted, rather than characters. No argument is ! equivalent to an argument of two. For your againformation, the output ! goes only into the buffer `*Dissociation*'. The buffer you start with ! is not changed. ! ! Dissociated Press produces nearly the same results as a Markov chain ! based on a frequency table constructed from the sample text. It is, ! however, an independent, ignoriginal invention. Dissociated Press ! techniquitously copies several consecutive characters from the sample ! between random choices, whereas a Markov chain would choose randomly for ! each word or character. This makes for more plausible sounding results, ! and runs faster. ! ! It is a mustatement that too much use of Dissociated Press can be a ! developediment to your real work. Sometimes to the point of outragedy. ! And keep dissociwords out of your documentation, if you want it to be ! well userenced and properbose. Have fun. Your buggestions are welcome. ! ! ---------- Footnotes ---------- ! ! (1) This dissociword actually appeared during the Vietnam War, when ! it was very appropriate. ! !  ! File: emacs, Node: Amusements, Next: Emulation, Prev: Dissociated Press, Up: Top ! ! Other Amusements ! ================ ! ! If you are a little bit bored, you can try `M-x hanoi'. If you are ! considerably bored, give it a numeric argument. If you are very very ! bored, try an argument of 9. Sit back and watch. ! ! If you want a little more personal involvement, try `M-x gomoku', ! which plays the game Go Moku with you. ! ! `M-x blackbox' and `M-x mpuz' are two kinds of puzzles. `blackbox' ! challenges you to determine the location of objects inside a box by ! tomography. `mpuz' displays a multiplication puzzle with letters ! standing for digits in a code that you must guess--to guess a value, ! type a letter and then the digit you think it stands for. ! ! When you are frustrated, try the famous Eliza program. Just do `M-x ! doctor'. End each input by typing `RET' twice. ! ! When you are feeling strange, type `M-x yow'. --- 1207,1214 ---- * Menu: ! * Single Shell:: How to run one shell command and return. ! * Interactive Shell:: Permanent shell taking input via Emacs. ! * Shell Mode:: Special Emacs commands used with permanent shell. ! * History: Shell History. Repeating previous commands in a shell buffer. diff -cprP --exclude=*.elc emacs-19.13/info/emacs-15 emacs-19.14/info/emacs-15 *** emacs-19.13/info/emacs-15 Tue Jun 8 07:24:30 1993 --- emacs-19.14/info/emacs-15 Thu Jun 17 19:44:46 1993 *************** *** 1,7 **** ! This is Info file ../info/emacs, produced by Makeinfo-1.54 from the input file emacs.texi.  File: emacs, Node: Emulation, Next: Customization, Prev: Amusements, Up: Top Emulation --- 1,642 ---- ! This is Info file ../info/emacs, produced by Makeinfo-1.55 from the input file emacs.texi.  + File: emacs, Node: Single Shell, Next: Interactive Shell, Up: Shell + + Single Shell Commands + --------------------- + + `M-!' (`shell-command') reads a line of text using the minibuffer + executes it as a shell command in a subshell made just for this + command. Standard input for the command comes from the null device. + If the shell command produces any output, the output goes into an Emacs + buffer named `*Shell Command Output*', which is displayed in another + window but not selected. A numeric argument, as in `M-1 M-!', directs + this command to insert any output into the current buffer. In that + case, point is left before the output and the mark is set after the + output. + + If the shell command line ends in `&', it runs asynchronously. + + `M-|' (`shell-command-on-region') is like `M-!' but passes the + contents of the region as input to the shell command, instead of no + input. If a numeric argument is used, meaning insert output in the + current buffer, then the old region is deleted first and the output + replaces it as the contents of the region. + + Both `M-!' and `M-|' use `shell-file-name' to specify the shell to + use. This variable is initialized based on your `SHELL' environment + variable when Emacs is started. If the file name does not specify a + directory, the directories in the list `exec-path' are searched; this + list is initialized based on the environment variable `PATH' when Emacs + is started. Your `.emacs' file can override either or both of these + default initializations. + + With `M-!' and `M-|', Emacs has to wait until the shell command + completes. To stop waiting, type `C-g' to quit; that also kills the + shell command. + +  + File: emacs, Node: Interactive Shell, Next: Shell Mode, Prev: Single Shell, Up: Shell + + Interactive Inferior Shell + -------------------------- + + To run a subshell interactively, putting its typescript in an Emacs + buffer, use `M-x shell'. This creates (or reuses) a buffer named + `*shell*' and runs a subshell with input coming from and output going + to that buffer. That is to say, any "terminal output" from the subshell + goes into the buffer, advancing point, and any "terminal input" for the + subshell comes from text in the buffer. To give input to the subshell, + go to the end of the buffer and type the input, terminated by RET. + + Emacs does not wait for the subshell to do anything. You can switch + windows or buffers and edit them while the shell is waiting, or while + it is running a command. Output from the subshell waits until Emacs + has time to process it; this happens whenever Emacs is waiting for + keyboard input or for time to elapse. + + To make multiple subshells, rename the buffer `*shell*' to something + different using `M-x rename-uniquely'. Then type `M-x shell' again to + create a new buffer `*shell*' with its own subshell. If you rename + this buffer as well, you can create a third one, and so on. All the + subshells run independently and in parallel. + + The file name used to load the subshell is the value of the variable + `explicit-shell-file-name', if that is non-`nil'. Otherwise, the + environment variable `ESHELL' is used, or the environment variable + `SHELL' if there is no `ESHELL'. If the file name specified is + relative, the directories in the list `exec-path' are searched (*note + Single Shell Commands: Single Shell.). + + As soon as the subshell is started, it is sent as input the contents + of the file `~/.emacs_SHELLNAME', if that file exists, where SHELLNAME + is the name of the file that the shell was loaded from. For example, + if you use `bash', the file sent to it is `~/.emacs_bash'. + + `cd', `pushd' and `popd' commands given to the inferior shell are + watched by Emacs so it can keep the `*shell*' buffer's default + directory the same as the shell's working directory. These commands + are recognized syntactically by examining lines of input that are sent. + If you use aliases for these commands, you can tell Emacs to recognize + them also. For example, if the value of the variable + `shell-pushd-regexp' matches the beginning of a shell command line, + that line is regarded as a `pushd' command. Change this variable when + you add aliases for `pushd'. Likewise, `shell-popd-regexp' and + `shell-cd-regexp' are used to recognize commands with the meaning of + `popd' and `cd'. These commands are recognized only at the beginning + of a shell command line. + + If Emacs gets an error while trying to handle what it believes is a + `cd', `pushd' or `popd' command, it runs the hook + `shell-set-directory-error-hook' (*note Hooks::.). + + If Emacs does not properly track changes in the current directory of + the subshell, use the command `M-x dirs' to ask the shell what its + current directory is. This command works for shells that support the + most common command syntax; it may not work for unusual shells. + +  + File: emacs, Node: Shell Mode, Next: Shell History, Prev: Interactive Shell, Up: Shell + + Shell Mode + ---------- + + The shell buffer uses Shell mode, which defines several special keys + attached to the `C-c' prefix. They are chosen to resemble the usual + editing and job control characters present in shells that are not under + Emacs, except that you must type `C-c' first. Here is a complete list + of the special key bindings of Shell mode: + + `RET' + At end of buffer send line as input; otherwise, copy current line + to end of buffer and send it (`comint-send-input'). When a line is + copied, any text at the beginning of the line that matches the + variable `shell-prompt-pattern' is left out; this variable's value + should be a regexp string that matches the prompts that your shell + uses. + + `TAB' + Complete the file name before point in the shell buffer + (`comint-dynamic-complete'). + + `M-?' + Display temporarily a list of the possible completions of the file + name before point in the shell buffer + (`comint-dynamic-list-completions'). + + `C-a' + Move to the beginning of the line, but after the prompt if any + (`comint-bol'). + + `C-d' + Either delete a character or send EOF + (`comint-delchar-or-maybe-eof'). Typed at the end of the shell + buffer, `C-d' sends EOF to the subshell. Typed at any other + position in the buffer, `C-d' deletes a character as usual. + + `C-c C-u' + Kill all text pending at end of buffer to be sent as input + (`comint-kill-input'). + + `C-c C-w' + Kill a word before point (`backward-kill-word'). + + `C-c C-c' + Interrupt the shell or its current subjob if any + (`comint-interrupt-subjob'). + + `C-c C-z' + Stop the shell or its current subjob if any (`comint-stop-subjob'). + + `C-c C-\' + Send quit signal to the shell or its current subjob if any + (`comint-quit-subjob'). + + `C-c C-o' + Kill the last batch of output from a shell command + (`comint-kill-output'). This is useful if a shell command spews + out lots of output that just gets in the way. + + `C-c C-r' + Scroll to display the beginning of the last batch of output at the + top of the window; also move the cursor there + (`comint-show-output'). + + `M-x dirs' + Ask the shell what its current directory is, so that Emacs can + agree with the shell. + + `M-x send-invisible RET TEXT RET' + Send TEXT as input to the shell, after reading it without echoing. + This is useful when a shell command runs a program that asks for + a password. + + `M-x comint-continue-subjob' + Continue the shell process. This is useful if you accidentally + suspend the shell process.(1) + + ---------- Footnotes ---------- + + (1) You should not suspend the shell process. Suspending a subjob + of the shell is a completely different matter-that is normal practice, + but you must use the shell to continue the subjob; this command won't + do it. + +  + File: emacs, Node: Shell History, Prev: Shell Mode, Up: Shell + + Shell Command History + --------------------- + + Shell buffers support history commands much like the minibuffer + history commands. + + `M-p' + Fetch the next earlier old shell command. + + `M-n' + Fetch the next later old shell command. + + `M-r REGEXP RET' + `M-s REGEXP RET' + Search backwards or forwards for old shell commands that match + REGEXP. + + Shell buffers provide a history of previously entered shell + commands. To reuse shell commands from the history, use the editing + commands `M-p', `M-n', `M-r' and `M-s'. These work just like the + minibuffer history commands except that they operate on the text at the + end of the shell buffer, the text that typing RET will send to the + shell. + + `M-p' fetches an earlier shell command to the end of the shell + buffer. Successive use of `M-p' fetches successively earlier shell + commands, each replacing any text that was already present as potential + shell input. `M-n' does likewise except that it finds successively + more recent shell commands from the buffer. + + The history search commands `M-r' and `M-s' read a regular + expression and search through the history for a matching command. Aside + from the choice of which command to fetch, they work just like `M-p' + and `M-r'. If you enter an empty regexp, these commands reuse the same + regexp used last time. + + When you find the previous input you want, you can resubmit it by + typing RET, or you can edit it first and then resubmit it if you wish. + + These commands get the text of previous shell commands from a special + history list, not from the shell buffer itself. Thus, editing the shell + buffer, or even killing large parts of it, does not affect the history + that these commands access. + +  + File: emacs, Node: Narrowing, Next: Hardcopy, Prev: Shell, Up: Top + + Narrowing + ========= + + "Narrowing" means focusing in on some portion of the buffer, making + the rest temporarily inaccessible. The portion which you can still get + to is called the "accessible portion". Cancelling the narrowing, and + making the entire buffer once again accessible, is called "widening". + The amount of narrowing in effect in a buffer at any time is called the + buffer's "restriction". + + `C-x n n' + Narrow down to between point and mark (`narrow-to-region'). + + `C-x n w' + Widen to make the entire buffer accessible again (`widen'). + + `C-x n p' + Narrow down to the current page (`narrow-to-page'). + + When you have narrowed down to a part of the buffer, that part + appears to be all there is. You can't see the rest, you can't move + into it (motion commands won't go outside the accessible part), you + can't change it in any way. However, it is not gone, and if you save + the file all the inaccessible text will be saved. In addition to + sometimes making it easier to concentrate on a single subroutine or + paragraph by eliminating clutter, narrowing can be used to restrict the + range of operation of a replace command or repeating keyboard macro. + The word `Narrow' appears in the mode line whenever narrowing is in + effect. + + The primary narrowing command is `C-x n n' (`narrow-to-region'). It + sets the current buffer's restrictions so that the text in the current + region remains accessible but all text before the region or after the + region is invisible. Point and mark do not change. + + Alternatively, use `C-x n p' (`narrow-to-page') to narrow down to + the current page. *Note Pages::, for the definition of a page. + + The way to undo narrowing is to widen with `C-x n w' (`widen'). + This makes all text in the buffer accessible again. + + You can get information on what part of the buffer you are narrowed + down to using the `C-x =' command. *Note Position Info::. + + Because narrowing can easily confuse users who do not understand it, + `narrow-to-region' is normally a disabled command. Attempting to use + this command asks for confirmation and gives you the option of enabling + it; once you enable the command, confirmation will no longer be + required for it. *Note Disabling::. + +  + File: emacs, Node: Hardcopy, Next: Two-Column, Prev: Narrowing, Up: Top + + Hardcopy Output + =============== + + The Emacs commands for making hardcopy let you print either an entire + buffer or just part of one, either with or without page headers. See + also the hardcopy commands of Dired (*note Misc File Ops::.) and the + diary (*note Diary Commands::.). + + `M-x print-buffer' + Print hardcopy of current buffer using Unix command `print' (`lpr + -p'). This makes page headings containing the file name and page + number. + + `M-x lpr-buffer' + Print hardcopy of current buffer using Unix command `lpr'. This + makes no page headings. + + `M-x print-region' + Like `print-buffer' but prints only the current region. + + `M-x lpr-region' + Like `lpr-buffer' but prints only the current region. + + All the hardcopy commands pass extra switches to the `lpr' program + based on the value of the variable `lpr-switches'. Its value should be + a list of strings, each string an option starting with `-'. For + example, to use a printer named `nearme', set `lpr-switches' like this: + + (setq lpr-switches '("-Pnearme")) + +  + File: emacs, Node: Two-Column, Next: Editing Binary Files, Prev: Hardcopy, Up: Top + + Two-Column Editing + ================== + + Two-column mode lets you conveniently edit two side-by-side columns + of text. It uses two side-by-side windows, each showing its own buffer. + + There are three ways to enter two-column mode: + + `C-x 6 2' + Enter two-column mode with the current buffer on the left, and on + the right, a buffer whose name is based on the current buffer's + name (`tc-two-columns'). If the right-hand buffer doesn't already + exist, it starts out empty; the current buffer's contents are not + changed. + + This command is appropriate when the current buffer contains just + one column and you want to add another column. + + `C-x 6 s' + Split the current buffer, which contains two-column text, into two + buffers, and display them side by side (`tc-split'). The current + buffer becomes the left-hand buffer, but the text in the right-hand + column is moved into the right-hand buffer. The current column + specifies the split point. Splitting starts with the current line + and continues to the end of the buffer. + + This command is appropriate when you have a buffer that already + contains two-column text, and you wish to separate the columns + temporarily. + + `C-x 6 b BUFFER RET' + Enter two-column mode using the current buffer as the left-hand + buffer, and using buffer BUFFER as the right-hand buffer + (`tc-associate-buffer'). + + `C-x 6 s' looks for a column separator which is a string that + appears on each line between the two columns. You can specify the width + of the separator with a numeric argument to `C-x 6 s'; that many + characters, before point, constitute the separator string. By default, + the width is 1, so the column separator is the character before point. + + When a line has the separator at the proper place, `C-x 6 s' puts + the text after the separator into the right-hand buffer, and deletes the + separator. Lines that don't have the column separator at the proper + place remain unsplit; they stay in the left-hand buffer, and the + right-hand buffer gets an empty line to correspond. (This is the way + to write a line which "spans both columns while in two-column mode: + write it in the left-hand buffer, and put an empty line in the + right-hand buffer.) + + It's not a good idea to use ordinary scrolling commands during + two-column editing, because that separates the two parts of each split + line. Instead, use these special scroll commands: + + `C-x 6 SPC' + Scroll both buffers up, in lockstep (`tc-scroll-up'). + + `C-x 6 DEL' + Scroll both buffers down, in lockstep (`tc-scroll-down'). + + `C-x 6 C-l' + Recenter both buffers, in lockstep (`tc-recenter'). + + When you have edited both buffers as you wish, merge them with `C-x + 6 1' (`tc-merge'). This copies the text from the right-hand buffer as + a second column in the other buffer. To go back to two-column editing, + use `C-x 6 s'. + + Use `C-x 6 d' to disassociate the two buffers, leaving each as it + stands (`tc-dissociate'). If the other buffer, the one not current + when you type `C-x 6 d', is empty, `C-x 6 d' kills it. + +  + File: emacs, Node: Editing Binary Files, Next: Emacs Server, Prev: Two-Column, Up: Top + + Editing Binary Files + ==================== + + There is a special major mode for editing binary files: Hexl mode. + To use it, use `M-x hexl-find-file' instead of `C-x C-f' to visit the + file. This command converts the file's contents to hexadecimal and + lets you edit the translation. When you save the file, it is converted + automatically back to binary. + + You can also use `M-x hexl-mode' to translate an existing buffer + into hex. This is useful if you visit a file normally and then discover + it is a binary file. + + Ordinary text characters overwrite in Hexl mode. This is to reduce + the risk of accidentally spoiling the alignment of data in the file. + There are special commands for insertion. Here is a list of the + commands of Hexl mode: + + `C-M-d' + Insert a byte with a code typed in decimal. + + `C-M-o' + Insert a byte with a code typed in octal. + + `C-M-x' + Insert a byte with a code typed in hex. + + `C-x [' + Move to the beginning of a 1k-byte "page". + + `C-x ]' + Move to the end of a 1k-byte "page". + + `M-g' + Move to an address specified in hex. + + `M-j' + Move to an address specified in decimal. + + `C-c C-c' + Leave Hexl mode, going back to the major mode this buffer had + before you invoked `hexl-mode'. + +  + File: emacs, Node: Emacs Server, Next: Recursive Edit, Prev: Editing Binary Files, Up: Top + + Using Emacs as a Server + ======================= + + Various programs such as `mail' can invoke your choice of editor to + edit a particular piece of text, such as a message that you are + sending. By convention, these programs use the environment variable + `EDITOR' to specify which editor to run. If you set `EDITOR' to + `emacs', they invoke Emacs--but in an inconvenient fashion, by starting + a new, separate Emacs process. This is inconvenient because it takes + time and because the new Emacs process doesn't share the buffers in the + existing Emacs process. + + You can arrange to use your existing Emacs process as the editor for + programs like `mail' by using the Emacs client and Emacs server + programs. Here is how. + + First, the preparation. Within Emacs, call the function + `server-start'. (Your `.emacs' file can do this automatically if you + add the expression `(server-start)' to it.) Then, outside Emacs, set + the `EDITOR' environment variable to `emacsclient'. + + Then, whenever any program invokes your specified `EDITOR' program, + the effect is to send a message to your principal Emacs telling it to + visit a file. (That's what the program `emacsclient' does.) Emacs + obeys silently; it does not immediately switch to the new file's + buffer. When you want to do that, type `C-x #' (`server-edit'). + + When you've finished editing that buffer, type `C-x #' again. This + saves the file and sends a message back to the `emacsclient' program + telling it to exit. The programs that use `EDITOR' wait for the + "editor" (actually, `emacsclient') to exit. `C-x #' also checks to see + if any other files are pending for you to edit, and selects the next + one. + + You can switch to a server buffer manually if you wish; you don't + have to arrive at it with `C-x #'. But `C-x #' is the only way to say + that you are "finished" with one. + + While `mail' or another application is waiting for `emacsclient' to + finish, `emacsclient' does not read terminal input. So the terminal + that `mail' was using is effectively blocked for the duration. In + order to edit with your principal Emacs, you need to be able to use it + without using that terminal. There are two ways to do this: + + * Using a window system, run `mail' and the principal Emacs in two + separate windows. While `mail' is waiting for `emacsclient', the + window where it was running is blocked, but you can use Emacs by + switching windows. + + * Use Shell mode in Emacs to run the other program such as `mail'; + then, `emacsclient' blocks only the subshell under Emacs; you can + still use Emacs to edit the file. + +  + File: emacs, Node: Recursive Edit, Next: Dissociated Press, Prev: Emacs Server, Up: Top + + Recursive Editing Levels + ======================== + + A "recursive edit" is a situation in which you are using Emacs + commands to perform arbitrary editing while in the middle of another + Emacs command. For example, when you type `C-r' inside of a + `query-replace', you enter a recursive edit in which you can change the + current buffer. On exiting from the recursive edit, you go back to the + `query-replace'. + + "Exiting" the recursive edit means returning to the unfinished + command, which continues execution. To exit, type `C-M-c' + (`exit-recursive-edit'). + + You can also "abort" the recursive edit. This is like exiting, but + also quits the unfinished command immediately. Use the command `C-]' + (`abort-recursive-edit') for this. *Note Quitting::. + + The mode line shows you when you are in a recursive edit by + displaying square brackets around the parentheses that always surround + the major and minor mode names. Every window's mode line shows this, + in the same way, since being in a recursive edit is true of Emacs as a + whole rather than any particular window or buffer. + + It is possible to be in recursive edits within recursive edits. For + example, after typing `C-r' in a `query-replace', you may type a + command that enters the debugger. This begins a recursive editing level + for the debugger, within the recursive editing level for `C-r'. Mode + lines display a pair of square brackets for each recursive editing + level currently in progress. + + Exiting the inner recursive edit (such as, with the debugger `c' + command) resumes the command running in the next level up. When that + command finishes, you can then use `C-M-c' to exit another recursive + editing level, and so on. Exiting applies to the innermost level only. + Aborting also gets out of only one level of recursive edit; it returns + immediately to the command level of the previous recursive edit. If you + wish, you can then abort the next recursive editing level. + + Alternatively, the command `M-x top-level' aborts all levels of + recursive edits, returning immediately to the top level command reader. + + The text being edited inside the recursive edit need not be the same + text that you were editing at top level. It depends on what the + recursive edit is for. If the command that invokes the recursive edit + selects a different buffer first, that is the buffer you will edit + recursively. In any case, you can switch buffers within the recursive + edit in the normal manner (as long as the buffer-switching keys have + not been rebound). You could probably do all the rest of your editing + inside the recursive edit, visiting files and all. But this could have + surprising effects (such as stack overflow) from time to time. So + remember to exit or abort the recursive edit when you no longer need it. + + In general, we try to minimize the use of recursive editing levels in + GNU Emacs. This is because they constrain you to "go back" in a + particular order-from the innermost level toward the top level. When + possible, we present different activities in separate buffers. Some + commands switch to a new major mode but provide a way to switch back. + These approaches give you more flexibility to go back to unfinished + tasks in the order you choose. + +  + File: emacs, Node: Dissociated Press, Next: Amusements, Prev: Recursive Edit, Up: Top + + Dissociated Press + ================= + + `M-x dissociated-press' is a command for scrambling a file of text + either word by word or character by character. Starting from a buffer + of straight English, it produces extremely amusing output. The input + comes from the current Emacs buffer. Dissociated Press writes its + output in a buffer named `*Dissociation*', and redisplays that buffer + after every couple of lines (approximately) to facilitate reading it. + + Dissociated Press asks every so often whether to continue operating. + Answer `n' to stop it. You can also stop at any time by typing `C-g'. + The dissociation output remains in the `*Dissociation*' buffer for you + to copy elsewhere if you wish. + + Dissociated Press operates by jumping at random from one point in the + buffer to another. In order to produce plausible output rather than + gibberish, it insists on a certain amount of overlap between the end of + one run of consecutive words or characters and the start of the next. + That is, if it has just printed out `president' and then decides to jump + to a different point in the file, it might spot the `ent' in `pentagon' + and continue from there, producing `presidentagon'.(1) Long sample + texts produce the best results. + + A positive argument to `M-x dissociated-press' tells it to operate + character by character, and specifies the number of overlap characters. + A negative argument tells it to operate word by word and specifies the + number of overlap words. In this mode, whole words are treated as the + elements to be permuted, rather than characters. No argument is + equivalent to an argument of two. For your againformation, the output + goes only into the buffer `*Dissociation*'. The buffer you start with + is not changed. + + Dissociated Press produces nearly the same results as a Markov chain + based on a frequency table constructed from the sample text. It is, + however, an independent, ignoriginal invention. Dissociated Press + techniquitously copies several consecutive characters from the sample + between random choices, whereas a Markov chain would choose randomly for + each word or character. This makes for more plausible sounding results, + and runs faster. + + It is a mustatement that too much use of Dissociated Press can be a + developediment to your real work. Sometimes to the point of outragedy. + And keep dissociwords out of your documentation, if you want it to be + well userenced and properbose. Have fun. Your buggestions are welcome. + + ---------- Footnotes ---------- + + (1) This dissociword actually appeared during the Vietnam War, when + it was very appropriate. + +  + File: emacs, Node: Amusements, Next: Emulation, Prev: Dissociated Press, Up: Top + + Other Amusements + ================ + + If you are a little bit bored, you can try `M-x hanoi'. If you are + considerably bored, give it a numeric argument. If you are very very + bored, try an argument of 9. Sit back and watch. + + If you want a little more personal involvement, try `M-x gomoku', + which plays the game Go Moku with you. + + `M-x blackbox' and `M-x mpuz' are two kinds of puzzles. `blackbox' + challenges you to determine the location of objects inside a box by + tomography. `mpuz' displays a multiplication puzzle with letters + standing for digits in a code that you must guess--to guess a value, + type a letter and then the digit you think it stands for. + + When you are frustrated, try the famous Eliza program. Just do `M-x + doctor'. End each input by typing `RET' twice. + + When you are feeling strange, type `M-x yow'. + +  File: emacs, Node: Emulation, Next: Customization, Prev: Amusements, Up: Top Emulation *************** File::. *** 82,101 **** * Menu: ! * Minor Modes:: Each minor mode is one feature you can turn on ! independently of any others. ! * Variables:: Many Emacs commands examine Emacs variables ! to decide what to do; by setting variables, ! you can control their functioning. ! * Keyboard Macros:: A keyboard macro records a sequence of keystrokes ! to be replayed with a single command. ! * Key Bindings:: The keymaps say what command each key runs. ! By changing them, you can "redefine keys". * Keyboard Translations:: If your keyboard passes an undesired code ! for a key, you can tell Emacs to substitute another code. ! * Syntax:: The syntax table controls how words and expressions ! are parsed. ! * Init File:: How to write common customizations in the `.emacs' file.  File: emacs, Node: Minor Modes, Next: Variables, Up: Customization --- 717,739 ---- * Menu: ! * Minor Modes:: Each minor mode is one feature you can turn on ! independently of any others. ! * Variables:: Many Emacs commands examine Emacs variables ! to decide what to do; by setting variables, ! you can control their functioning. ! * Keyboard Macros:: A keyboard macro records a sequence of ! keystrokes to be replayed with a single ! command. ! * Key Bindings:: The keymaps say what command each key runs. ! By changing them, you can "redefine keys". * Keyboard Translations:: If your keyboard passes an undesired code ! for a key, you can tell Emacs to ! substitute another code. ! * Syntax:: The syntax table controls how words and ! expressions are parsed. ! * Init File:: How to write common customizations in the ! `.emacs' file.  File: emacs, Node: Minor Modes, Next: Variables, Up: Customization *************** File: emacs, Node: Edit Options, Next: *** 264,269 **** --- 902,910 ---- Editing Variable Values ----------------------- + These two functions make it easy to display all the user edit options + and change some of them. + `M-x list-options' Display a buffer listing names, values and documentation of all options. *************** its default value. The argument is eval *** 438,1166 **** it explicitly. For example, (default-value 'fill-column) - -  - File: emacs, Node: File Variables, Prev: Locals, Up: Variables - - Local Variables in Files - ------------------------ - - A file can specify local variable values for use when you edit the - file with Emacs. Visiting the file checks for local variables - specifications; it automatically makes these variables local to the - buffer, and sets them to the values specified in the file. - - There are two ways to specify local variable values: in the first - line, or with a local variables list. Here's how to do this with the - first line: - - -*- mode: MODENAME; VAR: VALUE; ... -*- - - You can specify any number of variables/value pairs in this way, each - pair with a colon and semicolon as shown above. The major mode should - come first, if it is mentioned at all. Here is an example that - specifies Lisp mode and sets two variables with numeric values: - - ;; -*-Mode: Lisp; fill-column: 75; comment-column: 50; -*- - - A "local variables list" goes near the end of the file, in the last - page. (It is often best to put it on a page by itself.) The local - variables list starts with a line containing the string `Local - Variables:', and ends with a line containing the string `End:'. In - between come the variable names and values, one set per line, as - `VARIABLE: VALUE'. The VALUEs are not evaluated; they are used - literally. - - Here is an example of a local variables list: - - ;;; Local Variables: *** - ;;; mode:lisp *** - ;;; comment-column:0 *** - ;;; comment-start: ";;; " *** - ;;; comment-end:"***" *** - ;;; End: *** - - As you see, each line starts with the prefix `;;; ' and each line - ends with the suffix ` ***'. Emacs recognizes these as the prefix and - suffix based on the first line of the list, by finding them surrounding - the magic string `Local Variables:'; so it automatically discards them - from the other lines of the list. - - The usual reason for using a prefix and/or suffix is to embed the - local variables list in a comment, so it won't confuse other programs - that the file is intended as input for. The example above is for a - language where comment lines start with `;;; ' and end with `***'; the - local values for `comment-start' and `comment-end' customize the rest - of Emacs for this unusual syntax. Don't use a prefix (or a suffix) if - you don't need one. - - Two "variable names" have special meanings in a local variables - list: a value for the variable `mode' really sets the major mode, and a - value for the variable `eval' is simply evaluated as an expression and - the value is ignored. `mode' and `eval' are not real variables; - setting such variables in any other context has no such effect. If - `mode' is used in a local variables list, it should be the first entry - in the list. - - The start of the local variables list must be no more than 3000 - characters from the end of the file, and must be in the last page if the - file is divided into pages. Otherwise, Emacs will not notice it is - there. The purpose of this is so that a stray `Local Variables:' not - in the last page does not confuse Emacs, and so that visiting a long - file that is all one page and has no local variables list need not take - the time to search the whole file. - - You may be tempted to try to turn on Auto Fill mode with a local - variable list. That is a mistake. The choice of Auto Fill mode or not - is a matter of individual taste, not a matter of the contents of - particular files. If you want to use Auto Fill, set up major mode - hooks with your `.emacs' file to turn it on (when appropriate) for you - alone (*note Init File::.). Don't try to use a local variable list - that would impose your taste on everyone. - - The variable `enable-local-variables' controls whether to process - local variables lists, and thus gives you a chance to override them. - Its default value is `t', which means to process local variables lists. - If you set the value to `nil', Emacs simply ignores local variables - lists. Any other value says to query you about each local variables - list, showing you the local variables list to consider. - - The `eval' "variable" creates special risks, so there is a separate - variable `enable-local-eval' to control whether Emacs processes `eval' - variables. The three possibilities for the value are `t', `nil', and - anything else, just as for `enable-local-variables'. The default is - `maybe', which is neither `t' nor `nil', so normally Emacs queries about - `eval' variable settings. - - Use the command `normal-mode' to reset the local variables and major - mode of a buffer according to the file name and contents, including the - local variables list if any. *Note Choosing Modes::. - -  - File: emacs, Node: Keyboard Macros, Next: Key Bindings, Prev: Variables, Up: Customization - - Keyboard Macros - =============== - - A "keyboard macro" is a command defined by the user to abbreviate a - sequence of keys. For example, if you discover that you are about to - type `C-n C-d' forty times, you can speed your work by defining a - keyboard macro to do `C-n C-d' and calling it with a repeat count of - forty. - - `C-x (' - Start defining a keyboard macro (`start-kbd-macro'). - - `C-x )' - End the definition of a keyboard macro (`end-kbd-macro'). - - `C-x e' - Execute the most recent keyboard macro (`call-last-kbd-macro'). - - `C-u C-x (' - Re-execute last keyboard macro, then add more keys to its - definition. - - `C-x q' - When this point is reached during macro execution, ask for - confirmation (`kbd-macro-query'). - - `M-x name-last-kbd-macro' - Give a command name (for the duration of the session) to the most - recently defined keyboard macro. - - `M-x insert-kbd-macro' - Insert in the buffer a keyboard macro's definition, as Lisp code. - - Keyboard macros differ from ordinary Emacs commands in that they are - written in the Emacs command language rather than in Lisp. This makes - it easier for the novice to write them, and makes them more convenient - as temporary hacks. However, the Emacs command language is not powerful - enough as a programming language to be useful for writing anything - intelligent or general. For such things, Lisp must be used. - - You define a keyboard macro while executing the commands which are - the definition. Put differently, as you define a keyboard macro, the - definition is being executed for the first time. This way, you can see - what the effects of your commands are, so that you don't have to figure - them out in your head. When you are finished, the keyboard macro is - defined and also has been, in effect, executed once. You can then do - the whole thing over again by invoking the macro. - - * Menu: - - * Basic Kbd Macro:: Defining and running keyboard macros. - * Save Kbd Macro:: Giving keyboard macros names; saving them in files. - * Kbd Macro Query:: Keyboard macros that do different things each use. - -  - File: emacs, Node: Basic Kbd Macro, Next: Save Kbd Macro, Up: Keyboard Macros - - Basic Use - --------- - - To start defining a keyboard macro, type the `C-x (' command - (`start-kbd-macro'). From then on, your keys continue to be executed, - but also become part of the definition of the macro. `Def' appears in - the mode line to remind you of what is going on. When you are - finished, the `C-x )' command (`end-kbd-macro') terminates the - definition (without becoming part of it!). For example - - C-x ( M-f foo C-x ) - - defines a macro to move forward a word and then insert `foo'. - - The macro thus defined can be invoked again with the `C-x e' command - (`call-last-kbd-macro'), which may be given a repeat count as a numeric - argument to execute the macro many times. `C-x )' can also be given a - repeat count as an argument, in which case it repeats the macro that - many times right after defining it, but defining the macro counts as - the first repetition (since it is executed as you define it). So, - giving `C-x )' an argument of 4 executes the macro immediately 3 - additional times. An argument of zero to `C-x e' or `C-x )' means - repeat the macro indefinitely (until it gets an error or you type - `C-g'). - - If you wish to repeat an operation at regularly spaced places in the - text, define a macro and include as part of the macro the commands to - move to the next place you want to use it. For example, if you want to - change each line, you should position point at the start of a line, and - define a macro to change that line and leave point at the start of the - next line. Then repeating the macro will operate on successive lines. - - After you have terminated the definition of a keyboard macro, you - can add to the end of its definition by typing `C-u C-x ('. This is - equivalent to plain `C-x (' followed by retyping the whole definition - so far. As a consequence it re-executes the macro as previously - defined. - - You can use function keys in a keyboard macro, just like keyboard - keys. You can even use mouse events, but be careful about that: when - the macro replays the mouse event, it uses the original mouse position - of that event, the position that the mouse had while you were defining - the macro. The effect of this may be hard to predict. (Using the - current mouse position would be even less predictable.) - - One thing that doesn't always work well in a keyboard macro is the - command `C-M-c' (`exit-recursive-edit'). When this command exits a - recursive edit that started within the macro, it works as you'd expect. - But if it exits a recursive edit that started before you invoked the - keyboard macro, it also necessarily exits the keyboard macro as part of - the process. - -  - File: emacs, Node: Save Kbd Macro, Next: Kbd Macro Query, Prev: Basic Kbd Macro, Up: Keyboard Macros - - Naming and Saving Keyboard Macros - --------------------------------- - - If you wish to save a keyboard macro for longer than until you - define the next one, you must give it a name using `M-x - name-last-kbd-macro'. This reads a name as an argument using the - minibuffer and defines that name to execute the macro. The macro name - is a Lisp symbol, and defining it in this way makes it a valid command - name for calling with `M-x' or for binding a key to with - `global-set-key' (*note Keymaps::.). If you specify a name that has a - prior definition other than another keyboard macro, an error message is - printed and nothing is changed. - - Once a macro has a command name, you can save its definition in a - file. Then it can be used in another editing session. First, visit - the file you want to save the definition in. Then use this command: - - M-x insert-kbd-macro RET MACRONAME RET - - This inserts some Lisp code that, when executed later, will define the - same macro with the same definition it has now. (You need not - understand Lisp code to do this, because `insert-kbd-macro' writes the - Lisp code for you.) Then save the file. You can load the file later - with `load-file' (*note Lisp Libraries::.). If the file you save in is - your init file `~/.emacs' (*note Init File::.) then the macro will be - defined each time you run Emacs. - - If you give `insert-kbd-macro' a prefix argument, it makes - additional Lisp code to record the keys (if any) that you have bound to - the keyboard macro, so that the macro will be reassigned the same keys - when you load the file. - -  - File: emacs, Node: Kbd Macro Query, Prev: Save Kbd Macro, Up: Keyboard Macros - - Executing Macros with Variations - -------------------------------- - - Using `C-x q' (`kbd-macro-query'), you can get an effect similar to - that of `query-replace', where the macro asks you each time around - whether to make a change. When you are defining the macro, type `C-x - q' at the point where you want the query to occur. During macro - definition, the `C-x q' does nothing, but when you run the macro later, - `C-x q' asks you interactively whether to continue. - - The valid responses when `C-x q' asks are SPC (or `y'), DEL (or - `n'), ESC (or `q'), `C-l' and `C-r'. The answers are the same as in - query replace, though not all of the query-replace options are - meaningful. - - Specifically, SPC means to continue. DEL means to skip the - remainder of this repetition of the macro and start right away with the - next repetition. ESC means to skip the remainder of this repetition - and cancel further repetition. `C-l' redraws the screen and asks you - again for a character to say what to do. - - `C-r' enters a recursive editing level, in which you can perform - editing which is not part of the macro. When you exit the recursive - edit using `C-M-c', you are asked again how to continue with the - keyboard macro. If you type a SPC at this time, the rest of the macro - definition is executed. It is up to you to leave point and the text in - a state such that the rest of the macro will do what you want. - - `C-u C-x q', which is `C-x q' with a numeric argument, performs a - different function. It enters a recursive edit reading input from the - keyboard, both when you type it during the definition of the macro, and - when it is executed from the macro. During definition, the editing you - do inside the recursive edit does not become part of the macro. During - macro execution, the recursive edit gives you a chance to do some - particularized editing. *Note Recursive Edit::. - -  - File: emacs, Node: Key Bindings, Next: Keyboard Translations, Prev: Keyboard Macros, Up: Customization - - Customizing Key Bindings - ======================== - - This section describes "key bindings" which map keys to commands, - and the "keymaps" which record key bindings. It also explains how to - customize key bindings. - - Recall that a command is a Lisp function whose definition provides - for interactive use. Like every Lisp function, a command has a function - name which usually consists of lower case letters and hyphens. - - * Menu: - - * Keymaps:: Generalities. The global keymap. - * Prefix Keymaps:: Keymaps for prefix keys. - * Local Keymaps:: Major and minor modes have their own keymaps. - * Minibuffer Maps:: The minibuffer uses its own local keymaps. - * Rebinding:: How to redefine one key's meaning conveniently. - * Init Rebinding:: Rebinding keys with your init file, `.emacs'. - * Function Keys:: Rebinding terminal function keys. - * Mouse Buttons:: Rebinding mouse buttons in Emacs. - * Disabling:: Disabling a command means confirmation is required - before it can be executed. This is done to protect - beginners from surprises. - -  - File: emacs, Node: Keymaps, Next: Prefix Keymaps, Up: Key Bindings - - Keymaps - ------- - - The bindings between key sequences and command functions are recorded - in data structures called "keymaps". Emacs has many of these, each - used on particular occasions. - - Recall that a "key sequence" ("key", for short) is a sequence of - "input events" that have a meaning as a unit. Input events include - characters, function keys and mouse buttons--all the inputs that you - can send to the computer with your terminal. A key sequence gets its - meaning from its "binding", which says what command it runs. The - function of keymaps is to record these bindings. - - The "global" keymap is the most important keymap because it is - always in effect. The global keymap defines keys for Fundamental mode; - most of these definitions are common to all (or most) major modes. Each - major or minor mode can have its own keymap which overrides the - definitions of some keys. - - For example, a self-inserting character such as `g' is - self-inserting because the global keymap binds it to the command - `self-insert-command'. The standard Emacs editing characters such as - `C-a' also get their standard meanings from the global keymap. - Commands to rebind keys, such as `M-x global-set-key', actually work by - storing the new binding in the proper place in the global map. *Note - Rebinding::. - - Meta characters work differently; Emacs translates each Meta - character into a pair of characters starting with ESC. When you type - the character `M-a' in a key sequence, Emacs replaces it with `ESC a'. - A meta key comes in as a single input event, but becomes two events for - purposes of key bindings. The reason for this is historical, and we - might change in someday. - - Most modern keyboards have function keys as well as character keys. - Function keys send input events just as character keys do, and keymaps - can have bindings for them. - - On many terminals, typing a function key actually sends the computer - a sequence of characters; the precise details of the sequence depends on - which function key and on the model of terminal you are using. (Often - he sequence starts with `ESC ['.) If Emacs understands your terminal - type properly, it recognizes the character sequences forming function - keys wherever they occur in a key sequence (not just at the beginning). - Thus, for most purposes, you can pretend the function keys reach Emacs - directly and ignore their encoding as character sequences. - - Mouse buttons also produce input events. These events come with - other data--the window and position where you pressed or released the - button, and a timestamp. But only the choice of button matters for key - bindings; the other data matters only if a command looks at it. - (Commands designed for mouse invocation usually do look at the other - data.) - - A keymap records definitions for single events. Interpreting a key - sequence of multiple events involves a chain of keymaps. The first - keymap gives a definition for the first event; this definition is - another keymap, which is used to look up the second event in the - sequence, and so on. - - Key sequences can mix function keys and characters. For example, - `C-x SELECT' makes sense. If you make SELECT a prefix key, then - `SELECT C-n' makes sense. You can even mix mouse events with keyboard - events, but we recommend against it, because such sequences are - inconvenient to type in. - -  - File: emacs, Node: Prefix Keymaps, Next: Local Keymaps, Prev: Keymaps, Up: Key Bindings - - Prefix Keymaps - -------------- - - A prefix key such as `C-x' or ESC has its own keymap, which holds - the definition for the event that immediately follows that prefix. - - The definition of a prefix key is the keymap to use for looking up - the following event. The definition can also be a Lisp symbol whose - function definition is the following keymap; the effect is the same, but - it provides a command name for the prefix key that can be used as a - description of what the prefix key is for. Thus, the binding of `C-x' - is the symbol `Ctl-X-Prefix', whose function definition is the keymap - for `C-x' commands. The definitions of `C-c', `C-x', `C-h' and ESC as - prefix keys appear in the global map, so these prefix keys are always - available. - - Some prefix keymaps are stored in variables with names: - - * `ctl-x-map' is the variable name for the map used for characters - that follow `C-x'. - - * `help-map' is for characters that follow `C-h'. - - * `esc-map' is for characters that follow ESC. Thus, all Meta - characters are actually defined by this map. - - * `ctl-x-4-map' is for characters that follow `C-x 4'. - - * `mode-specific-map' is for characters that follow `C-c'. - -  - File: emacs, Node: Local Keymaps, Next: Minibuffer Maps, Prev: Prefix Keymaps, Up: Key Bindings - - Local Keymaps - ------------- - - So far we have explained the ins and outs of the global map. Major - modes customize Emacs by providing their own key bindings in "local - keymaps". For example, C mode overrides TAB to make it indent the - current line for C code. Portions of text in the buffer can specify - their own keymaps to substitute for the keymap of the buffer's major - mode. - - Minor modes can also have local keymaps. Whenever a minor mode is - in effect, the definitions in its keymap override both the major mode's - local keymap and the global keymap. - - The local keymaps for Lisp mode, C mode, and several other major - modes always exist even when not in use. These are kept in variables - named `lisp-mode-map', `c-mode-map', and so on. For major modes less - often used, the local keymap is normally constructed only when the mode - is used for the first time in a session. This is to save space. - - All minor mode keymaps are created in advance. There is no way to - defer their creation until the minor mode is enabled. - - A local keymap can locally redefine a key as a prefix key by defining - it as a prefix keymap. If the key is also defined globally as a prefix, - then its local and global definitions (both keymaps) effectively - combine: both of them are used to look up the event that follows the - prefix key. Thus, if the mode's local keymap defines `C-c' as another - keymap, and that keymap defines `C-z' as a command, this provides a - local meaning for `C-c C-z'. This does not affect other sequences that - start with `C-c'; If those sequences don't have their own local - bindings, their global bindings remain in effect. - - Another way to think of this is that Emacs handles a multi-event key - sequence by looking in several keymaps, one by one, for a binding of the - whole key sequence. First it checks the minor mode keymaps for minor - modes that are enabled, then it checks the major mode's keymap, and then - it checks the global keymap. This is not precisely how key lookup - works, but it's good enough for understanding ordinary circumstances. - -  - File: emacs, Node: Minibuffer Maps, Next: Rebinding, Prev: Local Keymaps, Up: Key Bindings - - Minibuffer Keymaps - ------------------ - - The minibuffer has its own set of local keymaps; they contain various - completion and exit commands. - - * `minibuffer-local-map' is used for ordinary input (no completion). - - * `minibuffer-local-ns-map' is similar, except that SPC exits just - like RET. This is used mainly for Mocklisp compatibility. - - * `minibuffer-local-completion-map' is for permissive completion. - - * `minibuffer-local-must-match-map' is for strict completion and for - cautious completion. - -  - File: emacs, Node: Rebinding, Next: Init Rebinding, Prev: Minibuffer Maps, Up: Key Bindings - - Changing Key Bindings Interactively - ----------------------------------- - - The way to redefine an Emacs key is to change its entry in a keymap. - You can change the global keymap, in which case the change is effective - in all major modes (except those that have their own overriding local - definitions for the same key). Or you can change the current buffer's - local map, which affects all buffers using the same major mode. - - `M-x global-set-key RET KEY CMD RET' - Define KEY globally to run CMD. - - `M-x local-set-key RET KEY CMD RET' - Define KEY locally (in the major mode now in effect) to run CMD. - - `M-x global-unset-key RET KEY' - Make KEY undefined in the global map. - - `M-x local-unset-key RET KEY' - Make KEY undefined locally (in the major mode now in effect). - - For example, suppose you like to execute commands in a subshell - within an Emacs buffer, instead of suspending Emacs and executing - commands in your login shell. Normally, `C-z' is bound to the function - `suspend-emacs', but you can change `C-z' to invoke an interactive - subshell within Emacs, by binding it to `shell' as follows: - - M-x global-set-key RET C-z shell RET - - `global-set-key' reads the command name after the key. After you - press the key, a message like this appears so that you can confirm that - you are binding the key you want: - - Set key C-z to command: - - You can redefine function keys and mouse events in the same way; just - type the function key or click the mouse when it's time to specify the - key to rebind. - - You can rebind a key that contains more than one event in the same - way. Emacs keeps reading the key to rebind until it is a complete key - (that is, not a prefix key). Thus, if you type `C-f' for KEY, that's - the end; the minibuffer is entered immediately to read CMD. But if you - type `C-x', another character is read; if that is `4', another - character is read, and so on. For example, - - M-x global-set-key RET C-x 4 $ spell-other-window RET - - would redefine `C-x 4 $' to run the (fictitious) command - `spell-other-window'. - - You can remove the global definition of a key with - `global-unset-key'. This makes the key "undefined"; if you type it, - Emacs will just beep. Similarly, `local-unset-key' makes a key - undefined in the current major mode keymap, which makes the global - definition (or lack of one) come back into effect in that major mode. - - If you have redefined (or undefined) a key and you subsequently wish - to retract the change, undefining the key will not do the job--you need - to redefine the key with its standard definition. To find the name of - the standard definition of a key, go to a Fundamental mode buffer and - use `C-h c'. The documentation of keys in this manual also lists their - command names. - - If you want to prevent yourself from invoking a command by mistake, - it is better to disable the command than to undefine the key. A - disabled command is less work to invoke when you really want to. *Note - Disabling::. - -  - File: emacs, Node: Init Rebinding, Next: Function Keys, Prev: Rebinding, Up: Key Bindings - - Rebinding Keys in Your Init File - -------------------------------- - - If you have a set of default definitions that you like to use all - the time, you can put commands in your `.emacs' file by using their - Lisp syntax. Thus, the first `global-set-key' command in this section - could be put in an `.emacs' file in either of the two following formats: - - (global-set-key "\C-z" 'shell) - - or as: - - (global-set-key [?\C-z] 'shell) - - When the key sequence consists of characters, like this one, you can - write it as a string or as a vector. The first format specifies the key - sequence as a string, `"\C-z"'. The second format uses a vector to - specify the key sequence. The square brackets (`[...]') delimit the - contents of the vector. The vector in this example contains just one - element, which is the integer code corresponding to `C-z'. The - question mark is the Lisp syntax for a character constant; the - character must follow with no intervening spaces. - - The single-quote before `shell' marks it as a constant symbol rather - than a variable. If you omit the quote, Emacs tries to evaluate - `shell' immediately as a variable. This probably causes an error; it - certainly isn't what you want. - - Here is another example that binds a key sequence two characters - long: - - (global-set-key "\C-xl" 'make-symbolic-link) - - or: - - (global-set-key [?\C-x ?l] 'make-symbolic-link) - -  - File: emacs, Node: Function Keys, Next: Mouse Buttons, Prev: Init Rebinding, Up: Key Bindings - - Rebinding Function Keys - ----------------------- - - Key sequences can contain function keys as well as ordinary - characters. Just as Lisp characters (actually integers) represent - keyboard characters, Lisp symbols represent function keys. If the - function key has a word as its label, then that word is also the name - of the corresponding Lisp symbol. Here are the Lisp names for other - function keys: - - `left', `up', `right', `down' - Cursor arrow keys. - - `begin', `end', `home', `next', `prior' - Other cursor repositioning keys. - - `select', `print', `execute', `backtab' - `insert', `undo', `redo', `clearline' - `insertline', `deleteline', `insertchar', `deletechar', - Miscellaneous function keys. - - `f1' ... `f35' - Numbered function keys (across the top of the keyboard). - - `kp-add', `kp-subtract', `kp-multiply', `kp-divide' - `kp-backtab', `kp-space', `kp-tab', `kp-enter' - `kp-separator', `kp-decimal', `kp-equal' - Keypad keys (to the right of the regular keyboard), with names or - punctuation. - - `kp-0', `kp-1', ... `kp-9' - Keypad keys with digits. - - `kp-f1', `kp-f2', `kp-f3', `kp-f4' - Keypad PF keys. - - A key sequence which contains non-characters must be a vector rather - than a string. To write a vector, write square brackets containing the - vector elements. Write spaces to separate the elements. If an element - is a symbol, simply write the symbol's name--no delimiters or - punctuation are needed. If an element is a character, write a Lisp - character constant, which is `?' followed by the character as it would - appear in a string. - - Thus, to bind function key `f1' to the command `rmail', write the - following: - - (global-set-key [f1] 'rmail) - - To bind the right-arrow key to the command `forward-char', you can - use this expression: - - (global-set-key [right] 'forward-char) - - using the Lisp syntax for a vector containing the symbol `right'. - (This binding is present in Emacs by default.) - - You can mix function keys and characters in a key sequence. This - example binds `C-x RIGHT' to the command `forward-page'. - - (global-set-key [?\C-x right] 'forward-page) - - where `?\C-x' is the Lisp character constant for the character `C-x'. - The vector element `right' is a symbol and therefore does not take a - question mark. - - You can use the modifier keys CTRL, META, HYPER, SUPER, ALT and - SHIFT with function keys. To represent these modifiers, prepend the - strings `C-', `M-', `H-', `s-', `A-' and `S-' to the symbol name. - Thus, here is how to make `Hyper-Meta-RIGHT' move forward a word: - - (global-set-key [H-M-right] 'forward-word) - -  - File: emacs, Node: Mouse Buttons, Next: Disabling, Prev: Function Keys, Up: Key Bindings - - Rebinding Mouse Buttons - ----------------------- - - Emacs uses Lisp symbols to designate mouse buttons, too. The - ordinary mouse events in Emacs are "click" events; these happen when you - press a button and release it without moving the mouse. You can also - get "drag" events, when you move the mouse while holding the button - down. Drag events happen when you finally let go of the button. - - The symbols for basic click events are `mouse-1' for the leftmost - button, `mouse-2' for the next, and so on. Here is how you can - redefine the second mouse button to split the current window: - - (global-set-key [mouse-2] 'split-window-vertically) - - The symbols for drag events are similar, but have the prefix `drag-' - before the word `mouse'. For example, dragging the left button - generates a `drag-mouse-1' event. - - You can also request events when the mouse button is pressed down. - These events start with `down-' instead of `drag-'. Such events are - generated only if they have key bindings. When you get a button-down - event, a corresponding click or drag event will always follow. - - The symbols for mouse events also indicate the status of the modifier - keys, with the usual prefixes `C-', `M-', `H-', `s-', `A-' and `S-'. - These always follow `drag-' or `down-'. - - A frame includes areas that don't show text from the buffer, such as - the mode line and the scroll bar. You can tell whether a mouse button - comes from a special area of the screen by means of dummy "prefix - keys." For example, if you click the mouse in the mode line, you get - the prefix key `mode-line' before the ordinary mouse-button symbol. - Thus, here is how to define the command for clicking the left button in - a mode line to run `scroll-up': - - (global-set-key [mode-line mouse-1] 'scroll-up) - - Here is the complete list of these dummy prefix keys and their - meanings: - - `mode-line' - The mouse was in the mode line of a window. - - `vertical-line' - The mouse was in the vertical line separating side-by-side windows. - - `vertical-scroll-bar' - The mouse was in a horizontal scroll bar. This is the kind of - scroll bar people normally use. - - `horizontal-scroll-bar' - The mouse was in a horizontal scroll bar. Horizontal scroll bars - do horizontal scrolling, and people don't use them often. - - You can put more than one mouse button in a key sequence, but it - isn't usual to do so. --- 1079,1082 ---- diff -cprP --exclude=*.elc emacs-19.13/info/emacs-16 emacs-19.14/info/emacs-16 *** emacs-19.13/info/emacs-16 Tue Jun 8 07:24:31 1993 --- emacs-19.14/info/emacs-16 Thu Jun 17 19:44:46 1993 *************** *** 1,7 **** ! This is Info file ../info/emacs, produced by Makeinfo-1.54 from the input file emacs.texi.  File: emacs, Node: Disabling, Prev: Mouse Buttons, Up: Key Bindings Disabling Commands --- 1,732 ---- ! This is Info file ../info/emacs, produced by Makeinfo-1.55 from the input file emacs.texi.  + File: emacs, Node: File Variables, Prev: Locals, Up: Variables + + Local Variables in Files + ------------------------ + + A file can specify local variable values for use when you edit the + file with Emacs. Visiting the file checks for local variables + specifications; it automatically makes these variables local to the + buffer, and sets them to the values specified in the file. + + There are two ways to specify local variable values: in the first + line, or with a local variables list. Here's how to do this with the + first line: + + -*- mode: MODENAME; VAR: VALUE; ... -*- + + You can specify any number of variables/value pairs in this way, each + pair with a colon and semicolon as shown above. The major mode should + come first, if it is mentioned at all. Here is an example that + specifies Lisp mode and sets two variables with numeric values: + + ;; -*-Mode: Lisp; fill-column: 75; comment-column: 50; -*- + + A "local variables list" goes near the end of the file, in the last + page. (It is often best to put it on a page by itself.) The local + variables list starts with a line containing the string `Local + Variables:', and ends with a line containing the string `End:'. In + between come the variable names and values, one set per line, as + `VARIABLE: VALUE'. The VALUEs are not evaluated; they are used + literally. + + Here is an example of a local variables list: + + ;;; Local Variables: *** + ;;; mode:lisp *** + ;;; comment-column:0 *** + ;;; comment-start: ";;; " *** + ;;; comment-end:"***" *** + ;;; End: *** + + As you see, each line starts with the prefix `;;; ' and each line + ends with the suffix ` ***'. Emacs recognizes these as the prefix and + suffix based on the first line of the list, by finding them surrounding + the magic string `Local Variables:'; so it automatically discards them + from the other lines of the list. + + The usual reason for using a prefix and/or suffix is to embed the + local variables list in a comment, so it won't confuse other programs + that the file is intended as input for. The example above is for a + language where comment lines start with `;;; ' and end with `***'; the + local values for `comment-start' and `comment-end' customize the rest + of Emacs for this unusual syntax. Don't use a prefix (or a suffix) if + you don't need one. + + Two "variable names" have special meanings in a local variables + list: a value for the variable `mode' really sets the major mode, and a + value for the variable `eval' is simply evaluated as an expression and + the value is ignored. `mode' and `eval' are not real variables; + setting such variables in any other context has no such effect. If + `mode' is used in a local variables list, it should be the first entry + in the list. + + The start of the local variables list must be no more than 3000 + characters from the end of the file, and must be in the last page if the + file is divided into pages. Otherwise, Emacs will not notice it is + there. The purpose of this is so that a stray `Local Variables:' not + in the last page does not confuse Emacs, and so that visiting a long + file that is all one page and has no local variables list need not take + the time to search the whole file. + + You may be tempted to try to turn on Auto Fill mode with a local + variable list. That is a mistake. The choice of Auto Fill mode or not + is a matter of individual taste, not a matter of the contents of + particular files. If you want to use Auto Fill, set up major mode + hooks with your `.emacs' file to turn it on (when appropriate) for you + alone (*note Init File::.). Don't try to use a local variable list + that would impose your taste on everyone. + + The variable `enable-local-variables' controls whether to process + local variables lists, and thus gives you a chance to override them. + Its default value is `t', which means to process local variables lists. + If you set the value to `nil', Emacs simply ignores local variables + lists. Any other value says to query you about each local variables + list, showing you the local variables list to consider. + + The `eval' "variable" creates special risks, so there is a separate + variable `enable-local-eval' to control whether Emacs processes `eval' + variables. The three possibilities for the value are `t', `nil', and + anything else, just as for `enable-local-variables'. The default is + `maybe', which is neither `t' nor `nil', so normally Emacs queries about + `eval' variable settings. + + Use the command `normal-mode' to reset the local variables and major + mode of a buffer according to the file name and contents, including the + local variables list if any. *Note Choosing Modes::. + +  + File: emacs, Node: Keyboard Macros, Next: Key Bindings, Prev: Variables, Up: Customization + + Keyboard Macros + =============== + + A "keyboard macro" is a command defined by the user to abbreviate a + sequence of keys. For example, if you discover that you are about to + type `C-n C-d' forty times, you can speed your work by defining a + keyboard macro to do `C-n C-d' and calling it with a repeat count of + forty. + + `C-x (' + Start defining a keyboard macro (`start-kbd-macro'). + + `C-x )' + End the definition of a keyboard macro (`end-kbd-macro'). + + `C-x e' + Execute the most recent keyboard macro (`call-last-kbd-macro'). + + `C-u C-x (' + Re-execute last keyboard macro, then add more keys to its + definition. + + `C-x q' + When this point is reached during macro execution, ask for + confirmation (`kbd-macro-query'). + + `M-x name-last-kbd-macro' + Give a command name (for the duration of the session) to the most + recently defined keyboard macro. + + `M-x insert-kbd-macro' + Insert in the buffer a keyboard macro's definition, as Lisp code. + + Keyboard macros differ from ordinary Emacs commands in that they are + written in the Emacs command language rather than in Lisp. This makes + it easier for the novice to write them, and makes them more convenient + as temporary hacks. However, the Emacs command language is not powerful + enough as a programming language to be useful for writing anything + intelligent or general. For such things, Lisp must be used. + + You define a keyboard macro while executing the commands which are + the definition. Put differently, as you define a keyboard macro, the + definition is being executed for the first time. This way, you can see + what the effects of your commands are, so that you don't have to figure + them out in your head. When you are finished, the keyboard macro is + defined and also has been, in effect, executed once. You can then do + the whole thing over again by invoking the macro. + + * Menu: + + * Basic Kbd Macro:: Defining and running keyboard macros. + * Save Kbd Macro:: Giving keyboard macros names; saving them in files. + * Kbd Macro Query:: Keyboard macros that do different things each use. + +  + File: emacs, Node: Basic Kbd Macro, Next: Save Kbd Macro, Up: Keyboard Macros + + Basic Use + --------- + + To start defining a keyboard macro, type the `C-x (' command + (`start-kbd-macro'). From then on, your keys continue to be executed, + but also become part of the definition of the macro. `Def' appears in + the mode line to remind you of what is going on. When you are + finished, the `C-x )' command (`end-kbd-macro') terminates the + definition (without becoming part of it!). For example + + C-x ( M-f foo C-x ) + + defines a macro to move forward a word and then insert `foo'. + + The macro thus defined can be invoked again with the `C-x e' command + (`call-last-kbd-macro'), which may be given a repeat count as a numeric + argument to execute the macro many times. `C-x )' can also be given a + repeat count as an argument, in which case it repeats the macro that + many times right after defining it, but defining the macro counts as + the first repetition (since it is executed as you define it). So, + giving `C-x )' an argument of 4 executes the macro immediately 3 + additional times. An argument of zero to `C-x e' or `C-x )' means + repeat the macro indefinitely (until it gets an error or you type + `C-g'). + + If you wish to repeat an operation at regularly spaced places in the + text, define a macro and include as part of the macro the commands to + move to the next place you want to use it. For example, if you want to + change each line, you should position point at the start of a line, and + define a macro to change that line and leave point at the start of the + next line. Then repeating the macro will operate on successive lines. + + After you have terminated the definition of a keyboard macro, you + can add to the end of its definition by typing `C-u C-x ('. This is + equivalent to plain `C-x (' followed by retyping the whole definition + so far. As a consequence it re-executes the macro as previously + defined. + + You can use function keys in a keyboard macro, just like keyboard + keys. You can even use mouse events, but be careful about that: when + the macro replays the mouse event, it uses the original mouse position + of that event, the position that the mouse had while you were defining + the macro. The effect of this may be hard to predict. (Using the + current mouse position would be even less predictable.) + + One thing that doesn't always work well in a keyboard macro is the + command `C-M-c' (`exit-recursive-edit'). When this command exits a + recursive edit that started within the macro, it works as you'd expect. + But if it exits a recursive edit that started before you invoked the + keyboard macro, it also necessarily exits the keyboard macro as part of + the process. + +  + File: emacs, Node: Save Kbd Macro, Next: Kbd Macro Query, Prev: Basic Kbd Macro, Up: Keyboard Macros + + Naming and Saving Keyboard Macros + --------------------------------- + + If you wish to save a keyboard macro for longer than until you + define the next one, you must give it a name using `M-x + name-last-kbd-macro'. This reads a name as an argument using the + minibuffer and defines that name to execute the macro. The macro name + is a Lisp symbol, and defining it in this way makes it a valid command + name for calling with `M-x' or for binding a key to with + `global-set-key' (*note Keymaps::.). If you specify a name that has a + prior definition other than another keyboard macro, an error message is + printed and nothing is changed. + + Once a macro has a command name, you can save its definition in a + file. Then it can be used in another editing session. First, visit + the file you want to save the definition in. Then use this command: + + M-x insert-kbd-macro RET MACRONAME RET + + This inserts some Lisp code that, when executed later, will define the + same macro with the same definition it has now. (You need not + understand Lisp code to do this, because `insert-kbd-macro' writes the + Lisp code for you.) Then save the file. You can load the file later + with `load-file' (*note Lisp Libraries::.). If the file you save in is + your init file `~/.emacs' (*note Init File::.) then the macro will be + defined each time you run Emacs. + + If you give `insert-kbd-macro' a prefix argument, it makes + additional Lisp code to record the keys (if any) that you have bound to + the keyboard macro, so that the macro will be reassigned the same keys + when you load the file. + +  + File: emacs, Node: Kbd Macro Query, Prev: Save Kbd Macro, Up: Keyboard Macros + + Executing Macros with Variations + -------------------------------- + + Using `C-x q' (`kbd-macro-query'), you can get an effect similar to + that of `query-replace', where the macro asks you each time around + whether to make a change. When you are defining the macro, type `C-x + q' at the point where you want the query to occur. During macro + definition, the `C-x q' does nothing, but when you run the macro later, + `C-x q' asks you interactively whether to continue. + + The valid responses when `C-x q' asks are SPC (or `y'), DEL (or + `n'), ESC (or `q'), `C-l' and `C-r'. The answers are the same as in + query replace, though not all of the query-replace options are + meaningful. + + Specifically, SPC means to continue. DEL means to skip the + remainder of this repetition of the macro and start right away with the + next repetition. ESC means to skip the remainder of this repetition + and cancel further repetition. `C-l' redraws the screen and asks you + again for a character to say what to do. + + `C-r' enters a recursive editing level, in which you can perform + editing which is not part of the macro. When you exit the recursive + edit using `C-M-c', you are asked again how to continue with the + keyboard macro. If you type a SPC at this time, the rest of the macro + definition is executed. It is up to you to leave point and the text in + a state such that the rest of the macro will do what you want. + + `C-u C-x q', which is `C-x q' with a numeric argument, performs a + different function. It enters a recursive edit reading input from the + keyboard, both when you type it during the definition of the macro, and + when it is executed from the macro. During definition, the editing you + do inside the recursive edit does not become part of the macro. During + macro execution, the recursive edit gives you a chance to do some + particularized editing. *Note Recursive Edit::. + +  + File: emacs, Node: Key Bindings, Next: Keyboard Translations, Prev: Keyboard Macros, Up: Customization + + Customizing Key Bindings + ======================== + + This section describes "key bindings" which map keys to commands, + and the "keymaps" which record key bindings. It also explains how to + customize key bindings. + + Recall that a command is a Lisp function whose definition provides + for interactive use. Like every Lisp function, a command has a function + name which usually consists of lower case letters and hyphens. + + * Menu: + + * Keymaps:: Generalities. The global keymap. + * Prefix Keymaps:: Keymaps for prefix keys. + * Local Keymaps:: Major and minor modes have their own keymaps. + * Minibuffer Maps:: The minibuffer uses its own local keymaps. + * Rebinding:: How to redefine one key's meaning conveniently. + * Init Rebinding:: Rebinding keys with your init file, `.emacs'. + * Function Keys:: Rebinding terminal function keys. + * Mouse Buttons:: Rebinding mouse buttons in Emacs. + * Disabling:: Disabling a command means confirmation is required + before it can be executed. This is done to protect + beginners from surprises. + +  + File: emacs, Node: Keymaps, Next: Prefix Keymaps, Up: Key Bindings + + Keymaps + ------- + + The bindings between key sequences and command functions are recorded + in data structures called "keymaps". Emacs has many of these, each + used on particular occasions. + + Recall that a "key sequence" ("key", for short) is a sequence of + "input events" that have a meaning as a unit. Input events include + characters, function keys and mouse buttons--all the inputs that you + can send to the computer with your terminal. A key sequence gets its + meaning from its "binding", which says what command it runs. The + function of keymaps is to record these bindings. + + The "global" keymap is the most important keymap because it is + always in effect. The global keymap defines keys for Fundamental mode; + most of these definitions are common to all (or most) major modes. Each + major or minor mode can have its own keymap which overrides the + definitions of some keys. + + For example, a self-inserting character such as `g' is + self-inserting because the global keymap binds it to the command + `self-insert-command'. The standard Emacs editing characters such as + `C-a' also get their standard meanings from the global keymap. + Commands to rebind keys, such as `M-x global-set-key', actually work by + storing the new binding in the proper place in the global map. *Note + Rebinding::. + + Meta characters work differently; Emacs translates each Meta + character into a pair of characters starting with ESC. When you type + the character `M-a' in a key sequence, Emacs replaces it with `ESC a'. + A meta key comes in as a single input event, but becomes two events for + purposes of key bindings. The reason for this is historical, and we + might change in someday. + + Most modern keyboards have function keys as well as character keys. + Function keys send input events just as character keys do, and keymaps + can have bindings for them. + + On many terminals, typing a function key actually sends the computer + a sequence of characters; the precise details of the sequence depends on + which function key and on the model of terminal you are using. (Often + he sequence starts with `ESC ['.) If Emacs understands your terminal + type properly, it recognizes the character sequences forming function + keys wherever they occur in a key sequence (not just at the beginning). + Thus, for most purposes, you can pretend the function keys reach Emacs + directly and ignore their encoding as character sequences. + + Mouse buttons also produce input events. These events come with + other data--the window and position where you pressed or released the + button, and a timestamp. But only the choice of button matters for key + bindings; the other data matters only if a command looks at it. + (Commands designed for mouse invocation usually do look at the other + data.) + + A keymap records definitions for single events. Interpreting a key + sequence of multiple events involves a chain of keymaps. The first + keymap gives a definition for the first event; this definition is + another keymap, which is used to look up the second event in the + sequence, and so on. + + Key sequences can mix function keys and characters. For example, + `C-x SELECT' makes sense. If you make SELECT a prefix key, then + `SELECT C-n' makes sense. You can even mix mouse events with keyboard + events, but we recommend against it, because such sequences are + inconvenient to type in. + +  + File: emacs, Node: Prefix Keymaps, Next: Local Keymaps, Prev: Keymaps, Up: Key Bindings + + Prefix Keymaps + -------------- + + A prefix key such as `C-x' or ESC has its own keymap, which holds + the definition for the event that immediately follows that prefix. + + The definition of a prefix key is the keymap to use for looking up + the following event. The definition can also be a Lisp symbol whose + function definition is the following keymap; the effect is the same, but + it provides a command name for the prefix key that can be used as a + description of what the prefix key is for. Thus, the binding of `C-x' + is the symbol `Ctl-X-Prefix', whose function definition is the keymap + for `C-x' commands. The definitions of `C-c', `C-x', `C-h' and ESC as + prefix keys appear in the global map, so these prefix keys are always + available. + + Some prefix keymaps are stored in variables with names: + + * `ctl-x-map' is the variable name for the map used for characters + that follow `C-x'. + + * `help-map' is for characters that follow `C-h'. + + * `esc-map' is for characters that follow ESC. Thus, all Meta + characters are actually defined by this map. + + * `ctl-x-4-map' is for characters that follow `C-x 4'. + + * `mode-specific-map' is for characters that follow `C-c'. + +  + File: emacs, Node: Local Keymaps, Next: Minibuffer Maps, Prev: Prefix Keymaps, Up: Key Bindings + + Local Keymaps + ------------- + + So far we have explained the ins and outs of the global map. Major + modes customize Emacs by providing their own key bindings in "local + keymaps". For example, C mode overrides TAB to make it indent the + current line for C code. Portions of text in the buffer can specify + their own keymaps to substitute for the keymap of the buffer's major + mode. + + Minor modes can also have local keymaps. Whenever a minor mode is + in effect, the definitions in its keymap override both the major mode's + local keymap and the global keymap. + + The local keymaps for Lisp mode, C mode, and several other major + modes always exist even when not in use. These are kept in variables + named `lisp-mode-map', `c-mode-map', and so on. For major modes less + often used, the local keymap is normally constructed only when the mode + is used for the first time in a session. This is to save space. + + All minor mode keymaps are created in advance. There is no way to + defer their creation until the minor mode is enabled. + + A local keymap can locally redefine a key as a prefix key by defining + it as a prefix keymap. If the key is also defined globally as a prefix, + then its local and global definitions (both keymaps) effectively + combine: both of them are used to look up the event that follows the + prefix key. Thus, if the mode's local keymap defines `C-c' as another + keymap, and that keymap defines `C-z' as a command, this provides a + local meaning for `C-c C-z'. This does not affect other sequences that + start with `C-c'; If those sequences don't have their own local + bindings, their global bindings remain in effect. + + Another way to think of this is that Emacs handles a multi-event key + sequence by looking in several keymaps, one by one, for a binding of the + whole key sequence. First it checks the minor mode keymaps for minor + modes that are enabled, then it checks the major mode's keymap, and then + it checks the global keymap. This is not precisely how key lookup + works, but it's good enough for understanding ordinary circumstances. + +  + File: emacs, Node: Minibuffer Maps, Next: Rebinding, Prev: Local Keymaps, Up: Key Bindings + + Minibuffer Keymaps + ------------------ + + The minibuffer has its own set of local keymaps; they contain various + completion and exit commands. + + * `minibuffer-local-map' is used for ordinary input (no completion). + + * `minibuffer-local-ns-map' is similar, except that SPC exits just + like RET. This is used mainly for Mocklisp compatibility. + + * `minibuffer-local-completion-map' is for permissive completion. + + * `minibuffer-local-must-match-map' is for strict completion and for + cautious completion. + +  + File: emacs, Node: Rebinding, Next: Init Rebinding, Prev: Minibuffer Maps, Up: Key Bindings + + Changing Key Bindings Interactively + ----------------------------------- + + The way to redefine an Emacs key is to change its entry in a keymap. + You can change the global keymap, in which case the change is effective + in all major modes (except those that have their own overriding local + definitions for the same key). Or you can change the current buffer's + local map, which affects all buffers using the same major mode. + + `M-x global-set-key RET KEY CMD RET' + Define KEY globally to run CMD. + + `M-x local-set-key RET KEY CMD RET' + Define KEY locally (in the major mode now in effect) to run CMD. + + `M-x global-unset-key RET KEY' + Make KEY undefined in the global map. + + `M-x local-unset-key RET KEY' + Make KEY undefined locally (in the major mode now in effect). + + For example, suppose you like to execute commands in a subshell + within an Emacs buffer, instead of suspending Emacs and executing + commands in your login shell. Normally, `C-z' is bound to the function + `suspend-emacs', but you can change `C-z' to invoke an interactive + subshell within Emacs, by binding it to `shell' as follows: + + M-x global-set-key RET C-z shell RET + + `global-set-key' reads the command name after the key. After you + press the key, a message like this appears so that you can confirm that + you are binding the key you want: + + Set key C-z to command: + + You can redefine function keys and mouse events in the same way; just + type the function key or click the mouse when it's time to specify the + key to rebind. + + You can rebind a key that contains more than one event in the same + way. Emacs keeps reading the key to rebind until it is a complete key + (that is, not a prefix key). Thus, if you type `C-f' for KEY, that's + the end; the minibuffer is entered immediately to read CMD. But if you + type `C-x', another character is read; if that is `4', another + character is read, and so on. For example, + + M-x global-set-key RET C-x 4 $ spell-other-window RET + + would redefine `C-x 4 $' to run the (fictitious) command + `spell-other-window'. + + You can remove the global definition of a key with + `global-unset-key'. This makes the key "undefined"; if you type it, + Emacs will just beep. Similarly, `local-unset-key' makes a key + undefined in the current major mode keymap, which makes the global + definition (or lack of one) come back into effect in that major mode. + + If you have redefined (or undefined) a key and you subsequently wish + to retract the change, undefining the key will not do the job--you need + to redefine the key with its standard definition. To find the name of + the standard definition of a key, go to a Fundamental mode buffer and + use `C-h c'. The documentation of keys in this manual also lists their + command names. + + If you want to prevent yourself from invoking a command by mistake, + it is better to disable the command than to undefine the key. A + disabled command is less work to invoke when you really want to. *Note + Disabling::. + +  + File: emacs, Node: Init Rebinding, Next: Function Keys, Prev: Rebinding, Up: Key Bindings + + Rebinding Keys in Your Init File + -------------------------------- + + If you have a set of default definitions that you like to use all + the time, you can put commands in your `.emacs' file by using their + Lisp syntax. Thus, the first `global-set-key' command in this section + could be put in an `.emacs' file in either of the two following formats: + + (global-set-key "\C-z" 'shell) + + or as: + + (global-set-key [?\C-z] 'shell) + + When the key sequence consists of characters, like this one, you can + write it as a string or as a vector. The first format specifies the key + sequence as a string, `"\C-z"'. The second format uses a vector to + specify the key sequence. The square brackets (`[...]') delimit the + contents of the vector. The vector in this example contains just one + element, which is the integer code corresponding to `C-z'. The + question mark is the Lisp syntax for a character constant; the + character must follow with no intervening spaces. + + The single-quote before `shell' marks it as a constant symbol rather + than a variable. If you omit the quote, Emacs tries to evaluate + `shell' immediately as a variable. This probably causes an error; it + certainly isn't what you want. + + Here is another example that binds a key sequence two characters + long: + + (global-set-key "\C-xl" 'make-symbolic-link) + + or: + + (global-set-key [?\C-x ?l] 'make-symbolic-link) + +  + File: emacs, Node: Function Keys, Next: Mouse Buttons, Prev: Init Rebinding, Up: Key Bindings + + Rebinding Function Keys + ----------------------- + + Key sequences can contain function keys as well as ordinary + characters. Just as Lisp characters (actually integers) represent + keyboard characters, Lisp symbols represent function keys. If the + function key has a word as its label, then that word is also the name + of the corresponding Lisp symbol. Here are the Lisp names for other + function keys: + + `left', `up', `right', `down' + Cursor arrow keys. + + `begin', `end', `home', `next', `prior' + Other cursor repositioning keys. + + `select', `print', `execute', `backtab' + `insert', `undo', `redo', `clearline' + `insertline', `deleteline', `insertchar', `deletechar', + Miscellaneous function keys. + + `f1' ... `f35' + Numbered function keys (across the top of the keyboard). + + `kp-add', `kp-subtract', `kp-multiply', `kp-divide' + `kp-backtab', `kp-space', `kp-tab', `kp-enter' + `kp-separator', `kp-decimal', `kp-equal' + Keypad keys (to the right of the regular keyboard), with names or + punctuation. + + `kp-0', `kp-1', ... `kp-9' + Keypad keys with digits. + + `kp-f1', `kp-f2', `kp-f3', `kp-f4' + Keypad PF keys. + + A key sequence which contains non-characters must be a vector rather + than a string. To write a vector, write square brackets containing the + vector elements. Write spaces to separate the elements. If an element + is a symbol, simply write the symbol's name--no delimiters or + punctuation are needed. If an element is a character, write a Lisp + character constant, which is `?' followed by the character as it would + appear in a string. + + Thus, to bind function key `f1' to the command `rmail', write the + following: + + (global-set-key [f1] 'rmail) + + To bind the right-arrow key to the command `forward-char', you can + use this expression: + + (global-set-key [right] 'forward-char) + + using the Lisp syntax for a vector containing the symbol `right'. + (This binding is present in Emacs by default.) + + You can mix function keys and characters in a key sequence. This + example binds `C-x RIGHT' to the command `forward-page'. + + (global-set-key [?\C-x right] 'forward-page) + + where `?\C-x' is the Lisp character constant for the character `C-x'. + The vector element `right' is a symbol and therefore does not take a + question mark. + + You can use the modifier keys CTRL, META, HYPER, SUPER, ALT and + SHIFT with function keys. To represent these modifiers, prepend the + strings `C-', `M-', `H-', `s-', `A-' and `S-' to the symbol name. + Thus, here is how to make `Hyper-Meta-RIGHT' move forward a word: + + (global-set-key [H-M-right] 'forward-word) + +  + File: emacs, Node: Mouse Buttons, Next: Disabling, Prev: Function Keys, Up: Key Bindings + + Rebinding Mouse Buttons + ----------------------- + + Emacs uses Lisp symbols to designate mouse buttons, too. The + ordinary mouse events in Emacs are "click" events; these happen when you + press a button and release it without moving the mouse. You can also + get "drag" events, when you move the mouse while holding the button + down. Drag events happen when you finally let go of the button. + + The symbols for basic click events are `mouse-1' for the leftmost + button, `mouse-2' for the next, and so on. Here is how you can + redefine the second mouse button to split the current window: + + (global-set-key [mouse-2] 'split-window-vertically) + + The symbols for drag events are similar, but have the prefix `drag-' + before the word `mouse'. For example, dragging the left button + generates a `drag-mouse-1' event. + + You can also request events when the mouse button is pressed down. + These events start with `down-' instead of `drag-'. Such events are + generated only if they have key bindings. When you get a button-down + event, a corresponding click or drag event will always follow. + + The symbols for mouse events also indicate the status of the modifier + keys, with the usual prefixes `C-', `M-', `H-', `s-', `A-' and `S-'. + These always follow `drag-' or `down-'. + + A frame includes areas that don't show text from the buffer, such as + the mode line and the scroll bar. You can tell whether a mouse button + comes from a special area of the screen by means of dummy "prefix + keys." For example, if you click the mouse in the mode line, you get + the prefix key `mode-line' before the ordinary mouse-button symbol. + Thus, here is how to define the command for clicking the left button in + a mode line to run `scroll-up': + + (global-set-key [mode-line mouse-1] 'scroll-up) + + Here is the complete list of these dummy prefix keys and their + meanings: + + `mode-line' + The mouse was in the mode line of a window. + + `vertical-line' + The mouse was in the vertical line separating side-by-side windows. + + `vertical-scroll-bar' + The mouse was in a horizontal scroll bar. This is the kind of + scroll bar people normally use. + + `horizontal-scroll-bar' + The mouse was in a horizontal scroll bar. Horizontal scroll bars + do horizontal scrolling, and people don't use them often. + + You can put more than one mouse button in a key sequence, but it + isn't usual to do so. + +  File: emacs, Node: Disabling, Prev: Mouse Buttons, Up: Key Bindings Disabling Commands *************** init file, and which one (*note Entering *** 118,126 **** `default.el', found via the standard search path for libraries. The Emacs distribution contains no such library; your site may create one for local customizations. If this library exists, it is loaded ! whenever you start Emacs. But your init file, if any, is loaded first; ! if it sets `inhibit-default-init' non-`nil', then `default' is not ! loaded. If you have a large amount of code in your `.emacs' file, you should move it into another file such as `~/SOMETHING.el', byte-compile it, --- 843,851 ---- `default.el', found via the standard search path for libraries. The Emacs distribution contains no such library; your site may create one for local customizations. If this library exists, it is loaded ! whenever you start Emacs (except when you specify `-q'). But your init ! file, if any, is loaded first; if it sets `inhibit-default-init' ! non-`nil', then `default' is not loaded. If you have a large amount of code in your `.emacs' file, you should move it into another file such as `~/SOMETHING.el', byte-compile it, *************** only because of its binding in the keyma *** 434,1156 **** `C-x u' (`undo') is not strictly speaking a way of cancelling a command, but you can think of it as cancelling a command already finished executing. *Note Undo::. - -  - File: emacs, Node: Lossage, Next: Bugs, Prev: Quitting, Up: Top - - Dealing with Emacs Trouble - ========================== - - This section describes various conditions in which Emacs fails to - work normally, and how to recognize them and correct them. - - * Menu: - - * DEL Gets Help:: What to do if DEL doesn't delete - * Stuck Recursive:: `[...]' in mode line around the parentheses - * Screen Garbled:: Garbage on the screen - * Text Garbled:: Garbage in the text - * Unasked-for Search:: Spontaneous entry to incremental search - * Emergency Escape:: Emergency escape-- - What to do if Emacs stops responding - * Total Frustration:: When you are at your wits' end. - -  - File: emacs, Node: DEL Gets Help, Next: Stuck Recursive, Up: Lossage - - If DEL Fails to Delete - ---------------------- - - If you find that DEL enters Help like `Control-h' instead of - deleting a character, your terminal is sending the wrong code for DEL. - You can work around this problem by changing the keyboard translation - table (*note Keyboard Translations::.). - -  - File: emacs, Node: Stuck Recursive, Next: Screen Garbled, Prev: DEL Gets Help, Up: Lossage - - Recursive Editing Levels - ------------------------ - - Recursive editing levels are important and useful features of Emacs, - but they can seem like malfunctions to the user who does not understand - them. - - If the mode line has square brackets `[...]' around the parentheses - that contain the names of the major and minor modes, you have entered a - recursive editing level. If you did not do this on purpose, or if you - don't understand what that means, you should just get out of the - recursive editing level. To do so, type `M-x top-level'. This is - called getting back to top level. *Note Recursive Edit::. - -  - File: emacs, Node: Screen Garbled, Next: Text Garbled, Prev: Stuck Recursive, Up: Lossage - - Garbage on the Screen - --------------------- - - If the data on the screen looks wrong, the first thing to do is see - whether the text is really wrong. Type `C-l', to redisplay the entire - screen. If the screen appears correct after this, the problem was - entirely in the previous screen update. - - Display updating problems often result from an incorrect termcap - entry for the terminal you are using. The file `etc/TERMS' in the Emacs - distribution gives the fixes for known problems of this sort. - `INSTALL' contains general advice for these problems in one of its - sections. Very likely there is simply insufficient padding for certain - display operations. To investigate the possibility that you have this - sort of problem, try Emacs on another terminal made by a different - manufacturer. If problems happen frequently on one kind of terminal - but not another kind, it is likely to be a bad termcap entry, though it - could also be due to a bug in Emacs that appears for terminals that - have or that lack specific features. - -  - File: emacs, Node: Text Garbled, Next: Unasked-for Search, Prev: Screen Garbled, Up: Lossage - - Garbage in the Text - ------------------- - - If `C-l' shows that the text is wrong, try undoing the changes to it - using `C-x u' until it gets back to a state you consider correct. Also - try `C-h l' to find out what command you typed to produce the observed - results. - - If a large portion of text appears to be missing at the beginning or - end of the buffer, check for the word `Narrow' in the mode line. If it - appears, the text is still present, but temporarily off-limits. To - make it accessible again, type `C-x w'. *Note Narrowing::. - -  - File: emacs, Node: Unasked-for Search, Next: Emergency Escape, Prev: Text Garbled, Up: Lossage - - Spontaneous Entry to Incremental Search - --------------------------------------- - - If Emacs spontaneously displays `I-search:' at the bottom of the - screen, it means that the terminal is sending `C-s' and `C-q' according - to the poorly designed xon/xoff "flow control" protocol. - - If this happens to you, your best recourse is to put the terminal in - a mode where it will not use flow control, or give it so much padding - that it will never send a `C-s'. (One way to increase the amount of - padding is to set the variable `baud-rate' to a larger value. Its - value is the terminal output speed, measured in the conventional units - of baud.) - - If you don't succeed in turning off flow control, the next best thing - is to tell Emacs to cope with it. To do this, call the function - `enable-flow-control'. - - Typically there are particular terminal types with which you must use - flow control. You can conveniently ask for flow control on those - terminal types only, using `enable-flow-control-on'. For example, if - you find you must use flow control on VT-100 and H19 terminals, put the - following in your `.emacs' file: - - (enable-flow-control-on "vt100" "h19") - - When flow control is enabled, you must type `C-\' to get the effect - of a `C-s', and type `C-^' to get the effect of a `C-q'. (These - aliases work by means of keyboard translations; see *Note Keyboard - Translations::.) - -  - File: emacs, Node: Emergency Escape, Next: Total Frustration, Prev: Unasked-for Search, Up: Lossage - - Emergency Escape - ---------------- - - Because at times there have been bugs causing Emacs to loop without - checking `quit-flag', a special feature causes Emacs to be suspended - immediately if you type a second `C-g' while the flag is already set, - so you can always get out of GNU Emacs. Normally Emacs recognizes and - clears `quit-flag' (and quits!) quickly enough to prevent this from - happening. - - When you resume Emacs after a suspension caused by multiple `C-g', it - asks two questions before going back to what it had been doing: - - Auto-save? (y or n) - Abort (and dump core)? (y or n) - - Answer each one with `y' or `n' followed by RET. - - Saying `y' to `Auto-save?' causes immediate auto-saving of all - modified buffers in which auto-saving is enabled. - - Saying `y' to `Abort (and dump core)?' causes an illegal instruction - to be executed, dumping core. This is to enable a wizard to figure out - why Emacs was failing to quit in the first place. Execution does not - continue after a core dump. If you answer `n', execution does - continue. With luck, GNU Emacs will ultimately check `quit-flag' and - quit normally. If not, and you type another `C-g', it is suspended - again. - - If Emacs is not really hung, just slow, you may invoke the double - `C-g' feature without really meaning to. Then just resume and answer - `n' to both questions, and you will arrive at your former state. - Presumably the quit you requested will happen soon. - - The double-`C-g' feature is turned off when Emacs is running under - the X Window System, since the you can use the window manager to kill - Emacs or to create another window and run another program. - -  - File: emacs, Node: Total Frustration, Prev: Emergency Escape, Up: Lossage - - Help for Total Frustration - -------------------------- - - If using Emacs (or something else) becomes terribly frustrating and - none of the techniques described above solve the problem, Emacs can - still help you. - - First, if the Emacs you are using is not responding to commands, type - `C-g C-g' to get out of it and then start a new one. - - Second, type `M-x doctor RET'. - - The doctor will help you feel better. Each time you say something to - the doctor, you must end it by typing RET RET. This lets the doctor - know you are finished. - -  - File: emacs, Node: Bugs, Next: Service, Prev: Lossage, Up: Top - - Reporting Bugs - ============== - - Sometimes you will encounter a bug in Emacs. Although we cannot - promise we can or will fix the bug, and we might not even agree that it - is a bug, we want to hear about bugs you encounter in case we do want - to fix them. - - To make it possible for us to fix a bug, you must report it. In - order to do so effectively, you must know when and how to do it. - - * Menu: - - * Criteria: Bug Criteria. Have you really found a bug? - * Understanding Bug Reporting:: How to report a bug effectively. - * Checklist:: Steps to follow for a good bug report. - * Sending Patches:: How to send a patch for GNU Emacs. - -  - File: emacs, Node: Bug Criteria, Next: Understanding Bug Reporting, Up: Bugs - - When Is There a Bug - ------------------- - - If Emacs executes an illegal instruction, or dies with an operating - system error message that indicates a problem in the program (as - opposed to something like "disk full"), then it is certainly a bug. - - If Emacs updates the display in a way that does not correspond to - what is in the buffer, then it is certainly a bug. If a command seems - to do the wrong thing but the problem corrects itself if you type - `C-l', it is a case of incorrect display updating. - - Taking forever to complete a command can be a bug, but you must make - certain that it was really Emacs's fault. Some commands simply take a - long time. Type `C-g' and then `C-h l' to see whether the input Emacs - received was what you intended to type; if the input was such that you - *know* it should have been processed quickly, report a bug. If you - don't know whether the command should take a long time, find out by - looking in the manual or by asking for assistance. - - If a command you are familiar with causes an Emacs error message in a - case where its usual definition ought to be reasonable, it is probably a - bug. - - If a command does the wrong thing, that is a bug. But be sure you - know for certain what it ought to have done. If you aren't familiar - with the command, or don't know for certain how the command is supposed - to work, then it might actually be working right. Rather than jumping - to conclusions, show the problem to someone who knows for certain. - - Finally, a command's intended definition may not be best for editing - with. This is a very important sort of problem, but it is also a - matter of judgment. Also, it is easy to come to such a conclusion out - of ignorance of some of the existing features. It is probably best not - to complain about such a problem until you have checked the - documentation in the usual ways, feel confident that you understand it, - and know for certain that what you want is not available. If you are - not sure what the command is supposed to do after a careful reading of - the manual, check the index and glossary for any terms that may be - unclear. - - If you still do not understand, that indicates a bug in the manual, - which you should report. The manual's job is to make everything clear - to people who are not Emacs experts--including you. It is just as - important to report documentation bugs as program bugs. - - If the on-line documentation string of a function or variable - disagrees with the manual, one of them must be wrong; that is a bug. - -  - File: emacs, Node: Understanding Bug Reporting, Next: Checklist, Prev: Bug Criteria, Up: Bugs - - Understanding Bug Reporting - --------------------------- - - When you decide that there is a bug, it is important to report it - and to report it in a way which is useful. What is most useful is an - exact description of what commands you type, starting with the shell - command to run Emacs, until the problem happens. - - The most important principle in reporting a bug is to report *facts*, - not hypotheses or categorizations. It is always easier to report the - facts, but people seem to prefer to strain to posit explanations and - report them instead. If the explanations are based on guesses about - how Emacs is implemented, they will be useless; we will have to try to - figure out what the facts must have been to lead to such speculations. - Sometimes this is impossible. But in any case, it is unnecessary work - for us. - - For example, suppose that you type `C-x C-f /glorp/baz.ugh RET', - visiting a file which (you know) happens to be rather large, and Emacs - prints out `I feel pretty today'. The best way to report the bug is - with a sentence like the preceding one, because it gives all the facts - and nothing but the facts. - - Do not assume that the problem is due to the size of the file and - say, "When I visit a large file, Emacs prints out `I feel pretty - today'." This is what we mean by "guessing explanations". The problem - is just as likely to be due to the fact that there is a `z' in the file - name. If this is so, then when we got your report, we would try out - the problem with some "large file", probably with no `z' in its name, - and not find anything wrong. There is no way in the world that we - could guess that we should try visiting a file with a `z' in its name. - - Alternatively, the problem might be due to the fact that the file - starts with exactly 25 spaces. For this reason, you should make sure - that you inform us of the exact contents of any file that is needed to - reproduce the bug. What if the problem only occurs when you have typed - the `C-x C-a' command previously? This is why we ask you to give the - exact sequence of characters you typed since starting to use Emacs. - - You should not even say "visit a file" instead of `C-x C-f' unless - you *know* that it makes no difference which visiting command is used. - Similarly, rather than saying "if I have three characters on the line," - say "after I type `RET A B C RET C-p'," if that is the way you entered - the text. - -  - File: emacs, Node: Checklist, Next: Sending Patches, Prev: Understanding Bug Reporting, Up: Bugs - - 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: - - GNU Emacs Bugs - Free Software Foundation - 675 Mass Ave - Cambridge, MA 02139 - - We do not promise to fix the bug; but if the bug is serious, or - ugly, or easy to fix, chances are we will want to. - - To enable maintainers to investigate a bug, your report should - include all these things: - - * The version number of Emacs. Without this, we won't know whether - there is any point in looking for the bug in the current version - of GNU Emacs. - - You can get the version number by typing `M-x emacs-version RET'. - If that command does not work, you probably have something other - than GNU Emacs, so you will have to report the bug somewhere else. - - * The type of machine you are using, and the operating system name - and version number. - - * The operands you gave to the `configure' command when you installed - Emacs. - - * A complete list of any modifications you have made to the Emacs - source. (We may not have time to investigate the bug unless it - happens in an unmodified Emacs. But if you've made modifications - and don't tell us, then you are sending us on a wild goose chase.) - - Be precise about these changes. A description in English is not - enough--send a context diff for them. - - Adding files of your own (such as a machine description for a - machine we don't support) is a modification of the source. - - * Details of any other deviations from the standard procedure for - installing GNU Emacs. - - * The complete text of any files needed to reproduce the bug. - - If you can tell us a way to cause the problem without visiting any - files, please do so. This makes it much easier to debug. If you - do need files, make sure you arrange for us to see their exact - contents. For example, it can often matter whether there are - spaces at the ends of lines, or a newline after the last line in - the buffer (nothing ought to care whether the last line is - terminated, but try telling the bugs that). - - * The precise commands we need to type to reproduce the bug. - - The easy way to record the input to Emacs precisely is to to write - a dribble file. To start the file, execute the Lisp expression - - (open-dribble-file "~/dribble") - - using `M-ESC' or from the `*scratch*' buffer just after starting - Emacs. From then on, Emacs copies all your input to the specified - dribble file until the Emacs process is killed. - - * For possible display bugs, the terminal type (the value of - environment variable `TERM'), the complete termcap entry for the - terminal from `/etc/termcap' (since that file is not identical on - all machines), and the output that Emacs actually sent to the - terminal. - - The way to collect the terminal output is to execute the Lisp - expression - - (open-termscript "~/termscript") - - using `M-ESC' or from the `*scratch*' buffer just after starting - Emacs. From then on, Emacs copies all terminal output to the - specified termscript file as well, until the Emacs process is - killed. If the problem happens when Emacs starts up, put this - expression into your `.emacs' file so that the termscript file - will be open when Emacs displays the screen for the first time. - - Be warned: it is often difficult, and sometimes impossible, to fix - a terminal-dependent bug without access to a terminal of the type - that stimulates the bug. - - * A description of what behavior you observe that you believe is - incorrect. For example, "The Emacs process gets a fatal signal," - or, "The resulting text is as follows, which I think is wrong." - - Of course, if the bug is that Emacs gets a fatal signal, then one - can't miss it. But if the bug is incorrect text, the maintainer - might fail to notice what is wrong. Why leave it to chance? - - Even if the problem you experience is a fatal signal, you should - still say so explicitly. Suppose something strange is going on, - such as, your copy of the source is out of sync, or you have - encountered a bug in the C library on your system. (This has - happened!) Your copy might crash and the copy here would not. If - you *said* to expect a crash, then when Emacs here fails to crash, - we would know that the bug was not happening. If you don't say to - expect a crash, then we would not know whether the bug was - happening. We would not be able to draw any conclusion from our - observations. - - If the manifestation of the bug is an Emacs error message, it is - important to report not just the text of the error message but a - backtrace showing how the Lisp program in Emacs arrived at the - error. To make the backtrace, execute the Lisp expression `(setq - debug-on-error t)' before the error happens (that is to say, you - must execute that expression and then make the bug happen). This - causes the Lisp debugger to run, showing you a backtrace. Copy - the text of the debugger's backtrace into the bug report. - - This use of the debugger is possible only if you know how to make - the bug happen again. Do note the error message the first time - the bug happens, so if you can't make it happen again, you can - report at least the error message. - - * Check whether any programs you have loaded into the Lisp world, - including your `.emacs' file, set any variables that may affect the - functioning of Emacs. Also, see whether the problem happens in a - freshly started Emacs without loading your `.emacs' file (start - Emacs with the `-q' switch to prevent loading the init file.) If - the problem does *not* occur then, you must report the precise - contents of any programs that you must load into the Lisp world in - order to cause the problem to occur. - - * If the problem does depend on an init file or other Lisp programs - that are not part of the standard Emacs system, then you should - make sure it is not a bug in those programs by complaining to - their maintainers first. After they verify that they are using - Emacs in a way that is supposed to work, they should report the - bug. - - * If you wish to mention something in the GNU Emacs source, show the - portion in its context. Don't just give a line number. - - The line numbers in the development sources don't match those in - your sources. It would take extra work for the maintainers to - determine what code is in your version at a given line number, and - we could not be certain. - - * Additional information from a debugger might enable someone to - find a problem on a machine which he does not have available. - However, you need to think when you collect this information if - you want it to be useful. - - For example, many people send just a backtrace, but that is never - useful by itself. A simple backtrace with arguments conveys - little about what is happening inside GNU Emacs, because most of - the arguments listed in the backtrace are pointers to Lisp - objects. The numeric values of these pointers have no - significance whatever; all that matters is the contents of the - objects they point to (and most of the contents are themselves - pointers). - - To provide useful information, you need to show the values of Lisp - objects in Lisp notation. Do this for each variable which is a - Lisp object, in several stack frames near the bottom of the stack. - Look at the source to see which variables are Lisp objects, - because the debugger thinks of them as integers. - - To show a variable's value in Lisp syntax, first print its value, - then use the GDB command `pr' to print the Lisp object in Lisp - syntax. (If you must use another debugger, call the function - `debug_print' with the object as an argument.) - - Here are some things that are not necessary: - - * A description of the envelope of the bug--this is not necessary - for a reproduceable bug. - - Often people who encounter a bug spend a lot of time investigating - which changes to the input file will make the bug go away and which - changes will not affect it. - - This is often time consuming and not very useful, because the way - we will find the bug is by running a single example under the - debugger with breakpoints, not by pure deduction from a series of - examples. You might as well save time by not doing this. - - Of course, if you can find a simpler example to report *instead* of - the original one, that is a convenience. Errors in the output - will be easier to spot, running under the debugger will take less - time, etc. - - However, simplification is not vital; if you don't want to do this, - please report the bug with your original test case. - - * A patch for the bug. - - A patch for the bug is useful if it is a good one. But don't omit - the necessary information, such as the test case, on the - assumption that a patch is all we need. We might see problems - with your patch and decide to fix the problem another way, or we - might not understand it at all. - - And if we can't understand what bug you are trying to fix, or why - your patch should be an improvement, we mustn't install it. A - test case will help us to understand. - - *Note Sending Patches::, for guidelines on how to make it easy for - us to understand and install your patches. - - * A guess about what the bug is or what it depends on. - - Such guesses are usually wrong. Even experts can't guess right - about such things without first using the debugger to find the - facts. - -  - File: emacs, Node: Sending Patches, Prev: Checklist, Up: Bugs - - Sending Patches for GNU Emacs - ----------------------------- - - If you would like to write bug fixes or improvements for GNU Emacs, - that is very helpful. When you send your changes, please follow these - guidelines to make it easy for the maintainers to use them. - - If you don't follow these guidelines, your information might still be - useful, but using it will take extra work. Maintaining GNU Emacs is a - lot of work in the best of circumstances, and we can't keep up unless - you do your best to help. - - * Send an explanation with your changes of what problem they fix or - what improvement they bring about. For a bug fix, just include a - copy of the bug report, and explain why the change fixes the bug. - - (Referring to a bug report is not as good as including it, because - then we will have to look it up, and we have probably already - deleted it if we've already fixed the bug.) - - * Always include a proper bug report for the problem you think you - have fixed. We need to convince ourselves that the change is - right before installing it. Even if it is correct, we might have - trouble understanding it if we don't have a way to reproduce the - problem. - - * Include all the comments that are appropriate to help people - reading the source in the future understand why this change was - needed. - - * Don't mix together changes made for different reasons. Send them - *individually*. - - If you make two changes for separate reasons, then we might not - want to install them both. We might want to install just one. If - you send them all jumbled together in a single set of diffs, we - have to do extra work to disentangle them--to figure out which - parts of the change serve which purpose. If we don't have time - for this, we might have to ignore your changes entirely. - - If you send each change as soon as you have written it, with its - own explanation, then the two changes never get tangled up, and we - can consider each one properly without any extra work to - disentangle them. - - * Send each change as soon as that change is finished. Sometimes - people think they are helping us by accumulating many changes to - send them all together. As explained above, this is absolutely - the worst thing you could do. - - Since you should send each change separately, you might as well - send it right away. That gives us the option of installing it - immediately if it is important. - - * Use `diff -c' to make your diffs. Diffs without context are hard - to install reliably. More than that, they are hard to study; we - must always study a patch to decide whether we want to install it. - Unidiff format is better than contextless diffs, but not as easy - to read as `-c' format. - - If you have GNU diff, use `diff -cp', which shows the name of the - function that each change occurs in. - - * Write the change log entries for your changes. This is both to - save us the extra work of writing them, and to help explain your - changes so we can understand them. - - The purpose of the change log is to show people where to find what - was changed. So you need to be specific about what functions you - changed; in large functions, it's often helpful to indicate where - within the function the change was. - - On the other hand, once you have shown people where to find the - change, you need not explain its purpose. Thus, if you add a new - function, all you need to say about it is that it is new. If you - feel that the purpose needs explaining, it probably does--but the - explanation will be much more useful if you put it in comments in - the code. - - Please read the `ChangeLog' file to see what sorts of information - to put in, and to learn the style that we use. If you would like - your name to appear in the header line showing who made the - change, send us the header line. - - * When you write the fix, keep in mind that we can't install a - change that would break other systems. Please think about what - effect your change will have if compiled on another type of system. - - Sometimes people send fixes that *might* be an improvement in - general--but it is hard to be sure of this. It's hard to install - such changes because we have to study them very carefully. Of - course, a good explanation of the reasoning by which you concluded - the change was correct can help convince us. - - The safest changes are changes to the configuration files for a - particular machine. These are safe because they can't create new - bugs on other machines. - - Please help us keep up with the workload by designing the patch in - a form that is clearly safe to install. - -  - File: emacs, Node: Service, Next: Command Arguments, Prev: Bugs, Up: Top - - How To Get Help with GNU Emacs - ============================== - - If you need help installing, using or changing GNU Emacs, there are - two ways to find it: - - * Send a message to a suitable network mailing list. First try - `bug-gnu-emacs@prep.ai.mit.edu', and if that brings no response, - try `help-gnu-emacs@prep.ai.mit.edu'. - - * Look in the service directory for someone who might help you for a - fee. The service directory is found in the file named - `etc/SERVICE' in the Emacs distribution. - -  - File: emacs, Node: Command Arguments, Next: Manifesto, Prev: Service, Up: Top - - Command Line Options and Arguments - ********************************** - - GNU Emacs supports command line arguments to request various actions - when invoking Emacs. These are for compatibility with other editors and - for sophisticated activities. We don't recommend using them for - ordinary editing. - - Arguments that are not options specify files to visit. Emacs visits - the specified files while it starts up. (The last file name on your - command line is the one you see displayed, but the rest are all there in - other buffers.) - - You can use options to specify other things, such as the size and - position of the Emacs window if you are running it under the X Window - System. A few arguments support advanced usage, like running Lisp - functions on files in batch mode. - - There are two kinds of options: "ordinary options" and "initial - options". Ordinary options can appear in any order and can be - intermixed with file names to visit. These and file names are called - "ordinary arguments". Emacs processes all of these in the order they - are written. Initial options must come at the beginning of the command - line. - - * Menu: - - * Ordinary Arguments:: Arguments to visit files, load libraries, - and call functions - * Initial Options:: Arguments that must come at the start of the command. - * Command Example:: Examples of using command line arguments. - * Resume Arguments:: Specifying arguments when you resume a running Emacs. - - * Display X:: Changing the default display and using remote login. - * Font X:: Choosing a font for text, under X. - * Colors X:: Choosing colors, under X. - * Window Size X:: Start-up window size, under X. - * Borders X:: Internal and external borders, under X. - * Icons X:: Choosing what sort of icon to use, under X. - * Resources X:: Advanced use of classes and resources, under X. - -  - File: emacs, Node: Ordinary Arguments, Next: Initial Options, Up: Command Arguments - - Ordinary Arguments - ================== - - Here is a table of the ordinary arguments and options: - - `FILE' - Visit FILE using `find-file'. *Note Visiting::. - - `+LINENUM FILE' - Visit FILE using `find-file', then go to line number LINENUM in it. - - `-l FILE' - `-load FILE' - Load a file FILE of Lisp code with the function `load'. *Note - Lisp Libraries::. - - `-f FUNCTION' - `-funcall FUNCTION' - Call Lisp function FUNCTION with no arguments. - - `-insert FILE' - Insert the contents of FILE into the current buffer. This is like - what `M-x insert-buffer' does; *Note Misc File Ops::. - - `-kill' - Exit from Emacs without asking for confirmation. --- 1159,1162 ---- diff -cprP --exclude=*.elc emacs-19.13/info/emacs-17 emacs-19.14/info/emacs-17 *** emacs-19.13/info/emacs-17 Tue Jun 8 07:24:32 1993 --- emacs-19.14/info/emacs-17 Thu Jun 17 19:44:46 1993 *************** *** 1,7 **** ! This is Info file ../info/emacs, produced by Makeinfo-1.54 from the input file emacs.texi.  File: emacs, Node: Initial Options, Next: Command Example, Prev: Ordinary Arguments, Up: Command Arguments Initial Options --- 1,734 ---- ! This is Info file ../info/emacs, produced by Makeinfo-1.55 from the input file emacs.texi.  + File: emacs, Node: Lossage, Next: Bugs, Prev: Quitting, Up: Top + + Dealing with Emacs Trouble + ========================== + + This section describes various conditions in which Emacs fails to + work normally, and how to recognize them and correct them. + + * Menu: + + * DEL Gets Help:: What to do if DEL doesn't delete. + * Stuck Recursive:: `[...]' in mode line around the parentheses. + * Screen Garbled:: Garbage on the screen. + * Text Garbled:: Garbage in the text. + * Unasked-for Search:: Spontaneous entry to incremental search. + * Emergency Escape:: Emergency escape-- + What to do if Emacs stops responding. + * Total Frustration:: When you are at your wits' end. + +  + File: emacs, Node: DEL Gets Help, Next: Stuck Recursive, Up: Lossage + + If DEL Fails to Delete + ---------------------- + + If you find that DEL enters Help like `Control-h' instead of + deleting a character, your terminal is sending the wrong code for DEL. + You can work around this problem by changing the keyboard translation + table (*note Keyboard Translations::.). + +  + File: emacs, Node: Stuck Recursive, Next: Screen Garbled, Prev: DEL Gets Help, Up: Lossage + + Recursive Editing Levels + ------------------------ + + Recursive editing levels are important and useful features of Emacs, + but they can seem like malfunctions to the user who does not understand + them. + + If the mode line has square brackets `[...]' around the parentheses + that contain the names of the major and minor modes, you have entered a + recursive editing level. If you did not do this on purpose, or if you + don't understand what that means, you should just get out of the + recursive editing level. To do so, type `M-x top-level'. This is + called getting back to top level. *Note Recursive Edit::. + +  + File: emacs, Node: Screen Garbled, Next: Text Garbled, Prev: Stuck Recursive, Up: Lossage + + Garbage on the Screen + --------------------- + + If the data on the screen looks wrong, the first thing to do is see + whether the text is really wrong. Type `C-l', to redisplay the entire + screen. If the screen appears correct after this, the problem was + entirely in the previous screen update. + + Display updating problems often result from an incorrect termcap + entry for the terminal you are using. The file `etc/TERMS' in the Emacs + distribution gives the fixes for known problems of this sort. + `INSTALL' contains general advice for these problems in one of its + sections. Very likely there is simply insufficient padding for certain + display operations. To investigate the possibility that you have this + sort of problem, try Emacs on another terminal made by a different + manufacturer. If problems happen frequently on one kind of terminal + but not another kind, it is likely to be a bad termcap entry, though it + could also be due to a bug in Emacs that appears for terminals that + have or that lack specific features. + +  + File: emacs, Node: Text Garbled, Next: Unasked-for Search, Prev: Screen Garbled, Up: Lossage + + Garbage in the Text + ------------------- + + If `C-l' shows that the text is wrong, try undoing the changes to it + using `C-x u' until it gets back to a state you consider correct. Also + try `C-h l' to find out what command you typed to produce the observed + results. + + If a large portion of text appears to be missing at the beginning or + end of the buffer, check for the word `Narrow' in the mode line. If it + appears, the text is still present, but temporarily off-limits. To + make it accessible again, type `C-x w'. *Note Narrowing::. + +  + File: emacs, Node: Unasked-for Search, Next: Emergency Escape, Prev: Text Garbled, Up: Lossage + + Spontaneous Entry to Incremental Search + --------------------------------------- + + If Emacs spontaneously displays `I-search:' at the bottom of the + screen, it means that the terminal is sending `C-s' and `C-q' according + to the poorly designed xon/xoff "flow control" protocol. + + If this happens to you, your best recourse is to put the terminal in + a mode where it will not use flow control, or give it so much padding + that it will never send a `C-s'. (One way to increase the amount of + padding is to set the variable `baud-rate' to a larger value. Its + value is the terminal output speed, measured in the conventional units + of baud.) + + If you don't succeed in turning off flow control, the next best thing + is to tell Emacs to cope with it. To do this, call the function + `enable-flow-control'. + + Typically there are particular terminal types with which you must use + flow control. You can conveniently ask for flow control on those + terminal types only, using `enable-flow-control-on'. For example, if + you find you must use flow control on VT-100 and H19 terminals, put the + following in your `.emacs' file: + + (enable-flow-control-on "vt100" "h19") + + When flow control is enabled, you must type `C-\' to get the effect + of a `C-s', and type `C-^' to get the effect of a `C-q'. (These + aliases work by means of keyboard translations; see *Note Keyboard + Translations::.) + +  + File: emacs, Node: Emergency Escape, Next: Total Frustration, Prev: Unasked-for Search, Up: Lossage + + Emergency Escape + ---------------- + + Because at times there have been bugs causing Emacs to loop without + checking `quit-flag', a special feature causes Emacs to be suspended + immediately if you type a second `C-g' while the flag is already set, + so you can always get out of GNU Emacs. Normally Emacs recognizes and + clears `quit-flag' (and quits!) quickly enough to prevent this from + happening. + + When you resume Emacs after a suspension caused by multiple `C-g', it + asks two questions before going back to what it had been doing: + + Auto-save? (y or n) + Abort (and dump core)? (y or n) + + Answer each one with `y' or `n' followed by RET. + + Saying `y' to `Auto-save?' causes immediate auto-saving of all + modified buffers in which auto-saving is enabled. + + Saying `y' to `Abort (and dump core)?' causes an illegal instruction + to be executed, dumping core. This is to enable a wizard to figure out + why Emacs was failing to quit in the first place. Execution does not + continue after a core dump. If you answer `n', execution does + continue. With luck, GNU Emacs will ultimately check `quit-flag' and + quit normally. If not, and you type another `C-g', it is suspended + again. + + If Emacs is not really hung, just slow, you may invoke the double + `C-g' feature without really meaning to. Then just resume and answer + `n' to both questions, and you will arrive at your former state. + Presumably the quit you requested will happen soon. + + The double-`C-g' feature is turned off when Emacs is running under + the X Window System, since the you can use the window manager to kill + Emacs or to create another window and run another program. + +  + File: emacs, Node: Total Frustration, Prev: Emergency Escape, Up: Lossage + + Help for Total Frustration + -------------------------- + + If using Emacs (or something else) becomes terribly frustrating and + none of the techniques described above solve the problem, Emacs can + still help you. + + First, if the Emacs you are using is not responding to commands, type + `C-g C-g' to get out of it and then start a new one. + + Second, type `M-x doctor RET'. + + The doctor will help you feel better. Each time you say something to + the doctor, you must end it by typing RET RET. This lets the doctor + know you are finished. + +  + File: emacs, Node: Bugs, Next: Service, Prev: Lossage, Up: Top + + Reporting Bugs + ============== + + Sometimes you will encounter a bug in Emacs. Although we cannot + promise we can or will fix the bug, and we might not even agree that it + is a bug, we want to hear about bugs you encounter in case we do want + to fix them. + + To make it possible for us to fix a bug, you must report it. In + order to do so effectively, you must know when and how to do it. + + * Menu: + + * Criteria: Bug Criteria. Have you really found a bug? + * Understanding Bug Reporting:: How to report a bug effectively. + * Checklist:: Steps to follow for a good bug report. + * Sending Patches:: How to send a patch for GNU Emacs. + +  + File: emacs, Node: Bug Criteria, Next: Understanding Bug Reporting, Up: Bugs + + When Is There a Bug + ------------------- + + If Emacs executes an illegal instruction, or dies with an operating + system error message that indicates a problem in the program (as + opposed to something like "disk full"), then it is certainly a bug. + + If Emacs updates the display in a way that does not correspond to + what is in the buffer, then it is certainly a bug. If a command seems + to do the wrong thing but the problem corrects itself if you type + `C-l', it is a case of incorrect display updating. + + Taking forever to complete a command can be a bug, but you must make + certain that it was really Emacs's fault. Some commands simply take a + long time. Type `C-g' and then `C-h l' to see whether the input Emacs + received was what you intended to type; if the input was such that you + *know* it should have been processed quickly, report a bug. If you + don't know whether the command should take a long time, find out by + looking in the manual or by asking for assistance. + + If a command you are familiar with causes an Emacs error message in a + case where its usual definition ought to be reasonable, it is probably a + bug. + + If a command does the wrong thing, that is a bug. But be sure you + know for certain what it ought to have done. If you aren't familiar + with the command, or don't know for certain how the command is supposed + to work, then it might actually be working right. Rather than jumping + to conclusions, show the problem to someone who knows for certain. + + Finally, a command's intended definition may not be best for editing + with. This is a very important sort of problem, but it is also a + matter of judgment. Also, it is easy to come to such a conclusion out + of ignorance of some of the existing features. It is probably best not + to complain about such a problem until you have checked the + documentation in the usual ways, feel confident that you understand it, + and know for certain that what you want is not available. If you are + not sure what the command is supposed to do after a careful reading of + the manual, check the index and glossary for any terms that may be + unclear. + + If you still do not understand, that indicates a bug in the manual, + which you should report. The manual's job is to make everything clear + to people who are not Emacs experts--including you. It is just as + important to report documentation bugs as program bugs. + + If the on-line documentation string of a function or variable + disagrees with the manual, one of them must be wrong; that is a bug. + +  + File: emacs, Node: Understanding Bug Reporting, Next: Checklist, Prev: Bug Criteria, Up: Bugs + + Understanding Bug Reporting + --------------------------- + + When you decide that there is a bug, it is important to report it + and to report it in a way which is useful. What is most useful is an + exact description of what commands you type, starting with the shell + command to run Emacs, until the problem happens. + + The most important principle in reporting a bug is to report *facts*, + not hypotheses or categorizations. It is always easier to report the + facts, but people seem to prefer to strain to posit explanations and + report them instead. If the explanations are based on guesses about + how Emacs is implemented, they will be useless; we will have to try to + figure out what the facts must have been to lead to such speculations. + Sometimes this is impossible. But in any case, it is unnecessary work + for us. + + For example, suppose that you type `C-x C-f /glorp/baz.ugh RET', + visiting a file which (you know) happens to be rather large, and Emacs + prints out `I feel pretty today'. The best way to report the bug is + with a sentence like the preceding one, because it gives all the facts + and nothing but the facts. + + Do not assume that the problem is due to the size of the file and + say, "When I visit a large file, Emacs prints out `I feel pretty + today'." This is what we mean by "guessing explanations". The problem + is just as likely to be due to the fact that there is a `z' in the file + name. If this is so, then when we got your report, we would try out + the problem with some "large file", probably with no `z' in its name, + and not find anything wrong. There is no way in the world that we + could guess that we should try visiting a file with a `z' in its name. + + Alternatively, the problem might be due to the fact that the file + starts with exactly 25 spaces. For this reason, you should make sure + that you inform us of the exact contents of any file that is needed to + reproduce the bug. What if the problem only occurs when you have typed + the `C-x C-a' command previously? This is why we ask you to give the + exact sequence of characters you typed since starting to use Emacs. + + You should not even say "visit a file" instead of `C-x C-f' unless + you *know* that it makes no difference which visiting command is used. + Similarly, rather than saying "if I have three characters on the line," + say "after I type `RET A B C RET C-p'," if that is the way you entered + the text. + +  + File: emacs, Node: Checklist, Next: Sending Patches, Prev: Understanding Bug Reporting, Up: Bugs + + 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'. + + If you'd like to read the bug reports, you can find them on the + repeater newsgroup `gnu.emacs.bugs'; keep in mind, however, that as a + spectator you should not criticize anything about what you see there. + The purpose of bug reports is to give information to the Emacs + maintainers. Spectators are welcome only as long as they do not + interfere with this. + + Please do not post bug reports using 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: + + GNU Emacs Bugs + Free Software Foundation + 675 Mass Ave + Cambridge, MA 02139 + + We do not promise to fix the bug; but if the bug is serious, or + ugly, or easy to fix, chances are we will want to. + + To enable maintainers to investigate a bug, your report should + include all these things: + + * The version number of Emacs. Without this, we won't know whether + there is any point in looking for the bug in the current version + of GNU Emacs. + + You can get the version number by typing `M-x emacs-version RET'. + If that command does not work, you probably have something other + than GNU Emacs, so you will have to report the bug somewhere else. + + * The type of machine you are using, and the operating system name + and version number. + + * The operands you gave to the `configure' command when you installed + Emacs. + + * A complete list of any modifications you have made to the Emacs + source. (We may not have time to investigate the bug unless it + happens in an unmodified Emacs. But if you've made modifications + and don't tell us, then you are sending us on a wild goose chase.) + + Be precise about these changes. A description in English is not + enough--send a context diff for them. + + Adding files of your own (such as a machine description for a + machine we don't support) is a modification of the source. + + * Details of any other deviations from the standard procedure for + installing GNU Emacs. + + * The complete text of any files needed to reproduce the bug. + + If you can tell us a way to cause the problem without visiting any + files, please do so. This makes it much easier to debug. If you + do need files, make sure you arrange for us to see their exact + contents. For example, it can often matter whether there are + spaces at the ends of lines, or a newline after the last line in + the buffer (nothing ought to care whether the last line is + terminated, but try telling the bugs that). + + * The precise commands we need to type to reproduce the bug. + + The easy way to record the input to Emacs precisely is to to write + a dribble file. To start the file, execute the Lisp expression + + (open-dribble-file "~/dribble") + + using `M-ESC' or from the `*scratch*' buffer just after starting + Emacs. From then on, Emacs copies all your input to the specified + dribble file until the Emacs process is killed. + + * For possible display bugs, the terminal type (the value of + environment variable `TERM'), the complete termcap entry for the + terminal from `/etc/termcap' (since that file is not identical on + all machines), and the output that Emacs actually sent to the + terminal. + + The way to collect the terminal output is to execute the Lisp + expression + + (open-termscript "~/termscript") + + using `M-ESC' or from the `*scratch*' buffer just after starting + Emacs. From then on, Emacs copies all terminal output to the + specified termscript file as well, until the Emacs process is + killed. If the problem happens when Emacs starts up, put this + expression into your `.emacs' file so that the termscript file + will be open when Emacs displays the screen for the first time. + + Be warned: it is often difficult, and sometimes impossible, to fix + a terminal-dependent bug without access to a terminal of the type + that stimulates the bug. + + * A description of what behavior you observe that you believe is + incorrect. For example, "The Emacs process gets a fatal signal," + or, "The resulting text is as follows, which I think is wrong." + + Of course, if the bug is that Emacs gets a fatal signal, then one + can't miss it. But if the bug is incorrect text, the maintainer + might fail to notice what is wrong. Why leave it to chance? + + Even if the problem you experience is a fatal signal, you should + still say so explicitly. Suppose something strange is going on, + such as, your copy of the source is out of sync, or you have + encountered a bug in the C library on your system. (This has + happened!) Your copy might crash and the copy here would not. If + you *said* to expect a crash, then when Emacs here fails to crash, + we would know that the bug was not happening. If you don't say to + expect a crash, then we would not know whether the bug was + happening. We would not be able to draw any conclusion from our + observations. + + If the manifestation of the bug is an Emacs error message, it is + important to report not just the text of the error message but a + backtrace showing how the Lisp program in Emacs arrived at the + error. To make the backtrace, execute the Lisp expression `(setq + debug-on-error t)' before the error happens (that is to say, you + must execute that expression and then make the bug happen). This + causes the Lisp debugger to run, showing you a backtrace. Copy + the text of the debugger's backtrace into the bug report. + + This use of the debugger is possible only if you know how to make + the bug happen again. Do note the error message the first time + the bug happens, so if you can't make it happen again, you can + report at least the error message. + + * Check whether any programs you have loaded into the Lisp world, + including your `.emacs' file, set any variables that may affect the + functioning of Emacs. Also, see whether the problem happens in a + freshly started Emacs without loading your `.emacs' file (start + Emacs with the `-q' switch to prevent loading the init file.) If + the problem does *not* occur then, you must report the precise + contents of any programs that you must load into the Lisp world in + order to cause the problem to occur. + + * If the problem does depend on an init file or other Lisp programs + that are not part of the standard Emacs system, then you should + make sure it is not a bug in those programs by complaining to + their maintainers first. After they verify that they are using + Emacs in a way that is supposed to work, they should report the + bug. + + * If you wish to mention something in the GNU Emacs source, show the + portion in its context. Don't just give a line number. + + The line numbers in the development sources don't match those in + your sources. It would take extra work for the maintainers to + determine what code is in your version at a given line number, and + we could not be certain. + + * Additional information from a debugger might enable someone to + find a problem on a machine which he does not have available. + However, you need to think when you collect this information if + you want it to be useful. + + For example, many people send just a backtrace, but that is never + useful by itself. A simple backtrace with arguments conveys + little about what is happening inside GNU Emacs, because most of + the arguments listed in the backtrace are pointers to Lisp + objects. The numeric values of these pointers have no + significance whatever; all that matters is the contents of the + objects they point to (and most of the contents are themselves + pointers). + + To provide useful information, you need to show the values of Lisp + objects in Lisp notation. Do this for each variable which is a + Lisp object, in several stack frames near the bottom of the stack. + Look at the source to see which variables are Lisp objects, + because the debugger thinks of them as integers. + + To show a variable's value in Lisp syntax, first print its value, + then use the GDB command `pr' to print the Lisp object in Lisp + syntax. (If you must use another debugger, call the function + `debug_print' with the object as an argument.) + + Here are some things that are not necessary: + + * A description of the envelope of the bug--this is not necessary + for a reproducible bug. + + Often people who encounter a bug spend a lot of time investigating + which changes to the input file will make the bug go away and which + changes will not affect it. + + This is often time consuming and not very useful, because the way + we will find the bug is by running a single example under the + debugger with breakpoints, not by pure deduction from a series of + examples. You might as well save time by not doing this. + + Of course, if you can find a simpler example to report *instead* of + the original one, that is a convenience. Errors in the output + will be easier to spot, running under the debugger will take less + time, etc. + + However, simplification is not vital; if you don't want to do this, + please report the bug with your original test case. + + * A patch for the bug. + + A patch for the bug is useful if it is a good one. But don't omit + the necessary information, such as the test case, on the + assumption that a patch is all we need. We might see problems + with your patch and decide to fix the problem another way, or we + might not understand it at all. + + And if we can't understand what bug you are trying to fix, or why + your patch should be an improvement, we mustn't install it. A + test case will help us to understand. + + *Note Sending Patches::, for guidelines on how to make it easy for + us to understand and install your patches. + + * A guess about what the bug is or what it depends on. + + Such guesses are usually wrong. Even experts can't guess right + about such things without first using the debugger to find the + facts. + +  + File: emacs, Node: Sending Patches, Prev: Checklist, Up: Bugs + + Sending Patches for GNU Emacs + ----------------------------- + + If you would like to write bug fixes or improvements for GNU Emacs, + that is very helpful. When you send your changes, please follow these + guidelines to make it easy for the maintainers to use them. + + If you don't follow these guidelines, your information might still be + useful, but using it will take extra work. Maintaining GNU Emacs is a + lot of work in the best of circumstances, and we can't keep up unless + you do your best to help. + + * Send an explanation with your changes of what problem they fix or + what improvement they bring about. For a bug fix, just include a + copy of the bug report, and explain why the change fixes the bug. + + (Referring to a bug report is not as good as including it, because + then we will have to look it up, and we have probably already + deleted it if we've already fixed the bug.) + + * Always include a proper bug report for the problem you think you + have fixed. We need to convince ourselves that the change is + right before installing it. Even if it is correct, we might have + trouble understanding it if we don't have a way to reproduce the + problem. + + * Include all the comments that are appropriate to help people + reading the source in the future understand why this change was + needed. + + * Don't mix together changes made for different reasons. Send them + *individually*. + + If you make two changes for separate reasons, then we might not + want to install them both. We might want to install just one. If + you send them all jumbled together in a single set of diffs, we + have to do extra work to disentangle them--to figure out which + parts of the change serve which purpose. If we don't have time + for this, we might have to ignore your changes entirely. + + If you send each change as soon as you have written it, with its + own explanation, then the two changes never get tangled up, and we + can consider each one properly without any extra work to + disentangle them. + + * Send each change as soon as that change is finished. Sometimes + people think they are helping us by accumulating many changes to + send them all together. As explained above, this is absolutely + the worst thing you could do. + + Since you should send each change separately, you might as well + send it right away. That gives us the option of installing it + immediately if it is important. + + * Use `diff -c' to make your diffs. Diffs without context are hard + to install reliably. More than that, they are hard to study; we + must always study a patch to decide whether we want to install it. + Unidiff format is better than contextless diffs, but not as easy + to read as `-c' format. + + If you have GNU diff, use `diff -cp', which shows the name of the + function that each change occurs in. + + * Write the change log entries for your changes. This is both to + save us the extra work of writing them, and to help explain your + changes so we can understand them. + + The purpose of the change log is to show people where to find what + was changed. So you need to be specific about what functions you + changed; in large functions, it's often helpful to indicate where + within the function the change was. + + On the other hand, once you have shown people where to find the + change, you need not explain its purpose. Thus, if you add a new + function, all you need to say about it is that it is new. If you + feel that the purpose needs explaining, it probably does--but the + explanation will be much more useful if you put it in comments in + the code. + + Please read the `ChangeLog' file to see what sorts of information + to put in, and to learn the style that we use. If you would like + your name to appear in the header line showing who made the + change, send us the header line. + + * When you write the fix, keep in mind that we can't install a + change that would break other systems. Please think about what + effect your change will have if compiled on another type of system. + + Sometimes people send fixes that *might* be an improvement in + general--but it is hard to be sure of this. It's hard to install + such changes because we have to study them very carefully. Of + course, a good explanation of the reasoning by which you concluded + the change was correct can help convince us. + + The safest changes are changes to the configuration files for a + particular machine. These are safe because they can't create new + bugs on other machines. + + Please help us keep up with the workload by designing the patch in + a form that is clearly safe to install. + +  + File: emacs, Node: Service, Next: Command Arguments, Prev: Bugs, Up: Top + + How To Get Help with GNU Emacs + ============================== + + If you need help installing, using or changing GNU Emacs, there are + two ways to find it: + + * Send a message to a suitable network mailing list. First try + `bug-gnu-emacs@prep.ai.mit.edu', and if that brings no response, + try `help-gnu-emacs@prep.ai.mit.edu'. + + * Look in the service directory for someone who might help you for a + fee. The service directory is found in the file named + `etc/SERVICE' in the Emacs distribution. + +  + File: emacs, Node: Command Arguments, Next: Antinews, Prev: Service, Up: Top + + Command Line Options and Arguments + ********************************** + + GNU Emacs supports command line arguments to request various actions + when invoking Emacs. These are for compatibility with other editors and + for sophisticated activities. We don't recommend using them for + ordinary editing. + + Arguments that are not options specify files to visit. Emacs visits + the specified files while it starts up. (The last file name on your + command line is the one you see displayed, but the rest are all there in + other buffers.) + + You can use options to specify other things, such as the size and + position of the Emacs window if you are running it under the X Window + System. A few arguments support advanced usage, like running Lisp + functions on files in batch mode. + + There are two kinds of options: "ordinary options" and "initial + options". Ordinary options can appear in any order and can be + intermixed with file names to visit. These and file names are called + "ordinary arguments". Emacs processes all of these in the order they + are written. Initial options must come at the beginning of the command + line. + + * Menu: + + * Ordinary Arguments:: Arguments to visit files, load libraries, + and call functions. + * Initial Options:: Arguments that must come at the start of the command. + * Command Example:: Examples of using command line arguments. + * Resume Arguments:: Specifying arguments when you resume a running Emacs. + + * Display X:: Changing the default display and using remote login. + * Font X:: Choosing a font for text, under X. + * Colors X:: Choosing colors, under X. + * Window Size X:: Start-up window size, under X. + * Borders X:: Internal and external borders, under X. + * Icons X:: Choosing what sort of icon to use, under X. + * Resources X:: Advanced use of classes and resources, under X. + +  + File: emacs, Node: Ordinary Arguments, Next: Initial Options, Up: Command Arguments + + Ordinary Arguments + ================== + + Here is a table of the ordinary arguments and options: + + `FILE' + Visit FILE using `find-file'. *Note Visiting::. + + `+LINENUM FILE' + Visit FILE using `find-file', then go to line number LINENUM in it. + + `-l FILE' + `-load FILE' + Load a file FILE of Lisp code with the function `load'. *Note + Lisp Libraries::. + + `-f FUNCTION' + `-funcall FUNCTION' + Call Lisp function FUNCTION with no arguments. + + `-insert FILE' + Insert the contents of FILE into the current buffer. This is like + what `M-x insert-buffer' does; *Note Misc File Ops::. + + `-kill' + Exit from Emacs without asking for confirmation. + +  File: emacs, Node: Initial Options, Next: Command Example, Prev: Ordinary Arguments, Up: Command Arguments Initial Options *************** for Emacs, each with the class that it b *** 454,984 **** `title' (class `Title') Name to display in title bar of initial Emacs frame. - -  - File: emacs, Node: Manifesto, Prev: Command Arguments, Up: Top - - The GNU Manifesto - ***************** - - The GNU Manifesto which appears below was written by Richard - Stallman at the beginning of the GNU project, to ask for - participation and support. For the first few years, it was - updated in minor ways to account for developments, but now it - seems best to leave it unchanged as most people have seen it. - - Since that time, we have learned about certain common - misunderstandings that different wording could help avoid. - Footnotes help clarify these points. - - For up-to-date information about the available GNU software, - please see the latest issue of the GNU's Bulletin. The list is - much too long to include here. - - What's GNU? Gnu's Not Unix! - ============================ - - GNU, which stands for Gnu's Not Unix, is the name for the complete - Unix-compatible software system which I am writing so that I can give it - away free to everyone who can use it.(1) Several other volunteers are - helping me. Contributions of time, money, programs and equipment are - greatly needed. - - So far we have an Emacs text editor with Lisp for writing editor - commands, a source level debugger, a yacc-compatible parser generator, - a linker, and around 35 utilities. A shell (command interpreter) is - nearly completed. A new portable optimizing C compiler has compiled - itself and may be released this year. An initial kernel exists but - many more features are needed to emulate Unix. When the kernel and - compiler are finished, it will be possible to distribute a GNU system - suitable for program development. We will use TeX as our text - formatter, but an nroff is being worked on. We will use the free, - portable X window system as well. After this we will add a portable - Common Lisp, an Empire game, a spreadsheet, and hundreds of other - things, plus on-line documentation. We hope to supply, eventually, - everything useful that normally comes with a Unix system, and more. - - GNU will be able to run Unix programs, but will not be identical to - Unix. We will make all improvements that are convenient, based on our - experience with other operating systems. In particular, we plan to - have longer file names, file version numbers, a crashproof file system, - file name completion perhaps, terminal-independent display support, and - perhaps eventually a Lisp-based window system through which several - Lisp programs and ordinary Unix programs can share a screen. Both C - and Lisp will be available as system programming languages. We will - try to support UUCP, MIT Chaosnet, and Internet protocols for - communication. - - GNU is aimed initially at machines in the 68000/16000 class with - virtual memory, because they are the easiest machines to make it run - on. The extra effort to make it run on smaller machines will be left - to someone who wants to use it on them. - - To avoid horrible confusion, please pronounce the `G' in the word - `GNU' when it is the name of this project. - - Why I Must Write GNU - ==================== - - I consider that the golden rule requires that if I like a program I - must share it with other people who like it. Software sellers want to - divide the users and conquer them, making each user agree not to share - with others. I refuse to break solidarity with other users in this - way. I cannot in good conscience sign a nondisclosure agreement or a - software license agreement. For years I worked within the Artificial - Intelligence Lab to resist such tendencies and other inhospitalities, - but eventually they had gone too far: I could not remain in an - institution where such things are done for me against my will. - - So that I can continue to use computers without dishonor, I have - decided to put together a sufficient body of free software so that I - will be able to get along without any software that is not free. I - have resigned from the AI lab to deny MIT any legal excuse to prevent - me from giving GNU away. - - Why GNU Will Be Compatible with Unix - ==================================== - - Unix is not my ideal system, but it is not too bad. The essential - features of Unix seem to be good ones, and I think I can fill in what - Unix lacks without spoiling them. And a system compatible with Unix - would be convenient for many other people to adopt. - - How GNU Will Be Available - ========================= - - GNU is not in the public domain. Everyone will be permitted to - modify and redistribute GNU, but no distributor will be allowed to - restrict its further redistribution. That is to say, proprietary - modifications will not be allowed. I want to make sure that all - versions of GNU remain free. - - Why Many Other Programmers Want to Help - ======================================= - - I have found many other programmers who are excited about GNU and - want to help. - - Many programmers are unhappy about the commercialization of system - software. It may enable them to make more money, but it requires them - to feel in conflict with other programmers in general rather than feel - as comrades. The fundamental act of friendship among programmers is the - sharing of programs; marketing arrangements now typically used - essentially forbid programmers to treat others as friends. The - purchaser of software must choose between friendship and obeying the - law. Naturally, many decide that friendship is more important. But - those who believe in law often do not feel at ease with either choice. - They become cynical and think that programming is just a way of making - money. - - By working on and using GNU rather than proprietary programs, we can - be hospitable to everyone and obey the law. In addition, GNU serves as - an example to inspire and a banner to rally others to join us in - sharing. This can give us a feeling of harmony which is impossible if - we use software that is not free. For about half the programmers I - talk to, this is an important happiness that money cannot replace. - - How You Can Contribute - ====================== - - I am asking computer manufacturers for donations of machines and - money. I'm asking individuals for donations of programs and work. - - One consequence you can expect if you donate machines is that GNU - will run on them at an early date. The machines should be complete, - ready to use systems, approved for use in a residential area, and not - in need of sophisticated cooling or power. - - I have found very many programmers eager to contribute part-time - work for GNU. For most projects, such part-time distributed work would - be very hard to coordinate; the independently-written parts would not - work together. But for the particular task of replacing Unix, this - problem is absent. A complete Unix system contains hundreds of utility - programs, each of which is documented separately. Most interface - specifications are fixed by Unix compatibility. If each contributor - can write a compatible replacement for a single Unix utility, and make - it work properly in place of the original on a Unix system, then these - utilities will work right when put together. Even allowing for Murphy - to create a few unexpected problems, assembling these components will - be a feasible task. (The kernel will require closer communication and - will be worked on by a small, tight group.) - - If I get donations of money, I may be able to hire a few people full - or part time. The salary won't be high by programmers' standards, but - I'm looking for people for whom building community spirit is as - important as making money. I view this as a way of enabling dedicated - people to devote their full energies to working on GNU by sparing them - the need to make a living in another way. - - Why All Computer Users Will Benefit - =================================== - - Once GNU is written, everyone will be able to obtain good system - software free, just like air.(2) - - This means much more than just saving everyone the price of a Unix - license. It means that much wasteful duplication of system programming - effort will be avoided. This effort can go instead into advancing the - state of the art. - - Complete system sources will be available to everyone. As a result, - a user who needs changes in the system will always be free to make them - himself, or hire any available programmer or company to make them for - him. Users will no longer be at the mercy of one programmer or company - which owns the sources and is in sole position to make changes. - - Schools will be able to provide a much more educational environment - by encouraging all students to study and improve the system code. - Harvard's computer lab used to have the policy that no program could be - installed on the system if its sources were not on public display, and - upheld it by actually refusing to install certain programs. I was very - much inspired by this. - - Finally, the overhead of considering who owns the system software - and what one is or is not entitled to do with it will be lifted. - - Arrangements to make people pay for using a program, including - licensing of copies, always incur a tremendous cost to society through - the cumbersome mechanisms necessary to figure out how much (that is, - which programs) a person must pay for. And only a police state can - force everyone to obey them. Consider a space station where air must - be manufactured at great cost: charging each breather per liter of air - may be fair, but wearing the metered gas mask all day and all night is - intolerable even if everyone can afford to pay the air bill. And the - TV cameras everywhere to see if you ever take the mask off are - outrageous. It's better to support the air plant with a head tax and - chuck the masks. - - Copying all or parts of a program is as natural to a programmer as - breathing, and as productive. It ought to be as free. - - Some Easily Rebutted Objections to GNU's Goals - ============================================== - - "Nobody will use it if it is free, because that means they can't - rely on any support." - - "You have to charge for the program to pay for providing the - support." - - If people would rather pay for GNU plus service than get GNU free - without service, a company to provide just service to people who have - obtained GNU free ought to be profitable.(3) - - We must distinguish between support in the form of real programming - work and mere handholding. The former is something one cannot rely on - from a software vendor. If your problem is not shared by enough - people, the vendor will tell you to get lost. - - If your business needs to be able to rely on support, the only way - is to have all the necessary sources and tools. Then you can hire any - available person to fix your problem; you are not at the mercy of any - individual. With Unix, the price of sources puts this out of - consideration for most businesses. With GNU this will be easy. It is - still possible for there to be no available competent person, but this - problem cannot be blamed on distribution arrangements. GNU does not - eliminate all the world's problems, only some of them. - - Meanwhile, the users who know nothing about computers need - handholding: doing things for them which they could easily do - themselves but don't know how. - - Such services could be provided by companies that sell just - hand-holding and repair service. If it is true that users would rather - spend money and get a product with service, they will also be willing - to buy the service having got the product free. The service companies - will compete in quality and price; users will not be tied to any - particular one. Meanwhile, those of us who don't need the service - should be able to use the program without paying for the service. - - "You cannot reach many people without advertising, and you must - charge for the program to support that." - - "It's no use advertising a program people can get free." - - There are various forms of free or very cheap publicity that can be - used to inform numbers of computer users about something like GNU. But - it may be true that one can reach more microcomputer users with - advertising. If this is really so, a business which advertises the - service of copying and mailing GNU for a fee ought to be successful - enough to pay for its advertising and more. This way, only the users - who benefit from the advertising pay for it. - - On the other hand, if many people get GNU from their friends, and - such companies don't succeed, this will show that advertising was not - really necessary to spread GNU. Why is it that free market advocates - don't want to let the free market decide this?(4) - - "My company needs a proprietary operating system to get a - competitive edge." - - GNU will remove operating system software from the realm of - competition. You will not be able to get an edge in this area, but - neither will your competitors be able to get an edge over you. You and - they will compete in other areas, while benefitting mutually in this - one. If your business is selling an operating system, you will not - like GNU, but that's tough on you. If your business is something else, - GNU can save you from being pushed into the expensive business of - selling operating systems. - - I would like to see GNU development supported by gifts from many - manufacturers and users, reducing the cost to each.(5) - - "Don't programmers deserve a reward for their creativity?" - - If anything deserves a reward, it is social contribution. - Creativity can be a social contribution, but only in so far as society - is free to use the results. If programmers deserve to be rewarded for - creating innovative programs, by the same token they deserve to be - punished if they restrict the use of these programs. - - "Shouldn't a programmer be able to ask for a reward for his - creativity?" - - There is nothing wrong with wanting pay for work, or seeking to - maximize one's income, as long as one does not use means that are - destructive. But the means customary in the field of software today - are based on destruction. - - Extracting money from users of a program by restricting their use of - it is destructive because the restrictions reduce the amount and the - ways that the program can be used. This reduces the amount of wealth - that humanity derives from the program. When there is a deliberate - choice to restrict, the harmful consequences are deliberate destruction. - - The reason a good citizen does not use such destructive means to - become wealthier is that, if everyone did so, we would all become - poorer from the mutual destructiveness. This is Kantian ethics; or, - the Golden Rule. Since I do not like the consequences that result if - everyone hoards information, I am required to consider it wrong for one - to do so. Specifically, the desire to be rewarded for one's creativity - does not justify depriving the world in general of all or part of that - creativity. - - "Won't programmers starve?" - - I could answer that nobody is forced to be a programmer. Most of us - cannot manage to get any money for standing on the street and making - faces. But we are not, as a result, condemned to spend our lives - standing on the street making faces, and starving. We do something - else. - - But that is the wrong answer because it accepts the questioner's - implicit assumption: that without ownership of software, programmers - cannot possibly be paid a cent. Supposedly it is all or nothing. - - The real reason programmers will not starve is that it will still be - possible for them to get paid for programming; just not paid as much as - now. - - Restricting copying is not the only basis for business in software. - It is the most common basis because it brings in the most money. If it - were prohibited, or rejected by the customer, software business would - move to other bases of organization which are now used less often. - There are always numerous ways to organize any kind of business. - - Probably programming will not be as lucrative on the new basis as it - is now. But that is not an argument against the change. It is not - considered an injustice that sales clerks make the salaries that they - now do. If programmers made the same, that would not be an injustice - either. (In practice they would still make considerably more than - that.) - - "Don't people have a right to control how their creativity is - used?" - - "Control over the use of one's ideas" really constitutes control over - other people's lives; and it is usually used to make their lives more - difficult. - - People who have studied the issue of intellectual property rights - carefully (such as lawyers) say that there is no intrinsic right to - intellectual property. The kinds of supposed intellectual property - rights that the government recognizes were created by specific acts of - legislation for specific purposes. - - For example, the patent system was established to encourage - inventors to disclose the details of their inventions. Its purpose was - to help society rather than to help inventors. At the time, the life - span of 17 years for a patent was short compared with the rate of - advance of the state of the art. Since patents are an issue only among - manufacturers, for whom the cost and effort of a license agreement are - small compared with setting up production, the patents often do not do - much harm. They do not obstruct most individuals who use patented - products. - - The idea of copyright did not exist in ancient times, when authors - frequently copied other authors at length in works of non-fiction. This - practice was useful, and is the only way many authors' works have - survived even in part. The copyright system was created expressly for - the purpose of encouraging authorship. In the domain for which it was - invented--books, which could be copied economically only on a printing - press--it did little harm, and did not obstruct most of the individuals - who read the books. - - All intellectual property rights are just licenses granted by society - because it was thought, rightly or wrongly, that society as a whole - would benefit by granting them. But in any particular situation, we - have to ask: are we really better off granting such license? What kind - of act are we licensing a person to do? - - The case of programs today is very different from that of books a - hundred years ago. The fact that the easiest way to copy a program is - from one neighbor to another, the fact that a program has both source - code and object code which are distinct, and the fact that a program is - used rather than read and enjoyed, combine to create a situation in - which a person who enforces a copyright is harming society as a whole - both materially and spiritually; in which a person should not do so - regardless of whether the law enables him to. - - "Competition makes things get done better." - - The paradigm of competition is a race: by rewarding the winner, we - encourage everyone to run faster. When capitalism really works this - way, it does a good job; but its defenders are wrong in assuming it - always works this way. If the runners forget why the reward is offered - and become intent on winning, no matter how, they may find other - strategies--such as, attacking other runners. If the runners get into - a fist fight, they will all finish late. - - Proprietary and secret software is the moral equivalent of runners - in a fist fight. Sad to say, the only referee we've got does not seem - to object to fights; he just regulates them ("For every ten yards you - run, you can fire one shot"). He really ought to break them up, and - penalize runners for even trying to fight. - - "Won't everyone stop programming without a monetary incentive?" - - Actually, many people will program with absolutely no monetary - incentive. Programming has an irresistible fascination for some - people, usually the people who are best at it. There is no shortage of - professional musicians who keep at it even though they have no hope of - making a living that way. - - But really this question, though commonly asked, is not appropriate - to the situation. Pay for programmers will not disappear, only become - less. So the right question is, will anyone program with a reduced - monetary incentive? My experience shows that they will. - - For more than ten years, many of the world's best programmers worked - at the Artificial Intelligence Lab for far less money than they could - have had anywhere else. They got many kinds of non-monetary rewards: - fame and appreciation, for example. And creativity is also fun, a - reward in itself. - - Then most of them left when offered a chance to do the same - interesting work for a lot of money. - - What the facts show is that people will program for reasons other - than riches; but if given a chance to make a lot of money as well, they - will come to expect and demand it. Low-paying organizations do poorly - in competition with high-paying ones, but they do not have to do badly - if the high-paying ones are banned. - - "We need the programmers desperately. If they demand that we stop - helping our neighbors, we have to obey." - - You're never so desperate that you have to obey this sort of demand. - Remember: millions for defense, but not a cent for tribute! - - "Programmers need to make a living somehow." - - In the short run, this is true. However, there are plenty of ways - that programmers could make a living without selling the right to use a - program. This way is customary now because it brings programmers and - businessmen the most money, not because it is the only way to make a - living. It is easy to find other ways if you want to find them. Here - are a number of examples. - - A manufacturer introducing a new computer will pay for the porting of - operating systems onto the new hardware. - - The sale of teaching, hand-holding and maintenance services could - also employ programmers. - - People with new ideas could distribute programs as freeware, asking - for donations from satisfied users, or selling hand-holding services. - I have met people who are already working this way successfully. - - Users with related needs can form users' groups, and pay dues. A - group would contract with programming companies to write programs that - the group's members would like to use. - - All sorts of development can be funded with a Software Tax: - - Suppose everyone who buys a computer has to pay x percent of the - price as a software tax. The government gives this to an agency - like the NSF to spend on software development. - - But if the computer buyer makes a donation to software development - himself, he can take a credit against the tax. He can donate to - the project of his own choosing--often, chosen because he hopes to - use the results when it is done. He can take a credit for any - amount of donation up to the total tax he had to pay. - - The total tax rate could be decided by a vote of the payers of the - tax, weighted according to the amount they will be taxed on. - - The consequences: - - * The computer-using community supports software development. - - * This community decides what level of support is needed. - - * Users who care which projects their share is spent on can - choose this for themselves. - - In the long run, making programs free is a step toward the - post-scarcity world, where nobody will have to work very hard just to - make a living. People will be free to devote themselves to activities - that are fun, such as programming, after spending the necessary ten - hours a week on required tasks such as legislation, family counseling, - robot repair and asteroid prospecting. There will be no need to be - able to make a living from programming. - - We have already greatly reduced the amount of work that the whole - society must do for its actual productivity, but only a little of this - has translated itself into leisure for workers because much - nonproductive activity is required to accompany productive activity. - The main causes of this are bureaucracy and isometric struggles against - competition. Free software will greatly reduce these drains in the - area of software production. We must do this, in order for technical - gains in productivity to translate into less work for us. - - ---------- Footnotes ---------- - - (1) The wording here was careless. The intention was that nobody - would have to pay for *permission* to use the GNU system. But the - words don't make this clear, and people often interpret them as saying - that copies of GNU should always be distributed at little or no charge. - That was never the intent; later on, the manifesto mentions the - possibility of companies providing the service of distribution for a - profit. - - Subsequently I have learned to distinguish carefully between "free" - in the sense of freedom and "free" in the sense of price. Free software - is software that users have the freedom to distribute and change. Some - users may obtain copies at no charge, while others pay to obtain - copies--and if the funds help support improving the software, so much - the better. The important thing is that everyone who has a copy has the - freedom to cooperate with others in using it. - - (2) This is another place I failed to distinguish carefully between - the two different meanings of "free". The statement as it stands is - not false--you can get copies of GNU software at no charge, from your - friends or over the net. But it does suggest the wrong idea. - - (3) Several such companies now exist. - - (4) The Free Software Foundation raises most of its funds from a - distribution service, although it is a charity rather than a company. - If *no one* chooses to obtain copies by ordering the from the FSF, it - will be unable to do its work. But this does not mean that proprietary - restrictions are justified to force every user to pay. If a small - fraction of all the users order copies from the FSF, that is sufficient - to keep the FSF afloat. So we ask users to choose to support us in - this way. Have you done your part? - - (5) A group of computer companies recently pooled funds to support - maintenance of the GNU C Compiler. --- 1181,1184 ---- diff -cprP --exclude=*.elc emacs-19.13/info/emacs-18 emacs-19.14/info/emacs-18 *** emacs-19.13/info/emacs-18 Tue Jun 8 07:24:33 1993 --- emacs-19.14/info/emacs-18 Thu Jun 17 19:44:46 1993 *************** *** 1,856 **** ! This is Info file ../info/emacs, produced by Makeinfo-1.54 from the input file emacs.texi.  ! File: emacs, Node: Glossary, Next: Key Index, Prev: Intro, Up: Top ! Glossary ! ******** ! Abbrev ! An abbrev is a text string which expands into a different text ! string when present in the buffer. For example, you might define ! a short word as an abbrev for a long phrase that you want to insert ! frequently. *Note Abbrevs::. ! ! Aborting ! Aborting means getting out of a recursive edit (q.v.). The ! commands `C-]' and `M-x top-level' are used for this. *Note ! Quitting::. ! ! Alt ! Alt is the name of a modifier bit which a keyboard input character ! may have. To make a character Alt, type it while holding down the ! ALT key. Such characters are given names that start with `Alt-' ! (usually written `A-' for short). *Note Alt: User Input. ! ! Auto Fill Mode ! Auto Fill mode is a minor mode in which text that you insert is ! automatically broken into lines of fixed width. *Note Filling::. ! ! Auto Saving ! Auto saving is the practice of saving the contents of an Emacs ! buffer in a specially-named file, so that the information will not ! be lost if the buffer is lost due to a system error or user error. ! *Note Auto Save::. ! ! Backup File ! A backup file records the contents that a file had before the ! current editing session. Emacs makes backup files automatically ! to help you track down or cancel changes you later regret making. ! *Note Backup::. ! ! Balance Parentheses ! Emacs can balance parentheses manually or automatically. Manual ! balancing is done by the commands to move over balanced expressions ! (*note Lists::.). Automatic balancing is done by blinking the ! parenthesis that matches one just inserted (*note Matching Parens: ! Matching.). ! ! Bind ! To bind a key sequence means to give it a binding (q.v.). *Note ! Rebinding::. ! ! Binding ! A key sequence gets its meaning in Emacs by having a binding, ! which is a command (q.v.), a Lisp function that is run when the ! user types that sequence. *Note Binding: Commands. Customization ! often involves rebinding a character to a different command ! function. The bindings of all key sequences are recorded in the ! keymaps (q.v.). *Note Keymaps::. ! ! Blank Lines ! Blank lines are lines that contain only whitespace. Emacs has ! several commands for operating on the blank lines in the buffer. ! ! Buffer ! The buffer is the basic editing unit; one buffer corresponds to one ! piece of text being edited. You can have several buffers, but at ! any time you are editing only one, the `selected' buffer, though ! several can be visible when you are using multiple windows. *Note ! Buffers::. ! ! Buffer Selection History ! Emacs keeps a buffer selection history which records how recently ! each Emacs buffer has been selected. This is used for choosing a ! buffer to select. *Note Buffers::. ! ! Button Down Event ! A button down event is the kind of input event generated right ! away when you press a mouse button. *Note Mouse Buttons::. ! ! C- ! `C' in the name of a character is an abbreviation for Control. ! *Note C-: User Input. ! ! C-M- ! `C-M-' in the name of a character is an abbreviation for ! Control-Meta. *Note C-M-: User Input. ! ! Case Conversion ! Case conversion means changing text from upper case to lower case ! or vice versa. *Note Case::, for the commands for case conversion. ! ! Characters ! Characters form the contents of an Emacs buffer; see *Note Text ! Characters::. Also, key sequences (q.v.) are usually made up of ! characters (though they may include other input events as well). ! *Note User Input::. ! ! Click Event ! A click event is the kind of input event generated when you press a ! mouse button and let it go without moving the mouse. *Note Mouse ! Buttons::. ! ! Command ! A command is a Lisp function specially defined to be able to serve ! as a key binding in Emacs. When you type a key sequence (q.v.), ! its binding (q.v.) is looked up in the relevant keymaps (q.v.) to ! find the command to run. *Note Commands::. ! ! Command Name ! A command name is the name of a Lisp symbol which is a command ! (*note Commands::.). You can invoke any command by its name using ! `M-x' (*note M-x::.). ! ! Comments ! A comment is text in a program which is intended only for humans ! reading the program, and which is marked specially so that it will ! be ignored when the program is loaded or compiled. Emacs offers ! special commands for creating, aligning and killing comments. ! *Note Comments::. ! ! Compilation ! Compilation is the process of creating an executable program from ! source code. Emacs has commands for compiling files of Emacs Lisp ! code (*note Byte Compilation: (elisp)Byte Compilation.) and ! programs in C and other languages (*note Compilation::.). ! ! Complete Key ! A complete key is a key sequence which fully specifies one action ! to be performed by Emacs. For example, `X' and `C-f' and `C-x m' ! are complete keys. Complete keys derive their meanings from being ! bound (q.v.) to commands (q.v.). Thus, `X' is conventionally ! bound to a command to insert `X' in the buffer; `C-x m' is ! conventionally bound to a command to begin composing a mail ! message. *Note Keys::. ! ! Completion ! Completion is what Emacs does when it automatically fills out an ! abbreviation for a name into the entire name. Completion is done ! for minibuffer (q.v.) arguments when the set of possible valid ! inputs is known; for example, on command names, buffer names, and ! file names. Completion occurs when TAB, SPC or RET is typed. ! *Note Completion::. ! ! Continuation Line ! When a line of text is longer than the width of the window, it ! takes up more than one screen line when displayed. We say that the ! text line is continued, and all screen lines used for it after the ! first are called continuation lines. *Note Continuation: Basic. ! ! Control Character ! ASCII characters with octal codes 0 through 037, and also code ! 0177, do not have graphic images assigned to them. These are the ! Control characters. To type a Control character, hold down the ! CTRL key and type the corresponding non-Control character. RET, ! TAB, ESC, LFD and DEL are all control characters. *Note User ! Input::. ! ! When you are using the X Window System, every non-control ! character has a corresponding control character variant. ! ! Copyleft ! A copyleft is a notice giving the public legal permission to ! redistribute a program or other work of art. Copylefts are used by ! left-wing programmers to give people equal rights, just as ! copyrights are used by right-wing programmers to gain power over ! other people. ! ! Current Buffer ! The current buffer in Emacs is the Emacs buffer on which most ! editing commands operate. You can select any Emacs buffer as the ! current one. *Note Buffers::. ! ! Current Line ! The line point is on (*note Point::.). ! ! Current Paragraph ! The paragraph that point is in. If point is between paragraphs, ! the current paragraph is the one that follows point. *Note ! Paragraphs::. ! ! Current Defun ! The defun (q.v.) that point is in. If point is between defuns, the ! current defun is the one that follows point. *Note Defuns::. ! ! Cursor ! The cursor is the rectangle on the screen which indicates the ! position called point (q.v.) at which insertion and deletion takes ! place. The cursor is on or under the character that follows ! point. Often people speak of `the cursor' when, strictly ! speaking, they mean `point'. *Note Cursor: Basic. ! ! Customization ! Customization is making minor changes in the way Emacs works. It ! is often done by setting variables (*note Variables::.) or by ! rebinding key sequences (*note Keymaps::.). ! ! Default Argument ! The default for an argument is the value that will be assumed if ! you do not specify one. When the minibuffer is used to read an ! argument, the default argument is used if you just type RET. ! *Note Minibuffer::. ! ! Default Directory ! When you specify a file name that does not start with `/' or `~', ! it is interpreted relative to the current buffer's default ! directory. *Note Default Directory: Minibuffer File. ! ! Defun ! A defun is a list at the top level of parenthesis or bracket ! structure in a program. It is so named because most such lists in ! Lisp programs are calls to the Lisp function `defun'. *Note ! Defuns::. ! ! DEL ! DEL is a character that runs the command to delete one character of ! text. *Note DEL: Basic. ! ! Deletion ! Deletion means erasing text without copying it into the kill ring ! (q.v.). The alternative is killing (q.v.). *Note Deletion: ! Killing. ! ! Deletion of Files ! Deleting a file means erasing it from the file system. *Note Misc ! File Ops::. ! ! Deletion of Messages ! Deleting a message means flagging it to be eliminated from your ! mail file. Until you expunge (q.v.) the mail file, you can still ! undelete the messages you have deleted. *Note Rmail Deletion::. ! ! Deletion of Windows ! Deleting a window means eliminating it from the screen. Other ! windows expand to use up the space. The deleted window can never ! come back, but no actual text is thereby lost. *Note Windows::. ! ! Directory ! File directories are named collections in the file system, within ! which you can place individual files or subdirectories. *Note ! Directories: ListDir. ! ! Dired ! Dired is the Emacs facility that displays the contents of a file ! directory and allows you to "edit the directory", performing ! operations on the files in the directory. *Note Dired::. ! ! Disabled Command ! A disabled command is one that you may not run without special ! confirmation. The usual reason for disabling a command is that it ! is confusing for beginning users. *Note Disabling::. ! ! Down Event ! Short for `button down event'. ! ! Drag Event ! A drag event is the kind of input event generated when you press a ! mouse button, move the mouse, and then release the button. *Note ! Mouse Buttons::. ! ! Dribble File ! A file into which Emacs writes all the characters that the user ! types on the keyboard. Dribble files are used to make a record for ! debugging Emacs bugs. Emacs does not make a dribble file unless ! you tell it to. *Note Bugs::. ! ! Echo Area ! The echo area is the bottom line of the screen, used for echoing ! the arguments to commands, for asking questions, and printing brief ! messages (including error messages). *Note Echo Area::. ! ! Echoing ! Echoing is acknowledging the receipt of commands by displaying ! them (in the echo area). Emacs never echoes single-character key ! sequences; longer key sequences echo only if you pause while ! typing them. ! ! Error ! An error occurs when an Emacs command cannot execute in the current ! circumstances. When an error occurs, execution of the command ! stops (unless the command has been programmed to do otherwise) and ! Emacs reports the error by printing an error message (q.v.). ! Type-ahead is discarded. Then Emacs is ready to read another ! editing command. ! ! Error Messages ! Error messages are single lines of output printed by Emacs when the ! user asks for something impossible to do (such as, killing text ! forward when point is at the end of the buffer). They appear in ! the echo area, accompanied by a beep. ! ! ESC ! ESC is a character used as a prefix for typing Meta characters on ! keyboards lacking a META key. Unlike the META key (which, like ! the SHIFT key, is held down while another character is typed), the ! ESC key is pressed once and applies to the next character typed. ! ! Expunging ! Expunging a mail file or Dired buffer means really discarding the ! messages or files you have previously flagged for deletion. ! ! Fill Prefix ! The fill prefix is a string that should be expected at the ! beginning of each line when filling is done. It is not regarded ! as part of the text to be filled. *Note Filling::. ! ! Filling ! Filling text means moving text from line to line so that all the ! lines are approximately the same length. *Note Filling::. ! ! Frame ! A frame is a rectangular cluster of Emacs windows. When using X ! Windows, you can create more than one Emacs frame, each having its ! own X window, and then you can subdivide each frame into Emacs ! windows as you wish. *Note Frames::. ! ! Function Key ! A function key is a key on the keyboard that does not correspond ! to any character. *Note Function Keys::. ! ! Global ! Global means `independent of the current environment; in effect ! throughout Emacs'. It is the opposite of local (q.v.). Particular ! examples of the use of `global' appear below. ! ! Global Abbrev ! A global definition of an abbrev (q.v.) is effective in all major ! modes that do not have local (q.v.) definitions for the same ! abbrev. *Note Abbrevs::. ! ! Global Keymap ! The global keymap (q.v.) contains key bindings that are in effect ! except when overridden by local key bindings in a major mode's ! local keymap (q.v.). *Note Keymaps::. ! ! Global Substitution ! Global substitution means replacing each occurrence of one string ! by another string through a large amount of text. *Note Replace::. ! ! Global Variable ! The global value of a variable (q.v.) takes effect in all buffers ! that do not have their own local (q.v.) values for the variable. ! *Note Variables::. ! ! Graphic Character ! Graphic characters are those assigned pictorial images rather than ! just names. All the non-Meta (q.v.) characters except for the ! Control (q.v.) characters are graphic characters. These include ! letters, digits, punctuation, and spaces; they do not include RET ! or ESC. In Emacs, typing a graphic character inserts that ! character (in ordinary editing modes). *Note Basic Editing: Basic. ! ! Hardcopy ! Hardcopy means printed output. Emacs has commands for making ! printed listings of text in Emacs buffers. *Note Hardcopy::. ! ! HELP ! You can type HELP at any time to ask what options you have, or to ! ask what any command does. The character HELP is really `C-h'. ! *Note Help::. ! ! Hyper ! Hyper is the name of a modifier bit which a keyboard input ! character may have. To make a character Hyper, type it while ! holding down the HYPER key. Such characters are given names that ! start with `Hyper-' (usually written `H-' for short). *Note ! Hyper: User Input. ! ! Inbox ! An inbox is a file in which mail is delivered by the operating ! system. Rmail transfers mail from inboxes to mail files (q.v.) in ! which the mail is then stored permanently or until explicitly ! deleted. *Note Rmail Inbox::. ! ! Indentation ! Indentation means blank space at the beginning of a line. Most ! programming languages have conventions for using indentation to ! illuminate the structure of the program, and Emacs has special ! commands to adjust indentation. *Note Indentation::. ! ! Insertion ! Insertion means copying text into the buffer, either from the ! keyboard or from some other place in Emacs. ! ! Justification ! Justification means adding extra spaces to lines of text to make ! them come exactly to a specified width. *Note Justification: ! Filling. ! ! Keyboard Macros ! Keyboard macros are a way of defining new Emacs commands from ! sequences of existing ones, with no need to write a Lisp program. ! *Note Keyboard Macros::. ! ! Key Sequence ! A key sequence (key, for short) is a sequence of characters that, ! when input to Emacs, is meaningful as a single unit. If the key ! sequence is enough to specify one action, it is a complete key ! (q.v.); if it is not enough, it is a prefix key (q.v.). *Note ! Keys::. ! ! Keymap ! The keymap is the data structure that records the bindings (q.v.) ! of key sequences to the commands that they run. For example, the ! global keymap binds the character `C-n' to the command function ! `next-line'. *Note Keymaps::. ! ! Keyboard Translation Table ! The keyboard translation table is an array that translates the ! character codes that come from the terminal into the character ! codes that make up key sequences. *Note Keyboard Translations::. ! ! Kill Ring ! The kill ring is where all text you have killed recently is saved. ! You can reinsert any of the killed text still in the ring; this is ! called yanking (q.v.). *Note Yanking::. ! ! Killing ! Killing means erasing text and saving it on the kill ring so it ! can be yanked (q.v.) later. Some other systems call this ! "cutting". Most Emacs commands to erase text do killing, as ! opposed to deletion (q.v.). *Note Killing::. ! ! Killing Jobs ! Killing a job (such as, an invocation of Emacs) means making it ! cease to exist. Any data within it, if not saved in a file, is ! lost. *Note Exiting::. ! ! List ! A list is, approximately, a text string beginning with an open ! parenthesis and ending with the matching close parenthesis. In C ! mode and other non-Lisp modes, groupings surrounded by other kinds ! of matched delimiters appropriate to the language, such as braces, ! are also considered lists. Emacs has special commands for many ! operations on lists. *Note Lists::. ! ! Local ! Local means `in effect only in a particular context'; the relevant ! kind of context is a particular function execution, a particular ! buffer, or a particular major mode. It is the opposite of `global' ! (q.v.). Specific uses of `local' in Emacs terminology appear ! below. ! ! Local Abbrev ! A local abbrev definition is effective only if a particular major ! mode is selected. In that major mode, it overrides any global ! definition for the same abbrev. *Note Abbrevs::. ! ! Local Keymap ! A local keymap is used in a particular major mode; the key bindings ! (q.v.) in the current local keymap override global bindings of the ! same key sequences. *Note Keymaps::. ! ! Local Variable ! A local value of a variable (q.v.) applies to only one buffer. ! *Note Locals::. ! ! M- ! `M-' in the name of a character is an abbreviation for META, one ! of the modifier keys that can accompany any character. *Note User ! Input::. ! ! M-C- ! `M-C-' in the name of a character is an abbreviation for ! Control-Meta; it means the same thing as `C-M-'. If your terminal ! lacks a real META key, you type a Control-Meta character by typing ! ESC and then typing the corresponding Control character. *Note ! C-M-: User Input. ! ! M-x ! `M-x' is the key sequence which is used to call an Emacs command by ! name. This is how you run commands that are not bound to key ! sequences. *Note M-x::. ! ! Mail ! Mail means messages sent from one user to another through the ! computer system, to be read at the recipient's convenience. Emacs ! has commands for composing and sending mail, and for reading and ! editing the mail you have received. *Note Sending Mail::. *Note ! Rmail::, for how to read mail. ! ! Mail File ! A mail file is a file which is edited using Rmail and in which ! Rmail stores mail. *Note Rmail::. ! ! Major Mode ! The Emacs major modes are a mutually exclusive set of options, ! each of which configures Emacs for editing a certain sort of text. ! Ideally, each programming language has its own major mode. *Note ! Major Modes::. ! ! Mark ! The mark points to a position in the text. It specifies one end ! of the region (q.v.), point being the other end. Many commands ! operate on all the text from point to the mark. Each buffer has ! its own mark. *Note Mark::. ! ! Mark Ring ! The mark ring is used to hold several recent previous locations of ! the mark, just in case you want to move back to them. Each buffer ! has its own mark ring. *Note Mark Ring::. ! ! Message ! See `mail'. ! ! Meta ! Meta is the name of a modifier bit which a command character may ! have. It is present in a character if the character is typed with ! the META key held down. Such characters are given names that start ! with `Meta-' (usually written `M-' for short). For example, `M-<' ! is typed by holding down META and at the same time typing `<' ! (which itself is done, on most terminals, by holding down SHIFT ! and typing `,'). *Note Meta: User Input. ! ! Meta Character ! A Meta character is one whose character code includes the Meta bit. ! ! Minibuffer ! The minibuffer is the window that appears when necessary inside the ! echo area (q.v.), used for reading arguments to commands. *Note ! Minibuffer::. ! ! Minibuffer History ! The minibuffer history records the text you have specified in the ! past for minibuffer arguments, so you can conveniently use the ! same text again. *Note Minibuffer History::. ! ! Minor Mode ! A minor mode is an optional feature of Emacs which can be switched ! on or off independently of all other features. Each minor mode ! has a command to turn it on or off. *Note Minor Modes::. ! ! Minor Mode Keymap ! A keymap that belongs to a minor mode and is active when that mode ! is enabled. Minor mode keymaps take precedence over the buffer's ! local keymap, just as the local keymap takes precedence over the ! global keymap. *Note Keymaps::. ! ! Mode Line ! The mode line is the line at the bottom of each window (q.v.), ! giving status information on the buffer displayed in that window. ! *Note Mode Line::. ! ! Modified Buffer ! A buffer (q.v.) is modified if its text has been changed since the ! last time the buffer was saved (or since when it was created, if it ! has never been saved). *Note Saving::. ! ! Moving Text ! Moving text means erasing it from one place and inserting it in ! another. The usual way to move text by killing (q.v.) and then ! yanking (q.v.). *Note Killing::. ! ! Named Mark ! A named mark is a register (q.v.) in its role of recording a ! location in text so that you can move point to that location. ! *Note Registers::. ! ! Narrowing ! Narrowing means creating a restriction (q.v.) that limits editing ! in the current buffer to only a part of the text in the buffer. ! Text outside that part is inaccessible to the user until the ! boundaries are widened again, but it is still there, and saving ! the file saves it all. *Note Narrowing::. ! ! Newline ! LFD characters in the buffer terminate lines of text and are ! called newlines. *Note Newline: Text Characters. ! ! Numeric Argument ! A numeric argument is a number, specified before a command, to ! change the effect of the command. Often the numeric argument ! serves as a repeat count. *Note Arguments::. ! ! Option ! An option is a variable (q.v.) that exists so that you can ! customize Emacs by giving it a new value. *Note Variables::. ! ! Overwrite Mode ! Overwrite mode is a minor mode. When it is enabled, ordinary text ! characters replace the existing text after point rather than ! pushing it to the right. *Note Minor Modes::. ! ! Page ! A page is a unit of text, delimited by formfeed characters (ASCII ! control-L, code 014) coming at the beginning of a line. Some Emacs ! commands are provided for moving over and operating on pages. ! *Note Pages::. ! ! Paragraphs ! Paragraphs are the medium-size unit of English text. There are ! special Emacs commands for moving over and operating on paragraphs. ! *Note Paragraphs::. ! ! Parsing ! We say that certain Emacs commands parse words or expressions in ! the text being edited. Really, all they know how to do is find ! the other end of a word or expression. *Note Syntax::. ! ! Point ! Point is the place in the buffer at which insertion and deletion ! occur. Point is considered to be between two characters, not at ! one character. The terminal's cursor (q.v.) indicates the ! location of point. *Note Point: Basic. ! ! Prefix Argument ! See `numeric argument'. ! ! Prefix Key ! A prefix key is a key sequence (q.v.) whose sole function is to ! introduce a set of longer key sequences. `C-x' is an example of ! prefix key; any two-character sequence starting with `C-x' is ! therefore a legitimate key sequence. *Note Keys::. ! ! Primary Mail File ! Your primary mail file is the file named `RMAIL' in your home ! directory, where all mail that you receive is stored by Rmail ! unless you make arrangements to do otherwise. *Note Rmail::. ! ! Prompt ! A prompt is text printed to ask the user for input. Printing a ! prompt is called prompting. Emacs prompts always appear in the ! echo area (q.v.). One kind of prompting happens when the ! minibuffer is used to read an argument (*note Minibuffer::.); the ! echoing which happens when you pause in the middle of typing a ! multicharacter key sequence is also a kind of prompting (*note ! Echo Area::.). ! ! Quitting ! Quitting means cancelling a partially typed command or a running ! command, using `C-g'. *Note Quitting::. ! ! Quoting ! Quoting means depriving a character of its usual special ! significance. In Emacs this is usually done with `C-q'. What ! constitutes special significance depends on the context and on ! convention. For example, an "ordinary" character as an Emacs ! command inserts itself; so in this context, a special character is ! any character that does not normally insert itself (such as DEL, ! for example), and quoting it makes it insert itself as if it were ! not special. Not all contexts allow quoting. *Note Quoting: ! Basic. ! ! Read-Only Buffer ! A read-only buffer is one whose text you are not allowed to change. ! Normally Emacs makes buffers read-only when they contain text which ! has a special significance to Emacs; for example, Dired buffers. ! Visiting a file that is write protected also makes a read-only ! buffer. *Note Buffers::. ! ! Recursive Editing Level ! A recursive editing level is a state in which part of the ! execution of a command involves asking the user to edit some text. ! This text may or may not be the same as the text to which the ! command was applied. The mode line indicates recursive editing ! levels with square brackets (`[' and `]'). *Note Recursive Edit::. ! ! Redisplay ! Redisplay is the process of correcting the image on the screen to ! correspond to changes that have been made in the text being edited. ! *Note Redisplay: Screen. ! ! Regexp ! See `regular expression'. ! ! Region ! The region is the text between point (q.v.) and the mark (q.v.). ! Many commands operate on the text of the region. *Note Region: ! Mark. ! ! Registers ! Registers are named slots in which text or buffer positions or ! rectangles can be saved for later use. *Note Registers::. ! ! Regular Expression ! A regular expression is a pattern that can match various text ! strings; for example, `l[0-9]+' matches `l' followed by one or more ! digits. *Note Regexps::. ! ! Repeat Count ! See `numeric argument'. ! ! Replacement ! See `global substitution'. ! ! Restriction ! A buffer's restriction is the amount of text, at the beginning or ! the end of the buffer, that is temporarily inaccessible. Giving a ! buffer a nonzero amount of restriction is called narrowing (q.v.). ! *Note Narrowing::. ! ! RET ! RET is a character than in Emacs runs the command to insert a ! newline into the text. It is also used to terminate most arguments ! read in the minibuffer (q.v.). *Note Return: User Input. ! ! Saving ! Saving a buffer means copying its text into the file that was ! visited (q.v.) in that buffer. This is the way text in files ! actually gets changed by your Emacs editing. *Note Saving::. ! ! Scrolling ! Scrolling means shifting the text in the Emacs window so as to see ! a different part of the buffer. *Note Scrolling: Display. ! ! Searching ! Searching means moving point to the next occurrence of a specified ! string. *Note Search::. ! ! Selecting ! Selecting a buffer means making it the current (q.v.) buffer. ! *Note Selecting: Buffers. ! ! Self-Documentation ! Self-documentation is the feature of Emacs which can tell you what ! any command does, or give you a list of all commands related to a ! topic you specify. You ask for self-documentation with the help ! character, `C-h'. *Note Help::. ! ! Sentences ! Emacs has commands for moving by or killing by sentences. *Note ! Sentences::. ! ! Sexp ! A sexp (short for `s-expression') is the basic syntactic unit of ! Lisp in its textual form: either a list, or Lisp atom. Many Emacs ! commands operate on sexps. The term `sexp' is generalized to ! languages other than Lisp, to mean a syntactically recognizable ! expression. *Note Sexps: Lists. ! ! Simultaneous Editing ! Simultaneous editing means two users modifying the same file at ! once. Simultaneous editing if not detected can cause one user to ! lose his work. Emacs detects all cases of simultaneous editing ! and warns the user to investigate them. *Note Simultaneous ! Editing: Interlocking. ! ! String ! A string is a kind of Lisp data object which contains a sequence of ! characters. Many Emacs variables are intended to have strings as ! values. The Lisp syntax for a string consists of the characters in ! the string with a `"' before and another `"' after. A `"' that is ! part of the string must be written as `\"' and a `\' that is part ! of the string must be written as `\\'. All other characters, ! including newline, can be included just by writing them inside the ! string; however, escape sequences as in C, such as `\n' for ! newline or `\241' using an octal character code, are allowed as ! well. ! ! String Substitution ! See `global substitution'. ! ! Syntax Table ! The syntax table tells Emacs which characters are part of a word, ! which characters balance each other like parentheses, etc. *Note ! Syntax::. ! ! Super ! Super is the name of a modifier bit which a keyboard input ! character may have. To make a character Super, type it while ! holding down the SUPER key. Such characters are given names that ! start with `Super-' (usually written `s-' for short). *Note ! Super: User Input. ! ! Tag Table ! A tag table is a file that serves as an index to the function ! definitions in one or more other files. *Note Tags::. ! ! Termscript File ! A termscript file contains a record of all characters sent by ! Emacs to the terminal. It is used for tracking down bugs in Emacs ! redisplay. Emacs does not make a termscript file unless you tell ! it to. *Note Bugs::. ! ! Text ! Two meanings (*note Text::.): ! ! * Data consisting of a sequence of characters, as opposed to ! binary numbers, images, graphics commands, executable ! programs, and the like. The contents of an Emacs buffer are ! always text in this sense. ! ! * Data consisting of written human language, as opposed to ! programs, or following the stylistic conventions of human ! language. ! ! Top Level ! Top level is the normal state of Emacs, in which you are editing ! the text of the file you have visited. You are at top level ! whenever you are not in a recursive editing level (q.v.) or the ! minibuffer (q.v.), and not in the middle of a command. You can ! get back to top level by aborting (q.v.) and quitting (q.v.). ! *Note Quitting::. ! ! Transposition ! Transposing two units of text means putting each one into the place ! formerly occupied by the other. There are Emacs commands to ! transpose two adjacent characters, words, sexps (q.v.) or lines ! (*note Transpose::.). ! ! Truncation ! Truncating text lines in the display means leaving out any text on ! a line that does not fit within the right margin of the window ! displaying it. See also `continuation line'. *Note Truncation: ! Basic. ! ! Undoing ! Undoing means making your previous editing go in reverse, bringing ! back the text that existed earlier in the editing session. *Note ! Undo::. ! ! Variable ! A variable is an object in Lisp that can store an arbitrary value. ! Emacs uses some variables for internal purposes, and has others ! (known as `options' (q.v.)) just so that you can set their values ! to control the behavior of Emacs. The variables used in Emacs ! that you are likely to be interested in are listed in the ! Variables Index in this manual. *Note Variables::, for ! information on variables. ! ! Version Control ! Version control systems keep track of multiple versions of a ! source file. They provide a more powerful alternative to keeping ! backup files (q.v.). *Note Version Control::. ! ! Visiting ! Visiting a file means loading its contents into a buffer (q.v.) ! where they can be edited. *Note Visiting::. ! ! Whitespace ! Whitespace is any run of consecutive formatting characters (space, ! tab, newline, and backspace). ! ! Widening ! Widening is removing any restriction (q.v.) on the current buffer; ! it is the opposite of narrowing (q.v.). *Note Narrowing::. ! ! Window ! Emacs divides a frame (q.v.) into one or more windows, each of ! which can display the contents of one buffer (q.v.) at any time. ! *Note Screen::, for basic information on how Emacs uses the screen. ! *Note Windows::, for commands to control the use of windows. ! ! Word Abbrev ! Synonymous with `abbrev'. ! ! Word Search ! Word search is searching for a sequence of words, considering the ! punctuation between them as insignificant. *Note Word Search::. ! ! Yanking ! Yanking means reinserting text previously killed. It can be used ! to undo a mistaken kill, or for copying or moving text. Some other ! systems call this "pasting". *Note Yanking::. --- 1,961 ---- ! This is Info file ../info/emacs, produced by Makeinfo-1.55 from the input file emacs.texi.  ! File: emacs, Node: Antinews, Next: Manifesto, Prev: Command Arguments, Up: Top ! Emacs 18 Antinews ! ***************** ! For those users who live backwards in time, here is information about ! downgrading to Emacs version 18. We hope you will enjoy the greater ! simplicity that results from the absence of many Emacs 19 features. ! ! Packages Removed ! ================ ! ! To reduce the size of the distribution, we have eliminated numerous ! packages including GNUS, VC (version control), Hexl (for editing binary ! files), Edebug, Emerge, Mpuz, Spook, and Gomoku. ! ! Major modes removed in Emacs 18 include C++ mode, Awk mode, Icon ! mode, Asm mode, Makefile mode, Perl mode and SGML mode. ! ! The function `enable-flow-control' does not exist; see the file ! `PROBLEMS' in the Emacs distribution for directions for coping with ! flow control. ! ! The Calendar feature provided is a very simple one. All it can do is ! display three months, by default centered around the current month. If ! you give it a numeric argument, that specifies the number of months ! forward or back. ! ! Fundamental Changes ! =================== ! ! Auto save and garbage collection happen only while you are typing, ! never while you are idle. This is to make them more like affectionate ! pets. Think of them as cats that like to sit on your terminal only ! when you are working there. ! ! Transient Mark mode and Line Number mode are absent in Emacs 18. If ! you are an Emacs user, you are smart enough to keep track of the mark ! in your head, and you don't need line numbers because you can search ! for precisely the text you want. ! ! There are no menu bars or scroll bars; no faces, text properties or ! overlays. ! ! There are no minibuffer history commands. ! ! There is only one frame, so the Emacs 19 `C-x 5' command series is ! meaningless. Instead, `C-x 5' in Emacs 18 splits the selected window ! horizontally (like `C-x 3' in Emacs 19). ! ! Another simplification in Emacs 18 is that all input events are ! characters. Function keys and arrow keys are represented as sequences ! of characters; the terminal-specific Emacs Lisp file for your terminal ! is responsible for defining them. Mouse buttons are defined by a ! special keymap, `mouse-map'. See the file `x-mouse.el' for how to bind ! mouse clicks. ! ! Character codes 128 and above always display using `\NNN' notation. ! For codes 0 through 31, you can choose between `\NNN' and `^C' by ! setting the variable `ctl-arrow'; but that is the only thing you can ! specify about how character codes should display. ! ! You can't refer to files on other machines using special "magic" ! file names. Instead, you must use the `ftp' library with commands such ! as `M-x ftp-find-file' and `M-x ftp-write-file'. ! ! The character for terminating an incremental search is now ESC, not ! RET as in Emacs 19. If you type RET, that searches for a newline; ! thus, you can insert a newline in the search string just as you would ! insert it in the text. ! ! Key Binding Changes ! =================== ! ! The key for `backward-paragraph' is now `M-['. The key for ! `forward-paragraph' is now `M-]'. ! ! The command `repeat-complex-command' is now on `C-x ESC'. ! ! The register commands have different key bindings: ! ! `C-x /' ! `point-to-register' ! ! `C-x j' ! `jump-to-register' ! ! `C-x x' ! `copy-to-register' ! ! `C-x g' ! `insert-register' ! ! `C-x r' ! `copy-rectangle-to-register' ! ! The narrowing commands have also been moved: ! ! `C-x n' ! `narrow-to-region' ! ! `C-x p' ! `narrow-to-page' ! ! `C-x w' ! `widen' ! ! And the abbrev commands as well: ! ! `C-x C-a' ! `add-mode-abbrev' ! ! `C-x +' ! `add-global-abbrev' ! ! `C-x C-h' ! `inverse-add-mode-abbrev' ! ! `C-x -' ! `inverse-add-global-abbrev' ! ! `C-x `' ! `expand-abbrev' ! ! There are no key bindings for the rectangle commands. ! ! `C-x a' now runs the command `append-to-buffer'. ! ! The key bindings `C-x 4 r' and `C-x 4 C-o' do not exist. ! ! The help commands `C-h C-f', `C-h C-k' and `C-h p' do not exist in ! Emacs 18. ! ! The command `C-M-l' (`reposition-window') is absent. Likewise ! `C-M-r' (`isearch-backward-regexp'). ! ! The "two column" commands starting with `C-x 6' don't exist in Emacs ! 18. ! ! The TeX mode bindings of `C-c {' and `C-c }' have been moved to ! `M-{' and `M-}'. (These commands are `up-list' and ! `tex-insert-braces'; they are the TeX equivalents of `M-(' and `M-)'.) ! ! Incremental Search Changes ! ========================== ! ! As mentioned above, the character for terminating an incremental ! search is now ESC, not RET as in Emacs 19. If you type RET, that ! searches for a newline; thus, you can insert a newline in the search ! string just as you would insert it in the text. ! ! There is no ring of previous search strings in Emacs 18. You can ! reuse the most recent search string, but that's all. ! ! If `case-fold-search' is non-`nil', then incremental search is ! *always* case-insensitive. Typing an upper-case letter in the search ! string has no effect on this. ! ! Spaces in the incremental search string match only spaces. ! ! The meanings of the special search characters are no longer ! controlled by a keymap. Instead, particular variables named ! `search-...-char' specify the character that should have a particular ! function. For example, `C-s' repeats the search because the value of ! `search-repeat-char' is `?\C-s'. ! ! Editing Command Changes ! ======================= ! ! `C-n' (`next-line') does not check the variable ! `next-line-add-newlines'. ! ! The sexp commands such as `C-M-f' no longer know anything about ! comments, in modes such as Lisp mode where the end of a comment is the ! end of the line. They treat the text inside a comment as if it were ! actual code. If comments containing unbalanced parentheses cause ! trouble, you can use the commands `C-M-n' and `C-M-p', which do ignore ! comments. ! ! You can't store file names in registers, and there are no frame ! configurations at all. The command `M-x string-rectangle' does not ! exist either. ! ! The undo command in Emacs 18 is not careful about where to leave ! point when you undo a deletion. It ends up at one end or the other of ! the text just undeleted. You must be on the lookout for this, and move ! point appropriately. ! ! Kill commands do nothing useful in read-only buffers. They just ! beep. ! ! `M-z C' in Emacs 18 kills up to but not including the first ! occurrence of C. If C does not occur in the buffer after point, `M-z' ! kills the whole rest of the buffer. ! ! The function `erase-buffer' is not a command in Emacs 18. You can ! call it from a Lisp program, but not interactively. The motivation for ! this is to protect you from accidentally deleting (not killing) the ! entire text of a buffer that you want to keep. With subsequent changes ! in even earlier Emacs versions (such as version 18.54), you might be ! unable to undo the `erase-buffer'. ! ! `M-x fill-nonuniform-paragraphs' and Adaptive Fill mode do not exist. ! ! Other Brief Notes ! ================= ! ! Outline mode exists only as a major mode, not as a minor mode. ! ! `M-!' (`shell-command') always runs the command synchronously, even ! if the command ends with `&'. ! ! Emacs 18 has no special mode for change log files. It is a good idea ! to use Indented Text mode, and specify 8 as the value of the variable ! `left-margin'. ! ! The command `M-x comment-region' does not exist. The command `M-x ! super-apropos' does not exist. ! ! `C-x q' (`kbd-macro-query') now uses `C-d' to terminate all ! iterations of the keyboard macro, rather than ESC. ! ! The `M-x setenv' command is missing in Emacs 18. ! ! `M-$' now uses the Unix spell program instead of the GNU program ! Ispell. If the word around point is a misspelling, it asks you for a ! replacement. ! ! To check spelling of larger units of text, use `M-x spell-region' or ! `M-x spell-buffer'. These commands check all words in the specified ! piece of text. For each word that is not correct, they ask you to ! specify a replacement, and then replace each occurrence. ! ! `M-x gdb' still exists in Emacs 18. `M-x dbx' exists, but is ! somewhat different (use `C-h m' to find the details). `M-x sdb' does ! not exist at all, but who wants to use SDB? ! ! In Buffer Menu mode, the commands `%' and `C-o' don't work in Emacs ! 18. The `v' command has been eliminated and merged with the `q' ! command, which now exits the buffer menu, displaying all the buffers ! that you have marked. ! ! The View commands (such as `M-x view-buffer' and `M-x view-file') ! now use recursive edits. When you exit viewing, the recursive edit ! returns to its caller. ! ! Emacs 18, like most programs, interprets command line options only ! when it is started-not later on. ! ! The variable to control whether files can set local variables is ! called `inhibit-local-variables'. A non-`nil' value means ask the user ! before obeying any local variables lists. ! ! The user option for controlling use of the `eval' local variable is ! now called `inhibit-local-eval'. A non-`nil' value means to ask the ! user before obeying any `eval' local variable. ! ! File Handling Changes ! ===================== ! ! As mentioned above, you can't refer to files on other machines using ! special "magic" file names. Instead, you must use the `ftp' library ! with commands such as `M-x ftp-find-file' and `M-x ftp-write-file'. ! ! When you run `M-x revert-buffer' with no prefix argument, if the ! buffer has an auto save file more recent that the visited file, ! `revert-buffer' asks whether to revert from the auto save file instead. ! ! When `C-x s' (`save-some-buffers') offers to save each buffer, you ! have only two choices: save it, or don't save it. ! ! `M-x recover-file' turns off Auto Save mode in the current buffer. ! To turn it on again, use `M-x auto-save-mode'. ! ! The command `M-x rename-uniquely' does not exist; instead, use `M-x ! rename-buffer' and try various names until you find one that isn't in ! use. Completion can make this easier. ! ! The directory name abbreviation feature is gone in Emacs 18. ! ! Emacs 18 has no idea of file truenames, and does not try to detect ! when you visit a file via a symbolic link. You should check manually ! when you visit a file, so as to edit it in the directory where it is ! actually stored. This way you can make sure that backup files and ! change log entries go in the proper directory. ! ! `M-x compare-windows' ignores any prefix argument and always ! considers case and whitespace differences significant. As for the ! other ways of comparing files, `M-x diff' and `M-x diff-backup', they ! don't exist at all. ! ! Mail Changes ! ============ ! ! `%' is now a word-component character in Mail mode. This is to be ! compatible with Text mode. ! ! The variable `mail-signature' is not meaningful; if you wish to ! insert your signature in a mail message, you must type `C-c C-w'. ! ! Mail aliases expand only when you send the message--never when you ! type them in. ! ! Rmail now gets new mail into your primary mail file from `~/mbox' as ! well as from your system inbox file. This is handy if you occasionally ! check your newest mail with the `mail' program; whatever you have ! looked at and saved with `mail' will be brought into Rmail the next ! time you run Rmail. ! ! The Rmail summary buffer is now much simpler. Only a few special ! commands are available there: `n', `p', and `j' for motion, `d' and `u' ! for deletion, and SPC and DEL for scrolling the message. To do ! anything else, you must go to the Rmail buffer. Also, changes in the ! Rmail buffer don't update the summary; to do that, you must make a new ! summary. ! ! The Rmail command `rmail-resend' (accessible via `f' with a prefix ! argument in Emacs 19) does not exist in Emacs 18. Neither does ! `rmail-retry-failure' (`M-m' in Emacs 19). ! ! The `e' command is now "expunge", just like `x'. To edit the ! current message, type `w', which works in Emacs 19 as well. If you ! type `e' meaning to edit, and it expunges instead--well, you shouldn't ! have deleted those messages if you still wanted them. ! ! The `<' and `b' commands have been removed in Emacs 18. Likewise ! `C-M-t' (`rmail-summarize-by-topic') and `M-x unrmail'. Rmail in Emacs ! 18 is so good, that we can't imagine anyone who has tried it would ever ! wish to use another mail reader. ! ! The default output file for `o' is now always the last file that you ! used with `o'. The variable `rmail-output-file-alist' has no special ! meaning. ! ! Emacs 18 Rmail does not know anything about Content Length fields in ! messages. ! ! C Mode Changes ! ============== ! ! In C mode, the keys `M-a' and `M-e' now have their usual meanings: ! motion by sentences. This is useful while editing the comments in a C ! program, but not useful for editing code. We hope this will encourage ! you to write lots of comments. ! ! The commands `M-x c-up-conditional' and `M-x c-backslash-region' have ! been removed entirely in Emacs 18. ! ! Compilation Changes ! =================== ! ! `M-x compile' now has a much simpler and faster parser for error ! messages. However, it understands fewer different formats for error ! messages, and is not as easy to customize. ! ! There is no special mode for compilation buffers. When you select ! the compilation buffer itself, it is just ordinary text. ! ! Speaking of selecting the compilation buffer, you do need to do that ! from time to time to see whether the compilation has finished, because ! Emacs 18 does not display `Compiling' in the mode line to tell you the ! compilation is still going. ! ! Shell Mode ! ========== ! ! Shell mode in Emacs 18 does nothing special for the keys TAB, `M-?', ! `C-a', `C-d'. The commands `M-x dirs' and `M-x send-invisible' are ! also gone. ! ! The history commands `M-p' and so on are not available either; ! instead, use `C-c C-y' (`copy-last-shell-input'). This copies the ! previous bunch of shell input, and inserts it into the buffer before ! point. No final newline is inserted, and the input copied is not ! resubmitted until you type RET. ! ! Use `C-c C-d' to send an "end of file" to the shell process. ! ! Dired Changes ! ============= ! ! For simplicity, Dired in Emacs 18 supports just one kind of mark: the ! deletion flag, `*'. The Emacs 19 Dired commands for flagging files do ! work in Emacs 18, but all the other mark-related commands do not. ! ! The Dired subdirectory commands don't exist in Emacs 18. A Dired ! buffer can contain only one directory. In particular, this means that ! the variable `dired-listing-switches' must not contain the `R' option. ! (The `F' option is also not allowed.) ! ! The commands for using `find' with Dired have been removed for ! simplicity, also. ! ! Emacs 18 Dired provides the following commands for manipulating files ! immediately, and no others. All of these commands apply to the file ! listed on the current line. ! ! `c' ! Copies the file described on the current line. You must supply a ! file name to copy to, using the minibuffer. ! ! `f' ! Visits the file described on the current line. It is just like ! typing `C-x C-f' and supplying that file name. If the file on ! this line is a subdirectory, `f' actually causes Dired to be ! invoked on that subdirectory. ! ! `G' ! Change the group of the file described on the current line. ! ! `M' ! Change the file mode of the file described on the current line. ! ! `o' ! Like `f', but uses another window to display the file's buffer. ! The Dired buffer remains visible in the first window. This is ! like using `C-x 4 C-f' to visit the file. ! ! `O' ! Change the owner of the file described on the current line. (On ! most systems, you must be a superuser to do this.) ! ! `r' ! Renames the file described on the current line. You must supply a ! file name to rename to, using the minibuffer. ! ! `v' ! Views the file described on this line using `M-x view-file'. ! Viewing a file is like visiting it, but is slanted toward moving ! around in the file conveniently and does not allow changing the ! file. ! !  ! File: emacs, Node: Manifesto, Prev: Antinews, Up: Top ! ! The GNU Manifesto ! ***************** ! ! The GNU Manifesto which appears below was written by Richard ! Stallman at the beginning of the GNU project, to ask for ! participation and support. For the first few years, it was ! updated in minor ways to account for developments, but now it ! seems best to leave it unchanged as most people have seen it. ! ! Since that time, we have learned about certain common ! misunderstandings that different wording could help avoid. ! Footnotes help clarify these points. ! ! For up-to-date information about the available GNU software, ! please see the latest issue of the GNU's Bulletin. The list is ! much too long to include here. ! ! What's GNU? Gnu's Not Unix! ! ============================ ! ! GNU, which stands for Gnu's Not Unix, is the name for the complete ! Unix-compatible software system which I am writing so that I can give it ! away free to everyone who can use it.(1) Several other volunteers are ! helping me. Contributions of time, money, programs and equipment are ! greatly needed. ! ! So far we have an Emacs text editor with Lisp for writing editor ! commands, a source level debugger, a yacc-compatible parser generator, ! a linker, and around 35 utilities. A shell (command interpreter) is ! nearly completed. A new portable optimizing C compiler has compiled ! itself and may be released this year. An initial kernel exists but ! many more features are needed to emulate Unix. When the kernel and ! compiler are finished, it will be possible to distribute a GNU system ! suitable for program development. We will use TeX as our text ! formatter, but an nroff is being worked on. We will use the free, ! portable X window system as well. After this we will add a portable ! Common Lisp, an Empire game, a spreadsheet, and hundreds of other ! things, plus on-line documentation. We hope to supply, eventually, ! everything useful that normally comes with a Unix system, and more. ! ! GNU will be able to run Unix programs, but will not be identical to ! Unix. We will make all improvements that are convenient, based on our ! experience with other operating systems. In particular, we plan to ! have longer file names, file version numbers, a crashproof file system, ! file name completion perhaps, terminal-independent display support, and ! perhaps eventually a Lisp-based window system through which several ! Lisp programs and ordinary Unix programs can share a screen. Both C ! and Lisp will be available as system programming languages. We will ! try to support UUCP, MIT Chaosnet, and Internet protocols for ! communication. ! ! GNU is aimed initially at machines in the 68000/16000 class with ! virtual memory, because they are the easiest machines to make it run ! on. The extra effort to make it run on smaller machines will be left ! to someone who wants to use it on them. ! ! To avoid horrible confusion, please pronounce the `G' in the word ! `GNU' when it is the name of this project. ! ! Why I Must Write GNU ! ==================== ! ! I consider that the golden rule requires that if I like a program I ! must share it with other people who like it. Software sellers want to ! divide the users and conquer them, making each user agree not to share ! with others. I refuse to break solidarity with other users in this ! way. I cannot in good conscience sign a nondisclosure agreement or a ! software license agreement. For years I worked within the Artificial ! Intelligence Lab to resist such tendencies and other inhospitalities, ! but eventually they had gone too far: I could not remain in an ! institution where such things are done for me against my will. ! ! So that I can continue to use computers without dishonor, I have ! decided to put together a sufficient body of free software so that I ! will be able to get along without any software that is not free. I ! have resigned from the AI lab to deny MIT any legal excuse to prevent ! me from giving GNU away. ! ! Why GNU Will Be Compatible with Unix ! ==================================== ! ! Unix is not my ideal system, but it is not too bad. The essential ! features of Unix seem to be good ones, and I think I can fill in what ! Unix lacks without spoiling them. And a system compatible with Unix ! would be convenient for many other people to adopt. ! ! How GNU Will Be Available ! ========================= ! ! GNU is not in the public domain. Everyone will be permitted to ! modify and redistribute GNU, but no distributor will be allowed to ! restrict its further redistribution. That is to say, proprietary ! modifications will not be allowed. I want to make sure that all ! versions of GNU remain free. ! ! Why Many Other Programmers Want to Help ! ======================================= ! ! I have found many other programmers who are excited about GNU and ! want to help. ! ! Many programmers are unhappy about the commercialization of system ! software. It may enable them to make more money, but it requires them ! to feel in conflict with other programmers in general rather than feel ! as comrades. The fundamental act of friendship among programmers is the ! sharing of programs; marketing arrangements now typically used ! essentially forbid programmers to treat others as friends. The ! purchaser of software must choose between friendship and obeying the ! law. Naturally, many decide that friendship is more important. But ! those who believe in law often do not feel at ease with either choice. ! They become cynical and think that programming is just a way of making ! money. ! ! By working on and using GNU rather than proprietary programs, we can ! be hospitable to everyone and obey the law. In addition, GNU serves as ! an example to inspire and a banner to rally others to join us in ! sharing. This can give us a feeling of harmony which is impossible if ! we use software that is not free. For about half the programmers I ! talk to, this is an important happiness that money cannot replace. ! ! How You Can Contribute ! ====================== ! ! I am asking computer manufacturers for donations of machines and ! money. I'm asking individuals for donations of programs and work. ! ! One consequence you can expect if you donate machines is that GNU ! will run on them at an early date. The machines should be complete, ! ready to use systems, approved for use in a residential area, and not ! in need of sophisticated cooling or power. ! ! I have found very many programmers eager to contribute part-time ! work for GNU. For most projects, such part-time distributed work would ! be very hard to coordinate; the independently-written parts would not ! work together. But for the particular task of replacing Unix, this ! problem is absent. A complete Unix system contains hundreds of utility ! programs, each of which is documented separately. Most interface ! specifications are fixed by Unix compatibility. If each contributor ! can write a compatible replacement for a single Unix utility, and make ! it work properly in place of the original on a Unix system, then these ! utilities will work right when put together. Even allowing for Murphy ! to create a few unexpected problems, assembling these components will ! be a feasible task. (The kernel will require closer communication and ! will be worked on by a small, tight group.) ! ! If I get donations of money, I may be able to hire a few people full ! or part time. The salary won't be high by programmers' standards, but ! I'm looking for people for whom building community spirit is as ! important as making money. I view this as a way of enabling dedicated ! people to devote their full energies to working on GNU by sparing them ! the need to make a living in another way. ! ! Why All Computer Users Will Benefit ! =================================== ! ! Once GNU is written, everyone will be able to obtain good system ! software free, just like air.(2) ! ! This means much more than just saving everyone the price of a Unix ! license. It means that much wasteful duplication of system programming ! effort will be avoided. This effort can go instead into advancing the ! state of the art. ! ! Complete system sources will be available to everyone. As a result, ! a user who needs changes in the system will always be free to make them ! himself, or hire any available programmer or company to make them for ! him. Users will no longer be at the mercy of one programmer or company ! which owns the sources and is in sole position to make changes. ! ! Schools will be able to provide a much more educational environment ! by encouraging all students to study and improve the system code. ! Harvard's computer lab used to have the policy that no program could be ! installed on the system if its sources were not on public display, and ! upheld it by actually refusing to install certain programs. I was very ! much inspired by this. ! ! Finally, the overhead of considering who owns the system software ! and what one is or is not entitled to do with it will be lifted. ! ! Arrangements to make people pay for using a program, including ! licensing of copies, always incur a tremendous cost to society through ! the cumbersome mechanisms necessary to figure out how much (that is, ! which programs) a person must pay for. And only a police state can ! force everyone to obey them. Consider a space station where air must ! be manufactured at great cost: charging each breather per liter of air ! may be fair, but wearing the metered gas mask all day and all night is ! intolerable even if everyone can afford to pay the air bill. And the ! TV cameras everywhere to see if you ever take the mask off are ! outrageous. It's better to support the air plant with a head tax and ! chuck the masks. ! ! Copying all or parts of a program is as natural to a programmer as ! breathing, and as productive. It ought to be as free. ! ! Some Easily Rebutted Objections to GNU's Goals ! ============================================== ! ! "Nobody will use it if it is free, because that means they can't ! rely on any support." ! ! "You have to charge for the program to pay for providing the ! support." ! ! If people would rather pay for GNU plus service than get GNU free ! without service, a company to provide just service to people who have ! obtained GNU free ought to be profitable.(3) ! ! We must distinguish between support in the form of real programming ! work and mere handholding. The former is something one cannot rely on ! from a software vendor. If your problem is not shared by enough ! people, the vendor will tell you to get lost. ! ! If your business needs to be able to rely on support, the only way ! is to have all the necessary sources and tools. Then you can hire any ! available person to fix your problem; you are not at the mercy of any ! individual. With Unix, the price of sources puts this out of ! consideration for most businesses. With GNU this will be easy. It is ! still possible for there to be no available competent person, but this ! problem cannot be blamed on distribution arrangements. GNU does not ! eliminate all the world's problems, only some of them. ! ! Meanwhile, the users who know nothing about computers need ! handholding: doing things for them which they could easily do ! themselves but don't know how. ! ! Such services could be provided by companies that sell just ! hand-holding and repair service. If it is true that users would rather ! spend money and get a product with service, they will also be willing ! to buy the service having got the product free. The service companies ! will compete in quality and price; users will not be tied to any ! particular one. Meanwhile, those of us who don't need the service ! should be able to use the program without paying for the service. ! ! "You cannot reach many people without advertising, and you must ! charge for the program to support that." ! ! "It's no use advertising a program people can get free." ! ! There are various forms of free or very cheap publicity that can be ! used to inform numbers of computer users about something like GNU. But ! it may be true that one can reach more microcomputer users with ! advertising. If this is really so, a business which advertises the ! service of copying and mailing GNU for a fee ought to be successful ! enough to pay for its advertising and more. This way, only the users ! who benefit from the advertising pay for it. ! ! On the other hand, if many people get GNU from their friends, and ! such companies don't succeed, this will show that advertising was not ! really necessary to spread GNU. Why is it that free market advocates ! don't want to let the free market decide this?(4) ! ! "My company needs a proprietary operating system to get a ! competitive edge." ! ! GNU will remove operating system software from the realm of ! competition. You will not be able to get an edge in this area, but ! neither will your competitors be able to get an edge over you. You and ! they will compete in other areas, while benefiting mutually in this ! one. If your business is selling an operating system, you will not ! like GNU, but that's tough on you. If your business is something else, ! GNU can save you from being pushed into the expensive business of ! selling operating systems. ! ! I would like to see GNU development supported by gifts from many ! manufacturers and users, reducing the cost to each.(5) ! ! "Don't programmers deserve a reward for their creativity?" ! ! If anything deserves a reward, it is social contribution. ! Creativity can be a social contribution, but only in so far as society ! is free to use the results. If programmers deserve to be rewarded for ! creating innovative programs, by the same token they deserve to be ! punished if they restrict the use of these programs. ! ! "Shouldn't a programmer be able to ask for a reward for his ! creativity?" ! ! There is nothing wrong with wanting pay for work, or seeking to ! maximize one's income, as long as one does not use means that are ! destructive. But the means customary in the field of software today ! are based on destruction. ! ! Extracting money from users of a program by restricting their use of ! it is destructive because the restrictions reduce the amount and the ! ways that the program can be used. This reduces the amount of wealth ! that humanity derives from the program. When there is a deliberate ! choice to restrict, the harmful consequences are deliberate destruction. ! ! The reason a good citizen does not use such destructive means to ! become wealthier is that, if everyone did so, we would all become ! poorer from the mutual destructiveness. This is Kantian ethics; or, ! the Golden Rule. Since I do not like the consequences that result if ! everyone hoards information, I am required to consider it wrong for one ! to do so. Specifically, the desire to be rewarded for one's creativity ! does not justify depriving the world in general of all or part of that ! creativity. ! ! "Won't programmers starve?" ! ! I could answer that nobody is forced to be a programmer. Most of us ! cannot manage to get any money for standing on the street and making ! faces. But we are not, as a result, condemned to spend our lives ! standing on the street making faces, and starving. We do something ! else. ! ! But that is the wrong answer because it accepts the questioner's ! implicit assumption: that without ownership of software, programmers ! cannot possibly be paid a cent. Supposedly it is all or nothing. ! ! The real reason programmers will not starve is that it will still be ! possible for them to get paid for programming; just not paid as much as ! now. ! ! Restricting copying is not the only basis for business in software. ! It is the most common basis because it brings in the most money. If it ! were prohibited, or rejected by the customer, software business would ! move to other bases of organization which are now used less often. ! There are always numerous ways to organize any kind of business. ! ! Probably programming will not be as lucrative on the new basis as it ! is now. But that is not an argument against the change. It is not ! considered an injustice that sales clerks make the salaries that they ! now do. If programmers made the same, that would not be an injustice ! either. (In practice they would still make considerably more than ! that.) ! ! "Don't people have a right to control how their creativity is ! used?" ! ! "Control over the use of one's ideas" really constitutes control over ! other people's lives; and it is usually used to make their lives more ! difficult. ! ! People who have studied the issue of intellectual property rights ! carefully (such as lawyers) say that there is no intrinsic right to ! intellectual property. The kinds of supposed intellectual property ! rights that the government recognizes were created by specific acts of ! legislation for specific purposes. ! ! For example, the patent system was established to encourage ! inventors to disclose the details of their inventions. Its purpose was ! to help society rather than to help inventors. At the time, the life ! span of 17 years for a patent was short compared with the rate of ! advance of the state of the art. Since patents are an issue only among ! manufacturers, for whom the cost and effort of a license agreement are ! small compared with setting up production, the patents often do not do ! much harm. They do not obstruct most individuals who use patented ! products. ! ! The idea of copyright did not exist in ancient times, when authors ! frequently copied other authors at length in works of non-fiction. This ! practice was useful, and is the only way many authors' works have ! survived even in part. The copyright system was created expressly for ! the purpose of encouraging authorship. In the domain for which it was ! invented--books, which could be copied economically only on a printing ! press--it did little harm, and did not obstruct most of the individuals ! who read the books. ! ! All intellectual property rights are just licenses granted by society ! because it was thought, rightly or wrongly, that society as a whole ! would benefit by granting them. But in any particular situation, we ! have to ask: are we really better off granting such license? What kind ! of act are we licensing a person to do? ! ! The case of programs today is very different from that of books a ! hundred years ago. The fact that the easiest way to copy a program is ! from one neighbor to another, the fact that a program has both source ! code and object code which are distinct, and the fact that a program is ! used rather than read and enjoyed, combine to create a situation in ! which a person who enforces a copyright is harming society as a whole ! both materially and spiritually; in which a person should not do so ! regardless of whether the law enables him to. ! ! "Competition makes things get done better." ! ! The paradigm of competition is a race: by rewarding the winner, we ! encourage everyone to run faster. When capitalism really works this ! way, it does a good job; but its defenders are wrong in assuming it ! always works this way. If the runners forget why the reward is offered ! and become intent on winning, no matter how, they may find other ! strategies--such as, attacking other runners. If the runners get into ! a fist fight, they will all finish late. ! ! Proprietary and secret software is the moral equivalent of runners ! in a fist fight. Sad to say, the only referee we've got does not seem ! to object to fights; he just regulates them ("For every ten yards you ! run, you can fire one shot"). He really ought to break them up, and ! penalize runners for even trying to fight. ! ! "Won't everyone stop programming without a monetary incentive?" ! ! Actually, many people will program with absolutely no monetary ! incentive. Programming has an irresistible fascination for some ! people, usually the people who are best at it. There is no shortage of ! professional musicians who keep at it even though they have no hope of ! making a living that way. ! ! But really this question, though commonly asked, is not appropriate ! to the situation. Pay for programmers will not disappear, only become ! less. So the right question is, will anyone program with a reduced ! monetary incentive? My experience shows that they will. ! ! For more than ten years, many of the world's best programmers worked ! at the Artificial Intelligence Lab for far less money than they could ! have had anywhere else. They got many kinds of non-monetary rewards: ! fame and appreciation, for example. And creativity is also fun, a ! reward in itself. ! ! Then most of them left when offered a chance to do the same ! interesting work for a lot of money. ! ! What the facts show is that people will program for reasons other ! than riches; but if given a chance to make a lot of money as well, they ! will come to expect and demand it. Low-paying organizations do poorly ! in competition with high-paying ones, but they do not have to do badly ! if the high-paying ones are banned. ! ! "We need the programmers desperately. If they demand that we stop ! helping our neighbors, we have to obey." ! ! You're never so desperate that you have to obey this sort of demand. ! Remember: millions for defense, but not a cent for tribute! ! ! "Programmers need to make a living somehow." ! ! In the short run, this is true. However, there are plenty of ways ! that programmers could make a living without selling the right to use a ! program. This way is customary now because it brings programmers and ! businessmen the most money, not because it is the only way to make a ! living. It is easy to find other ways if you want to find them. Here ! are a number of examples. ! ! A manufacturer introducing a new computer will pay for the porting of ! operating systems onto the new hardware. ! ! The sale of teaching, hand-holding and maintenance services could ! also employ programmers. ! ! People with new ideas could distribute programs as freeware, asking ! for donations from satisfied users, or selling hand-holding services. ! I have met people who are already working this way successfully. ! ! Users with related needs can form users' groups, and pay dues. A ! group would contract with programming companies to write programs that ! the group's members would like to use. ! ! All sorts of development can be funded with a Software Tax: ! ! Suppose everyone who buys a computer has to pay x percent of the ! price as a software tax. The government gives this to an agency ! like the NSF to spend on software development. ! ! But if the computer buyer makes a donation to software development ! himself, he can take a credit against the tax. He can donate to ! the project of his own choosing--often, chosen because he hopes to ! use the results when it is done. He can take a credit for any ! amount of donation up to the total tax he had to pay. ! ! The total tax rate could be decided by a vote of the payers of the ! tax, weighted according to the amount they will be taxed on. ! ! The consequences: ! ! * The computer-using community supports software development. ! ! * This community decides what level of support is needed. ! ! * Users who care which projects their share is spent on can ! choose this for themselves. ! ! In the long run, making programs free is a step toward the ! post-scarcity world, where nobody will have to work very hard just to ! make a living. People will be free to devote themselves to activities ! that are fun, such as programming, after spending the necessary ten ! hours a week on required tasks such as legislation, family counseling, ! robot repair and asteroid prospecting. There will be no need to be ! able to make a living from programming. ! ! We have already greatly reduced the amount of work that the whole ! society must do for its actual productivity, but only a little of this ! has translated itself into leisure for workers because much ! nonproductive activity is required to accompany productive activity. ! The main causes of this are bureaucracy and isometric struggles against ! competition. Free software will greatly reduce these drains in the ! area of software production. We must do this, in order for technical ! gains in productivity to translate into less work for us. ! ! ---------- Footnotes ---------- ! ! (1) The wording here was careless. The intention was that nobody ! would have to pay for *permission* to use the GNU system. But the ! words don't make this clear, and people often interpret them as saying ! that copies of GNU should always be distributed at little or no charge. ! That was never the intent; later on, the manifesto mentions the ! possibility of companies providing the service of distribution for a ! profit. Subsequently I have learned to distinguish carefully between ! "free" in the sense of freedom and "free" in the sense of price. Free ! software is software that users have the freedom to distribute and ! change. Some users may obtain copies at no charge, while others pay to ! obtain copies--and if the funds help support improving the software, so ! much the better. The important thing is that everyone who has a copy ! has the freedom to cooperate with others in using it. ! ! (2) This is another place I failed to distinguish carefully between ! the two different meanings of "free". The statement as it stands is ! not false--you can get copies of GNU software at no charge, from your ! friends or over the net. But it does suggest the wrong idea. ! ! (3) Several such companies now exist. ! ! (4) The Free Software Foundation raises most of its funds from a ! distribution service, although it is a charity rather than a company. ! If *no one* chooses to obtain copies by ordering the from the FSF, it ! will be unable to do its work. But this does not mean that proprietary ! restrictions are justified to force every user to pay. If a small ! fraction of all the users order copies from the FSF, that is sufficient ! to keep the FSF afloat. So we ask users to choose to support us in ! this way. Have you done your part? ! ! (5) A group of computer companies recently pooled funds to support ! maintenance of the GNU C Compiler. diff -cprP --exclude=*.elc emacs-19.13/info/emacs-19 emacs-19.14/info/emacs-19 *** emacs-19.13/info/emacs-19 Tue Jun 8 07:24:34 1993 --- emacs-19.14/info/emacs-19 Thu Jun 17 19:44:46 1993 *************** *** 1,512 **** ! This is Info file ../info/emacs, produced by Makeinfo-1.54 from the input file emacs.texi.  ! File: emacs, Node: Key Index, Next: Command Index, Prev: Glossary, Up: Top ! Key (Character) Index ! ********************* ! * Menu: ! * ! (Dired): Shell Commands in Dired. ! * " (TeX mode): TeX Editing. ! * # (Dired): Dired Deletion. ! * $ (Dired): Hiding Subdirectories. ! * % C (Dired): Transforming File Names. ! * % d (Dired): Dired Deletion. ! * % H (Dired): Transforming File Names. ! * % l (Dired): Transforming File Names. ! * % m (Dired): Marks vs. Flags. ! * % R (Dired): Transforming File Names. ! * % S (Dired): Transforming File Names. ! * % u (Dired): Transforming File Names. ! * * (Dired): Marks vs. Flags. ! * . (Calendar mode): Specified Dates. ! * . (Dired): Dired Deletion. ! * . (Rmail): Rmail Scrolling. ! * / (Dired): Marks vs. Flags. ! * < (Rmail): Rmail Motion. ! * = (Dired): Comparison in Dired. ! * > (Rmail): Rmail Motion. ! * @ (Dired): Marks vs. Flags. ! * BOTTOM: Moving Point. ! * DEL (Dired): Dired Deletion. ! * LEFT: Moving Point. ! * NEXT: Scrolling. ! * PRIOR: Scrolling. ! * RET (Shell mode): Shell Mode. ! * RIGHT: Moving Point. ! * SPC (Dired): Dired Commands. ! * TAB (Shell mode): Shell Mode. ! * TOP: Moving Point. ! * a (Calendar mode): Holidays. ! * a (Rmail): Rmail Labels. ! * B (Dired): Operating on Files. ! * b (Rmail): Rmail. ! * C (Dired): Operating on Files. ! * c (Dired): Marks vs. Flags. ! * c (Rmail): Rmail Reply. ! * C-@: Setting Mark. ! * C-a: Moving Point. ! * C-a (Calendar mode): Move to Beginning or End. ! * C-a (Shell mode): Shell Mode. ! * C-b: Moving Point. ! * C-b (Calendar mode): Calendar Unit Motion. ! * C-c ' (Picture mode): Insert in Picture. ! * C-c . (Picture mode): Insert in Picture. ! * C-c / (Picture mode): Insert in Picture. ! * C-c ; (Fortran mode): Fortran Comments. ! * C-c < (GUD): Commands of GUD. ! * C-c < (Picture mode): Insert in Picture. ! * C-c > (GUD): Commands of GUD. ! * C-c > (Picture mode): Insert in Picture. ! * C-c { (TeX mode): TeX Editing. ! * C-c } (TeX mode): TeX Editing. ! * C-c C-b (Outline mode): Outline Motion. ! * C-c C-b (Picture mode): Insert in Picture. ! * C-c C-b (TeX mode): TeX Print. ! * C-c C-c (Edit Abbrevs): Editing Abbrevs. ! * C-c C-c (Edit Tab Stops): Tab Stops. ! * C-c C-c (GUD): Commands of GUD. ! * C-c C-c (Mail mode): Mail Mode. ! * C-c C-c (Occur mode): Other Repeating Search. ! * C-c C-d (GUD): Commands of GUD. ! * C-c C-d (Picture mode): Basic Picture. ! * C-c C-e (LaTeX mode): LaTeX Editing. ! * C-c C-f (GUD): Commands of GUD. ! * C-c C-f (Outline mode): Outline Motion. ! * C-c C-f (Picture mode): Insert in Picture. ! * C-c C-f (TeX mode): TeX Print. ! * C-c C-f C-c (Mail mode): Mail Mode. ! * C-c C-f C-s (Mail mode): Mail Mode. ! * C-c C-f C-t (Mail mode): Mail Mode. ! * C-c C-h (Outline mode): Outline Visibility. ! * C-c C-i (GUD): Commands of GUD. ! * C-c C-i (Outline mode): Outline Visibility. ! * C-c C-k (Picture mode): Rectangles in Picture. ! * C-c C-k (TeX mode): TeX Print. ! * C-c C-l (Calendar mode): General Calendar. ! * C-c C-l (GUD): Commands of GUD. ! * C-c C-l (TeX mode): TeX Print. ! * C-c C-n (Fortran mode): Fortran Motion. ! * C-c C-n (GUD): Commands of GUD. ! * C-c C-n (Outline mode): Outline Motion. ! * C-c C-o (LaTeX mode): LaTeX Editing. ! * C-c C-o (Shell mode): Shell Mode. ! * C-c C-p (Fortran mode): Fortran Motion. ! * C-c C-p (Outline mode): Outline Motion. ! * C-c C-p (TeX mode): TeX Print. ! * C-c C-q (Mail mode): Mail Mode. ! * C-c C-q (TeX mode): TeX Print. ! * C-c C-r (Fortran mode): Fortran Columns. ! * C-c C-r (Shell mode): Shell Mode. ! * C-c C-r (TeX mode): TeX Print. ! * C-c C-s (GUD): Commands of GUD. ! * C-c C-s (Mail mode): Mail Mode. ! * C-c C-s (Outline mode): Outline Visibility. ! * C-c C-t (GUD): Commands of GUD. ! * C-c C-u (Outline mode): Outline Motion. ! * C-c C-v (TeX mode): TeX Print. ! * C-c C-w (Fortran mode): Fortran Columns. ! * C-c C-w (Mail mode): Mail Mode. ! * C-c C-w (Picture mode): Rectangles in Picture. ! * C-c C-x (Picture mode): Rectangles in Picture. ! * C-c C-y (Mail mode): Mail Mode. ! * C-c C-y (Picture mode): Rectangles in Picture. ! * C-c C-\ (Shell mode): Shell Mode. ! * C-c C-\ (Shell mode): Shell Mode. ! * C-c C-\ (Shell mode): Shell Mode. ! * C-c C-\ (Shell mode): Shell Mode. ! * C-c C-\ (Shell mode): Shell Mode. ! * C-c TAB (Picture mode): Tabs in Picture. ! * C-c TAB (TeX mode): TeX Print. ! * C-c \ (Picture mode): Insert in Picture. ! * C-c ^ (Picture mode): Insert in Picture. ! * C-c ` (Picture mode): Insert in Picture. ! * C-d: Killing. ! * C-d (Rmail): Rmail Deletion. ! * C-d (Shell mode): Shell Mode. ! * C-e: Moving Point. ! * C-e (Calendar mode): Move to Beginning or End. ! * C-f: Moving Point. ! * C-f (Calendar mode): Calendar Unit Motion. ! * C-g: Minibuffer. ! * C-h a: Apropos. ! * C-h b: Misc Help. ! * C-h c: Key Help. ! * C-h C-c: Misc Help. ! * C-h C-d: Misc Help. ! * C-h C-f: Misc Help. ! * C-h C-k: Misc Help. ! * C-h C-w: Misc Help. ! * C-h f: Name Help. ! * C-h i: Misc Help. ! * C-h k: Key Help. ! * C-h l: Misc Help. ! * C-h m: Misc Help. ! * C-h n: Misc Help. ! * C-h p: Library Keywords. ! * C-h s: Syntax. ! * C-h t: Basic. ! * C-h w: Name Help. ! * C-k: Killing by Lines. ! * C-k (GNUS): Summary of GNUS. ! * C-l: Scrolling. ! * C-M-@: List Commands. ! * C-M-a: Defuns. ! * C-M-a (Fortran mode): Fortran Motion. ! * C-M-b: List Commands. ! * C-M-c: Recursive Edit. ! * C-M-d: List Commands. ! * C-M-d (Dired): Subdirectory Motion. ! * C-M-e: Defuns. ! * C-M-e (Fortran mode): Fortran Motion. ! * C-M-f: List Commands. ! * C-M-h: Defuns. ! * C-M-h (Fortran mode): Fortran Motion. ! * C-M-k: List Commands. ! * C-M-l: Scrolling. ! * C-M-l (Rmail): Rmail Make Summary. ! * C-M-n: List Commands. ! * C-M-n (Dired): Subdirectory Motion. ! * C-M-n (GNUS Summary mode): Summary of GNUS. ! * C-M-n (Rmail): Rmail Labels. ! * C-M-o: Indentation Commands. ! * C-M-p: List Commands. ! * C-M-p (Dired): Subdirectory Motion. ! * C-M-p (GNUS Summary mode): Summary of GNUS. ! * C-M-p (Rmail): Rmail Labels. ! * C-M-q: Multi-line Indent. ! * C-M-q (Fortran mode): ForIndent Commands. ! * C-M-r: Regexp Search. ! * C-M-r (Rmail): Rmail Make Summary. ! * C-M-s: Regexp Search. ! * C-M-t: List Commands. ! * C-M-t: Transpose. ! * C-M-t (Rmail): Rmail Make Summary. ! * C-M-u: List Commands. ! * C-M-u (Dired): Subdirectory Motion. ! * C-M-v: Other Window. ! * C-M-w: Appending Kills. ! * C-M-x (Emacs-Lisp mode): Lisp Eval. ! * C-M-x (Lisp mode): External Lisp. ! * C-M-\: Indentation Commands. ! * C-n: Moving Point. ! * C-n (Calendar mode): Calendar Unit Motion. ! * C-n (Dired): Dired Commands. ! * C-n (GNUS Group mode): Summary of GNUS. ! * C-n (GNUS Summary mode): Summary of GNUS. ! * C-o: Blank Lines. ! * C-o (Dired): Dired Visiting. ! * C-o (Rmail): Rmail Output. ! * C-p: Moving Point. ! * C-p (Calendar mode): Calendar Unit Motion. ! * C-p (Dired): Dired Commands. ! * C-p (GNUS Group mode): Summary of GNUS. ! * C-p (GNUS Summary mode): Summary of GNUS. ! * C-q: Inserting Text. ! * C-r: Incremental Search. ! * C-s: Incremental Search. ! * C-SPC: Setting Mark. ! * C-t: Moving Point. ! * C-t: Transpose. ! * C-u: Arguments. ! * C-u - C-x ;: Comments. ! * C-u C-@: Mark Ring. ! * C-u C-SPC: Mark Ring. ! * C-u TAB: Multi-line Indent. ! * C-v: Scrolling. ! * C-v (Calendar mode): Scroll Calendar. ! * C-w: Other Kill Commands. ! * C-x #: Emacs Server. ! * C-x $: Selective Display. ! * C-x (: Basic Kbd Macro. ! * C-x ): Basic Kbd Macro. ! * C-x .: Fill Prefix. ! * C-x 0: Change Window. ! * C-x 1: Change Window. ! * C-x 2: Split Window. ! * C-x 3: Split Window. ! * C-x 4: Pop Up Window. ! * C-x 4 .: Find Tag. ! * C-x 4 a: Change Log. ! * C-x 4 b: Select Buffer. ! * C-x 4 d: Dired Enter. ! * C-x 4 f: Visiting. ! * C-x 4 m: Sending Mail. ! * C-x 5: Creating Frames. ! * C-x 5 0: Misc X. ! * C-x 5 f: Visiting. ! * C-x 5 m: Sending Mail. ! * C-x 6 1: Two-Column. ! * C-x 6 2: Two-Column. ! * C-x 6 DEL: Two-Column. ! * C-x 6 SPC: Two-Column. ! * C-x 6 b: Two-Column. ! * C-x 6 C-l: Two-Column. ! * C-x 6 d: Two-Column. ! * C-x 6 s: Two-Column. ! * C-x 8: European Display. ! * C-x ;: Comments. ! * C-x <: Horizontal Scrolling. ! * C-x < (Calendar mode): Scroll Calendar. ! * C-x =: Position Info. ! * C-x >: Horizontal Scrolling. ! * C-x > (Calendar mode): Scroll Calendar. ! * C-x SPC: Commands of GUD. ! * C-x }: Change Window. ! * C-x a g: Defining Abbrevs. ! * C-x a i g: Defining Abbrevs. ! * C-x a i l: Defining Abbrevs. ! * C-x a l: Defining Abbrevs. ! * C-x b: Select Buffer. ! * C-x C-a (GUD): Commands of GUD. ! * C-x C-b: List Buffers. ! * C-x C-c: Exiting. ! * C-x C-d: ListDir. ! * C-x C-e: Lisp Eval. ! * C-x C-f: Visiting. ! * C-x C-l: Case. ! * C-x C-n: Moving Point. ! * C-x C-o: Blank Lines. ! * C-x C-p: Pages. ! * C-x C-q: Misc Buffer. ! * C-x C-q (version control): Editing with VC. ! * C-x C-r: Visiting. ! * C-x C-s: Saving. ! * C-x C-t: Transpose. ! * C-x C-u: Case. ! * C-x C-v: Visiting. ! * C-x C-w: Saving. ! * C-x C-x: Setting Mark. ! * C-x d: Dired Enter. ! * C-x DEL: Sentences. ! * C-x DEL: Kill Errors. ! * C-x e: Basic Kbd Macro. ! * C-x ESC ESC: Repetition. ! * C-x f: Fill Commands. ! * C-x h: Marking Objects. ! * C-x k: Kill Buffer. ! * C-x l: Pages. ! * C-x m: Sending Mail. ! * C-x n n: Narrowing. ! * C-x n p: Narrowing. ! * C-x n w: Narrowing. ! * C-x o: Other Window. ! * C-x q: Kbd Macro Query. ! * C-x r SPC: RegPos. ! * C-x r f: RegConfig. ! * C-x r i: RegText. ! * C-x r j: RegPos. ! * C-x r k: Rectangles. ! * C-x r o: Rectangles. ! * C-x r s: RegText. ! * C-x r w: RegConfig. ! * C-x r y: Rectangles. ! * C-x s: Saving. ! * C-x TAB: Indentation Commands. ! * C-x u: Undo. ! * C-x v =: Comparing Versions. ! * C-x v a: Change Logs and VC. ! * C-x v c: Editing with VC. ! * C-x v d: VC Status. ! * C-x v h: Version Headers. ! * C-x v i: Editing with VC. ! * C-x v l: VC Status. ! * C-x v r: Making Snapshots. ! * C-x v s: Making Snapshots. ! * C-x v u: Editing with VC. ! * C-x [: Pages. ! * C-x [ (Calendar mode): Calendar Unit Motion. ! * C-x ]: Pages. ! * C-x ] (Calendar mode): Calendar Unit Motion. ! * C-x ^: Change Window. ! * C-x `: Compilation. ! * C-y: Kill Ring. ! * C-z: Misc X. ! * C-z: Exiting. ! * C-]: Quitting. ! * C-_: Undo. ! * d (Calendar mode): Diary Commands. ! * d (Dired): Dired Deletion. ! * d (Rmail): Rmail Deletion. ! * DEL: Killing. ! * DEL: Inserting Text. ! * DEL: Kill Errors. ! * DEL: Program Modes. ! * DEL: Major Modes. ! * DEL (GNUS): Summary of GNUS. ! * DEL (Rmail): Rmail Scrolling. ! * e (Rmail): Rmail Editing. ! * f (Dired): Dired Visiting. ! * f (Rmail): Rmail Reply. ! * g (Dired): Dired Updating. ! * G (Dired): Operating on Files. ! * g (Rmail): Rmail Files. ! * g CHAR (Calendar mode): From Other Calendar. ! * g d (Calendar mode): Specified Dates. ! * g m (Calendar mode): Mayan Calendar. ! * h (Calendar mode): Holidays. ! * H (Dired): Operating on Files. ! * h (Rmail): Rmail Make Summary. ! * Help: Help. ! * i (Dired): Subdirectories in Dired. ! * i (Rmail): Rmail Files. ! * i a (Calendar mode): Special Diary Entries. ! * i b (Calendar mode): Special Diary Entries. ! * i c (Calendar mode): Special Diary Entries. ! * i d (Calendar mode): Adding to Diary. ! * i m (Calendar mode): Adding to Diary. ! * i w (Calendar mode): Adding to Diary. ! * i y (Calendar mode): Adding to Diary. ! * j (Rmail): Rmail Motion. ! * k (Dired): Dired Updating. ! * k (Rmail): Rmail Labels. ! * L (Dired): Operating on Files. ! * l (Dired): Dired Updating. ! * l (GNUS Group mode): Summary of GNUS. ! * L (GNUS Group mode): Summary of GNUS. ! * l (Rmail): Rmail Make Summary. ! * LFD: Major Modes. ! * LFD: Basic Indent. ! * LFD (Fortran mode): ForIndent Commands. ! * LFD (TeX mode): TeX Editing. ! * M (Calendar mode): Lunar Phases. ! * m (Calendar mode): Diary Commands. ! * M (Dired): Operating on Files. ! * m (Dired): Marks vs. Flags. ! * m (Rmail): Rmail Reply. ! * M-!: Single Shell. ! * M-$: Spelling. ! * M-$ (Dired): Hiding Subdirectories. ! * M-%: Query Replace. ! * M-': Expanding Abbrevs. ! * M-(: Balanced Editing. ! * M-): Balanced Editing. ! * M-,: Tags Search. ! * M-.: Find Tag. ! * M-/: Dynamic Abbrevs. ! * M-1: Arguments. ! * M-;: Comments. ! * M-<: Moving Point. ! * M-< (Calendar mode): Move to Beginning or End. ! * M-=: Position Info. ! * M-= (Calendar mode): Counting Days. ! * M-= (Dired): Comparison in Dired. ! * M->: Moving Point. ! * M-> (Calendar mode): Move to Beginning or End. ! * M-? (Nroff mode): Nroff Mode. ! * M-? (Shell mode): Shell Mode. ! * M-@: Words. ! * M-DEL (Dired): Marks vs. Flags. ! * M--: Arguments. ! * M-- M-c: Fixing Case. ! * M-- M-l: Fixing Case. ! * M-- M-u: Fixing Case. ! * M-{: Paragraphs. ! * M-{ (Calendar mode): Calendar Unit Motion. ! * M-}: Paragraphs. ! * M-} (Calendar mode): Calendar Unit Motion. ! * M-a: Sentences. ! * M-a (C mode): C Mode. ! * M-a (Calendar mode): Move to Beginning or End. ! * M-b: Words. ! * M-c: Case. ! * M-d: Words. ! * M-DEL: Kill Errors. ! * M-DEL: Words. ! * M-e: Sentences. ! * M-e (C mode): C Mode. ! * M-e (Calendar mode): Move to Beginning or End. ! * M-ESC: Lisp Eval. ! * M-f: Words. ! * M-h: Paragraphs. ! * M-i: Tab Stops. ! * M-k: Sentences. ! * M-k: Other Kill Commands. ! * M-l: Case. ! * M-LFD: Comments. ! * M-LFD (Fortran mode): ForIndent Commands. ! * M-m: Indentation Commands. ! * M-n (minibuffer history): Minibuffer History. ! * M-n (Nroff mode): Nroff Mode. ! * M-n (Rmail): Rmail Motion. ! * M-n (Shell mode): Shell History. ! * M-p (minibuffer history): Minibuffer History. ! * M-p (Nroff mode): Nroff Mode. ! * M-p (Rmail): Rmail Motion. ! * M-p (Shell mode): Shell History. ! * M-q: Fill Commands. ! * M-q (C mode): C Mode. ! * M-r: Moving Point. ! * M-r (minibuffer history): Minibuffer History. ! * M-r (Shell mode): Shell History. ! * M-s (GNUS Summary mode): Summary of GNUS. ! * M-s (minibuffer history): Minibuffer History. ! * M-s (Rmail): Rmail Motion. ! * M-s (Shell mode): Shell History. ! * M-s (Text mode): Fill Commands. ! * M-SPC: Deletion. ! * M-t: Transpose. ! * M-t: Words. ! * M-TAB: Tabs in Picture. ! * M-TAB: Symbol Completion. ! * M-u: Case. ! * M-v: Scrolling. ! * M-v (Calendar mode): Scroll Calendar. ! * M-w: Kill Ring. ! * M-x: M-x. ! * M-y: Earlier Kills. ! * M-z: Other Kill Commands. ! * M-\: Deletion. ! * M-^: Indentation Commands. ! * M-|: Single Shell. ! * M-~: Saving. ! * MOUSE: Mouse Commands. ! * n (GNUS): Summary of GNUS. ! * n (Rmail): Rmail Motion. ! * o (Calendar mode): Specified Dates. ! * o (Dired): Dired Visiting. ! * O (Dired): Operating on Files. ! * o (Rmail): Rmail Output. ! * p (Calendar mode): To Other Calendar. ! * P (Dired): Operating on Files. ! * p (GNUS): Summary of GNUS. ! * p (Rmail): Rmail Motion. ! * p d (Calendar mode): General Calendar. ! * q (Calendar mode): General Calendar. ! * q (GNUS Group mode): Summary of GNUS. ! * q (Rmail summary): Rmail Summary Edit. ! * q (Rmail): Rmail. ! * R (Dired): Operating on Files. ! * r (Rmail): Rmail Reply. ! * RET: Inserting Text. ! * s (Calendar mode): Diary Commands. ! * S (Calendar mode): Sunrise/Sunset. ! * S (Dired): Operating on Files. ! * s (GNUS Summary mode): Summary of GNUS. ! * s (Rmail): Rmail. ! * SPC: Completion. ! * SPC (Calendar mode): Scroll Calendar. ! * SPC (GNUS): Summary of GNUS. ! * SPC (Rmail): Rmail Scrolling. ! * t (Rmail): Rmail Editing. ! * TAB: Indentation. ! * TAB: Major Modes. ! * TAB (completion): Completion. ! * TAB (Indented Text mode): Text Mode. ! * TAB (programming modes): Basic Indent. ! * u (Calendar mode): Holidays. ! * u (Dired): Dired Deletion. ! * u (GNUS Group mode): Summary of GNUS. ! * u (Rmail): Rmail Deletion. ! * v (Dired): Dired Visiting. ! * w (Rmail summary): Rmail Summary Edit. ! * x (Calendar mode): Holidays. ! * x (Dired): Dired Deletion. ! * x (Rmail): Rmail Deletion. ! * Z (Dired): Operating on Files. ! * z (GNUS Group mode): Summary of GNUS. ! * ~ (Dired): Dired Deletion. --- 1,856 ---- ! This is Info file ../info/emacs, produced by Makeinfo-1.55 from the input file emacs.texi.  ! File: emacs, Node: Glossary, Next: Key Index, Prev: Intro, Up: Top ! Glossary ! ******** ! Abbrev ! An abbrev is a text string which expands into a different text ! string when present in the buffer. For example, you might define ! a short word as an abbrev for a long phrase that you want to insert ! frequently. *Note Abbrevs::. ! Aborting ! Aborting means getting out of a recursive edit (q.v.). The ! commands `C-]' and `M-x top-level' are used for this. *Note ! Quitting::. ! ! Alt ! Alt is the name of a modifier bit which a keyboard input character ! may have. To make a character Alt, type it while holding down the ! ALT key. Such characters are given names that start with `Alt-' ! (usually written `A-' for short). *Note Alt: User Input. ! ! Auto Fill Mode ! Auto Fill mode is a minor mode in which text that you insert is ! automatically broken into lines of fixed width. *Note Filling::. ! ! Auto Saving ! Auto saving is the practice of saving the contents of an Emacs ! buffer in a specially-named file, so that the information will not ! be lost if the buffer is lost due to a system error or user error. ! *Note Auto Save::. ! ! Backup File ! A backup file records the contents that a file had before the ! current editing session. Emacs makes backup files automatically ! to help you track down or cancel changes you later regret making. ! *Note Backup::. ! ! Balance Parentheses ! Emacs can balance parentheses manually or automatically. Manual ! balancing is done by the commands to move over balanced expressions ! (*note Lists::.). Automatic balancing is done by blinking the ! parenthesis that matches one just inserted (*note Matching Parens: ! Matching.). ! ! Bind ! To bind a key sequence means to give it a binding (q.v.). *Note ! Rebinding::. ! ! Binding ! A key sequence gets its meaning in Emacs by having a binding, ! which is a command (q.v.), a Lisp function that is run when the ! user types that sequence. *Note Binding: Commands. Customization ! often involves rebinding a character to a different command ! function. The bindings of all key sequences are recorded in the ! keymaps (q.v.). *Note Keymaps::. ! ! Blank Lines ! Blank lines are lines that contain only whitespace. Emacs has ! several commands for operating on the blank lines in the buffer. ! ! Buffer ! The buffer is the basic editing unit; one buffer corresponds to one ! piece of text being edited. You can have several buffers, but at ! any time you are editing only one, the `selected' buffer, though ! several can be visible when you are using multiple windows. *Note ! Buffers::. ! ! Buffer Selection History ! Emacs keeps a buffer selection history which records how recently ! each Emacs buffer has been selected. This is used for choosing a ! buffer to select. *Note Buffers::. ! ! Button Down Event ! A button down event is the kind of input event generated right ! away when you press a mouse button. *Note Mouse Buttons::. ! ! C- ! `C' in the name of a character is an abbreviation for Control. ! *Note C-: User Input. ! ! C-M- ! `C-M-' in the name of a character is an abbreviation for ! Control-Meta. *Note C-M-: User Input. ! ! Case Conversion ! Case conversion means changing text from upper case to lower case ! or vice versa. *Note Case::, for the commands for case conversion. ! ! Characters ! Characters form the contents of an Emacs buffer; see *Note Text ! Characters::. Also, key sequences (q.v.) are usually made up of ! characters (though they may include other input events as well). ! *Note User Input::. ! ! Click Event ! A click event is the kind of input event generated when you press a ! mouse button and let it go without moving the mouse. *Note Mouse ! Buttons::. ! ! Command ! A command is a Lisp function specially defined to be able to serve ! as a key binding in Emacs. When you type a key sequence (q.v.), ! its binding (q.v.) is looked up in the relevant keymaps (q.v.) to ! find the command to run. *Note Commands::. ! ! Command Name ! A command name is the name of a Lisp symbol which is a command ! (*note Commands::.). You can invoke any command by its name using ! `M-x' (*note M-x::.). ! ! Comments ! A comment is text in a program which is intended only for humans ! reading the program, and which is marked specially so that it will ! be ignored when the program is loaded or compiled. Emacs offers ! special commands for creating, aligning and killing comments. ! *Note Comments::. ! ! Compilation ! Compilation is the process of creating an executable program from ! source code. Emacs has commands for compiling files of Emacs Lisp ! code (*note Byte Compilation: (elisp)Byte Compilation.) and ! programs in C and other languages (*note Compilation::.). ! ! Complete Key ! A complete key is a key sequence which fully specifies one action ! to be performed by Emacs. For example, `X' and `C-f' and `C-x m' ! are complete keys. Complete keys derive their meanings from being ! bound (q.v.) to commands (q.v.). Thus, `X' is conventionally ! bound to a command to insert `X' in the buffer; `C-x m' is ! conventionally bound to a command to begin composing a mail ! message. *Note Keys::. ! ! Completion ! Completion is what Emacs does when it automatically fills out an ! abbreviation for a name into the entire name. Completion is done ! for minibuffer (q.v.) arguments when the set of possible valid ! inputs is known; for example, on command names, buffer names, and ! file names. Completion occurs when TAB, SPC or RET is typed. ! *Note Completion::. ! ! Continuation Line ! When a line of text is longer than the width of the window, it ! takes up more than one screen line when displayed. We say that the ! text line is continued, and all screen lines used for it after the ! first are called continuation lines. *Note Continuation: Basic. ! ! Control Character ! ASCII characters with octal codes 0 through 037, and also code ! 0177, do not have graphic images assigned to them. These are the ! Control characters. To type a Control character, hold down the ! CTRL key and type the corresponding non-Control character. RET, ! TAB, ESC, LFD and DEL are all control characters. *Note User ! Input::. ! ! When you are using the X Window System, every non-control ! character has a corresponding control character variant. ! ! Copyleft ! A copyleft is a notice giving the public legal permission to ! redistribute a program or other work of art. Copylefts are used by ! left-wing programmers to give people equal rights, just as ! copyrights are used by right-wing programmers to gain power over ! other people. ! ! Current Buffer ! The current buffer in Emacs is the Emacs buffer on which most ! editing commands operate. You can select any Emacs buffer as the ! current one. *Note Buffers::. ! ! Current Line ! The line point is on (*note Point::.). ! ! Current Paragraph ! The paragraph that point is in. If point is between paragraphs, ! the current paragraph is the one that follows point. *Note ! Paragraphs::. ! ! Current Defun ! The defun (q.v.) that point is in. If point is between defuns, the ! current defun is the one that follows point. *Note Defuns::. ! ! Cursor ! The cursor is the rectangle on the screen which indicates the ! position called point (q.v.) at which insertion and deletion takes ! place. The cursor is on or under the character that follows ! point. Often people speak of `the cursor' when, strictly ! speaking, they mean `point'. *Note Cursor: Basic. ! ! Customization ! Customization is making minor changes in the way Emacs works. It ! is often done by setting variables (*note Variables::.) or by ! rebinding key sequences (*note Keymaps::.). ! ! Default Argument ! The default for an argument is the value that will be assumed if ! you do not specify one. When the minibuffer is used to read an ! argument, the default argument is used if you just type RET. ! *Note Minibuffer::. ! ! Default Directory ! When you specify a file name that does not start with `/' or `~', ! it is interpreted relative to the current buffer's default ! directory. *Note Default Directory: Minibuffer File. ! ! Defun ! A defun is a list at the top level of parenthesis or bracket ! structure in a program. It is so named because most such lists in ! Lisp programs are calls to the Lisp function `defun'. *Note ! Defuns::. ! ! DEL ! DEL is a character that runs the command to delete one character of ! text. *Note DEL: Basic. ! ! Deletion ! Deletion means erasing text without copying it into the kill ring ! (q.v.). The alternative is killing (q.v.). *Note Deletion: ! Killing. ! ! Deletion of Files ! Deleting a file means erasing it from the file system. *Note Misc ! File Ops::. ! ! Deletion of Messages ! Deleting a message means flagging it to be eliminated from your ! mail file. Until you expunge (q.v.) the mail file, you can still ! undelete the messages you have deleted. *Note Rmail Deletion::. ! ! Deletion of Windows ! Deleting a window means eliminating it from the screen. Other ! windows expand to use up the space. The deleted window can never ! come back, but no actual text is thereby lost. *Note Windows::. ! ! Directory ! File directories are named collections in the file system, within ! which you can place individual files or subdirectories. *Note ! Directories: ListDir. ! ! Dired ! Dired is the Emacs facility that displays the contents of a file ! directory and allows you to "edit the directory", performing ! operations on the files in the directory. *Note Dired::. ! ! Disabled Command ! A disabled command is one that you may not run without special ! confirmation. The usual reason for disabling a command is that it ! is confusing for beginning users. *Note Disabling::. ! ! Down Event ! Short for `button down event'. ! ! Drag Event ! A drag event is the kind of input event generated when you press a ! mouse button, move the mouse, and then release the button. *Note ! Mouse Buttons::. ! ! Dribble File ! A file into which Emacs writes all the characters that the user ! types on the keyboard. Dribble files are used to make a record for ! debugging Emacs bugs. Emacs does not make a dribble file unless ! you tell it to. *Note Bugs::. ! ! Echo Area ! The echo area is the bottom line of the screen, used for echoing ! the arguments to commands, for asking questions, and printing brief ! messages (including error messages). *Note Echo Area::. ! ! Echoing ! Echoing is acknowledging the receipt of commands by displaying ! them (in the echo area). Emacs never echoes single-character key ! sequences; longer key sequences echo only if you pause while ! typing them. ! ! Error ! An error occurs when an Emacs command cannot execute in the current ! circumstances. When an error occurs, execution of the command ! stops (unless the command has been programmed to do otherwise) and ! Emacs reports the error by printing an error message (q.v.). ! Type-ahead is discarded. Then Emacs is ready to read another ! editing command. ! ! Error Messages ! Error messages are single lines of output printed by Emacs when the ! user asks for something impossible to do (such as, killing text ! forward when point is at the end of the buffer). They appear in ! the echo area, accompanied by a beep. ! ! ESC ! ESC is a character used as a prefix for typing Meta characters on ! keyboards lacking a META key. Unlike the META key (which, like ! the SHIFT key, is held down while another character is typed), the ! ESC key is pressed once and applies to the next character typed. ! ! Expunging ! Expunging a mail file or Dired buffer means really discarding the ! messages or files you have previously flagged for deletion. ! ! Fill Prefix ! The fill prefix is a string that should be expected at the ! beginning of each line when filling is done. It is not regarded ! as part of the text to be filled. *Note Filling::. ! ! Filling ! Filling text means moving text from line to line so that all the ! lines are approximately the same length. *Note Filling::. ! ! Frame ! A frame is a rectangular cluster of Emacs windows. When using X ! Windows, you can create more than one Emacs frame, each having its ! own X window, and then you can subdivide each frame into Emacs ! windows as you wish. *Note Frames::. ! ! Function Key ! A function key is a key on the keyboard that does not correspond ! to any character. *Note Function Keys::. ! ! Global ! Global means `independent of the current environment; in effect ! throughout Emacs'. It is the opposite of local (q.v.). Particular ! examples of the use of `global' appear below. ! ! Global Abbrev ! A global definition of an abbrev (q.v.) is effective in all major ! modes that do not have local (q.v.) definitions for the same ! abbrev. *Note Abbrevs::. ! ! Global Keymap ! The global keymap (q.v.) contains key bindings that are in effect ! except when overridden by local key bindings in a major mode's ! local keymap (q.v.). *Note Keymaps::. ! ! Global Substitution ! Global substitution means replacing each occurrence of one string ! by another string through a large amount of text. *Note Replace::. ! ! Global Variable ! The global value of a variable (q.v.) takes effect in all buffers ! that do not have their own local (q.v.) values for the variable. ! *Note Variables::. ! ! Graphic Character ! Graphic characters are those assigned pictorial images rather than ! just names. All the non-Meta (q.v.) characters except for the ! Control (q.v.) characters are graphic characters. These include ! letters, digits, punctuation, and spaces; they do not include RET ! or ESC. In Emacs, typing a graphic character inserts that ! character (in ordinary editing modes). *Note Basic Editing: Basic. ! ! Hardcopy ! Hardcopy means printed output. Emacs has commands for making ! printed listings of text in Emacs buffers. *Note Hardcopy::. ! ! HELP ! You can type HELP at any time to ask what options you have, or to ! ask what any command does. The character HELP is really `C-h'. ! *Note Help::. ! ! Hyper ! Hyper is the name of a modifier bit which a keyboard input ! character may have. To make a character Hyper, type it while ! holding down the HYPER key. Such characters are given names that ! start with `Hyper-' (usually written `H-' for short). *Note ! Hyper: User Input. ! ! Inbox ! An inbox is a file in which mail is delivered by the operating ! system. Rmail transfers mail from inboxes to mail files (q.v.) in ! which the mail is then stored permanently or until explicitly ! deleted. *Note Rmail Inbox::. ! ! Indentation ! Indentation means blank space at the beginning of a line. Most ! programming languages have conventions for using indentation to ! illuminate the structure of the program, and Emacs has special ! commands to adjust indentation. *Note Indentation::. ! ! Insertion ! Insertion means copying text into the buffer, either from the ! keyboard or from some other place in Emacs. ! ! Justification ! Justification means adding extra spaces to lines of text to make ! them come exactly to a specified width. *Note Justification: ! Filling. ! ! Keyboard Macros ! Keyboard macros are a way of defining new Emacs commands from ! sequences of existing ones, with no need to write a Lisp program. ! *Note Keyboard Macros::. ! ! Key Sequence ! A key sequence (key, for short) is a sequence of characters that, ! when input to Emacs, is meaningful as a single unit. If the key ! sequence is enough to specify one action, it is a complete key ! (q.v.); if it is not enough, it is a prefix key (q.v.). *Note ! Keys::. ! ! Keymap ! The keymap is the data structure that records the bindings (q.v.) ! of key sequences to the commands that they run. For example, the ! global keymap binds the character `C-n' to the command function ! `next-line'. *Note Keymaps::. ! ! Keyboard Translation Table ! The keyboard translation table is an array that translates the ! character codes that come from the terminal into the character ! codes that make up key sequences. *Note Keyboard Translations::. ! ! Kill Ring ! The kill ring is where all text you have killed recently is saved. ! You can reinsert any of the killed text still in the ring; this is ! called yanking (q.v.). *Note Yanking::. ! ! Killing ! Killing means erasing text and saving it on the kill ring so it ! can be yanked (q.v.) later. Some other systems call this ! "cutting". Most Emacs commands to erase text do killing, as ! opposed to deletion (q.v.). *Note Killing::. ! ! Killing Jobs ! Killing a job (such as, an invocation of Emacs) means making it ! cease to exist. Any data within it, if not saved in a file, is ! lost. *Note Exiting::. ! ! List ! A list is, approximately, a text string beginning with an open ! parenthesis and ending with the matching close parenthesis. In C ! mode and other non-Lisp modes, groupings surrounded by other kinds ! of matched delimiters appropriate to the language, such as braces, ! are also considered lists. Emacs has special commands for many ! operations on lists. *Note Lists::. ! ! Local ! Local means `in effect only in a particular context'; the relevant ! kind of context is a particular function execution, a particular ! buffer, or a particular major mode. It is the opposite of `global' ! (q.v.). Specific uses of `local' in Emacs terminology appear ! below. ! ! Local Abbrev ! A local abbrev definition is effective only if a particular major ! mode is selected. In that major mode, it overrides any global ! definition for the same abbrev. *Note Abbrevs::. ! ! Local Keymap ! A local keymap is used in a particular major mode; the key bindings ! (q.v.) in the current local keymap override global bindings of the ! same key sequences. *Note Keymaps::. ! ! Local Variable ! A local value of a variable (q.v.) applies to only one buffer. ! *Note Locals::. ! ! M- ! `M-' in the name of a character is an abbreviation for META, one ! of the modifier keys that can accompany any character. *Note User ! Input::. ! ! M-C- ! `M-C-' in the name of a character is an abbreviation for ! Control-Meta; it means the same thing as `C-M-'. If your terminal ! lacks a real META key, you type a Control-Meta character by typing ! ESC and then typing the corresponding Control character. *Note ! C-M-: User Input. ! ! M-x ! `M-x' is the key sequence which is used to call an Emacs command by ! name. This is how you run commands that are not bound to key ! sequences. *Note M-x::. ! ! Mail ! Mail means messages sent from one user to another through the ! computer system, to be read at the recipient's convenience. Emacs ! has commands for composing and sending mail, and for reading and ! editing the mail you have received. *Note Sending Mail::. *Note ! Rmail::, for how to read mail. ! ! Mail File ! A mail file is a file which is edited using Rmail and in which ! Rmail stores mail. *Note Rmail::. ! ! Major Mode ! The Emacs major modes are a mutually exclusive set of options, ! each of which configures Emacs for editing a certain sort of text. ! Ideally, each programming language has its own major mode. *Note ! Major Modes::. ! ! Mark ! The mark points to a position in the text. It specifies one end ! of the region (q.v.), point being the other end. Many commands ! operate on all the text from point to the mark. Each buffer has ! its own mark. *Note Mark::. ! ! Mark Ring ! The mark ring is used to hold several recent previous locations of ! the mark, just in case you want to move back to them. Each buffer ! has its own mark ring. *Note Mark Ring::. ! ! Message ! See `mail'. ! ! Meta ! Meta is the name of a modifier bit which a command character may ! have. It is present in a character if the character is typed with ! the META key held down. Such characters are given names that start ! with `Meta-' (usually written `M-' for short). For example, `M-<' ! is typed by holding down META and at the same time typing `<' ! (which itself is done, on most terminals, by holding down SHIFT ! and typing `,'). *Note Meta: User Input. ! ! Meta Character ! A Meta character is one whose character code includes the Meta bit. ! ! Minibuffer ! The minibuffer is the window that appears when necessary inside the ! echo area (q.v.), used for reading arguments to commands. *Note ! Minibuffer::. ! ! Minibuffer History ! The minibuffer history records the text you have specified in the ! past for minibuffer arguments, so you can conveniently use the ! same text again. *Note Minibuffer History::. ! ! Minor Mode ! A minor mode is an optional feature of Emacs which can be switched ! on or off independently of all other features. Each minor mode ! has a command to turn it on or off. *Note Minor Modes::. ! ! Minor Mode Keymap ! A keymap that belongs to a minor mode and is active when that mode ! is enabled. Minor mode keymaps take precedence over the buffer's ! local keymap, just as the local keymap takes precedence over the ! global keymap. *Note Keymaps::. ! ! Mode Line ! The mode line is the line at the bottom of each window (q.v.), ! giving status information on the buffer displayed in that window. ! *Note Mode Line::. ! ! Modified Buffer ! A buffer (q.v.) is modified if its text has been changed since the ! last time the buffer was saved (or since when it was created, if it ! has never been saved). *Note Saving::. ! ! Moving Text ! Moving text means erasing it from one place and inserting it in ! another. The usual way to move text by killing (q.v.) and then ! yanking (q.v.). *Note Killing::. ! ! Named Mark ! A named mark is a register (q.v.) in its role of recording a ! location in text so that you can move point to that location. ! *Note Registers::. ! ! Narrowing ! Narrowing means creating a restriction (q.v.) that limits editing ! in the current buffer to only a part of the text in the buffer. ! Text outside that part is inaccessible to the user until the ! boundaries are widened again, but it is still there, and saving ! the file saves it all. *Note Narrowing::. ! ! Newline ! LFD characters in the buffer terminate lines of text and are ! called newlines. *Note Newline: Text Characters. ! ! Numeric Argument ! A numeric argument is a number, specified before a command, to ! change the effect of the command. Often the numeric argument ! serves as a repeat count. *Note Arguments::. ! ! Option ! An option is a variable (q.v.) that exists so that you can ! customize Emacs by giving it a new value. *Note Variables::. ! ! Overwrite Mode ! Overwrite mode is a minor mode. When it is enabled, ordinary text ! characters replace the existing text after point rather than ! pushing it to the right. *Note Minor Modes::. ! ! Page ! A page is a unit of text, delimited by formfeed characters (ASCII ! control-L, code 014) coming at the beginning of a line. Some Emacs ! commands are provided for moving over and operating on pages. ! *Note Pages::. ! ! Paragraphs ! Paragraphs are the medium-size unit of English text. There are ! special Emacs commands for moving over and operating on paragraphs. ! *Note Paragraphs::. ! ! Parsing ! We say that certain Emacs commands parse words or expressions in ! the text being edited. Really, all they know how to do is find ! the other end of a word or expression. *Note Syntax::. ! ! Point ! Point is the place in the buffer at which insertion and deletion ! occur. Point is considered to be between two characters, not at ! one character. The terminal's cursor (q.v.) indicates the ! location of point. *Note Point: Basic. ! ! Prefix Argument ! See `numeric argument'. ! ! Prefix Key ! A prefix key is a key sequence (q.v.) whose sole function is to ! introduce a set of longer key sequences. `C-x' is an example of ! prefix key; any two-character sequence starting with `C-x' is ! therefore a legitimate key sequence. *Note Keys::. ! ! Primary Mail File ! Your primary mail file is the file named `RMAIL' in your home ! directory, where all mail that you receive is stored by Rmail ! unless you make arrangements to do otherwise. *Note Rmail::. ! ! Prompt ! A prompt is text printed to ask the user for input. Printing a ! prompt is called prompting. Emacs prompts always appear in the ! echo area (q.v.). One kind of prompting happens when the ! minibuffer is used to read an argument (*note Minibuffer::.); the ! echoing which happens when you pause in the middle of typing a ! multicharacter key sequence is also a kind of prompting (*note ! Echo Area::.). ! ! Quitting ! Quitting means cancelling a partially typed command or a running ! command, using `C-g'. *Note Quitting::. ! ! Quoting ! Quoting means depriving a character of its usual special ! significance. In Emacs this is usually done with `C-q'. What ! constitutes special significance depends on the context and on ! convention. For example, an "ordinary" character as an Emacs ! command inserts itself; so in this context, a special character is ! any character that does not normally insert itself (such as DEL, ! for example), and quoting it makes it insert itself as if it were ! not special. Not all contexts allow quoting. *Note Quoting: ! Basic. ! ! Read-Only Buffer ! A read-only buffer is one whose text you are not allowed to change. ! Normally Emacs makes buffers read-only when they contain text which ! has a special significance to Emacs; for example, Dired buffers. ! Visiting a file that is write protected also makes a read-only ! buffer. *Note Buffers::. ! ! Recursive Editing Level ! A recursive editing level is a state in which part of the ! execution of a command involves asking the user to edit some text. ! This text may or may not be the same as the text to which the ! command was applied. The mode line indicates recursive editing ! levels with square brackets (`[' and `]'). *Note Recursive Edit::. ! ! Redisplay ! Redisplay is the process of correcting the image on the screen to ! correspond to changes that have been made in the text being edited. ! *Note Redisplay: Screen. ! ! Regexp ! See `regular expression'. ! ! Region ! The region is the text between point (q.v.) and the mark (q.v.). ! Many commands operate on the text of the region. *Note Region: ! Mark. ! ! Registers ! Registers are named slots in which text or buffer positions or ! rectangles can be saved for later use. *Note Registers::. ! ! Regular Expression ! A regular expression is a pattern that can match various text ! strings; for example, `l[0-9]+' matches `l' followed by one or more ! digits. *Note Regexps::. ! ! Repeat Count ! See `numeric argument'. ! ! Replacement ! See `global substitution'. ! ! Restriction ! A buffer's restriction is the amount of text, at the beginning or ! the end of the buffer, that is temporarily inaccessible. Giving a ! buffer a nonzero amount of restriction is called narrowing (q.v.). ! *Note Narrowing::. ! ! RET ! RET is a character than in Emacs runs the command to insert a ! newline into the text. It is also used to terminate most arguments ! read in the minibuffer (q.v.). *Note Return: User Input. ! ! Saving ! Saving a buffer means copying its text into the file that was ! visited (q.v.) in that buffer. This is the way text in files ! actually gets changed by your Emacs editing. *Note Saving::. ! ! Scrolling ! Scrolling means shifting the text in the Emacs window so as to see ! a different part of the buffer. *Note Scrolling: Display. ! ! Searching ! Searching means moving point to the next occurrence of a specified ! string. *Note Search::. ! ! Selecting ! Selecting a buffer means making it the current (q.v.) buffer. ! *Note Selecting: Buffers. ! ! Self-Documentation ! Self-documentation is the feature of Emacs which can tell you what ! any command does, or give you a list of all commands related to a ! topic you specify. You ask for self-documentation with the help ! character, `C-h'. *Note Help::. ! ! Sentences ! Emacs has commands for moving by or killing by sentences. *Note ! Sentences::. ! ! Sexp ! A sexp (short for `s-expression') is the basic syntactic unit of ! Lisp in its textual form: either a list, or Lisp atom. Many Emacs ! commands operate on sexps. The term `sexp' is generalized to ! languages other than Lisp, to mean a syntactically recognizable ! expression. *Note Sexps: Lists. ! ! Simultaneous Editing ! Simultaneous editing means two users modifying the same file at ! once. Simultaneous editing if not detected can cause one user to ! lose his work. Emacs detects all cases of simultaneous editing ! and warns the user to investigate them. *Note Simultaneous ! Editing: Interlocking. ! ! String ! A string is a kind of Lisp data object which contains a sequence of ! characters. Many Emacs variables are intended to have strings as ! values. The Lisp syntax for a string consists of the characters in ! the string with a `"' before and another `"' after. A `"' that is ! part of the string must be written as `\"' and a `\' that is part ! of the string must be written as `\\'. All other characters, ! including newline, can be included just by writing them inside the ! string; however, escape sequences as in C, such as `\n' for ! newline or `\241' using an octal character code, are allowed as ! well. ! ! String Substitution ! See `global substitution'. ! ! Syntax Table ! The syntax table tells Emacs which characters are part of a word, ! which characters balance each other like parentheses, etc. *Note ! Syntax::. ! ! Super ! Super is the name of a modifier bit which a keyboard input ! character may have. To make a character Super, type it while ! holding down the SUPER key. Such characters are given names that ! start with `Super-' (usually written `s-' for short). *Note ! Super: User Input. ! ! Tag Table ! A tag table is a file that serves as an index to the function ! definitions in one or more other files. *Note Tags::. ! ! Termscript File ! A termscript file contains a record of all characters sent by ! Emacs to the terminal. It is used for tracking down bugs in Emacs ! redisplay. Emacs does not make a termscript file unless you tell ! it to. *Note Bugs::. ! ! Text ! Two meanings (*note Text::.): ! ! * Data consisting of a sequence of characters, as opposed to ! binary numbers, images, graphics commands, executable ! programs, and the like. The contents of an Emacs buffer are ! always text in this sense. ! ! * Data consisting of written human language, as opposed to ! programs, or following the stylistic conventions of human ! language. ! ! Top Level ! Top level is the normal state of Emacs, in which you are editing ! the text of the file you have visited. You are at top level ! whenever you are not in a recursive editing level (q.v.) or the ! minibuffer (q.v.), and not in the middle of a command. You can ! get back to top level by aborting (q.v.) and quitting (q.v.). ! *Note Quitting::. ! ! Transposition ! Transposing two units of text means putting each one into the place ! formerly occupied by the other. There are Emacs commands to ! transpose two adjacent characters, words, sexps (q.v.) or lines ! (*note Transpose::.). ! ! Truncation ! Truncating text lines in the display means leaving out any text on ! a line that does not fit within the right margin of the window ! displaying it. See also `continuation line'. *Note Truncation: ! Basic. ! ! Undoing ! Undoing means making your previous editing go in reverse, bringing ! back the text that existed earlier in the editing session. *Note ! Undo::. ! ! Variable ! A variable is an object in Lisp that can store an arbitrary value. ! Emacs uses some variables for internal purposes, and has others ! (known as `options' (q.v.)) just so that you can set their values ! to control the behavior of Emacs. The variables used in Emacs ! that you are likely to be interested in are listed in the ! Variables Index in this manual. *Note Variables::, for ! information on variables. ! ! Version Control ! Version control systems keep track of multiple versions of a ! source file. They provide a more powerful alternative to keeping ! backup files (q.v.). *Note Version Control::. ! ! Visiting ! Visiting a file means loading its contents into a buffer (q.v.) ! where they can be edited. *Note Visiting::. ! ! Whitespace ! Whitespace is any run of consecutive formatting characters (space, ! tab, newline, and backspace). ! ! Widening ! Widening is removing any restriction (q.v.) on the current buffer; ! it is the opposite of narrowing (q.v.). *Note Narrowing::. ! ! Window ! Emacs divides a frame (q.v.) into one or more windows, each of ! which can display the contents of one buffer (q.v.) at any time. ! *Note Screen::, for basic information on how Emacs uses the screen. ! *Note Windows::, for commands to control the use of windows. ! ! Word Abbrev ! Synonymous with `abbrev'. ! ! Word Search ! Word search is searching for a sequence of words, considering the ! punctuation between them as insignificant. *Note Word Search::. ! ! Yanking ! Yanking means reinserting text previously killed. It can be used ! to undo a mistaken kill, or for copying or moving text. Some other ! systems call this "pasting". *Note Yanking::. diff -cprP --exclude=*.elc emacs-19.13/info/emacs-2 emacs-19.14/info/emacs-2 *** emacs-19.13/info/emacs-2 Tue Jun 8 07:24:35 1993 --- emacs-19.14/info/emacs-2 Thu Jun 17 19:44:44 1993 *************** *** 1,7 **** ! This is Info file ../info/emacs, produced by Makeinfo-1.54 from the input file emacs.texi.  File: emacs, Node: User Input, Next: Keys, Prev: Screen, Up: Top Keyboard Input --- 1,632 ---- ! This is Info file ../info/emacs, produced by Makeinfo-1.55 from the input file emacs.texi.  + File: emacs, Node: Copying, Next: Intro, Prev: Distrib, Up: Top + + GNU GENERAL PUBLIC LICENSE + ************************** + + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + ======== + + The licenses for most software are designed to take away your + freedom to share and change it. By contrast, the GNU General Public + License is intended to guarantee your freedom to share and change free + software--to make sure the software is free for all its users. This + General Public License applies to most of the Free Software + Foundation's software and to any other program whose authors commit to + using it. (Some other Free Software Foundation software is covered by + the GNU Library General Public License instead.) You can apply it to + your programs, too. + + When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that you + have the freedom to distribute copies of free software (and charge for + this service if you wish), that you receive source code or can get it + if you want it, that you can change the software or use pieces of it in + new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid + anyone to deny you these rights or to ask you to surrender the rights. + These restrictions translate to certain responsibilities for you if you + distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether + gratis or for a fee, you must give the recipients all the rights that + you have. You must make sure that they, too, receive or can get the + source code. And you must show them these terms so they know their + rights. + + We protect your rights with two steps: (1) copyright the software, + and (2) offer you this license which gives you legal permission to copy, + distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain + that everyone understands that there is no warranty for this free + software. If the software is modified by someone else and passed on, we + want its recipients to know that what they have is not the original, so + that any problems introduced by others will not reflect on the original + authors' reputations. + + Finally, any free program is threatened constantly by software + patents. We wish to avoid the danger that redistributors of a free + program will individually obtain patent licenses, in effect making the + program proprietary. To prevent this, we have made it clear that any + patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and + modification follow. + + 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 + the Program" means either the Program or any derivative work under + copyright law: that is to say, a work containing the Program or a + portion of it, either verbatim or with modifications and/or + translated into another language. (Hereinafter, translation is + included without limitation in the term "modification".) Each + licensee is addressed as "you". + + Activities other than copying, distribution and modification are + not covered by this License; they are outside its scope. The act + of running the Program is not restricted, and the output from the + Program is covered only if its contents constitute a work based on + 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 + notices that refer to this License and to the absence of any + warranty; and give any other recipients of the Program a copy of + this License along with the Program. + + You may charge a fee for the physical act of transferring a copy, + 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: + + a. You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b. You must cause any work that you distribute or publish, that + in whole or in part contains or is derived from the Program + or any part thereof, to be licensed as a whole at no charge + to all third parties under the terms of this License. + + c. If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display + an announcement including an appropriate copyright notice and + a notice that there is no warranty (or else, saying that you + provide a warranty) and that users may redistribute the + program under these conditions, and telling the user how to + view a copy of this License. (Exception: if the Program + itself is interactive but does not normally print such an + announcement, your work based on the Program is not required + to print an announcement.) + + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the + Program, and can be reasonably considered independent and separate + works in themselves, then this License, and its terms, do not + apply to those sections when you distribute them as separate + works. But when you distribute the same sections as part of a + whole which is a work based on the Program, the distribution of + the whole must be on the terms of this License, whose permissions + for other licensees extend to the entire whole, and thus to each + and every part regardless of who wrote it. + + Thus, it is not the intent of this section to claim rights or + contest your rights to work written entirely by you; rather, the + intent is to exercise the right to control the distribution of + derivative or collective works based on the Program. + + In addition, mere aggregation of another work not based on the + Program with the Program (or with a work based on the Program) on + 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: + + a. Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of + Sections 1 and 2 above on a medium customarily used for + software interchange; or, + + b. Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a + medium customarily used for software interchange; or, + + c. Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with + such an offer, in accord with Subsection b above.) + + The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete + source code means all the source code for all modules it contains, + plus any associated interface definition files, plus the scripts + used to control compilation and installation of the executable. + However, as a special exception, the source code distributed need + not include anything that is normally distributed (in either + source or binary form) with the major components (compiler, + kernel, and so on) of the operating system on which the executable + runs, unless that component itself accompanies the executable. + + If distribution of executable or object code is made by offering + access to copy from a designated place, then offering equivalent + access to copy the source code from the same place counts as + 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 + License. However, parties who have received copies, or rights, + 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. + Therefore, by modifying or distributing the Program (or any work + based on the Program), you indicate your acceptance of this + 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 + further restrictions on the recipients' exercise of the rights + 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 + License, they do not excuse you from the conditions of this + License. If you cannot distribute so as to satisfy simultaneously + your obligations under this License and any other pertinent + obligations, then as a consequence you may not distribute the + Program at all. For example, if a patent license would not permit + royalty-free redistribution of the Program by all those who + receive copies directly or indirectly through you, then the only + way you could satisfy both it and this License would be to refrain + entirely from distribution of the Program. + + If any portion of this section is held invalid or unenforceable + under any particular circumstance, the balance of the section is + intended to apply and the section as a whole is intended to apply + in other circumstances. + + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of + any such claims; this section has the sole purpose of protecting + the integrity of the free software distribution system, which is + implemented by public license practices. Many people have made + generous contributions to the wide range of software distributed + through that system in reliance on consistent application of that + system; it is up to the author/donor to decide if he or she is + willing to distribute software through any other system and a + licensee cannot impose that choice. + + 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 + excluding those countries, so that distribution is permitted only + in or among countries not thus excluded. In such case, this + 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. + + Each version is given a distinguishing version number. If the + Program specifies a version number of this License which applies + to it and "any later version", you have the option of following + the terms and conditions either of that version or of any later + version published by the Free Software Foundation. If the Program + 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 + Foundation; we sometimes make exceptions for this. Our decision + will be guided by the two goals of preserving the free status of + all derivatives of our free software and of promoting the sharing + and reuse of software generally. + + 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 + WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT + NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE + QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE + 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, + INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR + INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF + DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU + OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY + OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + ============================================= + + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these + terms. + + To do so, attach the following notices to the program. It is safest + to attach them to the start of each source file to most effectively + convey the exclusion of warranty; and each file should have at least + the "copyright" line and a pointer to where the full notice is found. + + ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES. + Copyright (C) 19YY NAME OF AUTHOR + + This program 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 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + Also add information on how to contact you by electronic and paper + mail. + + If the program is interactive, make it output a short notice like + this when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details + type `show w'. This is free software, and you are welcome + to redistribute it under certain conditions; type `show c' + for details. + + The hypothetical commands `show w' and `show c' should show the + appropriate parts of the General Public License. Of course, the + commands you use may be called something other than `show w' and `show + c'; they could even be mouse-clicks or menu items--whatever suits your + program. + + You should also get your employer (if you work as a programmer) or + your school, if any, to sign a "copyright disclaimer" for the program, + if necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright + interest in the program `Gnomovision' + (which makes passes at compilers) written + by James Hacker. + + SIGNATURE OF TY COON, 1 April 1989 + Ty Coon, President of Vice + + This General Public License does not permit incorporating your + program into proprietary programs. If your program is a subroutine + library, you may consider it more useful to permit linking proprietary + applications with the library. If this is what you want to do, use the + GNU Library General Public License instead of this License. + +  + File: emacs, Node: Intro, Next: Glossary, Prev: Copying, Up: Top + + Introduction + ************ + + You are reading about GNU Emacs, the GNU incarnation of the advanced, + self-documenting, customizable, extensible real-time display editor + Emacs. (The `G' in `GNU' is not silent.) + + We say that Emacs is a "display" editor because normally the text + being edited is visible on the screen and is updated automatically as + you type your commands. *Note Display: Screen. + + We call it a "real-time" editor because the display is updated very + frequently, usually after each character or pair of characters you + type. This minimizes the amount of information you must keep in your + head as you edit. *Note Real-time: Basic. + + We call Emacs advanced because it provides facilities that go beyond + simple insertion and deletion: filling of text; automatic indentation of + programs; viewing two or more files at once; and dealing in terms of + characters, words, lines, sentences, paragraphs, and pages, as well as + expressions and comments in several different programming languages. + + "Self-documenting" means that at any time you can type a special + character, `Control-h', to find out what your options are. You can + also use it to find out what any command does, or to find all the + commands that pertain to a topic. *Note Help::. + + "Customizable" means that you can change the definitions of Emacs + commands in little ways. For example, if you use a programming + language in which comments start with `<**' and end with `**>', you can + tell the Emacs comment manipulation commands to use those strings + (*note Comments::.). Another sort of customization is rearrangement of + the command set. For example, if you prefer the four basic cursor + motion commands (up, down, left and right) on keys in a diamond pattern + on the keyboard, you can have it. *Note Customization::. + + "Extensible" means that you can go beyond simple customization and + write entirely new commands, programs in the Lisp language to be run by + Emacs's own Lisp interpreter. Emacs is an "on-line extensible" system, + which means that it is divided into many functions that call each other, + any of which can be redefined in the middle of an editing session. Any + part of Emacs can be replaced without making a separate copy of all of + Emacs. Most of the editing commands of Emacs are written in Lisp + already; the few exceptions could have been written in Lisp but are + written in C for efficiency. Although only a programmer can write an + extension, anybody can use it afterward. + + When run under the X Window System, Emacs provides its own menus and + convenient bindings to mouse buttons. But Emacs can provide many of the + benefits of a window system on a text-only terminal. For instance, you + can look at or edit several files at once, move text between them, and + edit files at the same time as you run shell commands. + +  + File: emacs, Node: Screen, Next: User Input, Prev: Concept Index, Up: Top + + The Organization of the Screen + ****************************** + + On a text-only terminal, the Emacs display occupies the whole screen. + On the X Window System, Emacs creates its own X windows to use. We use + the term "frame" to mean an entire text-only screen or an entire X + window used by Emacs. Emacs uses both kinds of frames in the same way + to display your editing. Emacs normally starts out with just one frame, + but under X you can create additional frames if you wish. *Note + Frames::. + + When you start Emacs, the entire frame except for the last line is + devoted to the text you are editing. This area is called "window". + The last line is a special "echo area" or "minibuffer window" where + prompts appear and where you can enter responses. You can subdivide + the large text window horizontally or vertically into multiple text + windows, each of which can be used for a different file (*note + Windows::.). In this manual, the word "window" always refers to the + subdivisions of a frame within Emacs. + + The window that the cursor is in is the "selected window", in which + editing takes place. Most Emacs commands implicitly apply to the text + in the selected window. The other windows display text for reference + only, unless/until you select them. + + Each window's last line is a "mode line" which describes what is + going on in that window. It is in inverse video if the terminal + supports that, and contains text that starts like `-----Emacs: + SOMETHING'. Its purpose is to indicate what buffer is being displayed + above it in the window; what major and minor modes are in use; and + whether the buffer contains unsaved changes. + + * Menu: + + * Point:: The place in the text where editing commands operate. + * Echo Area:: Short messages appear at the bottom of the screen. + * Mode Line:: Interpreting the mode line. + +  + File: emacs, Node: Point, Next: Echo Area, Up: Screen + + Point + ===== + + Within Emacs, the terminal's cursor shows the location at which + editing commands will take effect. This location is called "point". + Other commands move point through the text, so that you can edit at + different places in it. + + While the cursor appears to point AT a character, you should think + of point as BETWEEN two characters; it points BEFORE the character that + appears under the cursor. For example, if your text looks like `frob' + with the cursor over the `b', then point is between the `o' and the + `b'. If you insert the character `!' at that position, the result is + `fro!b', with point between the `!' and the `b'. Thus, the cursor + remains over the `b', as before. + + Sometimes people speak of "the cursor" when they mean "point", or + speak of commands that move point as "cursor motion" commands. + + Terminals have only one cursor, and when output is in progress it + must appear where the typing is being done. This does not mean that + point is moving. It is only that Emacs has no way to show you the + location of point except when the terminal is idle. + + If you are editing several files in Emacs, each in its own buffer, + each buffer has its own point location. A buffer that is not currently + displayed remembers where point is in case you display it again later. + + When there are multiple windows, each window has its own point + location. The cursor shows the location of point in the selected + window. This also is how you can tell which window is selected. If the + same buffer appears in more than one window, each window has its own + position for point in that buffer. + + The term `point' comes from the character `.', which was the command + in TECO (the language in which the original Emacs was written) for + accessing the value now called `point'. + +  + File: emacs, Node: Echo Area, Next: Mode Line, Prev: Point, Up: Screen + + The Echo Area + ============= + + The line at the bottom of the screen (below the mode line) is the + "echo area". It is used to display small amounts of text for several + purposes. + + "Echoing" means printing out the characters that you type. Outside + Emacs, the operating system normally echoes all your input. Emacs + handles echoing differently. + + Single-character commands do not echo in Emacs, and multi-character + commands echo only if you pause while typing them. As soon as you pause + for more than a second in the middle of a command, Emacs echoes all the + characters of the command so far. This is to "prompt" you for the rest + of the command. Once echoing has started, the rest of the command + echoes immediately as you type it. This behavior is designed to give + confident users fast response, while giving hesitant users maximum + feedback. You can change this behavior by setting a variable (*note + Display Vars::.). + + If a command cannot be executed, it may print an "error message" in + the echo area. Error messages are accompanied by a beep or by flashing + the screen. Also, any input you have typed ahead is thrown away when + an error happens. + + Some commands print informative messages in the echo area. These + messages look much like error messages, but they are not announced with + a beep and do not throw away input. Sometimes the message tells you + what the command has done, when this is not obvious from looking at the + text being edited. Sometimes the sole purpose of a command is to print + a message giving you specific information--for example, `C-x =' prints + a message describing the character position of point in the text and + its current column in the window. Commands that take a long time often + display messages ending in `...' while they are working, and add `done' + at the end when they are finished. + + The echo area is also used to display the "minibuffer", a window that + is used for reading arguments to commands, such as the name of a file + to be edited. When the minibuffer is in use, the echo area begins with + a prompt string that usually ends with a colon; also, the cursor + appears in that line because it is the selected window. You can always + get out of the minibuffer by typing `C-g'. *Note Minibuffer::. + +  + File: emacs, Node: Mode Line, Prev: Echo Area, Up: Screen + + The Mode Line + ============= + + Each text window's last line is a "mode line" which describes what is + going on in that window. When there is only one text window, the mode + line appears right above the echo area. The mode line is in inverse + video if the terminal supports that, starts and ends with dashes, and + contains text like `Emacs: SOMETHING'. + + If a mode line has something else in place of `Emacs: SOMETHING', + then the window above it is in a special subsystem such as Dired. The + mode line then indicates the status of the subsystem. + + Normally, the mode line looks like this: + + --CH-Emacs: BUF (MAJOR MINOR)----POS------ + + This gives information about the buffer being displayed in the window: + the buffer's name, what major and minor modes are in use, whether the + buffer's text has been changed, and how far down the buffer you are + currently looking. + + CH contains two stars `**' if the text in the buffer has been edited + (the buffer is "modified"), or `--' if the buffer has not been edited. + Exception: for a read-only buffer, it is `%%'. + + BUF is the name of the window's "buffer". In most cases this is the + same as the name of a file you are editing. *Note Buffers::. + + The buffer displayed in the selected window (the window that the + cursor is in) is also Emacs's selected buffer, the one that editing + takes place in. When we speak of what some command does to "the + buffer", we are talking about the currently selected buffer. + + POS tells you whether there is additional text above the top of the + window, or below the bottom. If your buffer is small and it is all + visible in the window, POS is `All'. Otherwise, it is `Top' if you are + looking at the beginning of the buffer, `Bot' if you are looking at the + end of the buffer, or `NN%', where NN is the percentage of the buffer + above the top of the window. + + MAJOR is the name of the "major mode" in effect in the buffer. At + any time, each buffer is in one and only one of the possible major + modes. The major modes available include Fundamental mode (the least + specialized), Text mode, Lisp mode, and C mode. *Note Major Modes::, + for details of how the modes differ and how to select one. + + MINOR is a list of some of the "minor modes" that are turned on at + the moment in the window's chosen buffer. `Fill' means that Auto Fill + mode is on. `Abbrev' means that Word Abbrev mode is on. `Ovwrt' means + that Overwrite mode is on. *Note Minor Modes::, for more information. + `Narrow' means that the buffer being displayed has editing restricted + to only a portion of its text. This is not really a minor mode, but is + like one. *Note Narrowing::. `Def' means that a keyboard macro is + being defined. *Note Keyboard Macros::. + + Some buffers display additional information after the minor modes. + For example, Rmail buffers display the current message number and the + total number of messages. Compilation buffers and Shell mode display + the status of the subprocess. + + In addition, if Emacs is currently inside a recursive editing level, + square brackets (`[...]') appear around the parentheses that surround + the modes. If Emacs is in one recursive editing level within another, + double square brackets appear, and so on. Since recursive editing + levels affect Emacs globally and not any one buffer, the square + brackets appear in every window's mode line or not in any of them. + *Note Recursive Edit::. + + *Note Optional Display::, for features that add other handy + information to the mode line, such as the current line number of point, + the current time, and whether mail has arrived for you. + +  File: emacs, Node: User Input, Next: Keys, Prev: Screen, Up: Top Keyboard Input *************** start the tutorial, type `Control-h t' ( *** 323,329 **** * Inserting Text:: Inserting text by simply typing it. * Moving Point:: How to move the cursor to the place where you want to ! change something. * Erasing:: Deleting and killing text. * Files: Basic Files. Visiting, creating, and saving files. * Help: Basic Help. Asking what a character does. --- 948,954 ---- * Inserting Text:: Inserting text by simply typing it. * Moving Point:: How to move the cursor to the place where you want to ! change something. * Erasing:: Deleting and killing text. * Files: Basic Files. Visiting, creating, and saving files. * Help: Basic Help. Asking what a character does. *************** start the tutorial, type `Control-h t' ( *** 331,1011 **** * Continuation Lines:: Lines too wide for the screen. * Position Info:: What page, line, row, or column is point on? * Arguments:: Numeric arguments for repeating a command. - -  - File: emacs, Node: Inserting Text, Next: Moving Point, Up: Basic - - Inserting Text - ============== - - To insert printing characters into the text you are editing, just - type them. This inserts the characters you type into the buffer at the - cursor (that is, at "point"; *note Point::.). The cursor moves - forward, and any text after the cursor moves forward too. If the text - in the buffer is `FOOBAR', with the cursor before the `B', then if you - type `XX', you get `FOOXXBAR', with the cursor still before the `B'. - - To "delete" text you have just inserted, use DEL. DEL deletes the - character *before* the cursor (not the one that the cursor is on top of - or under; that is the character AFTER the cursor). The cursor and all - characters after it move backwards. Therefore, if you type a printing - character and then type DEL, they cancel out. - - To end a line and start typing a new one, type RET. This inserts a - newline character in the buffer. If point is in the middle of a line, - RET splits the line. Typing DEL when the cursor is at the beginning of - a line deletes the preceding newline, thus joining the line with the - preceding line. - - Emacs can split lines automatically when they become too long, if you - turn on a special mode called "Auto Fill" mode. *Note Filling::, for - how to use Auto Fill mode. - - Customization information: DEL in most modes runs the command - `delete-backward-char'; RET runs the command `newline', and - self-inserting printing characters run the command `self-insert', which - inserts whatever character was typed to invoke it. Some major modes - rebind DEL to other commands. - - Direct insertion works for printing characters and SPC, but other - characters act as editing commands and do not insert themselves. If you - need to insert a control character or a character whose code is above - 200 octal, you must "quote" it by typing the character `Control-q' - (`quoted-insert') first. (This character's name is normally written - `C-q' for short.) There are two ways to use `C-q': - - * `C-q' followed by any non-graphic character (even `C-g') inserts - that character. - - * `C-q' followed by three octal digits inserts the character with - the specified character code. - - A numeric argument to `C-q' specifies how many copies of the quoted - character should be inserted (*note Arguments::.). - - If you prefer to have text characters replace (overwrite) existing - text rather than shove it to the right, you can enable Overwrite mode, - a minor mode. *Note Minor Modes::. - -  - File: emacs, Node: Moving Point, Next: Erasing, Prev: Inserting Text, Up: Basic - - Changing the Location of Point - ============================== - - To do more than insert characters, you have to know how to move - point (*note Point::.). The simplest way to do this is with arrow keys - or the left mouse button. - - There are also control and meta characters for cursor motion. Some - are equivalent to the arrow keys (these date back to the days before - terminals had arrow keys, and are usable on terminals which don't have - them). Others do more sophisticated things. - - `C-a' - Move to the beginning of the line (`beginning-of-line'). - - `C-e' - Move to the end of the line (`end-of-line'). - - `C-f' - Move forward one character (`forward-char'). - - `C-b' - Move backward one character (`backward-char'). - - `M-f' - Move forward one word (`forward-word'). - - `M-b' - Move backward one word (`backward-word'). - - `C-n' - Move down one line, vertically (`next-line'). This command - attempts to keep the horizontal position unchanged, so if you - start in the middle of one line, you end in the middle of the - next. When on the last line of text, `C-n' creates a new line and - moves onto it. - - `C-p' - Move up one line, vertically (`previous-line'). - - `M-r' - Move point to left margin, vertically centered in the window - (`move-to-window-line'). Text does not move on the screen. A - numeric argument says how many screen lines down from the top of - the window (zero for the top line). A negative argument counts - lines from the bottom (-1 for the bottom line). - - `M-<' - Move to the top of the buffer (`beginning-of-buffer'). With - numeric argument N, move to N/10 of the way from the top. *Note - Arguments::, for more information on numeric arguments. - - `M->' - Move to the end of the buffer (`end-of-buffer'). - - `M-x goto-char' - Read a number N and move cursor to character number N. Position 1 - is the beginning of the buffer. - - `M-x goto-line' - Read a number N and move cursor to line number N. Line 1 is the - beginning of the buffer. - - `C-x C-n' - Use the current column of point as the "semipermanent goal column" - for `C-n' and `C-p' (`set-goal-column'). Henceforth, those - commands always move to this column in each line moved into, or as - close as possible given the contents of the line. This goal - column remains in effect until canceled. - - `C-u C-x C-n' - Cancel the goal column. Henceforth, `C-n' and `C-p' once again - try to avoid changing the horizontal position, as usual. - - If you set the variable `track-eol' to a non-`nil' value, then `C-n' - and `C-p' when at the end of the starting line move to the end of - another line. Normally, `track-eol' is `nil'. *Note Variables::, for - how to set variables such as `track-eol'. - - Normally, `C-n' on the last line of a buffer appends a newline to - it. If the variable `next-line-add-newlines' is `nil', then `C-n' gets - an error instead (like `C-p' on the first line). - -  - File: emacs, Node: Erasing, Next: Basic Files, Prev: Moving Point, Up: Basic - - Erasing Text - ============ - - `DEL' - Delete the character before the cursor (`delete-backward-char'). - - `C-d' - Delete the character after the cursor (`delete-char'). - - `C-k' - Kill to the end of the line (`kill-line'). - - `M-d' - Kill forward to the end of the next word (`kill-word'). - - `M-DEL' - Kill back to the beginning of the previous word - (`backward-kill-word'). - - You already know about the DEL key which deletes the character - before the cursor. Another key, `Control-d' (`C-d' for short), deletes - the character after the cursor, causing the rest of the text on the - line to shift left. If `C-d' is typed at the end of a line, that line - and the next line are joined together. - - To erase a larger amount of text, use the `C-k' key, which kills a - line at a time. If `C-k' is done at the beginning or middle of a line, - it kills all the text up to the end of the line. If `C-k' is done at - the end of a line, it joins that line and the next line. - - If you delete or kill text by mistake, you can use the undo command - to get it back. *Note Undo::. - - *Note Killing::, for more flexible ways of killing text. - -  - File: emacs, Node: Basic Files, Next: Basic Help, Prev: Erasing, Up: Basic - - Files - ===== - - The commands above are sufficient for creating and altering text in - an Emacs buffer; the more advanced Emacs commands just make things - easier. But to keep any text permanently you must put it in a "file". - Files are named units of text which are stored by the operating system - for you to retrieve later by name. To look at or use the contents of a - file in any way, including editing the file with Emacs, you must - specify the file name. - - Consider a file named `/usr/rms/foo.c'. In Emacs, to begin editing - this file, type - - C-x C-f /usr/rms/foo.c RET - - Here the file name is given as an "argument" to the command `C-x C-f' - (`find-file'). That command uses the "minibuffer" to read the - argument, and you type RET to terminate the argument (*note - Minibuffer::.). - - Emacs obeys the command by "visiting" the file: creating a buffer, - copying the contents of the file into the buffer, and then displaying - the buffer for you to edit. Then you can make changes, and "save" the - file by typing `C-x C-s' (`save-buffer'). This makes the changes - permanent by copying the altered contents of the buffer back into the - file `/usr/rms/foo.c'. Until you save, the changes exist only inside - Emacs, and the file `foo.c' is unaltered. - - To create a file, just visit the file with `C-x C-f' as if it - already existed. This creates an empty buffer in which you can insert - the text you want to put in the file. The file is actually created when - you save this buffer with `C-x C-s'. - - Of course, there is a lot more to learn about using files. *Note - Files::. - -  - File: emacs, Node: Basic Help, Next: Blank Lines, Prev: Basic Files, Up: Basic - - Help - ==== - - If you forget what a key does, you can find out with the Help - character, which is `C-h'. Type `C-h k' followed by the key you want - to know about; for example, `C-h k C-n' tells you all about what `C-n' - does. `C-h' is a prefix key; `C-h k' is just one of its subcommands - (the command `describe-key'). The other subcommands of `C-h' provide - different kinds of help. Type `C-h' three times to get a description - of all the help facilities. *Note Help::. - -  - File: emacs, Node: Blank Lines, Next: Continuation Lines, Prev: Basic Help, Up: Basic - - Blank Lines - =========== - - Here are special commands and techniques for putting in and taking - out blank lines. - - `C-o' - Insert one or more blank lines after the cursor (`open-line'). - - `C-x C-o' - Delete all but one of many consecutive blank lines - (`delete-blank-lines'). - - When you want to insert a new line of text before an existing line, - you can do it by typing the new line of text, followed by RET. However, - it may be easier to see what you are doing if you first make a blank - line and then insert the desired text into it. This is easy to do - using the key `C-o' (`open-line'), which inserts a newline after point - but leaves point in front of the newline. After `C-o', type the text - for the new line. `C-o F O O' has the same effect as `F O O RET', - except for the final location of point. - - You can make several blank lines by typing `C-o' several times, or - by giving it a numeric argument to tell it how many blank lines to - make. *Note Arguments::, for how. - - If you have a fill prefix, then `C-o' command inserts the fill - prefix on the new line, when you use it at the beginning of a line. - *Note Fill Prefix::. - - The easy way to get rid of extra blank lines is with the command - `C-x C-o' (`delete-blank-lines'). `C-x C-o' in a run of several blank - lines deletes all but one of them. `C-x C-o' on a solitary blank line - deletes that blank line. When point is on a nonblank line, `C-x C-o' - deletes any blank lines following that nonblank line. - -  - File: emacs, Node: Continuation Lines, Next: Position Info, Prev: Blank Lines, Up: Basic - - Continuation Lines - ================== - - If you add too many characters to one line, without breaking it with - RET, the line will grow to occupy two (or more) lines on the screen, - with a `\' at the extreme right margin of all but the last of them. - The `\' says that the following screen line is not really a distinct - line in the text, but just the "continuation" of a line too long to fit - the screen. Continuation is also called "line wrapping". - - Sometimes it is nice to have Emacs insert newlines automatically when - a line gets too long. Continuation on the screen does not do that. Use - Auto Fill mode (*note Filling::.) if that's what you want. - - Instead of continuation, you can display long lines by "truncation". - This means that all the characters that do not fit in the width of the - screen or window do not appear at all. They remain in the buffer, - temporarily invisible. `$' is used in the last column instead of `\' - to inform you that truncation is in effect. - - You can turn off continuation for a particular buffer by setting the - variable `truncate-lines' to non-`nil' in that buffer. (*Note - Variables::.) Truncation instead of continuation also happens whenever - horizontal scrolling is in use, and optionally whenever side-by-side - windows are in use (*note Windows::.). Altering the value of - `truncate-lines' makes it local to the current buffer; until that time, - the default value is in effect. The default is initially `nil'. *Note - Locals::. - - *Note Display Vars::, for additional variables that affect how text - is displayed. - -  - File: emacs, Node: Position Info, Next: Arguments, Prev: Continuation Lines, Up: Basic - - Cursor Position Information - =========================== - - Here are commands to get information about the size and position of - parts of the buffer, and to count lines. - - `M-x what-page' - Print page number of point, and line number within page. - - `M-x what-line' - Print line number of point in the buffer. - - `M-x line-number-mode' - Toggle automatic display of current line number. - - `M-=' - Print number of lines in the current region (`count-lines-region'). - - `C-x =' - Print character code of character after point, character position - of point, and column of point (`what-cursor-position'). - - There are two commands for printing the current line number. `M-x - what-line' computes the current line number and displays it in the echo - area. `M-x line-number-mode' enables display of the current line - number in the mode line; once you turn this on, the number updates as - you move point, so it remains valid all the time. *Note Mode Line::. - - Line numbers count from one at the beginning of the buffer. To go to - a given line by number, use `M-x goto-line'; it prompts you for the - line number. - - By contrast, `M-x what-page' counts pages from the beginning of the - file, and counts lines within the page, printing both numbers. *Note - Pages::. - - While on this subject, we might as well mention `M-=' - (`count-lines-region'), which prints the number of lines in the region - (*note Mark::.). *Note Pages::, for the command `C-x l' which counts - the lines in the current page. - - The command `C-x =' (`what-cursor-position') can be used to find out - the column that the cursor is in, and other miscellaneous information - about point. It prints a line in the echo area that looks like this: - - Char: x (0170) point=65986 of 563027(12%) x=44 - - (In fact, this is the output produced when point is before the `x=44' - in the example.) - - The two values after `Char:' describe the character following point, - first by showing it and second by giving its octal character code. - - `point=' is followed by the position of point expressed as a - character count. The front of the buffer counts as position 1, one - character later as 2, and so on. The next, larger number is the total - number of characters in the buffer. Afterward in parentheses comes the - position expressed as a percentage of the total size. - - `x=' is followed by the horizontal position of point, in columns - from the left edge of the window. - - If the buffer has been narrowed, making some of the text at the - beginning and the end temporarily off limits, `C-x =' prints additional - text describing the currently accessible range. For example, it might - display this: - - Char: x (0170) point=65986 of 563025(12%) <65102 - 68533> x=44 - - where the two extra numbers give the smallest and largest character - position that point is allowed to assume. The characters between those - two positions are the accessible ones. *Note Narrowing::. - - If point is at the end of the buffer (or the end of the accessible - part), `C-x =' omits any description of the character after point. The - output looks like this: - - point=563026 of 563025(100%) x=0 - -  - File: emacs, Node: Arguments, Prev: Position Info, Up: Basic - - Numeric Arguments - ================= - - Any Emacs command can be given a "numeric argument" (also called a - "prefix argument"). Some commands interpret the argument as a - repetition count. For example, giving an argument of ten to the key - `C-f' moves forward ten characters instead of one. With these - commands, no argument is equivalent to an argument of one. Negative - arguments tell most such commands to move or act in the opposite - direction. - - If your terminal keyboard has a META key, the easiest way to specify - a numeric argument is to type digits and/or a minus sign while holding - down the the META key. For example, - M-5 C-n - - would move down five lines. The characters `Meta-1', `Meta-2', and so - on, as well as `Meta--', do this because they are keys bound to - commands (`digit-argument' and `negative-argument') that are defined to - contribute to an argument for the next command. - - Another way of specifying an argument is to use the `C-u' - (`universal-argument') command followed by the digits of the argument. - With `C-u', you can type the argument digits without holding down shift - keys. To type a negative argument, start with a minus sign. Just a - minus sign normally means -1. `C-u' works on all terminals. - - `C-u' followed by a character which is neither a digit nor a minus - sign has the special meaning of "multiply by four". It multiplies the - argument for the next command by four. `C-u' twice multiplies it by - sixteen. Thus, `C-u C-u C-f' moves forward sixteen characters. This - is a good way to move forward "fast", since it moves about 1/5 of a line - in the usual size screen. Other useful combinations are `C-u C-n', - `C-u C-u C-n' (move down a good fraction of a screen), `C-u C-u C-o' - (make "a lot" of blank lines), and `C-u C-k' (kill four lines). - - Some commands care only about whether there is an argument, and not - about its value. For example, the command `M-q' (`fill-paragraph') with - no argument fills text; with an argument, it justifies the text as well. - (*Note Filling::, for more information on `M-q'.) Just `C-u' is a - handy way of providing an argument for such commands. - - Some commands use the value of the argument as a repeat count, but do - something peculiar when there is no argument. For example, the command - `C-k' (`kill-line') with argument N kills N lines, including their - terminating newlines. But `C-k' with no argument is special: it kills - the text up to the next newline, or, if point is right at the end of - the line, it kills the newline itself. Thus, two `C-k' commands with - no arguments can kill a nonblank line, just like `C-k' with an argument - of one. (*Note Killing::, for more information on `C-k'.) - - A few commands treat a plain `C-u' differently from an ordinary - argument. A few others may treat an argument of just a minus sign - differently from an argument of -1. These unusual cases will be - described when they come up; they are always for reasons of convenience - of use of the individual command. - - You can use a numeric argument to insert multiple copies of a - character. This is straightforward unless the character is a digit. To - prevent the digit from becoming part of the argument, type another - `C-u'. That terminates the argument. If you then type another digit, - then the digit acts as a self-inserting character and uses the argument - as a repeat count. - - We use the term "prefix argument" as well as "numeric argument" to - emphasize that you type the argument before the command, and to - distinguish these arguments from minibuffer arguments that come after - the command. - -  - File: emacs, Node: Undo, Next: Minibuffer, Prev: Basic, Up: Top - - Undoing Changes - *************** - - Emacs allows all changes made in the text of a buffer to be undone, - up to a certain amount of change. Each buffer records changes - individually, and the undo command always applies to the current - buffer. Usually each editing command makes a separate entry in the undo - records, but some commands such as `query-replace' make many entries, - and very simple commands such as self-inserting characters are often - grouped to make undoing less tedious. - - `C-x u' - Undo one batch of changes--usually, one command worth (`undo'). - - `C-_' - The same. - - The command `C-x u' or `C-_' is how you undo. The first time you - give this command, it undoes the last change. Point moves back to - where it was before the command that made the change. - - Consecutive repetitions of the `C-_' or `C-x u' commands undo - earlier and earlier changes, back to the limit of what has been - recorded. If all recorded changes have already been undone, the undo - command prints an error message and does nothing. - - Any command other than an undo command breaks the sequence of undo - commands. Starting at this moment, the previous undo commands are - considered ordinary changes that can themselves be undone. Thus, you - can redo changes you have undone by typing `C-f' or any other command - that will have no important effect, and then using more undo commands. - - If you notice that a buffer has been modified accidentally, the - easiest way to recover is to type `C-_' repeatedly until the stars - disappear from the front of the mode line. At this time, all the - modifications you made have been cancelled. If you do not remember - whether you changed the buffer deliberately, type `C-_' once, and when - you see the last change you made undone, you will remember why you made - it. If it was an accident, leave it undone. If it was deliberate, - redo the change as described in the preceding paragraph. - - Whenever an undo command makes the stars disappear from the mode - line, it means that the buffer contents are the same as they were when - the file was last read in or saved. - - Not all buffers record undo information. Buffers whose names start - with spaces don't; these buffers are used internally by Emacs and its - extensions to hold text that users don't normally look at or edit. - - You cannot undo mere cursor motion; only changes in the buffer - contents save undo information. However, some cursor motion commands - set the mark, so if you use these commands from time to time, you can - move back to the neighborhoods you have moved through by popping the - mark ring (*note Mark Ring::.). - - When the undo information of a buffer becomes too large, Emacs - discards the oldest undo information from time to time (during garbage - collection). You can specify how much undo information to keep by - setting two variables: `undo-limit' and `undo-strong-limit'. Their - values are expressed in units of bytes of space. - - The variable `undo-limit' sets a soft limit: Emacs keeps undo data - for enough commands to reach this size, and perhaps exceed it, but does - not keep data for any earlier commands beyond that. Its default value - is 20000. The variable `undo-strong-limit' sets a harsher limit: the - command which pushes the size past this amount is itself forgotten. - Its default value is 30000. - - Regardless of the values of those variables, the most recent change - is never discarded, so there is no danger that garbage collection - occurring right after an unintentional large change might prevent you - from undoing it. - - The reason the `undo' command has two keys, `C-x u' and `C-_', set - up to run it is that it is worthy of a single-character key, but on - some keyboards it is not obvious how to type `C-_'. `C-x u' is an - alternative you can type in the same fashion on any terminal. - -  - File: emacs, Node: Minibuffer, Next: M-x, Prev: Undo, Up: Top - - The Minibuffer - ************** - - The "minibuffer" is the facility used by Emacs commands to read - arguments more complicated than a single number. Minibuffer arguments - can be file names, buffer names, Lisp function names, Emacs command - names, Lisp expressions, and many other things, depending on the command - reading the argument. You can use the usual Emacs editing commands in - the minibuffer to edit the argument text. - - When the minibuffer is in use, it appears in the echo area, and the - terminal's cursor moves there. The beginning of the minibuffer line - displays a "prompt" which says what kind of input you should supply and - how it will be used. Often this prompt is derived from the name of the - command that the argument is for. The prompt normally ends with a - colon. - - Sometimes a "default argument" appears in parentheses after the - colon; it too is part of the prompt. The default will be used as the - argument value if you enter an empty argument (e.g., just type RET). - For example, commands that read buffer names always show a default, - which is the name of the buffer that will be used if you type just RET. - - The simplest way to enter a minibuffer argument is to type the text - you want, terminated by RET which exits the minibuffer. You can get out - of the minibuffer, canceling the command that it was for, by typing - `C-g'. - - Since the minibuffer uses the screen space of the echo area, it can - conflict with other ways Emacs customarily uses the echo area. Here is - how Emacs handles such conflicts: - - * If a command gets an error while you are in the minibuffer, this - does not cancel the minibuffer. However, the echo area is needed - for the error message and therefore the minibuffer itself is - hidden for a while. It comes back after a few seconds, or as soon - as you type anything. - - * If in the minibuffer you use a command whose purpose is to print a - message in the echo area, such as `C-x =', the message is printed - normally, and the minibuffer is hidden for a while. It comes back - after a few seconds, or as soon as you type anything. - - * Echoing of keystrokes does not take place while the minibuffer is - in use. - - * Menu: - - * File: Minibuffer File. Entering file names with the minibuffer. - * Edit: Minibuffer Edit. How to edit in the minibuffer. - * Completion:: An abbreviation facility for minibuffer input. - * Minibuffer History:: Reusing recent minibuffer arguments. - * Repetition:: Re-executing commands that used the minibuffer. - -  - File: emacs, Node: Minibuffer File, Next: Minibuffer Edit, Up: Minibuffer - - Minibuffers for File Names - ========================== - - Sometimes the minibuffer starts out with text in it. For example, - when you are supposed to give a file name, the minibuffer starts out - containing the "default directory", which ends with a slash. This is - to inform you which directory the file will be found in if you do not - specify a directory. For example, the minibuffer might start out with - - Find File: /u2/emacs/src/ - - where `Find File: ' is the prompt. Typing `buffer.c' specifies the - file `/u2/emacs/src/buffer.c'. To find files in nearby directories, - use `..'; thus, if you type `../lisp/simple.el', you will get the file - named `/u2/emacs/lisp/simple.el'. Alternatively, you can kill with - `M-DEL' the directory names you don't want (*note Words::.). - - You can also type an absolute file name, one starting with a slash or - a tilde, ignoring the default directory. For example, to find the file - `/etc/termcap', just insert that name, giving these minibuffer contents: - - Find File: /u2/emacs/src//etc/termcap - - Two slashes in a row are not normally meaningful in a file name, but - they are allowed in GNU Emacs. They mean, "ignore everything before the - second slash in the pair." Thus, `/u2/emacs/src/' is ignored, and you - get the file `/etc/termcap'. - - If you set `insert-default-directory' to `nil', the default - directory is not inserted in the minibuffer. This way, the minibuffer - starts out empty. But the name you type, if relative, is still - interpreted with respect to the same default directory. - -  - File: emacs, Node: Minibuffer Edit, Next: Completion, Prev: Minibuffer File, Up: Minibuffer - - Editing in the Minibuffer - ========================= - - The minibuffer is an Emacs buffer (albeit a peculiar one), and the - usual Emacs commands are available for editing the text of an argument - you are entering. - - Since RET in the minibuffer is defined to exit the minibuffer, - inserting a newline into the minibuffer must be done with `C-o' or with - `C-q LFD'. (Recall that a newline is really the LFD character.) - - The minibuffer has its own window which always has space on the - screen but acts as if it were not there when the minibuffer is not in - use. When the minibuffer is in use, its window is just like the - others; you can switch to another window with `C-x o', edit text in - other windows and perhaps even visit more files, before returning to - the minibuffer to submit the argument. You can kill text in another - window, return to the minibuffer window, and then yank the text to use - it in the argument. *Note Windows::. - - There are some restrictions on the use of the minibuffer window, - however. You cannot switch buffers in it--the minibuffer and its - window are permanently attached. Also, you cannot split or kill the - minibuffer window. But you can make it taller in the normal fashion - with `C-x ^'. - - If while in the minibuffer you issue a command that displays help - text of any sort in another window, you can use the `C-M-v' command - while in the minibuffer to scroll the help text. This lasts until you - exit the minibuffer. This feature is especially useful if a completing - minibuffer gives you a list of possible completions. *Note Other - Window::. - - You can't use a command that reads a minibuffer argument while you - are in the minibuffer window. This rule is to prevent recursive - minibuffers from confusing novice users. If you want to be able to use - such commands in the minibuffer, set the variable - `enable-recursive-minibuffers' to a non-`nil' value. --- 956,959 ---- diff -cprP --exclude=*.elc emacs-19.13/info/emacs-20 emacs-19.14/info/emacs-20 *** emacs-19.13/info/emacs-20 Tue Jun 8 07:24:36 1993 --- emacs-19.14/info/emacs-20 Thu Jun 17 19:44:46 1993 *************** *** 1,760 **** ! This is Info file ../info/emacs, produced by Makeinfo-1.54 from the input file emacs.texi.  ! File: emacs, Node: Command Index, Next: Variable Index, Prev: Key Index, Up: Top ! Command and Function Index ! ************************** * Menu: ! * abbrev-mode: Abbrevs. ! * abbrev-prefix-mark: Expanding Abbrevs. ! * abort-recursive-edit: Quitting. ! * add-change-log-entry-other-window: Change Log. ! * add-global-abbrev: Defining Abbrevs. ! * add-mode-abbrev: Defining Abbrevs. ! * add-name-to-file: Misc File Ops. ! * american-calendar: Date Formats. ! * append-next-kill: Appending Kills. ! * append-to-buffer: Accumulating Text. ! * append-to-file: Accumulating Text. ! * appt-add: Appointments. ! * appt-delete: Appointments. ! * appt-make-list: Appointments. ! * apropos: Apropos. ! * ask-user-about-lock: Interlocking. ! * auto-fill-mode: Auto Fill. ! * auto-lower-mode: Frame Parameters. ! * auto-raise-mode: Frame Parameters. ! * auto-save-mode: Auto Save Control. ! * back-to-indentation: Indentation Commands. ! * backward-char: Moving Point. ! * 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. ! * backward-sentence: Sentences. ! * backward-sexp: List Commands. ! * backward-text-line: Nroff Mode. ! * backward-up-list: List Commands. ! * backward-word: Words. ! * beginning-of-buffer: Moving Point. ! * beginning-of-defun: Defuns. ! * beginning-of-fortran-subprogram: Fortran Motion. ! * beginning-of-line: Moving Point. ! * blackbbox: Amusements. ! * blackbox: Amusements. ! * buffer-menu: Several Buffers. ! * c-backslash-region: C Mode. ! * c-beginning-of-statement: C Mode. ! * c-end-of-statement: C Mode. ! * c-fill-paragraph: C Mode. ! * c-indent-line: Basic Indent. ! * c-up-conditional: C Mode. ! * calendar: Calendar/Diary. ! * calendar-backward-day: Calendar Unit Motion. ! * calendar-backward-month: Calendar Unit Motion. ! * calendar-backward-week: Calendar Unit Motion. ! * calendar-beginning-of-month: Move to Beginning or End. ! * calendar-beginning-of-week: Move to Beginning or End. ! * calendar-beginning-of-year: Move to Beginning or End. ! * calendar-count-days-region: Counting Days. ! * calendar-current-month: Specified Dates. ! * calendar-cursor-holidays: Holidays. ! * calendar-end-of-month: Move to Beginning or End. ! * calendar-end-of-week: Move to Beginning or End. ! * calendar-end-of-year: Move to Beginning or End. ! * calendar-forward-day: Calendar Unit Motion. ! * calendar-forward-month: Calendar Unit Motion. ! * calendar-forward-week: Calendar Unit Motion. ! * calendar-forward-year: Calendar Unit Motion. ! * calendar-forward-year: Calendar Unit Motion. ! * calendar-goto-astro-day-number: From Other Calendar. ! * calendar-goto-date: Specified Dates. ! * calendar-goto-french-date: From Other Calendar. ! * calendar-goto-hebrew-date: From Other Calendar. ! * calendar-goto-islamic-date: From Other Calendar. ! * calendar-goto-iso-date: From Other Calendar. ! * calendar-goto-julian-date: From Other Calendar. ! * calendar-goto-mayan-long-count-date: Mayan Calendar. ! * calendar-next-calendar-round-date: Mayan Calendar. ! * calendar-next-haab-date: Mayan Calendar. ! * calendar-next-tzolkin-date: Mayan Calendar. ! * calendar-other-month: Specified Dates. ! * calendar-phases-of-moon: Lunar Phases. ! * calendar-previous-haab-date: Mayan Calendar. ! * calendar-previous-tzolkin-date: Mayan Calendar. ! * calendar-print-astro-day-number: To Other Calendar. ! * calendar-print-day-of-year: General Calendar. ! * calendar-print-french-date: To Other Calendar. ! * calendar-print-hebrew-date: To Other Calendar. ! * calendar-print-islamic-date: To Other Calendar. ! * calendar-print-iso-date: To Other Calendar. ! * calendar-print-julian-date: To Other Calendar. ! * calendar-print-mayan-date: To Other Calendar. ! * calendar-sunrise-sunset: Sunrise/Sunset. ! * calendar-unmark: Holidays. ! * call-last-kbd-macro: Basic Kbd Macro. ! * capitalize-word: Case. ! * capitalize-word: Fixing Case. ! * center-line: Fill Commands. ! * change-log-mode: Change Log. ! * clear-rectangle: Rectangles. ! * comint-bol: Shell Mode. ! * comint-continue-subjob: Shell Mode. ! * comint-delchar-or-maybe-eof: Shell Mode. ! * comint-dynamic-complete: Shell Mode. ! * comint-dynamic-list-completions: Shell Mode. ! * comint-interrupt-subjob: Shell Mode. ! * comint-kill-input: Shell Mode. ! * comint-kill-output: Shell Mode. ! * comint-next-input: Shell History. ! * comint-next-matching-input: Shell History. ! * comint-previous-input: Shell History. ! * comint-previous-matching-input: Shell History. ! * comint-quit-subjob: Shell Mode. ! * comint-send-input: Shell Mode. ! * comint-show-output: Shell Mode. ! * comint-stop-subjob: Shell Mode. ! * command-apropos: Apropos. ! * comment-region: Comments. ! * compare-windows: Comparing Files. ! * compile: Compilation. ! * compile-goto-error: Compilation. ! * complete-tag: Symbol Completion. ! * copy-file: Misc File Ops. ! * copy-to-buffer: Accumulating Text. ! * copy-to-register: RegText. ! * count-lines-page: Pages. ! * count-lines-region: Position Info. ! * count-matches: Other Repeating Search. ! * count-text-lines: Nroff Mode. ! * dabbrev-expand: Dynamic Abbrevs. ! * dbx: Starting GUD. ! * debug_print: Checklist. ! * default-value: Locals. ! * define-abbrevs: Saving Abbrevs. ! * 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. ! * delete-frame: Misc X. ! * delete-horizontal-space: Deletion. ! * delete-indentation: Indentation Commands. ! * delete-matching-lines: Other Repeating Search. ! * delete-non-matching-lines: Other Repeating Search. ! * delete-other-windows: Change Window. ! * delete-rectangle: Rectangles. ! * delete-window: Change Window. ! * describe-bindings: Misc Help. ! * describe-copying: Misc Help. ! * describe-distribution: Misc Help. ! * describe-function: Name Help. ! * describe-key: Key Help. ! * describe-key-briefly: Key Help. ! * describe-mode: Misc Help. ! * describe-no-warranty: Misc Help. ! * describe-syntax: Syntax. ! * diary: Diary Commands. ! * diary-anniversary: Special Diary Entries. ! * diary-block: Special Diary Entries. ! * diary-cyclic: Special Diary Entries. ! * diary-float: Special Diary Entries. ! * diff: Comparing Files. ! * diff-backup: Comparing Files. ! * digit-argument: Arguments. ! * dired: Dired Enter. ! * dired-backup-diff: Comparison in Dired. ! * dired-change-marks: Marks vs. Flags. ! * dired-diff: Comparison in Dired. ! * dired-display-file: Dired Visiting. ! * dired-do-byte-compile: Operating on Files. ! * dired-do-chgrp: Operating on Files. ! * dired-do-chmod: Operating on Files. ! * dired-do-chown: Operating on Files. ! * dired-do-compress: Operating on Files. ! * dired-do-copy: Operating on Files. ! * dired-do-copy-regexp: Transforming File Names. ! * dired-do-hardlink: Operating on Files. ! * dired-do-hardlink-regexp: Transforming File Names. ! * dired-do-kill-lines: Dired Updating. ! * dired-do-load: Operating on Files. ! * dired-do-print: Operating on Files. ! * dired-do-redisplay: Dired Updating. ! * dired-do-rename: Operating on Files. ! * dired-do-rename-regexp: Transforming File Names. ! * dired-do-shell-command: Shell Commands in Dired. ! * dired-do-symlink: Operating on Files. ! * dired-do-symlink-regexp: Transforming File Names. ! * dired-downcase: Transforming File Names. ! * dired-expunge: Dired Deletion. ! * dired-find-file: Dired Visiting. ! * dired-find-file-other-window: Dired Visiting. ! * dired-flag-auto-save-files: Dired Deletion. ! * dired-flag-backup-files: Dired Deletion. ! * dired-flag-clean-directory: Dired Deletion. ! * dired-flag-files-regexp: Dired Deletion. ! * dired-hide-all: Hiding Subdirectories. ! * dired-hide-subdir: Hiding Subdirectories. ! * dired-mark: Marks vs. Flags. ! * dired-mark-directories: Marks vs. Flags. ! * dired-mark-executables: Marks vs. Flags. ! * dired-mark-files-regexp: Marks vs. Flags. ! * dired-mark-symlinks: Marks vs. Flags. ! * dired-maybe-insert-subdir: Subdirectories in Dired. ! * dired-next-subdir: Subdirectory Motion. ! * dired-other-window: Dired Enter. ! * dired-prev-subdir: Subdirectory Motion. ! * dired-tree-down: Subdirectory Motion. ! * dired-tree-up: Subdirectory Motion. ! * dired-unmark-all-files: Marks vs. Flags. ! * dired-upcase: Transforming File Names. ! * dired-view-file: Dired Visiting. ! * dirs: Interactive Shell. ! * dirs: Shell Mode. ! * disable-command: Disabling. ! * display-time: Optional Display. ! * dissociated-press: Dissociated Press. ! * do-auto-save: Auto Save Control. ! * 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. ! * edit-picture: Picture. ! * edit-tab-stops: Tab Stops. ! * edit-tab-stops-note-changes: Tab Stops. ! * edt-emulation-off: Emulation. ! * edt-emulation-on: Emulation. ! * electric-nroff-mode: Nroff Mode. ! * emacs-lisp-mode: Lisp Eval. ! * emacs-version: Understanding Bug Reporting. ! * emerge-auto-advance-mode: Submodes of Emerge. ! * emerge-buffers: Overview of Emerge. ! * emerge-buffers-with-ancestor: Overview of Emerge. ! * emerge-files: Overview of Emerge. ! * emerge-files-with-ancestor: Overview of Emerge. ! * emerge-skip-prefers-mode: Submodes of Emerge. ! * enable-command: Disabling. ! * enable-flow-control: Unasked-for Search. ! * enable-flow-control-on: Unasked-for Search. ! * enable-flow-control-on: Unasked-for Search. ! * enable-local-eval: File Variables. ! * enable-local-variables: File Variables. ! * end-kbd-macro: Basic Kbd Macro. ! * end-of-buffer: Moving Point. ! * end-of-defun: Defuns. ! * end-of-fortran-subprogram: Fortran Motion. ! * end-of-line: Moving Point. ! * enlarge-window: Change Window. ! * enlarge-window-horizontally: Change Window. ! * european-calendar: Date Formats. ! * eval-current-buffer: Lisp Eval. ! * eval-defun: Lisp Eval. ! * eval-expression: Lisp Eval. ! * eval-last-sexp: Lisp Eval. ! * eval-region: Lisp Eval. ! * exchange-point-and-mark: Setting Mark. ! * execute-extended-command: M-x. ! * exit-calendar: General Calendar. ! * exit-recursive-edit: Recursive Edit. ! * expand-abbrev: Expanding Abbrevs. ! * expand-region-abbrevs: Expanding Abbrevs. ! * fill-c++-comment: C Mode. ! * fill-individual-paragraphs: Fill Prefix. ! * fill-nonuniform-paragraphs: Fill Prefix. ! * fill-paragraph: Fill Commands. ! * fill-region: Fill Commands. ! * fill-region-as-paragraph: Fill Commands. ! * fill-region-as-paragraph: Fill Commands. ! * find-alternate-file: Visiting. ! * find-dired: Dired and Find. ! * find-file: Visiting. ! * find-file-other-frame: Visiting. ! * find-file-other-window: Visiting. ! * find-file-read-only: Visiting. ! * find-grep-dired: Dired and Find. ! * find-name-dired: Dired and Find. ! * find-tag: Find Tag. ! * find-tag-other-window: Find Tag. ! * find-tag-regexp: Find Tag. ! * finder-by-keyword: Library Keywords. ! * fortran-auto-fill-mode: Fortran Autofill. ! * 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. ! * forward-list: List Commands. ! * forward-page: Pages. ! * forward-paragraph: Paragraphs. ! * forward-sentence: Sentences. ! * forward-sexp: List Commands. ! * forward-text-line: Nroff Mode. ! * forward-word: Words. ! * frame-configuration-to-register: RegConfig. ! * gdb: Starting GUD. ! * global-set-key: Rebinding. ! * global-unset-key: Rebinding. ! * gnus: GNUS. ! * gnus-group-exit: Summary of GNUS. ! * gnus-group-kill-group: Summary of GNUS. ! * gnus-group-list-all-groups: Summary of GNUS. ! * gnus-group-list-groups: Summary of GNUS. ! * gnus-group-next-group: Summary of GNUS. ! * gnus-group-next-unread-group: Summary of GNUS. ! * gnus-group-prev-group: Summary of GNUS. ! * gnus-group-prev-unread-group: Summary of GNUS. ! * gnus-group-read-group: Summary of GNUS. ! * gnus-group-suspend: Summary of GNUS. ! * gnus-group-unsubscribe-current-group: Summary of GNUS. ! * gnus-summary-isearch-article: Summary of GNUS. ! * gnus-summary-next-page: Summary of GNUS. ! * gnus-summary-next-same-subject: Summary of GNUS. ! * gnus-summary-next-subject: Summary of GNUS. ! * gnus-summary-next-unread-article: Summary of GNUS. ! * gnus-summary-prev-page: Summary of GNUS. ! * gnus-summary-prev-same-subject: Summary of GNUS. ! * gnus-summary-prev-subject: Summary of GNUS. ! * gnus-summary-prev-unread-article: Summary of GNUS. ! * gnus-summary-search-article-forward: Summary of GNUS. ! * gnus-summary-sort-by-author: Summary of GNUS. ! * gnus-summary-sort-by-date: Summary of GNUS. ! * gnus-summary-sort-by-number: Summary of GNUS. ! * gnus-summary-sort-by-subject: Summary of GNUS. ! * gomoku: Amusements. ! * goto-char: Moving Point. ! * goto-line: Moving Point. ! * grep: Compilation. ! * gud-cont: Commands of GUD. ! * gud-def: GUD Customization. ! * gud-down: Commands of GUD. ! * gud-finish: Commands of GUD. ! * gud-next: Commands of GUD. ! * gud-refresh: Commands of GUD. ! * gud-remove: Commands of GUD. ! * gud-step: Commands of GUD. ! * gud-stepi: Commands of GUD. ! * gud-tbreak: Commands of GUD. ! * gud-up: Commands of GUD. ! * hanoi: Amusements. ! * help-with-tutorial: Basic. ! * hide-body: Outline Visibility. ! * hide-entry: Outline Visibility. ! * 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. ! * indent-region: Indentation Commands. ! * indent-relative: Indentation Commands. ! * indent-rigidly: Indentation Commands. ! * indent-sexp: Multi-line Indent. ! * indented-text-mode: Text Mode. ! * info: Misc Help. ! * Info-goto-emacs-command-node: Misc Help. ! * Info-goto-emacs-key-command-node: Misc Help. ! * insert-abbrevs: Saving Abbrevs. ! * insert-anniversary-diary-entry: Special Diary Entries. ! * insert-block-diary-entry: Special Diary Entries. ! * insert-cyclic-diary-entry: Special Diary Entries. ! * insert-diary-entry: Adding to Diary. ! * insert-file: Misc File Ops. ! * insert-kbd-macro: Save Kbd Macro. ! * insert-monthly-diary-entry: Adding to Diary. ! * insert-parentheses: Balanced Editing. ! * insert-register: RegText. ! * insert-weekly-diary-entry: Adding to Diary. ! * insert-yearly-diary-entry: Adding to Diary. ! * inverse-add-global-abbrev: Defining Abbrevs. ! * inverse-add-mode-abbrev: Defining Abbrevs. ! * invert-face: Faces. ! * isearch-backward: Incremental Search. ! * isearch-backward-regexp: Regexp Search. ! * isearch-forward: Incremental Search. ! * isearch-forward-regexp: Regexp Search. ! * ispell-buffer: Spelling. ! * ispell-region: Spelling. ! * ispell-word: Spelling. ! * jump-to-register: RegPos. ! * just-one-space: Deletion. ! * kbd-macro-query: Kbd Macro Query. ! * keyboard-translate: Keyboard Translations. ! * kill-all-abbrevs: Defining Abbrevs. ! * kill-buffer: Kill Buffer. ! * kill-comment: Comments. ! * kill-compilation: Compilation. ! * kill-ispell: Spelling. ! * kill-line: Killing by Lines. ! * kill-local-variable: Locals. ! * kill-rectangle: Rectangles. ! * kill-region: Other Kill Commands. ! * kill-ring-save: Kill Ring. ! * kill-sentence: Sentences. ! * kill-sentence: Other Kill Commands. ! * kill-sexp: List Commands. ! * kill-some-buffers: Kill Buffer. ! * kill-word: Words. ! * latex-mode: TeX Mode. ! * line-number-mode: Optional Display. ! * lisp-complete-symbol: Symbol Completion. ! * lisp-indent-line: Basic Indent. ! * lisp-interaction-mode: Lisp Interaction. ! * lisp-mode: External Lisp. ! * lisp-send-defun: External Lisp. ! * list-abbrevs: Editing Abbrevs. ! * list-buffers: List Buffers. ! * list-calendar-holidays: Holidays. ! * list-command-history: Repetition. ! * list-di