This commit is contained in:
Joakim Verona 2014-06-04 23:50:06 +02:00
commit ce8171797d
2595 changed files with 148821 additions and 132452 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")

10
.gitignore vendored
View file

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

1028
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,12 +32,6 @@
# run "configure" by hand. But run autogen.sh first, if the source
# was checked out directly from the repository.
ifneq ($(MSYSTEM),)
CFG = CONFIG_SITE=$(CURDIR)/nt/mingw-cfg.site
else
CFG =
endif
# If a Makefile already exists, just use it.
ifeq ($(wildcard Makefile),Makefile)
@ -61,22 +55,30 @@ else
# Once 'configure' exists, run it.
# Finally, run the actual 'make'.
default $(filter-out configure Makefile,$(MAKECMDGOALS)): Makefile
ORDINARY_GOALS = $(filter-out configure Makefile bootstrap,$(MAKECMDGOALS))
default $(ORDINARY_GOALS): Makefile
$(MAKE) -f Makefile $(MAKECMDGOALS)
# Execute in sequence, so that multiple user goals don't conflict.
.NOTPARALLEL:
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
@echo >&2 'There seems to be no Makefile in this directory.'
@echo >&2 'Running ./configure ...'
$(CFG) ./configure
./configure
@echo >&2 'Makefile built.'
# 'make bootstrap' in a fresh checkout needn't run 'configure' twice.
bootstrap: Makefile
$(MAKE) -f Makefile all
.PHONY: bootstrap default $(ORDINARY_GOALS)
endif
endif

151
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
@ -24,6 +24,9 @@ find some things, or what options to use.
`src/config.h' file containing system-dependent definitions.
Running the `make' utility then builds the package for your system.
Building Emacs requires GNU make, <http://www.gnu.org/software/make/>.
On most systems that Emacs supports, this is the default `make' program.
Here's the procedure to build Emacs using `configure' on systems which
are supported by it. In some cases, if the simplified procedure fails,
you might need to use various non-default options, and maybe perform
@ -49,7 +52,6 @@ sections if you need to.
SOURCE-DIR/configure
where SOURCE-DIR is the top-level Emacs source directory.
This may not work unless you use GNU make.
3. When `configure' finishes, it prints several lines of details
about the system configuration. Read those details carefully
@ -62,9 +64,8 @@ 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
@ -117,19 +118,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.
@ -154,37 +143,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
@ -264,18 +256,15 @@ 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
pkg-config. Note that GTK version 2.6 or newer is required for Emacs.
You can tell configure where to search for GTK by giving it the
argument PKG_CONFIG='/full/name/of/pkg-config'. GTK version 2.6 or
newer is required for Emacs.
Emacs will autolaunch a D-Bus session bus, when the environment
variable DISPLAY is set, but no session bus is running. This might be
@ -292,7 +281,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,
@ -305,8 +294,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.
@ -343,12 +331,17 @@ and is useful with GNU-compatible compilers. On a recent GNU system
there should be no warnings; on older and on non-GNU systems the
generated warnings may still be useful.
Use --enable-link-time-optimization to enable link-time optimizer, which
is available in GNU compiler since version 4.5.0. If your compiler is not
GNU or older than version 4.5.0, this option does nothing. If `configure'
can determine number of online CPUS on your system, final link-time
optimization and code generation is executed in parallel using one job
per each available online CPU.
Use --enable-link-time-optimization to enable link-time optimizer. If
you're using GNU compiler, this feature is supported since version 4.5.0.
If `configure' can determine number of online CPUS on your system, final
link-time optimization and code generation is executed in parallel using
one job per each available online CPU.
This option is also supported for clang. You should have GNU binutils
with `gold' linker and plugin support, and clang with LLVMgold.so plugin.
Read http://llvm.org/docs/GoldPlugin.html for details. Also note that
this feature is still experimental, so prepare to build binutils and
clang from the corresponding source code repositories.
The `--prefix=PREFIXDIR' option specifies where the installation process
should put emacs and its data files. This defaults to `/usr/local'.
@ -415,10 +408,11 @@ compiler. By default, gcc is used if available.
Here's an example of a `configure' invocation, assuming a Bourne-like
shell such as Bash, which uses these variables:
CPPFLAGS='-I/foo/myinclude' LDFLAGS='-L/bar/mylib' \
CFLAGS='-O3' LIBS='-lfoo -lbar' ./configure
./configure \
CPPFLAGS='-I/foo/myinclude' LDFLAGS='-L/bar/mylib' \
CFLAGS='-O3' LIBS='-lfoo -lbar'
(this is all one long line). This tells `configure' to instruct the
(this is all one shell command). This tells `configure' to instruct the
preprocessor to look in the `/foo/myinclude' directory for header
files (in addition to the standard directories), instruct the linker
to look in `/bar/mylib' for libraries, pass the -O3 optimization
@ -428,12 +422,11 @@ libraries in addition to the standard ones.
For some libraries, like Gtk+, fontconfig and ALSA, `configure' uses
pkg-config to find where those libraries are installed.
If you want pkg-config to look in special directories, you have to set
the environment variable PKG_CONFIG_PATH to point to the directories
where the .pc-files for those libraries are.
For example:
PKG_CONFIG_PATH to point to the directories where the .pc-files for
those libraries are. For example:
PKG_CONFIG_PATH='/usr/local/alsa/lib/pkgconfig:/opt/gtk+-2.8/lib/pkgconfig' \
./configure
./configure \
PKG_CONFIG_PATH='/usr/local/alsa/lib/pkgconfig:/opt/gtk+-2.8/lib/pkgconfig'
The work of `configure' can be done by editing various files in the
distribution, but using `configure' is easier. See the section called
@ -449,12 +442,8 @@ SOURCE-DIR refers to the top-level Emacs source directory which is
where Emacs's configure script is located. `configure' looks for the
Emacs source code in the directory that `configure' is in.
To build in a separate directory, you must use a version of `make'
that supports the `VPATH' variable, such as GNU `make'.
(Do not try to build in a separate directory by creating many links
to the real source directory--there is no need, and installation will
fail.)
(Do not try to build in a separate directory by creating many links to
the real source directory--there is no need, and installation will fail.)
4) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
Lisp code you want Emacs to load before it is dumped out. Use
@ -480,10 +469,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.
@ -744,8 +729,8 @@ Strictly speaking, not all of the executables in `./lib-src' need be copied.
are used by Emacs; they do need to be copied.
- The programs `etags', `ctags', and `emacsclient' are intended to be
run by users; they are handled below.
- The programs `make-docfile' and `test-distrib' were
used in building Emacs, and are not needed any more.
- The program `make-docfile' was used in building Emacs, and is
not needed any more.
2) Copy the files in `./info' to the place specified in
`./lisp/site-init.el' or `./lisp/info.el'. Note that if the

View file

@ -1,98 +0,0 @@
Copyright (C) 2002-2013 Free Software Foundation, Inc.
See the end of the file for license conditions.
Building and Installing Emacs from Bazaar
Building Emacs from Bazaar 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).
automake - at least the version specified near the start of
configure.ac (in the AM_INIT_AUTOMAKE command).
makeinfo - not strictly necessary, but highly recommended, so that
you can build the manuals.
The `autogen.sh' script can help you figure out if you have the
necessary tools.
The first time you build, there are a couple of extra steps.
First, generate the `configure' script and some related files:
$ ./autogen.sh
(or you can just run `autoreconf -i -I m4').
You can then configure your build (use `./configure --help' to see
options you can set):
$ ./configure
If you want later builds to go faster, at the expense of sometimes
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":
$ 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
much quicker.
$ make
(If you want to install the Emacs binary, type "make install" instead
of "make" in the last command.)
Occasionally the file "lisp/loaddefs.el" (and similar automatically
generated files, such as esh-groups.el, and *-loaddefs.el in some
subdirectories of lisp/, e.g. mh-e/ and calendar/) will need to be
updated to reflect new autoloaded functions. If you see errors (rather
than warnings) about undefined lisp functions during compilation, that
may be the reason. Finally, sometimes there can be build failures
related to *loaddefs.el (e.g. "required feature `esh-groups' was not
provided"). In that case, follow the instructions below.
To update loaddefs.el (and similar files), do:
$ cd lisp
$ make autoloads
If either of the above partial procedures fails, try "make bootstrap".
If CPU time is not an issue, the most thorough way to rebuild, and
avoid any spurious problems, is always to use this method.
Users of non-Posix systems (MS-Windows etc.) should run the
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
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
problem is known about and is just waiting for someone to fix it.
This is especially true for Lisp compilation errors, which are almost
never platform-specific.
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/>.

85
INSTALL.REPO Normal file
View file

@ -0,0 +1,85 @@
Building and Installing Emacs from the Repository
Simply run 'make'. This should work if your files are freshly checked
out from the repository, and if you have the proper tools installed.
If it doesn't work, or if you have special build requirements, the
following information may be helpful.
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).
automake - at least the version specified near the start of
configure.ac (in the AM_INIT_AUTOMAKE command).
makeinfo - not strictly necessary, but highly recommended, so that
you can build the manuals.
To use the autotools, run the following shell command to generate the
'configure' script and some related files:
$ ./autogen.sh
You can then configure your build as follows:
$ ./configure
The 'configure' script has many options; run './configure --help' to
see them. For example, if you want later builds to go faster, albeit
sometimes doing the wrong thing if you update the build procedure, you
can invoke './configure -C'. After configuring, build Emacs as follows:
$ make
If you want to install Emacs, type 'make install' instead of 'make' in
the last command.
Occasionally the file 'lisp/loaddefs.el' (and similar automatically
generated files, such as 'esh-groups.el', and '*-loaddefs.el' in some
subdirectories of 'lisp/', e.g., 'mh-e/' and 'calendar/') will need to be
updated to reflect new autoloaded functions. If you see errors (rather
than warnings) about undefined lisp functions during compilation, that
may be the reason. Finally, sometimes there can be build failures
related to '*loaddefs.el' (e.g., "required feature `esh-groups' was not
provided"). In that case, follow the instructions below.
To update loaddefs.el (and similar files), do:
$ cd lisp
$ make autoloads
If either of the above partial procedures fails, try 'make bootstrap'.
If CPU time is not an issue, 'make bootstrap' is the most thorough way
to rebuild, and avoid any spurious problems.
Users of non-Posix systems (MS-Windows, etc.) should run the
platform-specific configuration scripts ('nt/configure.bat',
'config.bat', etc.) before 'make'; the rest of the procedure is
applicable to those systems as well.
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
problem is known about and is just waiting for someone to fix it.
This is especially true for Lisp compilation errors, which are almost
never platform-specific.
Copyright (C) 2002-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/>.

View file

@ -1,6 +1,6 @@
### @configure_input@
# Copyright (C) 1992-2013 Free Software Foundation, Inc.
# Copyright (C) 1992-2014 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@ -48,6 +48,8 @@
#
# make extraclean
# Still more severe - delete backup and autosave files, too.
# Also generated files that do not normally change and can be slow
# to rebuild (eg leim/ja-dic).
#
# make bootstrap
# Removes all the compiled files to force a new bootstrap from a
@ -58,8 +60,8 @@
SHELL = @SHELL@
# This may not work with certain non-GNU make's. It only matters when
# inheriting a CDPATH not starting with the current directory.
# This only matters when inheriting a CDPATH not starting with the
# current directory.
CDPATH=
# If Make doesn't predefine MAKE, set it here.
@ -163,6 +165,9 @@ bitmapdir=@bitmapdir@
# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
srcdir=@srcdir@
abs_srcdir=@abs_srcdir@
# MinGW CPPFLAGS may use this.
abs_top_srcdir=@abs_top_srcdir@
# Where the manpage source files are kept.
mansrcdir=$(srcdir)/doc/man
@ -187,15 +192,13 @@ iconsrcdir=$(srcdir)/etc/images/icons
# These variables hold the values Emacs will actually use. They are
# based on the values of the standard Make variables above.
# Where to install the lisp, leim files distributed with
# Emacs. This includes the Emacs version, so that the
# lisp files for different versions of Emacs will install
# themselves in separate directories.
# Where to install the lisp files distributed with Emacs.
# This includes the Emacs version, so that the lisp files for different
# versions of Emacs will install themselves in separate directories.
lispdir=@lispdir@
leimdir=@leimdir@
# Directories Emacs should search for standard lisp files.
# The default is ${lispdir}:${leimdir}.
# The default is ${lispdir}.
standardlisppath=@standardlisppath@
# Directories Emacs should search for lisp files specific to this
@ -210,13 +213,14 @@ locallisppath=@locallisppath@
# The default is ${locallisppath}:${standardlisppath}.
lisppath=@lisppath@
# Where Emacs will search for its lisp files while
# building. This is only used during the process of
# compiling Emacs, to help Emacs find its lisp files
# before they've been installed in their final location.
# Where Emacs will search for its lisp files while building.
# This is only used during the process of compiling Emacs,
# to help Emacs find its lisp files before they've been installed
# in their final location.
# This should be a colon-separated list of directories.
# Normally it points to the lisp/ directory in the sources.
buildlisppath=${srcdir}/lisp
# NB lread.c relies on lisp/ being first here.
buildlisppath=${abs_srcdir}/lisp
# Where to install the other architecture-independent
# data files distributed with Emacs (like the tutorial,
@ -271,7 +275,7 @@ EMACS = ${EMACS_NAME}${EXEEXT}
EMACSFULL = `echo emacs-${version} | sed '$(TRANSFORM)'`${EXEEXT}
# Subdirectories to make recursively.
SUBDIR = $(NTDIR) lib lib-src src lisp leim
SUBDIR = $(NTDIR) lib lib-src src lisp
# The subdir makefiles created by config.status.
SUBDIR_MAKEFILES_IN = @SUBDIR_MAKEFILES_IN@
@ -280,14 +284,13 @@ SUBDIR_MAKEFILES = `echo $(SUBDIR_MAKEFILES_IN:.in=) | sed 's|$(srcdir)/||g'`
# Subdirectories to install, and where they'll go. lib-src's and nt's
# makefiles know how to install them, so we don't do that here.
# Directories that cannot simply be copied, eg info, are treated
# separately. quail appears twice because in out-of-tree builds, it
# exists twice.
COPYDIR = ${srcdir}/etc ${srcdir}/lisp ${srcdir}/leim/ja-dic ${srcdir}/leim/quail leim/quail
COPYDESTS = $(DESTDIR)${etcdir} $(DESTDIR)${lispdir} $(DESTDIR)${leimdir}/ja-dic $(DESTDIR)${leimdir}/quail $(DESTDIR)${leimdir}/quail
# separately.
COPYDIR = ${srcdir}/etc ${srcdir}/lisp
COPYDESTS = "$(DESTDIR)${etcdir}" "$(DESTDIR)${lispdir}"
all: ${SUBDIR}
all: ${SUBDIR} info
.PHONY: all ${SUBDIR} blessmail epaths-force epaths-force-w32 FRC
.PHONY: all ${SUBDIR} blessmail epaths-force epaths-force-w32
removenullpaths=sed -e 's/^:*//' -e 's/:*$$//g' -e 's/::*/:/g'
@ -295,7 +298,7 @@ removenullpaths=sed -e 's/^:*//' -e 's/:*$$//g' -e 's/::*/:/g'
# See comments in configure.ac for why it is done this way, as opposed
# to just letting configure generate epaths.h from epaths.in in a
# similar way to how Makefile is made from Makefile.in.
epaths-force: FRC
epaths-force:
@(standardlisppath=`echo "${standardlisppath}" | ${removenullpaths}` ; \
locallisppath=`echo "${locallisppath}" | ${removenullpaths}` ; \
buildlisppath=`echo "${buildlisppath}" | ${removenullpaths}` ; \
@ -314,22 +317,9 @@ epaths-force: FRC
-e 's;\(#.*PATH_DOC\).*$$;\1 "${etcdocdir}";') && \
${srcdir}/build-aux/move-if-change epaths.h.$$$$ src/epaths.h
# Convert MSYS-style /x/foo or Windows-style x:\foo file names
# into x:/foo that Windows can grok.
msys_to_w32=sed -e 's,\\\\,/,g' -e 's,^/\([A-Za-z]\)/,\1:/,'
# Transform directory search path and its components. Original can
# be MSYS or Windows style. Set path separator to ";", directory
# separator to "/" and transform MSYS-style "/c/" to "c:/".
# Remove empty path components and escape semicolons.
msys_lisppath_to_w32=sed -e 's,\\\\,/,g' \
-e 's,\(^\|[:;]\)\([A-Za-z]\):/,\1/\2/,g' \
-e 's/:/;/g' -e 's,\(^\|;\)/\([A-Za-z]\)/,\1\2:/,g' \
-e 's/;\+/;/g' -e 's/^;//' -e 's/;$$//' -e 's/;/\\\\;/g'
# Replace "${prefix}" with '%emacs_dir%' (which expands to install
# Replace "${w32prefix}" with '%emacs_dir%' (which expands to install
# directory at runtime).
msys_prefix_subst=sed -e 's!\(^\|;\)'"$${prefixpattern}"'\([;/]\|$$\)!\1%emacs_dir%\2!g'
msys_w32prefix_subst=sed -e 's!\(^\|;\)'"$${w32prefixpattern}"'\([;/]\|$$\)!\1%emacs_dir%\2!g'
# Quote Sed special characters (except backslash and newline) with
# a double backslash.
@ -337,14 +327,21 @@ msys_sed_sh_escape=sed -e 's/[];$$*.^[]/\\\\&/g'
# The w32 build needs a slightly different editing, and it uses
# nt/epaths.nt as the template.
#
# Use the value of ${locallisppath} supplied by `configure',
# to support the --enable-locallisppath argument.
epaths-force-w32: FRC
@(w32srcdir=`echo "${srcdir}" | ${msys_to_w32}` ; \
prefixpattern=`echo '${prefix}' | ${msys_to_w32} | ${msys_sed_sh_escape}` ; \
locallisppath=`echo '${locallisppath}' | ${msys_lisppath_to_w32} | ${msys_prefix_subst}` ; \
#
# In this case, the paths written to 'src/epaths.h' must be in native
# MS-Windows format (e.g. 'c:/foo/bar'), because temacs is a MinGW
# program that doesn't support MSYS-style paths (e.g. '/c/foo/bar' or
# '/foo/bar').
epaths-force-w32:
@(w32srcdir=`${srcdir}/build-aux/msys-to-w32 "${srcdir}"`; \
w32prefix=`${srcdir}/build-aux/msys-to-w32 "${prefix}" N`; \
w32prefixpattern=`echo "$${w32prefix}" | ${msys_sed_sh_escape}` ; \
w32locallisppath=`${srcdir}/build-aux/msys-to-w32 "${locallisppath}" N ":" "\\;" | ${msys_w32prefix_subst}` ; \
sed < ${srcdir}/nt/epaths.nt > epaths.h.$$$$ \
-e 's;\(#.*PATH_SITELOADSEARCH\).*$$;\1 "'"$${locallisppath}"'";' \
-e 's;\(#.*PATH_SITELOADSEARCH\).*$$;\1 "'"$${w32locallisppath}"'";' \
-e '/^.*#/s/@VER@/${version}/g' \
-e '/^.*#/s/@CFG@/${configuration}/g' \
-e "/^.*#/s|@SRC@|$${w32srcdir}|g") && \
@ -358,12 +355,11 @@ lib-src src: $(NTDIR) lib
src: lib-src
# We need to build `emacs' in `src' to compile the *.elc files in `lisp'
# and `leim'.
lisp leim: src
# We need to build `emacs' in `src' to compile the *.elc files in `lisp'.
lisp: src
# These targets should be "${SUBDIR} without `src'".
lib lib-src lisp leim nt: Makefile FRC
lib lib-src lisp nt: Makefile
cd $@ && $(MAKE) all $(MFLAGS) \
CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
LDFLAGS='${LDFLAGS}' MAKE='${MAKE}'
@ -377,7 +373,12 @@ lib lib-src lisp leim nt: Makefile FRC
# file src/foo.c forces dumping a new bootstrap-emacs, then re-byte-compiling
# all preloaded elisp files, and only then dump the actual src/emacs, which
# is not wrong, but is overkill in 99.99% of the cases.
src: Makefile FRC
#
# Note the use of single quotes in the value of vcswitness.
# This passes an unexpanded $srcdir to src's Makefile, which then
# expands it using its own value of srcdir (which points to the
# source directory of src/).
src: Makefile
dirstate='.bzr/checkout/dirstate'; \
vcswitness='$$(srcdir)/../'$$dirstate; \
[ -r "$(srcdir)/$$dirstate" ] || vcswitness=''; \
@ -389,7 +390,7 @@ src: Makefile FRC
LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="$$boot" \
VCSWITNESS="$$vcswitness"
blessmail: Makefile src FRC
blessmail: Makefile src
cd lib-src && $(MAKE) maybe-blessmail $(MFLAGS) \
MAKE='${MAKE}' archlibdir='$(archlibdir)'
@ -424,9 +425,10 @@ AUTOCONF_INPUTS = $(srcdir)/configure.ac $(srcdir)/aclocal.m4
$(srcdir)/configure: $(AUTOCONF_INPUTS)
cd ${srcdir} && autoconf
ACLOCAL_INPUTS = $(srcdir)/m4/gnulib-comp.m4
ACLOCAL_PATH = @ACLOCAL_PATH@
ACLOCAL_INPUTS = $(srcdir)/configure.ac $(srcdir)/m4/gnulib-comp.m4
$(srcdir)/aclocal.m4: $(ACLOCAL_INPUTS)
cd $(srcdir) && aclocal -I m4
cd $(srcdir) && ACLOCAL_PATH='$(ACLOCAL_PATH)' aclocal -I m4
AUTOMAKE_INPUTS = $(srcdir)/aclocal.m4 $(srcdir)/lib/Makefile.am \
$(srcdir)/lib/gnulib.mk
@ -468,32 +470,32 @@ install: all install-arch-indep install-etcdoc install-arch-dep install-$(NTDIR)
## world-readable.
## TODO it might be good to warn about non-standard permissions of
## pre-existing directories, but that does not seem easy.
write_subdir=if [ -f $${subdir}/subdirs.el ]; \
write_subdir=if [ -f "$${subdir}/subdirs.el" ]; \
then true; \
else \
umask 022; \
${MKDIR_P} $${subdir}; \
${MKDIR_P} "$${subdir}"; \
(echo "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \
echo " (normal-top-level-add-subdirs-to-load-path))") \
> $${subdir}/subdirs.el; \
> "$${subdir}/subdirs.el"; \
fi
### Install the executables that were compiled specifically for this machine.
### We do install-arch-indep first because the executable needs the
### Lisp files and DOC file to work properly.
install-arch-dep: src install-arch-indep install-etcdoc install-$(NTDIR)
umask 022; ${MKDIR_P} $(DESTDIR)${bindir}
umask 022; ${MKDIR_P} "$(DESTDIR)${bindir}"
cd lib-src && \
$(MAKE) install $(MFLAGS) prefix=${prefix} \
exec_prefix=${exec_prefix} bindir=${bindir} \
libexecdir=${libexecdir} archlibdir=${archlibdir} \
$(MAKE) install $(MFLAGS) prefix="${prefix}" \
exec_prefix="${exec_prefix}" bindir="${bindir}" \
libexecdir="${libexecdir}" archlibdir="${archlibdir}" \
INSTALL_STRIP=${INSTALL_STRIP}
if test "${ns_self_contained}" = "no"; then \
${INSTALL_PROGRAM} $(INSTALL_STRIP) src/emacs${EXEEXT} $(DESTDIR)${bindir}/$(EMACSFULL) || exit 1 ; \
chmod 1755 $(DESTDIR)${bindir}/$(EMACSFULL) || true; \
${INSTALL_PROGRAM} $(INSTALL_STRIP) src/emacs${EXEEXT} "$(DESTDIR)${bindir}/$(EMACSFULL)" || exit 1 ; \
chmod 1755 "$(DESTDIR)${bindir}/$(EMACSFULL)" || true; \
if test "x${NO_BIN_LINK}" = x; then \
rm -f $(DESTDIR)${bindir}/$(EMACS) ; \
cd $(DESTDIR)${bindir} && $(LN_S_FILEONLY) $(EMACSFULL) $(EMACS); \
rm -f "$(DESTDIR)${bindir}/$(EMACS)" ; \
cd "$(DESTDIR)${bindir}" && $(LN_S_FILEONLY) $(EMACSFULL) $(EMACS); \
fi; \
else \
subdir=${ns_appresdir}/site-lisp; \
@ -506,9 +508,10 @@ install-arch-dep: src install-arch-indep install-etcdoc install-$(NTDIR)
install-:
install-nt:
cd $(NTDIR) && \
$(MAKE) install $(MFLAGS) prefix=${prefix} \
exec_prefix=${exec_prefix} bindir=${bindir} \
libexecdir=${libexecdir} archlibdir=${archlibdir} \
$(MAKE) install $(MFLAGS) prefix="${prefix}" \
exec_prefix="${exec_prefix}" bindir="${bindir}" \
libexecdir="${libexecdir}" archlibdir="${archlibdir}" \
datadir="${datadir}" \
INSTALL_STRIP=${INSTALL_STRIP}
## In the share directory, we are deleting:
@ -550,9 +553,12 @@ set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \
## Note that the Makefiles in the etc directory are potentially useful
## in an installed Emacs, so should not be excluded.
## We used to create locallisppath, but if it points to non-standard
## locations, is not really Emacs's job to create these directories,
## so it is no longer done.
## We always create the _default_ locallisppath directories, and
## ensure that they contain a subdirs.el file (via write_subdir).
## This is true even if locallisppath has a non-default value.
## In case of non-default value, we used to create the specified directories,
## but not add subdirs.el to them. This was a strange halfway house.
## Nowadays we do not create non-default directories.
## Note that we use tar instead of plain old cp -R/-r because the latter
## is apparently not portable (even in 2012!).
@ -561,68 +567,59 @@ set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \
## work correctly, and therefore no idea when tar can be replaced.
## See also these comments from 2004 about cp -r working fine:
## http://lists.gnu.org/archive/html/autoconf-patches/2004-11/msg00005.html
install-arch-indep: lisp leim install-info install-man ${INSTALL_ARCH_INDEP_EXTRA}
install-arch-indep: lisp install-info install-man ${INSTALL_ARCH_INDEP_EXTRA}
-set ${COPYDESTS} ; \
unset CDPATH; \
$(set_installuser); \
for dir in ${COPYDIR} ; do \
[ -d $${dir} ] || exit 1 ; \
dest=$$1 ; shift ; \
[ -d $${dest} ] && \
[ `cd $${dest} && /bin/pwd` = `cd $${dir} && /bin/pwd` ] && \
continue ; \
if [ "$${dir}" = "leim/quail" ]; then \
[ `cd $${dir} && /bin/pwd` = `cd ${srcdir}/leim/quail && /bin/pwd` ] && \
continue ; \
else \
rm -rf $${dest} ; \
umask 022; ${MKDIR_P} $${dest} ; \
fi ; \
echo "Copying $${dir} to $${dest}..." ; \
(cd $${dir}; tar -chf - . ) \
| (cd $${dest}; umask 022; \
tar -xvf - && cat > /dev/null) || exit 1; \
if [ "$${dir}" = "${srcdir}/etc" ]; then \
rm -f $${dest}/DOC* ; \
rm -f $${dest}/refcards/*.aux $${dest}/refcards/*.dvi; \
rm -f $${dest}/refcards/*.log; \
dest="$$1" ; shift ; \
if [ -d "$${dest}" ]; then \
exp_dest=`cd "$${dest}" && /bin/pwd`; \
[ "$$exp_dest" = "`cd $${dir} && /bin/pwd`" ] && continue ; \
else true; \
fi; \
for subdir in `find $${dest} -type d -print` ; do \
chmod a+rx $${subdir} ; \
rm -f $${subdir}/.gitignore ; \
rm -f $${subdir}/.arch-inventory ; \
rm -f $${subdir}/.DS_Store ; \
rm -f $${subdir}/\#* ; \
rm -f $${subdir}/.\#* ; \
rm -f $${subdir}/*~ ; \
rm -f $${subdir}/*.orig ; \
rm -f $${subdir}/ChangeLog* ; \
[ "$${dir}" != "${srcdir}/etc" ] && \
rm -f $${subdir}/[mM]akefile*[.-]in $${subdir}/[mM]akefile ; \
done ; \
find $${dest} -exec chown $${installuser} {} ';' ;\
rm -rf "$${dest}" ; \
umask 022; ${MKDIR_P} "$${dest}" ; \
echo "Copying $${dir} to $${dest}..." ; \
(cd $${dir}; tar -chf - . ) \
| (cd "$${dest}"; umask 022; \
tar -xvf - && cat > /dev/null) || exit 1; \
if [ "$${dir}" = "${srcdir}/etc" ]; then \
rm -f "$${dest}/DOC"* ; \
rm -f "$${dest}/refcards"/*.aux "$${dest}/refcards"/*.dvi; \
rm -f "$${dest}/refcards"/*.log; \
else true; \
fi; \
(cd "$${dest}" || exit 1; \
for subdir in `find . -type d -print` ; do \
chmod a+rx $${subdir} ; \
rm -f $${subdir}/.gitignore ; \
rm -f $${subdir}/.arch-inventory ; \
rm -f $${subdir}/.DS_Store ; \
rm -f $${subdir}/\#* ; \
rm -f $${subdir}/.\#* ; \
rm -f $${subdir}/*~ ; \
rm -f $${subdir}/*.orig ; \
rm -f $${subdir}/ChangeLog* ; \
[ "$${dir}" != "${srcdir}/etc" ] && \
rm -f $${subdir}/[mM]akefile*[.-]in $${subdir}/[mM]akefile ; \
done ); \
find "$${dest}" -exec chown $${installuser} {} ';' ;\
done
-rm -f $(DESTDIR)${leimdir}/leim-list.el
${INSTALL_DATA} leim/leim-list.el $(DESTDIR)${leimdir}/leim-list.el
-rm -f $(DESTDIR)${lispdir}/subdirs.el
umask 022; $(srcdir)/build-aux/update-subdirs $(DESTDIR)${lispdir}
subdir=$(DESTDIR)${datadir}/emacs/${version}/site-lisp ; \
-rm -f "$(DESTDIR)${lispdir}/subdirs.el"
umask 022; $(srcdir)/build-aux/update-subdirs "$(DESTDIR)${lispdir}"
subdir="$(DESTDIR)${datadir}/emacs/${version}/site-lisp" ; \
${write_subdir}
subdir=$(DESTDIR)${datadir}/emacs/site-lisp ; \
subdir="$(DESTDIR)${datadir}/emacs/site-lisp" ; \
${write_subdir} || true
[ -z "${GZIP_PROG}" ] || \
( echo "Compressing *.el ..." ; \
unset CDPATH; \
thisdir=`/bin/pwd`; \
for dir in $(DESTDIR)${lispdir} $(DESTDIR)${leimdir}; do \
cd $${thisdir} ; \
cd $${dir} || exit 1 ; \
for f in `find . -name "*.elc" -print`; do \
${GZIP_PROG} -9n `echo $$f|sed 's/.elc$$/.el/'` ; \
done ; \
done )
-chmod -R a+r $(DESTDIR)${datadir}/emacs/${version} ${COPYDESTS}
[ -z "${GZIP_PROG}" ] || { \
echo "Compressing *.el ..." && \
cd "$(DESTDIR)${lispdir}" && \
find . -name '*.elc' -exec $(SHELL) -c \
'${GZIP_PROG} -9n `expr "$$1" : "\\(.*\\)c"`' dummy '{}' ';'; \
}
-chmod -R a+r "$(DESTDIR)${datadir}/emacs/${version}" ${COPYDESTS}
## The above chmods are needed because "umask 022; tar ..." is not
## guaranteed to do the right thing; eg if we are root and tar is
@ -632,41 +629,50 @@ install-arch-indep: lisp leim install-info install-man ${INSTALL_ARCH_INDEP_EXTR
## installed etc/ directory, so we need it to run before this does.
install-etcdoc: src install-arch-indep
-unset CDPATH; \
umask 022; ${MKDIR_P} $(DESTDIR)${etcdocdir} ; \
if [ `cd ./etc; /bin/pwd` != `cd $(DESTDIR)${etcdocdir}; /bin/pwd` ]; \
umask 022; ${MKDIR_P} "$(DESTDIR)${etcdocdir}" ; \
exp_etcdocdir=`cd "$(DESTDIR)${etcdocdir}"; /bin/pwd`; \
if [ "`cd ./etc; /bin/pwd`" != "$$exp_etcdocdir" ]; \
then \
docfile="DOC"; \
echo "Copying etc/$${docfile} to $(DESTDIR)${etcdocdir} ..." ; \
${INSTALL_DATA} etc/$${docfile} $(DESTDIR)${etcdocdir}/$${docfile}; \
${INSTALL_DATA} etc/$${docfile} "$(DESTDIR)${etcdocdir}/$${docfile}"; \
$(set_installuser); \
chown $${installuser} $(DESTDIR)${etcdocdir}/$${docfile} || true ; \
chown $${installuser} "$(DESTDIR)${etcdocdir}/$${docfile}" || true ; \
else true; fi
## FIXME:
## If info/dir is missing, but we have install-info, we should let
## that handle it. If info/dir is present and we do not have install-info,
## we should check for missing entries and add them by hand.
##
## FIXME:
## If HAVE_MAKEINFO = no and there are no info files, do not install info/dir.
install-info: info
umask 022; ${MKDIR_P} $(DESTDIR)${infodir}
umask 022; ${MKDIR_P} "$(DESTDIR)${infodir}"
-unset CDPATH; \
thisdir=`/bin/pwd`; \
[ `cd ${srcdir}/info && /bin/pwd` = `cd $(DESTDIR)${infodir} && /bin/pwd` ] || \
(cd $(DESTDIR)${infodir}; \
[ -f dir ] || \
(cd $${thisdir}; \
${INSTALL_DATA} ${srcdir}/info/dir $(DESTDIR)${infodir}/dir) ; \
info_misc=`cd $${thisdir}/doc/misc && \
$(QUIET_SUBMAKE) $(MAKE) -s echo-info \
`; \
exp_infodir=`cd "$(DESTDIR)${infodir}" && /bin/pwd`; \
if [ "`cd ${srcdir}/info && /bin/pwd`" = "$$exp_infodir" ]; then \
true; \
else \
[ -f "$(DESTDIR)${infodir}/dir" ] || \
[ ! -f ${srcdir}/info/dir ] || \
${INSTALL_DATA} ${srcdir}/info/dir "$(DESTDIR)${infodir}/dir"; \
info_misc=`cd doc/misc && $(QUIET_SUBMAKE) $(MAKE) -s echo-info`; \
cd ${srcdir}/info ; \
for elt in ${INFO_NONMISC} $${info_misc}; do \
test "$(HAVE_MAKEINFO)" = "no" && test ! -f $$elt && continue; \
for f in `ls $$elt $$elt-[1-9] $$elt-[1-9][0-9] 2>/dev/null`; do \
(cd $${thisdir}; \
${INSTALL_DATA} ${srcdir}/info/$$f $(DESTDIR)${infodir}/$$f); \
(cd "$${thisdir}"; \
${INSTALL_DATA} ${srcdir}/info/$$f "$(DESTDIR)${infodir}/$$f"); \
[ -n "${GZIP_PROG}" ] || continue ; \
rm -f $(DESTDIR)${infodir}/$$f.gz; \
${GZIP_PROG} -9n $(DESTDIR)${infodir}/$$f; \
rm -f "$(DESTDIR)${infodir}/$$f.gz"; \
${GZIP_PROG} -9n "$(DESTDIR)${infodir}/$$f"; \
done; \
(cd $${thisdir}; \
${INSTALL_INFO} --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \
done)
(cd "$${thisdir}"; \
${INSTALL_INFO} --info-dir="$(DESTDIR)${infodir}" "$(DESTDIR)${infodir}/$$elt"); \
done; \
fi
## "gzip || true" is because some gzips exit with non-zero status
## if compression would not reduce the file size. Eg, the gzip in
@ -675,16 +681,16 @@ install-info: info
## ctags.1 is compressed or not. "gzip -f" is another option here,
## but not sure if portable.
install-man:
umask 022; ${MKDIR_P} $(DESTDIR)${man1dir}
umask 022; ${MKDIR_P} "$(DESTDIR)${man1dir}"
thisdir=`/bin/pwd`; \
cd ${mansrcdir}; \
for page in *.1; do \
dest=`echo "$${page}" | sed -e 's/\.1$$//' -e '$(TRANSFORM)'`.1; \
(cd $${thisdir}; \
${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${dest}); \
(cd "$${thisdir}"; \
${INSTALL_DATA} ${mansrcdir}/$${page} "$(DESTDIR)${man1dir}/$${dest}"); \
[ -n "${GZIP_PROG}" ] || continue ; \
rm -f $(DESTDIR)${man1dir}/$${dest}.gz; \
${GZIP_PROG} -9n $(DESTDIR)${man1dir}/$${dest} || true; \
rm -f "$(DESTDIR)${man1dir}/$${dest}.gz"; \
${GZIP_PROG} -9n "$(DESTDIR)${man1dir}/$${dest}" || true; \
done
## Install those items from etc/ that need to end up elsewhere.
@ -694,25 +700,25 @@ install-man:
EMACS_ICON=emacs
install-etc:
umask 022; ${MKDIR_P} $(DESTDIR)${desktopdir}
umask 022; ${MKDIR_P} "$(DESTDIR)${desktopdir}"
tmp=etc/emacs.tmpdesktop; rm -f $${tmp}; \
emacs_name=`echo emacs | sed '$(TRANSFORM)'`; \
sed -e "/^Exec=emacs/ s/emacs/$${emacs_name}/" \
-e "/^Icon=emacs/ s/emacs/$${emacs_name}/" \
${srcdir}/etc/emacs.desktop > $${tmp}; \
${INSTALL_DATA} $${tmp} $(DESTDIR)${desktopdir}/${EMACS_NAME}.desktop; \
${INSTALL_DATA} $${tmp} "$(DESTDIR)${desktopdir}/${EMACS_NAME}.desktop"; \
rm -f $${tmp}
thisdir=`/bin/pwd`; \
cd ${iconsrcdir} || exit 1; umask 022 ; \
for dir in */*/apps */*/mimetypes; do \
[ -d $${dir} ] || continue ; \
( cd $${thisdir}; ${MKDIR_P} $(DESTDIR)${icondir}/$${dir} ) ; \
( cd "$${thisdir}"; ${MKDIR_P} "$(DESTDIR)${icondir}/$${dir}" ) ; \
for icon in $${dir}/${EMACS_ICON}[.-]*; do \
[ -r $${icon} ] || continue ; \
ext=`echo "$${icon}" | sed -e 's|.*\.||'`; \
dest=`echo "$${icon}" | sed -e 's|.*/||' -e "s|\.$${ext}$$||" -e 's/$(EMACS_ICON)/emacs/' -e '$(TRANSFORM)'`.$${ext} ; \
( cd $${thisdir}; \
${INSTALL_DATA} ${iconsrcdir}/$${icon} $(DESTDIR)${icondir}/$${dir}/$${dest} ) \
( cd "$${thisdir}"; \
${INSTALL_DATA} ${iconsrcdir}/$${icon} "$(DESTDIR)${icondir}/$${dir}/$${dest}" ) \
|| exit 1; \
done ; \
done
@ -728,30 +734,31 @@ install-strip:
uninstall: uninstall-$(NTDIR) uninstall-doc
cd lib-src && \
$(MAKE) $(MFLAGS) uninstall \
prefix=${prefix} exec_prefix=${exec_prefix} \
bindir=${bindir} libexecdir=${libexecdir} archlibdir=${archlibdir}
prefix="${prefix}" exec_prefix="${exec_prefix}" \
bindir="${bindir}" libexecdir="${libexecdir}" \
archlibdir="${archlibdir}"
-unset CDPATH; \
for dir in $(DESTDIR)${lispdir} $(DESTDIR)${etcdir} ; do \
if [ -d $${dir} ]; then \
case `cd $${dir} ; /bin/pwd` in \
`cd ${srcdir} ; /bin/pwd`* ) ;; \
* ) rm -rf $${dir} ;; \
for dir in "$(DESTDIR)${lispdir}" "$(DESTDIR)${etcdir}" ; do \
if [ -d "$${dir}" ]; then \
case `cd "$${dir}" ; /bin/pwd` in \
"`cd ${srcdir} ; /bin/pwd`"* ) ;; \
* ) rm -rf "$${dir}" ;; \
esac ; \
case $${dir} in \
$(DESTDIR)${datadir}/emacs/${version}/* ) \
rm -rf $(DESTDIR)${datadir}/emacs/${version} \
case "$${dir}" in \
"$(DESTDIR)${datadir}/emacs/${version}"/* ) \
rm -rf "$(DESTDIR)${datadir}/emacs/${version}" \
;; \
esac ; \
fi ; \
done
-rm -rf $(DESTDIR)${libexecdir}/emacs/${version}
-rm -rf "$(DESTDIR)${libexecdir}/emacs/${version}"
thisdir=`/bin/pwd`; \
(info_misc=`cd doc/misc && $(QUIET_SUBMAKE) $(MAKE) -s echo-info`; \
if cd $(DESTDIR)${infodir}; then \
if cd "$(DESTDIR)${infodir}"; then \
for elt in ${INFO_NONMISC} $${info_misc}; do \
(cd $${thisdir}; \
$(INSTALL_INFO) --remove --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \
(cd "$${thisdir}"; \
$(INSTALL_INFO) --remove --info-dir="$(DESTDIR)${infodir}" "$(DESTDIR)${infodir}/$$elt"); \
if [ -n "${GZIP_PROG}" ]; then \
ext=.gz; else ext=; fi; \
rm -f $$elt$$ext $$elt-[1-9]$$ext $$elt-[1-9][0-9]$$ext; \
@ -761,18 +768,18 @@ uninstall: uninstall-$(NTDIR) uninstall-doc
ext=.gz; else ext=; fi; \
if cd ${mansrcdir}; then \
for page in *.1; do \
rm -f $(DESTDIR)${man1dir}/`echo "$${page}" | sed -e 's/\.1$$//' -e '$(TRANSFORM)'`.1$$ext; done; \
rm -f "$(DESTDIR)${man1dir}"/`echo "$${page}" | sed -e 's/\.1$$//' -e '$(TRANSFORM)'`.1$$ext; done; \
fi)
(cd $(DESTDIR)${bindir} && rm -f $(EMACSFULL) $(EMACS) || true)
(if cd $(DESTDIR)${icondir}; then \
(cd "$(DESTDIR)${bindir}" && rm -f $(EMACSFULL) $(EMACS) || true)
(if cd "$(DESTDIR)${icondir}"; then \
rm -f hicolor/*x*/apps/${EMACS_NAME}.png \
hicolor/scalable/apps/${EMACS_NAME}.svg \
hicolor/scalable/mimetypes/`echo emacs-document | sed '$(TRANSFORM)'`.svg; \
fi)
-rm -f $(DESTDIR)${desktopdir}/${EMACS_NAME}.desktop
-rm -f "$(DESTDIR)${desktopdir}/${EMACS_NAME}.desktop"
for file in snake-scores tetris-scores; do \
file=$(DESTDIR)${gamedir}/$${file}; \
[ -s $${file} ] || rm -f $$file; \
file="$(DESTDIR)${gamedir}/$${file}"; \
[ -s "$${file}" ] || rm -f "$$file"; \
done
### Windows-specific uninstall target for removing programs produced
@ -781,10 +788,9 @@ uninstall-:
uninstall-nt:
cd $(NTDIR) && \
$(MAKE) $(MFLAGS) uninstall \
prefix=${prefix} exec_prefix=${exec_prefix} \
bindir=${bindir} libexecdir=${libexecdir} archlibdir=${archlibdir}
FRC:
prefix="${prefix}" exec_prefix="${exec_prefix}" \
bindir="${bindir}" libexecdir="${libexecdir}" \
archlibdir="${archlibdir}"
# ==================== Cleaning up and miscellanea ====================
@ -795,7 +801,7 @@ FRC:
### normally don't want to recompile. For example, the `mostlyclean'
### target for GCC does not delete `libgcc.a', because recompiling it
### is rarely necessary and takes a lot of time.
mostlyclean: FRC
mostlyclean:
cd src && $(MAKE) $(MFLAGS) mostlyclean
cd oldXMenu && $(MAKE) $(MFLAGS) mostlyclean
cd lwlib && $(MAKE) $(MFLAGS) mostlyclean
@ -806,7 +812,6 @@ mostlyclean: FRC
-cd doc/misc && $(MAKE) $(MFLAGS) mostlyclean
-cd doc/lispref && $(MAKE) $(MFLAGS) mostlyclean
-cd doc/lispintro && $(MAKE) $(MFLAGS) mostlyclean
cd leim && $(MAKE) $(MFLAGS) mostlyclean
### `clean'
### Delete all files from the current directory that are normally
@ -816,7 +821,7 @@ mostlyclean: FRC
### with them.
###
### Delete `.dvi' files here if they are not part of the distribution.
clean: FRC
clean:
-rm -f etc/emacs.tmpdesktop
cd src && $(MAKE) $(MFLAGS) clean
cd oldXMenu && $(MAKE) $(MFLAGS) clean
@ -828,7 +833,6 @@ clean: FRC
-cd doc/misc && $(MAKE) $(MFLAGS) clean
-cd doc/lispref && $(MAKE) $(MFLAGS) clean
-cd doc/lispintro && $(MAKE) $(MFLAGS) clean
cd leim && $(MAKE) $(MFLAGS) clean
cd nextstep && $(MAKE) $(MFLAGS) clean
### `bootclean'
@ -844,7 +848,7 @@ top_bootclean=\
top_distclean=\
${top_bootclean}; \
rm -f config.status config.log~ Makefile stamp-h1 ${SUBDIR_MAKEFILES}
distclean: FRC
distclean:
cd src && $(MAKE) $(MFLAGS) distclean
cd oldXMenu && $(MAKE) $(MFLAGS) distclean
cd lwlib && $(MAKE) $(MFLAGS) distclean
@ -858,15 +862,15 @@ distclean: FRC
cd leim && $(MAKE) $(MFLAGS) distclean
cd lisp && $(MAKE) $(MFLAGS) distclean
cd nextstep && $(MAKE) $(MFLAGS) distclean
[ ! -d test/automated ] || { \
cd test/automated && $(MAKE) $(MFLAGS) distclean; \
}
for dir in test/automated admin/grammars admin/unidata; do \
[ ! -d $$dir ] || (cd $$dir && $(MAKE) $(MFLAGS) distclean); \
done
${top_distclean}
### `bootstrap-clean'
### Delete everything that can be reconstructed by `make' and that
### needs to be deleted in order to force a bootstrap from a clean state.
bootstrap-clean: FRC
bootstrap-clean:
cd src && $(MAKE) $(MFLAGS) bootstrap-clean
cd oldXMenu && $(MAKE) $(MFLAGS) maintainer-clean
cd lwlib && $(MAKE) $(MFLAGS) maintainer-clean
@ -877,13 +881,14 @@ bootstrap-clean: FRC
-cd doc/misc && $(MAKE) $(MFLAGS) maintainer-clean
-cd doc/lispref && $(MAKE) $(MFLAGS) maintainer-clean
-cd doc/lispintro && $(MAKE) $(MFLAGS) maintainer-clean
cd leim && $(MAKE) $(MFLAGS) maintainer-clean
cd leim && $(MAKE) $(MFLAGS) bootstrap-clean
cd lisp && $(MAKE) $(MFLAGS) bootstrap-clean
cd nextstep && $(MAKE) $(MFLAGS) maintainer-clean
[ ! -d test/automated ] || { \
cd test/automated && $(MAKE) $(MFLAGS) bootstrap-clean; \
}
for dir in test/automated admin/grammars admin/unidata; do \
[ ! -d $$dir ] || (cd $$dir && $(MAKE) $(MFLAGS) bootstrap-clean); \
done
[ ! -f config.log ] || mv -f config.log config.log~
rm -rf ${srcdir}/info
${top_bootclean}
### `maintainer-clean'
@ -900,12 +905,13 @@ bootstrap-clean: FRC
top_maintainer_clean=\
${top_distclean}; \
rm -fr autom4te.cache
maintainer-clean: bootstrap-clean FRC
maintainer-clean: bootstrap-clean
cd src && $(MAKE) $(MFLAGS) maintainer-clean
cd leim && $(MAKE) $(MFLAGS) maintainer-clean
cd lisp && $(MAKE) $(MFLAGS) maintainer-clean
[ ! -d test/automated ] || { \
cd test/automated && $(MAKE) $(MFLAGS) maintainer-clean; \
}
for dir in test/automated admin/grammars admin/unidata; do \
[ ! -d $$dir ] || (cd $$dir && $(MAKE) $(MFLAGS) maintainer-clean); \
done
${top_maintainer_clean}
### This doesn't actually appear in the coding standards, but Karl
@ -924,7 +930,7 @@ extraclean:
TAGS tags: lib lib-src src
cd src; $(MAKE) $(MFLAGS) tags
check:
check: all
@if test ! -d test/automated; then \
echo "You do not seem to have the test/ directory."; \
echo "Maybe you are using a release tarfile, rather than a repository checkout."; \
@ -946,7 +952,7 @@ $(DOCS):
t=$@; IFS=-; set $$t; IFS=; cd doc/$$1 && $(MAKE) $(MFLAGS) $$2
.PHONY: $(DOCS) docs pdf ps
.PHONY: info dvi dist check html info-real force-info check-info-dir
.PHONY: info dvi dist check html info-real info-dir check-info
## TODO add etc/refcards.
docs: $(DOCS)
@ -956,6 +962,28 @@ info-real: $(INFOS)
pdf: $(PDFS)
ps: $(PSS)
info-dir: ${srcdir}/info/dir
## Not strictly necessary, but speeds things up a bit by stopping
## the info-dir rule from running when not needed.
## Hopefully doc/misc/*.texi is not too long for some systems?
info_dir_deps = ${srcdir}/build-aux/dir_top \
${srcdir}/doc/emacs/emacs.texi \
${srcdir}/doc/lispintro/emacs-lisp-intro.texi \
${srcdir}/doc/lispref/elisp.texi ${srcdir}/doc/misc/*.texi
## It would be much simpler if info/dir was only created in the
## installation location by the install-info rule, but we also
## need one in the source directory for people running uninstalled.
## FIXME it would be faster to use the install-info program if we have it,
## but then we would need to depend on info-real, which would
## slow down parallelization.
${srcdir}/info/dir: ${info_dir_deps}
tempfile=info-dir.$$$$; \
rm -f $${tempfile}; \
thisdir=`pwd`; \
(cd ${srcdir} && ./build-aux/make-info-dir $${thisdir}/$${tempfile}); \
${srcdir}/build-aux/move-if-change $${tempfile} ${srcdir}/info/dir
INSTALL_DVI = install-emacs-dvi install-lispref-dvi \
install-lispintro-dvi install-misc-dvi
@ -1005,7 +1033,6 @@ uninstall-pdf: $(UNINSTALL_PDF)
uninstall-ps: $(UNINSTALL_PS)
force-info:
# Note that man/Makefile knows how to put the info files in $(srcdir),
# so we can do ok running make in the build dir.
# This used to have a clause that exited with an error if MAKEINFO = no.
@ -1017,32 +1044,35 @@ force-info:
# would require changing every rule in doc/ that builds an info file,
# and it's not worth it. This case is only relevant if you download a
# release, then change the .texi files.
info: force-info
info:
@if test "$(HAVE_MAKEINFO)" = "no"; then \
echo "Configured --without-makeinfo, not building manuals" ; \
else \
$(MAKE) $(MFLAGS) info-real ; \
$(MAKE) $(MFLAGS) info-real info-dir; \
fi
# The info/dir file must be updated by hand when new manuals are added.
# Cannot add an info/dir entry for efaq-w32 since it is not installed
# on all platforms.
check-info-dir: info
## build-aux/make-info-dir expects only certain dircategories.
check-info: info
cd info ; \
missing= ; \
bad= ; \
for file in *; do \
test -f "$${file}" || continue ; \
case $${file} in \
*-[0-9]*|COPYING|dir|efaq-w32*) continue ;; \
*-[0-9]*|COPYING|dir) continue ;; \
esac ; \
file=`echo $${file} | sed 's/\.info//'` ; \
grep -q -F ": ($${file})." dir || missing="$${missing} $${file}" ; \
cat=`sed -n 's/^INFO-DIR-SECTION //p' $${file}`; \
case $${cat} in \
"Texinfo documentation system" | "Emacs"| "Emacs lisp" | \
"Emacs editing modes" | "Emacs network features" | \
"Emacs misc features" | "Emacs lisp libraries" ) : ;; \
*) bad="$${bad} $${file}" ;; \
esac; \
done ; \
if test -n "$${missing}"; then \
echo "Missing info/dir entries: $${missing}" ; \
if test -n "$${bad}"; then \
echo "Unexpected dircategory in: $${bad}" ; \
exit 1 ; \
fi ; \
echo "info/dir is OK"
echo "info files are OK"
#### Bootstrapping.
@ -1053,13 +1083,13 @@ check-info-dir: info
# Bootstrapping does the following:
# * Remove files to start from a bootstrap-clean slate.
# * Run autogen.sh, falling back on copy_autogen if autogen.sh fails.
# * Run autogen.sh.
# * Rebuild Makefile, to update the build procedure itself.
# * Do the actual build.
bootstrap: bootstrap-clean FRC
cd $(srcdir) && { ./autogen.sh || autogen/copy_autogen; }
bootstrap: bootstrap-clean
cd $(srcdir) && ./autogen.sh
$(MAKE) $(MFLAGS) MAKEFILE_NAME=force-Makefile force-Makefile
$(MAKE) $(MFLAGS) info all
$(MAKE) $(MFLAGS) all
.PHONY: check-declare
@ -1068,5 +1098,4 @@ check-declare:
echo "You must build Emacs to use this command"; \
exit 1; \
fi
cd leim && $(MAKE) $(MFLAGS) $@
cd lisp && $(MAKE) $(MFLAGS) $@

16
README
View file

@ -1,8 +1,8 @@
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.
This directory tree holds version 24.3.50 of GNU Emacs, the extensible,
This directory tree holds version 24.4.50 of GNU Emacs, the extensible,
customizable, self-documenting real-time display editor.
The file INSTALL in this directory says how to build and install GNU
@ -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

@ -86,8 +86,6 @@ BROKEN_FIONREAD
BROKEN_GET_CURRENT_DIR_NAME
BROKEN_NON_BLOCKING_CONNECT
BROKEN_PTY_READ_AFTER_EAGAIN
CLASH_DETECTION
DATA_SEG_BITS
DEFAULT_SOUND_DEVICE
DEVICE_SEP
DIRECTORY_SEP
@ -201,17 +199,13 @@ HAVE_KRB5_H
HAVE_KRB_H
HAVE_LANGINFO_CODESET
HAVE_LIBDGC
HAVE_LIBDNET
HAVE_LIBKSTAT
HAVE_LIBLOCKFILE
HAVE_LIBM
HAVE_LIBMAIL
HAVE_LIBOTF
HAVE_LIBPERFSTAT
HAVE_LIBPNG_PNG_H
HAVE_LIBPTHREADS
HAVE_LIBSELINUX
HAVE_LIBXEXT
HAVE_LIBXML2
HAVE_LIBXMU
HAVE_LOCALTIME_R

View file

@ -1,3 +1,293 @@
2014-05-25 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* mac/uvs.el: New file from Mac port. Generates src/macuvs.h.
2014-05-17 Paul Eggert <eggert@cs.ucla.edu>
Assume C99 or later (Bug#17487).
* merge-gnulib (GNULIB_MODULES): Remove stdarg, stdbool.
(GNULIB_TOOL_FLAGS): Avoid stdarg, stdbool.
2014-05-16 Paul Eggert <eggert@cs.ucla.edu>
Don't require pkg-config when building from repository.
* merge-pkg-config: New script.
* notes/copyright: Update for m4/*.m4, in particular m4/pkg.m4.
2014-05-13 Paul Eggert <eggert@cs.ucla.edu>
* merge-gnulib: Defer to autogen.sh for ACLOCAL_PATH computation.
2014-05-12 Glenn Morris <rgm@gnu.org>
* find-gc.el: Move here from ../lisp/emacs-lisp.
* admin.el (set-version-in-file): Don't set identical version.
(set-version): Provide default version number.
(set-version, set-copyright): Give start/end messages.
2014-04-18 Paul Eggert <eggert@cs.ucla.edu>
* notes/bzr: Update instructions for merging from gnulib.
Remove obsolete note about tramp.el and tramp-sh.el.
Change "emacs-23" to "emacs-24".
2014-04-11 Glenn Morris <rgm@gnu.org>
* grammars/Makefile.in (EMACSDATA, EMACSDOC, EMACSPATH): Unexport.
2014-03-22 Glenn Morris <rgm@gnu.org>
* quick-install-emacs (AVOID): Remove testfile and test-distrib.
2014-03-21 Glenn Morris <rgm@gnu.org>
* update_autogen: Auto-detect VCS in use.
(vcs): New variable.
(status, commit, main): Handle git.
2014-03-07 Paul Eggert <eggert@cs.ucla.edu>
Fix oversight preventing lib/sys/types.h from being generated.
* merge-gnulib (GNULIB_TOOL_FLAGS): Don't avoid sys_types.
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,
@ -128,7 +418,7 @@
2013-05-07 Paul Eggert <eggert@cs.ucla.edu>
Use Gnulib ACL implementation, for benefit of Solaris etc. (Bug#14295)
Use Gnulib ACL implementation, for benefit of Solaris etc. (Bug#14295)
* merge-gnulib (GNULIB_MODULES): Add qacl.
(GNULIB_TOOL_FLAGS): Do not avoid errno.
@ -343,10 +633,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>
@ -805,6 +1095,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.
@ -812,8 +1106,9 @@
2011-02-16 Paul Eggert <eggert@cs.ucla.edu>
Remove no-longer needed getloadavg symbols.
* CPP-DEFINES (LOAD_AVE_CVT, LOAD_AVE_TYPE, FSCALE, KERNEL_FILE):
* 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>
@ -1336,7 +1631,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.
@ -1762,8 +2057,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.
@ -1883,7 +2176,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.
@ -1891,7 +2184,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,6 +2,8 @@ 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[^,]*[:.()]' {} +
@ -68,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.
@ -138,7 +139,7 @@ SECTION READERS
----------------------------------
TUTORIAL cyd
TUTORIAL.bg ogi
TUTORIAL.cn
TUTORIAL.cn xfq
TUTORIAL.cs
TUTORIAL.de wl
TUTORIAL.eo
@ -146,7 +147,7 @@ TUTORIAL.es
TUTORIAL.fr
TUTORIAL.he eliz
TUTORIAL.it
TUTORIAL.ja
TUTORIAL.ja
TUTORIAL.ko
TUTORIAL.nl Pieter Schoenmakers
TUTORIAL.pl
@ -161,111 +162,110 @@ TUTORIAL.zh
** Check the manual.
abbrevs.texi cyd
ack.texi rgm
anti.texi cyd
arevert-xtra.texi cyd
basic.texi cyd
buffers.texi cyd
building.texi cyd
calendar.texi rgm
cal-xtra.texi rgm
cmdargs.texi cyd
commands.texi cyd
custom.texi cyd
dired.texi cyd
dired-xtra.texi rgm
display.texi cyd
emacs.texi rgm
emacs-xtra.texi rgm
emerge-xtra.texi rgm
entering.texi cyd
files.texi cyd
fixit.texi cyd
fortran-xtra.texi rgm
frames.texi cyd
glossary.texi rgm
help.texi cyd
indent.texi cyd
killing.texi cyd
kmacro.texi cyd
macos.texi rgm (can't actually test any of it though)
maintaining.texi cyd
mark.texi cyd
mini.texi rgm
misc.texi cyd
modes.texi cyd
msdog.texi rgm (can't actually test any of it though)
msdog-xtra.texi rgm (can't actually test any of it though)
mule.texi rgm (not 100% sure about "Fontsets")
m-x.texi cyd
package.texi cyd
picture-xtra.texi rgm
programs.texi cyd
regs.texi cyd
rmail.texi rgm
screen.texi cyd
search.texi cyd
sending.texi cyd
text.texi cyd
trouble.texi cyd
vc-xtra.texi cyd
vc1-xtra.texi cyd
windows.texi cyd
xresources.texi cyd
abbrevs.texi
ack.texi
anti.texi
arevert-xtra.texi
basic.texi
buffers.texi
building.texi
calendar.texi
cal-xtra.texi
cmdargs.texi
commands.texi
custom.texi
dired.texi
dired-xtra.texi
display.texi
emacs.texi
emacs-xtra.texi
emerge-xtra.texi
entering.texi
files.texi
fixit.texi
fortran-xtra.texi
frames.texi
glossary.texi
help.texi
indent.texi
killing.texi
kmacro.texi
macos.texi
maintaining.texi
mark.texi
mini.texi
misc.texi
modes.texi
msdog.texi
msdog-xtra.texi
mule.texi
m-x.texi
package.texi
picture-xtra.texi
programs.texi
regs.texi
rmail.texi
screen.texi
search.texi
sending.texi
text.texi
trouble.texi
vc-xtra.texi
vc1-xtra.texi
windows.texi
xresources.texi
** Check the Lisp manual.
abbrevs.texi rgm
advice.texi cyd
anti.texi rgm
back.texi rgm
backups.texi cyd
buffers.texi cyd
commands.texi cyd
compile.texi cyd
control.texi cyd
customize.texi cyd
debugging.texi cyd
display.texi cyd
edebug.texi rgm
abbrevs.texi
anti.texi
back.texi
backups.texi
buffers.texi
commands.texi
compile.texi
control.texi
customize.texi
debugging.texi
display.texi
edebug.texi
elisp.texi
errors.texi rgm
eval.texi cyd
files.texi cyd
frames.texi cyd
functions.texi cyd
hash.texi cyd
help.texi cyd
hooks.texi rgm
errors.texi
eval.texi
files.texi
frames.texi
functions.texi
hash.texi
help.texi
hooks.texi
index.texi
internals.texi rgm cyd
intro.texi cyd
keymaps.texi cyd
lists.texi cyd
loading.texi cyd
macros.texi cyd
maps.texi rgm
markers.texi rgm
minibuf.texi rgm
modes.texi cyd
nonascii.texi cyd
numbers.texi cyd
objects.texi cyd
os.texi cyd
package.texi rgm
positions.texi cyd
processes.texi rgm
searching.texi rgm
sequences.texi cyd
streams.texi cyd
strings.texi cyd
symbols.texi cyd
syntax.texi cyd
text.texi cyd
tips.texi rgm
variables.texi cyd
windows.texi rgm (skimmed)
internals.texi
intro.texi
keymaps.texi
lists.texi
loading.texi
macros.texi
maps.texi
markers.texi
minibuf.texi
modes.texi
nonascii.texi
numbers.texi Paul Eggert (24.4)
objects.texi
os.texi
package.texi
positions.texi
processes.texi
searching.texi
sequences.texi
streams.texi
strings.texi
symbols.texi
syntax.texi
text.texi
tips.texi
variables.texi
windows.texi
Local variables:

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,7 +21,7 @@
;; 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:
@ -46,7 +46,7 @@ Optional argument DATE is the release date, default today."
(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))))
@ -62,18 +62,31 @@ Optional argument DATE is the release date, default today."
(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))
(replace-match (format "%s" version) nil nil nil 1))
(setq version (format "%s" version))
(unless (re-search-forward rx nil :noerror)
(user-error "Version not found in %s" file))
(if (not (equal version (match-string 1)))
(replace-match version nil nil nil 1)
(kill-buffer)
(message "No need to update `%s'" file)))
(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: ")
(interactive (list
(read-directory-name "Emacs root directory: " source-directory)
(read-string "Version number: "
(replace-regexp-in-string "\\.[0-9]+\\'" ""
emacs-version))))
(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))
(message "Setting version numbers...")
;; 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."))))))
@ -104,7 +117,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) ","
@ -153,8 +166,8 @@ Root must be the root of an Emacs source tree."
{\\([0-9]\\{2,\\}\\)}.+%.+version of Emacs")
(set-version-in-file root "etc/refcards/emacsver.tex" version
"\\\\def\\\\versionemacs\
{\\([0-9]\\{2,\\}\\)}.+%.+version of Emacs"))))
{\\([0-9]\\{2,\\}\\)}.+%.+version of Emacs")))
(message "Setting version numbers...done"))
;; Note this makes some assumptions about form of short copyright.
(defun set-copyright (root copyright)
@ -167,7 +180,8 @@ 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))
(message "Setting copyrights...")
(set-version-in-file root "configure.ac" copyright
(rx (and bol "copyright" (0+ (not (in ?\")))
?\" (submatch (1+ (not (in ?\")))) ?\")))
@ -189,12 +203,14 @@ Root must be the root of an Emacs source tree."
{\\([0-9]\\{4\\}\\)}.+%.+copyright year")
(set-version-in-file root "etc/refcards/emacsver.tex" copyright
"\\\\def\\\\year\
{\\([0-9]\\{4\\}\\)}.+%.+copyright year")))
{\\([0-9]\\{4\\}\\)}.+%.+copyright year"))
(message "Setting copyrights...done"))
;;; Various bits of magic for generating the web manuals
(defun manual-misc-manuals (root)
"Return doc/misc manuals as list of strings."
"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
@ -211,8 +227,10 @@ Root must be the root of an Emacs source tree."
(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: "
@ -319,6 +337,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)))
@ -328,7 +347,7 @@ 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"
@ -359,13 +378,14 @@ 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-pdf (texi-file dest)
"Run texi2pdf on TEXI-FILE, emitting pdf output to 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
@ -377,6 +397,7 @@ the @import directive."
(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)
@ -386,119 +407,215 @@ the @import directive."
(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"
(file-name-nondirectory buffer-file-name)))
(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
@ -510,14 +627,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\\)")))
@ -526,13 +643,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.
@ -568,7 +691,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))
@ -584,34 +707,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
@ -636,7 +761,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

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>
@ -187,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))

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.

View file

@ -1,8 +1,8 @@
;;; find-gc.el --- detect functions that call the garbage collector
;; Copyright (C) 1992, 2001-2013 Free Software Foundation, Inc.
;; Copyright (C) 1992, 2001-2014 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Maintainer: emacs-devel@gnu.org
;; This file is part of GNU Emacs.
@ -23,14 +23,15 @@
;; Produce in find-gc-unsafe-list the set of all functions that may invoke GC.
;; This expects the Emacs sources to live in find-gc-source-directory.
;; It creates a temporary working directory /tmp/esrc.
;;; Code:
(defvar find-gc-unsafe-list nil
"The list of unsafe functions is placed here by `find-gc-unsafe'.")
(defvar find-gc-source-directory)
(defvar find-gc-source-directory
(file-name-as-directory (expand-file-name "src" source-directory))
"Directory containing Emacs C sources.")
(defvar find-gc-subrs-callers nil
"Alist of users of subrs, from GC testing.
@ -59,22 +60,21 @@ Each entry has the form (FUNCTION . FUNCTIONS-IT-CALLS).")
"indent.c" "search.c" "regex.c" "undo.c"
"alloc.c" "data.c" "doc.c" "editfns.c"
"callint.c" "eval.c" "fns.c" "print.c" "lread.c"
"abbrev.c" "syntax.c" "unexcoff.c"
"syntax.c" "unexcoff.c"
"bytecode.c" "process.c" "callproc.c" "doprnt.c"
"x11term.c" "x11fns.c"))
"xterm.c" "xfns.c"))
(defun find-gc-unsafe ()
"Return a list of unsafe functions--that is, which can call GC.
Also store it in `find-gc-unsafe'."
Also store it in `find-gc-unsafe-list'."
(trace-call-tree nil)
(trace-use-tree)
(find-unsafe-funcs 'Fgarbage_collect)
(setq find-gc-unsafe-list
(sort find-gc-unsafe-list
(function (lambda (x y)
(string-lessp (car x) (car y))))))
)
(string-lessp (car x) (car y)))))))
;;; This does a depth-first search to find all functions that can
;;; ultimately call the function "target". The result is an a-list
@ -84,8 +84,7 @@ Also store it in `find-gc-unsafe'."
(defun find-unsafe-funcs (target)
(setq find-gc-unsafe-list (list (list target)))
(trace-unsafe target)
)
(trace-unsafe target))
(defun trace-unsafe (func)
(let ((used (assq func find-gc-subrs-callers)))
@ -96,53 +95,43 @@ Also store it in `find-gc-unsafe'."
(memq (car used) find-gc-noreturn-list)
(progn
(push (cons (car used) func) find-gc-unsafe-list)
(trace-unsafe (car used))))))
)
(trace-unsafe (car used)))))))
(defun trace-call-tree (&optional already-setup)
(defun trace-call-tree (&optional ignored)
(message "Setting up directories...")
(or already-setup
(progn
;; Gee, wouldn't a built-in "system" function be handy here.
(call-process "csh" nil nil nil "-c" "rm -rf /tmp/esrc")
(call-process "csh" nil nil nil "-c" "mkdir /tmp/esrc")
(call-process "csh" nil nil nil "-c"
(format "ln -s %s/*.[ch] /tmp/esrc"
find-gc-source-directory))))
(with-current-buffer (get-buffer-create "*Trace Call Tree*")
(setq find-gc-subrs-called nil)
(let ((case-fold-search nil)
(files find-gc-source-files)
name entry)
(while files
(message "Compiling %s..." (car files))
(call-process "csh" nil nil nil "-c"
(format "gcc -dr -c /tmp/esrc/%s -o /dev/null"
(car files)))
(erase-buffer)
(insert-file-contents (concat "/tmp/esrc/" (car files) ".rtl"))
(while (re-search-forward ";; Function \\|(call_insn " nil t)
(if (= (char-after (- (point) 3)) ?o)
(progn
(looking-at "[a-zA-Z0-9_]+")
(setq name (intern (buffer-substring (match-beginning 0)
(match-end 0))))
(message "%s : %s" (car files) name)
(setq entry (list name)
find-gc-subrs-called (cons entry find-gc-subrs-called)))
(if (looking-at ".*\n?.*\"\\([A-Za-z0-9_]+\\)\"")
(setq find-gc-subrs-called nil)
(let ((case-fold-search nil)
(default-directory find-gc-source-directory)
(files find-gc-source-files)
name entry rtlfile)
(dolist (file files)
(message "Compiling %s..." file)
(call-process "gcc" nil nil nil "-I" "." "-I" "../lib"
"-fdump-rtl-expand" "-o" null-device "-c" file)
(setq rtlfile
(file-expand-wildcards (format "%s.*.expand" file) t))
(if (/= 1 (length rtlfile))
(message "Error compiling `%s'?" file)
(with-temp-buffer
(insert-file-contents (setq rtlfile (car rtlfile)))
(delete-file rtlfile)
(while (re-search-forward ";; Function \\|(call_insn " nil t)
(if (= (char-after (- (point) 3)) ?o)
(progn
(setq name (intern (buffer-substring (match-beginning 1)
(match-end 1))))
(or (memq name (cdr entry))
(setcdr entry (cons name (cdr entry))))))))
(delete-file (concat "/tmp/esrc/" (car files) ".rtl"))
(setq files (cdr files)))))
)
(looking-at "[a-zA-Z0-9_]+")
(setq name (intern (match-string 0)))
(message "%s : %s" (car files) name)
(setq entry (list name)
find-gc-subrs-called
(cons entry find-gc-subrs-called)))
(if (looking-at ".*\n?.*\"\\([A-Za-z0-9_]+\\)\"")
(progn
(setq name (intern (match-string 1)))
(or (memq name (cdr entry))
(setcdr entry (cons name (cdr entry)))))))))))))
(defun trace-use-tree ()
(setq find-gc-subrs-callers (mapcar 'list (mapcar 'car find-gc-subrs-called)))
@ -153,8 +142,7 @@ Also store it in `find-gc-unsafe'."
(while (setq p2 (cdr p2))
(if (setq found (assq (car p2) find-gc-subrs-callers))
(setcdr found (cons (car (car ptr)) (cdr found)))))
(setq ptr (cdr ptr))))
)
(setq ptr (cdr ptr)))))
(provide 'find-gc)

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

@ -0,0 +1,116 @@
### @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@
# Prevent any settings in the user environment causing problems.
unexport EMACSDATA EMACSDOC EMACSPATH
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

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

213
admin/mac/uvs.el Normal file
View file

@ -0,0 +1,213 @@
;;; uvs.el --- utility for UVS (format 14) cmap subtables in OpenType fonts.
;; Copyright (C) 2014 Free Software Foundation, Inc.
;; Author: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
;; 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:
;; To extract a C array definition of a UVS table for the Adobe-Japan1
;; character collection from an IVD Sequences file, execute
;; $ emacs -batch -l uvs.el \
;; --eval '(uvs-print-table-ivd "IVD_Sequences.txt" "Adobe-Japan1")' \
;; > uvs.h
;;; Code:
(defun uvs-fields-total-size (fields)
(apply '+ (mapcar (lambda (field) (get field 'uvs-field-size)) fields)))
;;; Fields in Format 14 header.
(defconst uvs-format-14-header-fields
'(format length num-var-selector-records))
(put 'format 'uvs-field-size 2)
(put 'length 'uvs-field-size 4)
(put 'num-var-selector-records 'uvs-field-size 4)
(defconst uvs-format-14-header-size
(uvs-fields-total-size uvs-format-14-header-fields))
;;; Fields in Variation Selector Record.
(defconst uvs-variation-selector-record-fields
'(var-selector default-uvs-offset non-default-uvs-offset))
(put 'var-selector 'uvs-field-size 3)
(put 'default-uvs-offset 'uvs-field-size 4)
(put 'non-default-uvs-offset 'uvs-field-size 4)
(defconst uvs-variation-selector-record-size
(uvs-fields-total-size uvs-variation-selector-record-fields))
;;; Fields in Non-Default UVS Table.
(defconst uvs-non-default-uvs-table-header-fields '(num-uvs-mappings))
(put 'num-uvs-mappings 'uvs-field-size 4)
(defconst uvs-non-default-uvs-table-header-size
(uvs-fields-total-size uvs-non-default-uvs-table-header-fields))
;;; Fields in UVS Mapping.
(defconst uvs-uvs-mapping-fields '(unicode-value glyph-id))
(put 'unicode-value 'uvs-field-size 3)
(put 'glyph-id 'uvs-field-size 2)
(defconst uvs-uvs-mapping-size
(uvs-fields-total-size uvs-uvs-mapping-fields))
(defun uvs-alist-from-ivd (collection-id sequence-id-to-glyph-function)
"Create UVS alist from IVD Sequences and COLLECTION-ID.
The IVD (Ideographic Variation Database) Sequences are obtained
from the contents of the current buffer, and should be in the
form of IVD_Sequences.txt specified in Unicode Technical Standard
#37. COLLECTION-ID is a string specifying the identifier of the
collection to extract (e.g., \"Adobe-Japan1\").
SEQUENCE-ID-TO-GLYPH-FUNC is a function to convert an identifier
string of the sequence to a glyph number. UVS alist is of the
following form:
((SELECTOR1 . ((BASE11 . GLYPH11) (BASE12 . GLYPH12) ...))
(SELECTOR2 . ((BASE21 . GLYPH21) (BASE22 . GLYPH22) ...)) ...),
where selectors and bases are sorted in ascending order."
(let (uvs-alist)
(goto-char (point-min))
(while (re-search-forward
(concat "^[[:blank:]]*"
"\\([[:xdigit:]]+\\) \\([[:xdigit:]]+\\)"
"[[:blank:]]*;[[:blank:]]*"
"\\(?:" (regexp-quote collection-id) "\\)"
"[[:blank:]]*;[[:blank:]]*"
"\\([^\n[:blank:]]+\\)"
"[[:blank:]]*$") nil t)
(let* ((base (string-to-number (match-string 1) 16))
(selector (string-to-number (match-string 2) 16))
(sequence-id (match-string 3))
(glyph (funcall sequence-id-to-glyph-function sequence-id)))
(let ((selector-bgs (assq selector uvs-alist))
(base-glyph (cons base glyph)))
(if selector-bgs
(setcdr selector-bgs (cons base-glyph (cdr selector-bgs)))
(push (cons selector (list base-glyph)) uvs-alist)))))
(dolist (selector-bgs uvs-alist)
(setcdr selector-bgs
(sort (cdr selector-bgs)
(lambda (bg1 bg2) (< (car bg1) (car bg2))))))
(sort uvs-alist (lambda (sb1 sb2) (< (car sb1) (car sb2))))))
(defun uvs-int-to-bytes (value size)
"Convert integer VALUE to a list of SIZE bytes.
The most significant byte comes first."
(let (result)
(dotimes (i size)
(push (logand value #xff) result)
(setq value (lsh value -8)))
result))
(defun uvs-insert-fields-as-bytes (fields &rest values)
"Insert VALUES for FIELDS as a sequence of bytes to the current buffer.
VALUES and FIELDS are lists of integers and field symbols,
respectively. Byte length of each value is determined by the
'uvs-field-size' property of the corresponding field."
(while fields
(let ((field (car fields))
(value (car values)))
(insert (apply 'unibyte-string
(uvs-int-to-bytes value (get field 'uvs-field-size))))
(setq fields (cdr fields) values (cdr values)))))
(defun uvs-insert-alist-as-bytes (uvs-alist)
"Insert UVS-ALIST as a sequence of bytes to the current buffer."
(let* ((nrecords (length uvs-alist)) ; # of selectors
(total-nmappings
(apply '+ (mapcar
(lambda (selector-bgs) (length (cdr selector-bgs)))
uvs-alist)))
(non-default-offset
(+ uvs-format-14-header-size
(* uvs-variation-selector-record-size nrecords))))
(uvs-insert-fields-as-bytes uvs-format-14-header-fields
14
(+ uvs-format-14-header-size
(* uvs-variation-selector-record-size
nrecords)
(* uvs-non-default-uvs-table-header-size
nrecords)
(* uvs-uvs-mapping-size total-nmappings))
nrecords)
(dolist (selector-bgs uvs-alist)
(uvs-insert-fields-as-bytes uvs-variation-selector-record-fields
(car selector-bgs)
0 ; No Default UVS Tables.
non-default-offset)
(setq non-default-offset
(+ non-default-offset
uvs-non-default-uvs-table-header-size
(* (length (cdr selector-bgs)) uvs-uvs-mapping-size))))
(dolist (selector-bgs uvs-alist)
(uvs-insert-fields-as-bytes uvs-non-default-uvs-table-header-fields
(length (cdr selector-bgs)))
(dolist (base-glyph (cdr selector-bgs))
(uvs-insert-fields-as-bytes uvs-uvs-mapping-fields
(car base-glyph)
(cdr base-glyph))))))
(defun uvs-dump (&optional bytes-per-line separator separator-eol line-prefix)
"Print the current buffer as in representation of C array contents."
(or bytes-per-line (setq bytes-per-line 8))
(or separator (setq separator ", "))
(or separator-eol (setq separator-eol ","))
(or line-prefix (setq line-prefix " "))
(goto-char (point-min))
(while (> (- (point-max) (point)) bytes-per-line)
(princ line-prefix)
(princ (mapconcat (lambda (byte) (format "0x%02x" byte))
(string-to-unibyte
(buffer-substring (point) (+ (point) bytes-per-line)))
separator))
(princ separator-eol)
(terpri)
(forward-char bytes-per-line))
(princ line-prefix)
(princ (mapconcat (lambda (byte) (format "0x%02x" byte))
(string-to-unibyte
(buffer-substring (point) (point-max)))
separator))
(terpri))
(defun uvs-print-table-ivd (filename collection-id
&optional sequence-id-to-glyph-func)
"Print a C array definition of a UVS table for IVD Sequences.
FILENAME specifies the IVD Sequences file. COLLECTION-ID is a
string specifying the identifier of the collection to
extract (e.g., \"Adobe-Japan1\"). SEQUENCE-ID-TO-GLYPH-FUNC is a
function to convert an identifier string of the sequence to a
glyph number, and nil means to convert \"CID\\+[0-9]+\" to the
corresponding number."
(or sequence-id-to-glyph-func
(setq sequence-id-to-glyph-func
(lambda (sequence-id)
(string-match "\\`CID\\+\\([[:digit:]]+\\)\\'" sequence-id)
(string-to-number (match-string 1 sequence-id)))))
(let ((uvs-alist
(with-temp-buffer
(insert-file-contents filename)
(setq uvs-alist (uvs-alist-from-ivd collection-id
sequence-id-to-glyph-func)))))
(princ
(format "static const unsigned char mac_uvs_table_%s_bytes[] =\n {\n"
(replace-regexp-in-string "[^_[:alnum:]]" "_"
(downcase collection-id))))
(with-temp-buffer
(set-buffer-multibyte nil)
(uvs-insert-alist-as-bytes uvs-alist)
(uvs-dump))
(princ " };\n")))
;;; uvs.el ends here

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

@ -5,6 +5,11 @@ Instructions to create pretest or release tarballs. -*- coding: utf-8 -*-
Steps to take before starting on the first pretest in any release sequence:
0. The release branch (e.g. emacs-24) should already have been made
and you should use it for all that follows. Diffs from this
branch should be going to the emacs-diffs mailing list (see
admin/notes/bzr section on bzr-email plugin).
1. Decide on versions of automake and autoconf, and ensure you will
have them available for the duration of the release process.
@ -14,28 +19,22 @@ Steps to take before starting on the first pretest in any release sequence:
when preparing the first pretest for a major Emacs release.)
Commit cus-edit.el if changed.
3. Remove any old pretests from ftp://alpha.gnu.org/gnu/emacs/pretest.
You can use `gnupload --delete' (see below for more gnupload details).
General steps (for each step, check for possible errors):
1. `bzr update' (for a bound branch), or `bzr pull'.
bzr status # check for locally modified files
2. Bootstrap to make 100% sure all elc files are up-to-date, and to
make sure that the later tagged version will bootstrap, should it be
necessary to check it out.
3. Regenerate the etc/AUTHORS file:
2. Regenerate the etc/AUTHORS file:
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.
@ -43,7 +42,7 @@ General steps (for each step, check for possible errors):
authors-ambiguous-files or authors-aliases, and repeat.
Commit any fixes to ChangeLogs or authors.el.
4. Set the version number (M-x load-file RET admin/admin.el RET, then
3. Set the version number (M-x load-file RET admin/admin.el RET, then
M-x set-version RET). For a release, add released ChangeLog
entries (M-x add-release-logs RET).
@ -58,31 +57,37 @@ General steps (for each step, check for possible errors):
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
4. 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.
5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el.
Commit etc/AUTHORS, lisp/ldefs-boot.el, and the files changed
by M-x set-version.
by M-x set-version. Use a commit log message that bzrmerge.el
will ignore (eg "Bump version...").
For a release, also commit the ChangeLog files in all directories.
7. ./make-dist --snapshot --no-compress
If someone else made a commit between step 1 and now,
you need to repeat from step 4 onwards. (You can commit the files
from step 2 and 3 earlier to reduce the chance of this.)
Check the contents of the new tar with
admin/diff-tar-files against an older tar file. Some old pretest
tarballs may be found at <ftp://alpha.gnu.org/gnu/emacs/pretest>;
old release tarballs are at <ftp://ftp.gnu.org/pub/gnu/emacs/>.
6. ./make-dist --snapshot --no-compress
Check the contents of the new tar with admin/diff-tar-files
against the previous release (if this is the first pretest) or the
previous pretest. If you did not make the previous pretest
yourself, find it at <ftp://alpha.gnu.org/gnu/emacs/pretest>.
Releases are of course at <ftp://ftp.gnu.org/pub/gnu/emacs/>.
If this is the first pretest of a major release, just comparing
with the previous release may overlook many new files. You can try
something like `find . | sort' in a clean bzr tree, and compare the
results against the new tar contents.
8. tar -xf emacs-NEW.tar; cd emacs-NEW
7. tar -xf emacs-NEW.tar; cd emacs-NEW
./configure --prefix=/tmp/emacs && make && make install
Use `script' or M-x compile to save the compilation log in
compile-NEW.log and compare it against an old one. The easiest way
@ -91,25 +96,21 @@ General steps (for each step, check for possible errors):
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
8. cd EMACS_ROOT_DIR && bzr tag TAG
TAG is emacs-XX.Y.ZZ for a pretest, emacs-XX.Y for a release.
Shortly before the release, cut the version branch also, and open
a Savannah support request asking for commits to the new branch to
be sent to the emacs-diffs mailing list (by default, the list
normally only gets commits to the trunk).
10. Decide what compression schemes to offer.
9. Decide what compression schemes to offer.
For a release, at least gz and xz:
gzip --best -c emacs-NEW.tar > emacs-NEW.tar.gz
xz -c emacs-NEW.tar > emacs-NEW.tar.xz
For pretests, just xz is probably fine (saves bandwidth).
Now you should upload the files to the GNU ftp server. In order to
do that, you must be registered as an Emacs maintainer and have your
GPG key acknowledged by the ftp people. For instructions, see
http://www.gnu.org/prep/maintain/html_node/Automated-Upload-Registration.html
The simplest method is to use the gnulib <http://www.gnu.org/s/gnulib/>
script "build-aux/gnupload" to upload each FILE, like this:
The simplest method to upload is to use the gnulib
<http://www.gnu.org/s/gnulib/> script "build-aux/gnupload":
For a pretest:
gnupload [--user your@gpg.key.email] --to alpha.gnu.org:emacs/pretest \
@ -140,19 +141,21 @@ General steps (for each step, check for possible errors):
For a pretest, place the files in /incoming/alpha instead, so that
they appear on ftp://alpha.gnu.org/.
11. After five minutes, verify that the files are visible at
10. After five minutes, verify that the files are visible at
ftp://alpha.gnu.org/gnu/emacs/pretest/ for a pretest, or
ftp://ftp.gnu.org/gnu/emacs/ for a release.
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.)
11. Send an announcement to: emacs-devel, and bcc: info-gnu-emacs@gnu.org.
For a pretest, also bcc: platform-testers@gnu.org.
(The reason for using bcc: is to make it less likely that people
will followup on the wrong list.)
See the info-gnu-emacs mailing list archives for the form
of past announcements. The first pretest announcement, and the
release announcement, should have more detail.
13. For a release, update the Emacs homepage in the web repository.
Also add the new NEWS file as NEWS.xx.y.
Maybe regenerate the html manuals, update the FAQ, etc, etc.
12. For a release, update the Emacs homepage in the web repository.
Also update history.html, and add the new NEWS file as NEWS.xx.y.
Regenerate the html manuals (use make-manuals from admin.el).
If there are new manuals, add appropriate index pages.

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,17 +26,19 @@
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 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
sig2str socklen stat-time stdalign 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
'
@ -46,7 +48,8 @@ GNULIB_TOOL_FLAGS='
--avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow
--avoid=open --avoid=openat-die --avoid=opendir
--avoid=raise
--avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types
--avoid=save-cwd --avoid=select --avoid=sigprocmask
--avoid=stdarg --avoid=stdbool
--avoid=threadlib
--conditional-dependencies --import --no-changelog --no-vc-files
--makefile-name=gnulib.mk
@ -90,7 +93,9 @@ 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"}
{ test -z "$src" || cd "$src"; } &&
./autogen.sh

63
admin/merge-pkg-config Executable file
View file

@ -0,0 +1,63 @@
#! /bin/sh
# Merge pkg-config macros into Emacs sources.
# Typical usage:
#
# admin/merge-pkg-config
# Copyright 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
{
# Maybe ACLOCAL_PATH is already set-up.
oIFS=$IFS
IFS=:
for dir in $ACLOCAL_PATH ''; do
test -n "$dir" && test -r "$dir/pkg.m4" && break
done
IFS=$oIFS
test -n "$dir"
} || {
# Use the pkg.m4 installed where aclocal knows about it.
# Maybe we are running our own aclocal, which doesn't know where
# the standard pkg.m4 is installed, so try running all the
# aclocal programs in our PATH.
oIFS=$IFS
IFS=:
for dir in $PATH ''; do
if test -n "$dir" && test -x "$dir/aclocal"; then
dir=$("$dir/aclocal" --print-ac-dir) && test -r "$dir/pkg.m4" && break
fi
done
IFS=$oIFS
test -n "$dir"
} || {
echo >&2 "$0: cannot find pkg.m4"
exit 1
}
test -d m4 || {
echo >&2 "$0: please run this command in the main source directory"
exit 1
}
echo >&2 "$0: copying $dir/pkg.m4 to m4/pkg.m4"
cp $dir/pkg.m4 m4

View file

@ -3,9 +3,9 @@ NOTES ON COMMITTING TO EMACS'S BAZAAR REPO -*- outline -*-
* Install changes only on one branch, let them get merged elsewhere if needed.
In particular, install bug-fixes only on the release branch (if there
is one) and let them get synced to the trunk; do not install them by
hand on the trunk as well. E.g. if there is an active "emacs-23" branch
and you have a bug-fix appropriate for the next Emacs-23.x release,
install it only on the emacs-23 branch, not on the trunk as well.
hand on the trunk as well. E.g. if there is an active "emacs-24" branch
and you have a bug-fix appropriate for the next emacs-24.x release,
install it only on the emacs-24 branch, not on the trunk as well.
Installing things manually into more than one branch makes merges more
difficult.
@ -18,7 +18,7 @@ In that case, it's helpful if you can apply the change to both trunk
and branch yourself (when committing the branch change, indicate
in the commit log that it should not be merged to the trunk; see below).
* Backporting a bug-fix from the trunk to a branch (e.g. "emacs-23").
* Backporting a bug-fix from the trunk to a branch (e.g. "emacs-24").
Indicate in the commit log that there is no need to merge the commit
to the trunk. Anything that matches `bzrmerge-skip-regexp' will do;
eg start the commit message with "Backport:". This is helpful for the
@ -49,7 +49,7 @@ http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00086.html
* Installing changes from gnulib
Some of the files in Emacs are copied from gnulib. To synchronize
these files from the version of gnulib that you have checked out into
a sibling directory of your branch, type "make sync-from-gnulib"; this
a sibling directory of your branch, type "admin/merge-gnulib"; this
will check out the latest version of gnulib if there is no sibling
directory already. It is a good idea to run "bzr status" afterwards,
so that if a gnulib module added a file, you can record the new file
@ -57,17 +57,12 @@ using "bzr add". After synchronizing from gnulib, do a "make" in the
usual way.
To change the set of gnulib modules, change the GNULIB_MODULES
variable in the top-level Makefile.in, and then run:
variable in admin/merge-gnulib before running it.
./config.status
make sync-from-gnulib
bzr status
The last command will mention files that may need to be added using
"bzr add". If you remove a gnulib module, or if a gnulib module
If you remove a gnulib module, or if a gnulib module
removes a file, then remove the corresponding files by hand.
* How to merge changes from emacs-23 to trunk
* How to merge changes from emacs-24 to trunk
The following description uses bound branches, presumably it works in
a similar way with unbound ones.
@ -90,7 +85,7 @@ copy in ~/.bazaar if you upgrade bzr.
Maybe the default Emacs behavior without this plugin is better,
though, it's not clear yet.
1) Get clean, up-to-date copies of the emacs-23 and trunk branches.
1) Get clean, up-to-date copies of the emacs-24 and trunk branches.
Check for any uncommitted changes with bzr status.
2) M-x cd /path/to/trunk
@ -102,7 +97,7 @@ changelog_merge_files = ChangeLog
3) load admin/bzrmerge.el
4) M-x bzrmerge RET /path/to/emacs-23 RET
4) M-x bzrmerge RET /path/to/emacs-24 RET
It will prompt about revisions that should be skipped, based on the
regexp in bzrmerge-missing. If there are more revisions that you know
@ -119,7 +114,7 @@ Do not commit (or exit Emacs) until you have run bzrmerge to completion.
Before committing, check bzr status and bzr diff output.
If you have run bzrmerge enough times, the "pending merge tip" in bzr
status should be the last revision from the emacs-23 branch, and
status should be the last revision from the emacs-24 branch, and
bzr status -v should show all the revisions you expect to merge.
(Note that it will also show "skipped" revisions. This is expected,
@ -141,18 +136,13 @@ authors, don't break the logical ordering in doing this.
Notes:
1) A lot that was in tramp.el in emacs-23 has moved to tramp-sh.el in
the trunk. If you end up with a conflict in tramp.el, the changes may
need to go to tramp-sh.el instead. Remember to update the file name in
the ChangeLog.
2) If a file is modified in emacs-23, and deleted in the trunk, you
1) If a file is modified in emacs-24, and deleted in the trunk, you
get a "contents conflict". Assuming the changes don't need to be in
the trunk at all, use `bzr resolve path/to/file --take-this' to keep the
trunk version. Prior to bzr 2.2.3, this may fail. You can just
delete the .OTHER etc files by hand and use bzr resolve path/to/file.
3) Conflicts in autoload md5sums in comments. Strictly speaking, the
2) Conflicts in autoload md5sums in comments. Strictly speaking, the
right thing to do is merge everything else, resolve the conflict by
choosing either the trunk or branch version, then run `make -C lisp
autoloads' to update the md5sums to the correct trunk value before
@ -364,3 +354,45 @@ works), or by adding an entry to ~/.bazaar/locations.conf:
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.
** remote name
Although Git itself is agnostic about what names you choose for
the remote repo, it seems git-bzr is more likely to get confused.
After the clone as described above, the remote name is "origin";
changing it is Not Recommended. [Insert 9-hour high-entropy then
mysterious bug w/ JSON parsing errors anecdote here. --ttn]

View file

@ -1,3 +1,12 @@
Emacs generally follows the GNU coding standards when it comes to ChangeLogs:
http://www.gnu.org/prep/standards/html_node/Change-Logs.html
One exception is that we still sometimes quote `like-this' (as the
standards used to recommend) rather than 'like-this' (as they do now),
because `...' is so widely used elsewhere in Emacs.
http://lists.gnu.org/archive/html/emacs-devel/2014-05/msg00514.html
If installing changes written by someone else, make the ChangeLog
entry in their name, not yours.

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.
@ -137,7 +137,10 @@ GNUstep/Emacs.base/Resources/Info-gnustep.plist
aclocal.m4
configure
m4/*.m4
- copyright FSF, with unlimited permission to copy, distribute and modify
- These files are copyright FSF, with unlimited permission to copy,
distribute and modify, so long as the copyright notice is preserved.
Exception: m4/pkg.m4 is copyright Scott James Remnant; it is
distributed under the same terms as for the rest of Emacs.
lib/Makefile.in
- copyright FSF, with MIT-like license
@ -161,13 +164,6 @@ etc/letter.pbm,letter.xpm
etc/FTP, ORDERS
- trivial (at time of writing), no license needed
etc/GNU, INTERVIEW, LINUX-GNU, MOTIVATION, SERVICE, THE-GNU-PROJECT,
WHY-FREE
rms: "These are statements of opinion or testimony. Their licenses
should permit verbatim copying only. Please don't change the
licenses that they have. They are distributed with Emacs but they
are not part of Emacs."
etc/HELLO
standard notices. Just a note that although the file itself is not
really copyrightable, in the wider context of it being part of

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.

View file

@ -1,6 +1,6 @@
-*- outline -*-
Copyright (C) 2013 Free Software Foundation, Inc.
Copyright (C) 2013-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.
NOTES FOR EMACS CONTINUOUS BUILD ON HYDRA

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.
@ -101,16 +101,6 @@ Known problems:
I plan to implement better user notification and support for
breaking out of single-kboard mode from locked displays.
* Mac and DOS support is broken, doesn't even
compile. Multiple display support will probably not provide
new Emacs features on these systems, but the multi-tty
branch changed a few low-level interfaces, and the
system-dependent source files need to be adapted
accordingly. The changes are mostly trivial, so almost
anyone can help, if only by compiling the branch and
reporting the compiler errors.
TESTING
-------
@ -504,17 +494,6 @@ THINGS TO DO
(This is likely an error in the CVS trunk.)
** Dan Nicolaescu suggests that -nw should be added as an alias for -t
in emacsclient. Good idea. (Alas, implementing this is not
trivial, getopt_long does not seem to support two-letter ``short''
options. Patches are welcome.)
** Mark Plaksin suggests that emacsclient should accept the same
X-related command-line arguments as Emacs. Most of the X-related
argument-handling is done in Lisp, so this should be quite easy to
implement. (For example, Samium Gromoff wants emacsclient to
support --geometry; implementing this would add that support.)
** Gergely Nagy suggests that C-x # should only kill the current
frame, not any other emacsclient frame that may have the same file
opened for editing. I think I agree with him.
@ -532,21 +511,9 @@ THINGS TO DO
an initial frame. (The user would connect to it and open frames
later, with emacsclient.)
** Fix Mac support (I can't do this entirely myself). Note that the
current state of Mac-specific source files in the multi-tty tree
are not useful; before starting work on Mac support, revert to
pristine, pre-multi-tty versions.
** Fix DOS support (I can't do this entirely myself). Note that the
current state of DOS-specific source files in the multi-tty tree
are not useful; before starting work on DOS support, revert to
pristine, pre-multi-tty versions.
** Fix Windows support. Currently bootstrapping works on w32, but Emacs
crashes on startup and none of the multi-tty features are
implemented. Many XXX comments mark things that probably need
updating, ChangeLogs will help in spotting changes to X specific
files that may need porting.
** Implement Mac/Windows/DOS support. Many XXX comments mark things
that probably need updating, ChangeLogs will help in spotting
changes to X specific files that may need porting.
** Do a grep on XXX and ?? for more issues.
@ -1085,18 +1052,6 @@ DIARY OF CHANGES
(Done.)
-- Miles Bader suggests that C-x C-c on an emacsclient frame should
only close the frame, not exit the entire Emacs session. Update:
see above for a function that does this. Maybe this should be the
new default?
(Done. This is the new default. No complaints so far.)
-- Clean up the frame-local variable system. I think it's ugly and
error-prone. But maybe I just haven't yet fully understood it.
(Nothing to do. It doesn't seem ugly any more. It's rather clever.)
-- Support multiple character locales. A version of
`set-locale-environment' needs to be written for setting up
display-local settings on ttys. I think calling
@ -1114,18 +1069,6 @@ DIARY OF CHANGES
(Done, by making `function-key-map' terminal-local (i.e., part of
struct kboard). This has probably covered all the remaining problems.)
-- Make `function-key-map' and `key-translation-map' terminal-local.
(Done.)
-- Implement `terminal-local-value' and `set-terminal-local-value' to
allow deterministic access to terminal local bindings. The
encode-kb package can not set up `key-translation-map' without
these. The terminal-local bindings seem to be independent of what
frame is selected.
(Done.)
-- xt-mouse.el needs to be adapted for multi-tty. It currently
signals an error on kill-emacs under X, which prevents the user
from exiting Emacs. (Reported by Mnemonikk on freenode.)

View file

@ -1,6 +1,6 @@
-*-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
@ -181,13 +181,6 @@ nontrivial changes to the build process.
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.

View file

@ -1,6 +1,6 @@
-*- outline -*-
Copyright (C) 2013 Free Software Foundation, Inc.
Copyright (C) 2013-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.
NOTES FOR EMACS WWW PAGES

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,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.
Precompiled Distributions of

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>
@ -30,7 +30,7 @@
PUBLIC_LIBSRC_BINARIES='emacsclient etags ctags ebrowse'
PUBLIC_LIBSRC_SCRIPTS='grep-changelog'
AVOID="CVS -DIC README COPYING ChangeLog ~ [.]orig$ [.]rej$ Makefile$ Makefile.in$ makefile$ makefile.w32-in$ stamp-subdir [.]cvsignore [.]arch-ids [{]arch[}] [.][cho]$ make-docfile testfile test-distrib"
AVOID="CVS -DIC README COPYING ChangeLog ~ [.]orig$ [.]rej$ Makefile$ Makefile.in$ makefile$ makefile.w32-in$ stamp-subdir [.]cvsignore [.]arch-ids [{]arch[}] [.][cho]$ make-docfile"
# Prune old binaries lying around in the source tree
PRUNE=no

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 @@
### @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)
@ -24,13 +24,14 @@
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,34 @@ 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"
if [ -d .bzr ]; then
vcs=bzr
elif [ -d .git ]; then
vcs=git
else
die "Cannot determine vcs"
fi
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 +83,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 +113,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 +121,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 +148,39 @@ OPTIND=1
[ "$quiet" ] && exec 1> /dev/null
echo "Running bzr status..."
## Run status on inputs, list modified files on stdout.
status ()
{
local statflag="-S"
[ "$vcs" = "git" ] && statflag="-s"
bzr status -S $sources ${ldefs_flag:+lisp} >| $tempfile || \
die "bzr status error for sources"
$vcs status $statflag "$@" >| $tempfile || die "$vcs status error for $@"
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 +211,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 ()
{
@ -217,14 +228,93 @@ commit ()
echo "Committing..."
## bzr status output is always relative to top-level, not PWD.
bzr commit -m "Auto-commit of $type files." "$@" || return $?
$vcs commit -m "Auto-commit of $type files." "$@" || return $?
[ "$vcs" = "git" ] && {
$vcs push || return $?
}
echo "Committed files: $@"
} # 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
## bzr status output is always relative to top-level, not PWD.
[ "$vcs" = "bzr" ] && cd $oldpwd
commit "generated" $modified || die "commit error"
exit 0
} # $autogendir
[ "$info_flag" ] && info_dir
[ "$ldefs_flag" ] || exit 0
@ -232,8 +322,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 +376,14 @@ 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=$(status $genfiles ${ldefs_out#lisp/}) || die
modified=
while read stat file; do
[ "$stat" != "M" ] && die "Unexpected status ($stat) for generated $file"
modified="$modified $file"
done < $tempfile
## bzr status output is always relative to top-level, not PWD.
[ "$vcs" = "bzr" ] && cd ../
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:
@ -49,7 +50,7 @@ automake_min=`sed -n 's/^ *AM_INIT_AUTOMAKE(\([0-9\.]*\)).*/\1/p' configure.ac`
get_version ()
{
## Remove eg "./autogen.sh: line 50: autoconf: command not found".
$1 --version 2>&1 | sed -e '/not found/d' -n -e '1 s/.* \([1-9][0-9\.]*\).*/\1/p'
$1 --version 2>&1 | sed -e '/not found/d' -e 's/.* //' -n -e '1 s/\([0-9][0-9\.]*\).*/\1/p'
}
## $1 = version string, eg "2.59"
@ -75,7 +76,7 @@ minor_version ()
check_version ()
{
## Respect eg $AUTOMAKE if it is set, like autoreconf does.
uprog=`echo $1 | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
uprog=`echo $1 | sed -e 's/-/_/g' -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
eval uprog=\$${uprog}
@ -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
@ -113,7 +114,9 @@ missing=
for prog in $progs; do
eval min=\$${prog}_min
sprog=`echo "$prog" | sed 's/-/_/g'`
eval min=\$${sprog}_min
echo "Checking for $prog (need at least version $min)..."
@ -132,7 +135,7 @@ for prog in $progs; do
if [ $retval -ne 0 ]; then
missing="$missing $prog"
eval ${prog}_why=\""$stat"\"
eval ${sprog}_why=\""$stat"\"
fi
done
@ -146,7 +149,9 @@ Building Emacs from Bzr requires the following specialized programs:
EOF
for prog in $progs; do
eval min=\$${prog}_min
sprog=`echo "$prog" | sed 's/-/_/g'`
eval min=\$${sprog}_min
echo "$prog (minimum version $min)"
done
@ -158,7 +163,9 @@ Your system seems to be missing the following tool(s):
EOF
for prog in $missing; do
eval why=\$${prog}_why
sprog=`echo "$prog" | sed 's/-/_/g'`
eval why=\$${sprog}_why
echo "$prog ($why)"
done
@ -187,34 +194,29 @@ this script.
If you know that the required versions are in your PATH, but this
script has made an error, then you can simply run
autoreconf -i -I m4
autoreconf -fi -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
exit 1
fi
echo "Your system has the required tools, running autoreconf..."
echo 'Your system has the required tools.'
echo "Running 'autoreconf -fi -I m4' ..."
## Let autoreconf figure out what, if anything, needs doing.
autoreconf -i -I m4 || exit $?
## Use autoreconf's -f option in case autoreconf itself has changed.
autoreconf -fi -I m4 || exit $?
## Create a timestamp, so that './autogen.sh; make' doesn't
## cause 'make' to needlessly run 'autoheader'.
echo timestamp > src/stamp-h.in || exit
echo "You can now run \`./configure'."
echo "You can now run './configure'."
exit 0

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)

1080
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

30920
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)

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
@ -264,8 +264,14 @@ cd lib
Rem Rename files like djtar on plain DOS filesystem would.
If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h
If Exist alloca.in.h update alloca.in.h alloca.in-h
If Exist byteswap.in.h update byteswap.in.h byteswap.in-h
If Exist dirent.in.h update dirent.in.h dirent.in-h
If Exist errno.in.h update errno.in.h errno.in-h
If Exist execinfo.in.h update execinfo.in.h execinfo.in-h
If Exist fcntl.in.h update fcntl.in.h fcntl.in-h
If Exist getopt.in.h update getopt.in.h getopt.in-h
If Exist inttypes.in.h update inttypes.in.h inttypes.in-h
If Exist stdarg.in.h update stdarg.in.h stdarg.in-h
If Exist stdalign.in.h update stdalign.in.h stdalign.in-h
If Exist stdbool.in.h update stdbool.in.h stdbool.in-h
If Exist signal.in.h update signal.in.h signal.in-h
@ -274,12 +280,15 @@ If Exist stddef.in.h update stddef.in.h stddef.in-h
If Exist stdint.in.h update stdint.in.h stdint.in-h
If Exist stdio.in.h update stdio.in.h stdio.in-h
If Exist stdlib.in.h update stdlib.in.h stdlib.in-h
If Exist string.in.h update string.in.h string.in-h
If Exist sys_select.in.h update sys_select.in.h sys_select.in-h
If Exist sys_stat.in.h update sys_stat.in.h sys_stat.in-h
If Exist sys_types.in.h update sys_types.in.h sys_types.in-h
If Exist sys_time.in.h update sys_time.in.h sys_time.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/
@ -294,13 +303,18 @@ If Exist gnus\.dir-locals.el update gnus/.dir-locals.el gnus/_dir-locals.el
sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile
cd ..
rem ----------------------------------------------------------------------
If not Exist leim\quail\latin-pre.el goto maindir
Echo Configuring the leim directory...
cd leim
sed -f ../msdos/sedleim.inp < Makefile.in > Makefile
cd ..
rem ----------------------------------------------------------------------
:maindir
If Not Exist admin\unidata goto noadmin
Echo Configuring the admin/unidata directory...
cd admin\unidata
sed -f ../../msdos/sedadmin.inp < Makefile.in > Makefile
cd ..\..
:noadmin
rem ----------------------------------------------------------------------
Echo Configuring the main directory...
If Exist .dir-locals.el update .dir-locals.el _dir-locals.el
If Exist src\.dbxinit update src/.dbxinit src/_dbxinit

File diff suppressed because it is too large Load diff

View file

@ -1,3 +1,594 @@
2014-05-26 Eli Zaretskii <eliz@gnu.org>
* frames.texi (Fonts): Clarify which frames are affected by
setting font from the menu and in default-frame-alist.
(Bug#17532)
2014-05-14 Eli Zaretskii <eliz@gnu.org>
* mule.texi (Language Environments): Remove unused @anchor. (Bug#17479)
2014-05-04 Eli Zaretskii <eliz@gnu.org>
* trouble.texi (Lossage, DEL Does Not Delete, Stuck Recursive)
(Screen Garbled, Text Garbled, After a Crash, Emergency Escape)
(Bug Criteria, Understanding Bug Reporting, Checklist, Service):
Improve indexing.
2014-05-04 Leo Liu <sdl.web@gmail.com>
* cal-xtra.texi (Non-Gregorian Diary): Document new features for
Chinese calendar and diary.
2014-04-30 Eli Zaretskii <eliz@gnu.org>
* trouble.texi (Quitting, DEL Does Not Delete, Emergency Escape)
(Bug Criteria): Fix usage of @kbd and @key. (Bug#17362)
* text.texi (Words, Pages, Foldout, HTML Mode): Fix usage of @kbd
and @key.
* search.texi (Special Isearch, Regexp Search): Fix usage of @kbd
and @key.
* screen.texi (Echo Area, Menu Bar): Fix usage of @kbd and @key.
* rmail.texi (Rmail Scrolling): Fix usage of @kbd and @key.
* programs.texi (Hungry Delete, Other C Commands): Fix usage of
@kbd and @key.
* picture-xtra.texi (Insert in Picture): Fix usage of @kbd and
@key.
* mule.texi (Unibyte Mode, Bidirectional Editing): Fix usage of
@kbd and @key.
* msdog.texi (Windows Keyboard, Windows Processes): Fix usage of
@kbd and @key.
* msdog-xtra.texi (MS-DOS Keyboard, MS-DOS Printing)
(MS-DOS Processes): Fix usage of @kbd and @key.
* misc.texi (Shell Ring, Printing Package): Fix usage of @kbd and
@key.
* mini.texi (Completion Commands, Minibuffer History): Fix usage
of @kbd and @key.
* kmacro.texi (Keyboard Macro Step-Edit): Fix usage of @kbd and
@key.
* killing.texi (Deletion, Rectangles, CUA Bindings): Fix usage of
@kbd and @key.
* indent.texi (Indentation Commands): Fix usage of @kbd and @key.
* help.texi (Help Mode, Misc Help): Fix usage of @kbd and @key.
* glossary.texi (Glossary): Fix usage of @kbd and @key.
* frames.texi (Speedbar): Fix usage of @kbd and @key.
* files.texi (Misc File Ops, File Name Cache, File Conveniences)
(Filesets): Fix usage of @kbd and @key.
* display.texi (View Mode): Fix usage of @kbd and @key.
* dired.texi (Image-Dired): Fix usage of @kbd and @key.
* custom.texi (Modifier Keys, Function Keys, Named ASCII Chars)
(Init Syntax): Fix usage of @kbd and @key.
* commands.texi (User Input): Fix usage of @kbd and @key.
* calendar.texi (Counting Days, General Calendar): Fix usage of
@kbd and @key.
* building.texi (Threads Buffer): Fix usage of @kbd and @key.
* buffers.texi (Select Buffer, Icomplete): Fix usage of @kbd and
@key.
* basic.texi (Inserting Text, Erasing, Arguments): Fix usage of
@kbd and @key.
* anti.texi (Antinews): Fix usage of @kbd and @key.
* sending.texi (Mail Signature): Document signature variables used
by Message mode. (Bug#17308)
2014-04-22 Eli Zaretskii <eliz@gnu.org>
* buffers.texi (Uniquify): Clarify the default uniquification.
* indent.texi (Tab Stops): Improve wording.
* cmdargs.texi (General Variables): Improve docs of
EMACSLOADPATH. Index all the environment variables.
(Misc Variables): Index all the environment variables.
2014-04-17 Paul Eggert <eggert@cs.ucla.edu>
* Makefile.in (infoclean): Be consistent about reporting failures.
Do not fail merely because the info directory does not exist,
but do fail if it exists and can't be cleaned.
2014-04-16 Eli Zaretskii <eliz@gnu.org>
* display.texi (Cursor Display): Explain better how to customize
'blink-cursor-blinks'.
2014-04-07 Glenn Morris <rgm@gnu.org>
* trouble.texi (Checklist): Dribble files may contain passwords.
* files.texi (Backup Names):
* arevert-xtra.texi (Supporting additional buffers):
Update for default values of some -function vars no longer being nil.
(Supporting additional buffers):
Update for buffer-stale-function also applying to file-buffers.
2014-03-28 Glenn Morris <rgm@gnu.org>
* custom.texi (Terminal Init): Mention term-file-aliases.
2014-03-26 Glenn Morris <rgm@gnu.org>
* ack.texi (Acknowledgments): Remove reference to obsolete file.
2014-03-22 Glenn Morris <rgm@gnu.org>
* help.texi (Help Files): Update C-h g description.
2014-03-16 Dmitry Gutov <dgutov@yandex.ru>
* programs.texi (Matching): Update the missed spot. (Bug#17008)
2014-03-15 Dmitry Gutov <dgutov@yandex.ru>
* programs.texi (Matching): Update WRT to the new
`blink-matching-paren' behavior.
2014-03-13 Paul Eggert <eggert@cs.ucla.edu>
* mule.texi (International, Language Environments): Update
the list of language environments to what Emacs currently
supports. Add the full list to the index. Suggest C-h L for
details rather than trying to give very brief details here.
2014-03-12 Glenn Morris <rgm@gnu.org>
* cmdargs.texi (General Variables): Don't mention INCPATH,
from the obsolete complete.el.
2014-03-12 Paul Eggert <eggert@cs.ucla.edu>
* mule.texi (International Chars): Adjust C-u C-x = description.
Change it to match Emacs's current behavior. Also, change the
example to use ê instead of À, as the isolated grave accent in the
latter's decomposition listing was confusingly transliterated to
left single quote in the PDF version of the manual.
2014-03-12 Glenn Morris <rgm@gnu.org>
* misc.texi (Saving Emacs Sessions): Be briefer about desktop's
handling of frames.
* indent.texi (Indent Convenience): Mention electric-indent-local-mode.
2014-03-02 Xue Fuqiao <xfq@gnu.org>
* mark.texi (Mark):
* killing.texi (Rectangles): Document `rectangle-mark-mode'.
2014-03-01 Glenn Morris <rgm@gnu.org>
* search.texi (Query Replace): Mention search-invisible.
* text.texi (Outline Visibility): Mention search-invisible
also affects query-replace.
2014-02-28 Xue Fuqiao <xfq@gnu.org>
* emacs.texi (Top):
* programs.texi (Programs, Prettifying Symbols):
Document `prettify-symbols-mode' and `global-prettify-symbols-mode'.
* misc.texi (Saving Emacs Sessions):
Document some new desktop user options.
2014-02-27 Xue Fuqiao <xfq@gnu.org>
* programs.texi (Basic Indent, Other C Commands):
Fix the description of RET and `C-j'.
* indent.texi (Indentation Commands): Move the description of
`C-j' from here...
* basic.texi (Inserting Text): ... to here.
2014-02-25 Glenn Morris <rgm@gnu.org>
* custom.texi (Terminal Init):
Replace term-setup-hook with tty-setup-hook.
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 "screenshot" 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.
@ -42,8 +633,8 @@
(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,
(.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)
@ -543,6 +1134,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).
@ -1030,7 +1626,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.
@ -2228,7 +2824,7 @@
2011-05-22 Chong Yidong <cyd@stupidchicken.com>
* mule.texi (Specify Coding, Text Coding, Communication Coding):
* mule.texi (Specify Coding, Text Coding, Communication Coding)
(File Name Coding, Terminal Coding): Add command names (Bug#8312).
2011-05-18 Glenn Morris <rgm@gnu.org>
@ -2900,9 +3496,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>
@ -4719,7 +5315,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>
@ -4866,10 +5462,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.
@ -4912,8 +5504,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.
@ -5465,6 +6055,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
@ -5792,6 +6387,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".
@ -6553,8 +7153,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.
@ -9428,13 +10026,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>
@ -9968,7 +10566,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)
@ -9988,7 +10586,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 @@
### @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.
@ -143,8 +143,7 @@ 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
@ -196,10 +195,14 @@ clean: mostlyclean
rm -f emacs-manual-${version}.tar*
distclean: clean
rm -f Makefile
## In the standalone tarfile, the clean rule runs this.
infoclean:
-cd $(buildinfodir) && rm -f emacs$(INFO_EXT) emacs$(INFO_EXT)-[1-9] emacs$(INFO_EXT)-[1-9][0-9]
rm -f \
$(buildinfodir)/emacs$(INFO_EXT) \
$(buildinfodir)/emacs$(INFO_EXT)-[1-9] \
$(buildinfodir)/emacs$(INFO_EXT)-[1-9][0-9]
maintainer-clean: distclean infoclean
@ -229,21 +232,21 @@ dist:
.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)
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)
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)
umask 022;$(MKDIR_P) "$(DESTDIR)$(pdfdir)"
$(INSTALL_DATA) $(PDF_TARGETS) "$(DESTDIR)$(pdfdir)"
install-ps: ps
umask 022; $(MKDIR_P) $(DESTDIR)$(psdir)
umask 022; $(MKDIR_P) "$(DESTDIR)$(psdir)"
for file in $(PS_TARGETS); do \
$(INSTALL_DATA) $${file} $(DESTDIR)$(psdir); \
$(INSTALL_DATA) $${file} "$(DESTDIR)$(psdir)"; \
[ -n "${GZIP_PROG}" ] || continue; \
rm -f $(DESTDIR)$(psdir)/$${file}.gz; \
${GZIP_PROG} -9n $(DESTDIR)$(psdir)/$${file}; \
rm -f "$(DESTDIR)$(psdir)/$${file}.gz"; \
${GZIP_PROG} -9n "$(DESTDIR)$(psdir)/$${file}"; \
done
## Top-level Makefile installs the info pages.
@ -254,20 +257,20 @@ install-doc: install-dvi install-html install-pdf install-ps
uninstall-dvi:
for file in $(DVI_TARGETS); do \
rm -f $(DESTDIR)$(dvidir)/$${file}; \
rm -f "$(DESTDIR)$(dvidir)/$${file}"; \
done
uninstall-html:
for file in $(HTML_TARGETS); do \
rm -f $(DESTDIR)$(htmldir)/$${file}; \
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}; \
rm -f "$(DESTDIR)$(psdir)/$${file}$${ext}"; \
done
uninstall-pdf:
for file in $(PDF_TARGETS); do \
rm -f $(DESTDIR)$(pdfdir)/$${file}; \
rm -f "$(DESTDIR)$(pdfdir)/$${file}"; \
done
uninstall-doc: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps

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: 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,8 +51,8 @@ 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
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
@ -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).
@ -122,8 +122,8 @@ by Oliver Seidel), a package for maintaining @file{TODO} list files.
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
@ -276,7 +276,7 @@ over maintainership. Benjamin Andresen, Thomas Baumann, Joel Boehland, Jan Böc
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
@ -303,8 +303,7 @@ 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.
@ -814,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;
@ -884,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
@ -979,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.
@ -1099,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.
@ -1186,9 +1181,8 @@ written @file{easymenu.el}, a facility for defining Emacs menus;
color; and also co-authored portions of CC mode.
@item
Sam Steingold wrote @file{gulp.el}, a facility for asking package
maintainers for updated versions of their packages via e-mail, and
@file{midnight.el}, a package for running a command every midnight.
Sam Steingold wrote @file{midnight.el}, a package for running a
command every midnight.
@item
Ake Stenhoff and Lars Lindberg wrote @file{imenu.el}, a framework for

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
@ -17,8 +17,8 @@ Support for displaying and editing ``bidirectional'' text has been
removed. Text is now always displayed on the screen in a single
consistent direction---left to right---regardless of the underlying
script. Similarly, @kbd{C-f} and @kbd{C-b} always move the text
cursor to the right and left respectively. Also, @key{right} and
@key{left} are now equivalent to @kbd{C-f} and @kbd{C-b}, as you might
cursor to the right and left respectively. Also, @key{RIGHT} and
@key{LEFT} are now equivalent to @kbd{C-f} and @kbd{C-b}, as you might
expect, rather than moving forward or backward based on the underlying
``paragraph direction''.
@ -36,7 +36,7 @@ and/or README file for details.
@item
The option @code{delete-active-region} has been deleted. When the
region is active, typing @key{DEL} or @key{delete} no longer deletes
region is active, typing @key{DEL} or @key{Delete} no longer deletes
the text in the region; it deletes a single character instead.
@item
@ -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
@ -103,15 +103,15 @@ arguments to list only some of the files. @file{*Find*} and
This section is intended for Elisp programmers who would like to add
support for auto-reverting new types of buffers.
To support auto-reverting the buffer must first of all have a
To support auto-reverting the buffer must first of all have a suitable
@code{revert-buffer-function}. @xref{Definition of
revert-buffer-function,, Reverting, elisp, the Emacs Lisp Reference Manual}.
In addition, it @emph{must} have a @code{buffer-stale-function}.
In addition, it must have a suitable @code{buffer-stale-function}.
@c FIXME only defvar in all of doc/emacs!
@defvar buffer-stale-function
The value of this variable is a function to check whether a non-file
The value of this variable is a function to check whether a
buffer needs reverting. This should be a function with one optional
argument @var{noconfirm}. The function should return non-@code{nil}
if the buffer should be reverted. The buffer is current when this
@ -132,7 +132,7 @@ If you just want to automatically auto-revert every
@code{auto-revert-interval} seconds (like the Buffer Menu), use:
@example
(set (make-local-variable 'buffer-stale-function)
(setq-local buffer-stale-function
#'(lambda (&optional noconfirm) 'fast))
@end example
@ -149,7 +149,7 @@ also be useful if the function is consulted for purposes other than
auto-reverting.
@end defvar
Once the buffer has a @code{revert-buffer-function} and a
Once the buffer has a suitable @code{revert-buffer-function} and
@code{buffer-stale-function}, several problems usually remain.
The buffer will only auto-revert if it is marked unmodified. Hence,

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
@ -40,14 +40,20 @@ forward, so that point remains just after the inserted text.
@xref{Point}.
@kindex RET
@kindex C-j
@cindex newline
@c @findex electric-indent-just-newline
To end a line and start a new one, type @key{RET} (@code{newline}).
(The @key{RET} key may be labeled @key{Return} or @key{Enter} on your
keyboard, but we refer to it as @key{RET} in this manual.) This
command inserts a newline character into the buffer. If point is at
the end of the line, the effect is to create a new blank line after
it; if point is in the middle of a line, the line is split at that
position.
command inserts a newline character into the buffer, then indents
(@pxref{Indentation}) according to the major mode. If point is at the end
of the line, the effect is to create a new blank line after it and
indent the new line; if point is in the middle of a line, the line is
split at that position. To turn off the auto-indentation, you can
either disable Electric Indent mode (@pxref{Indent Convenience}) or
type @kbd{C-j}, which inserts just a newline, without any
auto-indentation.
As we explain later in this manual, you can change the way Emacs
handles text insertion by turning on @dfn{minor modes}. For instance,
@ -61,7 +67,7 @@ instead of shoving it to the right. @xref{Minor Modes}.
@findex quoted-insert
Only graphic characters can be inserted by typing the associated
key; other keys act as editing commands and do not insert themselves.
For instance, @kbd{DEL} runs the command @code{delete-backward-char}
For instance, @key{DEL} runs the command @code{delete-backward-char}
by default (some modes bind it to a different command); it does not
insert a literal @samp{DEL} character (@acronym{ASCII} character code
127).
@ -133,8 +139,8 @@ how many copies of the character to insert (@pxref{Arguments}).
point (@pxref{Point}). The keyboard commands @kbd{C-f}, @kbd{C-b},
@kbd{C-n}, and @kbd{C-p} move point to the right, left, down, and up,
respectively. You can also move point using the @dfn{arrow keys}
present on most keyboards: @kbd{@key{right}}, @kbd{@key{left}},
@kbd{@key{down}}, and @kbd{@key{up}}; however, many Emacs users find
present on most keyboards: @key{RIGHT}, @key{LEFT},
@key{DOWN}, and @key{UP}; however, many Emacs users find
that it is slower to use the arrow keys than the control keys, because
you need to move your hand to the area of the keyboard where those
keys are located.
@ -150,7 +156,7 @@ keyboard commands that move point in more sophisticated ways.
@findex forward-char
Move forward one character (@code{forward-char}).
@item @key{right}
@item @key{RIGHT}
@kindex RIGHT
@findex right-char
@vindex visual-order-cursor-movement
@ -170,7 +176,7 @@ away, depending on the surrounding bidirectional context.
@findex backward-char
Move backward one character (@code{backward-char}).
@item @key{left}
@item @key{LEFT}
@kindex LEFT
@findex left-char
This command (@code{left-char}) behaves like @kbd{C-b}, except it
@ -181,7 +187,7 @@ left of the current screen position, moving to the previous or next
screen line as appropriate.
@item C-n
@itemx @key{down}
@itemx @key{DOWN}
@kindex C-n
@kindex DOWN
@findex next-line
@ -190,7 +196,7 @@ to keep the horizontal position unchanged, so if you start in the
middle of one line, you move to the middle of the next.
@item C-p
@itemx @key{up}
@itemx @key{UP}
@kindex C-p
@kindex UP
@findex previous-line
@ -216,8 +222,8 @@ Move to the end of the line (@code{move-end-of-line}).
@findex forward-word
Move forward one word (@code{forward-word}).
@item C-@key{right}
@itemx M-@key{right}
@item C-@key{RIGHT}
@itemx M-@key{RIGHT}
@kindex C-RIGHT
@kindex M-RIGHT
@findex right-word
@ -230,12 +236,12 @@ right-to-left. @xref{Bidirectional Editing}.
@findex backward-word
Move backward one word (@code{backward-word}).
@item C-@key{left}
@itemx M-@key{left}
@item C-@key{LEFT}
@itemx M-@key{LEFT}
@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}.
@ -360,7 +366,7 @@ moves down into it.
@table @kbd
@item @key{DEL}
@itemx @key{Backspace}
@itemx @key{BACKSPACE}
Delete the character before point, or the region if it is active
(@code{delete-backward-char}).
@ -388,20 +394,20 @@ the preceding newline, joining this line to the previous one.
If, however, the region is active, @kbd{@key{DEL}} instead deletes
the text in the region. @xref{Mark}, for a description of the region.
On most keyboards, @key{DEL} is labeled @key{Backspace}, but we
On most keyboards, @key{DEL} is labeled @key{BACKSPACE}, but we
refer to it as @key{DEL} in this manual. (Do not confuse @key{DEL}
with the @key{Delete} key; we will discuss @key{Delete} momentarily.)
On some text terminals, Emacs may not recognize the @key{DEL} key
properly. @xref{DEL Does Not Delete}, if you encounter this problem.
The @key{delete} (@code{delete-forward-char}) command deletes in the
The @key{Delete} (@code{delete-forward-char}) command deletes in the
``opposite direction'': it deletes the character after point, i.e., the
character under the cursor. If point was at the end of a line, this
joins the following line onto this one. Like @kbd{@key{DEL}}, it
deletes the text in the region if the region is active (@pxref{Mark}).
@kbd{C-d} (@code{delete-char}) deletes the character after point,
similar to @key{delete}, but regardless of whether the region is
similar to @key{Delete}, but regardless of whether the region is
active.
@xref{Deletion}, for more detailed information about the above
@ -717,7 +723,7 @@ M-5 C-n
moves down five lines. The keys @kbd{M-1}, @kbd{M-2}, and so on, as
well as @kbd{M--}, are bound to commands (@code{digit-argument} and
@code{negative-argument}) that set up an argument for the next
command. @kbd{Meta--} without digits normally means @minus{}1.
command. @kbd{M--} without digits normally means @minus{}1.
If you enter more than one digit, you need not hold down the
@key{META} key for the second and subsequent digits. Thus, to move

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,41 @@ 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, where @file{dir1} and @file{dir2} are the minimal parts of the
leading directories needed to make the buffer name unique. For
example, if you have files @file{/foo/bar/mumble/name} and
@file{/baz/quux/mumble/name} visited, their buffers will be named
@samp{name<bar/mumble>} and @samp{name<quux/mumble>} correspondingly.
@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 +650,32 @@ 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 @kbd{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.
@kbd{M-@key{TAB}} will select the first completion in the list, like
@kbd{C-j} but without exiting the minibuffer, so you can edit it
further. This is typically used when entering a file name, where
@kbd{M-@key{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
@ -1005,7 +1005,7 @@ non-@code{nil}, the GDB Threads buffer is the one shown by default.
The GDB Threads buffer displays a summary of the threads in the
debugged program. @xref{Threads, Threads, Debugging programs with
multiple threads, gdb, The GNU debugger}. To select a thread, move
point there and type @key{RET} (@code{gdb-select-thread}), or click on
point there and press @key{RET} (@code{gdb-select-thread}), or click on
it with @kbd{Mouse-2}. This also displays the associated source
buffer, and updates the contents of the other GDB buffers.
@ -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: utf-8 -*-
@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
@ -43,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
@ -68,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
@ -514,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á'í, Chinese, 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,
@ -528,22 +531,27 @@ you must do this:
@findex diary-islamic-mark-entries
@findex diary-bahai-list-entries
@findex diary-bahai-mark-entries
@findex diary-chinese-list-entries
@findex diary-chinese-mark-entries
@smallexample
(add-hook 'diary-nongregorian-listing-hook 'diary-hebrew-list-entries)
(add-hook 'diary-nongregorian-marking-hook 'diary-hebrew-mark-entries)
@end smallexample
@noindent
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}.
Similarly, for Islamic, Bahá'í and Chinese entries, add
@code{diary-islamic-list-entries} and @code{diary-islamic-mark-entries},
@code{diary-bahai-list-entries} and @code{diary-bahai-mark-entries},
or @code{diary-chinese-list-entries} and @code{diary-chinese-mark-entries}.
@vindex diary-bahai-entry-symbol
@vindex diary-chinese-entry-symbol
@vindex diary-hebrew-entry-symbol
@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-chinese-entry-symbol} (default
@samp{C}) a Chinese 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).
@ -570,7 +578,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á'í, Chinese, Hebrew, or Islamic calendars:
@table @kbd
@item i h d
@ -591,6 +599,14 @@ the Bahá'í, Hebrew, or Islamic calendars:
@code{diary-bahai-insert-monthly-entry}
@item i B y
@code{diary-bahai-insert-yearly-entry}
@item i C d
@code{diary-chinese-insert-entry}
@item i C m
@code{diary-chinese-insert-monthly-entry}
@item i C y
@code{diary-chinese-insert-yearly-entry}
@item i C a
@code{diary-chinese-insert-anniversary-entry}
@end table
@findex diary-hebrew-insert-entry
@ -602,6 +618,11 @@ the Bahá'í, Hebrew, or Islamic calendars:
@findex diary-bahai-insert-entry
@findex diary-bahai-insert-monthly-entry
@findex diary-bahai-insert-yearly-entry
@findex diary-chinese-insert-entry
@findex diary-chinese-insert-monthly-entry
@findex diary-chinese-insert-yearly-entry
@findex diary-chinese-insert-anniversary-entry
These commands work much like the corresponding commands for ordinary
diary entries: they apply to the date that point is on in the calendar
window, and what they do is insert just the date portion of a diary
@ -631,7 +652,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

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual. -*- coding: utf-8 -*-
@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 Calendar/Diary
@ -288,7 +288,7 @@ Display the number of days in the current region
@kindex M-= @r{(Calendar mode)}
@findex calendar-count-days-region
To determine the number of days in a range, set the mark on one
date using @kbd{C-SPC}, move point to another date, and type @kbd{M-=}
date using @kbd{C-@key{SPC}}, move point to another date, and type @kbd{M-=}
(@code{calendar-count-days-region}). The numbers of days shown is
@emph{inclusive}; that is, it includes the days specified by mark and
point.
@ -301,9 +301,10 @@ point.
Display day-in-year (@code{calendar-print-day-of-year}).
@item C-c C-l
Regenerate the calendar window (@code{calendar-redraw}).
@item SPC
@item @key{SPC}
Scroll the next window up (@code{scroll-other-window}).
@item DEL
@item @key{DEL}
@itemx S-@key{SPC}
Scroll the next window down (@code{scroll-other-window-down}).
@item q
Exit from calendar (@code{calendar-exit}).
@ -326,8 +327,8 @@ date.
non-Calendar-mode editing commands.)
@kindex SPC @r{(Calendar mode)}
In Calendar mode, you can use @kbd{SPC} (@code{scroll-other-window})
and @kbd{DEL} (@code{scroll-other-window-down}) to scroll the other
In Calendar mode, you can use @key{SPC} (@code{scroll-other-window})
and @key{DEL} (@code{scroll-other-window-down}) to scroll the other
window (if there is one) up or down, respectively. This is handy when
you display a list of holidays or diary entries in another window.
@ -1347,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
@ -1615,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
@ -431,7 +439,7 @@ special meanings in Emacs. Most of these variables are also used by
some other programs. Emacs does not require any of these environment
variables to be set, but it uses their values if they are set.
@table @env
@vtable @env
@item CDPATH
Used by the @code{cd} command to search for the directory you specify,
when you specify a relative directory name.
@ -447,13 +455,18 @@ 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}. To specify an empty element in the
middle of the list, use 2 colons in a row, as in
@samp{EMACSLOADPATH="/tmp::/foo"}.
@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
@ -484,9 +497,12 @@ compatibility @file{C:/} will be used instead if a @file{.emacs} file
is found there.
@item HOSTNAME
The name of the machine that Emacs is running on.
@c complete.el is obsolete since 24.1.
@ignore
@item INCPATH
A colon-separated list of directories. Used by the @code{complete} package
to search for files.
@end ignore
@item INFOPATH
A colon-separated list of directories in which to search for Info files.
@item LC_ALL
@ -584,14 +600,14 @@ defaults to @samp{root}.
@item VERSION_CONTROL
Used to initialize the @code{version-control} variable (@pxref{Backup
Names}).
@end table
@end vtable
@node Misc Variables
@appendixsubsec Miscellaneous Variables
These variables are used only on particular configurations:
@table @env
@vtable @env
@item COMSPEC
On MS-DOS and MS-Windows, the name of the command interpreter to use
when invoking batch files and commands internal to the shell. On MS-DOS
@ -643,7 +659,7 @@ rather than hard-coding an absolute path. This allows multiple
versions of Emacs to share the same environment variable settings, and
it allows you to move the Emacs installation directory, without
changing any environment or registry settings.
@end table
@end vtable
@node MS-Windows Registry
@appendixsubsec The MS-Windows System Registry

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
@ -35,35 +35,35 @@ Therefore, this manual mainly documents how to edit with the keyboard.
@samp{3}, @samp{=}, and the space character (denoted as @key{SPC}),
are entered by typing the corresponding key. @dfn{Control
characters}, such as @key{RET}, @key{TAB}, @key{DEL}, @key{ESC},
@key{F1}, @key{Home}, and @key{left}, are also entered this way, as
@key{F1}, @key{Home}, and @key{LEFT}, are also entered this way, as
are certain characters found on non-English keyboards
(@pxref{International}).
@cindex modifier keys
@cindex Control
@cindex C-
@cindex Meta
@cindex META
@cindex M-
Emacs also recognizes control characters that are entered using
@dfn{modifier keys}. Two commonly-used modifier keys are
@key{Control} (usually labeled @key{Ctrl}), and @key{Meta} (usually
labeled @key{Alt})@footnote{We refer to @key{Alt} as @key{Meta} for
@key{Control} (usually labeled @key{Ctrl}), and @key{META} (usually
labeled @key{Alt})@footnote{We refer to @key{Alt} as @key{META} for
historical reasons.}. For example, @kbd{Control-a} is entered by
holding down the @key{Ctrl} key while pressing @kbd{a}; we will refer
to this as @kbd{C-a} for short. Similarly @kbd{Meta-a}, or @kbd{M-a}
to this as @kbd{C-a} for short. Similarly @kbd{@key{META}-a}, or @kbd{M-a}
for short, is entered by holding down the @key{Alt} key and pressing
@kbd{a}. Modifier keys can also be applied to non-alphanumerical
characters, e.g., @kbd{C-@key{F1}} or @kbd{M-@key{left}}.
characters, e.g., @kbd{C-@key{F1}} or @kbd{M-@key{LEFT}}.
@cindex @key{ESC} replacing @key{Meta} key
@cindex @key{ESC} replacing @key{META} key
You can also type Meta characters using two-character sequences
starting with @key{ESC}. Thus, you can enter @kbd{M-a} by typing
@kbd{@key{ESC} a}. You can enter @kbd{C-M-a} by typing @kbd{@key{ESC}
C-a}. Unlike @key{Meta}, @key{ESC} is entered as a separate
C-a}. Unlike @key{META}, @key{ESC} is entered as a separate
character. You don't hold down @key{ESC} while typing the next
character; instead, press @key{ESC} and release it, then enter the
next character. This feature is useful on certain text terminals
where the @key{Meta} key does not function reliably.
where the @key{META} key does not function reliably.
@cindex keys stolen by window manager
@cindex window manager, keys stolen by

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
@ -573,7 +573,7 @@ directory specified by the variable @code{custom-theme-directory}
which are distributed with Emacs, which customize Emacs's faces to fit
various color schemes. (Note, however, that Custom themes need not be
restricted to this purpose; they can be used to customize variables
too).
too.)
@vindex custom-theme-load-path
If you want Emacs to look for Custom themes in some other directory,
@ -1766,11 +1766,11 @@ historical.
characters case-sensitive when you customize Emacs. For instance, you
could make @kbd{M-a} and @kbd{M-A} run different commands.
Although only the @key{Control} and @key{Meta} modifier keys are
Although only the @key{Control} and @key{META} modifier keys are
commonly used, Emacs supports three other modifier keys. These are
called @key{Super}, @key{Hyper} and @key{Alt}. Few terminals provide
ways to use these modifiers; the key labeled @key{Alt} on most
keyboards usually issues the @key{Meta} modifier, not @key{Alt}. The
keyboards usually issues the @key{META} modifier, not @key{Alt}. The
standard key bindings in Emacs do not include any characters with
these modifiers. However, you can customize Emacs to assign meanings
to them. The modifier bits are labeled as @samp{s-}, @samp{H-} and
@ -1795,10 +1795,10 @@ the corresponding Lisp symbol. Here are the conventional Lisp names for
common function keys:
@table @asis
@item @code{left}, @code{up}, @code{right}, @code{down}
@item @code{LEFT}, @code{UP}, @code{RIGHT}, @code{DOWN}
Cursor arrow keys.
@item @code{begin}, @code{end}, @code{home}, @code{next}, @code{prior}
@item @code{Begin}, @code{End}, @code{Home}, @code{next}, @code{prior}
Other cursor repositioning keys.
@item @code{select}, @code{print}, @code{execute}, @code{backtab}
@ -1860,7 +1860,7 @@ started out as names for certain @acronym{ASCII} control characters,
used so often that they have special keys of their own. For instance,
@key{TAB} was another name for @kbd{C-i}. Later, users found it
convenient to distinguish in Emacs between these keys and the ``same''
control characters typed with the @key{CTRL} key. Therefore, on most
control characters typed with the @key{Ctrl} key. Therefore, on most
modern terminals, they are no longer the same: @key{TAB} is different
from @kbd{C-i}.
@ -2187,8 +2187,8 @@ 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
a Meta character, as in @samp{\M-a} for @kbd{@key{META}-A} or
@samp{\M-\C-a} for @kbd{@key{Ctrl}-@key{META}-A}.
@xref{Init Non-ASCII}, for information about including
non-@acronym{ASCII} in your init file.
@ -2445,13 +2445,17 @@ harmless, so those do not need a conditional.
@node Terminal Init
@subsection Terminal-specific Initialization
@vindex term-file-aliases
Each terminal type can have a Lisp library to be loaded into Emacs when
it is run on that type of terminal. For a terminal type named
@var{termtype}, the library is called @file{term/@var{termtype}} and it is
@var{termtype}, the library is called @file{term/@var{termtype}}.
(If there is an entry of the form @code{(@var{termtype} . @var{alias})}
in the @code{term-file-aliases} association list, Emacs uses
@var{alias} in place of @var{termtype}.) The library is
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
@ -2466,7 +2470,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
@ -2474,8 +2478,8 @@ variable @code{term-file-prefix} and the terminal type. Your @file{.emacs}
file can prevent the loading of the terminal-specific library by setting
@code{term-file-prefix} to @code{nil}.
@vindex term-setup-hook
Emacs runs the hook @code{term-setup-hook} at the end of
@vindex tty-setup-hook
Emacs runs the hook @code{tty-setup-hook} at the end of
initialization, after both your @file{.emacs} file and any
terminal-specific library have been read in. Add hook functions to this
hook if you wish to override part of any of the terminal-specific

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
@ -1311,19 +1312,19 @@ takes a long time if the directory contains many image files, and it
asks for confirmation if the number of image files exceeds
@code{image-dired-show-all-from-dir-max-files}.
With point in the thumbnail buffer, you can type @kbd{RET}
With point in the thumbnail buffer, you can type @key{RET}
(@code{image-dired-display-thumbnail-original-image}) to display a
sized version of it in another window. This sizes the image to fit
the window. Use the arrow keys to move around in the buffer. For
easy browsing, use @kbd{SPC}
easy browsing, use @key{SPC}
(@code{image-dired-display-next-thumbnail-original}) to advance and
display the next image. Typing @kbd{DEL}
display the next image. Typing @key{DEL}
(@code{image-dired-display-previous-thumbnail-original}) backs up to
the previous thumbnail and displays that instead.
@vindex image-dired-external-viewer
To view and the image in its original size, either provide a prefix
argument (@kbd{C-u}) before pressing @kbd{RET}, or type
argument (@kbd{C-u}) before pressing @key{RET}, or type
@kbd{C-@key{RET}} (@code{image-dired-thumbnail-display-external}) to
display the image in an external viewer. You must first configure
@code{image-dired-external-viewer}.
@ -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-@key{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
@ -917,6 +928,12 @@ 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.
@ -965,8 +982,8 @@ initial lower-case letters will become case insensitive.
@findex highlight-symbol-at-point
@cindex symbol, highlighting
@cindex highlighting symbol at point
Highlight the symbol found near point without prompting, using the next
available face automatically (@code{highlight-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
@ -1314,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
@ -1462,17 +1479,30 @@ 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
@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
off'' by customizing the list variable @code{blink-cursor-alist}.
Each element in the list should have the form @code{(@var{on-type}
. @var{off-type})}; this means that if the cursor is displayed as
@var{on-type} when it blinks on (where @var{on-type} is one of the
cursor types described above), then it is displayed as @var{off-type}
when it blinks off.
By default, the cursor stops blinking after 10 blinks, if Emacs does
not get any input during that time; any input event restarts the
count. You can customize the variable @code{blink-cursor-blinks} to
control that: its value says how many times to blink without input
before stopping. Setting that variable to a zero or negative value
will make the cursor blink forever. To disable cursor blinking
altogether, change the variable @code{blink-cursor-mode} to @code{nil}
(@pxref{Easy Customization}), or add the line
@lisp
(blink-cursor-mode 0)
@end lisp
@noindent
to your init file. Alternatively, you can change how the cursor
looks when it ``blinks off'' by customizing the list variable
@code{blink-cursor-alist}. Each element in the list should have the
form @code{(@var{on-type} . @var{off-type})}; this means that if the
cursor is displayed as @var{on-type} when it blinks on (where
@var{on-type} is one of the cursor types described above), then it is
displayed as @var{off-type} when it blinks off.
@vindex x-stretch-cursor
@cindex wide block cursor

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