Merge from trunk; up to 2014-02-23T23:41:17Z!lekktu@gmail.com.

This commit is contained in:
Bill Wohler 2014-02-23 18:04:35 -08:00
commit 3e93bafb95
2625 changed files with 315027 additions and 317624 deletions

View file

@ -7,7 +7,8 @@
;; See admin/notes/bugtracker.
(log-edit-mode . ((log-edit-rewrite-fixes
"[ \n](bug#\\([0-9]+\\))" . "debbugs:\\1")
(log-edit-font-lock-gnu-style . t)))
(log-edit-font-lock-gnu-style . t)
(log-edit-setup-add-author . t)))
(change-log-mode . ((add-log-time-zone-rule . t)
(fill-column . 74)
(bug-reference-url-format . "http://debbugs.gnu.org/%s")

6
.gitignore vendored
View file

@ -10,8 +10,14 @@ lib/Makefile.in
src/config.in
autom4te.cache
makefile
TAGS
*~
/README.W32
/bin/
/site-lisp/
/leim/ja-dic/
etc/refcards/*.aux
etc/refcards/*.log
info/dir
info/*.info

1327
ChangeLog

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
# Build Emacs from a fresh tarball or version-control checkout.
# Copyright (C) 2011-2013 Free Software Foundation, Inc.
# Copyright (C) 2011-2014 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@ -32,7 +32,6 @@
# run "configure" by hand. But run autogen.sh first, if the source
# was checked out directly from the repository.
# If a Makefile already exists, just use it.
ifeq ($(wildcard Makefile),Makefile)
@ -63,8 +62,8 @@ default $(filter-out configure Makefile,$(MAKECMDGOALS)): Makefile
configure:
@echo >&2 'There seems to be no "configure" file in this directory.'
@echo >&2 'Running ./autogen.sh || autogen/copy_autogen ...'
./autogen.sh || autogen/copy_autogen
@echo >&2 'Running ./autogen.sh ...'
./autogen.sh
@echo >&2 '"configure" file built.'
Makefile: configure

138
INSTALL
View file

@ -1,14 +1,14 @@
GNU Emacs Installation Guide
Copyright (C) 1992, 1994, 1996-1997, 2000-2013
Free Software Foundation, Inc.
Copyright (C) 1992, 1994, 1996-1997, 2000-2014 Free Software Foundation,
Inc.
See the end of the file for license conditions.
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.
msdos/INSTALL. For information about building from a repository checkout
(rather than a release), also read the file INSTALL.REPO.
BASIC INSTALLATION
@ -62,32 +62,24 @@ sections if you need to.
name, where to find various headers and libraries, etc.
Refer to the section DETAILED BUILDING AND INSTALLATION 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 `configure' didn't find some image support libraries, such as
Xpm and jpeg, refer to "Image support libraries" below.
If the details printed by `configure' don't make any sense to
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
directories before running `configure' again:
make distclean
./configure
5. Invoke the `make' program:
4. Invoke the `make' program:
make
6. If `make' succeeds, it will build an executable program `emacs'
5. If `make' succeeds, it will build an executable program `emacs'
in the `src' directory. You can try this program, to make sure
it works:
src/emacs -Q
7. Assuming that the program `src/emacs' starts and displays its
6. Assuming that the program `src/emacs' starts and displays its
opening screen, you can install the program and its auxiliary
files into their installation directories:
@ -101,6 +93,10 @@ sections if you need to.
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.
If you want to build Emacs again with different configure options,
first clean the source directories:
make distclean
Note that the install automatically saves space by compressing
(provided you have the `gzip' program) those installed Lisp source (.el)
@ -120,19 +116,7 @@ packages. Note that if there is a separate `dev' or `devel' package,
for use at compilation time rather than run time, you will need that
as well as the corresponding run time package; typically the dev
package will contain header files and a library archive. Otherwise,
you can download and build libraries from sources.
The sources of these libraries are available by anonymous CVS from
cvs.m17n.org.
% cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n login
% cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n co m17n-db
% cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n co m17n-lib
% cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n co libotf
For m17n-lib, if you have problems with making the whole package
because you lack some other packages on which m17n-lib depends, try to
configure it with the option "--without-gui".
you can download the libraries from <http://www.nongnu.org/m17n/>.
Note that Emacs cannot support complex scripts on a TTY, unless the
terminal includes such a support.
@ -157,37 +141,40 @@ in the intlfonts/README file.
* Image support libraries
Emacs needs optional libraries to be able to display images (with the
exception of PBM and XBM images whose support is built-in).
Emacs needs libraries to display images, with the exception of PBM and
XBM images whose support is built-in.
On some systems, particularly on GNU/Linux, these libraries may
already be present or available as additional packages. Note that if
already be present or available as additional packages. If
there is a separate `dev' or `devel' package, for use at compilation
time rather than run time, you will need that as well as the
corresponding run time package; typically the dev package will
contain header files and a library archive. Otherwise, you can
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.
download and build libraries from sources. Although none of them are
essential for running Emacs, some are important enough that
'configure' will report an error if they are absent from a system that
has X11 support, unless 'configure' is specifically told to omit them.
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):
Here's a list of some of these libraries, and the URLs where they
can be found (in the unlikely event that your distribution does not
provide them). By default, libraries marked with an X are required if
X11 is being used.
. 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: http://www.ijg.org/
. libtiff for TIFF: http://www.libtiff.org/
. libgif for GIF: http://sourceforge.net/projects/giflib/
libXaw3d http://directory.fsf.org/project/xaw3d/
X libxpm for XPM: http://www.x.org/releases/current/src/lib/
X libpng for PNG: http://www.libpng.org/
libz (for PNG): http://www.zlib.net/
X libjpeg for JPEG: http://www.ijg.org/
X libtiff for TIFF: http://www.remotesensing.org/libtiff/
X libgif for GIF: http://sourceforge.net/projects/giflib/
Emacs will configure itself to build with these libraries if the
`configure' script finds them on your system, unless you supply 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', if you need to.
If you supply the appropriate --without-LIB option, 'configure' will
omit the corresponding library from Emacs, even if that makes for a
less-pleasant user interface. Otherwise, Emacs will configure itself
to build with these libraries if 'configure' finds them on your
system, and 'configure' will complain and exit if a library marked 'X'
is not found on a system that uses X11. Use --without-LIB if your
version of a library won't work because some routines are missing.
* Extra fonts
@ -212,7 +199,7 @@ 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'. On Red Hat systems, the
like `apt-get build-dep emacs24'. On Red Hat systems, the
corresponding command is `yum-builddep emacs'.
@ -267,14 +254,11 @@ 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 `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 <http://www.lesstif.org>.
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).
`lucid' are synonyms for `athena'). Compiling with 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 Motif, if you have the Xaw3d library installed (see
"Image support libraries" above for Xaw3d availability).
You can tell configure where to search for GTK by specifying
`--with-pkg-config-prog=PATH' where PATH is the pathname to
@ -295,7 +279,7 @@ individual users--see the Rmail chapter of the Emacs manual.
For image support you may have to download, build, and install the
appropriate image support libraries for image types other than XBM and
PBM, see the list of URLs in "ADDITIONAL DISTRIBUTION FILES" above.
PBM, see the list of URLs in "Image support libraries" above.
(Note that PNG support requires libz in addition to libpng.)
To disable individual types of image support in Emacs for some reason,
@ -308,8 +292,7 @@ or more of these options:
--without-gif for GIF image support
--without-png for PNG image support
Use --without-toolkit-scroll-bars to disable LessTif/Motif or Xaw3d
scroll bars.
Use --without-toolkit-scroll-bars to disable 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.
@ -326,14 +309,15 @@ equivalent to --without-sound --without-dbus --without-libotf
--without-selinux --without-xft --without-gsettings --without-gnutls
--without-rsvg --without-xml2 --without-gconf --without-imagemagick
--without-m17n-flt --without-jpeg --without-tiff --without-gif
--without-png --without-gpm. Note that --without-all leaves X support
enabled, and using the GTK2 or GTK3 toolkit creates a lot of library
dependencies. So if you want to build a small executable with very basic
X support, use --without-all --with-x-toolkit=no. For the smallest possible
executable without X, use --without-all --without-x. If you want to build
with just a few features enabled, you can combine --without-all with
--with-FEATURE. For example, you can use --without-all --with-dbus
to build with DBus support and nothing more.
--without-png --without-gpm --without-file-notification. Note that
--without-all leaves X support enabled, and using the GTK2 or GTK3
toolkit creates a lot of library dependencies. So if you want to
build a small executable with very basic X support, use --without-all
--with-x-toolkit=no. For the smallest possible executable without X,
use --without-all --without-x. If you want to build with just a few
features enabled, you can combine --without-all with --with-FEATURE.
For example, you can use --without-all --with-dbus to build with DBus
support and nothing more.
Use --with-wide-int to implement Emacs values with the type 'long long',
even on hosts where a narrower type would do. With this option, on a
@ -482,10 +466,6 @@ variable gets by default! Make sure you know what kind of value the
variable should have. If you don't pay attention to what you are
doing, you'll make a mistake.
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!
The `site-*.el' files are nonexistent in the distribution. You do not
need to create them if you have nothing to put in them.
@ -656,7 +636,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; the following variable is specific to Emacs.
GNU software; the following variables are specific to Emacs.
`archlibdir' indicates where Emacs installs and expects the executable
files and other architecture-dependent data it uses while
@ -664,6 +644,10 @@ GNU software; the following variable is specific to Emacs.
see), is `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME'
(where VERSION and CONFIGURATION-NAME are as described above).
`GZIP_PROG' is the name of the executable that compresses installed info,
manual, and .el files. It defaults to gzip. Setting it to
the empty string suppresses compression.
Remember that you must specify any variable values you need each time
you run `make' in the top directory. If you run `make' once to build
emacs, test it, and then run `make' again to install the files, you

View file

@ -1,11 +1,11 @@
Copyright (C) 2002-2013 Free Software Foundation, Inc.
Copyright (C) 2002-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.
Building and Installing Emacs from Bazaar
Building and Installing Emacs from the Repository
Building Emacs from Bazaar requires some tools that are not needed
when building from a release. You will need:
Building Emacs from the source-code repository requires some tools
that are not needed when building from a release. You will need:
autoconf - at least the version specified near the start of
configure.ac (in the AC_PREREQ command).
@ -34,14 +34,14 @@ doing the wrong thing if you update the build procedure, you can
invoke "./configure -C" instead.
Some of the files that are included in the Emacs tarball, such as
byte-compiled Lisp files, are not stored in Bazaar. Therefore, to
build from Bazaar you must run "make bootstrap" instead of just "make":
byte-compiled Lisp files, are not stored in the repository. Therefore, to
build from the repository you must run "make bootstrap" instead of
just "make":
$ bzr pull
$ make bootstrap
Normally, it is not necessary to use "make bootstrap" after every
update from Bazaar. "make" should work in 90% of the cases and be
update from the repository. "make" should work in 90% of the cases and be
much quicker.
$ make
@ -72,7 +72,7 @@ platform-specific configuration scripts (nt/configure.bat, config.bat,
etc.) before "make bootstrap" or "make"; the rest of the procedure is
applicable to those systems as well.
Because the Bazaar version of Emacs is a work in progress, it will
Because the repository version of Emacs is a work in progress, it will
sometimes fail to build. Please wait a day or so (and check the
archives of the emacs-buildstatus, emacs-devel, and bug-gnu-emacs
mailing lists) before reporting such problems. In most cases, the

File diff suppressed because it is too large Load diff

14
README
View file

@ -1,4 +1,4 @@
Copyright (C) 2001-2013 Free Software Foundation, Inc.
Copyright (C) 2001-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.
@ -24,8 +24,9 @@ list bug-gnu-emacs@gnu.org. If possible, use M-x report-emacs-bug.
See the "Bugs" section of the Emacs manual for more information on how
to report bugs. (The file `BUGS' in this directory explains how you
can find and read that section using the Info files that come with
Emacs.) See `etc/MAILINGLISTS' for more information on mailing lists
relating to GNU packages.
Emacs.) For a list of mailing lists related to Emacs, see
<http://savannah.gnu.org/mail/?group=emacs>. For the complete
list of GNU mailing lists, see <http://lists.gnu.org/>.
The `etc' subdirectory contains several other files, named in capital
letters, which you might consider looking at when installing GNU
@ -64,9 +65,10 @@ There are several subdirectories:
its primitives, the redisplay code, and some basic editing
functions).
`lisp' holds the Emacs Lisp code for Emacs (most everything else).
`leim' holds the library of Emacs input methods, Lisp code and
auxiliary data files required to type international characters
which can't be directly produced by your keyboard.
`leim' holds the original source files for the generated files
in lisp/leim. These form the library of Emacs input methods,
required to type international characters that can't be
directly produced by your keyboard.
`lib' holds source code for libraries used by Emacs and its utilities
`lib-src' holds the source code for some utility programs for use by or
with Emacs, like movemail and etags.

View file

@ -9,7 +9,6 @@ documented in config.in, and this file would not be necessary.
AIX
_AIX
BSD_SYSTEM
CYGWIN Compiling the Cygwin port.
__CYGWIN__ Ditto
GNU_LINUX
@ -25,7 +24,6 @@ _MSC_VER Compiling the W32 port with the Microsoft C compiler.
DARWIN_OS Compiling on Mac OS X or pure Darwin (and using s/darwin.h).
SOLARIS2
USG
USG5
USG5_4
** Distinguishing GUIs **
@ -136,8 +134,6 @@ HAVE_DECL_STRTOUMAX
HAVE_DECL_SYS_SIGLIST
HAVE_DECL_TZNAME
HAVE_DECL___SYS_SIGLIST
HAVE_DES_H
HAVE_DEV_PTMX
HAVE_DIALOGS
HAVE_DIFFTIME
HAVE_DUP2
@ -149,7 +145,6 @@ HAVE_FORK
HAVE_FREEIFADDRS
HAVE_FREETYPE
HAVE_FSEEKO
HAVE_FSYNC
HAVE_FUTIMENS
HAVE_FUTIMES
HAVE_FUTIMESAT
@ -176,8 +171,6 @@ HAVE_GET_CURRENT_DIR_NAME
HAVE_GHOSTSCRIPT
HAVE_GIF
HAVE_GNUTLS
HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY
HAVE_GNUTLS_CERTIFICATE_SET_VERIFY_FUNCTION
HAVE_GPM
HAVE_GRANTPT
HAVE_GSETTINGS
@ -200,26 +193,15 @@ HAVE_IMAGEMAGICK
HAVE_INET_SOCKETS
HAVE_INTTYPES_H
HAVE_JPEG
HAVE_KERBEROSIV_DES_H
HAVE_KERBEROSIV_KRB_H
HAVE_KERBEROS_DES_H
HAVE_KERBEROS_KRB_H
HAVE_KRB5_ERROR_E_TEXT
HAVE_KRB5_ERROR_TEXT
HAVE_KRB5_H
HAVE_KRB_H
HAVE_LANGINFO_CODESET
HAVE_LIBCOM_ERR
HAVE_LIBCRYPTO
HAVE_LIBDES
HAVE_LIBDES425
HAVE_LIBDGC
HAVE_LIBDNET
HAVE_LIBHESIOD
HAVE_LIBK5CRYPTO
HAVE_LIBKRB
HAVE_LIBKRB4
HAVE_LIBKRB5
HAVE_LIBKSTAT
HAVE_LIBLOCKFILE
HAVE_LIBM
@ -228,12 +210,10 @@ HAVE_LIBOTF
HAVE_LIBPERFSTAT
HAVE_LIBPNG_PNG_H
HAVE_LIBPTHREADS
HAVE_LIBRESOLV
HAVE_LIBSELINUX
HAVE_LIBXEXT
HAVE_LIBXML2
HAVE_LIBXMU
HAVE_LINUX_VERSION_H
HAVE_LOCALTIME_R
HAVE_LOCAL_SOCKETS
HAVE_LONG_FILE_NAMES
@ -300,7 +280,6 @@ HAVE_SNPRINTF
HAVE_SOCKETS
HAVE_SOUND
HAVE_SOUNDCARD_H
HAVE_SPEED_T
HAVE_STDINT_H
HAVE_STDIO_EXT_H
HAVE_STDLIB_H
@ -379,7 +358,6 @@ HAVE_WS2TCPIP_H
HAVE_XAW3D
HAVE_XFT
HAVE_XIM
HAVE_XKBGETKEYBOARD
HAVE_XPM
HAVE_XRMSETDATABASE
HAVE_XSCREENNUMBEROFSCREEN

View file

@ -1,3 +1,440 @@
2014-02-06 David Engster <deng@randomsample.de>
* grammars/c.by (function-pointer): Correctly deal with anonymous
function pointers.
(opt-brackets-after-symbol): New.
(multi-stage-dereference): Use it. Add rules for explicit
matching the last dereference.
2014-01-16 Eric S. Raymond <esr@thyrsus.com>
* notes/commits: Add a 'graph on VCS-independent ways of
identifying commits and the desirability thereof.
2014-01-15 Paul Eggert <eggert@cs.ucla.edu>
Fix copyright license notices for Adobe Unicode mapping files.
* charsets/mapfiles/README: The copied files are not compressed.
Check for copies as of today.
* charsets/mapfiles/stdenc.txt, charsets/mapfiles/symbol.txt:
Update from table version 0.2 (1999-03-30) to 1.0 (2011-07-12).
This doesn't change the table data, just copyright license notice.
The new notices are compatible with the GPL, the old ones were not.
2014-01-13 Glenn Morris <rgm@gnu.org>
* update_autogen (status): New function. Use throughout.
2014-01-10 Glenn Morris <rgm@gnu.org>
* update_autogen: Fix sed bug that was losing the last AUTOGEN_VCS.
2014-01-04 Glenn Morris <rgm@gnu.org>
* admin.el (manual-html-fix-node-div): Handle Texinfo 5's movable <hr>.
(manual-html-fix-index-2): Tweak Texinfo 5 table format.
Fix minor Texinfo 4 issue with start of detailed menu.
2014-01-03 Glenn Morris <rgm@gnu.org>
* admin.el: More Texinfo 5 updates.
(manual-html-fix-headers): Tweak Texinfo 5 body.
(manual-html-fix-node-div): Treat "header" like "node".
(manual-html-fix-index-1): Handle Texinfo 5 top heading.
(manual-html-fix-index-2): Tweak Texinfo 5 listing tables.
2014-01-02 Xue Fuqiao <xfq.free@gmail.com>
* check-doc-strings: Replace `perl -w' with `use warnings;'.
2013-12-30 Glenn Morris <rgm@gnu.org>
* admin.el (manual-html-fix-headers, manual-html-fix-index-1):
Some updates for changes in Texinfo 5 output.
2013-12-29 Xue Fuqiao <xfq.free@gmail.com>
* make-emacs:
* build-configs: Add the "use strict;" and "use warnings;" pragmas.
2013-12-28 Glenn Morris <rgm@gnu.org>
* admin.el (cusver-scan): Warn about missing :types.
(cusver-check): Interactively, require existing directories.
2013-12-27 Xue Fuqiao <xfq.free@gmail.com>
* admin.el (manual-misc-manuals, make-manuals):
(manual-pdf, cusver-find-files):
(cusver-new-version, cusver-scan, cusver-goto-xref):
(cusver-check): Doc fix.
(manual-html-node, cusver-check): Use `user-error'.
2013-12-24 Paul Eggert <eggert@cs.ucla.edu>
Automate the procedure for updating copyright year.
* merge-gnulib (GNULIB_MODULES): Add update-copyright.
* notes/years: Mention admin/update-copyright.
* update-copyright: New file.
2013-12-24 Xue Fuqiao <xfq.free@gmail.com>
* admin.el (add-release-logs):
(set-version-in-file, set-version, set-copyright):
Use `user-error'.
2013-12-22 Eli Zaretskii <eliz@gnu.org>
* unidata/unidata-gen.el (unidata-split-name): Don't give any NAME
to <control> characters: the Unicode Standard says they have no
name. (Bug#16216)
(unidata-describe-bidi-class): Add new "isolate" classes
introduced by Unicode 6.3.
2013-12-12 David Engster <deng@randomsample.de>
* grammars/c.by (expr-binop): Add MOD.
(variablearg): Add 'opt-assign'.
(variablearg, varnamelist): Add default values so that it can be
later expanded into the tag.
(opt-stuff-after-symbol): Rename to 'brackets-after-symbol' and
remove empty match.
(multi-stage-dereference): Adapt to above rename.
(unaryexpression): Use 'symbol' instead of 'namespace-symbol',
since the latter also leads to an empty match at the end which
would make this too greedy.
(variablearg-opt-name): Support parsing of function pointers
inside an argument list.
2013-12-12 Glenn Morris <rgm@gnu.org>
* update_autogen (info_dir):
Use dir_top from build-aux/ rather than admin/.
* update_autogen: Add option to generate info/dir.
(Usage): Add -I.
(info_flag): New variable.
(-I): New option.
(doc): Maybe check its status.
(info_dir): New function.
* dir_top: New file.
2013-12-11 Paul Eggert <eggert@cs.ucla.edu>
Remove the option of using libcrypto.
* merge-gnulib: Remove lib/gl_openssh.h and m4/gl-openssl.m4.
2013-12-04 Eli Zaretskii <eliz@gnu.org>
* unidata/unidata-gen.el (unidata-prop-alist): Update bidi-class
to include the new isolate-related classes introduced with Unicode
v6.3.
(unidata-encode-val): Accept an additional optional argument, a
warning message to emit when UnicodeData.txt defines bidi-class
values that are not in unidata-prop-alist. Add a comment
explaining what should maintainers do if/when such a warning ever
appears.
(unidata-gen-table): Call unidata-encode-val with 3rd arg non-nil
when generating uni-bidi.el.
2013-12-01 Glenn Morris <rgm@gnu.org>
* unidata/Makefile.in (${DSTDIR}/charprop.el):
Ensure output files are writable.
2013-11-30 Glenn Morris <rgm@gnu.org>
* grammars/Makefile.in: Ensure output files are writable.
2013-11-30 Eli Zaretskii <eliz@gnu.org>
* charsets/mule-charsets.el: Rewritten to work in Emacs 23 and
later. (Bug#16007)
2013-11-30 Glenn Morris <rgm@gnu.org>
Stop keeping (most) generated cedet grammar files in the repository.
* grammars/README: Remove.
* grammars/Makefile.in: New file.
* grammars/c.by, grammars/java-tags.wy, grammars/js.wy:
* grammars/python.wy: Update declarations to match generated outputs.
2013-11-28 Glenn Morris <rgm@gnu.org>
* unidata/unidata-gen.el (unidata-gen-files):
Disable autoloads in generated files.
2013-11-27 Glenn Morris <rgm@gnu.org>
* unidata/Makefile.in (all, install, clean, bootstrap-clean)
(distclean, maintainer-clean): Declare as PHONY.
(compile, extraclean): New.
(${DSTDIR}/charprop.el): Depend on source files rather than
intermediate products.
2013-11-11 Glenn Morris <rgm@gnu.org>
* unidata/BidiMirroring.txt, unidata/UnicodeData.txt: Update to 6.3.0.
* unidata/unidata-gen.el (unidata-gen-files):
Tweak whitespace in generated files.
2013-11-09 Glenn Morris <rgm@gnu.org>
* unidata/unidata-gen.el (unidata-gen-files):
Fix deletion of existing output files after 2013-10-30 changes.
2013-11-07 Glenn Morris <rgm@gnu.org>
* unidata/unidata-gen.el (unidata-gen-files):
Disable version-control in generated files.
Update Unicode Inc. copyright years.
2013-11-05 Glenn Morris <rgm@gnu.org>
* update_autogen: Move here from ../autogen.
(usage): Update. Remove -l, add -A.
(autogendir): New variable.
(ldefs_flag): Default to set.
(genfiles): Reduce to only ms-dos relevant files.
(main): Make checking autogen sources optional.
Make copying of autogen files optional.
2013-10-30 Glenn Morris <rgm@gnu.org>
* unidata/unidata-gen.el (unidata-gen-files): Use pop.
Also take the output directory as an argument.
* unidata/Makefile.in: Simplify now that unidata-gen-files takes
the output directory as an argument (no need to cd, etc).
(abs_srcdir, abs_builddir): Remove.
(abs_top_builddir): Replace by top_builddir.
(${DSTDIR}/charprop.el): No need to cd. Pass dest as argument.
(${DSTDIR}/charprop.el, charprop.el):
No need to pass unidata.txt as argument.
* unidata/unidata-gen.el (unidata--ensure-compiled): New function.
(unidata-gen-table-name, unidata-gen-table-decomposition)
(unidata-gen-files): Use unidata--ensure-compiled.
* unidata/Makefile.in (abs_srcdir): New, set by configure.
(${DSTDIR}/charprop.el, charprop.el): Update for srcdir not absolute.
(clean): Delete all .elc files.
(bootstrap-clean): New rule.
2013-10-23 Glenn Morris <rgm@gnu.org>
* unidata/Makefile.in (emacs, ${DSTDIR}/charprop.el):
Quote entities that might contain whitespace.
2013-10-07 Paul Eggert <eggert@cs.ucla.edu>
Improve support for popcount and counting trailing zeros (Bug#15550).
* merge-gnulib (GNULIB_MODULES): Add count-one-bits
and count-trailing-zeros.
2013-10-04 Paul Eggert <eggert@cs.ucla.edu>
Use hardware support for byteswapping on glibc x86 etc.
* merge-gnulib (GNULIB_MODULES): Add byteswap.
2013-08-28 Paul Eggert <eggert@cs.ucla.edu>
* unidata/Makefile.in (SHELL): Now @SHELL@, not /bin/sh,
for portability to hosts where /bin/sh has problems.
2013-08-27 Glenn Morris <rgm@gnu.org>
* admin.el (manual-misc-manuals): Use INFO_COMMON rather than
INFO_TARGETS. "faq" does not need special treatment any more.
2013-08-15 Glenn Morris <rgm@gnu.org>
* make-tarball.txt: Mention generating pdfs in etc/refcards.
2013-08-15 Xue Fuqiao <xfq.free@gmail.com>
* notes/hydra: More information about Hydra.
2013-08-10 Xue Fuqiao <xfq.free@gmail.com>
* notes/hydra: New file.
2013-08-04 Paul Eggert <eggert@cs.ucla.edu>
Fix some minor races in hosts lacking mkostemp (Bug#15015).
* merge-gnulib (GNULIB_MODULES): Add mkostemp.
2013-07-12 Glenn Morris <rgm@gnu.org>
* admin.el (manual-style-string): Use non-abbreviated url.
2013-07-09 Paul Eggert <eggert@cs.ucla.edu>
Port recent close-on-exec changes to Cygwin (Bug#14821).
* merge-gnulib (GNULIB_TOOL_FLAGS): Don't avoid binary-io.
Handle error numbers a bit more reliably.
* merge-gnulib (GNULIB_MODULES): Remove ignore-value.
2013-07-07 Paul Eggert <eggert@cs.ucla.edu>
Make file descriptors close-on-exec when possible (Bug#14803).
* merge-gnulib (GNULIB_MODULES): Add fcntl, pipe2.
(GNULIB_TOOL_FLAGS): Avoid binary-io, close. Do not avoid fcntl.
2013-07-06 Glenn Morris <rgm@gnu.org>
* admin.el (manual-misc-manuals): New function.
(make-manuals): Avoid hard-coding list of misc manuals.
Add the option to only make certain type(s) of output.
(manual-misc-html): Special-case ccmode and efaq.
(manual-html-mono, manual-html-node, manual-pdf, manual-ps):
Move creation of output directory here from make-manuals.
(manual-html-fix-index-2): Avoid dynamic reference to `f'.
2013-07-05 Glenn Morris <rgm@gnu.org>
* admin.el (make-manuals): Use a standard location for lispintro.
Use a pdf/ subdirectory for pdf versions.
2013-06-29 Glenn Morris <rgm@gnu.org>
* admin.el (make-manuals): Don't bother with txt or dvi any more.
(manual-txt): Remove.
(manual-pdf): Doc fix.
(manual-ps): Rename from manual-dvi.
(manual-pdf, manual-ps): Work in the directory with the texi file,
so that TeX intermediate files go there rather than to PWD.
2013-06-15 Xue Fuqiao <xfq.free@gmail.com>
* notes/changelogs: Mention trivial changes in Change Log.
2013-06-13 Glenn Morris <rgm@gnu.org>
* admin.el (manual-style-string): Use new file manual.css.
2013-06-02 Eric Ludlam <zappo@gnu.org>
* grammars/srecode-template.wy (variable): Accept a single number
as a variable value. Allows the 'priority' to be set to a number.
(wisent-srecode-template-lexer): Move number up so it can be created.
2013-05-16 Glenn Morris <rgm@gnu.org>
* cus-test.el (cus-test-cus-load-groups): New function.
(cus-test-get-options): Add option to return groups.
(cus-test-noloads): Also check custom groups.
2013-05-15 Stefan Monnier <monnier@iro.umontreal.ca>
* quick-install-emacs: Don't prune DOC-* files a any more.
2013-05-14 Glenn Morris <rgm@gnu.org>
* cus-test.el (cus-test-get-lisp-files): Ignore obsolete/.
(cus-test-libs): Fix let-binding of default-directory.
(cus-test-noloads): Load all libs for the comparison.
2013-05-11 Glenn Morris <rgm@gnu.org>
* cus-test.el (cus-test-libs-noloads): Add a few more files.
(cus-test-load-libs, cus-test-opts):
Add option to load more/all Lisp files.
(cus-test-get-lisp-files): Ignore .*.el files.
2013-05-10 Glenn Morris <rgm@gnu.org>
* cus-test.el (cus-test-libs-noloads): Add some files.
(cus-test-get-lisp-files): New function.
(cus-test-libs): Add option to load more/all Lisp files.
2013-05-09 Glenn Morris <rgm@gnu.org>
* cus-test.el: No need to provide bbdb, bbdb-com any more.
(cus-test-libs-noloads): Add dunnet in the defvar.
(dunnet): Don't always load it.
(viper-mode): Only set if interactive.
(cus-test-load-custom-loads): Load dunnet if necessary.
(cus-test-load-1): New macro, with common code from cus-test-load-libs
and cus-test-libs.
(cus-test-load-libs, cus-test-libs): Use cus-test-load-1 macro.
Update for cus-test-get-autoload-deps changed result.
(cus-test-get-autoload-deps): Simplify. Return file names as they
appear in loaddefs.el (directory parts are needed now that not all
lisp subdirs are in load-path).
(cus-test-deps): Explicitly skip dunnet.
2013-05-07 Paul Eggert <eggert@cs.ucla.edu>
Use Gnulib ACL implementation, for benefit of Solaris etc. (Bug#14295)
* merge-gnulib (GNULIB_MODULES): Add qacl.
(GNULIB_TOOL_FLAGS): Do not avoid errno.
2013-04-01 Paul Eggert <eggert@cs.ucla.edu>
Use UTF-8 for most files with non-ASCII characters (Bug#13936).
* notes/unicode (etc/tutorials/TUTORIAL.ko, leim/quail/hanja.el)
(leim/quail/hanja3.el, leim/quail/symbol-ksc.el):
Now utf-8, not iso-2022-7bit. Also, files that contain non-UTF-8
characters are now encoded in utf-8-emacs, not iso-2022-7bit.
2013-03-18 Paul Eggert <eggert@cs.ucla.edu>
* notes/unicode: Mention some more iso-2022-7bit files (Bug#13936).
Automate the build of ja-dic.el (Bug#13984).
* notes/unicode: ja-dic.el is now UTF-8.
2013-03-16 Glenn Morris <rgm@gnu.org>
* admin.el (manual-pdf, manual-dvi): Pass -I to texi2pdf, texi2dvi.
2013-03-16 Glenn Morris <rgm@gnu.org>
* admin.el (manual-html-mono, manual-html-node): Add -DWWW_GNU_ORG.
2013-03-13 Paul Eggert <eggert@cs.ucla.edu>
File synchronization fixes (Bug#13944).
* CPP-DEFINES (BSD_SYSTEM, HAVE_FSYNC): Remove.
* merge-gnulib (GNULIB_MODULES): Add fsync, fdatasync.
2013-03-11 Paul Eggert <eggert@cs.ucla.edu>
* notes/unicode: Improve notes about Emacs source file encoding.
2013-03-11 Glenn Morris <rgm@gnu.org>
* admin.el (make-manuals): Add emacs-lisp-intro and some more
doc/misc manuals.
(manual-html-mono, manual-html-node, manual-txt):
Pass -I to makeinfo.
2013-03-10 Glenn Morris <rgm@gnu.org>
* admin.el (add-release-logs): Use UTC for release date.
2013-03-09 Glenn Morris <rgm@gnu.org>
* admin.el (add-release-logs): Provide interactive defaults.
Allow specification of the release date. Don't exclude gnus/.
2013-03-05 Paul Eggert <eggert@cs.ucla.edu>
* notes/unicode: Add notes about Emacs source file encoding.
2013-03-04 Paul Eggert <eggert@cs.ucla.edu>
* grammars/java-tags.wy (CHAR): Remove "('\u0000' to '\uffff')"
from summary, as this causes javat-wy.el to contain both a null byte
and a byte sequence that is not valid UTF-8, which is inconvenient.
2013-03-03 Paul Eggert <eggert@cs.ucla.edu>
* bzrmerge.el (bzrmerge-apply): Omit Latin-1 char from diagnostic.
If there were a real need, it should be UTF-8 anyway.
2013-02-25 Paul Eggert <eggert@cs.ucla.edu>
Simplify data_start configuration (Bug#13783).
@ -29,7 +466,7 @@
2012-12-14 Paul Eggert <eggert@cs.ucla.edu>
Fix permissions bugs with setgid directories etc. (Bug#13125)
Fix permissions bugs with setgid directories etc. (Bug#13125)
* CPP-DEFINES (BSD4_2): Remove.
2012-12-08 Paul Eggert <eggert@cs.ucla.edu>
@ -145,10 +582,10 @@
(cusver-scan): Check if containing group has a :version.
(cusver-check): Add VERSION argument.
2012-10-01 David Engster <deng@randomsample.de>
2012-10-06 David Engster <deng@randomsample.de>
* grammars/bovine-grammar.el:
* grammars/wisent-grammar.el: Move to lisp directory.
* grammars/wisent-grammar.el: Move to lisp/cedet/semantic directory.
2012-10-01 David Engster <deng@randomsample.de>
@ -161,7 +598,7 @@
* grammars/grammar.wy (semantic-grammar-lexer): Remove, since it
was copied to grammar.el. New %provide token to generate prefix
which conforms with Emacs conventions. Remove lexer definition,
which conforms with Emacs conventions. Remove lexer definition,
which is now in grammar.el.
2012-09-27 Glenn Morris <rgm@gnu.org>
@ -607,6 +1044,10 @@
* notes/bugtracker (bugtracker_debbugs_url): Fix typo.
2011-02-20 Paul Eggert <eggert@cs.ucla.edu>
* notes/copyright: Remove src/md5.c and src/md5.h as special cases.
2011-02-19 Eli Zaretskii <eliz@gnu.org>
* admin.el (set-version): Add msdos/sed2v2.inp.
@ -616,6 +1057,7 @@
Remove no-longer needed getloadavg symbols.
* CPP-DEFINES (LOAD_AVE_CVT, LOAD_AVE_TYPE, FSCALE, KERNEL_FILE):
(LDAV_SYMBOL): Remove.
* notes/copyright: Remove src/getloadavg.c as a special case.
2011-02-12 Glenn Morris <rgm@gnu.org>
@ -1138,7 +1580,7 @@
Sub-directory `unidata' is for codes to generate charprop.el and
many other uni-*.el files from `UnicodeData.txt'.
* Unidata/README: New file.
* unidata/README: New file.
* unidata/Makefile: New file.
@ -1564,8 +2006,6 @@
emacs.exe before zipping, and including batch file to recreate
after unpacking.
* nt/stitch.bat: New file.
* nt/README-ftp-server: Update wording and version number etc.
Add extra instructions for installing multi-file .zip
distribution.
@ -1685,7 +2125,7 @@
2001-09-04 Andrew Innes <andrewi@gnu.org>
* admin/nt/makedist.bat: Remove reference to obsolete file
* nt/makedist.bat: Remove reference to obsolete file
GETTING.GNU.SOFTWARE. Remove outdated comments. Explain about
version of tar used.
@ -1693,7 +2133,7 @@
;; coding: utf-8
;; End:
Copyright (C) 2001-2013 Free Software Foundation, Inc.
Copyright (C) 2001-2014 Free Software Foundation, Inc.
This file is part of GNU Emacs.

View file

@ -2,7 +2,13 @@ Tasks needed before the next release.
* TO BE DONE SHORTLY BEFORE RELEASE
** Either update, test, and support the old w32 build method, or remove it.
** Manuals
Check for node names using problematic characters:
find doc -name '*.texi' -exec grep '^@node[^,]*[:.()]' {} +
Sadly makeinfo does not warn about such characters.
Check cross-references between the manuals (eg from emacs to elisp)
are correct. You can use something like the following in the info
directory in the Emacs build tree:
@ -10,6 +16,28 @@ directory in the Emacs build tree:
emacs -Q --eval "(progn (require 'info) (setq Info-directory-list '(\".\")))" \
-f info-xref-check-all
Setting Info-directory-list avoids having system info pages confuse
things. References to external manuals will be flagged as
uncheckable. You should still check these, and also that each
external manual has an appropriate redirect in the file manual/.htaccess
in the web pages repository. E.g.:
Redirect /software/emacs/manual/html_mono/automake.html /software/automake/manual/automake.html
Redirect /software/emacs/manual/html_node/automake/ /software/automake/manual/html_node/
Another tool you can use to check links is gnu.org's linc.py:
http://www.gnu.org/server/source/
You run this something like:
cd /path/to/cvs/emacs-www
linc.py -o /path/to/output-dir --url http://www.gnu.org/software/emacs/ .
Be warned that it is really, really slow (as in, can take ~ a full day
to check the manual/ directory). It is probably best to run it on a
single directory at a time from eg manual/html_node. It is very
inefficient, but may reveal a few things that info-xref does not.
make emacs.dvi, elisp.dvi, and deal with any errors (undefined
references etc) in the output. Break any overfull lines.
Underfull hboxes are not serious, but it can be nice to get rid of
@ -42,7 +70,6 @@ I think this is different to what you get if you just use eg `make
emacs.pdf' (e.g., enable "smallbook").
** Check the keybindings in the refcards are correct, and add any new ones.
Regenerate the pdf versions in etc/refcards/.
What paper size are the English versions supposed to be on?
On Debian testing, the packages texlive-lang-czechslovak and
texlive-lang-polish will let you generate the cs-* and sk-* pdfs.
@ -112,7 +139,7 @@ SECTION READERS
----------------------------------
TUTORIAL cyd
TUTORIAL.bg ogi
TUTORIAL.cn
TUTORIAL.cn xfq
TUTORIAL.cs
TUTORIAL.de wl
TUTORIAL.eo
@ -120,7 +147,7 @@ TUTORIAL.es
TUTORIAL.fr
TUTORIAL.he eliz
TUTORIAL.it
TUTORIAL.ja
TUTORIAL.ja
TUTORIAL.ko
TUTORIAL.nl Pieter Schoenmakers
TUTORIAL.pl
@ -191,7 +218,6 @@ xresources.texi cyd
** Check the Lisp manual.
abbrevs.texi rgm
advice.texi cyd
anti.texi rgm
back.texi rgm
backups.texi cyd

View file

@ -1,4 +1,4 @@
Copyright (C) 2001-2013 Free Software Foundation, Inc.
Copyright (C) 2001-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.

View file

@ -1,6 +1,6 @@
;;; admin.el --- utilities for Emacs administration
;; Copyright (C) 2001-2013 Free Software Foundation, Inc.
;; Copyright (C) 2001-2014 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@ -21,46 +21,64 @@
;; add-release-logs Add ``Version X released'' change log entries.
;; set-version Change Emacs version number in source tree.
;; set-copyright Change emacs short copyright string (eg as
;; set-copyright Change Emacs short copyright string (eg as
;; printed by --version) in source tree.
;;; Code:
(defvar add-log-time-format) ; in add-log
(defun add-release-logs (root version)
;; Does this information need to be in every ChangeLog, as opposed to
;; just the top-level one? Only if you allow changes the same
;; day as the release.
;; http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00161.html
(defun add-release-logs (root version &optional date)
"Add \"Version VERSION released.\" change log entries in ROOT.
Root must be the root of an Emacs source tree."
(interactive "DEmacs root directory: \nNVersion number: ")
Root must be the root of an Emacs source tree.
Optional argument DATE is the release date, default today."
(interactive (list (read-directory-name "Emacs root directory: ")
(read-string "Version number: "
(format "%s.%s" emacs-major-version
emacs-minor-version))
(read-string "Release date: "
(progn (require 'add-log)
(let ((add-log-time-zone-rule t))
(funcall add-log-time-format))))))
(setq root (expand-file-name root))
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
(error "%s doesn't seem to be the root of an Emacs source tree" root))
(user-error "%s doesn't seem to be the root of an Emacs source tree" root))
(require 'add-log)
(or date (setq date (let ((add-log-time-zone-rule t))
(funcall add-log-time-format))))
(let* ((logs (process-lines "find" root "-name" "ChangeLog"))
(entry (format "%s %s <%s>\n\n\t* Version %s released.\n\n"
(funcall add-log-time-format)
date
(or add-log-full-name (user-full-name))
(or add-log-mailing-address user-mail-address)
version)))
(dolist (log logs)
(unless (string-match "/gnus/" log)
(find-file log)
(goto-char (point-min))
(insert entry)))))
(find-file log)
(goto-char (point-min))
(insert entry))))
(defun set-version-in-file (root file version rx)
"Subroutine of `set-version' and `set-copyright'."
(find-file (expand-file-name file root))
(goto-char (point-min))
(unless (re-search-forward rx nil t)
(error "Version not found in %s" file))
(unless (re-search-forward rx nil :noerror)
(user-error "Version not found in %s" file))
(replace-match (format "%s" version) nil nil nil 1))
;; TODO report the progress
(defun set-version (root version)
"Set Emacs version to VERSION in relevant files under ROOT.
Root must be the root of an Emacs source tree."
(interactive "DEmacs root directory: \nsVersion number: ")
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
(error "%s doesn't seem to be the root of an Emacs source tree" root))
(user-error "%s doesn't seem to be the root of an Emacs source tree" root))
;; There's also a "version 3" (standing for GPLv3) at the end of
;; `README', but since `set-version-in-file' only replaces the first
;; occurrence, it won't be replaced.
(set-version-in-file root "README" version
(rx (and "version" (1+ space)
(submatch (1+ (in "0-9."))))))
@ -91,7 +109,7 @@ Root must be the root of an Emacs source tree."
;; in two places those commas are followed by space, in two other
;; places they are not.
(let* ((version-components (append (split-string version "\\.")
'("0" "0")))
'("0" "0")))
(comma-version
(concat (car version-components) ","
(cadr version-components) ","
@ -144,6 +162,7 @@ Root must be the root of an Emacs source tree."
;; Note this makes some assumptions about form of short copyright.
;; TODO report the progress
(defun set-copyright (root copyright)
"Set Emacs short copyright to COPYRIGHT in relevant files under ROOT.
Root must be the root of an Emacs source tree."
@ -154,7 +173,7 @@ Root must be the root of an Emacs source tree."
(format "Copyright (C) %s Free Software Foundation, Inc."
(format-time-string "%Y")))))
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
(error "%s doesn't seem to be the root of an Emacs source tree" root))
(user-error "%s doesn't seem to be the root of an Emacs source tree" root))
(set-version-in-file root "configure.ac" copyright
(rx (and bol "copyright" (0+ (not (in ?\")))
?\" (submatch (1+ (not (in ?\")))) ?\")))
@ -180,54 +199,87 @@ Root must be the root of an Emacs source tree."
;;; Various bits of magic for generating the web manuals
(defun make-manuals (root)
"Generate the web manuals for the Emacs webpage."
(interactive "DEmacs root directory: ")
(defun manual-misc-manuals (root)
"Return doc/misc manuals as list of strings.
ROOT should be the root of an Emacs source tree."
;; Similar to `make -C doc/misc echo-info', but works if unconfigured,
;; and for INFO_TARGETS rather than INFO_INSTALL.
(with-temp-buffer
(insert-file-contents (expand-file-name "doc/misc/Makefile.in" root))
;; Should really use expanded value of INFO_TARGETS.
(search-forward "INFO_COMMON = ")
(let ((start (point)))
(end-of-line)
(while (and (looking-back "\\\\")
(zerop (forward-line 1)))
(end-of-line))
(append (split-string (replace-regexp-in-string
"\\(\\\\\\|\\.info\\)" ""
(buffer-substring start (point))))
'("efaq-w32")))))
;; TODO report the progress
(defun make-manuals (root &optional type)
"Generate the web manuals for the Emacs webpage.
ROOT should be the root of an Emacs source tree.
Interactively with a prefix argument, prompt for TYPE.
Optional argument TYPE is type of output (nil means all)."
(interactive (let ((root (read-directory-name "Emacs root directory: "
source-directory nil t)))
(list root
(if current-prefix-arg
(completing-read
"Type: "
(append
'("misc" "pdf" "ps")
(let (res)
(dolist (i '("emacs" "elisp" "eintr") res)
(dolist (j '("" "-mono" "-node" "-ps" "-pdf"))
(push (concat i j) res))))
(manual-misc-manuals root)))))))
(let* ((dest (expand-file-name "manual" root))
(html-node-dir (expand-file-name "html_node" dest))
(html-mono-dir (expand-file-name "html_mono" dest))
(txt-dir (expand-file-name "text" dest))
(dvi-dir (expand-file-name "dvi" dest))
(ps-dir (expand-file-name "ps" dest)))
(ps-dir (expand-file-name "ps" dest))
(pdf-dir (expand-file-name "pdf" dest))
(emacs (expand-file-name "doc/emacs/emacs.texi" root))
(elisp (expand-file-name "doc/lispref/elisp.texi" root))
(eintr (expand-file-name "doc/lispintro/emacs-lisp-intro.texi" root))
(misc (manual-misc-manuals root)))
;; TODO this makes it non-continuable.
;; Instead, delete the individual dest directory each time.
(when (file-directory-p dest)
(if (y-or-n-p (format "Directory %s exists, delete it first?" dest))
(if (y-or-n-p (format "Directory %s exists, delete it first? " dest))
(delete-directory dest t)
(error "Aborted")))
(make-directory dest)
(make-directory html-node-dir)
(make-directory html-mono-dir)
(make-directory txt-dir)
(make-directory dvi-dir)
(make-directory ps-dir)
;; Emacs manual
(let ((texi (expand-file-name "doc/emacs/emacs.texi" root)))
(manual-html-node texi (expand-file-name "emacs" html-node-dir))
(manual-html-mono texi (expand-file-name "emacs.html" html-mono-dir))
(manual-txt texi (expand-file-name "emacs.txt" txt-dir))
(manual-pdf texi (expand-file-name "emacs.pdf" dest))
(manual-dvi texi (expand-file-name "emacs.dvi" dvi-dir)
(expand-file-name "emacs.ps" ps-dir)))
;; Lisp manual
(let ((texi (expand-file-name "doc/lispref/elisp.texi" root)))
(manual-html-node texi (expand-file-name "elisp" html-node-dir))
(manual-html-mono texi (expand-file-name "elisp.html" html-mono-dir))
(manual-txt texi (expand-file-name "elisp.txt" txt-dir))
(manual-pdf texi (expand-file-name "elisp.pdf" dest))
(manual-dvi texi (expand-file-name "elisp.dvi" dvi-dir)
(expand-file-name "elisp.ps" ps-dir)))
(user-error "Aborted")))
(if (member type '(nil "emacs" "emacs-node"))
(manual-html-node emacs (expand-file-name "emacs" html-node-dir)))
(if (member type '(nil "emacs" "emacs-mono"))
(manual-html-mono emacs (expand-file-name "emacs.html" html-mono-dir)))
(if (member type '(nil "emacs" "emacs-pdf" "pdf"))
(manual-pdf emacs (expand-file-name "emacs.pdf" pdf-dir)))
(if (member type '(nil "emacs" "emacs-ps" "ps"))
(manual-ps emacs (expand-file-name "emacs.ps" ps-dir)))
(if (member type '(nil "elisp" "elisp-node"))
(manual-html-node elisp (expand-file-name "elisp" html-node-dir)))
(if (member type '(nil "elisp" "elisp-mono"))
(manual-html-mono elisp (expand-file-name "elisp.html" html-mono-dir)))
(if (member type '(nil "elisp" "elisp-pdf" "pdf"))
(manual-pdf elisp (expand-file-name "elisp.pdf" pdf-dir)))
(if (member type '(nil "elisp" "elisp-ps" "ps"))
(manual-ps elisp (expand-file-name "elisp.ps" ps-dir)))
(if (member type '(nil "eintr" "eintr-node"))
(manual-html-node eintr (expand-file-name "eintr" html-node-dir)))
(if (member type '(nil "eintr" "eintr-node"))
(manual-html-mono eintr (expand-file-name "eintr.html" html-mono-dir)))
(if (member type '(nil "eintr" "eintr-pdf" "pdf"))
(manual-pdf eintr (expand-file-name "eintr.pdf" pdf-dir)))
(if (member type '(nil "eintr" "eintr-ps" "ps"))
(manual-ps eintr (expand-file-name "eintr.ps" ps-dir)))
;; Misc manuals
(let ((manuals '("ada-mode" "auth" "autotype" "calc" "cc-mode"
"cl" "dbus" "dired-x" "ebrowse" "ede" "ediff"
"edt" "eieio" "emacs-mime" "epa" "erc" "ert"
"eshell" "eudc" "faq" "flymake" "forms"
"gnus" "emacs-gnutls" "idlwave" "info"
"mairix-el" "message" "mh-e" "newsticker"
"nxml-mode" "org" "pcl-cvs" "pgg" "rcirc"
"remember" "reftex" "sasl" "sc" "semantic"
"ses" "sieve" "smtpmail" "speedbar" "tramp"
"url" "vip" "viper" "widget" "woman")))
(dolist (manual manuals)
(manual-misc-html manual root html-node-dir html-mono-dir)))
(dolist (manual misc)
(if (member type `(nil ,manual "misc"))
(manual-misc-html manual root html-node-dir html-mono-dir)))
(message "Manuals created in %s" dest)))
(defconst manual-doctype-string
@ -242,10 +294,14 @@ Root must be the root of an Emacs source tree."
<meta name=\"DC.title\" content=\"gnu.org\">\n\n")
(defconst manual-style-string "<style type=\"text/css\">
@import url('/style.css');\n</style>\n")
@import url('/software/emacs/manual.css');\n</style>\n")
(defun manual-misc-html (name root html-node-dir html-mono-dir)
(let ((texi (expand-file-name (format "doc/misc/%s.texi" name) root)))
;; Hack to deal with the cases where .texi creates a different .info.
;; Blech. TODO Why not just rename the .texi (or .info) files?
(let* ((texiname (cond ((equal name "ccmode") "cc-mode")
(t name)))
(texi (expand-file-name (format "doc/misc/%s.texi" texiname) root)))
(manual-html-node texi (expand-file-name name html-node-dir))
(manual-html-mono texi (expand-file-name (concat name ".html")
html-mono-dir))))
@ -255,7 +311,13 @@ Root must be the root of an Emacs source tree."
This function also edits the HTML files so that they validate as
HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using
the @import directive."
(make-directory (or (file-name-directory dest) ".") t)
(call-process "makeinfo" nil nil nil
"-D" "WWW_GNU_ORG"
"-I" (expand-file-name "../emacs"
(file-name-directory texi-file))
"-I" (expand-file-name "../misc"
(file-name-directory texi-file))
"--html" "--no-split" texi-file "-o" dest)
(with-temp-buffer
(insert-file-contents dest)
@ -266,6 +328,7 @@ the @import directive."
(manual-html-fix-node-div)
(goto-char (point-max))
(re-search-backward "</body>[\n \t]*</html>")
;; Close the div id="content" that fix-index-1 added.
(insert "</div>\n\n")
(save-buffer)))
@ -275,8 +338,14 @@ This function also edits the HTML files so that they validate as
HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using
the @import directive."
(unless (file-exists-p texi-file)
(error "Manual file %s not found" texi-file))
(user-error "Manual file %s not found" texi-file))
(make-directory dir t)
(call-process "makeinfo" nil nil nil
"-D" "WWW_GNU_ORG"
"-I" (expand-file-name "../emacs"
(file-name-directory texi-file))
"-I" (expand-file-name "../misc"
(file-name-directory texi-file))
"--html" texi-file "-o" dir)
;; Loop through the node files, fixing them up.
(dolist (f (directory-files dir nil "\\.html\\'"))
@ -300,143 +369,244 @@ the @import directive."
(manual-html-fix-index-2)
(if copyright-text
(insert copyright-text))
;; Close the div id="content" that fix-index-1 added.
(insert "\n</div>\n"))
;; For normal nodes, give the header div a blue bg.
(manual-html-fix-node-div))
(manual-html-fix-node-div t))
(save-buffer))))))
(defun manual-txt (texi-file dest)
"Run Makeinfo on TEXI-FILE, emitting plaintext output to DEST."
(call-process "makeinfo" nil nil nil
"--plaintext" "--no-split" texi-file "-o" dest)
(shell-command (concat "gzip -c " dest " > " (concat dest ".gz"))))
(defun manual-pdf (texi-file dest)
"Run texi2pdf on TEXI-FILE, emitting plaintext output to DEST."
(call-process "texi2pdf" nil nil nil texi-file "-o" dest))
"Run texi2pdf on TEXI-FILE, emitting PDF output to DEST."
(make-directory (or (file-name-directory dest) ".") t)
(let ((default-directory (file-name-directory texi-file)))
(call-process "texi2pdf" nil nil nil
"-I" "../emacs" "-I" "../misc"
texi-file "-o" dest)))
(defun manual-dvi (texi-file dest ps-dest)
"Run texi2dvi on TEXI-FILE, emitting dvi output to DEST.
Also generate PostScript output in PS-DEST."
(call-process "texi2dvi" nil nil nil texi-file "-o" dest)
(call-process "dvips" nil nil nil dest "-o" ps-dest)
(call-process "gzip" nil nil nil dest)
(call-process "gzip" nil nil nil ps-dest))
(defun manual-ps (texi-file dest)
"Generate a PostScript version of TEXI-FILE as DEST."
(make-directory (or (file-name-directory dest) ".") t)
(let ((dvi-dest (concat (file-name-sans-extension dest) ".dvi"))
(default-directory (file-name-directory texi-file)))
;; FIXME: Use `texi2dvi --ps'? --xfq
(call-process "texi2dvi" nil nil nil
"-I" "../emacs" "-I" "../misc"
texi-file "-o" dvi-dest)
(call-process "dvips" nil nil nil dvi-dest "-o" dest)
(delete-file dvi-dest)
(call-process "gzip" nil nil nil dest)))
(defun manual-html-fix-headers ()
"Fix up HTML headers for the Emacs manual in the current buffer."
(let (opoint)
(insert manual-doctype-string)
(let ((texi5 (search-forward "<!DOCTYPE" nil t))
opoint)
;; Texinfo 5 supplies a DOCTYPE.
(or texi5
(insert manual-doctype-string))
(search-forward "<head>\n")
(insert manual-meta-string)
(search-forward "<meta")
(setq opoint (match-beginning 0))
(re-search-forward "<!--")
(unless texi5
(search-forward "<!--")
(goto-char (match-beginning 0))
(delete-region opoint (point))
(search-forward "<meta http-equiv=\"Content-Style")
(setq opoint (match-beginning 0)))
(search-forward "</head>")
(goto-char (match-beginning 0))
(delete-region opoint (point))
(insert manual-style-string)
(search-forward "<meta http-equiv=\"Content-Style")
(setq opoint (match-beginning 0))
(search-forward "</head>")
(delete-region opoint (match-beginning 0))))
(defun manual-html-fix-node-div ()
"Fix up HTML \"node\" divs in the current buffer."
(let (opoint div-end)
(while (search-forward "<div class=\"node\">" nil t)
(replace-match
"<div class=\"node\" style=\"background-color:#DDDDFF\">"
t t)
;; Remove Texinfo 5 hard-coding bgcolor, text, link, vlink, alink.
(when (re-search-forward "<body lang=\"[^\"]+\"" nil t)
(setq opoint (point))
(re-search-forward "</div>")
(setq div-end (match-beginning 0))
(goto-char opoint)
(if (search-forward "<hr>" div-end 'move)
(replace-match "" t t)))))
(search-forward ">")
(if (> (point) (1+ opoint))
(delete-region opoint (1- (point))))
(search-backward "</head"))))
;; Texinfo 5 changed these from class = "node" to "header", yay.
(defun manual-html-fix-node-div (&optional split)
"Fix up HTML \"node\" divs in the current buffer."
(let (opoint div-end type)
(while (re-search-forward "<div class=\"\\(node\\|header\\)\"\\(>\\)" nil t)
(setq type (match-string 1))
;; NB it is this that makes the bg of non-header cells in the
;; index tables be blue. Is that intended?
;; Also, if you don't remove the <hr>, the color of the first
;; row in the table will be wrong.
;; This all seems rather odd to me...
(replace-match " style=\"background-color:#DDDDFF\">" t t nil 2)
(setq opoint (point))
(when (or split (equal type "node"))
;; In Texinfo 4, the <hr> (and anchor) comes after the <div>.
(re-search-forward "</div>")
(setq div-end (if (equal type "node")
(match-beginning 0)
(line-end-position 2)))
(goto-char opoint)
(if (search-forward "<hr>" div-end 'move)
(replace-match "" t t)
(if split (forward-line -1))))
;; In Texinfo 5, the <hr> (and anchor) comes before the <div> (?).
;; Except in split output, where it comes on the line after
;; the <div>. But only sometimes. I have no clue what the
;; logic of where it goes is.
(when (equal type "header")
(goto-char opoint)
(when (re-search-backward "^<hr>$" (line-beginning-position -3) t)
(replace-match "")
(goto-char opoint))))))
(defun manual-html-fix-index-1 ()
"Remove the h1 header, and the short and long contents lists.
Also start a \"content\" div."
(let (opoint)
(re-search-forward "<body>\n")
(re-search-forward "<body.*>\n")
(setq opoint (match-end 0))
(search-forward "<h2 class=\"")
;; FIXME? Fragile if a Texinfo 5 document does not use @top.
(or (re-search-forward "<h1 class=\"top\"" nil t) ; Texinfo 5
(search-forward "<h2 class=\""))
(goto-char (match-beginning 0))
(delete-region opoint (point))
;; NB caller must close this div.
(insert "<div id=\"content\" class=\"inner\">\n\n")))
(defun manual-html-fix-index-2 (&optional table-workaround)
"Replace the index list in the current buffer with a HTML table."
(let (done open-td tag desc)
;; Convert the list that Makeinfo made into a table.
(or (search-forward "<ul class=\"menu\">" nil t)
(search-forward "<ul>"))
(replace-match "<table style=\"float:left\" width=\"100%\">")
(forward-line 1)
(while (not done)
(cond
((or (looking-at "<li>\\(<a.+</a>\\):[ \t]+\\(.*\\)$")
(looking-at "<li>\\(<a.+</a>\\)$"))
(setq tag (match-string 1))
(setq desc (match-string 2))
(replace-match "" t t)
(when open-td
(save-excursion
(forward-char -1)
(skip-chars-backward " ")
(delete-region (point) (line-end-position))
(insert "</td>\n </tr>")))
(insert " <tr>\n ")
(if table-workaround
;; This works around a Firefox bug in the mono file.
(insert "<td bgcolor=\"white\">")
(insert "<td>"))
(insert tag "</td>\n <td>" (or desc ""))
(setq open-td t))
((eq (char-after) ?\n)
(delete-char 1)
;; Negate the following `forward-line'.
(forward-line -1))
((looking-at "<!-- ")
(search-forward "-->"))
((looking-at "<p>[- ]*The Detailed Node Listing[- \n]*")
(replace-match " </td></tr></table>\n
"Replace the index list in the current buffer with a HTML table.
Leave point after the table."
(if (re-search-forward "<table class=\"menu\"\\(.*\\)>" nil t)
;; Texinfo 5 already uses a table. Tweak it a bit.
(let (opoint done)
(replace-match " style=\"float:left\" width=\"100%\"" nil t nil 1)
(forward-line 1)
(while (not done)
(cond ((re-search-forward "<tr><td.*&bull; \\(<a.*</a>\\)\
:</td><td>&nbsp;&nbsp;</td><td[^>]*>\\(.*\\)" (line-end-position) t)
(replace-match (format "<tr><td%s>\\1</td>\n<td>\\2"
(if table-workaround
" bgcolor=\"white\"" "")))
(search-forward "</td></tr>")
(forward-line 1))
((looking-at "<tr><th.*<pre class=\"menu-comment\">\n")
(replace-match "<tr><th colspan=\"2\" align=\"left\" \
style=\"text-align:left\">")
(search-forward "</pre></th></tr>")
(replace-match "</th></tr>\n"))
;; Not all manuals have the detailed menu.
;; If it is there, split it into a separate table.
((re-search-forward "<tr>.*The Detailed Node Listing *"
(line-end-position) t)
(setq opoint (match-beginning 0))
(while (and (looking-at " *&mdash;")
(zerop (forward-line 1))))
(delete-region opoint (point))
(insert "</table>\n\n\
<h2>Detailed Node Listing</h2>\n\n<p>")
;; FIXME Fragile!
;; The Emacs and Elisp manual have some text at the
;; start of the detailed menu that is not part of the menu.
;; Other manuals do not.
(if (re-search-forward "in one step:" (line-end-position 3) t)
(forward-line 1))
(insert "</p>\n")
(search-forward "</pre></th></tr>")
(delete-region (match-beginning 0) (match-end 0))
(forward-line -1)
(or (looking-at "^$") (error "Parse error 1"))
(forward-line -1)
(if (looking-at "^$") (error "Parse error 2"))
(forward-line -1)
(or (looking-at "^$") (error "Parse error 3"))
(forward-line 1)
(insert "<table class=\"menu\" style=\"float:left\" width=\"100%\">\n\
<tr><th colspan=\"2\" align=\"left\" style=\"text-align:left\">\n")
(forward-line 1)
(insert "</th></tr>")
(forward-line 1))
((looking-at ".*</table")
(forward-line 1)
(setq done t)))))
(let (done open-td tag desc)
;; Convert the list that Makeinfo made into a table.
(or (search-forward "<ul class=\"menu\">" nil t)
;; FIXME? The following search seems dangerously lax.
(search-forward "<ul>"))
(replace-match "<table style=\"float:left\" width=\"100%\">")
(forward-line 1)
(while (not done)
(cond
((or (looking-at "<li>\\(<a.+</a>\\):[ \t]+\\(.*\\)$")
(looking-at "<li>\\(<a.+</a>\\)$"))
(setq tag (match-string 1))
(setq desc (match-string 2))
(replace-match "" t t)
(when open-td
(save-excursion
(forward-char -1)
(skip-chars-backward " ")
(delete-region (point) (line-end-position))
(insert "</td>\n </tr>")))
(insert " <tr>\n ")
(if table-workaround
;; This works around a Firefox bug in the mono file.
(insert "<td bgcolor=\"white\">")
(insert "<td>"))
(insert tag "</td>\n <td>" (or desc ""))
(setq open-td t))
((eq (char-after) ?\n)
(delete-char 1)
;; Negate the following `forward-line'.
(forward-line -1))
((looking-at "<!-- ")
(search-forward "-->"))
((looking-at "<p>[- ]*The Detailed Node Listing[- \n]*")
(replace-match " </td></tr></table>\n
<h3>Detailed Node Listing</h3>\n\n" t t)
(search-forward "<p>")
(search-forward "<p>" nil t)
(goto-char (match-beginning 0))
(skip-chars-backward "\n ")
(setq open-td nil)
(insert "</p>\n\n<table style=\"float:left\" width=\"100%\">"))
((looking-at "</li></ul>")
(replace-match "" t t))
((looking-at "<p>")
(replace-match "" t t)
(when open-td
(insert " </td></tr>")
(setq open-td nil))
(insert " <tr>
(search-forward "<p>")
;; FIXME Fragile!
;; The Emacs and Elisp manual have some text at the
;; start of the detailed menu that is not part of the menu.
;; Other manuals do not.
(if (looking-at "Here are some other nodes")
(search-forward "<p>"))
(goto-char (match-beginning 0))
(skip-chars-backward "\n ")
(setq open-td nil)
(insert "</p>\n\n<table style=\"float:left\" width=\"100%\">"))
((looking-at "</li></ul>")
(replace-match "" t t))
((looking-at "<p>")
(replace-match "" t t)
(when open-td
(insert " </td></tr>")
(setq open-td nil))
(insert " <tr>
<th colspan=\"2\" align=\"left\" style=\"text-align:left\">")
(if (re-search-forward "</p>[ \t\n]*<ul class=\"menu\">" nil t)
(replace-match " </th></tr>")))
((looking-at "[ \t]*</ul>[ \t]*$")
(replace-match
(if open-td
" </td></tr>\n</table>"
"</table>") t t)
(setq done t))
(t
(if (eobp)
(error "Parse error in %s" f)) ; f is bound in manual-html-node
(unless open-td
(setq done t))))
(forward-line 1))))
(if (re-search-forward "</p>[ \t\n]*<ul class=\"menu\">" nil t)
(replace-match " </th></tr>")))
((looking-at "[ \t]*</ul>[ \t]*$")
(replace-match
(if open-td
" </td></tr>\n</table>"
"</table>") t t)
(setq done t))
(t
(if (eobp)
(error "Parse error in %s"
(file-name-nondirectory buffer-file-name)))
(unless open-td
(setq done t))))
(forward-line 1)))))
;; Stuff to check new defcustoms got :version tags.
;; Stuff to check new `defcustom's got :version tags.
;; Adapted from check-declare.el.
(defun cusver-find-files (root &optional old)
"Find .el files beneath directory ROOT that contain defcustoms.
If optional OLD is non-nil, also include defvars."
"Find .el files beneath directory ROOT that contain `defcustom's.
If optional OLD is non-nil, also include `defvar's."
(process-lines find-program root
"-name" "*.el"
"-exec" grep-program
@ -448,14 +618,14 @@ If optional OLD is non-nil, also include defvars."
(defvar cusver-new-version (format "%s.%s" emacs-major-version
(1+ emacs-minor-version))
"Version number that new defcustoms should have.")
"Version number that new `defcustom's should have.")
(defun cusver-scan (file &optional old)
"Scan FILE for `defcustom' calls.
Return a list with elements of the form (VAR . VER),
This means that FILE contains a defcustom for variable VAR, with
a :version tag having value VER (may be nil).
If optional argument OLD is non-nil, also scan for defvars."
If optional argument OLD is non-nil, also scan for `defvar's."
(let ((m (format "Scanning %s..." file))
(re (format "^[ \t]*\\((def%s\\)[ \t\n]"
(if old "\\(custom\\|var\\)" "\\(custom\\|group\\)")))
@ -464,13 +634,19 @@ If optional argument OLD is non-nil, also scan for defvars."
(with-temp-buffer
(insert-file-contents file)
;; FIXME we could theoretically be inside a string.
(while (re-search-forward re nil t)
(while (re-search-forward re nil :noerror)
(goto-char (match-beginning 1))
(if (and (setq form (ignore-errors (read (current-buffer))))
(setq var (car-safe (cdr-safe form)))
;; Exclude macros, eg (defcustom ,varname ...).
(symbolp var))
(progn
;; FIXME It should be cus-test-apropos that does this.
(and (not old)
(equal "custom" (match-string 2))
(not (memq :type form))
(display-warning 'custom
(format "Missing type in: `%s'" form)))
(setq ver (car (cdr-safe (memq :version form))))
(if (equal "group" (match-string 2))
;; Group :version could be old.
@ -506,7 +682,7 @@ If optional argument OLD is non-nil, also scan for defvars."
(define-button-type 'cusver-xref 'action #'cusver-goto-xref)
(defun cusver-goto-xref (button)
"Jump to a lisp file for the BUTTON at point."
"Jump to a Lisp file for the BUTTON at point."
(let ((file (button-get button 'file))
(var (button-get button 'var)))
(if (not (file-readable-p file))
@ -522,34 +698,36 @@ If optional argument OLD is non-nil, also scan for defvars."
;; TODO Check cus-start if something moved from C to Lisp.
;; TODO Handle renamed things with aliases to the old names.
(defun cusver-check (newdir olddir version)
"Check that defcustoms have :version tags where needed.
NEWDIR is the current lisp/ directory, OLDDIR is that from the previous
release. A defcustom that is only in NEWDIR should have a :version
tag. We exclude cases where a defvar exists in OLDDIR, since
just converting a defvar to a defcustom does not require a :version bump.
"Check that `defcustom's have :version tags where needed.
NEWDIR is the current lisp/ directory, OLDDIR is that from the
previous release, VERSION is the new version number. A
`defcustom' that is only in NEWDIR should have a :version tag.
We exclude cases where a `defvar' exists in OLDDIR, since just
converting a `defvar' to a `defcustom' does not require
a :version bump.
Note that a :version tag should also be added if the value of a defcustom
changes (in a non-trivial way). This function does not check for that."
(interactive (list (read-directory-name "New Lisp directory: ")
(read-directory-name "Old Lisp directory: ")
(interactive (list (read-directory-name "New Lisp directory: " nil nil t)
(read-directory-name "Old Lisp directory: " nil nil t)
(number-to-string
(read-number "New version number: "
(string-to-number cusver-new-version)))))
(or (file-directory-p (setq newdir (expand-file-name newdir)))
(error "Directory `%s' not found" newdir))
(user-error "Directory `%s' not found" newdir))
(or (file-directory-p (setq olddir (expand-file-name olddir)))
(error "Directory `%s' not found" olddir))
(user-error "Directory `%s' not found" olddir))
(setq cusver-new-version version)
(let* ((newfiles (progn (message "Finding new files with defcustoms...")
(let* ((newfiles (progn (message "Finding new files with `defcustom's...")
(cusver-find-files newdir)))
(oldfiles (progn (message "Finding old files with defcustoms...")
(oldfiles (progn (message "Finding old files with `defcustom's...")
(cusver-find-files olddir t)))
(newcus (progn (message "Reading new defcustoms...")
(newcus (progn (message "Reading new `defcustom's...")
(mapcar
(lambda (file)
(cons file (cusver-scan file))) newfiles)))
oldcus result thisfile file)
(message "Reading old defcustoms...")
(message "Reading old `defcustom's...")
(dolist (file oldfiles)
(setq oldcus (append oldcus (cusver-scan file t))))
(setq oldcus (append oldcus (cusver-scan-cus-start
@ -574,7 +752,7 @@ changes (in a non-trivial way). This function does not check for that."
(message "No missing :version tags")
(pop-to-buffer "*cusver*")
(erase-buffer)
(insert "These defcustoms might be missing :version tags:\n\n")
(insert "These `defcustom's might be missing :version tags:\n\n")
(dolist (elem result)
(let* ((str (file-relative-name (car elem) newdir))
(strlen (length str)))

View file

@ -1,6 +1,6 @@
/* Allocate X colors. Used for testing with dense colormaps.
Copyright (C) 2001-2013 Free Software Foundation, Inc.
Copyright (C) 2001-2014 Free Software Foundation, Inc.
This file is part of GNU Emacs.

View file

@ -1,7 +1,7 @@
#! /usr/bin/perl
# Build Emacs in several different configurations.
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@ -20,6 +20,8 @@
require 5;
use strict;
use warnings;
use Getopt::Long;
use File::Basename;
use Cwd;

View file

@ -1,6 +1,6 @@
;;; bzrmerge.el --- help merge one Emacs bzr branch to another
;; Copyright (C) 2010-2013 Free Software Foundation, Inc.
;; Copyright (C) 2010-2014 Free Software Foundation, Inc.
;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
;; Keywords: maint
@ -50,7 +50,7 @@ The list returned is sorted by oldest-first."
(call-process "bzr" nil t nil "status" "-v")
(goto-char (point-min))
(when (re-search-forward "^conflicts:\n" nil t)
(error "You still have unresolved conflicts"))
(user-error "You still have unresolved conflicts"))
(let ((merges ())
found)
(if (not (re-search-forward "^pending merges:\n" nil t))
@ -62,7 +62,7 @@ The list returned is sorted by oldest-first."
(setq found
(not (equal "unknown" (match-string 1)))))))
found)
(error "You still have uncommitted changes"))
(user-error "You still have uncommitted changes"))
;; This is really stupid, but it seems there's no easy way to figure
;; out which revisions have been merged already. The only info I can
;; find is the "pending merges" from "bzr status -v", which is not
@ -171,7 +171,7 @@ Type `y' to skip this revision,
(enable-local-eval nil))
(find-file-noselect file))
(if (buffer-modified-p)
(error "Unsaved changes in %s" (current-buffer)))
(user-error "Unsaved changes in %s" (current-buffer)))
(save-excursion
(cond
((derived-mode-p 'change-log-mode)
@ -320,10 +320,10 @@ Does not make other difference."
;; bzrmerge-add-metadata does not work when there
;; are conflicts.
(display-warning 'bzrmerge "Resolve conflicts manually.
¡BEWARE! Important metadata is kept in this Emacs session!
BEWARE! Important metadata is kept in this Emacs session!
Do not commit without re-running `M-x bzrmerge' first!"
:warning bzrmerge-warning-buffer))
(error "Resolve conflicts manually")))))
(user-error "Resolve conflicts manually")))))
(cons merge skip)))))
(defun bzrmerge (from)

View file

@ -1,4 +1,4 @@
Copyright (C) 2009-2013 Free Software Foundation, Inc.
Copyright (C) 2009-2014 Free Software Foundation, Inc.
Copyright (C) 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H13PRO009
@ -6,47 +6,48 @@ See the end of the file for license conditions.
The charset map files directory
This directory contains two kinds of charset map files; verbatim copies
(or their compressed versions) of files freely available in the
Internet, and newly created files based on freely available
information.
This directory contains two kinds of charset map files; verbatim
copies of files freely available in the Internet, and newly created
files based on freely available information.
(1) Copied files (all files are copied on 2009-06-12)
(1) Copied files (all files were copied on 2014-01-15):
* CP932.TXT.gz
* CP932.TXT
The uncompressed version is available at:
Available at:
<http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT>
* PTCP154.gz
* PTCP154
The uncompressed version is available at:
Available at:
<http://www.iana.org/assignments/charset-reg/PTCP154>
* Uni2JIS.gz
* Uni2JIS
The version compressed by Unix's "compress" command is available at:
<http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/ftp/CJKtable/Uni2JIS.Z>
This directory's copy has corrected the misspellings of "characters"
and of "Byelorussian".
* bulgarian-mik.txt.gz
* bulgarian-mik.txt
It is available at:
<http://czyborra.com/charsets/bulgarian-mik.txt.gz>.
The compressed version is available at:
<http://czyborra.com/charsets/bulgarian-mik.txt.gz>
* cns2ucsdkw.txt.gz
* cns2ucsdkw.txt
Uncompressed version is available at:
Available at:
<http://kanji-database.cvs.sourceforge.net/viewvc/*checkout*/kanji-database/kanji-database/data/cns2ucsdkw.txt?revision=1.4>
* stdenc.txt.gz and symbol.txt.gz
* stdenc.txt and symbol.txt
The uncompressed versions are available at:
Available at:
<http://www.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/stdenc.txt>
<http://www.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/symbol.txt>
(2) Newly created files
* CP720.map.gz and CP858.map.gz
* CP720.map and CP858.map
Created manually by looking at these pages:
<http://en.wikipedia.org/wiki/Code_page_720>.
@ -54,13 +55,13 @@ Created manually by looking at these pages:
The text in that page is under the terms of the GNU Free Documentation
License.
* JISX213A.map.gz
* JISX213A.map
Created manually based on the description of the section 33 in "JIS X
0213:2004 Amendment 1". It lists 10 characters that are newly added
to "JIS X 0213:2004".
* MULE-*.map.gz
* MULE-*.map
Created by using ../mule-charsets.el in Emacs 22 as this:
% emacs-22 -batch -l ../mule-charsets.el

View file

@ -1,10 +1,10 @@
#
# Name: Adobe Standard Encoding to Unicode
# Unicode version: 2.0
# Table version: 0.2
# Date: 30 March 1999
# Table version: 1.0
# Date: 2011 July 12
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
# Copyright (c) 1991-2011 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium). No
# claims are made as to fitness for any particular purpose. No warranties of
@ -13,12 +13,12 @@
# magnetic media by Unicode, Inc., the sole remedy for any claim will be
# exchange of defective media within 90 days of receipt.
#
# Recipient is granted the right to make copies in any form for internal
# distribution and to freely use the information supplied in the creation of
# products supporting Unicode. Unicode, Inc. specifically excludes the right
# to re-distribute this file directly to third parties or other organizations
# whether for profit or not.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# Format: 4 tab-delimited fields:
#
# (1) The Unicode value (in hexadecimal)
@ -36,8 +36,17 @@
# Standard Encoding characters, such as "space", are mapped to 2 Unicode
# values. Refer to the above document for more details.
#
# 2011 July 12: The above link is no longer valid. For comparable,
# more current information, see the document, "Glyph", at:
# <http://www.adobe.com/devnet/opentype/archives/glyph.html>
#
# Revision History:
#
# [v1.0, 2011 July 12]
# Updated terms of use to current wording.
# Updated contact information and document link.
# No changes to the mapping data.
#
# [v0.2, 30 March 1999]
# Different algorithm to produce Unicode values (see notes above) results in
# some character codes being mapped to 2 Unicode values. Updated Unicode
@ -45,7 +54,8 @@
#
# [v0.1, 5 May 1995] First release.
#
# Contact <unicode-inc@unicode.org> with any questions or comments.
# Use the Unicode reporting form <http://www.unicode.org/reporting.html>
# for any questions or comments or to report errors in the data.
#
0020 20 # SPACE # space
00A0 20 # NO-BREAK SPACE # space

View file

@ -1,10 +1,10 @@
#
# Name: Adobe Symbol Encoding to Unicode
# Unicode version: 2.0
# Table version: 0.2
# Date: 30 March 1999
# Table version: 1.0
# Date: 2011 July 12
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
# Copyright (c) 1991-2011 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium). No
# claims are made as to fitness for any particular purpose. No warranties of
@ -13,11 +13,11 @@
# magnetic media by Unicode, Inc., the sole remedy for any claim will be
# exchange of defective media within 90 days of receipt.
#
# Recipient is granted the right to make copies in any form for internal
# distribution and to freely use the information supplied in the creation of
# products supporting Unicode. Unicode, Inc. specifically excludes the right
# to re-distribute this file directly to third parties or other organizations
# whether for profit or not.
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# Format: 4 tab-delimited fields:
#
@ -37,8 +37,17 @@
# Corporate Use Subarea; these are indicated by "(CUS)" in field 4. Refer to
# the above document for more details.
#
# 2011 July 12: The above link is no longer valid. For comparable,
# more current information, see the document, "Glyph", at:
# <http://www.adobe.com/devnet/opentype/archives/glyph.html>
#
# Revision History:
#
# [v1.0, 2011 July 12]
# Updated terms of use to current wording.
# Updated contact information and document link.
# No changes to the mapping data.
#
# [v0.2, 30 March 1999]
# Different algorithm to produce Unicode values (see notes above) results in
# some character codes being mapped to 2 Unicode values; use of Corporate
@ -48,7 +57,8 @@
#
# [v0.1, 5 May 1995] First release.
#
# Contact <unicode-inc@unicode.org> with any questions or comments.
# Use the Unicode reporting form <http://www.unicode.org/reporting.html>
# for any questions or comments or to report errors in the data.
#
0020 20 # SPACE # space
00A0 20 # NO-BREAK SPACE # space

View file

@ -19,20 +19,32 @@
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
(if (not (or (and (= emacs-major-version 21) (= emacs-minor-version 4))
(= emacs-major-version 22)))
(error "Use Emacs of version 21.4 or any of version 22"))
;; For the record: the old, pre-v23 code was this:
;; (if (not (or (and (= emacs-major-version 21) (= emacs-minor-version 4))
;; (= emacs-major-version 22)))
;; (error "Use Emacs of version 21.4 or any of version 22"))
;;
;; (defun func (start end)
;; (while (<= start end)
;; (let ((split (split-char start))
;; (unicode (encode-char start 'ucs)))
;; (if unicode
;; (if (nth 2 split)
;; (insert (format "0x%02X%02X 0x%04X\n"
;; (nth 1 split) (nth 2 split) unicode))
;; (insert (format "0x%02X 0x%04X\n" (nth 1 split) unicode)))))
;; (setq start (1+ start))))
(defun func (start end)
(while (<= start end)
(let ((split (split-char start))
(unicode (encode-char start 'ucs)))
(if unicode
(if (nth 2 split)
(insert (format "0x%02X%02X 0x%04X\n"
(nth 1 split) (nth 2 split) unicode))
(insert (format "0x%02X 0x%04X\n" (nth 1 split) unicode)))))
(setq start (1+ start))))
(defun func (range charset)
(let ((start (car range))
(end (cdr range)))
(while (and (<= start end) (<= start #x10ffff))
(let ((ch (encode-char start charset)))
(if ch
(if (> ch 256)
(insert (format "0x%04X 0x%04X\n" ch start))
(insert (format "0x%02X 0x%04X\n" ch start)))))
(setq start (1+ start)))))
(defconst charset-alist
'(("MULE-ethiopic.map" . ethiopic)
@ -51,6 +63,8 @@
(dolist (elt charset-alist)
(with-temp-buffer
(insert header)
(map-charset-chars 'func (cdr elt))
(write-file (car elt))))
(map-charset-chars 'func (cdr elt) (cdr elt))
(sort-lines nil (point-min) (point-max))
(let ((coding-system-for-write 'unix))
(write-file (car elt)))))

View file

@ -1,11 +1,12 @@
: #-*- Perl -*-
eval 'exec perl -w -S $0 ${1+"$@"}' # Portability kludge
eval 'exec perl -S $0 ${1+"$@"}' # Portability kludge
if 0;
# Author: Martin Buchholz
# This program is in the public domain.
use strict;
use warnings;
use POSIX;
(my $myName = $0) =~ s@.*/@@; my $usage="

View file

@ -1,6 +1,6 @@
;;; cus-test.el --- tests for custom types and load problems
;; Copyright (C) 1998, 2000, 2002-2013 Free Software Foundation, Inc.
;; Copyright (C) 1998, 2000, 2002-2014 Free Software Foundation, Inc.
;; Author: Markus Rost <markus.rost@mathematik.uni-regensburg.de>
;; Maintainer: Markus Rost <rost@math.ohio-state.edu>
@ -30,11 +30,11 @@
;;
;; The basic tests can be run in batch mode. Invoke them with
;;
;; src/emacs -batch -l admin/cus-test.el -f cus-test-opts
;; src/emacs -batch -l admin/cus-test.el -f cus-test-opts [all]
;;
;; src/emacs -batch -l admin/cus-test.el -f cus-test-deps
;;
;; src/emacs -batch -l admin/cus-test.el -f cus-test-libs
;; src/emacs -batch -l admin/cus-test.el -f cus-test-libs [all]
;;
;; src/emacs -batch -l admin/cus-test.el -f cus-test-noloads
;;
@ -87,43 +87,6 @@
;; The command `cus-test-noloads' returns a list of variables which
;; are somewhere declared as custom options, but not loaded by
;; `custom-load-symbol'.
;;
;; Some results from October 2002:
;;
;; 4523 options tested
;; The following variables might have problems:
;; ps-mule-font-info-database-default
;; grep-tree-command
;; grep-find-command
;;
;; 288 features required
;; 10 files loaded
;; The following load problems appeared:
;; (killing x-win (file-error Cannot open load file x-win))
;; Symbol faces has loaddefs as custom dependency
;; (reftex-index-support reftex-vars (void-function reftex-set-dirty))
;; (eshell-script em-script (void-variable eshell-directory-name))
;; (pcomplete em-cmpl (void-function eshell-under-windows-p))
;; (eshell-ext esh-ext (void-function eshell-under-windows-p))
;; ...
;;
;; 422 libraries had no load errors
;; The following load problems appeared:
;; (eudc-export error 255)
;; (ada-xref error 255)
;; (ada-stmt error 255)
;;
;; The following options were not loaded by custom-load-symbol:
;; edt-bottom-scroll-margin
;; edt-keep-current-page-delimiter
;; edt-top-scroll-margin
;; edt-use-EDT-control-key-bindings
;; edt-word-entities
;; grep-find-use-xargs
;; master-mode-hook
;; outline-level
;; outline-minor-mode-hook
;; refill-mode-hook
;;; Code:
@ -136,24 +99,23 @@
(defvar cus-test-skip-list nil
"List of variables to disregard by `cus-test-apropos'.")
(defvar cus-test-libs-noloads nil
"List of libraries not to load by `cus-test-load-libs'.")
;; The file eudc-export.el loads libraries "bbdb" and "bbdb-com" which
;; are not part of GNU Emacs: (locate-library "bbdb") => nil
;; We avoid the resulting errors from loading eudc-export.el:
(provide 'bbdb)
(provide 'bbdb-com)
(defvar cus-test-libs-noloads
;; Loading dunnet in batch mode leads to a Dead end.
;; blessmail writes a file.
;; characters cannot be loaded twice ("Category `a' is already defined").
'("play/dunnet.el" "emulation/edt-mapper.el"
"loadup.el" "mail/blessmail.el" "international/characters.el"
"cedet/ede/loaddefs.el" "cedet/semantic/loaddefs.el"
"net/tramp-loaddefs.el")
"List of files not to load by `cus-test-load-libs'.
Names should be as they appear in loaddefs.el.")
;; This avoids a hang of `cus-test-apropos' in 21.2.
;; (add-to-list 'cus-test-skip-list 'sh-alias-alist)
;; Loading dunnet in batch mode leads to a Dead end.
(let (noninteractive) (load "dunnet"))
(add-to-list 'cus-test-libs-noloads "dunnet")
;; Never Viperize.
(setq viper-mode nil)
(or noninteractive
;; Never Viperize.
(setq viper-mode nil))
;; Don't create a file `save-place-file'.
(eval-after-load "saveplace"
@ -225,6 +187,9 @@ The detected problematic options are stored in `cus-test-errors'."
(message "Cus Test running...%s %s"
(length cus-test-tested-variables) symbol)
(condition-case alpha
;; FIXME This defaults to 'sexp if no type was specified.
;; Always report such instances as a type mismatch.
;; Currently abusing cusver-scan to do that.
(let* ((type (custom-variable-type symbol))
(conv (widget-convert type))
(get (or (get symbol 'custom-get) 'default-value))
@ -240,6 +205,8 @@ The detected problematic options are stored in `cus-test-errors'."
;; Check the values
(mapc (lambda (value)
;; TODO for booleans, check for values that can be
;; evaluated and are not t or nil. Usually a bug.
(unless (widget-apply conv :match value)
(setq mismatch 'mismatch)))
values)
@ -270,17 +237,38 @@ The detected problematic options are stored in `cus-test-errors'."
(length cus-test-tested-variables))
(cus-test-errors-display))
(defun cus-test-get-options (regexp)
"Return a list of custom options matching REGEXP."
(let (found)
(defun cus-test-cus-load-groups (&optional cus-load)
"Return a list of current custom groups.
If CUS-LOAD is non-nil, include groups from cus-load.el."
(append (mapcar 'cdr custom-current-group-alist)
(if cus-load
(with-temp-buffer
(insert-file-contents (locate-library "cus-load.el"))
(search-forward "(put '")
(beginning-of-line)
(let (res)
(while (and (looking-at "^(put '\\(\\S-+\\)")
(zerop (forward-line 1)))
(push (intern (match-string 1)) res))
res)))))
(defun cus-test-get-options (regexp &optional group)
"Return a list of custom options matching REGEXP.
If GROUP is non-nil, return groups rather than options.
If GROUP is `cus-load', include groups listed in cus-loads as well as
currently defined groups."
(let ((groups (if group (cus-test-cus-load-groups (eq group 'cus-load))))
found)
(mapatoms
(lambda (symbol)
(and
(or
;; (user-variable-p symbol)
(get symbol 'standard-value)
;; (get symbol 'saved-value)
(get symbol 'custom-type))
(if group
(memq symbol groups)
(or
;; (user-variable-p symbol)
(get symbol 'standard-value)
;; (get symbol 'saved-value)
(get symbol 'custom-type)))
(string-match regexp (symbol-name symbol))
(not (member symbol cus-test-skip-list))
(push symbol found))))
@ -302,49 +290,71 @@ The detected problematic options are stored in `cus-test-errors'."
(defun cus-test-load-custom-loads ()
"Call `custom-load-symbol' on all atoms."
(interactive)
(if noninteractive (let (noninteractive) (require 'dunnet)))
(mapatoms 'custom-load-symbol)
(run-hooks 'cus-test-after-load-libs-hook))
(defun cus-test-load-libs ()
(defmacro cus-test-load-1 (&rest body)
`(progn
(setq cus-test-libs-errors nil
cus-test-libs-loaded nil)
,@body
(message "%s libraries loaded successfully"
(length cus-test-libs-loaded))
(if (not cus-test-libs-errors)
(message "No load problems encountered")
(message "The following load problems appeared:")
(cus-test-message cus-test-libs-errors))
(run-hooks 'cus-test-after-load-libs-hook)))
;; This is just cus-test-libs, but loading in the current Emacs process.
(defun cus-test-load-libs (&optional more)
"Load the libraries with autoloads.
Don't load libraries in `cus-test-libs-noloads'."
Don't load libraries in `cus-test-libs-noloads'.
If optional argument MORE is \"defcustom\", load all files with defcustoms.
If it is \"all\", load all Lisp files."
(interactive)
(setq cus-test-libs-errors nil)
(setq cus-test-libs-loaded nil)
(mapc
(lambda (file)
(condition-case alpha
(unless (member file cus-test-libs-noloads)
(load file)
(push file cus-test-libs-loaded))
(error
(push (cons file alpha) cus-test-libs-errors)
(message "Error for %s: %s" file alpha))))
(cus-test-get-autoload-deps))
(message "%s libraries loaded successfully"
(length cus-test-libs-loaded))
(if (not cus-test-libs-errors)
(message "No load problems encountered")
(message "The following load problems appeared:")
(cus-test-message cus-test-libs-errors))
(run-hooks 'cus-test-after-load-libs-hook))
(cus-test-load-1
(let ((lispdir (file-name-directory (locate-library "loaddefs"))))
(mapc
(lambda (file)
(condition-case alpha
(unless (member file cus-test-libs-noloads)
(load (file-name-sans-extension (expand-file-name file lispdir)))
(push file cus-test-libs-loaded))
(error
(push (cons file alpha) cus-test-libs-errors)
(message "Error for %s: %s" file alpha))))
(if more
(cus-test-get-lisp-files (equal more "all"))
(cus-test-get-autoload-deps))))))
(defun cus-test-get-autoload-deps ()
"Return the list of libraries with autoloads."
"Return the list of files with autoloads."
(with-temp-buffer
(insert-file-contents (locate-library "loaddefs"))
;; This is from `customize-option'.
(let (deps file)
(while
(search-forward "\n;;; Generated autoloads from " nil t)
(goto-char (match-end 0))
(setq file (buffer-substring (point)
(progn (end-of-line) (point))))
(setq file (file-name-nondirectory file))
(string-match "\\.el\\'" file)
(setq file (substring file 0 (match-beginning 0)))
(setq deps (nconc deps (list file))))
deps)))
(let (files)
(while (search-forward "\n;;; Generated autoloads from " nil t)
(push (buffer-substring (match-end 0) (line-end-position)) files))
files)))
(defun cus-test-get-lisp-files (&optional all)
"Return list of all Lisp files with defcustoms.
Optional argument ALL non-nil means list all (non-obsolete) Lisp files."
(let ((default-directory (expand-file-name "lisp/" source-directory))
(msg "Finding files..."))
(message "%s" msg)
(prog1
;; Hack to remove leading "./".
(mapcar (lambda (e) (substring e 2))
(apply 'process-lines find-program
"-name" "obsolete" "-prune" "-o"
"-name" "[^.]*.el" ; ignore .dir-locals.el
(if all
'("-print")
(list "-exec" grep-program
"-l" "^[ \t]*(defcustom" "{}" "+"))))
(message "%sdone" msg))))
(defun cus-test-message (list)
"Print the members of LIST line by line."
@ -353,16 +363,21 @@ Don't load libraries in `cus-test-libs-noloads'."
;;; The routines for batch mode:
(defun cus-test-opts ()
(defun cus-test-opts (&optional all)
"Test custom options.
This function is suitable for batch mode. E.g., invoke
src/emacs -batch -l admin/cus-test.el -f cus-test-opts
in the Emacs source directory."
in the Emacs source directory.
Normally only tests options belonging to files in loaddefs.el.
If optional argument ALL is non-nil, test all files with defcustoms."
(interactive)
(and noninteractive
command-line-args-left
(setq all (pop command-line-args-left)))
(message "Running %s" 'cus-test-load-libs)
(cus-test-load-libs)
(cus-test-load-libs (if all "defcustom"))
(message "Running %s" 'cus-test-load-custom-loads)
(cus-test-load-custom-loads)
(message "Running %s" 'cus-test-apropos)
@ -392,7 +407,8 @@ in the Emacs source directory."
((symbolp load)
;; (condition-case nil (require load) (error nil))
(condition-case alpha
(unless (featurep load)
(unless (or (featurep load)
(and noninteractive (eq load 'dunnet)))
(require load)
(push (list symbol load) cus-test-deps-required))
(error
@ -444,47 +460,54 @@ in the Emacs source directory."
(cus-test-message cus-test-deps-errors))
(run-hooks 'cus-test-after-load-libs-hook))
(defun cus-test-libs ()
(defun cus-test-libs (&optional more)
"Load the libraries with autoloads in separate processes.
This function is useful to detect load problems of libraries.
It is suitable for batch mode. E.g., invoke
src/emacs -batch -l admin/cus-test.el -f cus-test-libs
./src/emacs -batch -l admin/cus-test.el -f cus-test-libs
in the Emacs source directory."
in the Emacs source directory.
If optional argument MORE is \"defcustom\", load all files with defcustoms.
If it is \"all\", load all Lisp files."
(interactive)
(with-temp-buffer
(setq cus-test-libs-errors nil)
(setq cus-test-libs-loaded nil)
(cd source-directory)
(if (not (file-executable-p "src/emacs"))
(error "No Emacs executable in %ssrc" default-directory))
(mapc
(lambda (file)
(condition-case alpha
(let (fn cmd status)
(setq fn (locate-library file))
(if (not fn)
(error "Library %s not found" file))
(setq cmd (concat "src/emacs -batch -l " fn))
(setq status (call-process shell-file-name nil nil nil
shell-command-switch cmd))
(if (equal status 0)
(message "%s" file)
(error "%s" status))
(push file cus-test-libs-loaded))
(error
(push (cons file alpha) cus-test-libs-errors)
(message "Error for %s: %s" file alpha))))
(cus-test-get-autoload-deps))
(message "Default Directory: %s" default-directory)
(message "%s libraries had no load errors"
(length cus-test-libs-loaded))
(if (not cus-test-libs-errors)
(message "No load problems encountered")
(message "The following load problems appeared:")
(cus-test-message cus-test-libs-errors))
(run-hooks 'cus-test-after-load-libs-hook)))
(and noninteractive
command-line-args-left
(setq more (pop command-line-args-left)))
(cus-test-load-1
(let* ((default-directory source-directory)
(emacs (expand-file-name "src/emacs"))
skipped)
(or (file-executable-p emacs)
(error "No such executable `%s'" emacs))
(mapc
(lambda (file)
(if (member file cus-test-libs-noloads)
(push file skipped)
(condition-case alpha
(let* ((fn (expand-file-name file "lisp/"))
(elc (concat fn "c"))
status)
(if (file-readable-p elc) ; load compiled if present (faster)
(setq fn elc)
(or (file-readable-p fn)
(error "Library %s not found" file)))
(if (equal 0 (setq status (call-process emacs nil nil nil
"-batch" "-l" fn)))
(message "%s" file)
(error "%s" status))
(push file cus-test-libs-loaded))
(error
(push (cons file alpha) cus-test-libs-errors)
(message "Error for %s: %s" file alpha)))))
(if more
(cus-test-get-lisp-files (equal more "all"))
(cus-test-get-autoload-deps)))
(message "Default directory: %s" default-directory)
(when skipped
(message "The following libraries were skipped:")
(cus-test-message skipped)))))
(defun cus-test-noloads ()
"Find custom options not loaded by `custom-load-symbol'.
@ -495,17 +518,17 @@ It is suitable for batch mode. E.g., invoke
in the Emacs source directory."
(interactive)
(let (cus-loaded)
(let ((groups-loaded (cus-test-get-options "" 'cus-load))
cus-loaded groups-not-loaded)
(message "Running %s" 'cus-test-load-custom-loads)
(cus-test-load-custom-loads)
(setq cus-loaded
(cus-test-get-options ""))
(setq cus-loaded (cus-test-get-options ""))
(message "Running %s" 'cus-test-load-libs)
(cus-test-load-libs)
(setq cus-test-vars-not-cus-loaded
(cus-test-get-options ""))
(cus-test-load-libs "all")
(setq cus-test-vars-not-cus-loaded (cus-test-get-options "")
groups-not-loaded (cus-test-get-options "" t))
(dolist (o cus-loaded)
(setq cus-test-vars-not-cus-loaded
@ -515,12 +538,15 @@ in the Emacs source directory."
(message "No options not loaded by custom-load-symbol found")
(message "The following options were not loaded by custom-load-symbol:")
(cus-test-message
(sort cus-test-vars-not-cus-loaded 'string<)))))
(sort cus-test-vars-not-cus-loaded 'string<)))
;; And last but not least a quiz:
;;
;; Evaluation of the form (customize-option 'debug-on-error) yields a
;; *Customize* buffer with a mismatch mess. Why?
(dolist (o groups-loaded)
(setq groups-not-loaded (delete o groups-not-loaded)))
(if (not groups-not-loaded)
(message "No groups not in cus-load.el found")
(message "The following groups are not in cus-load.el:")
(cus-test-message (sort groups-not-loaded 'string<)))))
(provide 'cus-test)

View file

@ -1,6 +1,6 @@
#! /bin/sh
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
# This file is part of GNU Emacs.

113
admin/grammars/Makefile.in Normal file
View file

@ -0,0 +1,113 @@
### @configure_input@
## Copyright (C) 2013-2014 Free Software Foundation, Inc.
## This file is part of GNU Emacs.
## GNU Emacs is free software: you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
## GNU Emacs is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
## You should have received a copy of the GNU General Public License
## along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
### Commentary:
## This directory contains grammar files in Bison and Wisent,
## used to generate the parser data in the lisp/cedet directory.
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
top_builddir = @top_builddir@
EMACS = ${top_builddir}/src/emacs
emacs = EMACSLOADPATH= "${EMACS}" -batch --no-site-file --no-site-lisp
make_bovine = ${emacs} -l semantic/bovine/grammar -f bovine-batch-make-parser
make_wisent = ${emacs} -l semantic/wisent/grammar -f wisent-batch-make-parser
cedetdir = ${top_srcdir}/lisp/cedet
bovinedir = ${cedetdir}/semantic/bovine
wisentdir = ${cedetdir}/semantic/wisent
BOVINE = \
${bovinedir}/c-by.el \
${bovinedir}/make-by.el \
${bovinedir}/scm-by.el
## FIXME Should include this one too:
## ${cedetdir}/semantic/grammar-wy.el
## but semantic/grammar.el (which is what we use to generate grammar-wy.el)
## requires it!
WISENT = \
${wisentdir}/javat-wy.el \
${wisentdir}/js-wy.el \
${wisentdir}/python-wy.el \
${cedetdir}/srecode/srt-wy.el
ALL = ${BOVINE} ${WISENT}
.PHONY: all bovine wisent
all: ${ALL}
bovine: ${BOVINE}
wisent: ${WISENT}
${bovinedir}/c-by.el: ${srcdir}/c.by
[ ! -f "$@" ] || chmod +w "$@"
${make_bovine} -o "$@" ${srcdir}/c.by
${bovinedir}/make-by.el: ${srcdir}/make.by
[ ! -f "$@" ] || chmod +w "$@"
${make_bovine} -o "$@" ${srcdir}/make.by
${bovinedir}/scm-by.el: ${srcdir}/scheme.by
[ ! -f "$@" ] || chmod +w "$@"
${make_bovine} -o "$@" ${srcdir}/scheme.by
${cedetdir}/semantic/grammar-wy.el: ${srcdir}/grammar.wy
[ ! -f "$@" ] || chmod +w "$@"
${make_wisent} -o "$@" ${srcdir}/grammar.wy
${wisentdir}/javat-wy.el: ${srcdir}/java-tags.wy
[ ! -f "$@" ] || chmod +w "$@"
${make_wisent} -o "$@" ${srcdir}/java-tags.wy
${wisentdir}/js-wy.el: ${srcdir}/js.wy
[ ! -f "$@" ] || chmod +w "$@"
${make_wisent} -o "$@" ${srcdir}/js.wy
${wisentdir}/python-wy.el: ${srcdir}/python.wy
[ ! -f "$@" ] || chmod +w "$@"
${make_wisent} -o "$@" ${srcdir}/python.wy
${cedetdir}/srecode/srt-wy.el: ${srcdir}/srecode-template.wy
[ ! -f "$@" ] || chmod +w "$@"
${make_wisent} -o "$@" ${srcdir}/srecode-template.wy
.PHONY: distclean bootstrap-clean maintainer-clean extraclean
distclean:
rm -f Makefile
bootstrap-clean maintainer-clean: distclean
## We do not normally delete the generated files, even in bootstrap.
## Creating them does not take long, so we could easily change this.
extraclean:
rm -f ${ALL}
# Makefile.in ends here

View file

@ -1,11 +0,0 @@
This directory contains grammar files in Bison and Wisent, used to
generate the parser data in the lisp/semantic/bovine/ and
lisp/semantic/wisent/ directories. You can run the parser generators
with
emacs -batch -Q -l semantic/bovine/grammar -f bovine-make-parsers
emacs -batch -Q -l semantic/wisent/grammar -f wisent-make-parsers
Currently, the parser files in lisp/ are not generated directly from
these grammar files when making Emacs. This state of affairs, and the
contents of this directory, will change in a future version of Emacs.

View file

@ -1,5 +1,5 @@
;;; c.by -- LL grammar for C/C++ language specification
;; Copyright (C) 1999-2013 Free Software Foundation, Inc.
;; Copyright (C) 1999-2014 Free Software Foundation, Inc.
;;
;; Author: Eric M. Ludlam <zappo@gnu.org>
;; David Ponce <david@dponce.com>
@ -41,9 +41,13 @@
%provide semantic/bovine/c-by
%{
(declare-function semantic-c-reconstitute-token "semantic/bovine/c")
(declare-function semantic-c-reconstitute-template "semantic/bovine/c")
(declare-function semantic-expand-c-tag "semantic/bovine/c")
(declare-function semantic-c-reconstitute-token "semantic/bovine/c"
(tokenpart declmods typedecl))
(declare-function semantic-c-reconstitute-template "semantic/bovine/c"
(tag specifier))
(declare-function semantic-expand-c-tag "semantic/bovine/c" (tag))
(declare-function semantic-parse-region "semantic"
(start end &optional nonterminal depth returnonerror))
}
%languagemode c-mode c++-mode
@ -897,8 +901,8 @@ varname
;; I should store more in this def, but leave it simple for now.
;; Klaus Berndl: const and volatile can be written after the type!
variablearg
: declmods typeformbase cv-declmods opt-ref variablearg-opt-name
( VARIABLE-TAG (list $5) $2 nil
: declmods typeformbase cv-declmods opt-ref variablearg-opt-name opt-assign
( VARIABLE-TAG (list (append $5 ,$6)) $2 nil
:constant-flag (if (member "const" (append $1 $3)) t nil)
:typemodifiers (delete "const" (append $1 $3))
:reference (car ,$4)
@ -908,6 +912,8 @@ variablearg
variablearg-opt-name
: varname
( ,$1 )
| semantic-list arg-list
( (car ( EXPAND $1 function-pointer )) $2)
;; Klaus Berndl: This allows variableargs without a arg-name being
;; parsed correct even if there several pointers (*)
| opt-stars
@ -922,9 +928,9 @@ varname-opt-initializer
varnamelist
: opt-ref varname varname-opt-initializer COMA varnamelist
( ,(cons $2 $5) )
( ,(cons (append $2 $3) $5) )
| opt-ref varname varname-opt-initializer
( $2 )
( (append $2 $3) )
;
;; Klaus Berndl: Is necessary to parse stuff like
@ -1107,8 +1113,8 @@ functionname
;
function-pointer
: LPAREN STAR symbol RPAREN
( (concat "*" $3) )
: LPAREN STAR opt-symbol RPAREN
( (concat "*" ,(car $3)) )
| LPAREN symbol RPAREN
( $2 )
;
@ -1148,16 +1154,26 @@ type-cast-list
: open-paren typeformbase close-paren
;
opt-stuff-after-symbol
: PAREN_BLCK
| BRACK_BLCK
opt-brackets-after-symbol
: brackets-after-symbol
| ;; EMPTY
;
brackets-after-symbol
: PAREN_BLCK
| BRACK_BLCK
;
multi-stage-dereference
: namespace-symbol opt-stuff-after-symbol PERIOD multi-stage-dereference ;; method call
| namespace-symbol opt-stuff-after-symbol MINUS GREATER multi-stage-dereference ;;method call
| namespace-symbol opt-stuff-after-symbol
: namespace-symbol opt-brackets-after-symbol
PERIOD multi-stage-dereference ;; method call
| namespace-symbol opt-brackets-after-symbol
MINUS GREATER multi-stage-dereference ;;method call
| namespace-symbol opt-brackets-after-symbol
PERIOD namespace-symbol opt-brackets-after-symbol
| namespace-symbol opt-brackets-after-symbol
MINUS GREATER namespace-symbol opt-brackets-after-symbol
| namespace-symbol brackets-after-symbol
;
string-seq
@ -1183,6 +1199,7 @@ expr-binop
| AMPERSAND
| OR OR
| OR
| MOD
;; There are more.
;
@ -1200,8 +1217,7 @@ unaryexpression
| multi-stage-dereference
| NEW multi-stage-dereference
| NEW builtintype-types semantic-list
;; Klaus Berndl: symbol -> namespace-symbol!
| namespace-symbol
| symbol
;; Klaus Berndl: C/C++ allows sequences of strings which are
;; concatenated by the precompiler to one string
| string-seq

View file

@ -1,6 +1,6 @@
;;; semantic-grammar.wy -- LALR grammar of Semantic input grammars
;;
;; Copyright (C) 2002-2013 Free Software Foundation, Inc.
;; Copyright (C) 2002-2014 Free Software Foundation, Inc.
;;
;; Author: David Ponce <david@dponce.com>
;; Maintainer: David Ponce <david@dponce.com>
@ -94,7 +94,7 @@
%token <open-paren> LBRACE "{"
%token <close-paren> RBRACE "}"
;; Punctuations
;; Punctuation
%type <punctuation>
%token <punctuation> COLON ":"
%token <punctuation> SEMI ";"

View file

@ -1,6 +1,6 @@
;;; java-tags.wy -- Semantic LALR grammar for Java
;; Copyright (C) 2002-2013 Free Software Foundation, Inc.
;; Copyright (C) 2002-2014 Free Software Foundation, Inc.
;;
;; Author: David Ponce <david@dponce.com>
;; Maintainer: David Ponce <david@dponce.com>
@ -25,6 +25,11 @@
%package wisent-java-tags-wy
%provide semantic/wisent/javat-wy
%{
(declare-function semantic-parse-region "semantic"
(start end &optional nonterminal depth returnonerror))
}
%languagemode java-mode
;; The default start symbol
@ -154,7 +159,7 @@
%keyword CHAR "char"
%put CHAR summary
"Integral primitive type ('\u0000' to '\uffff') (0 to 65535)"
"Integral primitive type (0 to 65535)"
%keyword CLASS "class"
%put CLASS summary
@ -312,7 +317,7 @@
%keyword WHILE "while"
%put WHILE summary
"while (<expr>) <stmt> | do <stmt> while (<expr>);"
;; --------------------------
;; Official javadoc line tags
;; --------------------------
@ -340,27 +345,27 @@
%keyword _AUTHOR "@author"
%put _AUTHOR javadoc (seq 1 usage (type))
%keyword _VERSION "@version"
%put _VERSION javadoc (seq 2 usage (type))
%put _VERSION javadoc (seq 2 usage (type))
%keyword _PARAM "@param"
%put _PARAM javadoc (seq 3 usage (function) with-name t)
%put _PARAM javadoc (seq 3 usage (function) with-name t)
%keyword _RETURN "@return"
%put _RETURN javadoc (seq 4 usage (function))
%put _RETURN javadoc (seq 4 usage (function))
%keyword _EXCEPTION "@exception"
%put _EXCEPTION javadoc (seq 5 usage (function) with-name t)
%put _EXCEPTION javadoc (seq 5 usage (function) with-name t)
%keyword _THROWS "@throws"
%put _THROWS javadoc (seq 6 usage (function) with-name t)
%put _THROWS javadoc (seq 6 usage (function) with-name t)
%keyword _SEE "@see"
%put _SEE javadoc (seq 7 usage (type function variable) opt t with-ref t)
%put _SEE javadoc (seq 7 usage (type function variable) opt t with-ref t)
%keyword _SINCE "@since"
%put _SINCE javadoc (seq 8 usage (type function variable) opt t)
%put _SINCE javadoc (seq 8 usage (type function variable) opt t)
%keyword _SERIAL "@serial"
%put _SERIAL javadoc (seq 9 usage (variable) opt t)
%put _SERIAL javadoc (seq 9 usage (variable) opt t)
%keyword _SERIALDATA "@serialData"
%put _SERIALDATA javadoc (seq 10 usage (function) opt t)
%put _SERIALDATA javadoc (seq 10 usage (function) opt t)
%keyword _SERIALFIELD "@serialField"
%put _SERIALFIELD javadoc (seq 11 usage (variable) opt t)
%put _SERIALFIELD javadoc (seq 11 usage (variable) opt t)
%keyword _DEPRECATED "@deprecated"
%put _DEPRECATED javadoc (seq 12 usage (type function variable) opt t)
%put _DEPRECATED javadoc (seq 12 usage (type function variable) opt t)
%%
@ -387,7 +392,7 @@ package_declaration
;
;;; Include file token
;; ("FILE" include SYSTEM "DOCSTRING")
;; ("FILE" include SYSTEM "DOCSTRING")
import_declaration
: IMPORT qualified_name SEMICOLON
(INCLUDE-TAG $2 nil)
@ -476,7 +481,7 @@ static_initializer
;
;;; Function token
;; ("NAME" function "TYPE" ( ARG-LIST ) EXTRA-SPEC "DOCSTRING")
;; ("NAME" function "TYPE" ( ARG-LIST ) EXTRA-SPEC "DOCSTRING")
constructor_declaration
: modifiers_opt constructor_declarator throwsc_opt constructor_body
(FUNCTION-TAG (car $2) nil (cdr $2)
@ -491,11 +496,11 @@ constructor_declarator
;
constructor_body
: block
: block
;
;;; Function token
;; ("NAME" function "TYPE" ( ARG-LIST ) EXTRA-SPEC "DOCSTRING")
;; ("NAME" function "TYPE" ( ARG-LIST ) EXTRA-SPEC "DOCSTRING")
method_declaration
: modifiers_opt VOID method_declarator throwsc_opt method_body
(FUNCTION-TAG (car $3) $2 (cdr $3) :typemodifiers $1 :throws $4)

View file

@ -1,6 +1,6 @@
;;; javascript-jv.wy -- LALR grammar for Javascript
;; Copyright (C) 2005-2013 Free Software Foundation, Inc.
;; Copyright (C) 2005-2014 Free Software Foundation, Inc.
;; Copyright (C) 1998-2011 Ecma International.
;; Author: Joakim Verona
@ -59,7 +59,13 @@
%package wisent-javascript-jv-wy
%provide semantic/wisent/js-wy
;; JAVE I prefere ecmascript-mode
%{
(declare-function semantic-parse-region "semantic"
(start end &optional nonterminal depth returnonerror))
}
;; JAVE I preferred ecmascript-mode.
%languagemode ecmascript-mode javascript-mode
;; The default goal
@ -270,8 +276,8 @@ Statement : Block
| BreakStatement
| ReturnStatement
| WithStatement
;
;
FunctionDeclaration : FUNCTION VARIABLE FormalParameterListBlock Block
(FUNCTION-TAG $2 nil $3)
;
@ -347,7 +353,7 @@ IterationExpression : WHILE OPEN_PARENTHESIS Expression CLOSE_PARENTHESIS Statem
ContinueStatement : CONTINUE SEMICOLON
;
;;JAVE break needs labels
;;JAVE break needs labels
BreakStatement : BREAK SEMICOLON
;; | BREAK identifier SEMICOLON
;

View file

@ -1,6 +1,6 @@
;;; make.by -- BY notation for Makefiles.
;; Copyright (C) 1999-2013 Free Software Foundation, Inc.
;; Copyright (C) 1999-2014 Free Software Foundation, Inc.
;;
;; Author: Eric M. Ludlam <zappo@gnu.org>
;; David Ponce <david@dponce.com>

View file

@ -1,6 +1,6 @@
;;; python.wy -- LALR grammar for Python
;; Copyright (C) 2002-2013 Free Software Foundation, Inc.
;; Copyright (C) 2002-2014 Free Software Foundation, Inc.
;; Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
;; 2009, 2010 Python Software Foundation; All Rights Reserved
@ -91,8 +91,12 @@
%provide semantic/wisent/python-wy
%{
(declare-function wisent-python-reconstitute-function-tag "semantic/wisent/python")
(declare-function wisent-python-reconstitute-class-tag "semantic/wisent/python")
(declare-function wisent-python-reconstitute-function-tag
"semantic/wisent/python" (tag suite))
(declare-function wisent-python-reconstitute-class-tag "semantic/wisent/python"
(tag))
(declare-function semantic-parse-region "semantic"
(start end &optional nonterminal depth returnonerror))
}
%languagemode python-mode

View file

@ -1,6 +1,6 @@
;;; scheme.by -- Scheme BNF language specification
;; Copyright (C) 2001-2013 Free Software Foundation, Inc.
;; Copyright (C) 2001-2014 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.

View file

@ -1,6 +1,6 @@
;;; srecode-template.wy --- Semantic Recoder Template parser
;; Copyright (C) 2005-2013 Free Software Foundation, Inc.
;; Copyright (C) 2005-2014 Free Software Foundation, Inc.
;; Author: Eric Ludlam <zappo@gnu.org>
;; Keywords: syntax
@ -125,6 +125,10 @@ opt-read-fcn
variable
: SET symbol insertable-string-list newline
(VARIABLE-TAG $2 nil $3)
| SET symbol number newline
;; This so a common error w/ priority works.
;; Note that "number" still has a string value in the lexer.
(VARIABLE-TAG $2 nil (list $3))
| SHOW symbol newline
(VARIABLE-TAG $2 nil t)
;
@ -260,8 +264,8 @@ It ignores whitespace, newlines and comments."
srecode-template-separator-block
srecode-template-wy--<keyword>-keyword-analyzer
srecode-template-property-analyzer
srecode-template-wy--<symbol>-regexp-analyzer
srecode-template-wy--<number>-regexp-analyzer
srecode-template-wy--<symbol>-regexp-analyzer
srecode-template-wy--<string>-sexp-analyzer
srecode-template-wy--<punctuation>-string-analyzer
semantic-lex-default-action

View file

@ -2,7 +2,7 @@
# Build Emacs with various options for profiling, debugging,
# with and without warnings enabled etc.
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@ -21,6 +21,8 @@
require 5;
use strict;
use warnings;
use Getopt::Long;
use File::Basename;
use Cwd;

View file

@ -1,5 +1,5 @@
Instructions to create pretest or release tarballs.
-- originally written by Gerd Moellmann, amended by Francesco Potortì
Instructions to create pretest or release tarballs. -*- coding: utf-8 -*-
-- originally written by Gerd Moellmann, amended by Francesco Potortì
with the initial help of Eli Zaretskii
@ -28,14 +28,10 @@ General steps (for each step, check for possible errors):
M-: (require 'authors) RET
M-x authors RET
There is almost guaranteed to be an "*Authors Errors*" buffer with
problems caused by certain bad ChangeLog entries. You can ignore
the very old ones (eg lisp/erc has a lot). If there are errors
related to new entries (especially entries that are new since the
last pretest), see if you can fix them. If there was a ChangeLog
typo, fix it. If a file was deleted or renamed, consider adding
an appropriate entry to authors-ignored-files, authors-valid-file-names,
or authors-renamed-files-alist.
If there is an "*Authors Errors*" buffer, address the issues.
If there was a ChangeLog typo, fix it. If a file was deleted or
renamed, consider adding an appropriate entry to authors-ignored-files,
authors-valid-file-names, or authors-renamed-files-alist.
If necessary, repeat M-x authors after making those changes.
Save the "*Authors*" buffer as etc/AUTHORS.
@ -50,9 +46,20 @@ General steps (for each step, check for possible errors):
For a pretest, start at version .90. After .99, use .990 (so that
it sorts).
The final pretest should be a release candidate. Set the version
number to that of the actual release. Pick a date about a week
from now when you intend to make the release. Use M-x add-release-logs
to add the ChangeLog entries for that date to the tar file (but
not yet to the repository). Name the tar file as
emacs-XX.Y-rc1.tar. If all goes well in the following week, you
can simply rename the file and use it for the actual release.
5. autoreconf -i -I m4 --force
make bootstrap
make -C etc/refcards
make -C etc/refcards clean
6. Copy lisp/loaddefs.el to lisp/ldefs-boot.el.
Commit etc/AUTHORS, lisp/ldefs-boot.el, and the files changed
@ -77,7 +84,8 @@ General steps (for each step, check for possible errors):
compile-NEW.log and compare it against an old one. The easiest way
to do that is to visit the old log in Emacs, change the version
number of the old Emacs to __, do the same with the new log and do
M-x ediff. Especially check that Info files aren't built.
M-x ediff. Especially check that Info files aren't built, and that
no autotools (autoconf etc) run.
9. cd EMACS_ROOT_DIR && bzr tag TAG
TAG is emacs-XX.Y.ZZ for a pretest, emacs-XX.Y for a release.
@ -135,6 +143,8 @@ General steps (for each step, check for possible errors):
Download them and check the signatures. Check they build.
12. For a pretest, announce it on emacs-devel and info-gnu-emacs@gnu.org.
Probably should also include the platform-testers list:
https://lists.gnu.org/mailman/listinfo/platform-testers
For a release, also announce it on info-gnu@gnu.org. (Probably
bcc the info- addresses to make it less likely that people will
followup on those lists.)

View file

@ -4,7 +4,7 @@
#
# admin/merge-gnulib
# Copyright 2012-2013 Free Software Foundation, Inc.
# Copyright 2012-2014 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@ -26,22 +26,25 @@
GNULIB_URL=git://git.savannah.gnu.org/gnulib.git
GNULIB_MODULES='
alloca-opt c-ctype c-strcase
careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512
alloca-opt byteswap c-ctype c-strcase
careadlinkat close-stream count-one-bits count-trailing-zeros
crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512
dtoastr dtotimespec dup2 environ execinfo faccessat
fcntl-h fdopendir filemode fstatat getloadavg getopt-gnu gettime gettimeofday
ignore-value intprops largefile lstat
manywarnings memrchr mktime
pselect pthread_sigmask putenv readlink readlinkat
fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync
getloadavg getopt-gnu gettime gettimeofday
intprops largefile lstat
manywarnings memrchr mkostemp mktime
pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat
sig2str socklen stat-time stdalign stdarg stdbool stdio
strftime strtoimax strtoumax symlink sys_stat
sys_time time timer-time timespec-add timespec-sub unsetenv utimens
sys_time time timer-time timespec-add timespec-sub
unsetenv update-copyright utimens
warnings
'
GNULIB_TOOL_FLAGS='
--avoid=dup
--avoid=errno --avoid=fchdir --avoid=fcntl --avoid=fstat
--avoid=close --avoid=dup
--avoid=fchdir --avoid=fstat
--avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow
--avoid=open --avoid=openat-die --avoid=opendir
--avoid=raise
@ -89,7 +92,8 @@ test -x "$gnulib_srcdir"/gnulib-tool || {
}
"$gnulib_srcdir"/gnulib-tool --dir="$src" $GNULIB_TOOL_FLAGS $GNULIB_MODULES &&
rm -- "$src"m4/fcntl-o.m4 "$src"m4/gnulib-cache.m4 "$src"m4/warn-on-use.m4 &&
rm -- "$src"lib/gl_openssl.h "$src"m4/fcntl-o.m4 "$src"m4/gl-openssl.m4 \
"$src"m4/gnulib-cache.m4"$src" m4/warn-on-use.m4 &&
cp -- "$gnulib_srcdir"/build-aux/texinfo.tex "$src"doc/misc &&
cp -- "$gnulib_srcdir"/build-aux/move-if-change "$src"build-aux &&
autoreconf -i -I m4 -- ${src:+"$src"}

View file

@ -8,7 +8,8 @@ This is 95% of all you will ever need to know.
** How do I report a bug?
Use M-x report-emacs-bug, or send mail to bug-gnu-emacs@gnu.org.
If you want to Cc someone, use an "X-Debbugs-CC" header instead.
If you want to Cc someone, use an "X-Debbugs-CC" header (or
pseudo-header, see below) instead.
** How do I comment on a bug?
Reply to a mail on the bug-gnu-emacs list in the normal way.
@ -52,8 +53,8 @@ i) Your report will be assigned a number and generate an automatic reply.
ii) Optionally, you can set some database parameters when you first
report a bug (see "Setting bug parameters" below).
iii) If you want to CC: someone, use X-Debbugs-CC: (this is important;
see below).
iii) If you want to CC: someone, use X-Debbugs-CC: (note this only
applies to _new_ reports, not followups).
Once your report is filed and assigned a number, it is sent out to the
bug mailing list. In some cases, it may be appropriate to just file a
@ -92,18 +93,21 @@ but create duplicates and errors. (It is possible, but unlikely, that
you might want to have a dialog with the owner address, outside of
normal bug reporting.)
** When reporting a bug, to send a Cc to another address
** When reporting a new bug, to send a Cc to another address
(e.g. bug-cc-mode@gnu.org), do NOT just use a Cc: header.
Instead, use "X-Debbugs-CC:". This ensures the Cc address will get a
mail with the bug report number in. If you do not do this, each reply
in the subsequent discussion will end up creating a new bug.
This is annoying.
in the subsequent discussion might end up creating a new bug.
This is annoying. (So annoying that a form of message-id tracking has
been implemented to hopefully stop this happening, but it is still
better to use X-Debbugs-CC.)
(So annoying that a form of message-id tracking has been implemented
to hopefully stop this happening, but it is still better to use X-Debbugs-CC.)
Like any X-Debbugs- header, this one can also be specified in the
pseudo-header (see below), if your mail client does not let you add
"X-" headers.
If a new report contains X-Debbugs-CC in the input, this is
converted to a real Cc header in the output. (See Bug#1720).
converted to a real Cc header in the output. (See Bug#1780,5384)
It is also merged into the Resent-CC header (see below).
** How does Debbugs send out mails?
@ -218,8 +222,8 @@ Package: emacs
Version: 23.0.60
Severity: minor
This can also include tags. Some things (e.g. submitter) don't seem to
work here.
This can also include tags, or any X-Debbugs- setting.
Some things (e.g. submitter) don't seem to work here.
Otherwise, send mail to the control server, control@debbugs.gnu.org.
At the start of the message body, supply the desired commands, one per
@ -627,7 +631,9 @@ following headers:
1) The leading envelope From line.
2) Message-ID (get it from /var/log/mailman/vette).
3) X-Debbugs-Envelope-To: submit
3) X-Debbugs-Envelope-To: xxx
For a new report, xxx = submit; for a control message, xxx = control;
for a reply to bug#123, xxx = 123
Then pipe it to receive as above.

View file

@ -316,3 +316,85 @@ When finished, use
bzr bisect reset
or simply delete the entire branch if you created it just for this.
* Commit emails
** Old method: bzr-hookless-email
https://launchpad.net/bzr-hookless-email
Runs hourly via cron. Must ask Savannah admins to enable/disable it
for each branch. Stores the last revision that it mailed as
last_revision_mailed in branch.conf on the server. Breaks with bzr 2.6:
http://lists.gnu.org/archive/html/savannah-hackers-public/2013-05/msg00000.html
Fix from https://bugs.launchpad.net/bzr-hookless-email/+bug/988195
only partially works. Breaks again on every merge commit:
https://lists.ubuntu.com/archives/bazaar/2013q2/075520.html
http://lists.gnu.org/archive/html/savannah-hackers-public/2013-05/msg00024.html
You can force it to skip the merge commit by changing the value for
last_revision_mailed, eg:
bzr config last_revision_mailed=xfq.free@gmail.com-20130603233720-u1aumaxvf3o0rlai -d bzr+ssh://USERNAME@bzr.savannah.gnu.org/emacs/trunk/
** New method: bzr-email plugin
https://launchpad.net/bzr-email
http://lists.gnu.org/archive/html/savannah-hackers-public/2013-06/msg00007.html
Runs on commit. Projects can enable it themselves by using `bzr
config' to set post_commit_to option for a branch. See `bzr help email'
(if you have the plugin installed) for other options.
The From: address will be that of your Savannah account, rather than
your `bzr whoami' information.
Note: if you have the bzr-email plugin installed locally, then when
you commit to the Emacs repository it will also try to send a commit
email from your local machine. If your machine is not configured to
send external mail, this will just fail. In any case, you may prefer
to either remove the plugin from your machine, or disable it for Emacs
branches. You can do this either by editing branch.conf in your Emacs
branches, to override the server setting (untested; not sure this
works), or by adding an entry to ~/.bazaar/locations.conf:
[bzr+ssh://USERNAME@bzr.savannah.gnu.org/emacs/*/]
post_commit_to = ""
You have to use locations.conf rather than bazaar.conf because the
latter has a lower priority than branch.conf.
* Using git-bzr
** initially
You can use Git locally to talk to the Bazaar repo as a "remote" repo
via git-bzr (aka git-remote-bzr). Initial clone:
git clone bzr::bzr+ssh://USER@bzr.sv.gnu.org/emacs/trunk e
This creates the working dir e/ (with subdir .git, etc). Disk usage
is 13G (as of early 2014), so you will probably want to repack:
git repack -a -d -f --window=250 --depth=250 --window-memory=N
where N is chosen to avoid swapping. E.g., given 512MB RAM, N="200m"
results in "du -sh .git" => 559M, about double the smallest reported
value (obtained with "deprecated" command "git gc --aggressive").
** steady-state
Use "fetch", "pull" and other remote-to-local commands as usual.
For "push", the Emacs Bazaar repo is configured with
append_revisions_only = True
so some versions of git-remote-bzr may raise AppendRevisionsOnlyViolation
(in func do_export) instead of displaying a "non fast-forward" message
and skipping the branch. See:
http://lists.gnu.org/archive/html/emacs-devel/2014-01/msg00436.html
which includes a provisional patch to git-remote-bzr to do that.

View file

@ -5,6 +5,8 @@ entry in their name, not yours.
http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg00793.html
There is no need to make change log entries for files such as NEWS,
MAINTAINERS, and FOR-RELEASE.
"There is no need" means you don't have to, but you can if you want to.
http://lists.gnu.org/archive/html/emacs-devel/2006-12/msg01135.html
There is no need to indicate regeneration of files such as configure

View file

@ -45,6 +45,15 @@ Date: Tue, 31 Mar 2009 12:21:20 +0900
for modern source-control systems with a global log, it's better to
have something like "Regenerate configure".
(4) (Added in 2014) In commit comments, and ChangeLog files, it is best
to use ways of identifying revisions that are not dependent on a
particular version control system. (At time of writing Emacs is
about to move to its fourth VCS and another move in the future is
not impossible.) An excellent way to identify commits is by
quoting their summary line. Another is with an action stamp - an
RFC3339 date followed by ! followed by the committer's email - for
example, "2014-01-16T05:43:35Z!esr@thyrsus.com". Often, "my
previous commit" will suffice.
Followup discussion:
http://lists.gnu.org/archive/html/emacs-devel/2010-01/msg00897.html

View file

@ -1,4 +1,4 @@
Copyright (C) 2007-2013 Free Software Foundation, Inc.
Copyright (C) 2007-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.

View file

@ -1,24 +1,21 @@
NOTES ON THE EMACS PACKAGE ARCHIVE
The GNU Emacs package archive, at elpa.gnu.org, is managed using a Bzr
branch named "elpa", hosted on Savannah. To check it out:
The GNU Emacs package archive, at elpa.gnu.org, is managed using a Git
repository named "elpa", hosted on Savannah. To check it out:
bzr branch bzr+ssh://USER@bzr.savannah.gnu.org/emacs/elpa elpa
git clone git://bzr.sv.gnu.org/emacs/elpa
cd elpa
echo "public_branch = bzr+ssh://USER@bzr.savannah.gnu.org/emacs/elpa" >> .bzr/branch/branch.conf
bzr bind bzr+ssh://USERNAME@bzr.savannah.gnu.org/emacs/elpa
git remote set-url --push origin git+ssh://bzr.sv.gnu.org/srv/git/emacs/elpa
[create task branch for edits, etc.]
Changes to this branch propagate to elpa.gnu.org in a semi-manual way.
There exists a copy of the elpa branch on that machine. Someone with
access logs in, pulls the latest changes from Savannah, and runs a
"deployment" script. This script (which is itself kept in the Bzr
branch) generates the content visible at http://elpa.gnu.org/packages.
Changes to this branch propagate to elpa.gnu.org via a "deployment" script run
daily. This script (which is kept in elpa/admin/update-archive.sh) generates
the content visible at http://elpa.gnu.org/packages.
The reason we set things up this way, instead of using the package
upload commands in package-x.el, is to let Emacs hackers conveniently
edit the contents of the "elpa" branch. (In particular, multi-file
packages are stored on the branch in source form, not as tarfiles.)
A new package is released as soon as the "version number" of that package is
changed. So you can use `elpa' to work on a package without fear of releasing
those changes prematurely. And once the code is ready, just bump the
version number to make a new release of the package.
It is easy to use the elpa branch to deploy a "local" copy of the
package archive. For details, see the README file in the elpa branch.

View file

@ -1,4 +1,4 @@
Copyright (C) 2002-2013 Free Software Foundation, Inc.
Copyright (C) 2002-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.

66
admin/notes/hydra Normal file
View file

@ -0,0 +1,66 @@
-*- outline -*-
Copyright (C) 2013-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.
NOTES FOR EMACS CONTINUOUS BUILD ON HYDRA
A continuous build for Emacs can be found at
http://hydra.nixos.org/jobset/gnu/emacs-trunk
http://hydra.nixos.org/jobset/gnu/emacs-24
* It builds Emacs on various platforms.
Sometimes jobs fail due to hydra problems rather than Emacs problems.
Eg it seems like the cygwin build will never work again.
http://lists.gnu.org/archive/html/hydra-users/2013-08/msg00000.html
* Mail notifications
In addition to the web interface, Hydra can send notifications by
email when the build status of a project changes—e.g., from
`SUCCEEDED' to `FAILED'. It sends notifications about build status in
Emacs trunk to emacs-buildstatus@gnu.org.
If you want to receive these notifications, please subscribe at
http://lists.gnu.org/mailman/listinfo/emacs-buildstatus
* The Emacs jobset consists of the following jobs:
** The `tarball' job
which gets a checkout from bzr, and does a bootstrap followed
by running make-dist to create a tarball. If this job fails, all the
others will too (because they use the tarball as input).
** The `build' job
which starts from the tarball and does a normal build
** The 'coverage' job
does a gcov build and then runs `make check'. Fails if any test fails.
* Nix expressions
The recipe for GNU Emacs are available via Git:
http://git.savannah.gnu.org/cgit/hydra-recipes.git/tree/emacs
To modify the build job, email the patch to hydra-users@gnu.org. The
build recipes are written in the Nix language.
* Other Information
For a list of other GNU packages that have a continuous build on
Hydra, see http://hydra.nixos.org/project/gnu
See http://www.gnu.org/software/devel.html#Hydra for more information.
This file is part of GNU Emacs.
GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.

View file

@ -1,6 +1,6 @@
Some lisp/emacs-lisp/ Features and Where They Are Documented
Copyright (C) 2007-2013 Free Software Foundation, Inc.
Copyright (C) 2007-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.

View file

@ -1,6 +1,6 @@
-*- coding: utf-8; mode: text; -*-
Copyright (C) 2007-2013 Free Software Foundation, Inc.
Copyright (C) 2007-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.
From README.multi-tty in the multi-tty branch.

View file

@ -1,6 +1,6 @@
-*-mode: text; coding: latin-1;-*-
-*-mode: text; coding: utf-8;-*-
Copyright (C) 2002-2013 Free Software Foundation, Inc.
Copyright (C) 2002-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.
Problems, fixmes and other unicode-related issues
@ -12,9 +12,9 @@ regard to completeness.
* SINGLE_BYTE_CHAR_P returns true for Latin-1 characters, which has
undesirable effects. E.g.:
(multibyte-string-p (let ((s "x")) (aset s 0 ?£) s)) => nil
(multibyte-string-p (concat [?£])) => nil
(text-char-description ?£) => "M-#"
(multibyte-string-p (let ((s "x")) (aset s 0 ?£) s)) => nil
(multibyte-string-p (concat [?£])) => nil
(text-char-description ?£) => "M-#"
These examples are all fixed by the change of 2002-10-14, but
there still exist questionable SINGLE_BYTE_CHAR_P in the
@ -77,7 +77,7 @@ regard to completeness.
spelling and calendar, but that's not a Unicode issue.)
* Handle Unicode combining characters usefully, e.g. diacritics, and
handle more scripts specifically (à la Devanagari). There are
handle more scripts specifically (à la Devanagari). There are
issues with canonicalization.
* We need tabular input methods, e.g. for maths symbols. (Not
@ -98,6 +98,134 @@ regard to completeness.
* Old auto-save files, and similar files, such as Gnus drafts,
containing non-ASCII characters probably won't be re-read correctly.
Source file encoding
--------------------
Most Emacs source files are encoded in UTF-8 (or in ASCII, which is a
subset), but there are a few exceptions, listed below. Perhaps
someday many of these files will be converted to UTF-8, for
convenience when using tools like 'grep -r', but this might need
nontrivial changes to the build process.
* chinese-big5
These are verbatim copies of files taken from external sources.
They haven't been converted to UTF-8.
leim/CXTERM-DIC/4Corner.tit
leim/CXTERM-DIC/ARRAY30.tit
leim/CXTERM-DIC/ECDICT.tit
leim/CXTERM-DIC/ETZY.tit
leim/CXTERM-DIC/PY-b5.tit
leim/CXTERM-DIC/Punct-b5.tit
leim/CXTERM-DIC/QJ-b5.tit
leim/CXTERM-DIC/ZOZY.tit
leim/MISC-DIC/CTLau-b5.html
leim/MISC-DIC/cangjie-table.b5
* chinese-iso-8bit
These are verbatim copies of files taken from external sources.
They haven't been converted to UTF-8.
leim/CXTERM-DIC/CCDOSPY.tit
leim/CXTERM-DIC/Punct.tit
leim/CXTERM-DIC/QJ.tit
leim/CXTERM-DIC/SW.tit
leim/CXTERM-DIC/TONEPY.tit
leim/MISC-DIC/pinyin.map
leim/MISC-DIC/CTLau.html
leim/MISC-DIC/ziranma.cin
* cp850
This file contains non-ASCII characters in unibyte strings. When
editing a keyboard layout it's more convenient to see 'é' than
'\202', and the MS-DOS compiler requires the single byte if a
backslash escape is not being used.
src/msdos.c
* iso-2022-cn-ext
This file is externally generated from leim/MISC-DIC/cangjie-table.b5
by Big5->CNS converter. It hasn't been converted to UTF-8.
leim/MISC-DIC/cangjie-table.cns
* iso-latin-2
These files are processed by csplain, a program that requires
Latin-2 input. In 2012 the csplain maintainers started
recommending UTF-8, but these files haven't been converted yet.
etc/refcards/cs-dired-ref.tex
etc/refcards/cs-refcard.tex
etc/refcards/cs-survival.tex
etc/refcards/sk-dired-ref.tex
etc/refcards/sk-refcard.tex
etc/refcards/sk-survival.tex
* japanese-iso-8bit
SKK-JISYO.L is a verbatim copy of a file taken from an external source.
It hasn't been converted to UTF-8.
leim/SKK-DIC/SKK-JISYO.L
* japanese-shift-jis
This is a verbatim copy of a file taken from an external source.
It hasn't been converted to UTF-8.
admin/charsets/mapfiles/cns2ucsdkw.txt
* no-conversion
This file purposely contains arbitrary bytes interspersed within text,
to test whether the Emacs distribution is corrupted.
lib-src/testfile
* iso-2022-7bit
This file switches between CJK charsets, which is not encoded in UTF-8.
etc/HELLO
Each of these files contains just one CJK charset, but Emacs
currently has no easy way to specify set-charset-priority on a
per-file basis, so converting any of these files to UTF-8 might
change the file's appearance when viewed by an Emacs that is
operating in some other language environment.
etc/tutorials/TUTORIAL.ja
leim/quail/cyril-jis.el
leim/quail/hanja-jis.el
leim/quail/japanese.el
leim/quail/py-punct.el
leim/quail/pypunct-b5.el
lisp/international/ja-dic-cnv.el
lisp/international/ja-dic-utl.el
lisp/international/kinsoku.el
lisp/international/kkc.el
lisp/international/titdic-cnv.el
lisp/language/japan-util.el
lisp/language/japanese.el
lisp/term/x-win.el
* utf-8-emacs
These files contain characters that cannot be encoded in UTF-8.
leim/quail/tibetan.el
leim/quail/ethiopic.el
lisp/international/titdic-cnv.el
lisp/language/tibetan.el
lisp/language/tibet-util.el
lisp/language/ind-util.el
This file is part of GNU Emacs.

82
admin/notes/www Normal file
View file

@ -0,0 +1,82 @@
-*- outline -*-
Copyright (C) 2013-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.
NOTES FOR EMACS WWW PAGES
* Renaming pages, redirects
Sometimes you want to move a page to a new location.
If the old location might be referenced somewhere else, you should add
some form of redirect to the new location. There are several ways to
do this:
** Use a refresh directive in the old file
https://www.gnu.org/server/standards/README.webmastering.html#htaccess
Change the entire contents of the old file to be something like:
<meta http-equiv="refresh" content="0; url=/software/emacs/manual/elisp.html">
I can't think of any reason to use this method.
** Use a .symlinks file
https://www.gnu.org/server/standards/README.webmastering.html#symlinks
This is really an interface to mod_rewrite rules, but it acts like
symlinks. Remove old-page.html altogether, and create a ".symlinks"
file in the relevant directory, with contents of the form:
# This is a comment line.
old-page.html new-page.html
Anyone visiting old-page.html will be shown the contents of new-page.html.
Note that changes to .symlinks file are only updated periodically on
the server via cron (twice an hour?). So there will be a delay (of up
to 30 minutes?) before you see your changes take effect.
This method is ok, but:
i) a person visiting old-page.html has no idea that the page has moved.
They still see old-page.html in their address bar. (In other words,
the mod_rewrite rule does not use the [R] flag.) Sometimes this is
what you want, sometimes not.
ii) it doesn't work right if the new page is in a different directory
to the old page: relative links from the visited page will break.
** Use a .htaccess file
Remove old-page.html altogether, and create a ".htaccess" file in the
relevant directory, with contents of the form:
# This is a comment line.
Redirect 301 /software/emacs/old-page.html /software/emacs/dir/new-page.html
Use "301" for a permanent redirection, otherwise you can omit the number.
Note that paths must (?) be relative to the top-level www.gnu.org.
I think this is the best method. You can specify temporary or
permanent redirects, and changes go live more-or-less straight away.
This method is useful for making cross-references to non-Emacs manuals
work; see manual/.htaccess in the repository. You only have to add a
single redirect for every given external manual, you can redirect
html_node to hmtl_node and html_mono to html_mono.
This file is part of GNU Emacs.
GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.

View file

@ -2,6 +2,8 @@ HOW TO MAINTAIN COPYRIGHT YEARS FOR GNU EMACS
Maintaining copyright years is now very simple: every time a new year
rolls around, add that year to every FSF (and AIST) copyright notice.
Do this by running the 'admin/update-copyright' script on a fresh bzr
checkout. Inspect the results for plausibility, then commit them.
There's no need to worry about whether an individual file has changed
in a given year - it's sufficient that Emacs as a whole has changed.
@ -28,10 +30,10 @@ but should keep the full list in a comment in the source.
since Emacs 21 came out in 2001, all the subsequent years[1]. We don't
need to check whether *that file* was changed in those years.
It's sufficient that *Emacs* was changed in those years (and it was!).
For those files that have been added since then, we should add
the year it was added to Emacs, and all subsequent years."
--RMS, 2005-07-13
[1] Note that this includes 2001 - see

View file

@ -1,4 +1,4 @@
Copyright (C) 2001-2013 Free Software Foundation, Inc.
Copyright (C) 2001-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.
Emacs for Windows

View file

@ -1,12 +1,12 @@
Copyright (C) 2001-2013 Free Software Foundation, Inc.
Copyright (C) 2001-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.
Precompiled Distributions of
Emacs for Windows
Version 24.1
Version 24.3
January 1, 2011
March 18, 2013
This directory contains precompiled distributions for GNU Emacs on
Windows (versions before Windows 95 and NT4 are not supported).
@ -14,21 +14,15 @@ See the end of the file for license conditions.
Free Software Foundation; the precompiled distributions are provided
here for convenience since the majority of Windows users are not
accustomed to compiling programs themselves. Corresponding source
can be found in the parent directory in emacs-24.1.tar.gz.
If you have access to the World Wide Web, I would recommend pointing
your favorite web browser to the following document (if you haven't
already):
http://www.gnu.org/software/emacs/windows/ntemacs.html
can be found in the parent directory in emacs-24.3.tar.gz.
* IMPORTANT LEGAL REMINDER
If you want to redistribute any of the precompiled distributions of
Emacs, be careful to check the implications of the GPL. For instance,
if you put the emacs-24.1-bin-i386.tar.gz file from this directory on
if you put the emacs-24.3-bin-i386.zip file from this directory on
an Internet site, you must arrange to distribute the source files of
the SAME version (i.e. ../emacs-24.1.tar.gz).
the SAME version (i.e. ../emacs-24.3.tar.gz).
Making a link to our copy of the source is NOT sufficient, since we
might upgrade to a new version while you are still distributing the
@ -37,8 +31,8 @@ See the end of the file for license conditions.
* Files in this directory
+ emacs-24.1-bin-i386.zip
Windows binaries of Emacs-24.1, with all lisp code and documentation
+ emacs-24.3-bin-i386.zip
Windows binaries of Emacs-24.3, with all lisp code and documentation
included.
Download this file if you want a single installation package, and
@ -49,21 +43,12 @@ See the end of the file for license conditions.
If you need the C source code at a later date, it will be safe to
unpack the source distribution on top of this installation.
+ emacs-24.1-barebin-i386.zip
Windows binaries of Emacs-24.1, without lisp code or documentation.
Download this file if you already have the source distribution.
Unpack this over the top of the source distribution. It contains the
bin subdirectory and etc/DOC file.
+ libxpm-3.5.7-w32-src.zip
Source code required to compile libXpm-3.5.7 on Windows. Contains
+ libXpm-3.5.8-w32-src.zip
Source code required to compile libXpm-3.5.8 on Windows. Contains
a basic Makefile for compiling with mingw32 and a .def file for
generating a DLL with the appropriate exports in addition to the
source code to provide the subset of functionality Emacs uses from
libXpm. This corresponds to the libXpm.dll in emacs-24.1-bin-i386.zip
and emacs-24.1-barebin-i386.zip.
libXpm. This corresponds to the libXpm.dll in emacs-24.3-bin-i386.zip.
* Prerequisites for running Emacs on Windows 9X
@ -73,7 +58,7 @@ See the end of the file for license conditions.
* Image support
Emacs 24.1 contains support for images, however for most image
Emacs 24.3 contains support for images, however for most image
formats supporting libraries are required. This distribution has
been tested with the libraries that are distributed with GTK for
Windows (http://www.gtk.org/download/win32.php), and the libraries
@ -112,6 +97,16 @@ See the end of the file for license conditions.
as well as the base librsvg library. Known to crash Emacs on many
sample images.
* XML support
In order to support XML via libxml2 at runtime, a libxml2-enabled
Emacs must be able to find the relevant DLLs during startup; failure
to do so is not an error, but libxml2 features won't be available to
the running session.
You can get pre-built binaries (including any required DLL and the
header files) at http://sourceforge.net/projects/ezwinports/files/.
* Distributions in .tar.gz and .zip format
Emacs is distributed primarily as source code in a large gzipped tar
@ -229,16 +224,10 @@ See the end of the file for license conditions.
* Further information
If you have access to the World Wide Web, I would recommend pointing
your favorite web browser to following the document (if you haven't
already):
The Emacs on MS Windows FAQ is distributed with Emacs (info
manual "efaq-w32"), and at
http://www.gnu.org/software/emacs/windows/ntemacs.html
This document serves as an FAQ and a source for further information
about the Windows port and related software packages. Note that as
most of the information in that FAQ is for earlier versions, so some
information may not be relevant to Emacs-24.1.
http://www.gnu.org/software/emacs/manual/efaq-w32.html
In addition to the FAQ, there is a mailing list for discussing issues
related to the Windows port of Emacs. For information about the
@ -268,11 +257,8 @@ See the end of the file for license conditions.
Enjoy!
Jason Rumney
(jasonr@gnu.org)
Most of this README was contributed by former maintainer Andrew Innes
(andrewi@gnu.org)
Most of this README was contributed by former maintainers Andrew Innes
(andrewi@gnu.org) and Jason Rumney (jasonr@gnu.org).
This file is part of GNU Emacs.

View file

@ -1,7 +1,7 @@
#!/bin/sh
### quick-install-emacs --- do a halfway-decent job of installing emacs quickly
## Copyright (C) 2001-2013 Free Software Foundation, Inc.
## Copyright (C) 2001-2014 Free Software Foundation, Inc.
## Author: Miles Bader <miles@gnu.org>
@ -105,8 +105,8 @@ and build directories reside.
Optionally, $me can also remove old versions of
automatically generated files that are version-specific (such as the
versioned emacs executables in the \`src' directory, and the DOC-* files
in the \`etc' directory). The latter action is called \`pruning,' and
versioned emacs executables in the \`src' directory).
The latter action is called \`pruning,' and
can be enabled using the \`-p' or \`--prune' options.
EOF
exit 0
@ -209,10 +209,6 @@ maybe_mkdir "$DST_INFO"
PRUNED=""
if test x"$PRUNE" != xno; then
for D in `ls -1t $BUILD/etc/DOC-* | sed 1d`; do
echo $REMOVE_CMD $D
PRUNED="$PRUNED $D"
done
for D in `ls -1t $BUILD/src/emacs-$VERSION.* | sed 1d`; do
echo $REMOVE_CMD $D
PRUNED="$PRUNED $D"

View file

@ -1,19 +1,19 @@
# BidiMirroring-6.2.0.txt
# Date: 2012-05-15, 24:19:00 GMT [KW, LI]
# BidiMirroring-6.3.0.txt
# Date: 2013-02-12, 08:20:00 GMT [KW, LI]
#
# Bidi_Mirroring_Glyph Property
#
# This file is an informative contributory data file in the
# Unicode Character Database.
#
# Copyright (c) 1991-2012 Unicode, Inc.
# Copyright (c) 1991-2013 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# This data file lists characters that have the Bidi_Mirrored=Yes property
# value, for which there is another Unicode character that typically has a glyph
# that is the mirror image of the original character's glyph.
#
# The repertoire covered by the file is Unicode 6.2.0.
# The repertoire covered by the file is Unicode 6.3.0.
#
# The file contains a list of lines with mappings from one code point
# to another one for character-based mirroring.
@ -42,7 +42,7 @@
#
# This file was originally created by Markus Scherer.
# Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler,
# and for Unicode 6.1 and 6.2 by Ken Whistler and Laurentiu Iancu.
# and for Unicode 6.1, 6.2, and 6.3 by Ken Whistler and Laurentiu Iancu.
#
# ############################################################
#
@ -204,8 +204,8 @@
276F; 276E # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
2770; 2771 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
2771; 2770 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
2772; 2773 # LIGHT LEFT TORTOISE SHELL BRACKET
2773; 2772 # LIGHT RIGHT TORTOISE SHELL BRACKET
2772; 2773 # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
2773; 2772 # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
2774; 2775 # MEDIUM LEFT CURLY BRACKET ORNAMENT
2775; 2774 # MEDIUM RIGHT CURLY BRACKET ORNAMENT
27C3; 27C4 # OPEN SUBSET

View file

@ -1,6 +1,6 @@
# Makefile -- Makefile to generate character property tables.
### @configure_input@
# Copyright (C) 2012-2013 Free Software Foundation, Inc.
# Copyright (C) 2012-2014 Free Software Foundation, Inc.
# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
@ -21,16 +21,17 @@
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
SHELL = /bin/sh
SHELL = @SHELL@
srcdir = @srcdir@
abs_builddir = @abs_builddir@
top_srcdir = @top_srcdir@
abs_top_builddir = @abs_top_builddir@
top_builddir = @top_builddir@
EMACS = ${abs_top_builddir}/src/emacs
EMACS = ${top_builddir}/src/emacs
DSTDIR = ${top_srcdir}/lisp/international
emacs = ${EMACS} -batch --no-site-file --no-site-lisp
emacs = "${EMACS}" -batch --no-site-file --no-site-lisp
.PHONY: all compile install
all: ${DSTDIR}/charprop.el
@ -40,14 +41,25 @@ all: ${DSTDIR}/charprop.el
unidata.txt: ${srcdir}/UnicodeData.txt
sed -e 's/\([^;]*\);\(.*\)/(#x\1 "\2")/' -e 's/;/" "/g' < ${srcdir}/UnicodeData.txt > $@
${DSTDIR}/charprop.el: ${srcdir}/unidata-gen.elc unidata.txt
cd ${DSTDIR} && ${emacs} -l ${srcdir}/unidata-gen \
-f unidata-gen-files ${srcdir} ${abs_builddir}/unidata.txt
compile: ${srcdir}/unidata-gen.elc
## Depend on .el rather than .elc so as not to needlessly rebuild
## uni-*.el files just because .elc is missing.
## Same for UnicodeData.txt v unidata.txt.
${DSTDIR}/charprop.el: ${srcdir}/unidata-gen.el ${srcdir}/UnicodeData.txt
${MAKE} ${MFLAGS} compile unidata.txt EMACS="${EMACS}"
-if [ -f "$@" ]; then \
cd ${DSTDIR} && chmod +w charprop.el `sed -n 's/^;; FILE: //p' < charprop.el`; \
fi
${emacs} -L ${srcdir} -l unidata-gen -f unidata-gen-files \
${srcdir} "${DSTDIR}"
## Like the above, but generate in PWD rather than lisp/international.
charprop.el: ${srcdir}/unidata-gen.elc unidata.txt
${emacs} -l ${srcdir}/unidata-gen \
-f unidata-gen-files ${srcdir} unidata.txt
${emacs} -L ${srcdir} -l unidata-gen -f unidata-gen-files \
${srcdir}
.PHONY: clean bootstrap-clean distclean maintainer-clean extraclean
install: charprop.el
cp charprop.el ${DSTDIR}
@ -57,9 +69,20 @@ clean:
if test -f charprop.el; then \
rm -f `sed -n 's/^;; FILE: //p' < charprop.el`; \
fi
rm -f charprop.el ${srcdir}/unidata-gen.elc unidata.txt
rm -f charprop.el ${srcdir}/*.elc unidata.txt
bootstrap-clean: clean
distclean: clean
-rm -f ./Makefile
rm -f Makefile
maintainer-clean: distclean
## Do not remove these files, even in a bootstrap, because they rarely
## change and it slows down bootstrap (a tiny bit).
## Cf leim/ja-dic (which is much slower).
extraclean:
if test -f ${DSTDIR}/charprop.el; then \
(cd ${DSTDIR} && rm -f `sed -n 's/^;; FILE: //p' < charprop.el`); \
rm -f ${DSTDIR}/charprop.el; \
fi

View file

@ -1509,6 +1509,7 @@
0619;ARABIC SMALL DAMMA;Mn;31;NSM;;;;;N;;;;;
061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;;
061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
061C;ARABIC LETTER MARK;Cf;0;AL;;;;;N;;;;;
061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;;
061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
0620;ARABIC LETTER KASHMIRI YEH;Lo;0;AL;;;;;N;;;;;
@ -5296,7 +5297,7 @@
180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;;
180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;;
180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;;
180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;;
180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;;
1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
@ -5751,7 +5752,7 @@
1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;;
1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
1A1B;BUGINESE VOWEL SIGN AE;Mn;0;NSM;;;;;N;;;;;
1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;;
1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;;
1A20;TAI THAM LETTER HIGH KA;Lo;0;L;;;;;N;;;;;
@ -7116,6 +7117,10 @@
2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;;
2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;;
2064;INVISIBLE PLUS;Cf;0;BN;;;;;N;;;;;
2066;LEFT-TO-RIGHT ISOLATE;Cf;0;LRI;;;;;N;;;;;
2067;RIGHT-TO-LEFT ISOLATE;Cf;0;RLI;;;;;N;;;;;
2068;FIRST STRONG ISOLATE;Cf;0;FSI;;;;;N;;;;;
2069;POP DIRECTIONAL ISOLATE;Cf;0;PDI;;;;;N;;;;;
206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
@ -7738,10 +7743,10 @@
2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
2307;WAVY LINE;So;0;ON;;;;;N;;;;;
2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
2308;LEFT CEILING;Ps;0;ON;;;;;Y;;;;;
2309;RIGHT CEILING;Pe;0;ON;;;;;Y;;;;;
230A;LEFT FLOOR;Ps;0;ON;;;;;Y;;;;;
230B;RIGHT FLOOR;Pe;0;ON;;;;;Y;;;;;
230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
@ -18740,8 +18745,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;;
12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;;
12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;;
12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;-1;N;;;;;
12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;-1;N;;;;;
12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;2;N;;;;;
12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;3;N;;;;;
12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;;
12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;;
1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;;

View file

@ -10,7 +10,7 @@
<meta name="VI60_defaultClientScript" content="JavaScript">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="GENERATOR" content="Microsoft FrontPage 12.0">
<meta name="keywords" content="Unicode Standard, copyright">
@ -136,7 +136,7 @@ <h1>Unicode Terms of Use</h1>
<ol type="A">
<li><u><a name="1"></a>Unicode Copyright.</u>
<ol>
<li>Copyright © 1991-2012 Unicode, Inc. All rights reserved.</li>
<li>Copyright © 1991-2013 Unicode, Inc. All rights reserved.</li>
<li>Certain documents and files on this website contain a legend
indicating that &quot;Modification is permitted.&quot; Any person is
hereby authorized, without fee, to modify such documents and
@ -268,7 +268,7 @@ <h3 align="center"><a name="Exhibit1">EXHIBIT 1</a><br>
<p>NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.</p>
<p>COPYRIGHT AND PERMISSION NOTICE</p>
<p>Copyright © 1991-2012 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in
<p>Copyright © 1991-2013 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in
<a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a>.</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and

View file

@ -1,4 +1,7 @@
;; unidata-gen.el -- Create files containing character property data.
;; Copyright (C) 2008-2014 Free Software Foundation, Inc.
;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H13PRO009
@ -23,13 +26,12 @@
;; SPECIAL NOTICE
;;
;; This file must be byte-compilable/loadable by `temacs' and also
;; the entry function `unidata-gen-files' must be runnable by
;; `temacs'.
;; the entry function `unidata-gen-files' must be runnable by `temacs'.
;; FILES TO BE GENERATED
;;
;; The entry function `unidata-gen-files' generates these files in
;; the current directory.
;; in directory specified by its dest-dir argument.
;;
;; charprop.el
;; It contains a series of forms of this format:
@ -88,9 +90,9 @@
(defvar unidata-list nil)
;; Name of the directory containing files of Unicode Character
;; Database.
;; Name of the directory containing files of Unicode Character Database.
;; Dynamically bound in unidata-gen-files.
(defvar unidata-dir nil)
(defun unidata-setup-list (unidata-text-file)
@ -192,8 +194,8 @@ Property value is an integer."
4 unidata-gen-table-symbol "uni-bidi.el"
"Unicode bidi class.
Property value is one of the following symbols:
L, LRE, LRO, R, AL, RLE, RLO, PDF, EN, ES, ET,
AN, CS, NSM, BN, B, S, WS, ON"
L, LRE, LRO, LRI, R, AL, RLE, RLO, RLI, FSI, PDF, PDI,
EN, ES, ET, AN, CS, NSM, BN, B, S, WS, ON"
unidata-describe-bidi-class
;; The assignment of default values to blocks of code points
;; follows the file DerivedBidiClass.txt from the Unicode
@ -203,7 +205,8 @@ Property value is one of the following symbols:
(#xFB1D #xFB4F R) (#x10800 #x10FFF R) (#x1E800 #x1EFFF R))
;; The order of elements must be in sync with bidi_type_t in
;; src/dispextern.h.
(L R EN AN BN B AL LRE LRO RLE RLO PDF ES ET CS NSM S WS ON))
(L R EN AN BN B AL LRE LRO RLE RLO PDF LRI RLI FSI PDI
ES ET CS NSM S WS ON))
(decomposition
5 unidata-gen-table-decomposition "uni-decomposition.el"
"Unicode decomposition mapping.
@ -395,12 +398,17 @@ is the character itself.")))
;; If VAL is one of VALn, just return n.
;; Otherwise, VAL-LIST is modified to this:
;; ((nil . 0) (VAL1 . 1) (VAL2 . 2) ... (VAL . n+1))
;;
;; WARN is an optional warning to display when the value list is
;; extended, for property values that need to be in sync with other
;; parts of Emacs; currently only used for bidi-class.
(defun unidata-encode-val (val-list val)
(defun unidata-encode-val (val-list val &optional warn)
(let ((slot (assoc val val-list))
val-code)
(if slot
(cdr slot)
(if warn (message warn val))
(setq val-code (length val-list))
(nconc val-list (list (cons val val-code)))
val-code)))
@ -411,6 +419,16 @@ is the character itself.")))
(let ((table (make-char-table 'char-code-property-table))
(prop-idx (unidata-prop-index prop))
(vec (make-vector 128 0))
;; When this warning is printed, there's a need to make the
;; following changes:
;; (1) update unidata-prop-alist with the new bidi-class values;
;; (2) extend bidi_type_t enumeration on src/dispextern.h to
;; include the new classes;
;; (3) possibly update the assertion in bidi.c:bidi_check_type; and
;; (4) possibly update the switch cases in
;; bidi.c:bidi_get_type and bidi.c:bidi_get_category.
(bidi-warning "\
** Found new bidi-class '%s', please update bidi.c and dispextern.h")
tail elt range val val-code idx slot
prev-range-data)
(setq val-list (cons nil (copy-sequence val-list)))
@ -436,7 +454,9 @@ is the character itself.")))
(setq elt (car tail) tail (cdr tail))
(setq range (car elt)
val (funcall val-func (nth prop-idx elt)))
(setq val-code (if val (unidata-encode-val val-list val)))
(setq val-code (if val (unidata-encode-val val-list val
(and (eq prop 'bidi-class)
bidi-warning))))
(if (consp range)
(when val-code
(set-char-table-range table range val-code)
@ -484,7 +504,9 @@ is the character itself.")))
(setq new-val (funcall val-func (nth prop-idx elt)))
(if (not (eq val new-val))
(setq val new-val
val-code (if val (unidata-encode-val val-list val))))
val-code (if val (unidata-encode-val
val-list val (and (eq prop 'bidi-class)
bidi-warning)))))
(if val-code
(aset vec (- range start) val-code))
(setq tail (cdr tail)))
@ -962,7 +984,14 @@ is the character itself.")))
(l nil)
(idx 0)
c)
(if (= len 0)
(if (or (= len 0)
;; Unicode Standard, paragraph 4.8: "For all other
;; Unicode code points of all other types (Control,
;; Private-Use, Surrogate, Noncharacter, and Reserved),
;; the value of the Name property is the null string."
;; We already handle elsewhere all the characters except
;; Cc, Control characters, which are handled here.
(string= str "<control>"))
nil
(dotimes (i len)
(setq c (aref str i))
@ -975,11 +1004,15 @@ is the character itself.")))
idx (1+ i)))))
(nreverse (cons (intern (substring str idx)) l))))))
(defun unidata--ensure-compiled (&rest funcs)
(dolist (fun funcs)
(or (byte-code-function-p (symbol-function fun))
(byte-compile fun))))
(defun unidata-gen-table-name (prop &rest ignore)
(let* ((table (unidata-gen-table-word-list prop 'unidata-split-name))
(word-tables (char-table-extra-slot table 4)))
(byte-compile 'unidata-get-name)
(byte-compile 'unidata-put-name)
(unidata--ensure-compiled 'unidata-get-name 'unidata-put-name)
(set-char-table-extra-slot table 1 (symbol-function 'unidata-get-name))
(set-char-table-extra-slot table 2 (symbol-function 'unidata-put-name))
@ -1017,8 +1050,8 @@ is the character itself.")))
(defun unidata-gen-table-decomposition (prop &rest ignore)
(let* ((table (unidata-gen-table-word-list prop 'unidata-split-decomposition))
(word-tables (char-table-extra-slot table 4)))
(byte-compile 'unidata-get-decomposition)
(byte-compile 'unidata-put-decomposition)
(unidata--ensure-compiled 'unidata-get-decomposition
'unidata-put-decomposition)
(set-char-table-extra-slot table 1
(symbol-function 'unidata-get-decomposition))
(set-char-table-extra-slot table 2
@ -1101,6 +1134,10 @@ is the character itself.")))
(RLE . "Right-to-Left Embedding")
(RLO . "Right-to-Left Override")
(PDF . "Pop Directional Format")
(LRI . "Left-to-Right Isolate")
(RLI . "Right-to-Left Isolate")
(FSI . "First Strong Isolate")
(PDI . "Pop Directional Isolate")
(EN . "European Number")
(ES . "European Number Separator")
(ET . "European Number Terminator")
@ -1176,18 +1213,21 @@ is the character itself.")))
;; The entry function. It generates files described in the header
;; comment of this file.
(defun unidata-gen-files (&optional data-dir unidata-text-file)
;; Write files (charprop.el, uni-*.el) to dest-dir (default PWD),
;; using as input files from data-dir, and
;; unidata-text-file (default "unidata.txt" in PWD).
(defun unidata-gen-files (&optional data-dir dest-dir unidata-text-file)
(or data-dir
(setq data-dir (car command-line-args-left)
command-line-args-left (cdr command-line-args-left)
unidata-text-file (car command-line-args-left)
command-line-args-left (cdr command-line-args-left)))
(setq data-dir (pop command-line-args-left)
dest-dir (or (pop command-line-args-left) default-directory)
unidata-text-file (or (pop command-line-args-left)
(expand-file-name "unidata.txt"))))
(let ((coding-system-for-write 'utf-8-unix)
(charprop-file "charprop.el")
(charprop-file (expand-file-name "charprop.el" dest-dir))
(unidata-dir data-dir))
(dolist (elt unidata-prop-alist)
(let* ((prop (car elt))
(file (unidata-prop-file prop)))
(file (expand-file-name (unidata-prop-file prop) dest-dir)))
(if (file-exists-p file)
(delete-file file))))
(unidata-setup-list unidata-text-file)
@ -1196,7 +1236,8 @@ is the character itself.")))
(dolist (elt unidata-prop-alist)
(let* ((prop (car elt))
(generator (unidata-prop-generator prop))
(file (unidata-prop-file prop))
(file (expand-file-name (unidata-prop-file prop) dest-dir))
(basename (file-name-nondirectory file))
(docstring (unidata-prop-docstring prop))
(describer (unidata-prop-describer prop))
(default-value (unidata-prop-default prop))
@ -1204,9 +1245,9 @@ is the character itself.")))
table)
;; Filename in this comment line is extracted by sed in
;; Makefile.
(insert (format ";; FILE: %s\n" file))
(insert (format ";; FILE: %s\n" basename))
(insert (format "(define-char-code-property '%S %S\n %S)\n"
prop file docstring))
prop basename docstring))
(with-temp-buffer
(message "Generating %s..." file)
(when (file-exists-p file)
@ -1216,30 +1257,35 @@ is the character itself.")))
(setq table (funcall generator prop default-value val-list))
(when describer
(unless (subrp (symbol-function describer))
(byte-compile describer)
(unidata--ensure-compiled describer)
(setq describer (symbol-function describer)))
(set-char-table-extra-slot table 3 describer))
(if (bobp)
(insert ";; Copyright (C) 1991-2009 Unicode, Inc.
(insert ";; Copyright (C) 1991-2013 Unicode, Inc.
;; This file was generated from the Unicode data files at
;; http://www.unicode.org/Public/UNIDATA/.
;; See lisp/international/README for the copyright and permission notice.\n"))
(insert (format "(define-char-code-property '%S %S %S)\n"
(insert (format "(define-char-code-property '%S\n %S\n %S)\n"
prop table docstring))
(if (eobp)
(insert ";; Local Variables:\n"
";; coding: utf-8\n"
";; version-control: never\n"
";; no-byte-compile: t\n"
";; no-update-autoloads: t\n"
";; End:\n\n"
(format ";; %s ends here\n" file)))
(format ";; %s ends here\n" basename)))
(write-file file)
(message "Generating %s...done" file))))
(message "Writing %s..." charprop-file)
(insert ";; Local Variables:\n"
";; coding: utf-8\n"
";; version-control: never\n"
";; no-byte-compile: t\n"
";; no-update-autoloads: t\n"
";; End:\n\n"
(format ";; %s ends here\n" charprop-file)))))
(format ";; %s ends here\n"
(file-name-nondirectory charprop-file))))))

75
admin/update-copyright Executable file
View file

@ -0,0 +1,75 @@
#! /bin/sh
# Update the copyright dates in Emacs sources.
# Typical usage:
#
# admin/update-copyright
#
# By default, this script uses the local-time calendar year.
# Set the UPDATE_COPYRIGHT_YEAR environment variable to override the default.
# Copyright 2013-2014 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
# GNU Emacs is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# GNU Emacs is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
# written by Paul Eggert
# FIXME: The file 'notes/copyright' says that the AIST copyright years
# should be updated, but by inspection it appears that some should be
# updated and some should not be, due to registration numbers, so
# this script leaves these copyright years alone for now.
: ${UPDATE_COPYRIGHT_USE_INTERVALS=1}
export UPDATE_COPYRIGHT_USE_INTERVALS
: ${UPDATE_COPYRIGHT_YEAR=$(date +%Y)}
export UPDATE_COPYRIGHT_YEAR
emacsver=etc/refcards/emacsver.tex
sed 's/\\def\\year[{][0-9]*[}]/\\def\\year{'"$UPDATE_COPYRIGHT_YEAR"'}'/g \
$emacsver >$emacsver.aux &&
{ cmp -s $emacsver $emacsver.aux ||
cp $emacsver.aux $emacsver
} &&
rm $emacsver.aux &&
bzr_files=$(bzr ls -RV --kind file) &&
# Do not update the copyright of files that have one or more of the
# following problems:
# . They are license files, maintained by the FSF, with their own dates.
# . Their format cannot withstand changing the contents of copyright strings.
updatable_files=$(find $bzr_files \
! -name COPYING \
! -name doclicense.texi \
! -name gpl.texi \
! -name '*-gzipped' \
! -name '*.ico' \
! -name '*.icns' \
! -name '*.pbm' \
! -name '*.pdf' \
! -name '*.png' \
! -name '*.sig' \
! -name '*.tar' \
! -name '*.tiff' \
! -name '*.xpm' \
! -name eterm-color \
! -name hand.cur \
! -name key.pub \
! -name key.sec \
-print) &&
build-aux/update-copyright $updatable_files

View file

@ -1,7 +1,7 @@
#!/bin/bash
### update_autogen - update the generated files in Emacs autogen/ directory
### update_autogen - update some auto-generated files in the Emacs tree
## Copyright (C) 2011-2013 Free Software Foundation, Inc.
## Copyright (C) 2011-2014 Free Software Foundation, Inc.
## Author: Glenn Morris <rgm@gnu.org>
@ -22,12 +22,12 @@
### Commentary:
## This is a helper script to update the pre-built generated files in
## the autogen/ directory. This is suitable for running from cron.
## This is a helper script to update some generated files in the Emacs
## repository. This is suitable for running from cron.
## Only Emacs maintainers need use this, so it uses bash features.
##
## With the -l option, it also updates the versioned loaddefs-like
## files in lisp/. These include ldefs-boot, cl-loaddefs, rmail, etc.
## By default, it updates the versioned loaddefs-like files in lisp,
## except ldefs-boot.el.
### Code:
@ -42,24 +42,26 @@ PD=${0%/*}
[ "$PD" = "$0" ] && PD=. # if PATH includes PWD
## This should be the autogen directory.
## This should be the admin directory.
cd $PD
cd ../
[ -d autogen ] || die "Could not locate autogen directory"
[ -d admin ] || die "Could not locate admin directory"
usage ()
{
cat 1>&2 <<EOF
Usage: ${PN} [-f] [-c] [-q] [-l [-L]] [-C] [-- make-flags]
Update the generated files in the Emacs autogen/ directory.
Usage: ${PN} [-f] [-c] [-q] [-A dir] [-I] [-L] [-C] [-- make-flags]
Update some auto-generated files in the Emacs tree.
By default, only does the versioned loaddefs-like files in lisp/.
This requires a build. Passes any non-option args to make (eg -- -j2).
Options:
-f: force an update even if the source files are locally modified.
-c: if the update succeeds and the generated files are modified,
commit them (caution).
-q: be quiet; only give error messages, not status messages.
-l: also update the versioned loaddefs-like files in lisp/.
This requires a build. Passes any non-option args to make (eg -- -j2).
-A: only update autotools files, copying into specified dir.
-I: also update info/dir.
-L: also update ldefs-boot.el.
-C: start from a clean state. Slower, but more correct.
EOF
@ -73,18 +75,24 @@ force=
commit=
quiet=
clean=
ldefs_flag=
autogendir= # was "autogen"
ldefs_flag=1
lboot_flag=
info_flag=
## Parameters.
ldefs_in=lisp/loaddefs.el
ldefs_out=lisp/ldefs-boot.el
sources="configure.ac lib/Makefile.am"
## Files to copy into autogendir.
## Everything:
genfiles="
configure aclocal.m4 src/config.in lib/Makefile.in
build-aux/compile build-aux/config.guess build-aux/config.sub
build-aux/depcomp build-aux/install-sh build-aux/missing
"
## msdos-only:
genfiles="src/config.in lib/Makefile.in"
for g in $genfiles; do
basegen="$basegen ${g##*/}"
@ -97,7 +105,7 @@ tempfile=/tmp/$PN.$$
trap "rm -f $tempfile 2> /dev/null" EXIT
while getopts ":hcflqCL" option ; do
while getopts ":hcfqA:CIL" option ; do
case $option in
(h) usage ;;
@ -105,12 +113,16 @@ while getopts ":hcflqCL" option ; do
(f) force=1 ;;
(l) ldefs_flag=1 ;;
(q) quiet=1 ;;
(A) autogendir=$OPTARG
[ -d "$autogendir" ] || die "No autogen directory: $autogendir"
;;
(C) clean=1 ;;
(I) info_flag=1 ;;
(L) lboot_flag=1 ;;
(\?) die "Bad option -$OPTARG" ;;
@ -128,23 +140,36 @@ OPTIND=1
[ "$quiet" ] && exec 1> /dev/null
echo "Running bzr status..."
## Run status on inputs, list modified files on stdout.
status ()
{
bzr status -S "$@" >| $tempfile || die "bzr status error for $@"
bzr status -S $sources ${ldefs_flag:+lisp} >| $tempfile || \
die "bzr status error for sources"
local stat file modified
while read stat file; do
[ "$stat" != "M" ] && \
die "Unexpected status ($stat) for generated $file"
modified="$modified $file"
done < $tempfile
echo "$modified"
return 0
} # function status
echo "Checking input file status..."
## The lisp portion could be more permissive, eg only care about .el files.
while read stat file; do
modified=$(status ${autogendir:+$sources} ${ldefs_flag:+lisp} ${info_flag:+doc}) || die
case $stat in
M)
echo "Locally modified: $file"
[ "$force" ] || die "There are local modifications"
;;
*) die "Unexpected status ($stat) for $file" ;;
esac
done < $tempfile
[ "$modified" ] && {
echo "Locally modified: $modified"
[ "$force" ] || die "There are local modifications"
}
## Probably this is overkill, and there's no need to "bootstrap" just
@ -175,31 +200,6 @@ fi
[ $retval -ne 0 ] && die "autoreconf error"
cp $genfiles autogen/
cd autogen
echo "Checking status of generated files..."
bzr status -S $basegen >| $tempfile || \
die "bzr status error for generated files"
modified=
while read stat file; do
[ "$stat" != "M" ] && die "Unexpected status ($stat) for generated $file"
modified="$modified $file"
done < $tempfile
cd ../
## Uses global $commit.
commit ()
{
@ -224,7 +224,82 @@ commit ()
} # function commit
commit "generated" $modified || die "bzr commit error"
## No longer used since info/dir is now generated at install time if needed,
## and is not in the repository any more.
info_dir ()
{
local basefile=build-aux/dir_top outfile=info/dir
echo "Regenerating info/dir..."
## Header contains non-printing characters, so this is more
## reliable than using echo.
rm -f $outfile
cp $basefile $outfile
local topic file dircat dirent
## FIXME inefficient looping.
for topic in "Texinfo documentation system" "Emacs" "GNU Emacs Lisp" \
"Emacs editing modes" "Emacs network features" "Emacs misc features" \
"Emacs lisp libraries"; do
cat - <<EOF >> $outfile
$topic
EOF
## Bit faster than doc/*/*.texi.
for file in doc/emacs/emacs.texi doc/lispintro/*.texi \
doc/lispref/elisp.texi doc/misc/*.texi; do
## FIXME do not ignore w32 if OS is w32.
case $file in
*-xtra.texi|*efaq-w32.texi) continue ;;
esac
dircat=`sed -n -e 's/@value{emacsname}/Emacs/' -e 's/^@dircategory //p' $file`
## TODO warn about unknown topics (check-info in top-level
## Makefile does this).
[ "$dircat" = "$topic" ] || continue
sed -n -e 's/@value{emacsname}/Emacs/' \
-e 's/@acronym{\([A-Z]*\)}/\1/' \
-e '/^@direntry/,/^@end direntry/ s/^\([^@]\)/\1/p' \
$file >> $outfile
done
done
local modified
modified=$(status $outfile) || die
commit "info/dir" $modified || die "commit error"
} # function info_dir
[ "$autogendir" ] && {
oldpwd=$PWD
cp $genfiles $autogendir/
cd $autogendir || die "cd error for $autogendir"
echo "Checking status of generated files..."
modified=$(status $basegen) || die
cd $oldpwd
commit "generated" $modified || die "commit error"
exit 0
} # $autogendir
[ "$info_flag" ] && info_dir
[ "$ldefs_flag" ] || exit 0
@ -232,8 +307,9 @@ commit "generated" $modified || die "bzr commit error"
echo "Finding loaddef targets..."
sed -n -e '/^AUTOGEN_VCS/,/^$/ s/\\//p' lisp/Makefile.in | \
sed '/AUTOGEN_VCS/d' >| $tempfile || die "sed error"
sed -n -e '/^AUTOGEN_VCS/,/^$/p' lisp/Makefile.in | \
sed -e '/AUTOGEN_VCS/d' -e '/^$/d' -e 's/\\//' \
>| $tempfile || die "sed error"
genfiles=
@ -285,24 +361,13 @@ echo "Checking status of loaddef files..."
## It probably would be fine to just check+commit lisp/, since
## making autoloads should not effect any other files. But better
## safe than sorry.
bzr status -S $genfiles ${ldefs_out#lisp/} >| $tempfile || \
die "bzr status error for generated files"
modified=
while read stat file; do
[ "$stat" != "M" ] && die "Unexpected status ($stat) for generated $file"
modified="$modified $file"
done < $tempfile
modified=$(status $genfiles ${ldefs_out#lisp/}) || die
cd ../
commit "loaddefs" $modified || die "bzr commit error"
commit "loaddefs" $modified || die "commit error"
exit 0

View file

@ -1,9 +1,10 @@
#!/bin/sh
### autogen.sh - tool to help build Emacs from a bzr checkout
## Copyright (C) 2011-2013 Free Software Foundation, Inc.
## Copyright (C) 2011-2014 Free Software Foundation, Inc.
## Author: Glenn Morris <rgm@gnu.org>
## Maintainer: emacs-devel@gnu.org
## This file is part of GNU Emacs.
@ -25,7 +26,7 @@
## The Emacs bzr repository does not include the configure script
## (and associated helpers). The first time you fetch Emacs from bzr,
## run this script to generate the necessary files.
## For more details, see the file INSTALL.BZR.
## For more details, see the file INSTALL.REPO.
### Code:
@ -105,7 +106,7 @@ check_version ()
cat <<EOF
Checking whether you have the necessary tools...
(Read INSTALL.BZR for more details on building Emacs)
(Read INSTALL.REPO for more details on building Emacs)
EOF
@ -191,13 +192,6 @@ autoreconf -i -I m4
instead of this script.
If all else fails, you can try using the pre-built versions of the
generated files by doing:
./autogen/copy_autogen
This is not recommended - see the comments in \`copy_autogen'.
Please report any problems with this script to bug-gnu-emacs@gnu.org .
EOF

File diff suppressed because it is too large Load diff

View file

@ -1,20 +0,0 @@
This directory contains some pre-built generated files.
Most people do not need to use these files - instead you should
generate them yourself using eg `autogen.sh'.
File: Destination: Created by:
configure ../ autoconf
config.in ../src autoheader * also used by MSDOS bzr build
aclocal.m4 ../ aclocal
Makefile.in ../lib automake
compile ../build-aux automake
config.guess ../build-aux automake
config.sub ../build-aux automake
depcomp ../build-aux automake
install-sh ../build-aux automake
missing ../build-aux automake
There are also some scripts:
copy_autogen - copy pre-built generated files into place
update_autogen - regenerate generated files (for maintainers)

1070
autogen/aclocal.m4 vendored

File diff suppressed because it is too large Load diff

View file

@ -1,143 +0,0 @@
#! /bin/sh
# Wrapper for compilers which do not understand `-c -o'.
scriptversion=2009-10-06.20; # UTC
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software
# Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# 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, 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, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand `-c -o'.
Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file `INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
esac
ofile=
cfile=
eat=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as `compile cc -o foo foo.c'.
# So we strip `-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no `-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# `.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
# Note: use `[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

1533
autogen/config.guess vendored

File diff suppressed because it is too large Load diff

1693
autogen/config.sub vendored

File diff suppressed because it is too large Load diff

28329
autogen/configure vendored

File diff suppressed because it is too large Load diff

View file

@ -1,27 +0,0 @@
#!/bin/sh
## Helper script for those building Emacs from bzr without autoconf etc.
## This installs some pre-generated versions of the automatically
## generated files. It is highly recommended to install the necessary
## tools instead of using this. Note that if eg configure.ac
## is updated, the next time you run make it will attempt to
## regenerate configure and will fail if you do not have the required
## tools. You will have to run this script again.
test ! -d autogen || cd autogen || exit
if test ! -e config.in; then
echo "Cannot find autogen/ directory."
exit 1
fi
## Order implied by top-level Makefile's rules, for time-stamps.
cp -f compile config.guess config.sub depcomp install-sh missing \
../build-aux &&
cp aclocal.m4 ../ &&
cp configure ../ &&
touch ../src/stamp-h.in &&
cp config.in ../src/ &&
cp Makefile.in ../lib/ &&
echo "You can now run configure"

View file

@ -1,630 +0,0 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2009-04-28.21; # UTC
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
# Software Foundation, Inc.
# 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, 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, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by `PROGRAMS ARGS'.
object Object file output by `PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputing dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
# This is just like msvisualcpp but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u="sed s,\\\\\\\\,/,g"
depmode=msvisualcpp
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> "$depfile"
echo >> "$depfile"
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts `$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
tmpdepfile3=$dir.libs/$base.u
"$@" -Wc,-M
else
tmpdepfile1=$dir$base.u
tmpdepfile2=$dir$base.u
tmpdepfile3=$dir$base.u
"$@" -M
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
icc)
# Intel's C compiler understands `-MD -MF file'. However on
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
# which is wrong. We want:
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using \ :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
# Add `dependent.h:' lines.
sed -ne '2,${
s/^ *//
s/ \\*$//
s/$/:/
p
}' "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
# static library. This mechanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
# compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
tmpdepfile2=$dir$base.o.d # libtool 1.5
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.o.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
tmpdepfile4=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for `:'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
"$@" $dashmflag |
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no eat=no
for arg
do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
if test $eat = yes; then
eat=no
continue
fi
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-arch)
eat=yes ;;
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix=`echo "$object" | sed 's/^.*\././'`
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
sed '1,2d' "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E |
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
IFS=" "
for arg
do
case "$arg" in
-o)
shift
;;
$object)
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E 2>/dev/null |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvcmsys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

View file

@ -1,520 +0,0 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2009-04-28.21; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
nl='
'
IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
if test -z "$doit"; then
doit_exec=exec
else
doit_exec=$doit
fi
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_glob='?'
initialize_posix_glob='
test "$posix_glob" != "?" || {
if (set -f) 2>/dev/null; then
posix_glob=
else
posix_glob=:
fi
}
'
posix_mkdir=
# Desired mode of installed file.
mode=0755
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
no_target_directory=
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve the last data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *' '* | *'
'* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
shift;;
-T) no_target_directory=true;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call `install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
trap '(exit $?); exit' 1 2 13 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names starting with `-'.
case $src in
-*) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
# Prefer dirname, but fall back on a substitute if dirname fails.
dstdir=`
(dirname "$dst") 2>/dev/null ||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$dst" : 'X\(//\)[^/]' \| \
X"$dst" : 'X\(//\)$' \| \
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$dst" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'
`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writeable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
-*) prefix='./';;
*) prefix='';;
esac
eval "$initialize_posix_glob"
oIFS=$IFS
IFS=/
$posix_glob set -f
set fnord $dstdir
shift
$posix_glob set +f
IFS=$oIFS
prefixes=
for d
do
test -z "$d" && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
eval "$initialize_posix_glob" &&
$posix_glob set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
$posix_glob set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

View file

@ -1,376 +0,0 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
scriptversion=2009-04-28.21; # UTC
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
# 2008, 2009 Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# 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, 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, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
run=:
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
msg="missing on your system"
case $1 in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
"$@" && exit 0
# Exit code 63 means version mismatch. This often happens
# when the user try to use an ancient version of a tool on
# a file that requires a minimum version. In this case we
# we should proceed has if the program had been absent, or
# if --run hadn't been passed.
if test $? = 63; then
run=:
msg="probably too old"
fi
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
\`g' are ignored when checking the name.
Send bug reports to <bug-automake@gnu.org>."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
esac
# normalize program name to check for.
program=`echo "$1" | sed '
s/^gnu-//; t
s/^gnu//; t
s/^g//; t'`
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program). This is about non-GNU programs, so use $1 not
# $program.
case $1 in
lex*|yacc*)
# Not GNU programs, they don't have --version.
;;
tar*)
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
exit 1
fi
;;
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
# Could not run --version or --help. This is probably someone
# running `$TOOL --version' or `$TOOL --help' to check whether
# $TOOL exists and not knowing $TOOL uses missing.
exit 1
fi
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case $program in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
case $f in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
esac
done
touch $touch_files
;;
automake*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
while read f; do touch "$f"; done
;;
autom4te*)
echo 1>&2 "\
WARNING: \`$1' is needed, but is $msg.
You might have modified some files without having the
proper tools for further handling them.
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo "#! /bin/sh"
echo "# Created by GNU Automake missing as a replacement of"
echo "# $ $@"
echo "exit 0"
chmod +x $file
exit 1
fi
;;
bison*|yacc*)
echo 1>&2 "\
WARNING: \`$1' $msg. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if test ! -f y.tab.h; then
echo >y.tab.h
fi
if test ! -f y.tab.c; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex*|flex*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if test ! -f lex.yy.c; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
help2man*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit $?
fi
;;
makeinfo*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '
/^@setfilename/{
s/.* \([^ ]*\) *$/\1/
p
q
}' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
# If the file does not exist, the user really needs makeinfo;
# let's fail without touching anything.
test -f $file || exit 1
touch $file
;;
tar*)
shift
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar "$@" && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar "$@" && exit 0
fi
firstarg="$1"
if shift; then
case $firstarg in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
case $firstarg in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and is $msg.
You might have modified some files without having the
proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequisites for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program."
exit 1
;;
esac
exit 0
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

20
build-aux/dir_top Normal file
View file

@ -0,0 +1,20 @@
This is the file .../info/dir, which contains the
topmost node of the Info hierarchy, called (dir)Top.
The first time you invoke Info you start off looking at this node.

File: dir, Node: Top This is the top of the INFO tree
The Info Directory
******************
The Info Directory is the top-level menu of major Info topics.
Type "d" in Info to return to the Info Directory. Type "q" to exit Info.
Type "?" for a list of Info commands, or "h" to visit an Info tutorial.
Type "m" to choose a menu item--for instance,
"mEmacs<Return>" visits the Emacs manual.
In Emacs Info, you can click mouse button 2 on a menu item
or cross reference to follow it to its target.
Each menu line that starts with a * is a topic you can select with "m".
Every third topic has a red * to help pick the right number to type.
* Menu:

106
build-aux/make-info-dir Executable file
View file

@ -0,0 +1,106 @@
#!/bin/sh
### make-info-dir - create info/dir, for systems without install-info
## Copyright (C) 2013-2014 Free Software Foundation, Inc.
## Author: Glenn Morris <rgm@gnu.org>
## Maintainer: emacs-devel@gnu.org
## This file is part of GNU Emacs.
## GNU Emacs is free software: you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
## GNU Emacs is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
## You should have received a copy of the GNU General Public License
## along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
### Commentary:
## Generate info/dir, for systems without install-info.
## Expects to be called from top-level Emacs source directory.
## It only handles the case where info/dir is missing from the
## installation directory. It does not handle info/dir being present
## but missing some entries.
### Code:
if test $# -ne 1; then
echo "Specify destination file"
exit 1
fi
outfile=$1
echo "Creating $outfile..."
if test -f "$outfile"; then
echo "$outfile already present"
exit 1
fi
## Header contains non-printing characters, so this is more
## reliable than using echo.
basefile=build-aux/dir_top
if test ! -f "$basefile"; then
echo "$basefile not found"
exit 1
fi
cp $basefile $outfile
## FIXME inefficient looping.
## What we should do is loop once over files, collecting topic and
## direntry information for each. Then loop over topics and write
## out the results. But that seems to require associative arrays,
## and I do not know how to do that with portable sh.
## Could use Emacs instead of sh, but till now info generation does
## not require Emacs to have been built.
for topic in "Texinfo documentation system" "Emacs" "Emacs lisp" \
"Emacs editing modes" "Emacs network features" "Emacs misc features" \
"Emacs lisp libraries"; do
cat - <<EOF >> $outfile
$topic
EOF
## Bit faster than doc/*/*.texi.
for file in doc/emacs/emacs.texi doc/lispintro/emacs-lisp-intro.texi \
doc/lispref/elisp.texi doc/misc/*.texi; do
## FIXME do not ignore w32 if OS is w32.
case $file in
*-xtra.texi|*efaq-w32.texi|*doclicense.texi) continue ;;
esac
dircat=`sed -n -e 's/@value{emacsname}/Emacs/' -e 's/^@dircategory //p' $file`
## TODO warn about unknown topics.
## (check-info in top-level Makefile does that.)
test "$dircat" = "$topic" || continue
sed -n -e 's/@value{emacsname}/Emacs/' \
-e 's/@acronym{\([A-Z]*\)}/\1/' \
-e '/^@direntry/,/^@end direntry/ s/^\([^@]\)/\1/p' \
$file >> $outfile
done
done
echo "Created $outfile"
exit 0
### make-info-dir ends here

View file

@ -8,7 +8,7 @@ VERSION='2012-01-06 07:23'; # UTC
# If you change this file with Emacs, please let the write hook
# do its job. Otherwise, update this string manually.
# Copyright (C) 2002-2013 Free Software Foundation, Inc.
# Copyright (C) 2002-2014 Free Software Foundation, Inc.
# 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

170
build-aux/msys-to-w32 Executable file
View file

@ -0,0 +1,170 @@
#!/bin/sh
# Take a list of MSYS-compatible paths and convert them to native
# MS-Windows format.
# Status is zero if successful, nonzero otherwise.
# Copyright (C) 2013-2014 Free Software Foundation, Inc.
# 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 3 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, see <http://www.gnu.org/licenses/>.
# Take only the basename from the full pathname
me=${0//*\//}
usage="usage: ${me} PATHLIST [MUSTEXIST] [SEPARATOR [SEPARATOR2]]"
help="$usage
or: ${me} OPTION
Convert MSYS-compatible paths to MS-Windows native format.
PATHLIST should be a list of paths separated by SEPARATOR. This list
will be written to the standard output after performing the following
transformations:
1. Discard empty paths.
2. Replace backslashes with forward slashes.
3. Replace two consecutive slashes with single ones.
4. Translate to Windows-native format those paths that are not in such
format already. The translated paths will not end with a slash,
except for root directories (e.g. 'c:/' or 'c:/foo'). Paths
starting with '%emacs_dir%' will not be translated.
5. Escape with backslashes every occurrence of SEPARATOR2 within the paths.
6. Concatenate the translated paths with SEPARATOR2.
If MUSTEXIST is 'Y' or not supplied, then each path in PATHLIST must
exist. Otherwise, only some part of each path is required to exist
(the deepest existing subpath will be translated and the remainder
concatenated to the translation).
If SEPARATOR is not supplied, PATHLIST will be regarded as a single
path.
If SEPARATOR2 is not supplied, it will take the same value as
SEPARATOR.
Options:
--help display this help and exit
Report bugs to <bug-gnu-emacs@gnu.org>."
for arg
do
case $arg in
--help | --hel | --he | --h)
exec echo "$help" ;;
--)
shift
break ;;
-*)
echo "${me}: invalid option: $arg" >&2
exit 1 ;;
*)
break ;;
esac
done
{ test $# -ge 1 && test $# -le 4; } ||
{ echo "${me}: $usage" >&2; exit 1; }
# Arguments
pathlist="$1"
mustexist="${2:-Y}"
separator="$3"
separator2="${4:-${separator}}"
# Split pathlist into its path components
if test -n "$separator"
then
IFS=${separator} patharray=( $pathlist )
else
patharray=( "$pathlist" )
fi
w32pathlist=""
for p in "${patharray[@]}"
do
# Skip empty paths
test "$p" = "" && continue
# Replace '\' with '/' and '//' with '/'
p="${p//\\//}"
p="${p//\/\///}"
if test "${p:0:11}" = "%emacs_dir%"
then
# Paths starting with "%emacs_dir%" will not be translated
w32p=$p
elif test -d "$p"
then
# The path exists, so just translate it
w32p=`cd "$p" && pwd -W`
else
# The path does not exist. So, try to guess the
# Windows-native translation, by looking for the deepest
# existing directory in this path, and then translating the
# existing part and concatenating the remainder.
test "${mustexist}" = "Y" &&
{ echo "${me}: invalid path: $p" >&2; exit 1; }
p1=$p
IFS=/ pcomponents=( $p )
for (( i=${#pcomponents[@]}-1 ; i>=0 ; i-- ))
do
if test "${pcomponents[i]}" = ""
then
# The path component is empty. This can only mean
# that the path starts with "/" and all components
# have been stripped out already. So in this case we
# want to test with the MSYS root directory
p1="/"
else
p1="${p1%/}"
p1="${p1%${pcomponents[i]}}"
fi
if test -d "${p1}"
then
# Existing path found
# Translate the existing part and concatenate the
# remainder (ensuring that only one slash is used in
# the join, and no trailing slash is left)
w32p1=`cd "${p1}" && pwd -W`
remainder="${p#${p1}}"
remainder="${remainder#/}"
remainder="${remainder%/}"
w32p="${w32p1%/}/${remainder}"
break
fi
done
# If no existing directory was found, error out
test -e "${p1}" ||
{ echo "${me}: invalid path: ${p}" >&2; exit 1; }
fi
# Concatenate the translated path to the translated pathlist
test "${w32pathlist}" = "" || w32pathlist="${w32pathlist}${separator2}"
w32pathlist="${w32pathlist}${w32p//${separator2}/\\${separator2}}"
done
# Write the translated pathlist to the standard output
printf "%s" "${w32pathlist}"

View file

@ -1,5 +1,5 @@
/* A C macro for declaring that specific arguments must not be NULL.
Copyright (C) 2009-2013 Free Software Foundation, Inc.
Copyright (C) 2009-2014 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published

View file

@ -1,5 +1,5 @@
/* C++ compatible function declaration macros.
Copyright (C) 2010-2013 Free Software Foundation, Inc.
Copyright (C) 2010-2014 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published

View file

@ -1,5 +1,5 @@
/* A C macro for emitting warnings if a function is used.
Copyright (C) 2010-2013 Free Software Foundation, Inc.
Copyright (C) 2010-2014 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published

274
build-aux/update-copyright Executable file
View file

@ -0,0 +1,274 @@
eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" ${1+"$@"}'
& eval 'exec perl -wS -0777 -pi "$0" $argv:q'
if 0;
# Update an FSF copyright year list to include the current year.
my $VERSION = '2013-01-03.09:41'; # UTC
# Copyright (C) 2009-2014 Free Software Foundation, Inc.
#
# 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 3, 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, see <http://www.gnu.org/licenses/>.
# Written by Jim Meyering and Joel E. Denny
# The arguments to this script should be names of files that contain
# copyright statements to be updated. The copyright holder's name
# defaults to "Free Software Foundation, Inc." but may be changed to
# any other name by using the "UPDATE_COPYRIGHT_HOLDER" environment
# variable.
#
# For example, you might wish to use the update-copyright target rule
# in maint.mk from gnulib's maintainer-makefile module.
#
# Iff a copyright statement is recognized in a file and the final
# year is not the current year, then the statement is updated for the
# new year and it is reformatted to:
#
# 1. Fit within 72 columns.
# 2. Convert 2-digit years to 4-digit years by prepending "19".
# 3. Expand copyright year intervals. (See "Environment variables"
# below.)
#
# A warning is printed for every file for which no copyright
# statement is recognized.
#
# Each file's copyright statement must be formatted correctly in
# order to be recognized. For example, each of these is fine:
#
# Copyright @copyright{} 1990-2005, 2007-2009 Free Software
# Foundation, Inc.
#
# # Copyright (C) 1990-2005, 2007-2009 Free Software
# # Foundation, Inc.
#
# /*
# * Copyright &copy; 90,2005,2007-2009
# * Free Software Foundation, Inc.
# */
#
# However, the following format is not recognized because the line
# prefix changes after the first line:
#
# ## Copyright (C) 1990-2005, 2007-2009 Free Software
# # Foundation, Inc.
#
# However, any correctly formatted copyright statement following
# a non-matching copyright statements would be recognized.
#
# The exact conditions that a file's copyright statement must meet
# to be recognized are:
#
# 1. It is the first copyright statement that meets all of the
# following conditions. Subsequent copyright statements are
# ignored.
# 2. Its format is "Copyright (C)", then a list of copyright years,
# and then the name of the copyright holder.
# 3. The "(C)" takes one of the following forms or is omitted
# entirely:
#
# A. (C)
# B. (c)
# C. @copyright{}
# D. &copy;
#
# 4. The "Copyright" appears at the beginning of a line, except that it
# may be prefixed by any sequence (e.g., a comment) of no more than
# 5 characters -- including white space.
# 5. Iff such a prefix is present, the same prefix appears at the
# beginning of each remaining line within the FSF copyright
# statement. There is one exception in order to support C-style
# comments: if the first line's prefix contains nothing but
# whitespace surrounding a "/*", then the prefix for all subsequent
# lines is the same as the first line's prefix except with each of
# "/" and possibly "*" replaced by a " ". The replacement of "*"
# by " " is consistent throughout all subsequent lines.
# 6. Blank lines, even if preceded by the prefix, do not appear
# within the FSF copyright statement.
# 7. Each copyright year is 2 or 4 digits, and years are separated by
# commas or dashes. Whitespace may appear after commas.
#
# Environment variables:
#
# 1. If UPDATE_COPYRIGHT_FORCE=1, a recognized FSF copyright statement
# is reformatted even if it does not need updating for the new
# year. If unset or set to 0, only updated FSF copyright
# statements are reformatted.
# 2. If UPDATE_COPYRIGHT_USE_INTERVALS=1, every series of consecutive
# copyright years (such as 90, 1991, 1992-2007, 2008) in a
# reformatted FSF copyright statement is collapsed to a single
# interval (such as 1990-2008). If unset or set to 0, all existing
# copyright year intervals in a reformatted FSF copyright statement
# are expanded instead.
# If UPDATE_COPYRIGHT_USE_INTERVALS=2, convert a sequence with gaps
# to the minimal containing range. For example, convert
# 2000, 2004-2007, 2009 to 2000-2009.
# 3. For testing purposes, you can set the assumed current year in
# UPDATE_COPYRIGHT_YEAR.
# 4. The default maximum line length for a copyright line is 72.
# Set UPDATE_COPYRIGHT_MAX_LINE_LENGTH to use a different length.
# 5. Set UPDATE_COPYRIGHT_HOLDER if the copyright holder is other
# than "Free Software Foundation, Inc.".
use strict;
use warnings;
my $copyright_re = 'Copyright';
my $circle_c_re = '(?:\([cC]\)|@copyright{}|&copy;)';
my $holder = $ENV{UPDATE_COPYRIGHT_HOLDER};
$holder ||= 'Free Software Foundation, Inc.';
my $prefix_max = 5;
my $margin = $ENV{UPDATE_COPYRIGHT_MAX_LINE_LENGTH};
!$margin || $margin !~ m/^\d+$/
and $margin = 72;
my $tab_width = 8;
my $this_year = $ENV{UPDATE_COPYRIGHT_YEAR};
if (!$this_year || $this_year !~ m/^\d{4}$/)
{
my ($sec, $min, $hour, $mday, $month, $year) = localtime (time ());
$this_year = $year + 1900;
}
# Unless the file consistently uses "\r\n" as the EOL, use "\n" instead.
my $eol = /(?:^|[^\r])\n/ ? "\n" : "\r\n";
my $leading;
my $prefix;
my $ws_re;
my $stmt_re;
while (/(^|\n)(.{0,$prefix_max})$copyright_re/g)
{
$leading = "$1$2";
$prefix = $2;
if ($prefix =~ /^(\s*\/)\*(\s*)$/)
{
$prefix =~ s,/, ,;
my $prefix_ws = $prefix;
$prefix_ws =~ s/\*/ /; # Only whitespace.
if (/\G(?:[^*\n]|\*[^\/\n])*\*?\n$prefix_ws/)
{
$prefix = $prefix_ws;
}
}
$ws_re = '[ \t\r\f]'; # \s without \n
$ws_re =
"(?:$ws_re*(?:$ws_re|\\n" . quotemeta($prefix) . ")$ws_re*)";
my $holder_re = $holder;
$holder_re =~ s/\s/$ws_re/g;
my $stmt_remainder_re =
"(?:$ws_re$circle_c_re)?"
. "$ws_re(?:(?:\\d\\d)?\\d\\d(?:,$ws_re?|-))*"
. "((?:\\d\\d)?\\d\\d)$ws_re$holder_re";
if (/\G$stmt_remainder_re/)
{
$stmt_re =
quotemeta($leading) . "($copyright_re$stmt_remainder_re)";
last;
}
}
if (defined $stmt_re)
{
/$stmt_re/ or die; # Should never die.
my $stmt = $1;
my $final_year_orig = $2;
# Handle two-digit year numbers like "98" and "99".
my $final_year = $final_year_orig;
$final_year <= 99
and $final_year += 1900;
if ($final_year != $this_year)
{
# Update the year.
$stmt =~ s/\b$final_year_orig\b/$final_year, $this_year/;
}
if ($final_year != $this_year || $ENV{'UPDATE_COPYRIGHT_FORCE'})
{
# Normalize all whitespace including newline-prefix sequences.
$stmt =~ s/$ws_re/ /g;
# Put spaces after commas.
$stmt =~ s/, ?/, /g;
# Convert 2-digit to 4-digit years.
$stmt =~ s/(\b\d\d\b)/19$1/g;
# Make the use of intervals consistent.
if (!$ENV{UPDATE_COPYRIGHT_USE_INTERVALS})
{
$stmt =~ s/(\d{4})-(\d{4})/join(', ', $1..$2)/eg;
}
else
{
$stmt =~
s/
(\d{4})
(?:
(,\ |-)
((??{
if ($2 eq '-') { '\d{4}'; }
elsif (!$3) { $1 + 1; }
else { $3 + 1; }
}))
)+
/$1-$3/gx;
# When it's 2, emit a single range encompassing all year numbers.
$ENV{UPDATE_COPYRIGHT_USE_INTERVALS} == 2
and $stmt =~ s/\b(\d{4})\b.*\b(\d{4})\b/$1-$2/;
}
# Format within margin.
my $stmt_wrapped;
my $text_margin = $margin - length($prefix);
if ($prefix =~ /^(\t+)/)
{
$text_margin -= length($1) * ($tab_width - 1);
}
while (length $stmt)
{
if (($stmt =~ s/^(.{1,$text_margin})(?: |$)//)
|| ($stmt =~ s/^([\S]+)(?: |$)//))
{
my $line = $1;
$stmt_wrapped .= $stmt_wrapped ? "$eol$prefix" : $leading;
$stmt_wrapped .= $line;
}
else
{
# Should be unreachable, but we don't want an infinite
# loop if it can be reached.
die;
}
}
# Replace the old copyright statement.
s/$stmt_re/$stmt_wrapped/;
}
}
else
{
print STDERR "$ARGV: warning: copyright statement not found\n";
}
# Local variables:
# mode: perl
# indent-tabs-mode: nil
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "my $VERSION = '"
# time-stamp-format: "%:y-%02m-%02d.%02H:%02M"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "'; # UTC"
# End:

View file

@ -1,7 +1,7 @@
#!/bin/sh
# Write into $1/subdirs.el a list of subdirs of directory $1.
# Copyright (C) 1994-1995, 1997, 1999, 2001-2013 Free Software
# Copyright (C) 1994-1995, 1997, 1999, 2001-2014 Free Software
# Foundation, Inc.
# This file is part of GNU Emacs.
@ -20,7 +20,7 @@
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
cd $1
cd "$1" || exit 1
for file in *; do
case $file in
*.elc | *.el | term | RCS | CVS | Old | . | .. | =* | *~ | *.orig | *.rej)
@ -49,8 +49,8 @@ else
;; no-byte-compile: t
;; End:" > subdirs.el~
if cmp "subdirs.el" "subdirs.el~" >/dev/null 2>&1; then
:; # echo "subdirs.el unchanged";
rm subdirs.el~
else
mv subdirs.el~ subdirs.el
mv subdirs.el~ subdirs.el
fi
fi

View file

@ -1,7 +1,7 @@
@echo off
rem ----------------------------------------------------------------------
rem Configuration script for MSDOS
rem Copyright (C) 1994-1999, 2001-2013 Free Software Foundation, Inc.
rem Copyright (C) 1994-1999, 2001-2014 Free Software Foundation, Inc.
rem This file is part of GNU Emacs.
@ -155,10 +155,10 @@ rm -f epaths.tmp
rem Create "config.h"
rm -f config.h2 config.tmp
if exist config.in sed -e '' config.in > config.tmp
if exist ..\autogen\config.in sed -e '' ../autogen/config.in > config.tmp
if exist ..\msdos\autogen\config.in sed -e '' ../msdos/autogen/config.in > config.tmp
if "%X11%" == "" goto src4
if exist config.in sed -f ../msdos/sed2x.inp < config.in > config.tmp
if exist ..\autogen\config.in sed -f ../msdos/sed2x.inp < ..\autogen\config.in > config.tmp
if exist ..\msdos\autogen\config.in sed -f ../msdos/sed2x.inp < ..\msdos\autogen\config.in > config.tmp
:src4
sed -f ../msdos/sed2v2.inp <config.tmp >config.h2
Rem See if they have libxml2 later than v2.2.0 installed
@ -279,7 +279,7 @@ If Exist sys_types.in.h update sys_types.in.h sys_types.in-h
If Exist time.in.h update time.in.h time.in-h
If Exist unistd.in.h update unistd.in.h unistd.in-h
If Exist Makefile.in sed -f ../msdos/sedlibcf.inp < Makefile.in > makefile.tmp
If Exist ..\autogen\Makefile.in sed -f ../msdos/sedlibcf.inp < ..\autogen\Makefile.in > makefile.tmp
If Exist ..\msdos\autogen\Makefile.in sed -f ../msdos/sedlibcf.inp < ..\msdos\autogen\Makefile.in > makefile.tmp
sed -f ../msdos/sedlibmk.inp < makefile.tmp > Makefile
rm -f makefile.tmp
Rem Create .Po files for new files in lib/

File diff suppressed because it is too large Load diff

View file

@ -1,3 +1,596 @@
2014-02-23 Glenn Morris <rgm@gnu.org>
* rmail.texi (Rmail Inbox): Mention rmail-mbox-format.
2014-02-20 Glenn Morris <rgm@gnu.org>
* search.texi (Special Isearch): Mention invisible text.
* text.texi (Outline Visibility): Mention `M-s i' in isearch.
2014-02-18 Glenn Morris <rgm@gnu.org>
* trouble.texi (Contributing) [WWW_GNU_ORG]: Link to
gnu.org version of etc/CONTRIBUTE in html output.
* misc.texi (Saving Emacs Sessions): Mention desktop-auto-save-timeout.
2014-02-17 Stefan Monnier <monnier@iro.umontreal.ca>
* programs.texi (Matching): Fix typo.
* killing.texi (CUA Bindings): Document the new relationship between
cua-mode and delete-selection mode.
(CUA Bindings): Mention that rectangle mode can be used on its own.
2014-02-14 Glenn Morris <rgm@gnu.org>
* regs.texi (Configuration Registers): Update C-x r f binding.
2014-02-12 Glenn Morris <rgm@gnu.org>
* mini.texi (Completion Options): No longer mention icomplete,
which has its own section now.
* modes.texi (Minor Modes): Update Icomplete xref.
* help.texi (Package Keywords): Mention describe-package buttons.
* package.texi (Package Menu): Mention package-menu-filter.
2014-02-11 Lars Ingebrigtsen <larsi@gnus.org>
* text.texi (Editing Format Info): Use @samp for menus (bug#13736).
2014-02-09 Lars Ingebrigtsen <larsi@gnus.org>
* dired.texi (Hiding Subdirectories): Mention the node for
deleting subdirectories (bug#11743).
2014-02-09 Glenn Morris <rgm@gnu.org>
* programs.texi (MixedCase Words): Rename node from "Glasses".
Move Subword mode here from "Other C Commands" node.
(Misc for Programs): Mention Superword mode.
* emacs.texi: Update menu.
2014-02-08 Lars Ingebrigtsen <larsi@gnus.org>
* regs.texi (File Registers): Clarify metasyntactical variables
(bug#13565).
* search.texi (Search Case): Rearrange text slightly to make it
obvious that `M-c' also toggles sensitivity if `case-fold-search'
is nil (bug#14726).
* frames.texi (Mouse Commands): Clarify `mouse-yank-at-click'
(bug#16376).
2014-02-07 Glenn Morris <rgm@gnu.org>
* display.texi (Highlight Interactively):
Mention hi-lock-auto-select-face.
* anti.texi (Antinews): Fix typo.
* ack.texi (Acknowledgments): No longer mention obsolete files.
2014-02-02 Glenn Morris <rgm@gnu.org>
* regs.texi (Registers): Mention previewing.
2014-01-29 Glenn Morris <rgm@gnu.org>
* killing.texi (Deletion): Mention cycle-spacing.
2014-01-28 Glenn Morris <rgm@gnu.org>
* text.texi (Fill Commands): Mention fill-single-char-nobreak-p.
* indent.texi (Tab Stops): Updates for new tab-stop behavior.
2014-01-27 Glenn Morris <rgm@gnu.org>
* dired.texi (Misc Dired Features): Copyedits for hide-details.
* buffers.texi (List Buffers): Tiny edit.
* calendar.texi (Time Intervals): Update for files in ~/.emacs.d/.
2014-01-26 Glenn Morris <rgm@gnu.org>
* ack.texi (Acknowledgments):
* programs.texi (Program Modes):
Update for delphi.el -> opascal.el renaming.
* misc.texi (Sorting): Add findex for reverse-region.
* killing.texi (Deletion): Mention delete-duplicate-lines.
2014-01-24 Glenn Morris <rgm@gnu.org>
* ack.texi (Acknowledgments): No longer mention obsolete xesam.el,
terminal.el.
* files.texi (Interlocking): Copyedit.
2014-01-23 Glenn Morris <rgm@gnu.org>
* building.texi (Lisp Eval): Update prefix argument behavior
of eval-expression, eval-last-sexp.
2014-01-17 Bastien Guerry <bzg@gnu.org>
* building.texi (Commands of GUD): Fix keybinding for `gud-break'.
2014-01-15 Glenn Morris <rgm@gnu.org>
* files.texi (File Conveniences):
* misc.texi (EWW): Copyedits.
2014-01-10 Glenn Morris <rgm@gnu.org>
* emacs.texi (Distrib): Add donate URL. Add anchor.
2014-01-10 Rüdiger Sonderfeld <ruediger@c-plusplus.de>
* dired.texi (Misc Dired Features): Document `dired-hide-details-mode',
`dired-hide-details-hide-symlink-targets', and
`dired-hide-details-hide-information-lines'.
2014-01-09 Rüdiger Sonderfeld <ruediger@c-plusplus.de>
* emacs.texi: Add EWW.
* misc.texi (EWW): Document EWW.
2014-01-09 Glenn Morris <rgm@gnu.org>
* trouble.texi (Service): Refer to online service directory
rather than etc/SERVICE.
2014-01-09 Rüdiger Sonderfeld <ruediger@c-plusplus.de>
* building.texi (Lisp Libraries): Document `load-prefer-newer'.
* files.texi (File Conveniences): Document `image-next-frame',
`image-previous-frame', `image-goto-frame',
`image-increase-speed', `image-decrease-speed',
`image-reverse-speed', and `image-reset-speed'.
2014-01-07 Bastien Guerry <bzg@gnu.org>
* buffers.texi (Buffers): Fix display of @math content by using
nested braces. (Bug#16389)
2014-01-07 Chong Yidong <cyd@gnu.org>
* search.texi (Special Isearch): Document C-x 8 RET in isearch.
(Word Search): Document incremental word search changes.
(Isearch Yank): Document M-s C-e with a prefix argument.
2014-01-07 Glenn Morris <rgm@gnu.org>
* cal-xtra.texi (Calendar Customizing):
Mention calendar-day-header-array.
2013-12-28 Glenn Morris <rgm@gnu.org>
* trouble.texi (Understanding Bug Reporting): Brevity.
2013-12-27 Jarek Czekalski <jarekczek@poczta.onet.pl>
* mini.texi (Completion Options): Add a link to Shell Options.
* misc.texi (Shell Mode): Move documentation of
shell-completion-fignore from Shell Mode to Shell Options.
2013-12-26 João Távora <joaotavora@gmail.com>
* emacs.texi (Matching): Describe new features of Electric Pair mode.
2013-12-25 Chong Yidong <cyd@gnu.org>
* glossary.texi (Glossary): Define MULE in modern terms.
2013-12-25 Xue Fuqiao <xfq.free@gmail.com>
* files.texi (Diff Mode): Add an index.
2013-12-24 Xue Fuqiao <xfq.free@gmail.com>
* trouble.texi (Understanding Bug Reporting): Minor update.
(Checklist): Fix a cross-reference.
2013-12-23 Xue Fuqiao <xfq.free@gmail.com>
* regs.texi (Bookmarks): Document `bookmark-default-file'.
* misc.texi (Shell Mode): Add a cross-reference.
* building.texi (Lisp Eval): Add an index.
2013-12-22 Glenn Morris <rgm@gnu.org>
* entering.texi (Entering Emacs): Typo fix.
* calendar.texi (General Calendar):
* rmail.texi (Rmail Scrolling): Use itemx where appropriate.
2013-12-22 Eli Zaretskii <eliz@gnu.org>
* regs.texi (Keyboard Macro Registers): Fix last change.
2013-12-22 Xue Fuqiao <xfq.free@gmail.com>
* search.texi (Special Isearch):
(Query Replace): Document negative argument of replacement commands.
(Symbol Search): Document `isearch-forward-symbol-at-point'.
* files.texi (File Conveniences): Document `image-next-file' and
`image-previous-file'.
* display.texi (Optional Mode Line): Fix an index.
* regs.texi (File Registers): Document `kmacro-to-register'.
* indent.texi (Tab Stops): Mention recent changes about `tab-stop-list'.
* frames.texi (Scroll Bars): Document
`scroll-bar-adjust-thumb-portion'.
2013-12-21 Chong Yidong <cyd@gnu.org>
* indent.texi (Indentation Commands): Document C-x TAB changes.
2013-12-20 Tassilo Horn <tsdh@gnu.org>
* calendar.texi, display.texi, help.texi, rmail.texi:
Document `S-SPC' as alternative to scrolling down with `DEL'.
* frames.texi: Document `toggle-frame-maximized' and
`toggle-frame-fullscreen' with their respective keys.
* buffers.texi: Document buffer name uniquification changes.
* indent.texi: Document that `electric-indent-mode' is enabled by
default.
* display.texi (Cursor Display): Document `blink-cursor-blinks'.
* buffers.texi: Update list-buffers "screeshot" to show Messages
as major-mode.
* entering.texi: Document `initial-buffer-choice' changes.
* misc.texi (emacsclient Options): Document
`initial-buffer-choice' changes.
* help.texi: Document that `?' now also shows subcommands of
prefix keys.
2013-12-17 Chong Yidong <cyd@gnu.org>
* killing.texi (Appending Kills): Note that append-next-kill can
prepend the kill.
2013-12-12 Eli Zaretskii <eliz@gnu.org>
* mule.texi (File Name Coding): Document file-name encoding
peculiarities on MS-Windows.
2013-12-12 Glenn Morris <rgm@gnu.org>
* emacs.texi: Sync direntry with info/dir version.
2013-12-08 Juanma Barranquero <lekktu@gmail.com>
* msdog.texi (Windows Keyboard): Fix typo.
2013-11-30 Glenn Morris <rgm@gnu.org>
* Makefile.in (distclean): Remove Makefile.
2013-11-29 Stefan Monnier <monnier@iro.umontreal.ca>
* buffers.texi (Icomplete): Rename from Iswitchb and
rewrite accordingly.
2013-11-23 Glenn Morris <rgm@gnu.org>
* cmdargs.texi (General Variables):
Empty elements in EMACSLOADPATH now mean the default load-path.
2013-11-21 Glenn Morris <rgm@gnu.org>
* cmdargs.texi (Action Arguments): Use path-separator with -L.
2013-11-04 Glenn Morris <rgm@gnu.org>
* cmdargs.texi (Action Arguments): Mention that `-L :...' appends.
2013-11-02 Glenn Morris <rgm@gnu.org>
* cmdargs.texi (Action Arguments): Clarify `-L' a bit.
2013-10-23 Glenn Morris <rgm@gnu.org>
* files.texi, glossary.texi, killing.texi, search.texi, sending.texi:
Nuke @refill.
* Makefile.in (install-dvi, install-html, install-pdf)
(install-ps, uninstall-dvi, uninstall-html, uninstall-ps)
(uninstall-pdf): Quote entities that might contain whitespace.
2013-10-20 Xue Fuqiao <xfq.free@gmail.com>
* custom.texi (Init Syntax, Terminal Init, Terminal Init):
Remove @refill.
2013-10-13 Glenn Morris <rgm@gnu.org>
* ack.texi (Acknowledgments): Comment out old alpha stuff.
2013-10-13 Xue Fuqiao <xfq.free@gmail.com>
* calendar.texi (Special Diary Entries): Remove @refill.
2013-10-13 Glenn Morris <rgm@gnu.org>
* display.texi (Text Scale): Update text-scale-adjust details.
* ack.texi (Acknowledgments):
* emacs.texi (Acknowledgments): Use accented form of some names.
2013-10-08 Eli Zaretskii <eliz@gnu.org>
* ack.texi (Acknowledgments): Fix spelling of Hrvoje Nikšić's
name. (Bug#15557)
Support menus on text-mode terminals.
* screen.texi (Menu Bar): Adapt to TTY menus.
* frames.texi (Frames): Mention menu support on text terminals.
* files.texi (Visiting): Mention the "File" menu-bar menu.
* display.texi (Standard Faces): Mention TTY faces for menus.
2013-10-06 Xue Fuqiao <xfq.free@gmail.com>
* cal-xtra.texi (Calendar Customizing, Diary Display): Remove @refill.
2013-09-29 Xue Fuqiao <xfq.free@gmail.com>
* fortran-xtra.texi (Fortran Abbrev): Remove @refill.
2013-09-26 Xue Fuqiao <xfq.free@gmail.com>
* dired.texi (Flagging Many Files): Use @emph instead of @strong.
* emacs.texi (Intro): Minor cleanup.
2013-09-22 Xue Fuqiao <xfq.free@gmail.com>
* fixit.texi (Transpose):
(Fixing Case): Remove @refill.
2013-09-21 Xue Fuqiao <xfq.free@gmail.com>
* maintaining.texi (VC Directory Commands): Add keybinding for
vc-log-incoming in vc-dir.
(Log Buffer): Use @emph instead of @strong.
2013-09-12 Xue Fuqiao <xfq.free@gmail.com>
* text.texi (Enriched Justification): Explain values of default-justification.
2013-09-04 Xue Fuqiao <xfq.free@gmail.com>
* maintaining.texi (VC Ignore): Mention `vc-ignore' with prefix argument.
2013-08-31 Ulrich Müller <ulm@gentoo.org>
* xresources.texi (Motif Resources):
Rename from LessTif Resources. Update xrefs. (Bug#15145)
* emacs.texi: Update menu.
2013-08-28 Paul Eggert <eggert@cs.ucla.edu>
* Makefile.in (SHELL): Now @SHELL@, not /bin/sh,
for portability to hosts where /bin/sh has problems.
2013-08-17 Xue Fuqiao <xfq.free@gmail.com>
* text.texi (Enriched Justification): Minor fixes.
2013-08-14 Xue Fuqiao <xfq.free@gmail.com>
* files.texi (Filesets): Add an index.
2013-08-12 Glenn Morris <rgm@gnu.org>
* macos.texi (GNUstep Support):
* trouble.texi (Checklist, Contributing, Service):
Avoid mailto: in html output.
* Makefile.in (prefix, datarootdir, datadir, PACKAGE_TARNAME)
(docdir, dvidir, htmldir, pdfdir, psdir, GZIP_PROG, INSTALL)
(INSTALL_DATA): New, set by configure.
(HTML_OPTS, DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS):
New variables.
(.SUFFIXES): Add .ps and .dvi.
(.dvi.ps): New suffix rule.
(dvi, html, pdf, ps): Use *_TARGETS variables.
(emacs.ps, emacs-xtra.ps): Remove explicit rules.
(emacs.html): Use HTML_OPTS.
(clean): Use DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS.
(.PHONY): install-dvi, install-html, install-pdf, install-ps
,install-doc, uninstall-dvi, uninstall-html, uninstall-pdf,
uninstall-ps, and uninstall-doc.
(install-dvi, install-html, install-pdf, install-ps, install-doc)
(uninstall-dvi, uninstall-html, uninstall-ps, uninstall-pdf)
(uninstall-doc): New rules.
2013-07-31 Eli Zaretskii <eliz@gnu.org>
* emacs.texi (Top): Remove menu item for the removed "Disabling
Multibyte" node.
2013-07-31 Xue Fuqiao <xfq.free@gmail.com>
* rmail.texi (Rmail Coding): Move here from mule.texi.
* custom.texi (Specifying File Variables): Fix cross-references.
* mule.texi (Unibyte Mode): Fix cross-references.
(Disabling Multibyte): Remove.
* macos.texi (Mac / GNUstep Basics): Mention `ns-alternate-modifier'.
* cal-xtra.texi (Advanced Calendar/Diary Usage): Update menu.
(Mayan Calendar): Move here from calendar.texi.
* emacs.texi (Top): Update menu.
2013-07-30 Xue Fuqiao <xfq.free@gmail.com>
* emacs.texi (Top): Add menu entry.
* maintaining.texi (VC Ignore): New node. Document vc-ignore.
(VC Directory Commands): Add vc-dir-ignore.
2013-07-28 Xue Fuqiao <xfq.free@gmail.com>
* glossary.texi (Glossary): Add some entries.
2013-07-27 Xue Fuqiao <xfq.free@gmail.com>
* maintaining.texi (VC Directory Commands): Mention `D' and `L' in
vc-dir. (Bug#14948)
2013-07-26 Eli Zaretskii <eliz@gnu.org>
* display.texi (Fringes): Document the variable fringe-mode.
(Bug#14946)
2013-07-03 Glenn Morris <rgm@gnu.org>
* maintaining.texi (EDE): Fix cross-reference.
* programs.texi (Program Modes): Fix emacs-xtra reference.
* help.texi (Misc Help): Index describe-syntax.
2013-06-29 Eli Zaretskii <eliz@gnu.org>
* basic.texi (Moving Point): Document visual-order-cursor-movement
and its effect on right-char and left-char.
2013-06-28 Glenn Morris <rgm@gnu.org>
* ack.texi (Acknowledgments): Small update.
2013-06-19 Glenn Morris <rgm@gnu.org>
* Makefile.in (dist): Edit more configure variables.
Try to check that we do not miss any in future.
2013-06-12 Xue Fuqiao <xfq.free@gmail.com>
* vc1-xtra.texi (Revision Tags): Add a cross reference.
(CVS Options): Fix the default value of `vc-cvs-stay-local'.
2013-06-11 Glenn Morris <rgm@gnu.org>
* maintaining.texi (VC Directory Commands): Copyedit.
(Branches): Put back milder version of pre 2013-06-07 text.
2013-06-07 Xue Fuqiao <xfq.free@gmail.com>
* maintaining.texi (Branches): Remove text copied from other sources.
2013-06-05 Alan Mackenzie <acm@muc.de>
* search.texi (Isearch Scroll): Rename to "Not Exiting Isearch".
(Not Exiting Isearch): Document new user option
`isearch-allow-prefix'. (Bug#9706)
2013-06-03 Juri Linkov <juri@jurta.org>
* display.texi (Highlight Interactively): Add global keybindings
with the key prefix `M-s h'. Document old command `highlight-phrase'.
Document new command `highlight-symbol-at-point'.
2013-06-02 Xue Fuqiao <xfq.free@gmail.com>
* maintaining.texi (Branches): Add motivations for branching.
(VC Mode Line): Fix typo.
(VC Directory Commands): Mention `vc-dir-hide-up-to-date' with
prefix argument.
2013-06-02 Michael Albinus <michael.albinus@gmx.de>
* cmdargs.texi (General Variables): Use "unix:path=/dev/null" as
dummy value for $DBUS_SESSION_BUS_ADDRESS. It also suppresses
autolaunching of the D-Bus session bus.
2013-06-01 Glenn Morris <rgm@gnu.org>
* programs.texi (Semantic): Fix typo.
2013-05-30 Xue Fuqiao <xfq.free@gmail.com>
* maintaining.texi (Types of Log File): Supplement some
information of change log files.
2013-05-15 Juri Linkov <juri@jurta.org>
* search.texi (Repeat Isearch): Mention key `RET' to finish
editing the string. (Bug#13348)
2013-05-14 Glenn Morris <rgm@gnu.org>
* ack.texi (Acknowledgments): Don't mention obsolete sup-mouse.el.
2013-05-09 Glenn Morris <rgm@gnu.org>
* sending.texi (Mail Sending): Fix typo.
* windows.texi (Change Window): Fix typo.
* custom.texi (Changing a Variable): Fix typo.
* trouble.texi (Contributing): Remove obsolete info re pretesters.
2013-05-05 Paul Eggert <eggert@cs.ucla.edu>
`write-region-inhibit-fsync' defaults to noninteractive (Bug#14273).
* cmdargs.texi (Initial Options):
* files.texi (Customize Save): Document this.
2013-05-04 Glenn Morris <rgm@gnu.org>
* calendar.texi (Importing Diary): Mention diary-from-outlook-function.
2013-03-17 Paul Eggert <eggert@cs.ucla.edu>
doc: convert some TeX accents to UTF-8
* ack.texi (Acknowledgments):
* emacs.texi (Acknowledgments):
Convert some TeX accents (e.g., '@l{}') to UTF-8 (e.g., 'ł').
Apparently the TeX accents cause problems when generating gnu.org
web pages, e.g., @l{} is rendered as '/l' on
<http://www.gnu.org/software/emacs/manual/html_node/
emacs/Acknowledgments.html>.
2013-03-16 Glenn Morris <rgm@gnu.org>
* emacs.texi (Top): Add some stuff specific to www.gnu.org.
2013-03-04 Paul Eggert <eggert@cs.ucla.edu>
Prefer UTF-8 for documentation.
With GNU Texinfo 5.0, this generates nicer-looking info files,
since they can use curly quotes. With older Texinfo it doesn't matter.
* ack.texi, cal-xtra.texi, calendar.texi, emacs-xtra.texi, emacs.texi:
Switch from Latin-1 to UTF-8.
2013-02-28 Bastien Guerry <bzg@gnu.org>
* xresources.texi (GTK resources): Fix broken link.
@ -329,6 +922,11 @@
* trouble.texi (Crashing): Document addr2line.
2012-09-19 Tassilo Horn <tsdh@gnu.org>
* misc.texi (DocView Slicing): Document new slice from
BoundingBox feature.
2012-09-19 Chong Yidong <cyd@gnu.org>
* killing.texi (Yanking): Minor clarification (Bug#12469).
@ -816,7 +1414,7 @@
\\`info- no longer handled specially.
Update for rmail-enable-mime-composing.
Don't mention 'm' for replies.
Don't mention rmail-mail-new-frame and cancelling, since it does
Don't mention rmail-mail-new-frame and canceling, since it does
not work for Message at the moment.
* cal-xtra.texi: Copyedits.
@ -2686,9 +3284,9 @@
2010-03-27 Nick Roberts <nickrob@snap.net.nz>
doc/emacs/building.texi: Describe restored GDB/MI functionality
* building.texi: Describe restored GDB/MI functionality
removed by 2009-12-29T07:15:34Z!nickrob@snap.net.nz.
doc/emacs/emacs.texi: Update node names for building.texi.
* emacs.texi: Update node names for building.texi.
2010-03-24 Glenn Morris <rgm@gnu.org>
@ -4505,7 +5103,7 @@
2008-05-02 Eric S. Raymond <esr@snark.thyrsus.com>
* emacs/buffers.texi, emacs/files.texi (Version-control):
* buffers.texi, files.texi (Version-control):
vc-toggle-read-only is no longer a good idea...
2008-04-29 Glenn Morris <rgm@gnu.org>
@ -4652,10 +5250,6 @@
* maintaining.texi (Tags): Fix last change.
2008-02-02 Michael Albinus <michael.albinus@gmx.de>
* tramp.texi: Use new FSF's Back-Cover Text.
2008-01-31 Nick Roberts <nickrob@snap.net.nz>
* trouble.texi (Checklist): Direct users to emacs-devel@gnu.org.
@ -4698,8 +5292,6 @@
* search.texi (Query Replace): Make exp of query-replace more
self-contained, and clarify.
* cc-mode.texi (Getting Started): Change @ref to @pxref.
2007-12-15 Richard Stallman <rms@gnu.org>
* files.texi (Auto Save): Clarify definition of auto-saving.
@ -5251,6 +5843,11 @@
* frames.texi (Secondary Selection): Window clicked does not matter
when mouse-yank-at-point is non-nil.
2007-01-27 Eli Zaretskii <eliz@gnu.org>
* msdog.texi (ls in Lisp): Document ls-lisp-format-time-list and
ls-lisp-use-localized-time-format.
2007-01-16 Glenn Morris <rgm@gnu.org>
* abbrevs.texi (Editing Abbrevs): Describe how to disable a
@ -5578,6 +6175,11 @@
Change "Library Public License" to "Lesser Public License"
throughout. Use "yyyy" to represent year.
2006-09-12 Paul Eggert <eggert@cs.ucla.edu>
* misc.texi (Interactive Shell): EMACS is now set
to Emacs's absolute file name, not to "t".
2006-09-12 Reiner Steib <Reiner.Steib@gmx.de>
* files.texi (Visiting): Add index entry "open file".
@ -6339,8 +6941,6 @@
* sending.texi (Mail Sending): pxref to Top needs five args.
* texinfo.tex: Update to current version (2006-03-21.13).
2006-03-31 Richard Stallman <rms@gnu.org>
* emacs.texi (Top): Update subnode menu.
@ -9214,13 +9814,13 @@
2003-11-02 Jesper Harder <harder@ifa.au.dk> (tiny change)
* man/ack.texi, man/basic.texi, man/cmdargs.texi:
* man/commands.texi, man/custom.texi, man/display.texi:
* man/emacs.texi, man/files.texi:
* man/frames.texi, man/glossary.texi, man/killing.texi:
* man/macos.texi, man/mark.texi, man/misc.texi, man/msdog.texi:
* man/mule.texi, man/rmail.texi, man/search.texi:
* man/sending.texi, man/text.texi, man/trouble.texi:
* ack.texi, basic.texi, cmdargs.texi:
* commands.texi, custom.texi, display.texi:
* emacs.texi, files.texi:
* frames.texi, glossary.texi, killing.texi:
* macos.texi, mark.texi, misc.texi, msdog.texi:
* mule.texi, rmail.texi, search.texi:
* sending.texi, text.texi, trouble.texi:
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
2003-11-01 Alan Mackenzie <acm@muc.de>
@ -9754,7 +10354,7 @@
1990-05-25 Richard Stallman (rms@sugar-bombs.ai.mit.edu)
* texindex.tex: If USG, include sys/types.h and sys/fcntl.h.
* texindex.c: If USG, include sys/types.h and sys/fcntl.h.
1990-03-21 Jim Kingdon (kingdon@pogo.ai.mit.edu)
@ -9774,7 +10374,7 @@
;; coding: utf-8
;; End:
Copyright (C) 1993-1999, 2001-2013 Free Software Foundation, Inc.
Copyright (C) 1993-1999, 2001-2014 Free Software Foundation, Inc.
This file is part of GNU Emacs.

View file

@ -1,6 +1,6 @@
#### Makefile for the Emacs Manual
### @configure_input@
# Copyright (C) 1994, 1996-2013 Free Software Foundation, Inc.
# Copyright (C) 1994, 1996-2014 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@ -17,7 +17,10 @@
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
SHELL = /bin/sh
SHELL = @SHELL@
# NB If you add any more configure variables,
# update the sed rules in the dist target below.
# Where to find the source code. $(srcdir) will be the doc/emacs subdirectory
# of the source tree. This is set by configure's `--srcdir' option.
@ -35,8 +38,22 @@ buildinfodir = $(srcdir)/../../info
# Directory with the (customized) texinfo.tex file.
texinfodir = $(srcdir)/../misc
prefix = @prefix@
datarootdir = @datarootdir@
datadir = @datadir@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
docdir = @docdir@
dvidir = @dvidir@
htmldir = @htmldir@
pdfdir = @pdfdir@
psdir = @psdir@
MKDIR_P = @MKDIR_P@
GZIP_PROG = @GZIP_PROG@
HTML_OPTS = --no-split --html
INFO_EXT=@INFO_EXT@
# Options used only when making info output.
# --no-split is only needed because of MS-DOS.
@ -44,6 +61,9 @@ INFO_EXT=@INFO_EXT@
# http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg01182.html
INFO_OPTS=@INFO_OPTS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
# The makeinfo program is part of the Texinfo distribution.
# Use --force so that it generates output even if there are errors.
MAKEINFO = @MAKEINFO@
@ -57,6 +77,10 @@ DVIPS = dvips
ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(TEXINPUTS)" \
MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)"
DVI_TARGETS = emacs.dvi emacs-xtra.dvi
HTML_TARGETS = emacs.html
PDF_TARGETS = emacs.pdf emacs-xtra.pdf
PS_TARGETS = emacs.ps emacs-xtra.ps
EMACS_XTRA= \
${srcdir}/emacs-xtra.texi \
@ -119,17 +143,21 @@ EMACSSOURCES= \
${srcdir}/kmacro.texi \
$(EMACS_XTRA)
## This seems pointless. The info/ directory exists in both the
## repository and the release tarfiles.
## The info/ directory exists in release tarfiles but not the repository.
mkinfodir = @${MKDIR_P} ${buildinfodir}
.PHONY: info dvi html pdf ps
.SUFFIXES: .ps .dvi
.dvi.ps:
$(DVIPS) -o $@ $<
info: $(buildinfodir)/emacs$(INFO_EXT)
dvi: emacs.dvi
html: emacs.html
pdf: emacs.pdf
ps: emacs.ps
dvi: $(DVI_TARGETS)
html: $(HTML_TARGETS)
pdf: $(PDF_TARGETS)
ps: $(PS_TARGETS)
# Note that all the Info targets build the Info files in srcdir.
# There is no provision for Info files to exist in the build directory.
@ -142,21 +170,15 @@ $(buildinfodir)/emacs$(INFO_EXT): ${EMACSSOURCES}
emacs.dvi: ${EMACSSOURCES}
$(ENVADD) $(TEXI2DVI) ${srcdir}/emacs.texi
emacs.ps: emacs.dvi
$(DVIPS) -o $@ emacs.dvi
emacs.pdf: ${EMACSSOURCES}
$(ENVADD) $(TEXI2PDF) ${srcdir}/emacs.texi
emacs.html: ${EMACSSOURCES}
$(MAKEINFO) $(MAKEINFO_OPTS) --html -o $@ ${srcdir}/emacs.texi
$(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/emacs.texi
emacs-xtra.dvi: $(EMACS_XTRA)
$(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-xtra.texi
emacs-xtra.ps: emacs-xtra.dvi
$(DVIPS) -o $@ emacs-xtra.dvi
emacs-xtra.pdf: $(EMACS_XTRA)
$(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-xtra.texi
@ -169,12 +191,11 @@ mostlyclean:
## Products not in the release tarfiles.
clean: mostlyclean
rm -f emacs.dvi emacs-xtra.dvi emacs.pdf emacs-xtra.pdf \
emacs.ps emacs-xtra.ps
rm -rf emacs.html/
rm -f $(DVI_TARGETS) $(HTML_TARGETS) $(PDF_TARGETS) $(PS_TARGETS)
rm -f emacs-manual-${version}.tar*
distclean: clean
rm -f Makefile
## In the standalone tarfile, the clean rule runs this.
infoclean:
@ -195,8 +216,61 @@ dist:
-e 's/^\(buildinfodir *=\).*/\1 ./' \
-e 's/^\(clean:.*\)/\1 infoclean/' \
-e "s/@ver[s]ion@/${version}/" \
-e 's/@MAKE[I]NFO@/makeinfo/' -e 's/@MK[D]IR_P@/mkdir -p/' \
-e 's/@IN[F]O_EXT@/.info/' -e 's/@IN[F]O_OPTS@//' \
${srcdir}/Makefile.in > emacs-manual-${version}/Makefile
@if grep '@[a-zA-Z_]*@' emacs-manual-${version}/Makefile; then \
echo "Unexpanded configure variables in Makefile?" 1>&2; exit 1; \
fi
tar -cf emacs-manual-${version}.tar emacs-manual-${version}
rm -rf emacs-manual-${version}
.PHONY: install-dvi install-html install-pdf install-ps install-doc
install-dvi: dvi
umask 022; $(MKDIR_P) "$(DESTDIR)$(dvidir)"
$(INSTALL_DATA) $(DVI_TARGETS) "$(DESTDIR)$(dvidir)"
install-html: html
umask 022; $(MKDIR_P) "$(DESTDIR)$(htmldir)"
$(INSTALL_DATA) $(HTML_TARGETS) "$(DESTDIR)$(htmldir)"
install-pdf: pdf
umask 022;$(MKDIR_P) "$(DESTDIR)$(pdfdir)"
$(INSTALL_DATA) $(PDF_TARGETS) "$(DESTDIR)$(pdfdir)"
install-ps: ps
umask 022; $(MKDIR_P) "$(DESTDIR)$(psdir)"
for file in $(PS_TARGETS); do \
$(INSTALL_DATA) $${file} "$(DESTDIR)$(psdir)"; \
[ -n "${GZIP_PROG}" ] || continue; \
rm -f "$(DESTDIR)$(psdir)/$${file}.gz"; \
${GZIP_PROG} -9n "$(DESTDIR)$(psdir)/$${file}"; \
done
## Top-level Makefile installs the info pages.
install-doc: install-dvi install-html install-pdf install-ps
.PHONY: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps uninstall-doc
uninstall-dvi:
for file in $(DVI_TARGETS); do \
rm -f "$(DESTDIR)$(dvidir)/$${file}"; \
done
uninstall-html:
for file in $(HTML_TARGETS); do \
rm -f "$(DESTDIR)$(htmldir)/$${file}"; \
done
uninstall-ps:
ext= ; [ -n "${GZIP_PROG}" ] && ext=.gz; \
for file in $(PS_TARGETS); do \
rm -f "$(DESTDIR)$(psdir)/$${file}$${ext}"; \
done
uninstall-pdf:
for file in $(PDF_TARGETS); do \
rm -f "$(DESTDIR)$(pdfdir)/$${file}"; \
done
uninstall-doc: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps
### Makefile ends here

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2013 Free Software
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2014 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Abbrevs

View file

@ -1,6 +1,6 @@
@c -*- coding: iso-latin-1 -*-
@c -*- coding: utf-8 -*-
@c This is part of the Emacs manual.
@c Copyright (C) 1994-1997, 1999-2013 Free Software Foundation, Inc.
@c Copyright (C) 1994-1997, 1999-2014 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@node Acknowledgments
@ -51,9 +51,9 @@ files.
@item
Michael Albinus wrote @file{dbus.el}, a package that implements the
D-Bus message bus protocol; @file{zeroconf.el}, a mode for browsing
Avahi services; @file{xesam.el}, a Xesam-based search engine
interface; and @file{secrets.el}, an interface to keyring daemons for
storing confidential data. He and Kai Großjohann wrote the Tramp package, which
Avahi services;
and @file{secrets.el}, an interface to keyring daemons for
storing confidential data. He and Kai Großjohann wrote the Tramp package, which
provides transparent remote file editing using rcp, ssh, ftp, and
other network protocols. He and Daniel Pittman wrote
@file{tramp-cache.el}.
@ -68,7 +68,7 @@ Joe Arceneaux wrote the original text property implementation, and
implemented support for X11.
@item
Emil Åström, Milan Zamaza, and Stefan Bruda wrote @file{prolog.el},
Emil Åström, Milan Zamaza, and Stefan Bruda wrote @file{prolog.el},
a mode for editing Prolog (and Mercury) code.
@item
@ -104,7 +104,7 @@ footnotes in email messages; and @file{gnus-audio.el} and
@item
Alexander L. Belikoff, Sergey Berezin, Sacha Chua, David Edmondson,
Noah Friedman, Andreas Fuchs, Mario Lang, Ben Mesander, Lawrence
Mitchell, Gergely Nagy, Michael Olson, Per Persson, Jorgen Schaefer,
Mitchell, Gergely Nagy, Michael Olson, Per Persson, Jorgen Schäfer,
Alex Schroeder, and Tom Tromey wrote ERC, an advanced Internet Relay
Chat client (for more information, see the file @file{CREDITS} in the
ERC distribution).
@ -114,12 +114,16 @@ Scott Bender, Michael Brouwer, Christophe de Dinechin, Carl Edman,
Christian Limpach and Adrian Robert developed and maintained the
NeXTstep port of Emacs.
@item
Stephen Berman wrote @file{todo-mode.el} (based on the original version
by Oliver Seidel), a package for maintaining @file{TODO} list files.
@item
Anna M. Bigatti wrote @file{cal-html.el}, which produces HTML calendars.
@item
Ray Blaak and Simon South wrote @file{delphi.el}, a mode for editing
Delphi (Object Pascal) source code.
Ray Blaak and Simon South wrote @file{opascal.el}, a mode for editing
Object Pascal source code.
@item
Martin Blais, Stefan Merten, and David Goodger wrote @file{rst.el}, a
@ -166,7 +170,7 @@ David M. Brown wrote @file{array.el}, for editing arrays and other
tabular data.
@item
W@l{}odek Bzyl and Ryszard Kubiak wrote @file{ogonek.el}, a package for
Włodek Bzyl and Ryszard Kubiak wrote @file{ogonek.el}, a package for
changing the encoding of Polish characters.
@item
@ -260,7 +264,7 @@ text replace the current selection.
Eric Ding wrote @file{goto-addr.el},
@item
Jan Djärv added support for the GTK+ toolkit and X drag-and-drop.
Jan Djärv added support for the GTK+ toolkit and X drag-and-drop.
He also wrote @file{dynamic-setting.el}.
@item
@ -268,11 +272,11 @@ Carsten Dominik wrote Ref@TeX{}, a package for setting up labels and
cross-references in @LaTeX{} documents; and co-wrote IDLWAVE mode
(q.v.). He was the original author of Org mode, for maintaining notes,
todo lists, and project planning. Bastien Guerry subsequently took
over maintainership. Benjamin Andresen, Thomas Baumann, Joel Boehland, Jan Böcker, Lennart
over maintainership. Benjamin Andresen, Thomas Baumann, Joel Boehland, Jan Böcker, Lennart
Borgman, Baoqiu Cui, Dan Davison, Christian Egli, Eric S. Fraga, Daniel German, Chris Gray, Konrad Hinsen, Tassilo Horn, Philip
Jackson, Martyn Jago, Thorsten Jolitz, Jambunathan K, Tokuya Kameshima, Sergey Litvinov, David Maus, Ross Patterson, Juan Pechiar, Sebastian Rose, Eric Schulte,
Paul Sexton, Ulf Stegemann, Andy Stewart, Christopher Suckling, David O'Toole, John Wiegley, Zhang Weize,
Piotr Zielinski, and others also wrote various Org mode components.
Piotr Zieliński, and others also wrote various Org mode components.
For more information, @pxref{History and Acknowledgments,,, org, The Org Manual}.
@item
@ -299,11 +303,10 @@ to VC and the calendar.
@item
Stephen Eglen wrote @file{mspools.el}, which tells you which Procmail
folders have mail waiting in them; and @file{iswitchb.el}, a feature
for incremental reading and completion of buffer names.
folders have mail waiting in them.
@item
Torbjörn Einarsson wrote @file{f90.el}, a mode for Fortran 90 files.
Torbjörn Einarsson wrote @file{f90.el}, a mode for Fortran 90 files.
@item
Tsugutomo Enami co-wrote the support for international character sets.
@ -365,7 +368,7 @@ Kevin Gallagher rewrote and enhanced the EDT emulation, and wrote
flow control.
@item
Fabián E. Gallina rewrote @file{python.el}, the major mode for the
Fabián E. Gallina rewrote @file{python.el}, the major mode for the
Python programming language used in Emacs 24.3 onwards.
@item
@ -373,7 +376,7 @@ Kevin Gallo added multiple-frame support for Windows NT and wrote
@file{w32-win.el}, support functions for the MS-Windows window system.
@item
Juan León Lahoz García wrote @file{wdired.el}, a package for
Juan León Lahoz García wrote @file{wdired.el}, a package for
performing file operations by directly editing Dired buffers.
@item
@ -510,9 +513,9 @@ He also wrote @file{network-stream.el}, for opening network processes;
@file{url-queue.el}, for controlling parallel downloads of URLs;
and implemented libxml2 support.
Components of Gnus have also been written by: Nagy Andras, David
Blacka, Scott Byer, Ludovic Courtès, Julien Danjou, Kevin Greiner, Kai
Großjohann, Joe Hildebrand, Paul Jarc, Simon Josefsson, Sascha
Lüdecke, David Moore, Jim Radford, Benjamin Rutt, Raymond Scholz,
Blacka, Scott Byer, Ludovic Courtès, Julien Danjou, Kevin Greiner, Kai
Großjohann, Joe Hildebrand, Paul Jarc, Simon Josefsson, Sascha
Lüdecke, David Moore, Jim Radford, Benjamin Rutt, Raymond Scholz,
Thomas Steffen, Reiner Steib, Didier Verna, Ilja Weis, Katsumi
Yamaoka, Teodor Zlatanov, and others (@pxref{Contributors,,,gnus, the
Gnus Manual}).
@ -553,7 +556,7 @@ S/MIME and Sieve components; and @file{tls.el} and @file{starttls.el}
for the Transport Layer Security protocol.
@item
Arne Jørgensen wrote @file{latexenc.el}, a package to
Arne Jørgensen wrote @file{latexenc.el}, a package to
automatically guess the correct coding system in @LaTeX{} files.
@item
@ -605,7 +608,7 @@ files and running a PostScript interpreter interactively from within
Emacs.
@item
Karel Klí@v{c} contributed SELinux support, for preserving the
Karel Klíč contributed SELinux support, for preserving the
Security-Enhanced Linux context of files on backup and copy.
@item
@ -635,7 +638,7 @@ R. Dodd. He also wrote @file{ls-lisp.el}, a Lisp emulation of the
program.
@item
David K@ringaccent{a}gedal wrote @file{tempo.el}, providing support for
David Kågedal wrote @file{tempo.el}, providing support for
easy insertion of boilerplate text and other common constructions.
@item
@ -694,7 +697,7 @@ directory-local variables; and the @code{info-finder} feature that
creates a virtual Info manual of package keywords.
@item
Károly L@H{o}rentey wrote the ``multi-terminal'' code, which allows
Károly Lőrentey wrote the ``multi-terminal'' code, which allows
Emacs to run on graphical and text terminals simultaneously.
@item
@ -810,12 +813,11 @@ command with its arguments.
Richard Mlynarik wrote @file{cl-indent.el}, a package for indenting
Common Lisp code; @file{ebuff-menu.el}, an ``electric'' browser for
buffer listings; @file{ehelp.el}, bindings for browsing help screens;
@file{rfc822.el}, a parser for E-mail addresses in the RFC-822 format,
used in mail messages and news articles; and @file{terminal.el}, a
terminal emulator for Emacs subprocesses.
and @file{rfc822.el}, a parser for E-mail addresses in the RFC-822 format,
used in mail messages and news articles.
@item
Gerd Moellmann was the Emacs maintainer from the beginning of Emacs 21
Gerd Möllmann was the Emacs maintainer from the beginning of Emacs 21
development until the release of 21.1. He wrote the new display
engine used from Emacs 21 onwards, and the asynchronous timers
facility. He also wrote @code{ebrowse}, the C@t{++} browser;
@ -880,7 +882,7 @@ and @code{winterm} terminal emulators; and @file{vc-dir.el}, displaying
the status of version-controlled directories.
@item
Hrvoje Niksic wrote @file{savehist.el}, for saving the minibuffer
Hrvoje Nikšić wrote @file{savehist.el}, for saving the minibuffer
history between Emacs sessions.
@item
@ -960,7 +962,7 @@ Fred Pierresteguy and Paul Reilly made Emacs work with X Toolkit
widgets.
@item
François Pinard, Greg McGary, and Bruno Haible wrote @file{po.el},
François Pinard, Greg McGary, and Bruno Haible wrote @file{po.el},
support for PO translation files.
@item
@ -975,7 +977,7 @@ minor mode for displaying a ruler in the header line; and
structures.
@item
Francesco A. Potorti wrote @file{cmacexp.el}, providing a command which
Francesco A. Potortì wrote @file{cmacexp.el}, providing a command which
runs the C preprocessor on a region of a file and displays the results.
He also expanded and redesigned the @code{etags} program.
@ -1058,8 +1060,7 @@ contributed extensively to the MS-Windows port of Emacs.
@item
Wolfgang Rupprecht wrote Emacs 19's floating-point support (including
@file{float-sup.el} and @file{floatfns.c}), and @file{sup-mouse.el},
support for the Supdup mouse on lisp machines.
@file{float-sup.el} and @file{floatfns.c}).
@item
Kevin Ryde wrote @file{info-xref.el}, a library for checking
@ -1096,9 +1097,6 @@ Ronald S. Schnell wrote @file{dunnet.el}, a text adventure game.
Philippe Schnoebelen wrote @file{gomoku.el}, a Go Moku game played
against Emacs; and @file{mpuz.el}, a multiplication puzzle.
@item
Rainer Schoepf contributed to Alpha and OSF1 support.
@item
Jan Schormann wrote @file{solitaire.el}, an implementation of the
Solitaire game.
@ -1115,10 +1113,6 @@ wrote parts of the IRC client ERC (q.v.).
@item
Randal Schwartz wrote @file{pp.el}, a pretty-printer for lisp objects.
@item
Oliver Seidel wrote @file{todo-mode.el}, a package for maintaining
@file{TODO} list files.
@item
Manuel Serrano wrote the Flyspell package, which does spell checking
as you type.
@ -1224,7 +1218,7 @@ Olaf Sylvester wrote @file{bs.el}, a package for manipulating Emacs
buffers.
@item
Tibor @v{S}imko and Milan Zamazal wrote @file{slovak.el}, support for
Tibor Šimko and Milan Zamazal wrote @file{slovak.el}, support for
editing text in Slovak language.
@item
@ -1345,7 +1339,7 @@ mode for editing VHDL source code.
John Wiegley wrote @file{align.el}, a set of commands for aligning text
according to regular-expression based rules; @file{isearchb.el} for fast
buffer switching; @file{timeclock.el}, a package for keeping track of
time spent on projects; the Bahá'í calendar support;
time spent on projects; the Bahá'í calendar support;
@file{pcomplete.el}, a programmable completion facility;
@file{remember.el}, a mode for jotting down things to remember;
@file{eudcb-mab.el}, an address book backend for the Emacs Unified

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
@c Copyright (C) 2005-2013 Free Software Foundation, Inc.
@c Copyright (C) 2005-2014 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Antinews
@ -89,7 +89,7 @@ scroll bars. Emacs no longer refers to GTK+ to set the default
@item
Setting the option @code{delete-by-moving-to-trash} to a
non-@code{nil} now causes all file deletions to use the system trash,
non-@code{nil} value now causes all file deletions to use the system trash,
even temporary files created by Lisp programs; furthermore, the
@kbd{M-x delete-file} and @kbd{M-x delete-directory} commands no
longer accept prefix arguments to force true deletion.

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
@c Copyright (C) 2004-2013 Free Software Foundation, Inc.
@c Copyright (C) 2004-2014 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2013 Free Software
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2014 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Basic
@ -153,10 +153,17 @@ Move forward one character (@code{forward-char}).
@item @key{right}
@kindex RIGHT
@findex right-char
@vindex visual-order-cursor-movement
@cindex cursor, visual-order motion
This command (@code{right-char}) behaves like @kbd{C-f}, with one
exception: when editing right-to-left scripts such as Arabic, it
instead moves @emph{backward} if the current paragraph is a
right-to-left paragraph. @xref{Bidirectional Editing}.
right-to-left paragraph. @xref{Bidirectional Editing}. If
@code{visual-order-cursor-movement} is non-@code{nil}, this command
moves to the character that is to the right of the current screen
position, moving to the next or previous screen line as appropriate.
Note that this might potentially move point many buffer positions
away, depending on the surrounding bidirectional context.
@item C-b
@kindex C-b
@ -168,7 +175,10 @@ Move backward one character (@code{backward-char}).
@findex left-char
This command (@code{left-char}) behaves like @kbd{C-b}, except it
moves @emph{forward} if the current paragraph is right-to-left.
@xref{Bidirectional Editing}.
@xref{Bidirectional Editing}. If @code{visual-order-cursor-movement}
is non-@code{nil}, this command moves to the character that is to the
left of the current screen position, moving to the previous or next
screen line as appropriate.
@item C-n
@itemx @key{down}
@ -225,7 +235,7 @@ Move backward one word (@code{backward-word}).
@kindex C-LEFT
@kindex M-LEFT
@findex left-word
This command (@code{left-word}) behaves like @kbd{M-f}, except it
This command (@code{left-word}) behaves like @kbd{M-b}, except it
moves @emph{forward} by one word if the current paragraph is
right-to-left. @xref{Bidirectional Editing}.

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2013 Free Software
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2014 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Buffers
@ -43,15 +43,15 @@ variables}---variables that can have a different value in each buffer.
A buffer's size cannot be larger than some maximum, which is defined
by the largest buffer position representable by @dfn{Emacs integers}.
This is because Emacs tracks buffer positions using that data type.
For typical 64-bit machines, this maximum buffer size is @math{2^61 -
2} bytes, or about 2 EiB@. For typical 32-bit machines, the maximum is
usually @math{2^29 - 2} bytes, or about 512 MiB@. Buffer sizes are
For typical 64-bit machines, this maximum buffer size is @math{2^{61} - 2}
bytes, or about 2 EiB@. For typical 32-bit machines, the maximum is
usually @math{2^{29} - 2} bytes, or about 512 MiB@. Buffer sizes are
also limited by the amount of memory in the system.
@menu
* 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-onlyness; copying text.
* Misc Buffer:: Renaming; changing read-only status; 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.
@ -174,7 +174,7 @@ List the existing buffers (@code{list-buffers}).
@kindex C-x C-b
@findex list-buffers
To display a list of existing buffers, type @kbd{C-x C-b}. Each
line in the list shows one buffer's name, major mode and visited file.
line in the list shows one buffer's name, size, major mode and visited file.
The buffers are listed in the order that they were current; the
buffers that were current most recently come first.
@ -194,7 +194,7 @@ CRM Buffer Size Mode File
% HELLO 1607 Fundamental ~/cvs/emacs/etc/HELLO
% NEWS 481184 Outline ~/cvs/emacs/etc/NEWS
*scratch* 191 Lisp Interaction
* *Messages* 1554 Fundamental
* *Messages* 1554 Messages
@end smallexample
@noindent
@ -598,7 +598,7 @@ convenient to switch between buffers.
@menu
* Uniquify:: Making buffer names unique with directory parts.
* Iswitchb:: Switching between buffers with substrings.
* Icomplete:: Fast minibuffer selection.
* Buffer Menus:: Configurable buffer menu.
@end menu
@ -608,32 +608,37 @@ convenient to switch between buffers.
@cindex unique buffer names
@cindex directories in buffer names
When several buffers visit identically-named files, Emacs must give
the buffers distinct names. The usual method for making buffer names
unique adds @samp{<2>}, @samp{<3>}, etc. to the end of the buffer
names (all but one of them).
the buffers distinct names. The default method
(@code{uniquify-buffer-name-style} set to
@code{post-forward-angle-brackets}) for making buffer names unique
adds @samp{<dir1>}, @samp{<dir2>}, etc. to the end of the buffer
names.
@vindex uniquify-buffer-name-style
Other methods work by adding parts of each file's directory to the
buffer name. To select one, load the library @file{uniquify} (e.g.,
using @code{(require 'uniquify)}), and customize the variable
@code{uniquify-buffer-name-style} (@pxref{Easy Customization}).
There are several styles to make buffer names unique. To select
one, customize the variable @code{uniquify-buffer-name-style}
(@pxref{Easy Customization}).
To begin with, the @code{forward} naming method includes part of the
file's directory name at the beginning of the buffer name; using this
method, buffers visiting the files @file{/u/rms/tmp/Makefile} and
The @code{forward} naming method includes part of the file's
directory name at the beginning of the buffer name; using this method,
buffers visiting the files @file{/u/rms/tmp/Makefile} and
@file{/usr/projects/zaphod/Makefile} would be named
@samp{tmp/Makefile} and @samp{zaphod/Makefile}, respectively (instead
of @samp{Makefile} and @samp{Makefile<2>}).
@samp{tmp/Makefile} and @samp{zaphod/Makefile}.
In contrast, the @code{post-forward} naming method would call the
buffers @samp{Makefile|tmp} and @samp{Makefile|zaphod}, and the
buffers @samp{Makefile|tmp} and @samp{Makefile|zaphod}. The default
method @code{post-forward-angle-brackets} is like @code{post-forward}
except that it prepends the unique path in angle brackets. The
@code{reverse} naming method would call them @samp{Makefile\tmp} and
@samp{Makefile\zaphod}. The nontrivial difference between
@code{post-forward} and @code{reverse} occurs when just one directory
name is not enough to distinguish two files; then @code{reverse} puts
the directory names in reverse order, so that @file{/top/middle/file}
becomes @samp{file\middle\top}, while @code{post-forward} puts them in
forward order after the file name, as in @samp{file|top/middle}.
forward order after the file name, as in @samp{file|top/middle}. If
@code{uniquify-buffer-name-style} is set to @code{nil}, the buffer
names simply get a @samp{<2>} etc. prepended. This used to be the
default behavior in Emacs versions up to 24.4.
Which rule to follow for putting the directory names in the buffer
name is not very important if you are going to @emph{look} at the
@ -641,39 +646,31 @@ buffer names before you type one. But as an experienced user, if you
know the rule, you won't have to look. And then you may find that one
rule or another is easier for you to remember and apply quickly.
@node Iswitchb
@subsection Switching Between Buffers using Substrings
@node Icomplete
@subsection Fast minibuffer selection
@findex iswitchb-mode
@cindex Iswitchb mode
@cindex mode, Iswitchb
@kindex C-x b @r{(Iswitchb mode)}
@kindex C-x 4 b @r{(Iswitchb mode)}
@kindex C-x 5 b @r{(Iswitchb mode)}
@kindex C-x 4 C-o @r{(Iswitchb mode)}
@findex icomplete-mode
@cindex Icomplete mode
Iswitchb global minor mode provides convenient switching between
buffers using substrings of their names. It replaces the normal
definitions of @kbd{C-x b}, @kbd{C-x 4 b}, @kbd{C-x 5 b}, and @kbd{C-x
4 C-o} with alternative commands that are somewhat ``smarter''.
Icomplete global minor mode provides a convenient way to quickly select an
element among the possible completions in a minibuffer. When enabled, typing
in the minibuffer continuously displays a list of possible completions that
match the string you have typed.
When one of these commands prompts you for a buffer name, you can
type in just a substring of the name you want to choose. As you enter
the substring, Iswitchb mode continuously displays a list of buffers
that match the substring you have typed.
At any time, you can type @key{RET} to select the first buffer in
the list. So the way to select a particular buffer is to make it the
At any time, you can type @key{C-j} to select the first completion in
the list. So the way to select a particular completion is to make it the
first in the list. There are two ways to do this. You can type more
of the buffer name and thus narrow down the list, excluding unwanted
buffers above the desired one. Alternatively, you can use @kbd{C-s}
and @kbd{C-r} to rotate the list until the desired buffer is first.
of the completion name and thus narrow down the list, excluding unwanted
completions above the desired one. Alternatively, you can use @kbd{C-.}
and @kbd{C-,} to rotate the list until the desired buffer is first.
@key{TAB} while entering the buffer name performs completion on the
string you have entered, based on the displayed list of buffers.
@key{M-TAB} will select the first completion in the list, like @key{C-j} but
without exiting the minibuffer, so you can edit it further. This is typically
used when entering a file name, where @key{M-TAB} can be used a few times to
descend in the hierarchy of directories.
To enable Iswitchb mode, type @kbd{M-x iswitchb-mode}, or customize
the variable @code{iswitchb-mode} to @code{t} (@pxref{Easy
To enable Icomplete mode, type @kbd{M-x icomplete-mode}, or customize
the variable @code{icomplete-mode} to @code{t} (@pxref{Easy
Customization}).
@node Buffer Menus

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2013 Free Software
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2014 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Building
@ -618,12 +618,12 @@ associated with an identifier when the program is not executing.
selecting stack frames, and stepping through the program.
@table @kbd
@item C-x @key{SPC}
@kindex C-x SPC
@item C-x C-a C-b
@kindex C-x C-a C-b
Set a breakpoint on the source line that point is on.
@end table
@kbd{C-x @key{SPC}} (@code{gud-break}), when called in a source
@kbd{C-x C-a C-b} (@code{gud-break}), when called in a source
buffer, sets a debugger breakpoint on the current source line. This
command is available only after starting GUD@. If you call it in a
buffer that is not associated with any debugger subprocess, it signals
@ -1348,6 +1348,7 @@ not from an existing Emacs buffer.
@findex load
@findex load-library
@vindex load-prefer-newer
@cindex load path for Emacs Lisp
If an Emacs Lisp file is installed in the Emacs Lisp @dfn{load path}
(defined below), you can load it by typing @kbd{M-x load-library},
@ -1356,15 +1357,18 @@ command prompts for a @dfn{library name} rather than a file name; it
searches through each directory in the Emacs Lisp load path, trying to
find a file matching that library name. If the library name is
@samp{@var{foo}}, it tries looking for files named
@file{@var{foo}.elc}, @file{@var{foo}.el}, and lastly just
@file{@var{foo}}; the first one found is loaded. This command prefers
@file{.elc} files over @file{.el} files because compiled files load
and run faster. If it finds that @file{@var{lib}.el} is newer than
@file{@var{lib}.elc}, it issues a warning, in case someone made
@file{@var{foo}.elc}, @file{@var{foo}.el}, and @file{@var{foo}}. The
default behaviour is to load the first file found. This command
prefers @file{.elc} files over @file{.el} files because compiled files
load and run faster. If it finds that @file{@var{lib}.el} is newer
than @file{@var{lib}.elc}, it issues a warning, in case someone made
changes to the @file{.el} file and forgot to recompile it, but loads
the @file{.elc} file anyway. (Due to this behavior, you can save
unfinished edits to Emacs Lisp source files, and not recompile until
your changes are ready for use.)
your changes are ready for use.) If you set the option
@code{load-prefer-newer} to a non-@code{nil} value, however, then
rather than the procedure described above, Emacs loads whichever
version of the file is newest.
Emacs Lisp programs usually load Emacs Lisp files using the
@code{load} function. This is similar to @code{load-library}, but is
@ -1422,6 +1426,7 @@ Emacs to crash. Set the variable @code{load-dangerous-libraries} to
@section Evaluating Emacs Lisp Expressions
@cindex Emacs Lisp mode
@cindex mode, Emacs Lisp
@cindex evaluation, Emacs Lisp
@findex emacs-lisp-mode
Emacs Lisp mode is the major mode for editing Emacs Lisp. Its mode
@ -1471,13 +1476,17 @@ expression.)
The command @kbd{C-x C-e} (@code{eval-last-sexp}) evaluates the
Emacs Lisp expression preceding point in the buffer, and displays the
value in the echo area. When the result of an evaluation is an
integer, you can type @kbd{C-x C-e} a second time to display the value
of the integer result in additional formats (octal, hexadecimal, and
character).
integer, it is displayed together with the value in other formats
(octal, hexadecimal, and character).
If @kbd{M-:} or @kbd{C-x C-e} is given a prefix argument, it inserts
the value into the current buffer at point, rather than displaying it
in the echo area. The argument's value does not matter.
in the echo area. If the prefix argument is zero, any integer output
is inserted together with its value in other formats (octal,
hexadecimal, and character). Such a prefix argument also prevents
abbreviation of the output according to the variables
@code{eval-expression-print-level} and @code{eval-expression-print-length}
(see below).
@kindex C-M-x @r{(Emacs Lisp mode)}
@findex eval-defun
@ -1511,9 +1520,11 @@ eval-buffer} is similar but evaluates the entire buffer.
The options @code{eval-expression-print-level} and
@code{eval-expression-print-length} control the maximum depth and
length of lists to print in the result of the evaluation commands
before abbreviating them. @code{eval-expression-debug-on-error}
controls whether evaluation errors invoke the debugger when these
commands are used; its default is @code{t}.
before abbreviating them. Supplying a zero prefix argument to
@code{eval-expression} or @code{eval-last-sexp} causes lists to be
printed in full. @code{eval-expression-debug-on-error} controls
whether evaluation errors invoke the debugger when these commands are
used; its default is @code{t}.
@node Lisp Interaction
@section Lisp Interaction Buffers

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual. -*- coding: iso-latin-1 -*-
@c Copyright (C) 2004-2013 Free Software Foundation, Inc.
@c This is part of the Emacs manual. -*- coding: utf-8 -*-
@c Copyright (C) 2004-2014 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@ -17,6 +17,7 @@ your personal tastes.
@menu
* Calendar Customizing:: Calendar layout and hooks.
* Holiday Customizing:: Defining your own holidays.
* Mayan Calendar:: Moving to a date specified in a Mayan calendar.
* Date Display Format:: Changing the format.
* Time Display Format:: Changing the format.
* Diary Customizing:: Defaults you can set.
@ -42,9 +43,12 @@ customize the variables @code{calendar-intermonth-header} and
@code{calendar-intermonth-text} as described in their documentation.
@vindex calendar-month-header
@vindex calendar-day-header-array
The variable @code{calendar-month-header} controls the text that
appears above each month in the calendar. By default, it shows the
month and year.
month and year. The variable @code{calendar-day-header-array}
controls the text that appears above each day's column in every month.
By default, it shows the first two letters of each day's name.
@vindex calendar-holiday-marker
@vindex diary-entry-marker
@ -67,7 +71,7 @@ the calendar).
Starting the calendar runs the normal hook
@code{calendar-initial-window-hook}. Recomputation of the calendar
display does not run this hook. But if you leave the calendar with the
@kbd{q} command and reenter it, the hook runs again.@refill
@kbd{q} command and reenter it, the hook runs again.
@vindex calendar-today-visible-hook
@findex calendar-star-date
@ -203,7 +207,7 @@ the month (1 specifies the first occurrence, 2 the second occurrence,
@minus{}1 the last occurrence, @minus{}2 the second-to-last occurrence, and
so on).
You can specify holidays that occur on fixed days of the Bahá'í,
You can specify holidays that occur on fixed days of the Bahá'í,
Chinese, Hebrew, Islamic, and Julian calendars too. For example,
@smallexample
@ -260,6 +264,99 @@ visible in the calendar window, with descriptive strings, like this:
(((6 4 2012) "Lunar Eclipse") ((11 13 2012) "Solar Eclipse") ... )
@end smallexample
@node Mayan Calendar
@subsection Converting from the Mayan Calendar
@cindex Mayan calendar
Here are the commands to select dates based on the Mayan calendar:
@table @kbd
@item g m l
Move to a date specified by the long count calendar
(@code{calendar-mayan-goto-long-count-date}).
@item g m n t
Move to the next occurrence of a place in the
tzolkin calendar (@code{calendar-mayan-next-tzolkin-date}).
@item g m p t
Move to the previous occurrence of a place in the
tzolkin calendar (@code{calendar-mayan-previous-tzolkin-date}).
@item g m n h
Move to the next occurrence of a place in the
haab calendar (@code{calendar-mayan-next-haab-date}).
@item g m p h
Move to the previous occurrence of a place in the
haab calendar (@code{calendar-mayan-previous-haab-date}).
@item g m n c
Move to the next occurrence of a place in the
calendar round (@code{calendar-mayan-next-calendar-round-date}).
@item g m p c
Move to the previous occurrence of a place in the
calendar round (@code{calendar-mayan-previous-calendar-round-date}).
@end table
@cindex Mayan long count
To understand these commands, you need to understand the Mayan calendars.
The @dfn{long count} is a counting of days with these units:
@display
1 kin = 1 day@ @ @ 1 uinal = 20 kin@ @ @ 1 tun = 18 uinal
1 katun = 20 tun@ @ @ 1 baktun = 20 katun
@end display
@kindex g m @r{(Calendar mode)}
@findex calendar-mayan-goto-long-count-date
@noindent
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.3, but no earlier. When you use the
@kbd{g m l} command, type the Mayan long count date with the baktun,
katun, tun, uinal, and kin separated by periods.
@findex calendar-mayan-previous-tzolkin-date
@findex calendar-mayan-next-tzolkin-date
@cindex Mayan tzolkin calendar
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 @kbd{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 @kbd{g m n t}
to go to the next occurrence of a tzolkin date.
@findex calendar-mayan-previous-haab-date
@findex calendar-mayan-next-haab-date
@cindex Mayan haab calendar
The Mayan haab calendar is a cycle of 365 days arranged as 18 months
of 20 days each, followed by 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
@kbd{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 @kbd{g m n h} to go to the next occurrence of a haab
date.
@c This is omitted because it is too long for smallbook format.
@c @findex calendar-mayan-previous-calendar-round-date
@findex calendar-mayan-next-calendar-round-date
@cindex Mayan calendar round
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
@emph{calendar round}. If you type @kbd{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 @kbd{g m n c} to move point to the
next occurrence of a combination. These commands signal an error if the
haab/tzolkin date combination you have typed is impossible.
Emacs uses strict completion
@iftex
(@pxref{Completion Exit,,, emacs, the Emacs Manual})
@end iftex
@ifnottex
(@pxref{Completion Exit})
@end ifnottex
whenever it asks you to type a Mayan name, so you don't have to worry
about spelling.
@node Date Display Format
@subsection Date Display Format
@vindex calendar-date-display-form
@ -420,7 +517,7 @@ the fourth pattern.
@subsection Diary Entries Using non-Gregorian Calendars
As well as entries based on the standard Gregorian calendar, your
diary can have entries based on Bahá'í, Hebrew, or Islamic dates.
diary can have entries based on Bahá'í, Hebrew, or Islamic dates.
Recognition of such entries can be time-consuming, however, and since
most people don't use them, you must explicitly enable their use. If
you want the diary to recognize Hebrew-date diary entries, for example,
@ -440,7 +537,7 @@ you must do this:
@end smallexample
@noindent
Similarly, for Islamic and Bahá'í entries, add
Similarly, for Islamic and Bahá'í entries, add
@code{diary-islamic-list-entries} and @code{diary-islamic-mark-entries}, or
@code{diary-bahai-list-entries} and @code{diary-bahai-mark-entries}.
@ -449,7 +546,7 @@ Similarly, for Islamic and Bah
@vindex diary-islamic-entry-symbol
These diary entries have the same formats as Gregorian-date diary
entries; except that @code{diary-bahai-entry-symbol} (default @samp{B})
must precede a Bahá'í date, @code{diary-hebrew-entry-symbol} (default
must precede a Bahá'í date, @code{diary-hebrew-entry-symbol} (default
@samp{H}) a Hebrew date, and @code{diary-islamic-entry-symbol} (default
@samp{I}) an Islamic date. Moreover, non-Gregorian month names may not
be abbreviated (because the first three letters are often not unique).
@ -476,7 +573,7 @@ nonmarking if preceded by @code{diary-nonmarking-symbol} (default
Here is a table of commands used in the calendar to create diary
entries that match the selected date and other dates that are similar in
the Bahá'í, Hebrew, or Islamic calendars:
the Bahá'í, Hebrew, or Islamic calendars:
@table @kbd
@item i h d
@ -537,7 +634,7 @@ example, to sort the entries by the dates they apply to.
Ordinarily, the fancy diary buffer does not show days for which there
are no diary entries, even if that day is a holiday. If you want such
days to be shown in the fancy diary buffer, set the variable
@code{diary-list-include-blanks} to @code{t}.@refill
@code{diary-list-include-blanks} to @code{t}.
The fancy diary buffer enables View mode
@iftex
@ -851,7 +948,7 @@ Make a diary entry with today's equivalent Julian calendar date.
@item %%(diary-astro-day-number)
Make a diary entry with today's equivalent astronomical (Julian) day number.
@item %%(diary-bahai-date)
Make a diary entry with today's equivalent Bahá'í calendar date.
Make a diary entry with today's equivalent Bahá'í calendar date.
@item %%(diary-chinese-date)
Make a diary entry with today's equivalent Chinese calendar date.
@item %%(diary-coptic-date)

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual. -*- coding: iso-latin-1 -*-
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2013 Free Software
@c This is part of the Emacs manual. -*- coding: utf-8 -*-
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2014 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Calendar/Diary
@ -304,6 +304,7 @@ Regenerate the calendar window (@code{calendar-redraw}).
@item SPC
Scroll the next window up (@code{scroll-other-window}).
@item DEL
@itemx S-SPC
Scroll the next window down (@code{scroll-other-window-down}).
@item q
Exit from calendar (@code{calendar-exit}).
@ -522,7 +523,7 @@ holidays centered around a different month, use @kbd{C-u M-x
holidays}, which prompts for the month and year.
The holidays known to Emacs include United States holidays and the
major Bahá'í, Chinese, Christian, Islamic, and Jewish holidays; also the
major Bahá'í, Chinese, Christian, Islamic, and Jewish holidays; also the
solstices and equinoxes.
@findex list-holidays
@ -678,7 +679,6 @@ and from several other calendars.
(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.
@end menu
@c FIXME perhaps most of the details should be moved to cal-xtra.
@ -760,8 +760,8 @@ days are named by combining one of ten ``celestial stems'' with one of
twelve ``terrestrial branches'' for a total of sixty names that are
repeated in a cycle of sixty.
@cindex Bahá'í calendar
The Bahá'í calendar system is based on a solar cycle of 19 months with
@cindex Bahá'í calendar
The Bahá'í calendar system is based on a solar cycle of 19 months with
19 days each. The four remaining ``intercalary'' days are placed
between the 18th and 19th months.
@ -801,7 +801,7 @@ Display French Revolutionary date for selected day
(@code{calendar-french-print-date}).
@findex calendar-bahai-print-date
@item p b
Display Bahá'í date for selected day
Display Bahá'í date for selected day
(@code{calendar-bahai-print-date}).
@findex calendar-chinese-print-date
@item p C
@ -869,7 +869,7 @@ Move to a date specified in the Julian calendar
Move to a date specified with an astronomical (Julian) day number
(@code{calendar-astro-goto-day-number}).
@item g b
Move to a date specified in the Bahá'í calendar
Move to a date specified in the Bahá'í calendar
(@code{calendar-bahai-goto-date}).
@item g h
Move to a date specified in the Hebrew calendar
@ -913,93 +913,6 @@ 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.
@c FIXME move to emacs-xtra.
@node Mayan Calendar
@subsection Converting from the Mayan Calendar
Here are the commands to select dates based on the Mayan calendar:
@table @kbd
@item g m l
Move to a date specified by the long count calendar
(@code{calendar-mayan-goto-long-count-date}).
@item g m n t
Move to the next occurrence of a place in the
tzolkin calendar (@code{calendar-mayan-next-tzolkin-date}).
@item g m p t
Move to the previous occurrence of a place in the
tzolkin calendar (@code{calendar-mayan-previous-tzolkin-date}).
@item g m n h
Move to the next occurrence of a place in the
haab calendar (@code{calendar-mayan-next-haab-date}).
@item g m p h
Move to the previous occurrence of a place in the
haab calendar (@code{calendar-mayan-previous-haab-date}).
@item g m n c
Move to the next occurrence of a place in the
calendar round (@code{calendar-mayan-next-calendar-round-date}).
@item g m p c
Move to the previous occurrence of a place in the
calendar round (@code{calendar-mayan-previous-calendar-round-date}).
@end table
@cindex Mayan long count
To understand these commands, you need to understand the Mayan calendars.
The @dfn{long count} is a counting of days with these units:
@display
1 kin = 1 day@ @ @ 1 uinal = 20 kin@ @ @ 1 tun = 18 uinal
1 katun = 20 tun@ @ @ 1 baktun = 20 katun
@end display
@kindex g m @r{(Calendar mode)}
@findex calendar-mayan-goto-long-count-date
@noindent
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.3, but no earlier. When you use the
@kbd{g m l} command, type the Mayan long count date with the baktun,
katun, tun, uinal, and kin separated by periods.
@findex calendar-mayan-previous-tzolkin-date
@findex calendar-mayan-next-tzolkin-date
@cindex Mayan tzolkin calendar
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 @kbd{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 @kbd{g m n t}
to go to the next occurrence of a tzolkin date.
@findex calendar-mayan-previous-haab-date
@findex calendar-mayan-next-haab-date
@cindex Mayan haab calendar
The Mayan haab calendar is a cycle of 365 days arranged as 18 months
of 20 days each, followed by 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
@kbd{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 @kbd{g m n h} to go to the next occurrence of a haab
date.
@c This is omitted because it is too long for smallbook format.
@c @findex calendar-mayan-previous-calendar-round-date
@findex calendar-mayan-next-calendar-round-date
@cindex Mayan calendar round
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
@emph{calendar round}. If you type @kbd{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 @kbd{g m n c} to move point to the
next occurrence of a combination. These commands signal an error if the
haab/tzolkin date combination you have typed is impossible.
Emacs uses strict completion (@pxref{Completion Exit}) whenever it
asks you to type a Mayan name, so you don't have to worry about
spelling.
@node Diary
@section The Diary
@cindex diary
@ -1435,7 +1348,7 @@ mean ``second'', @minus{}2 would mean ``second-to-last'', and so on).
The month can be a single month or a list of months. Thus you could change
the 11 above to @samp{'(1 2 3)} and have the entry apply to the last
Thursday of January, February, and March. If the month is @code{t}, the
entry applies to all months of the year.@refill
entry applies to all months of the year.
Each of the standard sexp diary entries takes an optional parameter
specifying the name of a face or a single-character string to use when
@ -1542,7 +1455,8 @@ variety of other formats.
messages. While viewing such a message in Rmail or Gnus, do @kbd{M-x
diary-from-outlook} to import the entry. You can make this command
recognize additional appointment message formats by customizing the
variable @code{diary-outlook-formats}.
variable @code{diary-outlook-formats}. Other mail clients can set
@code{diary-from-outlook-function} to an appropriate value.
@c FIXME the name of the RFC is hardly very relevant.
@cindex iCalendar support
@ -1702,11 +1616,11 @@ you. You can, however, customize the value of the variable
then, only an explicit @kbd{M-x timeclock-out} or @kbd{M-x
timeclock-change} will tell Emacs that the current interval is over.
@cindex @file{.timelog} file
@cindex @file{timelog} file
@vindex timeclock-file
@findex timeclock-reread-log
The timeclock functions work by accumulating the data in a file
called @file{.timelog} in your home directory. You can specify a
called @file{~/.emacs.d/timelog}. You can specify a
different name for this file by customizing the variable
@code{timeclock-file}. If you edit the timeclock file manually, or if
you change the value of any of timeclock's customizable variables, you

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2013 Free Software
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2014 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Emacs Invocation
@ -10,6 +10,7 @@
@cindex switches (command line)
@cindex startup (command line arguments)
@cindex invocation (command line arguments)
@c FIXME: Document `--smid'? --xfq
Emacs supports command line arguments to request various actions
when invoking Emacs. These are for compatibility with other editors
@ -135,7 +136,14 @@ visited.
@opindex -L
@itemx --directory=@var{dir}
@opindex --directory
Add directory @var{dir} to the variable @code{load-path}.
Prepend directory @var{dir} to the variable @code{load-path}.
If you specify multiple @samp{-L} options, Emacs preserves the
relative order; i.e., using @samp{-L /foo -L /bar} results in
a @code{load-path} of the form @code{("/foo" "/bar" @dots{})}.
If @var{dir} begins with @samp{:}, Emacs removes the @samp{:} and
appends (rather than prepends) the remainder to @code{load-path}.
(On MS Windows, use @samp{;} instead of @samp{:}; i.e., use
the value of @code{path-separator}.)
@item -f @var{function}
@opindex -f
@ -251,7 +259,8 @@ terminal's standard input stream (@code{stdin}) instead.
but @file{site-start.el} is loaded nonetheless. It also causes Emacs
to exit after processing all the command options. In addition, it
disables auto-saving except in buffers for which auto-saving is
explicitly requested.
explicitly requested, and when saving files it omits the @code{fsync}
system call unless otherwise requested.
@item --script @var{file}
@opindex --script
@ -437,8 +446,8 @@ when you specify a relative directory name.
@item DBUS_SESSION_BUS_ADDRESS
Used by D-Bus when Emacs is compiled with it. Usually, there is no
need to change it. Setting it to a dummy address, like
@samp{unix:path=/tmp/foo}, suppresses connections to the D-Bus session
bus.
@samp{unix:path=/dev/null}, suppresses connections to the D-Bus session
bus as well as autolaunching the D-Bus session bus if not running yet.
@item EMACSDATA
Directory for the architecture-independent files that come with Emacs.
This is used to initialize the variable @code{data-directory}.
@ -446,13 +455,16 @@ This is used to initialize the variable @code{data-directory}.
Directory for the documentation string file, which is used to
initialize the Lisp variable @code{doc-directory}.
@item EMACSLOADPATH
A colon-separated list of directories@footnote{ Here and below,
A colon-separated list of directories@footnote{Here and below,
whenever we say ``colon-separated list of directories'', it pertains
to Unix and GNU/Linux systems. On MS-DOS and MS-Windows, the
directories are separated by semi-colons instead, since DOS/Windows
file names might include a colon after a drive letter.} to search for
Emacs Lisp files. If set, it overrides the usual initial value of the
@code{load-path} variable (@pxref{Lisp Libraries}).
file names might include a colon after a drive letter.} to search for
Emacs Lisp files. If set, it modifies the usual initial value of the
@code{load-path} variable (@pxref{Lisp Libraries}). An empty element
stands for the default value of @code{load-path}; e.g., using
@samp{EMACSLOADPATH="/tmp:"} adds @file{/tmp} to the front of
the default @code{load-path}.
@item EMACSPATH
A colon-separated list of directories to search for executable files.
If set, Emacs uses this in addition to @env{PATH} (see below) when

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2013 Free Software
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2014 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@iftex

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2013 Free Software
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2014 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Customization
@ -345,7 +345,7 @@ hidden, nor on subgroups that are hidden or not visible in the buffer.
@kindex C-x C-c @r{(customization buffer)}
@findex Custom-set
@findex Custom-save
The command @kbd{C-c C-c} (@code{Custom-set}) is equivalent using to
The command @kbd{C-c C-c} (@code{Custom-set}) is equivalent to using
the @samp{[Set for Current Session]} button. The command @kbd{C-x
C-s} (@code{Custom-save}) is like using the @samp{[Save for Future
Sessions]} button.
@ -1166,7 +1166,10 @@ conversion of this file. @xref{Coding Systems}.
@item
@code{unibyte} says to load or compile a file of Emacs Lisp in unibyte
mode, if the value is @code{t}. @xref{Disabling Multibyte}.
mode, if the value is @code{t}. @xref{Disabling Multibyte, ,
Disabling Multibyte Characters, elisp, GNU Emacs Lisp Reference
Manual}.
@end itemize
@noindent
@ -2185,7 +2188,7 @@ sequences are mandatory.
@samp{\C-} can be used as a prefix for a control character, as in
@samp{\C-s} for @acronym{ASCII} control-S, and @samp{\M-} can be used as a prefix for
a Meta character, as in @samp{\M-a} for @kbd{Meta-A} or @samp{\M-\C-a} for
@kbd{Control-Meta-A}.@refill
@kbd{Control-Meta-A}.
@xref{Init Non-ASCII}, for information about including
non-@acronym{ASCII} in your init file.
@ -2448,7 +2451,7 @@ it is run on that type of terminal. For a terminal type named
found by searching the directories @code{load-path} as usual and trying the
suffixes @samp{.elc} and @samp{.el}. Normally it appears in the
subdirectory @file{term} of the directory where most Emacs libraries are
kept.@refill
kept.
The usual purpose of the terminal-specific library is to map the
escape sequences used by the terminal's function keys onto more
@ -2463,7 +2466,7 @@ function keys that Termcap does not specify.
before the first hyphen is significant in choosing the library name.
Thus, terminal types @samp{aaa-48} and @samp{aaa-30-rv} both use
the library @file{term/aaa}. The code in the library can use
@code{(getenv "TERM")} to find the full terminal type name.@refill
@code{(getenv "TERM")} to find the full terminal type name.
@vindex term-file-prefix
The library's name is constructed by concatenating the value of the

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
@c Copyright (C) 2004-2013 Free Software Foundation, Inc.
@c Copyright (C) 2004-2014 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2013 Free Software
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2014 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Dired
@ -281,9 +281,9 @@ say they are backup files---that is, files whose names end in
the backup files for deletion: all but the oldest few and newest few
backups of any one file. Normally, the number of newest versions kept
for each file is given by the variable @code{dired-kept-versions}
(@strong{not} @code{kept-new-versions}; that applies only when
saving). The number of oldest versions to keep is given by the
variable @code{kept-old-versions}.
(@emph{not} @code{kept-new-versions}; that applies only when saving).
The number of oldest versions to keep is given by the variable
@code{kept-old-versions}.
Period with a positive numeric argument, as in @kbd{C-u 3 .},
specifies the number of newest versions to keep, overriding
@ -1108,7 +1108,8 @@ can use hiding to temporarily exclude subdirectories from operations
without having to remove the Dired marks on files in those
subdirectories.
@xref{Dired Updating}, for how to insert or delete a subdirectory listing.
@xref{Subdirectories in Dired}, for how to insert a subdirectory
listing, and @pxref{Dired Updating} for how delete it.
@node Dired Updating
@section Updating the Dired Buffer
@ -1382,7 +1383,7 @@ file, the search wraps around to the first marked file. The command
a regular expression search. @xref{Repeat Isearch}, for information
about search repetition.
@cindex Adding to the kill ring in Dired.
@cindex adding to the kill ring in Dired
@kindex w @r{(Dired)}
@findex dired-copy-filename-as-kill
The command @kbd{w} (@code{dired-copy-filename-as-kill}) puts the
@ -1403,6 +1404,19 @@ names into arguments for other Emacs commands. It also displays what
it added to the kill ring, so you can use it to display the list of
currently marked files in the echo area.
@kindex ( @r{(Dired)}
@findex dired-hide-details-mode
@vindex dired-hide-details-hide-symlink-targets
@vindex dired-hide-details-hide-information-lines
@cindex hiding details in Dired
The command @kbd{(} (@code{dired-hide-details-mode}) toggles whether
details, such as ownership or file permissions, are visible in the
current Dired buffer. By default, it also hides the targets of
symbolic links, and all lines other than the header line and
file/directory listings. To change this, customize the options
@code{dired-hide-details-hide-symlink-targets} and
@code{dired-hide-details-hide-information-lines}, respectively.
@cindex Dired and version control
If the directory you are visiting is under version control
(@pxref{Version Control}), then the normal VC diff and log commands

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2013 Free Software
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2014 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@ -428,8 +428,8 @@ it. @xref{Disabling}.
screenfuls. It provides commands for scrolling through the buffer
conveniently but not for changing it. Apart from the usual Emacs
cursor motion commands, you can type @key{SPC} to scroll forward one
windowful, @key{DEL} to scroll backward, and @kbd{s} to start an
incremental search.
windowful, @key{S-SPC} or @key{DEL} to scroll backward, and @kbd{s} to
start an incremental search.
@kindex q @r{(View mode)}
@kindex e @r{(View mode)}
@ -710,6 +710,17 @@ This face determines the color of tool bar icons. @xref{Tool Bars}.
@cindex customization of @code{menu} face
This face determines the colors and font of Emacs's menus. @xref{Menu
Bars}.
@item tty-menu-enabled-face
@cindex faces for text-mode menus
@cindex TTY menu faces
This face is used to display enabled menu items on text-mode
terminals.
@item tty-menu-disabled-face
This face is used to display disabled menu items on text-mode
terminals.
@item tty-menu-selected-face
This face is used to display on text-mode terminals the menu item that
would be selected if you click a mouse or press @key{RET}.
@end table
@node Text Scale
@ -732,9 +743,9 @@ determine which action to take.
@kbd{C-x}. For instance, @kbd{C-x C-= C-= C-=} increases the face
height by three steps. Each step scales the text height by a factor
of 1.2; to change this factor, customize the variable
@code{text-scale-mode-step}. As an exception, a numeric argument of 0
@code{text-scale-mode-step}. A numeric argument of 0
to the @code{text-scale-adjust} command restores the default height,
similar to typing @kbd{C-x C-0}.
the same as typing @kbd{C-x C-0}.
@cindex increase buffer face height
@findex text-scale-increase
@ -903,22 +914,32 @@ that you specify explicitly the regular expressions to highlight. You
control them with these commands:
@table @kbd
@item C-x w h @var{regexp} @key{RET} @var{face} @key{RET}
@item M-s h r @var{regexp} @key{RET} @var{face} @key{RET}
@itemx C-x w h @var{regexp} @key{RET} @var{face} @key{RET}
@kindex M-s h r
@kindex C-x w h
@findex highlight-regexp
Highlight text that matches @var{regexp} using face @var{face}
(@code{highlight-regexp}). The highlighting will remain as long as
the buffer is loaded. For example, to highlight all occurrences of
the word ``whim'' using the default face (a yellow background)
@kbd{C-x w h whim @key{RET} @key{RET}}. Any face can be used for
@kbd{M-s h r whim @key{RET} @key{RET}}. Any face can be used for
highlighting, Hi Lock provides several of its own and these are
pre-loaded into a list of default values. While being prompted
for a face use @kbd{M-n} and @kbd{M-p} to cycle through them.
@vindex hi-lock-auto-select-face
Setting the option @code{hi-lock-auto-select-face} to a non-@code{nil}
value causes this command (and other Hi Lock commands that read faces)
to automatically choose the next face from the default list without
prompting.
You can use this command multiple times, specifying various regular
expressions to highlight in different ways.
@item C-x w r @var{regexp} @key{RET}
@item M-s h u @var{regexp} @key{RET}
@itemx C-x w r @var{regexp} @key{RET}
@kindex M-s h u
@kindex C-x w r
@findex unhighlight-regexp
Unhighlight @var{regexp} (@code{unhighlight-regexp}).
@ -926,13 +947,15 @@ Unhighlight @var{regexp} (@code{unhighlight-regexp}).
If you invoke this from the menu, you select the expression to
unhighlight from a list. If you invoke this from the keyboard, you
use the minibuffer. It will show the most recently added regular
expression; use @kbd{M-p} to show the next older expression and
@kbd{M-n} to select the next newer expression. (You can also type the
expression; use @kbd{M-n} to show the next older expression and
@kbd{M-p} to select the next newer expression. (You can also type the
expression by hand, with completion.) When the expression you want to
unhighlight appears in the minibuffer, press @kbd{@key{RET}} to exit
the minibuffer and unhighlight it.
@item C-x w l @var{regexp} @key{RET} @var{face} @key{RET}
@item M-s h l @var{regexp} @key{RET} @var{face} @key{RET}
@itemx C-x w l @var{regexp} @key{RET} @var{face} @key{RET}
@kindex M-s h l
@kindex C-x w l
@findex highlight-lines-matching-regexp
@cindex lines, highlighting
@ -940,7 +963,31 @@ the minibuffer and unhighlight it.
Highlight entire lines containing a match for @var{regexp}, using face
@var{face} (@code{highlight-lines-matching-regexp}).
@item C-x w b
@item M-s h p @var{phrase} @key{RET} @var{face} @key{RET}
@itemx C-x w p @var{phrase} @key{RET} @var{face} @key{RET}
@kindex M-s h p
@kindex C-x w p
@findex highlight-phrase
@cindex phrase, highlighting
@cindex highlighting phrase
Highlight matches of @var{phrase}, using face @var{face}
(@code{highlight-phrase}). @var{phrase} can be any regexp,
but spaces will be replaced by matches to whitespace and
initial lower-case letters will become case insensitive.
@item M-s h .
@itemx C-x w .
@kindex M-s h .
@kindex C-x w .
@findex highlight-symbol-at-point
@cindex symbol, highlighting
@cindex highlighting symbol at point
Highlight the symbol found near point, using the next available face
(@code{highlight-symbol-at-point}).
@item M-s h w
@itemx C-x w b
@kindex M-s h w
@kindex C-x w b
@findex hi-lock-write-interactive-patterns
Insert all the current highlighting regexp/face pairs into the buffer
@ -952,7 +999,9 @@ These patterns are extracted from the comments, if appropriate, if you
invoke @kbd{M-x hi-lock-find-patterns}, or if you visit the file while
Hi Lock mode is enabled (since that runs @code{hi-lock-find-patterns}).
@item C-x w i
@item M-s h f
@itemx C-x w i
@kindex M-s h f
@kindex C-x w i
@findex hi-lock-find-patterns
Extract regexp/face pairs from comments in the current buffer
@ -985,12 +1034,15 @@ mode's symbol is a member of the list @code{hi-lock-exclude-modes}.
@findex set-fringe-style
@findex fringe-mode
@vindex fringe-mode @r{(variable)}
On graphical displays, each Emacs window normally has narrow
@dfn{fringes} on the left and right edges. The fringes are used to
display symbols that provide information about the text in the window.
You can type @kbd{M-x fringe-mode} to disable the fringes, or modify
their width. This command affects fringes in all frames; to modify
fringes on the selected frame only, use @kbd{M-x set-fringe-style}.
You can make your changes to the fringes permanent by customizing the
variable @code{fringe-mode}.
The most common use of the fringes is to indicate a continuation
line (@pxref{Continuation Lines}). When one line of text is split
@ -1279,7 +1331,7 @@ specify the mail file to check, or set
for incoming mail (any nonempty regular file in the directory is
considered as ``newly arrived mail'').
@cindex mail (on mode line)
@cindex battery status (on mode line)
@findex display-battery-mode
@vindex display-battery-mode
@vindex battery-mode-line-format
@ -1427,8 +1479,12 @@ pixels tall), or @code{nil} (no cursor at all).
@findex blink-cursor-mode
@cindex cursor, blinking
@cindex blinking cursor
@vindex blink-cursor-mode
@vindex blink-cursor-blinks
@vindex blink-cursor-alist
To disable cursor blinking, change the variable
By default, the cursor stops blinking after 10 blinks. This can be
changed by customizing the variable @code{blink-cursor-blinks}. To
disable cursor blinking altogether, change the variable
@code{blink-cursor-mode} to @code{nil} (@pxref{Easy Customization}),
or add the line @code{(blink-cursor-mode 0)} to your init file.
Alternatively, you can change how the cursor looks when it ``blinks

View file

@ -11,7 +11,7 @@
@copying
This manual describes specialized features of Emacs.
Copyright @copyright{} 2004--2013 Free Software Foundation, Inc.
Copyright @copyright{} 2004--2014 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@ -26,7 +26,7 @@ modify this GNU manual.''
@end quotation
@end copying
@documentencoding ISO-8859-1
@documentencoding UTF-8
@dircategory Emacs
@direntry

Some files were not shown because too many files have changed in this diff Show more