From 395b1ea5b876b112b77fc241a362716725424e72 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 9 Jun 2010 22:00:18 -0700 Subject: [PATCH 01/15] * INSTALL: General update. --- ChangeLog | 4 + INSTALL | 340 +++++++++++++++++++++++++----------------------------- 2 files changed, 159 insertions(+), 185 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5317cbeb7ea..92b618c1cd9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2010-06-10 Glenn Morris + + * INSTALL: General update. + 2010-05-30 Stefan Monnier * .bzrignore: Ignore new files from trunk, which appear if you use diff --git a/INSTALL b/INSTALL index 040b25f6d6d..0fd77ea045e 100644 --- a/INSTALL +++ b/INSTALL @@ -1,35 +1,42 @@ GNU Emacs Installation Guide Copyright (C) 1992, 1994, 1996, 1997, 2000, 2001, 2002, 2003, 2004, -2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. See the end of the file for license conditions. -This file contains general information. For more specific information -for the Windows, GNUstep/Mac OS X, and MS-DOS ports, also see the files -nt/INSTALL nextstep/INSTALL, and msdos/INSTALL. For information -specific to building from a Bazaar checkout (rather than a release), see -the file INSTALL.BZR. +This file contains general information on building GNU Emacs. +For more information specific to the MS-Windows, GNUstep/Mac OS X, and +MS-DOS ports, also read the files nt/INSTALL, nextstep/INSTALL, and +msdos/INSTALL. For information about building from a Bazaar checkout +(rather than a release), also read the file INSTALL.BZR. BASIC INSTALLATION -The simplest way to build Emacs is to use the `configure' shell script -which attempts to guess correct values for various system-dependent -variables and features and find the directories where various system -headers and libraries are kept. It then creates a `Makefile' in each -subdirectory and a `config.h' file containing system-dependent -definitions. Running the `make' utility then builds the package for -your system. +On most Unix systems, you build Emacs by first running the `configure' +shell script. This attempts to deduce the correct values for +various system-dependent variables and features, and find the +directories where certain system headers and libraries are kept. +In a few cases, you may need to explicitly tell configure where to +find some things, or what options to use. + +`configure' creates a `Makefile' in several subdirectories, and a +`src/config.h' file containing system-dependent definitions. +Running the `make' utility then builds the package for your system. Here's the procedure to build Emacs using `configure' on systems which -are supported by it. If this simplified procedure fails, or if you -are using a platform such as MS-Windows, where `configure' script -doesn't work, you might need to use various non-default options, and -maybe perform some of the steps manually. The more detailed -description in the rest of the sections of this guide will help you do -that, so please refer to them if the simple procedure does not work. +are supported by it. In some cases, if the simplified procedure fails, +you might need to use various non-default options, and maybe perform +some of the steps manually. The more detailed description in the other +sections of this guide will help you do that, so please refer to those +sections if you need to. - 1. Make sure your system has at least 120 MB of free disk space. + 1. Unpacking the Emacs 23.2 release requires about 170 MB of free + disk space. Building Emacs uses about another 60 MB of space. + The final installed Emacs uses about 120 MB of disk space. + This includes the space-saving that comes from automatically + compressing the Lisp source files on installation. 2a. `cd' to the directory where you unpacked Emacs and invoke the `configure' script: @@ -42,8 +49,8 @@ that, so please refer to them if the simple procedure does not work. SOURCE-DIR/configure - where SOURCE-DIR is the top-level Emacs source directory. This - may not work unless you use GNU make. + where SOURCE-DIR is the top-level Emacs source directory. + This may not work unless you use GNU make. 3. When `configure' finishes, it prints several lines of details about the system configuration. Read those details carefully @@ -51,17 +58,18 @@ that, so please refer to them if the simple procedure does not work. system names, wrong places for headers or libraries, missing libraries that you know are installed on your system, etc. - If you find anything wrong, you will have to pass to `configure' - explicit machine configuration name, and one or more options - which tell it where to find various headers and libraries; refer - to DETAILED BUILDING AND INSTALLATION section below. + If you find anything wrong, you may have to pass to `configure' + one or more options specifying the explicit machine configuration + name, where to find various headers and libraries, etc. + Refer to the section DETAILED BUILDING AND INSTALLATION below. - If `configure' didn't find some image support libraries, such as - Xpm, jpeg, etc., and you want to use them refer to the subsection - "Image support libraries", below. + If `configure' didn't find some (optional) image support libraries, + such as Xpm, jpeg, etc., and you want to use them, refer to the + subsection "Image support libraries" below. If the details printed by `configure' don't make any sense to - you, assume that `configure' did its job and proceed. + you, but there are no obvious errors, assume that `configure' did + its job and proceed. 4. If you need to run the `configure' script more than once (e.g., with some non-default options), always clean the source @@ -78,7 +86,7 @@ that, so please refer to them if the simple procedure does not work. in the `src' directory. You can try this program, to make sure it works: - src/emacs -q + src/emacs -Q 7. Assuming that the program `src/emacs' starts and displays its opening screen, you can install the program and its auxiliary @@ -92,9 +100,13 @@ that, so please refer to them if the simple procedure does not work. make clean - You can also save some space by compressing (with `gzip') Info files - and installed Lisp source (.el) files which have corresponding .elc - versions. + You can delete the entire build directory if you do not plan to + build Emacs again, but it can be useful to keep for debugging. + + Note that the install automatically saves space by compressing + (provided you have the `gzip' program) those installed Lisp source (.el) + files that have corresponding .elc versions. You may also wish + to compress the installed Info files. ADDITIONAL DISTRIBUTION FILES @@ -156,19 +168,15 @@ download and build libraries from sources. None of them are vital for running Emacs; however, note that Emacs will not be able to use colored icons in the toolbar if XPM support is not compiled in. -Here's the list of these optional libraries, and the URLs where they -can be found: +Here's the list of some of these optional libraries, and the URLs +where they can be found (in the unlikely event that your distribution +does not provide them): - . libXaw3d for fancy 3D-style - scroll bars: ftp://ftp.x.org/contrib/widgets/Xaw3d/ - . libxpm for XPM: ftp://ftp.x.org/contrib/libraries/ - Get version 3.4k or later, which lets Emacs - use its own color allocation functions. - . libpng for PNG: ftp://ftp.simplesystems.org/pub/libpng/png/ + . libXaw3d http://directory.fsf.org/project/xaw3d/ + . libxpm for XPM: http://www.x.org/releases/current/src/lib/ + . libpng for PNG: http://www.libpng.org/ . libz (for PNG): http://www.zlib.net/ - . libjpeg for JPEG: ftp://ftp.uu.net/graphics/jpeg/ - Get version 6b -- 6a is reported to fail in - Emacs. + . libjpeg for JPEG: http://www.ijg.org/ . libtiff for TIFF: http://www.libtiff.org/ . libgif for GIF: http://sourceforge.net/projects/giflib/ @@ -177,34 +185,27 @@ Emacs will configure itself to build with these libraries if the appropriate --without-LIB option. In some cases, older versions of these libraries won't work because some routines are missing, and configure should avoid such old versions. If that happens, use the ---without-LIB options to `configure'. See below for more details. +--without-LIB options to `configure', if you need to. * Extra fonts The Emacs distribution does not include fonts and does not install -them. You must do that yourself. +them. If you need more fonts than your distribution normally provides, +you must install them yourself. Emacs running on the GNU system supports both X fonts and local fonts (i.e. the fonts managed by the fontconfig library). For `Unicode' (ISO 10646) X fonts, see (packaged in Debian), - (packaged in Debian). (In -recent Debian versions, there is an extensive `misc-fixed' iso10646-1 -in the default X installation.) Perhaps also see + (packaged in Debian). +(In recent Debian versions, there is an extensive `misc-fixed' +iso10646-1 in the default X installation.) Perhaps also see . has basic fonts for Emacs's ISO-8859 charsets. -XFree86 release 4 (from and mirrors) -contains font support for most, if not all, of the charsets that Emacs -currently supports, including iso10646-1 encoded fonts for use with -the mule-unicode charsets. The font files should also be usable with -older X releases. Note that XFree 4 contains many iso10646-1 fonts -with minimal character repertoires, which can cause problems -- see -etc/PROBLEMS. - BDF Unicode fonts etl-unicode.tar.gz are available from and . These @@ -216,22 +217,23 @@ lists a large number of free Unicode fonts. * GNU/Linux development packages -Many GNU/Linux systems do not come with development packages by -default; they just include the files that you need to run Emacs, but -not those you need to compile it. For example, to compile Emacs with -X11 support, you may need to install the special `X11 development' -package. For example, in April 2003, the package names to install -were `XFree86-devel' and `Xaw3d-devel' on Red Hat. On Debian, the -packages necessary to build the installed version should be -sufficient; they can be installed using `apt-get build-dep emacs21' in -Debian 3 and above. +Many GNU/Linux systems do not come with development packages by default; +they include the files that you need to run Emacs, but not those you +need to compile it. For example, to compile Emacs with support for X +and graphics libraries, you may need to install the `X development' +package(s), and development versions of the jpeg, png, etc. packages. + +The names of the packages that you need varies according to the +GNU/Linux distribution that you use, and the options that you want to +configure Emacs with. On Debian-based systems, you can install all the +packages needed to build the installed version of Emacs with a command +like `apt-get build-dep emacs23'. DETAILED BUILDING AND INSTALLATION: -(This is for a Unix or Unix-like system. For MS-DOS and Windows 3.X, -see msdos/INSTALL. For Windows 9X, Windows ME, Windows NT, Windows -2000, Windows XP/2003, and Windows Vista/2008, see the file +(This is for a Unix or Unix-like system. For MS-DOS and MS Windows 3.X, +see msdos/INSTALL. For later versions of MS Windows, see the file nt/INSTALL. For GNUstep and Mac OS X, see nextstep/INSTALL.) 1) Make sure your system has enough swapping space allocated to handle @@ -239,21 +241,20 @@ a program whose pure code is 1.5 MB and whose data area is at least 2.8 MB and can reach 100 MB or more. If the swapping space is insufficient, you will get an error in the command `temacs -batch -l loadup dump', found in `./src/Makefile.in', or possibly when -running the final dumped Emacs. +running the final dumped Emacs. (This should not be an issue +on any recent system.) -Building Emacs requires about 140 MB of disk space (including the -Emacs sources) Once installed, Emacs occupies about 77 MB in the file +Building Emacs requires about 230 MB of disk space (including the +Emacs sources). Once installed, Emacs occupies about 120 MB in the file system where it is installed; this includes the executable files, Lisp libraries, miscellaneous data files, and on-line documentation. If the building and installation take place in different directories, -then the installation procedure momentarily requires 140+77 MB. +then the installation procedure momentarily requires 230+120 MB. -2) Consult `./etc/MACHINES' to see what configuration name you should -give to the `configure' program. That file offers hints for -getting around some possible installation problems. The file lists -many different configurations, but only the part for your machine and -operating system is relevant. (The list is arranged in alphabetical -order by the vendor name.) +2) In the unlikely event that `configure' does not detect your system +type correctly, consult `./etc/MACHINES' to see what --host, --build +options you should pass to `configure'. That file also offers hints +for getting around some possible installation problems. 3) You can build Emacs in the top-level Emacs source directory or in a separate directory. @@ -261,15 +262,10 @@ or in a separate directory. 3a) To build in the top-level Emacs source directory, go to that directory and run the program `configure' as follows: - ./configure [CONFIGURATION-NAME] [--OPTION[=VALUE]] ... + ./configure [--OPTION[=VALUE]] ... -The CONFIGURATION-NAME argument should be a configuration name given -in `./etc/MACHINES', with the system version number added at the end. - -You should try first omitting CONFIGURATION-NAME. This way, -`configure' will try to guess your system type. If it cannot guess, -or if something goes wrong in building or installing Emacs this way, -try again specifying the proper CONFIGURATION-NAME explicitly. +If `configure' cannot determine your system type, try again +specifying the proper --build, --host options explicitly. If you don't want X support, specify `--with-x=no'. If you omit this option, `configure' will try to figure out for itself whether your @@ -284,20 +280,19 @@ accept a list of directories, separated with colons. To get more attractive menus, you can specify an X toolkit when you configure Emacs; use the option `--with-x-toolkit=TOOLKIT', where -TOOLKIT is `athena', `motif' or `gtk' (`yes' and `lucid' are synonyms -for `athena'). On some systems, it does not work to use a toolkit -with shared libraries. A free implementation of Motif, called -LessTif, is available from . Compiling with -LessTif or Motif causes a standard File Selection Dialog to pop up -when you invoke file commands with the mouse. You can get fancy -3D-style scroll bars, even without LessTif/Motif, if you have the -Xaw3d library installed (see "Image support libraries" above for Xaw3d -availability). +TOOLKIT is `gtk' (the default), `athena', or `motif' (`yes' and +`lucid' are synonyms for `athena'). On some systems, it does not work +to use a toolkit with shared libraries. A free implementation of +Motif, called LessTif, is available from . +Compiling with LessTif or Motif causes a standard File Selection +Dialog to pop up when you invoke file commands with the mouse. You +can get fancy 3D-style scroll bars, even without Gtk or LessTif/Motif, +if you have the Xaw3d library installed (see "Image support libraries" +above for Xaw3d availability). -If `--with-x-toolkit=gtk' is specified, you can tell configure where -to search for GTK by specifying `--with-pkg-config-prog=PATH' where -PATH is the pathname to pkg-config. Note that GTK version 2.4 or -newer is required for Emacs. +You can tell configure where to search for GTK by specifying +`--with-pkg-config-prog=PATH' where PATH is the pathname to +pkg-config. Note that GTK version 2.6 or newer is required for Emacs. The Emacs mail reader RMAIL is configured to be able to read mail from a POP3 server by default. Versions of the POP protocol older than @@ -324,10 +319,10 @@ or more of these options: Use --without-toolkit-scroll-bars to disable LessTif/Motif or Xaw3d scroll bars. -Use --without-xim to inhibit the default use of X Input Methods. In -this case, the X resource useXIM can be used to turn on use of XIM. +Use --without-xim to inhibit the default use of X Input Methods. +In this case, the X resource useXIM can be used to turn on use of XIM. -Use --disable-largefile omits support for files larger than 2GB on +Use --disable-largefile to omit support for files larger than 2GB on systems which support that. Use --without-sound to disable sound support. @@ -337,11 +332,11 @@ should put emacs and its data files. This defaults to `/usr/local'. - Emacs (and the other utilities users run) go in PREFIXDIR/bin (unless the `--exec-prefix' option says otherwise). - The architecture-independent files go in PREFIXDIR/share/emacs/VERSION - (where VERSION is the version number of Emacs, like `19.27'). + (where VERSION is the version number of Emacs, like `23.2'). - The architecture-dependent files go in PREFIXDIR/libexec/emacs/VERSION/CONFIGURATION - (where CONFIGURATION is the configuration name, like mips-dec-ultrix4.2), - unless the `--exec-prefix' option says otherwise. + (where CONFIGURATION is the configuration name, like + i686-pc-linux-gnu), unless the `--exec-prefix' option says otherwise. The `--exec-prefix=EXECDIR' option allows you to specify a separate portion of the directory tree for installing architecture-specific @@ -353,17 +348,16 @@ EXECDIR/bin should be a directory that is normally in users' PATHs. For example, the command - ./configure mips-dec-ultrix --with-x11 + ./configure --build=i386-linux-gnu --without-sound -configures Emacs to build for a DECstation running Ultrix, with -support for the X11 window system. +configures Emacs to build for a 32-bit GNU/Linux distribution, +without sound support. -`configure' doesn't do any compilation or installation -itself. It just creates the files that influence those things: -`./Makefile', `lib-src/Makefile', `oldXMenu/Makefile', -`lwlib/Makefile', `src/Makefile', and `./src/config.h'. For details -on exactly what it does, see the section called `CONFIGURATION BY -HAND', below. +`configure' doesn't do any compilation or installation itself. +It just creates the files that influence those things: +`./Makefile' in the top-level directory and several subdirectories; +and `./src/config.h'. For details on exactly what it does, see the +section called `CONFIGURATION BY HAND', below. When it is done, `configure' prints a description of what it did and creates a shell script `config.status' which, when run, recreates the @@ -405,7 +399,7 @@ shell such as Bash, which uses these variables: preprocessor to look in the `/foo/myinclude' directory for header files (in addition to the standard directories), instruct the linker to look in `/bar/mylib' for libraries, pass the -O3 optimization -switch to the compiler, and link against libfoo.a and libbar.a +switch to the compiler, and link against libfoo and libbar libraries in addition to the standard ones. For some libraries, like Gtk+, fontconfig and ALSA, `configure' uses @@ -435,14 +429,9 @@ Emacs source code in the directory that `configure' is in. To build in a separate directory, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. -3c) Some people try to build in a separate directory by filling -it full of symlinks to the files in the real source directory. -If you do that, `make all' does work, but `make install' fails: -it copies the symbolic links rather than the actual files. - -As far as is known, there is no particular reason to use -a directory full of links rather than use the standard GNU -facilities to build in a separate directory (see 3b above). +(Do not try to build in a separate directory by creating many links +to the real source directory--there is no need, and installation will +fail.) 4) Look at `./lisp/paths.el'; if some of those values are not right for your system, set up the file `./lisp/site-init.el' with Emacs @@ -453,7 +442,7 @@ rather than `defvar', as used by `./lisp/paths.el'. For example, (setq news-inews-program "/usr/bin/inews") is how you would override the default value of the variable -news-inews-program (which is "/usr/local/inews"). +news-inews-program. Before you override a variable this way, *look at the value* that the variable gets by default! Make sure you know what kind of value the @@ -472,18 +461,11 @@ If you set load-path to a different value in site-init.el or site-load.el, Emacs will use *precisely* that value when it starts up again. If you do this, you are on your own! -Note that, on some systems, the code you place in site-init.el must -not use expand-file-name or any other function which may look -something up in the system's password and user information database. -See `./etc/PROBLEMS' for more details on which systems this affects. - The `site-*.el' files are nonexistent in the distribution. You do not need to create them if you have nothing to put in them. 6) Refer to the file `./etc/TERMS' for information on fields you may -wish to add to various termcap entries. The files `./etc/termcap.ucb' -and `./etc/termcap.dat' may already contain appropriately-modified -entries. +wish to add to various termcap entries. (This is unlikely to be necessary.) 7) Run `make' in the top directory of the Emacs distribution to finish building Emacs in the standard way. The final executable file is @@ -497,11 +479,11 @@ are installed in the following directories: `/usr/local/bin' holds the executable programs users normally run - `emacs', `etags', `ctags', `b2m', `emacsclient', - and `rcs-checkin'. + `grep-changelog', and `rcs-checkin'. `/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library; `VERSION' stands for the number of the Emacs version - you are installing, like `18.59' or `19.27'. Since the + you are installing, like `23.1' or `23.2'. Since the Lisp library changes from one version of Emacs to another, including the version number in the path allows you to have several versions of Emacs installed @@ -509,18 +491,17 @@ are installed in the following directories: make Emacs unavailable while installing a new version. `/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC - file, the `yow' database, and other - architecture-independent files Emacs might need while - running. VERSION is as specified for `.../lisp'. + file, and other architecture-independent files Emacs + might need while running. `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable programs used by Emacs that users are not expected to run themselves. `VERSION' is the number of the Emacs version you are - installing, and `CONFIGURATION-NAME' is the argument - you gave to the `configure' program to identify the + installing, and `CONFIGURATION-NAME' is the value + deduced by the `configure' program to identify the architecture and operating system of your machine, - like `mips-dec-ultrix' or `sparc-sun-sunos'. Since + like `i686-pc-linux-gnu' or `sparc-sun-sunos'. Since these files are specific to the version of Emacs, operating system, and architecture in use, including the configuration name in the path allows you to have @@ -532,10 +513,9 @@ are installed in the following directories: `/usr/local/share/info' holds the on-line documentation for Emacs, known as "info files". Many other GNU programs are documented using info files as well, so this directory - stands apart from the other, Emacs-specific - directories. + stands apart from the other, Emacs-specific directories. -`/usr/local/man/man1' holds the man pages for the programs installed +`/usr/local/share/man/man1' holds the man pages for the programs installed in `/usr/local/bin'. Any version of Emacs, whether installed or not, also looks for Lisp @@ -598,10 +578,9 @@ Here is a complete list of the variables you may want to set. defaults to /usr/local/share. We create the following subdirectories under `datadir': - `emacs/VERSION/lisp', containing the Emacs Lisp library, and - - `emacs/VERSION/etc', containing the Emacs tutorial, the DOC - file, and the `yow' database. + - `emacs/VERSION/etc', containing the tutorials, DOC file, etc. `VERSION' is the number of the Emacs version you are installing, - like `18.59' or `19.0'. Since these files vary from one version + like `23.1' or `23.2'. Since these files vary from one version of Emacs to another, including the version number in the path allows you to have several versions of Emacs installed at the same time; this means that you don't have to make Emacs @@ -614,29 +593,23 @@ Here is a complete list of the variables you may want to set. programs used by Emacs that users are not expected to run themselves. `VERSION' is the number of the Emacs version you are installing, - and `CONFIGURATION-NAME' is the argument you gave to the + and `CONFIGURATION-NAME' is the value deduced by the `configure' program to identify the architecture and operating - system of your machine, like `mips-dec-ultrix' or - `sparc-sun-sunos'. Since these files are specific to the version - of Emacs, operating system, and architecture in use, including - the configuration name in the path allows you to have several - versions of Emacs for any mix of machines and operating systems - installed at the same time; this is useful for sites at which - different kinds of machines share the file system Emacs is - installed on. + system of your machine, like `i686-pc-linux-gnu' or `sparc-sun-sunos'. + Since these files are specific to the version of Emacs, + operating system, and architecture in use, including the + configuration name in the path allows you to have several + versions of Emacs for any mix of machines and operating + systems installed at the same time; this is useful for sites + at which different kinds of machines share the file system + Emacs is installed on. `infodir' indicates where to put the info files distributed with Emacs; it defaults to `/usr/local/share/info'. `mandir' indicates where to put the man pages for Emacs and its utilities (like `etags'); it defaults to - `/usr/local/man/man1'. - -`manext' gives the extension the man pages should be installed with. - It should contain a period, followed by the appropriate - digit. It defaults to `.1'. For example given the default - values for `mandir' and `manext', the Emacs man page would be - installed as `/usr/local/man/man1/emacs.1'. + `/usr/local/share/man/man1'. `prefix' doesn't give a path for any specific part of Emacs; instead, its value is used to determine the defaults for all the @@ -658,7 +631,7 @@ Here is a complete list of the variables you may want to set. path variables - `bindir' and `libexecdir'. The above variables serve analogous purposes in the makefiles for all -GNU software; this variable is specific to Emacs. +GNU software; the following variable is specific to Emacs. `archlibdir' indicates where Emacs installs and expects the executable files and other architecture-dependent data it uses while @@ -674,7 +647,7 @@ settings persist, you can edit them into the `Makefile' in the top directory, but be aware that running the `configure' program erases `Makefile' and rebuilds it from `Makefile.in'. -The path for finding Lisp files is specified in src/paths.h, +The path for finding Lisp files is specified in src/epaths.h, a file which is generated by running configure. To change the path, you can edit the definition of PATH_LOADSEARCH in that file before you run `make'. @@ -686,8 +659,8 @@ when running make in the subdirectories. CONFIGURATION BY HAND -Instead of running the `configure' program, you have to perform the -following steps. +This should not be necessary and is not recommended. Instead of +running the `configure' program, you have to perform the following steps. 1) Copy `./src/config.in' to `./src/config.h'. @@ -701,8 +674,7 @@ the appropriate system and architecture description files. 2) Edit `./src/config.h' to set the right options for your system. If you need to override any of the definitions in the s/*.h and m/*.h files for your system and machine, do so by editing config.h, not by -changing the s/*.h and m/*.h files. Occasionally you may need to -redefine parameters used in `./lib-src/movemail.c'. +changing the s/*.h and m/*.h files. 3) Create src/Makefile and lib-src/Makefile from the corresponding `Makefile.in' files. First copy `Makefile.in' to `Makefile.c', @@ -710,28 +682,28 @@ then edit in appropriate substitutions for the @...@ constructs, and then copy the shell commands near the end of `configure' that run cpp to construct `Makefile'. -4) Create `Makefile' files in various other directories -from the corresponding `Makefile.in' files. This isn't so hard, -just a matter of substitution. +4) Create `Makefile' files in various other directories from the +corresponding `Makefile.in' files. This isn't so hard, just a matter +of editing in appropriate substitutions for the @...@ constructs. The `configure' script is built from `configure.in' by the `autoconf' -program. You need version 2.51 or newer of `autoconf' to rebuild -`configure'. +program. You need at least the version of autoconf specified in the +AC_PREREQ(...) command to rebuild `configure' from `configure.in'. BUILDING GNU EMACS BY HAND Once Emacs is configured, running `make' in the top directory performs the following steps. -1) Run `make src/paths.h' in the top directory. This produces -`./src/paths.h' from the template file `./src/paths.in', changing +1) Run `make epaths-force' in the top directory. This produces +`./src/epaths.h' from the template file `./src/epaths.in', changing the paths to the values specified in `./Makefile'. 2) Go to directory `./lib-src' and run `make'. This creates executables named `ctags' and `etags' and `make-docfile' and `digest-doc' and `test-distrib'. And others. -3) Go to directory `./src' and Run `make'. This refers to files in +3) Go to directory `./src' and run `make'. This refers to files in the `./lisp' and `./lib-src' subdirectories using names `../lisp' and `../lib-src'. @@ -743,8 +715,7 @@ It also creates a file in `./etc' whose name is `DOC' followed by the current Emacs version. This file contains documentation strings for all the functions in Emacs. Each time you run make to make a new emacs, a new DOC file with a new name is made. You must keep the DOC -file for an Emacs version as long as you keep using that Emacs -version. +file for an Emacs version as long as you keep using that Emacs version. INSTALLATION BY HAND @@ -753,7 +724,7 @@ The steps below are done by running `make install' in the main directory of the Emacs distribution. 1) Copy `./lisp' and its subdirectories, `./etc', and the executables -in `./lib-src' to their final destinations, as selected in `./src/paths.h'. +in `./lib-src' to their final destinations, as selected in `./src/epaths.h'. Strictly speaking, not all of the executables in `./lib-src' need be copied. - The programs `fakemail', `hexl', `movemail', `profile', `rcs2log', @@ -784,8 +755,7 @@ You can delete `./src/temacs'. `rcs-checkin' from `./lib-src' to `/usr/local/bin'. These programs are intended for users to run. -5) Copy the man pages in `./etc' for emacs, ctags, and etags into the -appropriate man directories. +5) Copy the man pages in `./doc/man' into the appropriate man directory. 6) The files in the `./src' subdirectory, except for `emacs', are not used by Emacs once it is built. However, it is very desirable to keep @@ -794,8 +764,8 @@ the source on line for debugging. PROBLEMS -See the file PROBLEMS in etc subdirectory for a list of various -problems sometimes encountered, and what to do about them. +See the file `./etc/PROBLEMS' for a list of various problems sometimes +encountered, and what to do about them. This file is part of GNU Emacs. From 04d3bb6ce4956982a5146f175ec44952edbe79c6 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 9 Jun 2010 22:04:06 -0700 Subject: [PATCH 02/15] Doc typo fixes. * doc/emacs/basic.texi (Inserting Text): Fix typo. * doc/misc/idlwave.texi (Load-Path Shadows): * doc/misc/org.texi (Handling links): Fix typos. --- doc/emacs/ChangeLog | 4 ++++ doc/emacs/basic.texi | 5 +++-- doc/misc/ChangeLog | 5 +++++ doc/misc/idlwave.texi | 2 +- doc/misc/org.texi | 2 +- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 5551cc4a5e1..900f546fbdd 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,7 @@ +2010-06-10 Glenn Morris + + * basic.texi (Inserting Text): Fix typo. + 2010-05-07 Chong Yidong * Version 23.2 released. diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi index ae04ebf9c41..a6424f0d37c 100644 --- a/doc/emacs/basic.texi +++ b/doc/emacs/basic.texi @@ -1,6 +1,7 @@ @c This is part of the Emacs manual. @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, -@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +@c Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node Basic, Minibuffer, Exiting, Top @chapter Basic Editing Commands @@ -104,7 +105,7 @@ character to insert (@pxref{Arguments}). @cindex Unicode Instead of @kbd{C-q}, you can use @kbd{C-x 8 @key{RET}} (@code{ucs-insert}) to insert a character based on its Unicode name or -code-point. This commands prompts for a character to insert, using +code-point. This command prompts for a character to insert, using the minibuffer; you can specify the character using either (i) the character's name in the Unicode standard, or (ii) the character's code-point in the Unicode standard. If you specify the character's diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 2294dc3a070..5518050fb7f 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,8 @@ +2010-06-10 Glenn Morris + + * idlwave.texi (Load-Path Shadows): + * org.texi (Handling links): Fix typos. + 2010-05-07 Chong Yidong * Version 23.2 released. diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi index 6292902aa99..94a2c2c6db7 100644 --- a/doc/misc/idlwave.texi +++ b/doc/misc/idlwave.texi @@ -3717,7 +3717,7 @@ C-i}. Here are the different routines (also available in the Menu @table @asis @item @kbd{M-x idlwave-list-buffer-load-path-shadows} -This commands checks the names of all routines defined in the current +This command checks the names of all routines defined in the current buffer for shadowing conflicts with other routines accessible to IDLWAVE. The command also has a key binding: @kbd{C-c C-b} @item @kbd{M-x idlwave-list-shell-load-path-shadows}. diff --git a/doc/misc/org.texi b/doc/misc/org.texi index 507dfad5c31..4539c55ac64 100644 --- a/doc/misc/org.texi +++ b/doc/misc/org.texi @@ -2928,7 +2928,7 @@ link and description parts of the link. Open link at point. This will launch a web browser for URLs (using @command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for the corresponding links, and execute the command in a shell link. When the -cursor is on an internal link, this commands runs the corresponding search. +cursor is on an internal link, this command runs the corresponding search. When the cursor is on a TAG list in a headline, it creates the corresponding TAGS view. If the cursor is on a timestamp, it compiles the agenda for that date. Furthermore, it will visit text and remote files in @samp{file:} links From 103dd3a81a88539029038804d5444f71ed6ab514 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 9 Jun 2010 22:09:27 -0700 Subject: [PATCH 03/15] * doc/emacs/basic.texi (Inserting Text): Minor clarification. (Bug#6374) --- doc/emacs/ChangeLog | 2 ++ doc/emacs/basic.texi | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 900f546fbdd..5e434b5e6c1 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,5 +1,7 @@ 2010-06-10 Glenn Morris + * basic.texi (Inserting Text): Minor clarification. (Bug#6374) + * basic.texi (Inserting Text): Fix typo. 2010-05-07 Chong Yidong diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi index a6424f0d37c..6204fb1be03 100644 --- a/doc/emacs/basic.texi +++ b/doc/emacs/basic.texi @@ -93,9 +93,9 @@ of overwriting with it. @vindex read-quoted-char-radix @noindent To use decimal or hexadecimal instead of octal, set the variable -@code{read-quoted-char-radix} to 10 or 16. If the radix is greater -than 10, some letters starting with @kbd{a} serve as part of a -character code, just like digits. +@code{read-quoted-char-radix} to 10 or 16. If the radix is 16, +the letters @kbd{a} to @kbd{f} serve as part of a character code, +just like digits. Case is ignored. A numeric argument tells @kbd{C-q} how many copies of the quoted character to insert (@pxref{Arguments}). From 37a7e764e86838d21d72dc03d0c42e076cf3e7ea Mon Sep 17 00:00:00 2001 From: Helmut Eller Date: Sat, 12 Jun 2010 00:06:15 -0700 Subject: [PATCH 04/15] Close bug#6408. * lisp/emacs-lisp/cl-macs.el (destructuring-bind): Bind `bind-enquote', used by cl-do-arglist. --- lisp/ChangeLog | 5 +++++ lisp/emacs-lisp/cl-macs.el | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d193663ed09..1de8e4af69b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2010-06-12 Helmut Eller + + * emacs-lisp/cl-macs.el (destructuring-bind): Bind `bind-enquote', + used by cl-do-arglist. (Bug#6408) + 2010-06-09 Stefan Monnier * emacs-lisp/advice.el (ad-compile-function): diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 8a60ffdf1fe..3e800c53008 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -432,7 +432,7 @@ It is a list of elements of the form either: ;;;###autoload (defmacro destructuring-bind (args expr &rest body) (let* ((bind-lets nil) (bind-forms nil) (bind-inits nil) - (bind-defs nil) (bind-block 'cl-none)) + (bind-defs nil) (bind-block 'cl-none) (bind-enquote nil)) (cl-do-arglist (or args '(&aux)) expr) (append '(progn) bind-inits (list (nconc (list 'let* (nreverse bind-lets)) From 6955432c9f1efc386ff544162afdf7163ee101b7 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 12 Jun 2010 00:09:32 -0700 Subject: [PATCH 05/15] * etc/tutorials/TUTORIAL.bg, etc/tutorials/TUTORIAL.es: Fix typos. --- etc/ChangeLog | 4 ++++ etc/tutorials/TUTORIAL.bg | 2 +- etc/tutorials/TUTORIAL.es | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/etc/ChangeLog b/etc/ChangeLog index 96a5a85f325..395c77b02d3 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,7 @@ +2010-06-12 Glenn Morris + + * tutorials/TUTORIAL.bg, tutorials/TUTORIAL.es: Fix typos. + 2010-05-19 Stefan Monnier * NEWS: Add sections for Emacs-23.3. diff --git a/etc/tutorials/TUTORIAL.bg b/etc/tutorials/TUTORIAL.bg index 3f8ea6e2c45..e8300d26653 100644 --- a/etc/tutorials/TUTORIAL.bg +++ b/etc/tutorials/TUTORIAL.bg @@ -625,7 +625,7 @@ C-f. Емакс сесията. >> Въведете C-x b *Messages* , за да видите буфера със - съобщенията. След това въведете C-x C-b TUTORIAL , за да + съобщенията. След това въведете C-x b TUTORIAL , за да се върнете към това въведение. Ако направите промени в текста на един файл и тогава намерите друг diff --git a/etc/tutorials/TUTORIAL.es b/etc/tutorials/TUTORIAL.es index 1af1b97537c..7fb7ac2c2a3 100644 --- a/etc/tutorials/TUTORIAL.es +++ b/etc/tutorials/TUTORIAL.es @@ -630,7 +630,7 @@ contiene los mensajes que han aparecido en la l su sesiуn de Emacs. >> Teclee C-x b *Messages* para ver el buffer de mensajes. - Luego teclee C-b TUTORIAL para regresar a este tutorial. + Luego teclee C-x b TUTORIAL para regresar a este tutorial. Si hace cambios al texto de un archivo, y luego encuentra otro archivo, esto no guarda el primer archivo. Sus cambios permanecerбn From 7fb277a9f0bad84a19e8bf748d3bc6a3b7cc140c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0t=C4=9Bp=C3=A1n=20N=C4=9Bmec?= Date: Sat, 12 Jun 2010 00:25:20 -0700 Subject: [PATCH 06/15] Close bug#6406. * lisp/url/url-vars.el (url-privacy-level): Fix doc typo. --- lisp/url/ChangeLog | 4 ++++ lisp/url/url-vars.el | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog index 232259f39ea..c6f07fec2c0 100644 --- a/lisp/url/ChangeLog +++ b/lisp/url/ChangeLog @@ -1,3 +1,7 @@ +2010-06-12 Е tД›pГЎn NД›mec (tiny change) + + * url-vars.el (url-privacy-level): Fix doc typo. (Bug#6406) + 2010-05-19 Stefan Monnier * url-util.el (url-unhex-string): Don't accidentally decode as latin-1. diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el index 2062f482ede..c7df921f585 100644 --- a/lisp/url/url-vars.el +++ b/lisp/url/url-vars.el @@ -128,7 +128,7 @@ email -- the email address os -- the operating system info lastloc -- the last location agent -- do not send the User-Agent string -cookie -- never accept HTTP cookies +cookies -- never accept HTTP cookies Samples: From a9de35feef40cef53f6205628cf8a8ebe9b0c99b Mon Sep 17 00:00:00 2001 From: Bob Rogers Date: Sat, 12 Jun 2010 00:34:36 -0700 Subject: [PATCH 07/15] Close bug#6361. * lisp/vc-svn.el (vc-svn-after-dir-status): Fix regexp for Subversions older than version 1.6. --- lisp/ChangeLog | 5 +++++ lisp/vc-svn.el | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1de8e4af69b..903c0d46f86 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2010-06-12 Bob Rogers (tiny change) + + * vc-svn.el (vc-svn-after-dir-status): Fix regexp for Subversions + older than version 1.6. (Bug#6361) + 2010-06-12 Helmut Eller * emacs-lisp/cl-macs.el (destructuring-bind): Bind `bind-enquote', diff --git a/lisp/vc-svn.el b/lisp/vc-svn.el index 6883556f249..34ebc3bb949 100644 --- a/lisp/vc-svn.el +++ b/lisp/vc-svn.el @@ -170,7 +170,7 @@ want to force an empty list of arguments, use t." (?? . unregistered) ;; This is what vc-svn-parse-status does. (?~ . edited))) - (re (if remote "^\\(.\\)...... \\([ *]\\) +\\(?:[-0-9]+\\)? \\(.*\\)$" + (re (if remote "^\\(.\\)......? \\([ *]\\) +\\(?:[-0-9]+\\)? \\(.*\\)$" ;; Subexp 2 is a dummy in this case, so the numbers match. "^\\(.\\)....\\(.\\) \\(.*\\)$")) result) From 77d7d2aea45164ca9b5f63056c2f6f73950858f9 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sat, 12 Jun 2010 13:21:01 -0400 Subject: [PATCH 08/15] * INSTALL: Update font information (Bug#6389). --- ChangeLog | 4 ++++ INSTALL | 29 ++++++----------------------- 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 92b618c1cd9..1612b8bd299 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2010-06-12 Chong Yidong + + * INSTALL: Update font information (Bug#6389). + 2010-06-10 Glenn Morris * INSTALL: General update. diff --git a/INSTALL b/INSTALL index 0fd77ea045e..005aac08d87 100644 --- a/INSTALL +++ b/INSTALL @@ -190,30 +190,13 @@ configure should avoid such old versions. If that happens, use the * Extra fonts The Emacs distribution does not include fonts and does not install -them. If you need more fonts than your distribution normally provides, -you must install them yourself. +them. -Emacs running on the GNU system supports both X fonts and local fonts -(i.e. the fonts managed by the fontconfig library). - -For `Unicode' (ISO 10646) X fonts, see - (packaged in Debian), - (packaged in Debian). -(In recent Debian versions, there is an extensive `misc-fixed' -iso10646-1 in the default X installation.) Perhaps also see -. - - has basic fonts for Emacs's -ISO-8859 charsets. - -BDF Unicode fonts etl-unicode.tar.gz are available from - and -. These -fonts can also be used by ps-print and ps-mule to print Unicode -characters. - -Finally, the Web page -lists a large number of free Unicode fonts. +On the GNU system, Emacs supports both X fonts and local fonts +(i.e. fonts managed by the fontconfig library). If you need more +fonts than your distribution normally provides, you must install them +yourself. See for a large +number of free Unicode fonts. * GNU/Linux development packages From a675c749113b67eaf83ffab14f536c284614926b Mon Sep 17 00:00:00 2001 From: Ivan Kanis Date: Mon, 14 Jun 2010 20:38:58 -0700 Subject: [PATCH 09/15] Close bug#5176. * lisp/calendar/appt.el (appt-check): Let the 3rd element of appt-time-msg-list specify the warning time. (appt-add): Add new argument with the warning time. --- lisp/ChangeLog | 6 ++++++ lisp/calendar/appt.el | 22 +++++++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 903c0d46f86..7ddd2325882 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2010-06-15 Ivan Kanis + + * calendar/appt.el (appt-check): Let the 3rd element of + appt-time-msg-list specify the warning time. + (appt-add): Add new argument with the warning time. (Bug#5176) + 2010-06-12 Bob Rogers (tiny change) * vc-svn.el (vc-svn-after-dir-status): Fix regexp for Subversions diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el index b403b7043d8..4ccdaac5264 100644 --- a/lisp/calendar/appt.el +++ b/lisp/calendar/appt.el @@ -353,6 +353,8 @@ displayed in a window: ;; calculate the number of minutes until the appointment. (when (and appt-issue-message appt-time-msg-list) (setq appt-comp-time (caar (car appt-time-msg-list)) + appt-warn-time (or (nth 3 (car appt-time-msg-list)) + appt-message-warning-time) min-to-app (- appt-comp-time cur-comp-time)) (while (and appt-time-msg-list (< appt-comp-time cur-comp-time)) @@ -360,21 +362,21 @@ displayed in a window: (if appt-time-msg-list (setq appt-comp-time (caar (car appt-time-msg-list))))) ;; If we have an appointment between midnight and - ;; `appt-message-warning-time' minutes after midnight, we + ;; `appt-warn-time' minutes after midnight, we ;; must begin to issue a message before midnight. Midnight ;; is considered 0 minutes and 11:59pm is 1439 ;; minutes. Therefore we must recalculate the minutes to ;; appointment variable. It is equal to the number of ;; minutes before midnight plus the number of minutes after ;; midnight our appointment is. - (if (and (< appt-comp-time appt-message-warning-time) - (> (+ cur-comp-time appt-message-warning-time) + (if (and (< appt-comp-time appt-warn-time) + (> (+ cur-comp-time appt-warn-time) appt-max-time)) (setq min-to-app (+ (- (1+ appt-max-time) cur-comp-time) appt-comp-time))) ;; Issue warning if the appointment time is within ;; appt-message-warning time. - (when (and (<= min-to-app appt-message-warning-time) + (when (and (<= min-to-app appt-warn-time) (>= min-to-app 0)) (setq appt-now-displayed t appt-display-count (1+ prev-appt-display-count)) @@ -470,14 +472,20 @@ Usually just deletes the appointment buffer." "[0-9]?[0-9]\\(h\\([0-9][0-9]\\)?\\|[:.][0-9][0-9]\\)\\(am\\|pm\\)?") ;;;###autoload -(defun appt-add (new-appt-time new-appt-msg) +(defun appt-add (new-appt-time new-appt-msg new-appt-warning-time) "Add an appointment for today at NEW-APPT-TIME with message NEW-APPT-MSG. The time should be in either 24 hour format or am/pm format." - (interactive "sTime (hh:mm[am/pm]): \nsMessage: ") + (interactive "sTime (hh:mm[am/pm]): \nsMessage: +sDelay in minutes (press return for default): ") (unless (string-match appt-time-regexp new-appt-time) (error "Unacceptable time-string")) + (setq new-appt-warning-time + (if (string= new-appt-warning-time "") + appt-message-warning-time + (string-to-number new-appt-warning-time))) (let ((time-msg (list (list (appt-convert-time new-appt-time)) - (concat new-appt-time " " new-appt-msg) t))) + (concat new-appt-time " " new-appt-msg) t + new-appt-warning-time))) (unless (member time-msg appt-time-msg-list) (setq appt-time-msg-list (appt-sort-list (nconc appt-time-msg-list (list time-msg))))))) From d7cd4abb48010f908bfb2109a020edab65d18e8e Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Mon, 14 Jun 2010 20:42:33 -0700 Subject: [PATCH 10/15] Tweak previous change. * lisp/calendar/appt.el (appt-time-msg-list): Doc fix. (appt-check): Let-bind appt-warn-time. (appt-add): Make the 3rd argument optional. Simplify argument names. Doc fix. Check for integer WARNTIME. Only add WARNTIME to the output list if non-nil. --- lisp/ChangeLog | 8 +++++++ lisp/calendar/appt.el | 53 ++++++++++++++++++++++++++++--------------- 2 files changed, 43 insertions(+), 18 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7ddd2325882..f3aff53e1b3 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2010-06-15 Glenn Morris + + * calendar/appt.el (appt-time-msg-list): Doc fix. + (appt-check): Let-bind appt-warn-time. + (appt-add): Make the 3rd argument optional. + Simplify argument names. Doc fix. Check for integer WARNTIME. + Only add WARNTIME to the output list if non-nil. + 2010-06-15 Ivan Kanis * calendar/appt.el (appt-check): Let the 3rd element of diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el index 4ccdaac5264..7fcaab9da34 100644 --- a/lisp/calendar/appt.el +++ b/lisp/calendar/appt.el @@ -183,16 +183,25 @@ Only relevant if reminders are being displayed in a window." (defconst appt-buffer-name "*appt-buf*" "Name of the appointments buffer.") +;; TODO Turn this into an alist? It would be easier to add more +;; optional elements. +;; TODO There should be a way to set WARNTIME (and other properties) +;; from the diary-file. Implementing that would be a good reason +;; to change this to an alist. (defvar appt-time-msg-list nil "The list of appointments for today. Use `appt-add' and `appt-delete' to add and delete appointments. The original list is generated from today's `diary-entries-list', and can be regenerated using the function `appt-check'. -Each element of the generated list has the form (MINUTES STRING [FLAG]); where -MINUTES is the time in minutes of the appointment after midnight, and -STRING is the description of the appointment. -FLAG, if non-nil, says that the element was made with `appt-add' -so calling `appt-make-list' again should preserve it.") +Each element of the generated list has the form +\(MINUTES STRING [FLAG] [WARNTIME]) +where MINUTES is the time in minutes of the appointment after midnight, +and STRING is the description of the appointment. +FLAG and WARNTIME can only be present if the element was made +with `appt-add'. A non-nil FLAG indicates that the element was made +with `appt-add', so calling `appt-make-list' again should preserve it. +If WARNTIME is non-nil, it is an integer to use in place +of `appt-message-warning-time'.") (defconst appt-max-time (1- (* 24 60)) "11:59pm in minutes - number of minutes in a day minus 1.") @@ -313,7 +322,7 @@ displayed in a window: (zerop (mod prev-appt-display-count appt-display-interval)))) ;; Non-nil means only update the interval displayed in the mode line. (mode-line-only (unless full-check appt-now-displayed)) - now cur-comp-time appt-comp-time) + now cur-comp-time appt-comp-time appt-warn-time) (when (or full-check mode-line-only) (save-excursion ;; Convert current time to minutes after midnight (12.01am = 1). @@ -472,20 +481,28 @@ Usually just deletes the appointment buffer." "[0-9]?[0-9]\\(h\\([0-9][0-9]\\)?\\|[:.][0-9][0-9]\\)\\(am\\|pm\\)?") ;;;###autoload -(defun appt-add (new-appt-time new-appt-msg new-appt-warning-time) - "Add an appointment for today at NEW-APPT-TIME with message NEW-APPT-MSG. -The time should be in either 24 hour format or am/pm format." +(defun appt-add (time msg &optional warntime) + "Add an appointment for today at TIME with message MSG. +The time should be in either 24 hour format or am/pm format. +Optional argument WARNTIME is an integer (or string) giving the number +of minutes before the appointment at which to start warning. +The default is `appt-message-warning-time'." (interactive "sTime (hh:mm[am/pm]): \nsMessage: -sDelay in minutes (press return for default): ") - (unless (string-match appt-time-regexp new-appt-time) +sMinutes before the appointment to start warning: ") + (unless (string-match appt-time-regexp time) (error "Unacceptable time-string")) - (setq new-appt-warning-time - (if (string= new-appt-warning-time "") - appt-message-warning-time - (string-to-number new-appt-warning-time))) - (let ((time-msg (list (list (appt-convert-time new-appt-time)) - (concat new-appt-time " " new-appt-msg) t - new-appt-warning-time))) + (and (stringp warntime) + (setq warntime (unless (string-equal warntime "") + (string-to-number warntime)))) + (and warntime + (not (integerp warntime)) + (error "Argument WARNTIME must be an integer, or nil")) + (let ((time-msg (list (list (appt-convert-time time)) + (concat time " " msg) t))) + ;; It is presently non-sensical to have multiple warnings about + ;; the same appointment with just different delays, but it might + ;; not always be so. TODO + (if warntime (setq time-msg (append time-msg (list warntime)))) (unless (member time-msg appt-time-msg-list) (setq appt-time-msg-list (appt-sort-list (nconc appt-time-msg-list (list time-msg))))))) From 95344a11bf9cc3a26985892bba37176dd0972a04 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Mon, 14 Jun 2010 20:49:39 -0700 Subject: [PATCH 11/15] * etc/NEWS: appt-add. --- etc/NEWS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 9124fe1c069..74291bab8ab 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -27,6 +27,10 @@ with a prefix argument or by typing C-u C-h C-n. * Changes in Specialized Modes and Packages in Emacs 23.3 +--- +** The appt-add command takes an optional argument for the warning time. +This can be used in place of the default appt-message-warning-time. + * New Modes and Packages in Emacs 23.3 From 12755d08466fd26fcba7d9b9c7ed4f466f4ad2ca Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 15 Jun 2010 00:51:42 -0400 Subject: [PATCH 12/15] * lisp/vc-annotate.el (vc-annotate): Use vc-read-revision. --- lisp/ChangeLog | 4 ++++ lisp/vc-annotate.el | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f3aff53e1b3..6e8ba492710 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2010-06-15 Stefan Monnier + + * vc-annotate.el (vc-annotate): Use vc-read-revision. + 2010-06-15 Glenn Morris * calendar/appt.el (appt-time-msg-list): Doc fix. diff --git a/lisp/vc-annotate.el b/lisp/vc-annotate.el index 71839443553..437081293cb 100644 --- a/lisp/vc-annotate.el +++ b/lisp/vc-annotate.el @@ -315,7 +315,7 @@ use; you may override this using the second optional arg MODE." ;;;###autoload (defun vc-annotate (file rev &optional display-mode buf move-point-to) - "Display the edit history of the current file using colors. + "Display the edit history of the current FILE using colors. This command creates a buffer that shows, for each line of the current file, when it was last edited and by whom. Additionally, colors are @@ -325,7 +325,7 @@ default, the time scale stretches back one year into the past; everything that is older than that is shown in blue. With a prefix argument, this command asks two questions in the -minibuffer. First, you may enter a revision number; then the buffer +minibuffer. First, you may enter a revision number REV; then the buffer displays and annotates that revision instead of the working revision \(type RET in the minibuffer to leave that default unchanged). Then, you are prompted for the time span in days which the color range @@ -347,9 +347,9 @@ mode-specific menu. `vc-annotate-color-map' and (list buffer-file-name (let ((def (vc-working-revision buffer-file-name))) (if (null current-prefix-arg) def - (read-string + (vc-read-revision (format "Annotate from revision (default %s): " def) - nil nil def))) + (list buffer-file-name) nil def))) (if (null current-prefix-arg) vc-annotate-display-mode (float (string-to-number From 6fda6a0c40b45d210f94d3593a66d16003238835 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Mon, 14 Jun 2010 23:16:19 -0700 Subject: [PATCH 13/15] Backport from trunk: * src/editfns.c (Fbyte_to_string): Pacify compiler. --- src/ChangeLog | 4 ++++ src/editfns.c | 10 ++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 35d68ae2599..26c95ae77ed 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2010-06-15 Glenn Morris + + * editfns.c (Fbyte_to_string): Pacify compiler. + 2010-06-09 Stefan Monnier * dbusbind.c (xd_append_arg): Don't "make-unibyte" the string. diff --git a/src/editfns.c b/src/editfns.c index caac2c5c199..ea279a462f2 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -1,7 +1,8 @@ /* Lisp functions pertaining to editing. - Copyright (C) 1985, 1986, 1987, 1989, 1993, 1994, 1995, 1996, - 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + +Copyright (C) 1985, 1986, 1987, 1989, 1993, 1994, 1995, 1996, 1997, + 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, + 2009, 2010 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -225,8 +226,9 @@ DEFUN ("byte-to-string", Fbyte_to_string, Sbyte_to_string, 1, 1, 0, (byte) Lisp_Object byte; { + unsigned char b; CHECK_NUMBER (byte); - unsigned char b = XINT (byte); + b = XINT (byte); return make_string_from_bytes (&b, 1, 1); } From 8b9f5fe8d850c7724aabbfdbd26cb4afdf1d6440 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Tue, 15 Jun 2010 13:41:21 +0200 Subject: [PATCH 14/15] * etc/NEWS.1-17: Fix typos. --- etc/NEWS.1-17 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/etc/NEWS.1-17 b/etc/NEWS.1-17 index 23184c45689..122c634b0f2 100644 --- a/etc/NEWS.1-17 +++ b/etc/NEWS.1-17 @@ -760,7 +760,7 @@ not try to give commands in it when no longer really in the debugger. * New function `switch-to-buffer-other-window'. This is the new primitive to select a specified buffer (the -argument) in another window. It is not quite the same as +argument) in another window. It is not quite the same as `pop-to-buffer', because it is guaranteed to create another window (assuming there is room on the screen) so that it can leave the current window's old buffer displayed as well. @@ -971,7 +971,7 @@ once again "unmodified". This command creates an inferior Lisp process whose input and output appear in the Emacs buffer named `*lisp*'. That buffer uses a major mode called inferior-lisp-mode, which has many of the commands of lisp-mode -and those of shell-mode. Calls the value of shell-mode-hook and +and those of shell-mode. Calls the value of shell-mode-hook and lisp-mode-hook, in that order, if non-nil. Meanwhile, in lisp-mode, the command C-M-x is defined to @@ -1421,7 +1421,7 @@ Changes in Emacs 15 of the executing emacs, for use in run-time conditionalization. The function featurep of one argument may be used to test for the - presence of a feature. It is just the same as + presence of a feature. It is just the same as (not (null (memq FEATURE features))) where FEATURE is its argument. For example, (if (featurep 'magic-window-hack) (transmogrify-window 'vertical) @@ -1541,13 +1541,13 @@ Changes in Emacs 15 This function returns a cons cell whose car is the object produced by reading from the string and whose cdr is a number giving the - index in the string of the first character not read. That index may + index in the string of the first character not read. That index may be passed as the second argument to a later call to read-from-string to read the next form represented by the string. In addition, the function read now accepts a string as its argument. In this case, it calls read-from-string on the whole string, and - returns the car of the result. (ie the actual object read.) + returns the car of the result (ie the actual object read.) From 36901266a8acb83880fefee50c93abb09f64533b Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 16 Jun 2010 16:00:22 -0400 Subject: [PATCH 15/15] * lisp/font-lock.el (font-lock-major-mode): Rename from font-lock-mode-major-mode to distinguish it from global-font-lock-mode's own font-lock-mode-major-mode. (font-lock-set-defaults): * lisp/font-core.el (font-lock-default-function): Adjust users. (font-lock-mode): Don't set it at all. Fixes: debbugs:6135 --- lisp/ChangeLog | 9 +++++++++ lisp/font-core.el | 10 ++++------ lisp/font-lock.el | 9 ++++++--- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6e8ba492710..5e24d87f085 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2010-06-16 Stefan Monnier + + * font-lock.el (font-lock-major-mode): Rename from + font-lock-mode-major-mode to distinguish it from + global-font-lock-mode's own font-lock-mode-major-mode (bug#6135). + (font-lock-set-defaults): + * font-core.el (font-lock-default-function): Adjust users. + (font-lock-mode): Don't set it at all. + 2010-06-15 Stefan Monnier * vc-annotate.el (vc-annotate): Use vc-read-revision. diff --git a/lisp/font-core.el b/lisp/font-core.el index be3a2a3eaca..d33295b3c34 100644 --- a/lisp/font-core.el +++ b/lisp/font-core.el @@ -97,7 +97,7 @@ It will be passed one argument, which is the current value of `font-lock-mode'.") ;; The mode for which font-lock was initialized, or nil if none. -(defvar font-lock-mode-major-mode) +(defvar font-lock-major-mode) (define-minor-mode font-lock-mode "Toggle Font Lock mode. With arg, turn Font Lock mode off if and only if arg is a non-positive @@ -159,9 +159,7 @@ your own function which is called when `font-lock-mode' is toggled via ;; Arrange to unfontify this buffer if we change major mode later. (if font-lock-mode (add-hook 'change-major-mode-hook 'font-lock-change-mode nil t) - (remove-hook 'change-major-mode-hook 'font-lock-change-mode t)) - (when font-lock-mode - (setq font-lock-mode-major-mode major-mode))) + (remove-hook 'change-major-mode-hook 'font-lock-change-mode t))) ;; Get rid of fontification for the old major mode. ;; We do this when changing major modes. @@ -213,8 +211,8 @@ this function onto `change-major-mode-hook'." (and mode (boundp 'font-lock-set-defaults) font-lock-set-defaults - font-lock-mode-major-mode - (not (eq font-lock-mode-major-mode major-mode)))) + font-lock-major-mode + (not (eq font-lock-major-mode major-mode)))) (font-lock-mode-internal mode))) (defun turn-on-font-lock () diff --git a/lisp/font-lock.el b/lisp/font-lock.el index 0a0499d8db4..b4a2a72eee8 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -1784,15 +1784,18 @@ preserve `hi-lock-mode' highlighting patterns." (kill-local-variable 'font-lock-set-defaults) (font-lock-mode 1)) -(defvar font-lock-mode-major-mode) +(defvar font-lock-major-mode nil + "Major mode for which the font-lock settings have been setup.") +(make-variable-buffer-local 'font-lock-major-mode) + (defun font-lock-set-defaults () "Set fontification defaults appropriately for this mode. Sets various variables using `font-lock-defaults' (or, if nil, using `font-lock-defaults-alist') and `font-lock-maximum-decoration'." ;; Set fontification defaults if not previously set for correct major mode. (unless (and font-lock-set-defaults - (eq font-lock-mode-major-mode major-mode)) - (setq font-lock-mode-major-mode major-mode) + (eq font-lock-major-mode major-mode)) + (setq font-lock-major-mode major-mode) (set (make-local-variable 'font-lock-set-defaults) t) (make-local-variable 'font-lock-fontified) (make-local-variable 'font-lock-multiline)