merge from trunk

This commit is contained in:
Ken Raeburn 2015-11-01 01:42:21 -04:00
commit 39372e1a10
3218 changed files with 615080 additions and 454274 deletions

View file

@ -3,13 +3,11 @@
(fill-column . 70)))
(c-mode . ((c-file-style . "GNU")))
(objc-mode . ((c-file-style . "GNU")))
;; You must set bugtracker_debbugs_url in your bazaar.conf for this to work.
;; 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-mode . ((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")
(mode . bug-reference)))
(diff-mode . ((mode . whitespace))))
(diff-mode . ((mode . whitespace)))
(emacs-lisp-mode . ((indent-tabs-mode . nil))))

50
.gitattributes vendored Normal file
View file

@ -0,0 +1,50 @@
# Attributes of Emacs files in the Git repository.
# Copyright 2015 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/>.
# A few files use CRLF endings, even on non-Microsoft platforms.
# Do not warn about trailing whitespace with these files.
*.bat whitespace=cr-at-eol
admin/charsets/mapfiles/PTCP154 whitespace=cr-at-eol
leim/MISC-DIC/cangjie-table.b5 whitespace=cr-at-eol
leim/MISC-DIC/cangjie-table.cns whitespace=cr-at-eol
leim/MISC-DIC/pinyin.map whitespace=cr-at-eol
lib-src/update-game-score.exe.manifest whitespace=cr-at-eol
nt/nmake.defs whitespace=cr-at-eol
test/etags/c-src/dostorture.c whitespace=cr-at-eol
test/etags/cp-src/c.C whitespace=cr-at-eol
test/etags/html-src/algrthms.html whitespace=cr-at-eol
# The upstream maintainer does not want to remove trailing whitespace.
doc/misc/texinfo.tex -whitespace=blank-at-eol
# Some files should not be treated as text when diffing or merging.
*.gpg binary
*.gz binary
*.icns binary
*.ico binary
*.pbm binary
*.pdf binary
*.png binary
*.sig binary
*.tiff binary
etc/e/eterm-color binary
# Hooks for non-default diff hunk headers; see autogen.sh.
*.el diff=elisp
*.texi diff=texinfo

293
.gitignore vendored
View file

@ -1,19 +1,284 @@
configure
aclocal.m4
compile
config.guess
config.sub
depcomp
install-sh
missing
# Files that Git should ignore in the Emacs source directory.
# Copyright 2009-2015 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/>.
# Currently we assume only Git 1.7.1 (April 2010) or later, so this
# file does not rely on "**" in patterns. The "**" feature was added
# in Git 1.8.2 (March 2013).
# Built by 'autogen.sh'.
/aclocal.m4
/configure
build-aux/ar-lib
build-aux/compile
build-aux/config.guess
build-aux/config.sub
build-aux/depcomp
build-aux/install-sh
build-aux/missing
lib/Makefile.in
src/config.in
autom4te.cache
makefile
TAGS
*~
/README.W32
# Built by 'configure'.
Info.plist
InfoPlist.strings
Makefile
makefile
!etc/refcards/Makefile
!test/automated/data/flymake/Makefile
!test/indent/Makefile
!test/etags/Makefile
!test/etags/make-src/Makefile
/*.cache
/confdefs.h
/config.status
/configure.lineno
/conftest*
src/config.h
src/epaths.h
# C-level sources built by 'make'.
lib/alloca.h
lib/arg-nonnull.h
lib/byteswap.h
lib/c++defs.h
lib/dirent.h
lib/errno.h
lib/execinfo.h
lib/fcntl.h
lib/getopt.h
lib/inttypes.h
lib/libgnu.a
lib/signal.h
lib/std*.h
!lib/std*.in.h
lib/string.h
lib/sys/
lib/time.h
lib/unistd.h
lib/warn-on-use.h
src/buildobj.h
src/globals.h
src/lisp.mk
# Lisp-level sources built by 'make'.
*cus-load.el
*loaddefs.el
leim/changed.misc
leim/changed.tit
lisp/cedet/semantic/bovine/c-by.el
lisp/cedet/semantic/bovine/make-by.el
lisp/cedet/semantic/bovine/scm-by.el
lisp/cedet/semantic/wisent/javat-wy.el
lisp/cedet/semantic/wisent/js-wy.el
lisp/cedet/semantic/wisent/python-wy.el
lisp/cedet/srecode/srt-wy.el
lisp/eshell/esh-groups.el
lisp/finder-inf.el
lisp/leim/ja-dic/
lisp/leim/leim-list.el
lisp/leim/quail/4Corner.el
lisp/leim/quail/ARRAY30.el
lisp/leim/quail/CCDOSPY.el
lisp/leim/quail/CTLau.el
lisp/leim/quail/CTLau-b5.el
lisp/leim/quail/ECDICT.el
lisp/leim/quail/ETZY.el
lisp/leim/quail/PY-b5.el
lisp/leim/quail/PY.el
lisp/leim/quail/Punct.el
lisp/leim/quail/Punct-b5.el
lisp/leim/quail/QJ.el
lisp/leim/quail/QJ-b5.el
lisp/leim/quail/SW.el
lisp/leim/quail/TONEPY.el
lisp/leim/quail/ZIRANMA.el
lisp/leim/quail/ZOZY.el
lisp/leim/quail/quick-b5.el
lisp/leim/quail/quick-cns.el
lisp/leim/quail/tsang-b5.el
lisp/leim/quail/tsang-cns.el
lisp/subdirs.el
# Dependencies.
.deps/
deps/
# Logs and temporaries.
*.log
*.tmp
# Time stamps.
*.stamp
stamp_BLD
src/gl-stamp
src/stamp-h.in
src/stamp-h1
# Object files and debugging.
*.a
*.dSYM/
*.core
*.elc
*.o
*.res
[0-9]*.core
core
core.*[0-9]
oo/
oo-spd/
src/*.map
# Tests.
test/indent/*.new
test/biditest.txt
test/etags/srclist
test/etags/regexfile
test/etags/ETAGS
test/etags/CTAGS
# ctags, etags.
TAGS
!admin/notes/tags
# GNU global.
GPATH
GSYMS
GRTAGS
GTAGS
# GNU idutils.
ID
# Executables.
*.exe
a.out
lib-src/blessmail
lib-src/ctags
lib-src/ebrowse
lib-src/emacsclient
lib-src/etags
lib-src/hexl
lib-src/make-docfile
lib-src/movemail
lib-src/profile
lib-src/test-distrib
lib-src/update-game-score
nextstep/Cocoa/Emacs.base/Contents/Info.plist
nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj
nextstep/Emacs.app/
nextstep/GNUstep/Emacs.base/Resources/Emacs.desktop
nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist
src/bootstrap-emacs
src/emacs
src/emacs-[0-9]*
src/temacs
# Character-set info.
admin/charsets/jisx2131-filter
admin/unidata/unidata.txt
etc/charsets/*.map
lisp/international/charprop.el
lisp/international/charscript.el
lisp/international/cp51932.el
lisp/international/eucjp-ms.el
lisp/international/uni-*.el
# Documentation.
*.aux
*.cm
*.cms
*.cp
*.cps
*.dvi
*.fn
*.fns
*.info
*.ky
*.kys
*.op
*.ops
*.pdf
!doc/lispintro/cons-*.pdf
!doc/lispintro/drawers.pdf
!doc/lispintro/lambda-*.pdf
!etc/refcards/gnus-logo.pdf
*.pg
*.pgs
*.pj
*.pjs
*.sc
*.scs
*.t2d/
*.tg
*.tgs
*.toc
*.tp
*.tps
*.vr
*.vrs
doc/*/*.html
doc/*/*/*.html
doc/*/*.ps
doc/*/*/*.ps
doc/emacs/emacsver.texi
doc/man/emacs.1
doc/misc/cc-mode.ss
etc/DOC
etc/refcards/emacsver.tex
gnustmp*
/info/
# Version control and locks.
*.orig
*.rej
*~
.#*
\#*\#
ChangeLog
[0-9]*.patch
[0-9]*.txt
/vc-dwim-log-*
# Built by 'make install'.
etc/emacs.tmpdesktop
# Distribution directories.
/emacs-[1-9]*/
# Microsoft-related builds and installations.
*.in-h
_*
!build-aux/snippet/_Noreturn.h
/bin/
/BIN/
/data/
etc/icons/
lib/cxxdefs.h
lib/SYS/
/libexec/
/lock/
/README.W32
/share/
/site-lisp/
/leim/ja-dic/
nt/emacs.rc
nt/emacsclient.rc
src/gdb.ini
/var/

324
CONTRIBUTE Normal file
View file

@ -0,0 +1,324 @@
This file contains information on Emacs developer processes.
For information on contributing to Emacs as a non-developer, see
(info "(emacs)Contributing") or
http://www.gnu.org/software/emacs/manual/html_node/emacs/Contributing.html
* Information for Emacs Developers.
An "Emacs Developer" is someone who contributes a lot of code or
documentation to the Emacs repository. Generally, they have write
access to the Emacs git repository on Savannah
https://savannah.gnu.org/git/?group=emacs.
** Write access to the Emacs repository.
Once you become a frequent contributor to Emacs, we can consider
giving you write access to the version-control repository. Request
access on the emacs-devel@gnu.org mailing list. Also, be sure to
subscribe to the emacs-devel@gnu.org mailing list and include the
"emacs-announce" topic, so that you get the announcements about
feature freeze and other important events.
** Using the Emacs repository
Emacs uses Git for the source code repository.
See http://www.emacswiki.org/emacs/GitQuickStartForEmacsDevs to get
started, and http://www.emacswiki.org/emacs/GitForEmacsDevs for more
advanced information.
Alternately, see admin/notes/git-workflow.
If committing changes written by someone else, make the commit in
their name, not yours. Git distinguishes between the author
and the committer; use the --author option on the commit command to
specify the actual author; the committer defaults to you.
** Commit messages
Emacs development no longer stores descriptions of new changes in
ChangeLog files. Instead, a single ChangeLog file is generated from
the commit messages when a release is prepared. So changes you commit
should not touch any of the ChangeLog files in the repository, but
instead should contain the log entries in the commit message. Here is
an example of a commit message (indented):
Deactivate shifted region
Do not silently extend a region that is not highlighted;
this can happen after a shift (Bug#19003).
* doc/emacs/mark.texi (Shift Selection): Document the change.
* lisp/window.el (handle-select-window):
* src/frame.c (Fhandle_switch_frame, Fselected_frame):
Deactivate the mark.
Below are some rules and recommendations for formatting commit
messages:
- Start with a single unindented summary line explaining the change;
do not end this line with a period. If that line starts with a
semi-colon and a space "; ", the log message will be ignored when
generating the ChangeLog file. Use this for minor commits that do
not need separate ChangeLog entries, such as changes in etc/NEWS.
- After the summary line, there should be an empty line, then
unindented ChangeLog entries.
- Limit lines in commit messages to 78 characters, unless they consist
of a single word of at most 140 characters; this is enforced by a
commit hook. It's nicer to limit the summary line to 50 characters;
this isn't enforced. If the change can't be summarized so briefly,
add a paragraph after the empty line and before the individual file
descriptions.
- If only a single file is changed, the summary line can be the normal
file first line (starting with the asterisk). Then there is no
individual files section.
- If the commit has more than one author, the commit message should
contain separate lines to mention the other authors, like the
following:
Co-authored-by: Joe Schmoe <j.schmoe@example.org>
- If the commit is a tiny change that is exempt from copyright paperwork,
the commit message should contain a separate line like the following:
Copyright-paperwork-exempt: yes
- The commit message should contain "Bug#NNNNN" if it is related to
bug number NNNNN in the debbugs database. This string is often
parenthesized, as in "(Bug#19003)".
- Commit messages should contain only printable UTF-8 characters.
- Commit messages should not contain the "Signed-off-by:" lines that
are used in some other projects.
- Any lines of the commit message that start with "; " are omitted
from the generated ChangeLog.
- Explaining the rationale for a design choice is best done in comments
in the source code. However, sometimes it is useful to describe just
the rationale for a change; that can be done in the commit message
between the summary line and the file entries.
- Emacs generally follows the GNU coding standards when it comes to
ChangeLogs:
http://www.gnu.org/prep/standards/html_node/Change-Logs.html or
"(info (standards)Change Logs"). 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.
- Some of the rules in the GNU coding standards section 5.2
"Commenting Your Work" also apply to ChangeLog entries: they must be
in English, and be complete sentences starting with a capital and
ending with a period (except the summary line should not end in a
period).
They are preserved indefinitely, and have a reasonable chance of
being read in the future, so it's better that they have good
presentation.
- Use the present tense; describe "what the change does", not "what
the change did".
- Preferred form for several entries with the same content:
* lisp/help.el (view-lossage):
* lisp/kmacro.el (kmacro-edit-lossage):
* lisp/edmacro.el (edit-kbd-macro): Fix docstring, lossage is now 300.
(Rather than anything involving "ditto" and suchlike.)
- There is no standard or recommended way to identify revisions in
ChangeLog entries. Using Git SHA1 values limits the usability of
the references to Git, and will become much less useful if Emacs
switches to a different VCS. So we recommend against that.
One way to identify revisions 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.
- There is no need to mention files such as NEWS, MAINTAINERS, and
FOR-RELEASE, or to indicate regeneration of files such as
'configure', in the ChangeLog entry. "There is no need" means you
don't have to, but you can if you want to.
** Generating ChangeLog entries
- You can use various Emacs functions to ease the process of writing
ChangeLog entries; see (info "(emacs)Change Log Commands") or
http://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html.
- If you use Emacs VC, one way to format ChangeLog entries is to create
a top-level ChangeLog file manually, and update it with 'C-x 4 a' as
usual. Do not register the ChangeLog file under git; instead, use
'C-c C-a' to insert its contents into into your *vc-log* buffer.
Or if 'log-edit-hook' includes 'log-edit-insert-changelog' (which it
does by default), they will be filled in for you automatically.
- Alternatively, you can use the vc-dwim command to maintain commit
messages. When you create a source directory, run the shell command
'git-changelog-symlink-init' to create a symbolic link from
ChangeLog to .git/c/ChangeLog. Edit this ChangeLog via its symlink
with Emacs commands like 'C-x 4 a', and commit the change using the
shell command 'vc-dwim --commit'. Type 'vc-dwim --help' for more.
** Branches
Development normally takes places on the trunk.
Sometimes specialized features are developed on separate branches
before possibly being merged to the trunk.
Development is discussed on the emacs-devel mailing list.
Sometime before the release of a new major version of Emacs a "feature
freeze" is imposed on the trunk, to prepare for creating a release
branch. No new features may be added to the trunk after this point,
until the release branch is created. Announcements about the freeze
(and other important events) are made on the emacs-devel mailing
list under the "emacs-announce" topic, and not anywhere else.
The trunk branch is named "master" in git; release branches are named
"emacs-nn" where "nn" is the major version.
If you are fixing a bug that exists in the current release, be sure to
commit it to the release branch; it will be merged to the master
branch later.
However, if you know that the change will be difficult to merge to the
trunk (eg because the trunk code has changed a lot), you can apply the
change to both trunk and branch yourself. Indicate in the release
branch commit log that there is no need to merge the commit to the
trunk; start the commit message with "Backport:". gitmerge.el will
then exclude that commit from the merge to trunk.
** Other process information
*** Non-ASCII characters in Emacs files
If you introduce non-ASCII characters into Emacs source files, it is a
good idea to add a 'coding' cookie to the file to state its encoding.
Please use the UTF-8 encoding unless it cannot do the job for some
good reason. As of Emacs 24.4, it is no longer necessary to have
explicit 'coding' cookies in *.el files if they are encoded in UTF-8,
but other files need them even if encoded in UTF-8. However, if
an *.el file is intended for use with older Emacs versions (e.g. if
it's also distributed via ELPA), having an explicit encoding
specification is still a good idea.
*** Useful files in the admin/ directory
See all the files in admin/notes/* . In particular, see
admin/notes/newfile, see admin/notes/repo.
The file admin/MAINTAINERS records the areas of interest of frequent
Emacs contributors. If you are making changes in one of the files
mentioned there, it is a good idea to consult the person who expressed
an interest in that file, and/or get his/her feedback for the changes.
If you are a frequent contributor and have interest in maintaining
specific files, please record those interests in that file, so that
others could be aware of that.
*** git vs rename
Git does not explicitly represent a file renaming; it uses a percent
changed heuristic to deduce that a file was renamed. So if you are
planning to make extensive changes to a file after renaming it (or
moving it to another directory), you should:
- create a feature branch
- commit the rename without any changes
- make other changes
- merge the feature branch to trunk, _not_ squashing the commits into
one. The commit message on this merge should summarize the renames
and all the changes.
** Emacs Mailing lists.
Discussion about Emacs development takes place on emacs-devel@gnu.org.
Bug reports and fixes, feature requests and implementations should be
sent to bug-gnu-emacs@gnu.org, the bug/feature list. This is coupled
to the tracker at http://debbugs.gnu.org .
You can subscribe to the mailing lists, or see the list archives,
by following links from http://savannah.gnu.org/mail/?group=emacs .
To email a patch you can use a shell command like 'git format-patch -1'
to create a file, and then attach the file to your email. This nicely
packages the patch's commit message and changes. To send just one
such patch without additional remarks, you can use a command like
'git send-email --to=bug-gnu-emacs@gnu.org 0001-DESCRIPTION.patch'.
** Document your changes.
Any change that matters to end-users should have an entry in etc/NEWS.
Doc-strings should be updated together with the code.
Think about whether your change requires updating the manuals. If you
know it does not, mark the NEWS entry with "---". If you know
that *all* the necessary documentation updates have been made, mark
the entry with "+++". Otherwise do not mark it.
Please see (info "(elisp)Documentation Tips") or
https://www.gnu.org/software/emacs/manual/html_node/elisp/Documentation-Tips.html
for more specific tips on Emacs's doc style. Use 'checkdoc' to check
for documentation errors before submitting a patch.
** Test your changes.
Please test your changes before committing them or sending them to the
list.
Emacs uses ERT, Emacs Lisp Regression Testing, for testing. See (info
"(ert)") or https://www.gnu.org/software/emacs/manual/html_node/ert/
for more information on writing and running tests.
To run tests on the entire Emacs tree, run "make check" from the
top-level directory. Most tests are in the directory
"test/automated". From the "test/automated" directory, run "make
<filename>" to run the tests for <filename>.el(c). See
"test/automated/Makefile" for more information.
** Understanding Emacs Internals.
The best way to understand Emacs Internals is to read the code,
but the nodes "Tips" and "GNU Emacs Internals" in the Appendix
of the Emacs Lisp Reference Manual may also help. Some source files,
such as xdisp.c, have large commentaries describing the design and
implementation in more detail.
The file etc/DEBUG describes how to debug Emacs bugs.
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/>.
Local variables:
mode: outline
paragraph-separate: "[ ]*$"
end:

File diff suppressed because it is too large Load diff

16560
ChangeLog.2 Normal file

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-2015 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

595
INSTALL
View file

@ -1,86 +1,87 @@
GNU Emacs Installation Guide
Copyright (C) 1992, 1994, 1996-1997, 2000-2013
Free Software Foundation, Inc.
Copyright (C) 1992, 1994, 1996-1997, 2000-2015 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
On most Unix systems, you build Emacs by first running the `configure'
On most Unix systems, you build Emacs by first running the 'configure'
shell script. This attempts to deduce the correct values for
various system-dependent variables and features, and find the
directories where certain system headers and libraries are kept.
In a few cases, you may need to explicitly tell configure where to
find some things, or what options to use.
`configure' creates a `Makefile' in several subdirectories, and a
`src/config.h' file containing system-dependent definitions.
Running the `make' utility then builds the package for your system.
'configure' creates a 'Makefile' in several subdirectories, and a
'src/config.h' file containing system-dependent definitions.
Running the 'make' utility then builds the package for your system.
Here's the procedure to build Emacs using `configure' on systems which
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
some of the steps manually. The more detailed description in the other
sections of this guide will help you do that, so please refer to those
sections if you need to.
1. Unpacking the Emacs 24.1 release requires about 180 MB of free
disk space. Building Emacs uses about another 70 MB of space.
The final installed Emacs uses about 110 MB of disk space.
1. Unpacking the Emacs 24 release requires about 200 MB of free
disk space. Building Emacs uses about another 200 MB of space.
The final installed Emacs uses about 150 MB of disk space.
This includes the space-saving that comes from automatically
compressing the Lisp source files on installation.
2a. `cd' to the directory where you unpacked Emacs and invoke the
`configure' script:
2a. 'cd' to the directory where you unpacked Emacs and invoke the
'configure' script:
./configure
2b. Alternatively, create a separate directory, outside the source
directory, where you want to build Emacs, and invoke `configure'
directory, where you want to build Emacs, and invoke 'configure'
from there:
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
3. When 'configure' finishes, it prints several lines of details
about the system configuration. Read those details carefully
looking for anything suspicious, such as wrong CPU and operating
system names, wrong places for headers or libraries, missing
libraries that you know are installed on your system, etc.
If you find anything wrong, you may have to pass to `configure'
If you find anything wrong, you may have to pass to 'configure'
one or more options specifying the explicit machine configuration
name, where to find various headers and libraries, etc.
Refer to the section DETAILED BUILDING AND INSTALLATION below.
If `configure' didn't find some (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
If the details printed by 'configure' don't make any sense to
you, but there are no obvious errors, assume that 'configure' did
its job and proceed.
4. Invoke the `make' program:
4. Invoke the 'make' program:
make
5. If `make' succeeds, it will build an executable program `emacs'
in the `src' directory. You can try this program, to make sure
5. If 'make' succeeds, it will build an executable program 'emacs'
in the 'src' directory. You can try this program, to make sure
it works:
src/emacs -Q
6. Assuming that the program `src/emacs' starts and displays its
6. Assuming that the program 'src/emacs' starts and displays its
opening screen, you can install the program and its auxiliary
files into their installation directories:
@ -100,7 +101,7 @@ sections if you need to.
make distclean
Note that the install automatically saves space by compressing
(provided you have the `gzip' program) those installed Lisp source (.el)
(provided you have the 'gzip' program) those installed Lisp source (.el)
files that have corresponding .elc versions, as well as the Info files.
@ -113,23 +114,11 @@ On GNU and Unix systems, Emacs needs the optional libraries "m17n-db",
Indic and Khmer, and also for scripts that require Arabic shaping
support (Arabic and Farsi). On some systems, particularly GNU/Linux,
these libraries may be already present or available as additional
packages. Note that if there is a separate `dev' or `devel' package,
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,41 @@ 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
there is a separate `dev' or `devel' package, for use at compilation
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/
librsvg2 for SVG: http://wiki.gnome.org/action/show/Projects/LibRsvg
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
@ -202,111 +195,95 @@ number of free Unicode fonts.
Many GNU/Linux systems do not come with development packages by default;
they include the files that you need to run Emacs, but not those you
need to compile it. For example, to compile Emacs with support for X
and graphics libraries, you may need to install the `X development'
and graphics libraries, you may need to install the X development
package(s), and development versions of the jpeg, png, etc. packages.
The names of the packages that you need varies according to the
GNU/Linux distribution that you use, and the options that you want to
configure Emacs with. On Debian-based systems, you can install all the
packages needed to build the installed version of Emacs with a command
like `apt-get build-dep emacs24'. On Red Hat systems, the
corresponding command is `yum-builddep emacs'.
like 'apt-get build-dep emacs24'. On Red Hat systems, the
corresponding command is 'yum-builddep emacs'.
DETAILED BUILDING AND INSTALLATION:
(This is for a Unix or Unix-like system. For MS-DOS and MS Windows 3.X,
see msdos/INSTALL. For later versions of MS Windows, see the file
nt/INSTALL. For GNUstep and Mac OS X, see nextstep/INSTALL.)
(This is for a Unix or Unix-like system. For GNUstep and Mac OS X,
see nextstep/INSTALL. For non-ancient versions of MS Windows, see
the file nt/INSTALL. For MS-DOS and MS Windows 3.X, see msdos/INSTALL.)
1) Make sure your system has enough swapping space allocated to handle
a program whose pure code is 1.5 MB and whose data area is at
least 2.8 MB and can reach 100 MB or more. If the swapping space is
insufficient, you will get an error in the command `temacs -batch -l
loadup dump', found in `./src/Makefile.in', or possibly when
running the final dumped Emacs. (This should not be an issue
on any recent system.)
1) See the basic installation summary above for the disk space requirements.
Building Emacs requires about 230 MB of disk space (including the
Emacs sources). Once installed, Emacs occupies about 120 MB in the file
system where it is installed; this includes the executable files, Lisp
libraries, miscellaneous data files, and on-line documentation. If
the building and installation take place in different directories,
then the installation procedure momentarily requires 230+120 MB.
2) In the unlikely event that `configure' does not detect your system
type correctly, consult `./etc/MACHINES' to see what --host, --build
options you should pass to `configure'. That file also offers hints
2) In the unlikely event that 'configure' does not detect your system
type correctly, consult './etc/MACHINES' to see what --host, --build
options you should pass to 'configure'. That file also offers hints
for getting around some possible installation problems.
3) You can build Emacs in the top-level Emacs source directory
or in a separate directory.
3a) To build in the top-level Emacs source directory, go to that
directory and run the program `configure' as follows:
directory and run the program 'configure' as follows:
./configure [--OPTION[=VALUE]] ...
If `configure' cannot determine your system type, try again
If 'configure' cannot determine your system type, try again
specifying the proper --build, --host options explicitly.
If you don't want X support, specify `--with-x=no'. If you omit this
option, `configure' will try to figure out for itself whether your
If you don't want X support, specify '--with-x=no'. If you omit this
option, 'configure' will try to figure out for itself whether your
system has X, and arrange to use it if present.
The `--x-includes=DIR' and `--x-libraries=DIR' options tell the build
The '--x-includes=DIR' and '--x-libraries=DIR' options tell the build
process where the compiler should look for the include files and
object libraries used with the X Window System. Normally, `configure'
object libraries used with the X Window System. Normally, 'configure'
is able to find them; these options are necessary if you have your X
Window System files installed in unusual places. These options also
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).
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'). 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'.
Emacs will autolaunch a D-Bus session bus, when the environment
variable DISPLAY is set, but no session bus is running. This might be
inconvenient for Emacs when running as daemon or running via a remote
ssh connection. In order to completely prevent the use of D-Bus, configure
Emacs with the options `--without-dbus --without-gconf --without-gsettings'.
Emacs with the options '--without-dbus --without-gconf --without-gsettings'.
The Emacs mail reader RMAIL is configured to be able to read mail from
a POP3 server by default. Versions of the POP protocol older than
POP3 are not supported. For Kerberos-authenticated POP add
`--with-kerberos', for Hesiod support add `--with-hesiod'. While POP3
'--with-kerberos', for Hesiod support add '--with-hesiod'. While POP3
is always enabled, whether Emacs actually uses POP is controlled by
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,
even though configure finds the libraries, you can configure with one
or more of these options:
--without-xpm for XPM image support
--without-jpeg for JPEG image support
--without-tiff for TIFF image support
--without-gif for GIF image support
--without-png for PNG image support
--without-xpm for XPM image support
--without-jpeg for JPEG image support
--without-tiff for TIFF image support
--without-gif for GIF image support
--without-png for PNG image support
--without-rsvg for SVG image support
--without-imagemagick for Imagemagick 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.
@ -316,22 +293,17 @@ systems which support that.
Use --without-sound to disable sound support.
Use --without-all if you want to build a small executable with the minimal
dependencies on external libraries, at the cost of disabling most of the
features that are normally enabled by default. Using --without-all is
equivalent to --without-sound --without-dbus --without-libotf
--without-selinux --without-xft --without-gsettings --without-gnutls
--without-rsvg --without-xml2 --without-gconf --without-imagemagick
--without-m17n-flt --without-jpeg --without-tiff --without-gif
--without-png --without-gpm --without-file-notification. Note that
--without-all leaves X support enabled, and using the GTK2 or GTK3
Use --without-all for a smaller executable with fewer dependencies on
external libraries, at the cost of disabling many features. Although
--without-all disables libraries not needed for ordinary Emacs
operation, it does enable X support, and using the GTK2 or GTK3
toolkit creates a lot of library dependencies. So if you want to
build a small executable with very basic X support, use --without-all
--with-x-toolkit=no. For the smallest possible executable without X,
use --without-all --without-x. If you want to build with just a few
features enabled, you can combine --without-all with --with-FEATURE.
For example, you can use --without-all --with-dbus to build with DBus
support and nothing more.
For example, you can use --without-all --without-x --with-dbus to
build with DBus support and nothing more.
Use --with-wide-int to implement Emacs values with the type 'long long',
even on hosts where a narrower type would do. With this option, on a
@ -341,27 +313,38 @@ Use --enable-gcc-warnings to enable compile-time checks that warn
about possibly-questionable C code. This is intended for developers
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.
generated warnings may still be useful, though you may prefer building
with 'make WERROR_CFLAGS=' so that the warnings are not treated as
errors.
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 --disable-silent-rules to cause 'make' to give more details about
the commands it executes. This can be helpful when debugging a build
that goes awry. 'make V=1' also enables the extra chatter.
The `--prefix=PREFIXDIR' option specifies where the installation process
should put emacs and its data files. This defaults to `/usr/local'.
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'.
- Emacs (and the other utilities users run) go in PREFIXDIR/bin
(unless the `--exec-prefix' option says otherwise).
(unless the '--exec-prefix' option says otherwise).
- The architecture-independent files go in PREFIXDIR/share/emacs/VERSION
(where VERSION is the version number of Emacs, like `23.2').
(where VERSION is the version number of Emacs, like '23.2').
- The architecture-dependent files go in
PREFIXDIR/libexec/emacs/VERSION/CONFIGURATION
(where CONFIGURATION is the configuration name, like
i686-pc-linux-gnu), unless the `--exec-prefix' option says otherwise.
i686-pc-linux-gnu), unless the '--exec-prefix' option says otherwise.
The `--exec-prefix=EXECDIR' option allows you to specify a separate
The '--exec-prefix=EXECDIR' option allows you to specify a separate
portion of the directory tree for installing architecture-specific
files, like executables and utility programs. If specified,
- Emacs (and the other utilities users run) go in EXECDIR/bin, and
@ -376,27 +359,26 @@ For example, the command
configures Emacs to build for a 32-bit GNU/Linux distribution,
without sound support.
`configure' doesn't do any compilation or installation itself.
'configure' doesn't do any compilation or installation itself.
It just creates the files that influence those things:
`./Makefile' in the top-level directory and several subdirectories;
and `./src/config.h'. For details on exactly what it does, see the
section called `CONFIGURATION BY HAND', below.
'./Makefile' in the top-level directory and several subdirectories;
and './src/config.h'.
When it is done, `configure' prints a description of what it did and
creates a shell script `config.status' which, when run, recreates the
same configuration. If `configure' exits with an error after
disturbing the status quo, it removes `config.status'. `configure'
also creates a file `config.cache' that saves the results of its tests
to make reconfiguring faster, and a file `config.log' containing compiler
output (useful mainly for debugging `configure'). You can give
`configure' the option `--cache-file=FILE' to use the results of the
tests in FILE instead of `config.cache'. Set FILE to `/dev/null' to
disable caching, for debugging `configure'.
When it is done, 'configure' prints a description of what it did and
creates a shell script 'config.status' which, when run, recreates the
same configuration. If 'configure' exits with an error after
disturbing the status quo, it removes 'config.status'. 'configure'
also creates a file 'config.cache' that saves the results of its tests
to make reconfiguring faster, and a file 'config.log' containing compiler
output (useful mainly for debugging 'configure'). You can give
'configure' the option '--cache-file=FILE' to use the results of the
tests in FILE instead of 'config.cache'. Set FILE to '/dev/null' to
disable caching, for debugging 'configure'.
If the description of the system configuration printed by `configure'
If the description of the system configuration printed by 'configure'
is not right, or if it claims some of the features or libraries are not
available when you know they are, look at the `config.log' file for
the trace of the failed tests performed by `configure' to check
available when you know they are, look at the 'config.log' file for
the trace of the failed tests performed by 'configure' to check
whether these features are supported. Typically, some test fails
because the compiler cannot find some function in the system
libraries, or some macro-processor definition in the system headers.
@ -404,71 +386,59 @@ libraries, or some macro-processor definition in the system headers.
Some tests might fail because the compiler should look in special
directories for some header files, or link against optional
libraries, or use special compilation options. You can force
`configure' and the build process which follows it to do that by
'configure' and the build process which follows it to do that by
setting the variables CPPFLAGS, CFLAGS, LDFLAGS, LIBS, CPP and CC
before running `configure'. CPP is the command which invokes the
before running 'configure'. CPP is the command which invokes the
preprocessor, CPPFLAGS lists the options passed to it, CFLAGS are
compilation options, LDFLAGS are options used when linking, LIBS are
libraries to link against, and CC is the command which invokes the
compiler. By default, gcc is used if available.
Here's an example of a `configure' invocation, assuming a Bourne-like
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
preprocessor to look in the `/foo/myinclude' directory for header
(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
to look in '/bar/mylib' for libraries, pass the -O3 optimization
switch to the compiler, and link against libfoo and libbar
libraries in addition to the standard ones.
For some libraries, like Gtk+, fontconfig and ALSA, `configure' uses
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
The work of `configure' can be done by editing various files in the
distribution, but using `configure' is easier. See the section called
"CONFIGURATION BY HAND" below if you want to do the configuration
yourself.
./configure \
PKG_CONFIG_PATH='/usr/local/alsa/lib/pkgconfig:/opt/gtk+-2.8/lib/pkgconfig'
3b) To build in a separate directory, go to that directory
and run the program `configure' as follows:
and run the program 'configure' as follows:
SOURCE-DIR/configure CONFIGURATION-NAME [--OPTION[=VALUE]] ...
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.
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.)
4) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
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
site-load.el for additional libraries if you arrange for their
documentation strings to be in the etc/DOC file (see
src/Makefile.in if you wish to figure out how to do that). For all
else, use site-init.el. Do not load byte-compiled code which
was built with a non-nil value of `byte-compile-dynamic'.
was built with a non-nil value of 'byte-compile-dynamic'.
It is not a good idea to edit the normal .el files that come with Emacs.
Instead, use a file like site-init.el to change settings.
To change the value of a variable that is already defined in Emacs,
you should use the Lisp function `setq', not `defvar'. For example,
you should use the Lisp function 'setq', not 'defvar'. For example,
(setq news-inews-program "/usr/bin/inews")
@ -480,51 +450,46 @@ 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
The 'site-*.el' files are nonexistent in the distribution. You do not
need to create them if you have nothing to put in them.
5) Refer to the file `./etc/TERMS' for information on fields you may
5) Refer to the file './etc/TERMS' for information on fields you may
wish to add to various termcap entries. (This is unlikely to be necessary.)
6) Run `make' in the top directory of the Emacs distribution to finish
6) Run 'make' in the top directory of the Emacs distribution to finish
building Emacs in the standard way. The final executable file is
named `src/emacs'. You can execute this file "in place" without
named 'src/emacs'. You can execute this file "in place" without
copying it, if you wish; then it automatically uses the sibling
directories ../lisp, ../lib-src, ../info.
Or you can "install" the executable and the other files into their
installed locations, with `make install'. By default, Emacs's files
installed locations, with 'make install'. By default, Emacs's files
are installed in the following directories:
`/usr/local/bin' holds the executable programs users normally run -
`emacs', `etags', `ctags', `emacsclient', and
`grep-changelog'.
'/usr/local/bin' holds the executable programs users normally run -
'emacs', 'etags', 'ctags', 'emacsclient'.
`/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
`VERSION' stands for the number of the Emacs version
you are installing, like `23.1' or `23.2'. Since the
'/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
'VERSION' stands for the number of the Emacs version
you are installing, like '23.1' or '23.2'. Since the
Lisp library changes from one version of Emacs to
another, including the version number in the path
allows you to have several versions of Emacs installed
at the same time; in particular, you don't have to
make Emacs unavailable while installing a new version.
`/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC
'/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC
file, and other architecture-independent files Emacs
might need while running.
`/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
'/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
programs used by Emacs that users are not expected to
run themselves.
`VERSION' is the number of the Emacs version you are
installing, and `CONFIGURATION-NAME' is the value
deduced by the `configure' program to identify the
'VERSION' is the number of the Emacs version you are
installing, and 'CONFIGURATION-NAME' is the value
deduced by the 'configure' program to identify the
architecture and operating system of your machine,
like `i686-pc-linux-gnu' or `sparc-sun-sunos'. Since
like 'i686-pc-linux-gnu' or 'sparc-sun-sunos'. Since
these files are specific to the version of Emacs,
operating system, and architecture in use, including
the configuration name in the path allows you to have
@ -533,35 +498,35 @@ are installed in the following directories:
useful for sites at which different kinds of machines
share the file system Emacs is installed on.
`/usr/local/share/info' holds the on-line documentation for Emacs,
'/usr/local/share/info' holds the on-line documentation for Emacs,
known as "info files". Many other GNU programs are
documented using info files as well, so this directory
stands apart from the other, Emacs-specific directories.
`/usr/local/share/man/man1' holds the man pages for the programs installed
in `/usr/local/bin'.
'/usr/local/share/man/man1' holds the man pages for the programs installed
in '/usr/local/bin'.
Any version of Emacs, whether installed or not, also looks for Lisp
files in these directories.
`/usr/local/share/emacs/VERSION/site-lisp' holds the local Emacs Lisp
'/usr/local/share/emacs/VERSION/site-lisp' holds the local Emacs Lisp
files installed for Emacs version VERSION only.
`/usr/local/share/emacs/site-lisp' holds the local Emacs Lisp
'/usr/local/share/emacs/site-lisp' holds the local Emacs Lisp
files installed for all Emacs versions.
When Emacs is installed, it searches for its Lisp files
in `/usr/local/share/emacs/VERSION/site-lisp', then in
`/usr/local/share/emacs/site-lisp', and finally in
`/usr/local/share/emacs/VERSION/lisp'.
in '/usr/local/share/emacs/VERSION/site-lisp', then in
'/usr/local/share/emacs/site-lisp', and finally in
'/usr/local/share/emacs/VERSION/lisp'.
If these directories are not what you want, you can specify where to
install Emacs's libraries and data files or where Emacs should search
for its Lisp files by giving values for `make' variables as part of
the command. See the section below called `MAKE VARIABLES' for more
for its Lisp files by giving values for 'make' variables as part of
the command. See the section below called 'MAKE VARIABLES' for more
information on this.
7) Check the file `dir' in your site's info directory (usually
7) Check the file 'dir' in your site's info directory (usually
/usr/local/share/info) to make sure that it has a menu entry for the
Emacs info files.
@ -570,55 +535,51 @@ then you might need to make the movemail program setuid or setgid
to enable it to write the lock files. We believe this is safe.
9) You are done! You can remove executables and object files from
the build directory by typing `make clean'. To also remove the files
that `configure' created (so you can compile Emacs for a different
configuration), type `make distclean'. If you don't need some, or all
of the input methods from the Leim package, you can remove the
unneeded files in the leim subdirectories of your site's lisp
directory (usually /usr/local/share/emacs/VERSION/).
the build directory by typing 'make clean'. To also remove the files
that 'configure' created (so you can compile Emacs for a different
configuration), type 'make distclean'.
MAKE VARIABLES
You can change where the build process installs Emacs and its data
files by specifying values for `make' variables as part of the `make'
files by specifying values for 'make' variables as part of the 'make'
command line. For example, if you type
make install bindir=/usr/local/gnubin
the `bindir=/usr/local/gnubin' argument indicates that the Emacs
executable files should go in `/usr/local/gnubin', not
`/usr/local/bin'.
the 'bindir=/usr/local/gnubin' argument indicates that the Emacs
executable files should go in '/usr/local/gnubin', not
'/usr/local/bin'.
Here is a complete list of the variables you may want to set.
`bindir' indicates where to put executable programs that users can
'bindir' indicates where to put executable programs that users can
run. This defaults to /usr/local/bin.
`datadir' indicates where to put the architecture-independent
'datadir' indicates where to put the architecture-independent
read-only data files that Emacs refers to while it runs; it
defaults to /usr/local/share. We create the following
subdirectories under `datadir':
- `emacs/VERSION/lisp', containing the Emacs Lisp library, and
- `emacs/VERSION/etc', containing the tutorials, DOC file, etc.
`VERSION' is the number of the Emacs version you are installing,
like `23.1' or `23.2'. Since these files vary from one version
subdirectories under 'datadir':
- 'emacs/VERSION/lisp', containing the Emacs Lisp library, and
- 'emacs/VERSION/etc', containing the tutorials, DOC file, etc.
'VERSION' is the number of the Emacs version you are installing,
like '23.1' or '23.2'. Since these files vary from one version
of Emacs to another, including the version number in the path
allows you to have several versions of Emacs installed at the
same time; this means that you don't have to make Emacs
unavailable while installing a new version.
`libexecdir' indicates where to put architecture-specific data files that
Emacs refers to as it runs; it defaults to `/usr/local/libexec'.
We create the following subdirectories under `libexecdir':
- `emacs/VERSION/CONFIGURATION-NAME', containing executable
'libexecdir' indicates where to put architecture-specific data files that
Emacs refers to as it runs; it defaults to '/usr/local/libexec'.
We create the following subdirectories under 'libexecdir':
- 'emacs/VERSION/CONFIGURATION-NAME', containing executable
programs used by Emacs that users are not expected to run
themselves.
`VERSION' is the number of the Emacs version you are installing,
and `CONFIGURATION-NAME' is the value deduced by the
`configure' program to identify the architecture and operating
system of your machine, like `i686-pc-linux-gnu' or `sparc-sun-sunos'.
'VERSION' is the number of the Emacs version you are installing,
and 'CONFIGURATION-NAME' is the value deduced by the
'configure' program to identify the architecture and operating
system of your machine, like 'i686-pc-linux-gnu' or 'sparc-sun-sunos'.
Since these files are specific to the version of Emacs,
operating system, and architecture in use, including the
configuration name in the path allows you to have several
@ -627,154 +588,66 @@ Here is a complete list of the variables you may want to set.
at which different kinds of machines share the file system
Emacs is installed on.
`infodir' indicates where to put the info files distributed with
Emacs; it defaults to `/usr/local/share/info'.
'infodir' indicates where to put the info files distributed with
Emacs; it defaults to '/usr/local/share/info'.
`mandir' indicates where to put the man pages for Emacs and its
utilities (like `etags'); it defaults to
`/usr/local/share/man/man1'.
'mandir' indicates where to put the man pages for Emacs and its
utilities (like 'etags'); it defaults to
'/usr/local/share/man/man1'.
`prefix' doesn't give a path for any specific part of Emacs; instead,
'prefix' doesn't give a path for any specific part of Emacs; instead,
its value is used to determine the defaults for all the
architecture-independent path variables - `datadir',
`sharedstatedir', `infodir', and `mandir'. Its default value is
`/usr/local'; the other variables add on `lib' or `man' to it
architecture-independent path variables - 'datadir',
'sharedstatedir', 'infodir', and 'mandir'. Its default value is
'/usr/local'; the other variables add on 'lib' or 'man' to it
by default.
For example, suppose your site generally places GNU software
under `/usr/users/software/gnusoft' instead of `/usr/local'.
under '/usr/users/software/gnusoft' instead of '/usr/local'.
By including
`prefix=/usr/users/software/gnusoft'
in the arguments to `make', you can instruct the build process
'prefix=/usr/users/software/gnusoft'
in the arguments to 'make', you can instruct the build process
to place all of the Emacs data files in the appropriate
directories under that path.
`exec_prefix' serves the same purpose as `prefix', but instead
'exec_prefix' serves the same purpose as 'prefix', but instead
determines the default values for the architecture-dependent
path variables - `bindir' and `libexecdir'.
path variables - 'bindir' and 'libexecdir'.
The above variables serve analogous purposes in the makefiles for all
GNU software; the following variables are specific to Emacs.
`archlibdir' indicates where Emacs installs and expects the executable
'archlibdir' indicates where Emacs installs and expects the executable
files and other architecture-dependent data it uses while
running. Its default value, based on `libexecdir' (which
see), is `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME'
running. Its default value, based on 'libexecdir' (which
see), is '/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME'
(where VERSION and CONFIGURATION-NAME are as described above).
`GZIP_PROG' is the name of the executable that compresses installed info,
'GZIP_PROG' is the name of the executable that compresses installed info,
manual, and .el files. It defaults to gzip. Setting it to
the empty string suppresses compression.
Remember that you must specify any variable values you need each time
you run `make' in the top directory. If you run `make' once to build
emacs, test it, and then run `make' again to install the files, you
you run 'make' in the top directory. If you run 'make' once to build
emacs, test it, and then run 'make' again to install the files, you
must provide the same variable settings each time. To make the
settings persist, you can edit them into the `Makefile' in the top
directory, but be aware that running the `configure' program erases
`Makefile' and rebuilds it from `Makefile.in'.
settings persist, you can edit them into the 'Makefile' in the top
directory, but be aware that running the 'configure' program erases
'Makefile' and rebuilds it from 'Makefile.in'.
The path for finding Lisp files is specified in src/epaths.h,
a file which is generated by running configure. To change the path,
you can edit the definition of PATH_LOADSEARCH in that file
before you run `make'.
before you run 'make'.
The top-level Makefile stores the variable settings it used in the
Makefiles for the subdirectories, so you don't have to specify them
when running make in the subdirectories.
CONFIGURATION BY HAND
This should not be necessary and is not recommended. Instead of
running the `configure' program, you have to perform the following steps.
1) Copy `./src/config.in' to `./src/config.h'.
2) Edit `./src/config.h' to set the right options for your system.
3) Create `Makefile' files in various directories from the
corresponding `Makefile.in' files. This isn't so hard, just a matter
of editing in appropriate substitutions for the @...@ constructs.
The `configure' script is built from `configure.ac' by the
`autogen.sh' script, which checks that `autoconf' and other build
tools are sufficiently up to date and then runs the build tools.
BUILDING GNU EMACS BY HAND
Once Emacs is configured, running `make' in the top directory performs
the following steps.
1) Run `make epaths-force' in the top directory. This produces
`./src/epaths.h' from the template file `./src/epaths.in', changing
the paths to the values specified in `./Makefile'.
2) Go to directory `./lib' and run `make'. This creates include files
and libraries used in later steps.
3) Go to directory `./lib-src' and run `make'. This creates
executables named `etags', `make-docfile', and others.
4) Go to directory `./src' and run `make'. This refers to files in
the `./lisp', `./lib', and `./lib-src' subdirectories using names
`../lisp', `../lib', and `../lib-src'.
This creates a file `./src/emacs' which is the runnable Emacs,
which has another name that contains a version number.
Each time you do this, that version number increments in the last place.
It also creates a file in `./etc' whose name is `DOC' followed by the
current Emacs version. This file contains documentation strings for
all the functions in Emacs. Each time you run make to make a new
emacs, a new DOC file with a new name is made. You must keep the DOC
file for an Emacs version as long as you keep using that Emacs version.
INSTALLATION BY HAND
The steps below are done by running `make install' in the main
directory of the Emacs distribution.
1) Copy `./lisp' and its subdirectories, `./etc', and the executables
in `./lib-src' to their final destinations, as selected in `./src/epaths.h'.
Strictly speaking, not all of the executables in `./lib-src' need be copied.
- The programs `hexl', `movemail', `profile', and `rcs2log'
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.
2) Copy the files in `./info' to the place specified in
`./lisp/site-init.el' or `./lisp/info.el'. Note that if the
destination directory already contains a file named `dir', you
probably don't want to replace it with the `dir' file in the Emacs
distribution. Instead, you should make sure that the existing `dir'
file contains an appropriate menu entry for the Emacs info.
3) Copy `./src/emacs' to `/usr/local/bin', or to some other directory
in users' search paths. `./src/emacs' has an alternate name
`./src/emacs-EMACSVERSION'; you may wish to make a symbolic link named
`/usr/local/bin/emacs' pointing to that alternate name, as an easy way
of installing different versions.
You can delete `./src/temacs'.
4) Copy the programs `emacsclient', `ctags', and `etags' from `./lib-src'
to `/usr/local/bin'. These programs are intended for users to run.
5) Copy the man pages in `./doc/man' into the appropriate man directory.
6) The files in the `./src' subdirectory, except for `emacs', are not
used by Emacs once it is built. However, it is very desirable to keep
the source on line for debugging.
PROBLEMS
See the file `./etc/PROBLEMS' for a list of various problems sometimes
See the file './etc/PROBLEMS' for a list of various problems sometimes
encountered, and what to do about them.
This file is part of GNU Emacs.

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/>.

82
INSTALL.REPO Normal file
View file

@ -0,0 +1,82 @@
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).
git - at least Git 1.7.1. If your repository was created by an older
Git version, you may need to reclone it.
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.
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-2015 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/>.

File diff suppressed because it is too large Load diff

73
README
View file

@ -1,8 +1,8 @@
Copyright (C) 2001-2013 Free Software Foundation, Inc.
Copyright (C) 2001-2015 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 25.0.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
@ -22,72 +22,71 @@ in code we don't use often. Please send bug reports to the mailing
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
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
The 'etc' subdirectory contains several other files, named in capital
letters, which you might consider looking at when installing GNU
Emacs.
The file `configure' is a shell script to acclimate Emacs to the
The file 'configure' is a shell script to acclimate Emacs to the
oddities of your processor and operating system. It creates the file
`Makefile' (a script for the `make' program), which automates the
'Makefile' (a script for the 'make' program), which automates the
process of building and installing Emacs. See INSTALL for more
detailed information.
The file `configure.ac' is the input used by the autoconf program to
construct the `configure' script. Since Emacs has some configuration
requirements that autoconf can't meet directly, and for historical
reasons, `configure.ac' uses an unholy marriage of custom-baked
configuration code and autoconf macros.
The file 'configure.ac' is the input used by the autoconf program to
construct the 'configure' script.
The shell script `autogen.sh' generates 'configure' and other files by
The shell script 'autogen.sh' generates 'configure' and other files by
running the GNU build tools autoconf and automake, which in turn use
GNU m4 and Perl. If you want to use it, you will need to install
recent versions of these build tools. This should be needed only if
you edit files like `configure.ac' that specify Emacs's autobuild
you edit files like 'configure.ac' that specify Emacs's autobuild
procedure.
The file `Makefile.in' is a template used by `configure' to create
`Makefile'.
The file 'Makefile.in' is a template used by 'configure' to create
'Makefile'.
The file `make-dist' is a shell script to build a distribution tar
The file 'make-dist' is a shell script to build a distribution tar
file from the current Emacs tree, containing only those files
appropriate for distribution. If you make extensive changes to Emacs,
this script will help you distribute your version to others.
There are several subdirectories:
`src' holds the C code for Emacs (the Emacs Lisp interpreter and
'src' holds the C code for Emacs (the Emacs Lisp interpreter and
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.
`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
'lisp' holds the Emacs Lisp code for Emacs (most everything else).
'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.
`etc' holds miscellaneous architecture-independent data files Emacs
'etc' holds miscellaneous architecture-independent data files Emacs
uses, like the tutorial text and tool bar images.
The contents of the `lisp', `leim', `info', and `doc'
The contents of the 'lisp', 'leim', 'info', and 'doc'
subdirectories are architecture-independent too.
`info' holds the Info documentation tree for Emacs.
`doc/emacs' holds the source code for the Emacs Manual. If you modify the
manual sources, you will need the `makeinfo' program to produce
an updated manual. `makeinfo' is part of the GNU Texinfo
'info' holds the Info documentation tree for Emacs.
'doc/emacs' holds the source code for the Emacs Manual. If you modify the
manual sources, you will need the 'makeinfo' program to produce
an updated manual. 'makeinfo' is part of the GNU Texinfo
package; you need a suitably recent version of Texinfo.
`doc/lispref' holds the source code for the Emacs Lisp reference manual.
`doc/lispintro' holds the source code for the Introduction to Programming
'doc/lispref' holds the source code for the Emacs Lisp reference manual.
'doc/lispintro' holds the source code for the Introduction to Programming
in Emacs Lisp manual.
`msdos' holds configuration files for compiling Emacs under MSDOG.
`nextstep' holds instructions and some other files for compiling the
'msdos' holds configuration files for compiling Emacs under MS-DOS.
'nextstep' holds instructions and some other files for compiling the
Nextstep port of Emacs, for GNUstep and Mac OS X Cocoa.
`nt' holds various command files and documentation files that pertain
'nt' holds various command files and documentation files that pertain
to building and running Emacs on Windows 9X/ME/NT/2000/XP.
`test' holds tests for various aspects of Emacs's functionality.
'test' holds tests for various aspects of Emacs's functionality.
Building Emacs on non-Posix platforms requires tools that aren't part
of the standard distribution of the OS. The platform-specific README

View file

@ -19,8 +19,9 @@ __MSDOS__ Ditto.
__DJGPP_MINOR__ Minor version number of the DJGPP library; used only in msdos.c and dosfns.c.
DOS_NT Compiling for either the MS-DOS or native MS-Windows port.
WINDOWSNT Compiling the native MS-Windows (W32) port.
__MINGW32__ Compiling the W32 port with the MinGW port of GCC.
__MINGW32__ Compiling the W32 port with the MinGW or MinGW-w64 ports of GCC.
_MSC_VER Compiling the W32 port with the Microsoft C compiler.
MINGW_W64 Compiling the W32 port with the MinGW-w64 port of GCC.
DARWIN_OS Compiling on Mac OS X or pure Darwin (and using s/darwin.h).
SOLARIS2
USG
@ -84,10 +85,7 @@ AMPERSAND_FULL_NAME
BROKEN_DATAGRAM_SOCKETS
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
@ -374,7 +368,6 @@ HAVE___FPENDING
INTERNAL_TERMINAL
IS_ANY_SEP
IS_DIRECTORY_SEP
LOCALTIME_CACHE
MAIL_USE_FLOCK
MAIL_USE_LOCKF
MAIL_USE_POP

View file

@ -1,3 +1,696 @@
2015-03-31 Glenn Morris <rgm@gnu.org>
* update_autogen (commit): Switch prefix from "# " to "; ".
2015-03-03 Kelvin White <kwhite@gnu.org>
* MAINTAINERS: Add myself to section 2.
2015-03-03 Glenn Morris <rgm@gnu.org>
* admin.el (manual-meta-string): Use bug-gnu-emacs@gnu email address
rather than webmasters@gnu.
2015-01-28 Glenn Morris <rgm@gnu.org>
* update_autogen (commit): Prepend "# " to commit message.
2015-01-24 Paul Eggert <eggert@cs.ucla.edu>
Fix a couple of AM_V_GEN bugs
* unidata/Makefile.in (unifiles): Use AM_V_at instead of AM_V_GEN,
since this doesn't generate a file.
2015-01-15 Eli Zaretskii <eliz@gnu.org>
* unidata/uvs.el (uvs-print-table-ivd): Call set-binary-mode on
stdout.
2015-01-12 Paul Eggert <eggert@cs.ucla.edu>
Say "ELC foo.elc" instead of "GEN foo.elc"
* unidata/Makefile.in (AM_V_ELC, am__v_ELC_, am__v_ELC_0)
(am__v_ELC_1): New macros.
(%.elc): Use them.
2015-01-08 Glenn Morris <rgm@gnu.org>
* authors.el (authors-aliases): Add an entry to ignore.
2015-01-04 Paul Eggert <eggert@cs.ucla.edu>
Less 'make' chatter for admin/grammars
* grammars/Makefile.in (AM_DEFAULT_VERBOSITY, AM_V_GEN)
(am__v_GEN_, am__v_GEN_0, am__v_GEN_1, AM_V_at, am__v_at_)
(am__v_at_0, am__v_at_1): New macros, from src/Makefile.in.
(${bovinedir}/%-by.el, ${bovinedir}/scm-by.el)
(${cedetdir}/semantic/%-wy.el, ${wisentdir}/%-wy.el)
(${wisentdir}/javat-wy.el, ${cedetdir}/srecode/srt-wy.el): Use them.
Less chatter in batch mode
* unidata/unidata-gen.el (unidata-gen-files):
Don't output messages like "Generating ..." in batch mode.
2015-01-02 Paul Eggert <eggert@cs.ucla.edu>
Less 'make' chatter for unidata
* unidata/Makefile.in (AM_DEFAULT_VERBOSITY, AM_V_GEN, am__v_GEN_)
(am__v_GEN_0, am__v_GEN_1, AM_V_at, am__v_at_, am__v_at_0, am__v_at_1):
New macros, from ../src/Makefile.in.
(${top_srcdir}/src/macuvs.h, %.elc, unidata.txt)
(${unidir}/charprop.el, unifiles): Use them.
(PHONY_EXTRAS): New macro.
(.PHONY, ${unidir}/charprop.el): Use it.
(FORCE): Remove; all uses replaced by PHONY_EXTRAS manipulation.
(${unidir}/charprop.el, extraclean):
Use 'make' conditionals rather than shell.
2015-01-01 Paul Eggert <eggert@cs.ucla.edu>
* update-copyright (emacsver): Change to emacsver.tex.in.
2014-12-25 Paul Eggert <eggert@cs.ucla.edu>
* merge-gnulib (GNULIB_MODULES): Add stpcpy.
2014-12-24 Glenn Morris <rgm@gnu.org>
* authors.el (authors-obsolete-files-regexps)
(authors-ignored-files, authors-valid-file-names)
(authors-renamed-files-alist, authors-renamed-files-regexps):
Additions.
2014-12-14 Paul Eggert <eggert@cs.ucla.edu>
* notes/unicode: Track leim/quail file renames.
Correct coding system of lisp/international/titdic-cnv.el.
2014-12-14 Glenn Morris <rgm@gnu.org>
* quick-install-emacs (PUBLIC_LIBSRC_SCRIPTS): Remove, and all uses.
* authors.el (authors-valid-file-names): Add grep-changelog.
2014-12-13 Paul Eggert <eggert@cs.ucla.edu>
* notes/unicode: Don't mention Czech and Slovakian refcards.
* merge-gnulib (GNULIB_MODULES): Add stddef, for max_align_t.
2014-12-06 Stephen Leake <stephen_leake@stephe-leake.org>
* notes/commits: Delete; merge into ./CONTRIBUTE.
* notes/repo: Move commit, branch info into ./CONTRIBUTE.
2014-12-01 Glenn Morris <rgm@gnu.org>
* update_autogen: Fix bogosity introduced in 2014-11-16 merge.
2014-11-29 Paul Eggert <eggert@cs.ucla.edu>
Lessen focus on ChangeLog files, as opposed to change log entries.
This is in preparation for generating the former automatically
from the latter.
* notes/bugtracker, notes/copyright, notes/newfile:
ChangeLog -> change log
* notes/changelogs: Remove, merging old contents to ...
* notes/repo: ... here.
2014-11-27 David Engster <deng@randomsample.de>
* gitmerge.el: New file.
* notes/git-workflow: Add documentation for using it.
2014-11-27 Oscar Fuentes <ofv@wanadoo.es>
* CPP-DEFINES: Mention MINGW_W64.
2014-11-22 Glenn Morris <rgm@gnu.org>
* admin.el (set-version): No more need to update nt/*.rc.
* authors.el (authors-renamed-files-alist): Add .rc.in files.
2014-11-16 Stefan Monnier <monnier@iro.umontreal.ca>
* update_autogen: Merge from emacs-24 (restoring bzr conditionals).
2014-11-13 Andreas Schwab <schwab@suse.de>
* make-tarball.txt: Make annotated tag and push it out.
2014-11-11 Eric S. Raymond <esr@thyrsus.com>
* make-tarball.txt, notes/bugtracker, notes/repo, notes/tags:
Git transition.
* update-copyright: Use git ls-files.
* update_autogen: Remove some bzr conditionals.
2014-11-10 Eli Zaretskii <eliz@gnu.org>
* unidata/Makefile.in (${top_srcdir}/src/macuvs.h):
Use unmsys--file-name. (Bug#18955)
2014-11-10 Glenn Morris <rgm@gnu.org>
* admin.el (set-version): No need to update doc/man/emacs.1.
* admin.el (set-version): No need to update etc/refcards/emacsver.tex.
(set-copyright): Update etc/refcards/emacsver.tex.in.
* admin.el (set-version): No need to update doc/emacs/emacsver.texi.
(make-manuals-dist-output-variables): Add top_srcdir.
(make-manuals-dist--1): Handle @version@ specially.
2014-11-09 Eric Ludlam <zappo@gnu.org>
* grammars/c.by (template-type): Add :template-specifier and
:typevar to capture extra details about the template.
(opt-post-fcn-modifiers): Splice in the found symbol into the
return value correctly.
(QUESTION): New punctuation.
(expression): Add ternary conditional support.
* grammars/scheme.by (MODULE): New token.
(scheme): Handle expanding the MODULE tag.
(scheme-list): Remove closeparen required match.
(scheme-in-list): Remove extraneous matches for DEFINE.
Add support for MODULE Simplify matching for code & make work.
(name-args, name-arg-list, name-arg-expand): Make it work.
2014-11-09 David Engster <dengste@eml.cc>
* grammars/c.by (opt-brackets-after-symbol): New.
(multi-stage-dereference): Use it. Add rules for explicit
matching the last dereference. We cannot just juse
'namespace-symbol' as a single rule, since this would match too
greedy and mess with parsing default values of variables.
2014-11-09 Glenn Morris <rgm@gnu.org>
* admin.el (make-manuals-dist-output-variables)
(make-manuals-dist--1, make-manuals-dist): New.
Replaces doc/*/Makefile.in `dist' rules.
2014-11-04 Paul Eggert <eggert@cs.ucla.edu>
Spelling fixes; tweak explanation of commit messages.
* notes/repo: Avoid "DVCS" acronym without first explaining it.
Mention using the first line of a ChangeLog as the topic line,
and that commit messages should use UTF-8.
2014-11-01 Eli Zaretskii <eliz@gnu.org>
* notes/repo (Notes): Reword the stylistic guidance for commit log
messages so that they are in line with Emacs development practices
and style guidance.
2014-10-27 Eric S. Raymond <esr@thyrsus.com>
* notes/bzr: Rename to notes/repo, reorganize to separate
VCS-dependent from VCS-independent stuff. Add guidance about
commit-comment format under DVCSes.
* notes/BRANCH: Merged into notes/repo.
2014-10-20 Glenn Morris <rgm@gnu.org>
* Merge in all changes up to 24.4 release.
2014-10-15 Eli Zaretskii <eliz@gnu.org>
* unidata/unidata-gen.el (unidata-prop-alist): New properties
'paired-bracket' and 'bracket-type', in support of the UBA 6.3.
(unidata-gen-table): Support PROP-IDX being a function.
(unidata-describe-bidi-bracket-type, unidata-gen-brackets-list)
(unidata-gen-bracket-type-list): New functions.
(unidata-check): Support checking the 'bracket-type' attribute.
(unidata-gen-files): Don't create backups for uni-*.el files.
* unidata/Makefile.in (${unidir}/charprop.el): Depend on
BidiMirroring.txt and BidiBrackets.txt.
* unidata/BidiBrackets.txt: New file, from Unicode.
2014-10-13 Glenn Morris <rgm@gnu.org>
* authors.el (authors-aliases, authors-fixed-case)
(authors-obsolete-files-regexps): Additions.
(authors-no-scan-regexps): New constant.
(authors-no-scan-file-p): New function.
(authors): Respect authors-no-scan-file-p.
2014-10-12 Paul Eggert <eggert@cs.ucla.edu>
Fix putenv race conditions with undefined behavior (Bug#8705).
* merge-gnulib (GNULIB_MODULES): Add time_r, since Emacs now
calls localtime_r and gmtime_r directly.
2014-10-07 Glenn Morris <rgm@gnu.org>
* unidata/Makefile.in: Check for deleted uni- files. (Bug#18489)
(all): Use unifiles rather than charprop.el.
(FORCE): New variable and phony rule.
(${unidir}/charprop.el): Respect FORCE.
(unifiles): New rule.
* unidata/Makefile.in (unidir): Rename from DSTDIR. Change all uses.
(charprop.el, install): Remove rules.
(clean): Simplify.
2014-10-04 Glenn Morris <rgm@gnu.org>
* authors.el (authors-renamed-files-alist): Add package-x-test.el
2014-10-01 Stefan Monnier <monnier@iro.umontreal.ca>
* unidata/unidata-gen.el (unidata-gen-table-word-list): Use alist-get
and cl-incf.
2014-09-08 Eli Zaretskii <eliz@gnu.org>
* unidata/unidata-gen.el (unidata-check): Bring this function up
to date with the currently supported methods of generating Unicode
property tables. Add a comment with a description how to invoke
the check. Update the copyright years in the reference to the
Unicode data files we use.
2014-08-30 Paul Eggert <eggert@cs.ucla.edu>
Vector-sorting fixes (Bug#18361).
* merge-gnulib (GNULIB_MODULES): Add vla.
2014-08-30 Eli Zaretskii <eliz@gnu.org>
* authors.el (authors): Fix last change so it works for MS-Windows
as well.
2014-08-29 Michael Albinus <michael.albinus@gmx.de>
* authors.el (authors): Use LOCALE argument of `string-collate-lessp'.
2014-08-28 Michael Albinus <michael.albinus@gmx.de>
* authors.el (authors-aliases): Addition.
2014-08-26 Glenn Morris <rgm@gnu.org>
* authors.el (authors-ignored-files, authors-valid-file-names)
(authors-renamed-files-alist): Additions.
(authors-renamed-files-alist): Revert 2014-08-09 change.
(authors): Sort authors in utf-8 order. (Bug#2263)
2014-08-09 Reuben Thomas <rrt@sc3d.org>
* notes/copyright: Remove mention of msdos/is_exec.c and
sigaction.c.
* authors.el (authors-renamed-files-alist): Remove is_exec.c.
2014-08-07 Reuben Thomas <rrt@sc3d.org>
* notes/exit-value: Remove specific discussion of VMS.
2014-08-07 Reuben Thomas <rrt@sc3d.org>
Refer to MS-DOS using the same name everywhere.
* FOR-RELEASE: ``MS-DOG'', ``MSDOG'' and ``msdog'' become
``MS-DOS''.
* MAINTAINERS: ditto.
2014-07-14 Paul Eggert <eggert@cs.ucla.edu>
Use binary-io module, O_BINARY, and "b" flag (Bug#18006).
* merge-gnulib (GNULIB_MODULES): Add binary-io. It was already
present implicitly; this just makes the dependence explicit.
2014-06-30 Glenn Morris <rgm@gnu.org>
* update_autogen: Find loaddefs targets rather than
parsing lisp/Makefile.in
2014-06-29 Glenn Morris <rgm@gnu.org>
* update_autogen: Remove need to cd into/out of lisp/.
* grammars/Makefile.in (bootstrap-clean): Don't delete Makefile,
for sake of top-level maintainer-clean rule.
2014-06-26 Eli Zaretskii <eliz@gnu.org>
* notes/unicode: Some notes about what to do when a new Unicode
version is imported.
2014-06-26 Glenn Morris <rgm@gnu.org>
* authors.el: Move here from ../lisp/emacs-lisp.
2014-06-25 Glenn Morris <rgm@gnu.org>
* grammars/Makefile.in (${bovinedir}/c-by.el, ${bovinedir}/make-by.el):
(${wisentdir}/js-wy.el, ${wisentdir}/python-wy.el):
Replace with pattern rules.
(${bovinedir}/scm-by.el, ${wisentdir}/javat-wy.el)
(${cedetdir}/srecode/srt-wy.el): Use $<.
* unidata/Makefile.in (${top_srcdir}/src/macuvs.h): Make and load .elc.
(.el.elc): Replace with pattern rule.
(%.elc): New.
(unidata.txt): Use $<.
(compile): Remove.
(${DSTDIR}/charprop.el): Use order-only prereqs rather than a sub-make.
* unidata/uvs.el (uvs-print-table-ivd): Fix free variable typo.
2014-06-21 Glenn Morris <rgm@gnu.org>
* unidata/BidiMirroring.txt: Update to 7.0.0 (only comment changes).
* unidata/UnicodeData.txt: Update to 7.0.0.
* unidata/IVD_Sequences.txt: Update to 2014-05-16 version.
2014-06-21 Stephen Berman <Stephen.Berman@gmx.net>
* notes/elpa: Use "git" instead of "bzr" in the name of machine to
clone the repository from.
2014-06-13 Glenn Morris <rgm@gnu.org>
* unidata/Makefile.in (${DSTDIR}/charprop.el):
GNU make automatically passes command-line arguments to sub-makes.
2014-06-02 Paul Eggert <eggert@cs.ucla.edu>
Include sources used to create macuvs.h.
* unidata/IVD_Sequences.txt: New file.
* unidata/Makefile.in (${top_srcdir}/src/macuvs.h): New rule.
(all): Build it.
(extraclean): Remove it.
* unidata/README: Mention BidiMirroring.txt and IVD_Sequences.txt.
* unidata/copyright.html: Update to current version from Unicode
Consortium.
* unidata/uvs.el: Rename from ../mac/uvs.el.
(uvs-print-table-ivd): Output a header in the form that
unidata-gen.el generates.
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,
for portability to hosts where /bin/sh has problems.
2013-08-27 Glenn Morris <rgm@gnu.org>
* admin.el (manual-misc-manuals): Use INFO_COMMON rather than
INFO_TARGETS. "faq" does not need special treatment any more.
2013-08-15 Glenn Morris <rgm@gnu.org>
* make-tarball.txt: Mention generating pdfs in etc/refcards.
@ -118,7 +811,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.
@ -333,10 +1026,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>
@ -795,6 +1488,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.
@ -802,8 +1499,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>
@ -1326,7 +2024,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.
@ -1555,7 +2253,7 @@
2006-04-17 Ramprasad B <ramprasad_i82@yahoo.com>
* ./* (Copyright): Updated Copyright year(s).
* ./* (Copyright): Update Copyright year(s).
2006-02-24 Reiner Steib <Reiner.Steib@gmx.de>
@ -1752,8 +2450,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.
@ -1873,7 +2569,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.
@ -1881,7 +2577,7 @@
;; coding: utf-8
;; End:
Copyright (C) 2001-2013 Free Software Foundation, Inc.
Copyright (C) 2001-2015 Free Software Foundation, Inc.
This file is part of GNU Emacs.

View file

@ -2,11 +2,19 @@ Tasks needed before the next release.
* TO BE DONE SHORTLY BEFORE RELEASE
** Make sure the necessary sources and scripts for any generated files
are included in the source tarfile. (They don't need to be installed,
so eg admin/ is fine.)
** Manuals
Check for node names using problematic characters:
find doc -name '*.texi' -exec grep '^@node[^,]*[:.()]' {} +
Sadly makeinfo does not warn about such characters.
Check for major new features added since the last release (e.g. new
lisp files), and add the relevant authors to the Acknowledgments in
doc/emacs/ack.texi and emacs.texi.
Check cross-references between the manuals (eg from emacs to elisp)
are correct. You can use something like the following in the info
directory in the Emacs build tree:
@ -64,11 +72,10 @@ pages of the manuals, and even if they do, the resulting page breaks
depend on what paper and font size they use. This also means that if
you _are_ going to do this, it should be done with the paper and font
size that the GNU Press are going to use when they print the manuals.
I think this is different to what you get if you just use eg `make
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.
@ -100,26 +107,28 @@ sk Miroslav Vaško
** cusver-check from admin.el can help find new defcustoms missing
:version tags.
** Add a line to etc/HISTORY for the release version number and date.
* BUGS
** Check for modes which bind M-s that conflicts with a new global binding M-s
and change key bindings where necessary. The current list of modes:
1. Gnus binds `M-s' to `gnus-summary-search-article-forward'.
1. Gnus binds 'M-s' to 'gnus-summary-search-article-forward'.
2. Minibuffer binds `M-s' to `next-matching-history-element'
2. Minibuffer binds 'M-s' to 'next-matching-history-element'
(not useful any more since C-s can now search in the history).
3. `center-line' in Text mode was already moved to the text formatting
keymap as `M-o M-s' (thus this binding is not necessary any more
in `nroff-mode-map' too and can be removed now from the nroff mode
because it can now use the global key binding `M-o M-s' `center-line').
3. 'center-line' in Text mode was already moved to the text formatting
keymap as 'M-o M-s' (thus this binding is not necessary any more
in 'nroff-mode-map' too and can be removed now from the nroff mode
because it can now use the global key binding 'M-o M-s' 'center-line').
4. PCL-CVS binds `M-s' to `cvs-status', and log-edit-mode binds it to
`log-edit-comment-search-forward'. Perhaps search commands
on the global key binding `M-s' are useless in these modes.
4. PCL-CVS binds 'M-s' to 'cvs-status', and log-edit-mode binds it to
'log-edit-comment-search-forward'. Perhaps search commands
on the global key binding 'M-s' are useless in these modes.
5. Rmail binds `\es' to `rmail-search'/`rmail-summary-search'.
5. Rmail binds '\es' to 'rmail-search'/'rmail-summary-search'.
* DOCUMENTATION
@ -138,7 +147,7 @@ SECTION READERS
----------------------------------
TUTORIAL cyd
TUTORIAL.bg ogi
TUTORIAL.cn
TUTORIAL.cn xfq
TUTORIAL.cs
TUTORIAL.de wl
TUTORIAL.eo
@ -146,7 +155,7 @@ TUTORIAL.es
TUTORIAL.fr
TUTORIAL.he eliz
TUTORIAL.it
TUTORIAL.ja
TUTORIAL.ja
TUTORIAL.ko
TUTORIAL.nl Pieter Schoenmakers
TUTORIAL.pl
@ -161,111 +170,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
msdos.texi
msdos-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

@ -5,25 +5,19 @@ what parts of the Emacs distribution. The areas can be defined
"arbitrarily", but should provide fairly well-defined boundaries so
that there are not too many ambiguities.
The list below consists of 3 parts. First, the list of areas that
someone wants to be maintaining (i.e. has a particularly keen interest
for it); then the list of areas that someone is willing to maintain,
although he would not necessarily mind if someone else was the
official maintainer; and finally the list of areas for which no
maintainer has been found so far.
==============================================================================
1.
1. Areas that someone wants to be maintaining (i.e. has a particularly
keen interest in). There's no need to list files where you are
mentioned in the file's header.
==============================================================================
Jason Rumney
W32
Eli Zaretskii
src/bidi.c
bidirectional editing support in xdisp.c and elsewhere
lisp/term/tty-colors.el
test/biditest.el
test/redisplay-testsuite.el
The MS-DOS (a.k.a. DJGPP) port:
config.bat
@ -31,12 +25,13 @@ Eli Zaretskii
src/msdos.[ch]
src/dosfns.[ch]
src/w16select.c
src/unexcoff.c
lisp/term/internal.el
lisp/term/pc-win.el
lisp/dos-fns.el
lisp/dos-w32.el
lisp/dos-vars.el
doc/emacs/msdog.texi
doc/emacs/msdos.texi
Kenichi Handa
Mule
@ -49,18 +44,7 @@ Stefan Monnier
minor-mode/major-mode infrastructure
text filling
minibuffer completion
lisp/textmodes/outline.el
Miles Bader
src/xfaces.c
field-property related stuff
lisp/comint.el
lisp/shell.el
[other comint-related packages]
lisp/button.el
lisp/image-file.el
lisp/minibuf-eldef.el
lisp/rfn-eshadow.el
lisp/outline.el
Jay Belanger
Calc
@ -73,21 +57,105 @@ Bastien Guerry
lisp/org/*
doc/misc/org.texi
Artur Malabarba
lisp/emacs-lisp/package.el
lisp/emacs-lisp/let-alist.el
lisp/character-fold.el
Michael Albinus
Tramp
lisp/net/tramp*.el
lisp/url/url-tramp.el
doc/misc/tramp*.texi
test/automated/tramp-tests.el
D-Bus
src/dbusbind.c
lisp/net/dbus.el
lisp/net/secrets.el
lisp/net/zeroconf.el
doc/misc/dbus.texi
test/automated/dbus-tests.el
File Notifications
src/gfilenotify.c
lisp/filenotify.el
test/automated/file-notify-tests.el
Simen Heggestøyl
lisp/textmodes/css-mode.el
Nicolas Petton
lisp/emacs-lisp/map.el
lisp/emacs-lisp/seq.el
The GNU AUCTeX maintainers (auctex-devel@gnu.org)
RefTeX
lisp/textmodes/reftex-auc.el
lisp/textmodes/reftex-cite.el
lisp/textmodes/reftex-dcr.el
lisp/textmodes/reftex-global.el
lisp/textmodes/reftex-index.el
lisp/textmodes/reftex-parse.el
lisp/textmodes/reftex-ref.el
lisp/textmodes/reftex-sel.el
lisp/textmodes/reftex-toc.el
lisp/textmodes/reftex-vars.el
lisp/textmodes/reftex.el
Dmitry Gutov
lisp/progmodes/ruby-mode.el
test/automated/ruby-mode-tests.el
test/indent/ruby.rb
lisp/progmodes/xref.el
lisp/progmodes/project.el
Ulf Jasper
Newsticker
doc/misc/newsticker.texi
etc/images/newsticker/*
lisp/net/newst-backend.el
lisp/net/newst-plainview.el
lisp/net/newst-reader.el
lisp/net/newst-ticker.el
lisp/net/newst-treeview.el
lisp/net/newsticker.el
test/automated/newsticker-tests.el
Icalendar
lisp/calendar/icalendar.el
test/automated/icalendar-tests.el
==============================================================================
2.
2. Areas that someone is willing to maintain, although he would not
necessarily mind if someone else was the official maintainer.
==============================================================================
Kelvin White
ERC
lisp/erc/*
doc/misc/erc.texi
Eli Zaretskii
doc/*
lispref/*
info/dir
src/xfaces.c
src/xdisp.c
src/term.c
src/dispnew.c
src/dispextern.h
src/frame.c
src/dired.c
src/fileio.c
src/unexw32.c
src/w32*.[ch]
src/window.c
src/indent.c
src/region-cache.[ch]
nt/*
lib-src/ntlib.[ch]
lib-src/etags.c
lisp/arc-mode.el
lisp/menu-bar.el
@ -95,7 +163,20 @@ Eli Zaretskii
lisp/info.el
lisp/ls-lisp.el
lisp/startup.el
lisp/filenotify.el
lisp/w32*.el
lisp/term/w32*.el
lisp/progmodes/gdb-mi.el
lisp/textmodes/ispell.el
lisp/textmodes/flyspell.el
lisp/mail/rmail*.el
Mule
admin/unidata/*
admin/nt/dump.bat
test/etags/*
Stefan Monnier
src/intervals.c
@ -105,102 +186,56 @@ Stefan Monnier
lisp/progmodes/tcl.el
lisp/emacs-lisp/easymenu.el
Miles Bader
src/eval.c
src/bytecode.c
src/editfns.c
lisp/textmodes/refill.el
Artur Malabarba
lisp/isearch.el
==============================================================================
3.
==============================================================================
Paul Eggert
.dir-locals.el
.gitattributes
.gitignore
GNUmakefile
Makefile.in
admin/merge-gnulib
admin/merge-pkg-config
admin/update-copyright
autogen.sh
build-aux/*
configure.ac
lib/*
lib-src/* (except for files others want to maintain)
m4/*
make-dist
src/* (except for *.m, *w32*, bitmaps, files others want to maintain)
src/Makefile.in
src/abbrev.c
src/alloc.c
src/alloca.c
src/alloca.s
src/atimer.c
src/bitmaps/
src/buffer.c
src/callint.c
src/callproc.c
src/casefiddle.c
src/casetab.c
src/category.c
src/ccl.c
src/charset.c
src/cm.c
src/cmds.c
src/coding.c
src/composite.c
src/config.in
src/data.c
src/doc.c
src/doprnt.c
src/ecrt0.c
src/emacs.c
src/epaths.in
src/fileio.c
src/filelock.c
src/filemode.c
src/firstfile.c
src/floatfns.c
src/fringe.c
src/fns.c
src/fontset.c
src/getloadavg.c
src/gmalloc.c
src/gtkutil.c
src/indent.c
src/insdel.c
src/image.c
src/lastfile.c
src/lread.c
src/macros.c
src/makefile.w32-in
src/marker.c
src/md5.c
src/minibuf.c
src/mktime.c
src/pre-crt0.c
src/prefix-args.c
src/print.c
src/process.c
src/ralloc.c
src/region-cache.c
src/scroll.c
src/search.c
src/sound.c
src/strftime.c
src/sysdep.c
src/termcap.c
src/terminfo.c
src/textprop.c
src/tparam.c
src/undo.c
src/unexaix.c
src/unexalpha.c
src/unexcoff.c
src/unexelf.c
src/unexhp9k800.c
src/unexw32.c
src/vm-limit.c
src/w32.c
src/w32console.c
src/w32fns.c
src/w32heap.c
src/w32inevt.c
src/w32menu.c
src/w32proc.c
src/w32reg.c
src/w32select.c
src/w32term.c
src/w32xfns.c
src/widget.c
src/window.c
src/xfns.c
src/xmenu.c
src/xrdb.c
src/xselect.c
src/xterm.c
Michael Albinus
src/inotify.c
lisp/autorevert.el
lisp/eshell/em-tramp.el
lisp/notifications.el
test/automated/auto-revert-tests.el
test/automated/inotify-test.el
test/automated/vc-tests.el
Nicolas Petton
lisp/emacs-lisp/subr-x.el
lisp/arc-mode.el
Xue Fuqiao
doc/lispref/*
Tassilo Horn
lisp/doc-view.el
Dmitry Gutov
lisp/whitespace.el
lisp/vc/*
Vibhav Pant
lisp/net/browse-url.el
lisp/erc/*
;;; Local Variables:
;;; coding: utf-8
;;; indent-tabs-mode: t
;;; End:

View file

@ -1,4 +1,4 @@
Copyright (C) 2001-2013 Free Software Foundation, Inc.
Copyright (C) 2001-2015 Free Software Foundation, Inc.
See the end of the file for license conditions.
@ -37,7 +37,7 @@ Build Emacs in various ways.
** quick-install-emacs
Install emacs quickly (`incrementally').
Install emacs quickly ("incrementally").
** alloc-colors.c

View file

@ -1,6 +1,6 @@
;;; admin.el --- utilities for Emacs administration
;; Copyright (C) 2001-2013 Free Software Foundation, Inc.
;; Copyright (C) 2001-2015 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@ -21,17 +21,13 @@
;; add-release-logs Add ``Version X released'' change log entries.
;; set-version Change Emacs version number in source tree.
;; set-copyright Change emacs short copyright string (eg as
;; set-copyright Change Emacs short copyright string (eg as
;; printed by --version) in source tree.
;;; Code:
(defvar add-log-time-format) ; in add-log
;; Does this information need to be in every ChangeLog, as opposed to
;; just the top-level one? Only if you allow changes the same
;; day as the release.
;; http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00161.html
(defun add-release-logs (root version &optional date)
"Add \"Version VERSION released.\" change log entries in ROOT.
Root must be the root of an Emacs source tree.
@ -42,14 +38,12 @@ Optional argument DATE is the release date, default today."
emacs-minor-version))
(read-string "Release date: "
(progn (require 'add-log)
(let ((add-log-time-zone-rule t))
(funcall add-log-time-format))))))
(funcall add-log-time-format nil t)))))
(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))))
(or date (setq date (funcall add-log-time-format nil t)))
(let* ((logs (process-lines "find" root "-name" "ChangeLog"))
(entry (format "%s %s <%s>\n\n\t* Version %s released.\n\n"
date
@ -62,18 +56,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."))))))
@ -81,80 +88,22 @@ Root must be the root of an Emacs source tree."
(rx (and "AC_INIT" (1+ (not (in ?,)))
?, (0+ space)
(submatch (1+ (in "0-9."))))))
(set-version-in-file root "doc/emacs/emacsver.texi" version
(rx (and "EMACSVER" (1+ space)
(submatch (1+ (in "0-9."))))))
(set-version-in-file root "doc/man/emacs.1" version
(rx (and ".TH EMACS" (1+ not-newline)
"GNU Emacs" (1+ space)
(submatch (1+ (in "0-9."))))))
(set-version-in-file root "nt/config.nt" version
(rx (and bol "#" (0+ blank) "define" (1+ blank)
"VERSION" (1+ blank) "\""
(submatch (1+ (in "0-9."))))))
;; TODO: msdos could easily extract the version number from
;; configure.ac with sed, rather than duplicating the information.
(set-version-in-file root "msdos/sed2v2.inp" version
(rx (and bol "/^#undef " (1+ not-newline)
"define VERSION" (1+ space) "\""
(submatch (1+ (in "0-9."))))))
(set-version-in-file root "nt/makefile.w32-in" version
(rx (and "VERSION" (0+ space) "=" (0+ space)
(submatch (1+ (in "0-9."))))))
;; nt/emacs.rc also contains the version number, but in an awkward
;; format. It must contain four components, separated by commas, and
;; 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")))
(comma-version
(concat (car version-components) ","
(cadr version-components) ","
(cadr (cdr version-components)) ","
(cadr (cdr (cdr version-components)))))
(comma-space-version
(concat (car version-components) ", "
(cadr version-components) ", "
(cadr (cdr version-components)) ", "
(cadr (cdr (cdr version-components))))))
(set-version-in-file root "nt/emacs.rc" comma-version
(rx (and "FILEVERSION" (1+ space)
(submatch (1+ (in "0-9,"))))))
(set-version-in-file root "nt/emacs.rc" comma-version
(rx (and "PRODUCTVERSION" (1+ space)
(submatch (1+ (in "0-9,"))))))
(set-version-in-file root "nt/emacs.rc" comma-space-version
(rx (and "\"FileVersion\"" (0+ space) ?, (0+ space)
?\" (submatch (1+ (in "0-9, "))) "\\0\"")))
(set-version-in-file root "nt/emacs.rc" comma-space-version
(rx (and "\"ProductVersion\"" (0+ space) ?,
(0+ space) ?\" (submatch (1+ (in "0-9, ")))
"\\0\"")))
;; Likewise for emacsclient.rc
(set-version-in-file root "nt/emacsclient.rc" comma-version
(rx (and "FILEVERSION" (1+ space)
(submatch (1+ (in "0-9,"))))))
(set-version-in-file root "nt/emacsclient.rc" comma-version
(rx (and "PRODUCTVERSION" (1+ space)
(submatch (1+ (in "0-9,"))))))
(set-version-in-file root "nt/emacsclient.rc" comma-space-version
(rx (and "\"FileVersion\"" (0+ space) ?, (0+ space)
?\" (submatch (1+ (in "0-9, "))) "\\0\"")))
(set-version-in-file root "nt/emacsclient.rc" comma-space-version
(rx (and "\"ProductVersion\"" (0+ space) ?,
(0+ space) ?\" (submatch (1+ (in "0-9, ")))
"\\0\"")))
;; Major version only.
(when (string-match "\\([0-9]\\{2,\\}\\)" version)
(setq version (match-string 1 version))
(set-version-in-file root "src/msdos.c" version
(rx (and "Vwindow_system_version" (1+ not-newline)
?\( (submatch (1+ (in "0-9"))) ?\))))
(set-version-in-file root "etc/refcards/ru-refcard.tex" version
"\\\\newcommand{\\\\versionemacs}\\[0\\]\
{\\([0-9]\\{2,\\}\\)}.+%.+version of Emacs")
(set-version-in-file root "etc/refcards/emacsver.tex" version
"\\\\def\\\\versionemacs\
{\\([0-9]\\{2,\\}\\)}.+%.+version of Emacs"))))
;; Major version only.
(when (string-match "\\([0-9]\\{2,\\}\\)" version)
(setq version (match-string 1 version))
(set-version-in-file root "src/msdos.c" version
(rx (and "Vwindow_system_version" (1+ not-newline)
?\( (submatch (1+ (in "0-9"))) ?\))))
(set-version-in-file root "etc/refcards/ru-refcard.tex" version
"\\\\newcommand{\\\\versionemacs}\\[0\\]\
{\\([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 +116,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 ?\")))) ?\")))
@ -175,10 +125,6 @@ Root must be the root of an Emacs source tree."
(rx (and bol "/^#undef " (1+ not-newline)
"define COPYRIGHT" (1+ space)
?\" (submatch (1+ (not (in ?\")))) ?\")))
(set-version-in-file root "nt/config.nt" copyright
(rx (and bol "#" (0+ blank) "define" (1+ blank)
"COPYRIGHT" (1+ blank)
?\" (submatch (1+ (not (in ?\")))) ?\")))
(set-version-in-file root "lib-src/rcs2log" copyright
(rx (and "Copyright" (0+ space) ?= (0+ space)
?\' (submatch (1+ nonl)))))
@ -187,30 +133,36 @@ Root must be the root of an Emacs source tree."
(set-version-in-file root "etc/refcards/ru-refcard.tex" copyright
"\\\\newcommand{\\\\cyear}\\[0\\]\
{\\([0-9]\\{4\\}\\)}.+%.+copyright year")
(set-version-in-file root "etc/refcards/emacsver.tex" copyright
(set-version-in-file root "etc/refcards/emacsver.tex.in" 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."
;; Like `make -C doc/misc echo-info', but works if unconfigured.
"Return doc/misc manuals as list of strings.
ROOT should be the root of an Emacs source tree."
;; Similar to `make -C doc/misc echo-info', but works if unconfigured,
;; and for INFO_TARGETS rather than INFO_INSTALL.
(with-temp-buffer
(insert-file-contents (expand-file-name "doc/misc/Makefile.in" root))
(search-forward "INFO_TARGETS = ")
(let ((start (point))
res)
;; Should really use expanded value of INFO_TARGETS.
(search-forward "INFO_COMMON = ")
(let ((start (point)))
(end-of-line)
(while (and (looking-back "\\\\")
(zerop (forward-line 1)))
(end-of-line))
(split-string (replace-regexp-in-string
"\\(\\\\\\|\\.info\\)" ""
(buffer-substring start (point)))))))
(append (split-string (replace-regexp-in-string
"\\(\\\\\\|\\.info\\)" ""
(buffer-substring start (point))))
'("efaq-w32")))))
;; TODO report the progress
(defun make-manuals (root &optional type)
"Generate the web manuals for the Emacs webpage.
ROOT should be the root of an Emacs source tree.
Interactively with a prefix argument, prompt for TYPE.
Optional argument TYPE is type of output (nil means all)."
(interactive (let ((root (read-directory-name "Emacs root directory: "
@ -232,6 +184,7 @@ Optional argument TYPE is type of output (nil means all)."
(ps-dir (expand-file-name "ps" dest))
(pdf-dir (expand-file-name "pdf" dest))
(emacs (expand-file-name "doc/emacs/emacs.texi" root))
(emacs-xtra (expand-file-name "doc/emacs/emacs-xtra.texi" root))
(elisp (expand-file-name "doc/lispref/elisp.texi" root))
(eintr (expand-file-name "doc/lispintro/emacs-lisp-intro.texi" root))
(misc (manual-misc-manuals root)))
@ -245,10 +198,14 @@ Optional argument TYPE is type of output (nil means all)."
(manual-html-node emacs (expand-file-name "emacs" html-node-dir)))
(if (member type '(nil "emacs" "emacs-mono"))
(manual-html-mono emacs (expand-file-name "emacs.html" html-mono-dir)))
(if (member type '(nil "emacs" "emacs-pdf" "pdf"))
(manual-pdf emacs (expand-file-name "emacs.pdf" pdf-dir)))
(if (member type '(nil "emacs" "emacs-ps" "ps"))
(manual-ps emacs (expand-file-name "emacs.ps" ps-dir)))
(when (member type '(nil "emacs" "emacs-pdf" "pdf"))
(manual-pdf emacs (expand-file-name "emacs.pdf" pdf-dir))
;; emacs-xtra exists only in pdf/ps format.
;; In other formats it is included in the Emacs manual.
(manual-pdf emacs-xtra (expand-file-name "emacs-xtra.pdf" pdf-dir)))
(when (member type '(nil "emacs" "emacs-ps" "ps"))
(manual-ps emacs (expand-file-name "emacs.ps" ps-dir))
(manual-ps emacs-xtra (expand-file-name "emacs-xtra.ps" ps-dir)))
(if (member type '(nil "elisp" "elisp-node"))
(manual-html-node elisp (expand-file-name "elisp" html-node-dir)))
(if (member type '(nil "elisp" "elisp-mono"))
@ -277,7 +234,7 @@ Optional argument TYPE is type of output (nil means all)."
(defconst manual-meta-string
"<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">
<link rev=\"made\" href=\"mailto:webmasters@gnu.org\">
<link rev=\"made\" href=\"mailto:bug-gnu-emacs@gnu.org\">
<link rel=\"icon\" type=\"image/png\" href=\"/graphics/gnu-head-mini.png\">
<meta name=\"ICBM\" content=\"42.256233,-71.006581\">
<meta name=\"DC.title\" content=\"gnu.org\">\n\n")
@ -287,9 +244,8 @@ Optional argument TYPE is type of output (nil means all)."
(defun manual-misc-html (name root html-node-dir html-mono-dir)
;; Hack to deal with the cases where .texi creates a different .info.
;; Blech. TODO Why not just rename the .texi files?
;; Blech. TODO Why not just rename the .texi (or .info) files?
(let* ((texiname (cond ((equal name "ccmode") "cc-mode")
((equal name "efaq") "faq")
(t name)))
(texi (expand-file-name (format "doc/misc/%s.texi" texiname) root)))
(manual-html-node texi (expand-file-name name html-node-dir))
@ -318,6 +274,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)))
@ -327,7 +284,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"
@ -358,13 +315,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
@ -376,6 +334,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)
@ -385,119 +344,298 @@ 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.
(defconst make-manuals-dist-output-variables
`(("@\\(top_\\)?srcdir@" . ".") ; top_srcdir is wrong, but not used
("^\\(\\(?:texinfo\\|buildinfo\\|emacs\\)dir *=\\).*" . "\\1 .")
("^\\(clean:.*\\)" . "\\1 infoclean")
("@MAKEINFO@" . "makeinfo")
("@MKDIR_P@" . "mkdir -p")
("@INFO_EXT@" . ".info")
("@INFO_OPTS@" . "")
("@SHELL@" . "/bin/bash")
("@prefix@" . "/usr/local")
("@datarootdir@" . "${prefix}/share")
("@datadir@" . "${datarootdir}")
("@PACKAGE_TARNAME@" . "emacs")
("@docdir@" . "${datarootdir}/doc/${PACKAGE_TARNAME}")
("@\\(dvi\\|html\\|pdf\\|ps\\)dir@" . "${docdir}")
("@GZIP_PROG@" . "gzip")
("@INSTALL@" . "install -c")
("@INSTALL_DATA@" . "${INSTALL} -m 644")
("@configure_input@" . ""))
"Alist of (REGEXP . REPLACEMENT) pairs for `make-manuals-dist'.")
(defun make-manuals-dist--1 (root type)
"Subroutine of `make-manuals-dist'."
(let* ((dest (expand-file-name "manual" root))
(default-directory (progn (make-directory dest t)
(file-name-as-directory dest)))
(version (with-temp-buffer
(insert-file-contents "../doc/emacs/emacsver.texi")
(re-search-forward "@set EMACSVER \\([0-9.]+\\)")
(match-string 1)))
(stem (format "emacs-%s-%s" (if (equal type "emacs") "manual" type)
version))
(tarfile (format "%s.tar" stem)))
(message "Doing %s..." type)
(if (file-directory-p stem)
(delete-directory stem t))
(make-directory stem)
(copy-file "../doc/misc/texinfo.tex" stem)
(or (equal type "emacs") (copy-file "../doc/emacs/emacsver.texi" stem))
(dolist (file (directory-files (format "../doc/%s" type) t))
(if (or (string-match-p "\\(\\.texi\\'\\|/README\\'\\)" file)
(and (equal type "lispintro")
(string-match-p "\\.\\(eps\\|pdf\\)\\'" file)))
(copy-file file stem)))
(with-temp-buffer
(let ((outvars make-manuals-dist-output-variables))
(push `("@version@" . ,version) outvars)
(insert-file-contents (format "../doc/%s/Makefile.in" type))
(dolist (cons outvars)
(while (re-search-forward (car cons) nil t)
(replace-match (cdr cons) t))
(goto-char (point-min))))
(let (ats)
(while (re-search-forward "@[a-zA-Z_]+@" nil t)
(setq ats t)
(message "Unexpanded: %s" (match-string 0)))
(if ats (error "Unexpanded configure variables in Makefile?")))
(write-region nil nil (expand-file-name (format "%s/Makefile" stem))
nil 'silent))
(call-process "tar" nil nil nil "-cf" tarfile stem)
(delete-directory stem t)
(message "...created %s" tarfile)))
;; Does anyone actually use these tarfiles?
(defun make-manuals-dist (root &optional type)
"Make the standalone manual source tarfiles for the Emacs webpage.
ROOT should be the root of an Emacs source tree.
Interactively with a prefix argument, prompt for TYPE.
Optional argument TYPE is type of output (nil means all)."
(interactive (let ((root (read-directory-name "Emacs root directory: "
source-directory nil t)))
(list root
(if current-prefix-arg
(completing-read
"Type: "
'("emacs" "lispref" "lispintro" "misc"))))))
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
(user-error "%s doesn't seem to be the root of an Emacs source tree" root))
(dolist (m '("emacs" "lispref" "lispintro" "misc"))
(if (member type (list nil m))
(make-manuals-dist--1 root m))))
;; 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
@ -509,14 +647,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\\)")))
@ -525,13 +663,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-message "Missing type in: `%s'" form)))
(setq ver (car (cdr-safe (memq :version form))))
(if (equal "group" (match-string 2))
;; Group :version could be old.
@ -545,7 +689,7 @@ If optional argument OLD is non-nil, also scan for defvars."
(setq grp (car (cdr-safe grp))) ; (quote foo) -> foo
(setq ver (assq grp glist))))
(setq alist (cons (cons var ver) alist))))
(if form (message "Malformed defcustom: `%s'" form)))))
(if form (format-message "Malformed defcustom: `%s'" form)))))
(message "%sdone" m)
alist))
@ -567,7 +711,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))
@ -583,34 +727,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
@ -635,7 +781,8 @@ 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 (substitute-command-keys
"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-2015 Free Software Foundation, Inc.
This file is part of GNU Emacs.

File diff suppressed because it is too large Load diff

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-2015 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-2015 Free Software Foundation, Inc.
;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
;; Keywords: maint
@ -140,11 +140,11 @@ are both lists of revnos, in oldest-first order."
(setq str (substring str (match-end 0))))
(when (string-match "[.!;, ]+\\'" str)
(setq str (substring str 0 (match-beginning 0))))
(let ((help-form "\
(let ((help-form (substitute-command-keys "\
Type `y' to skip this revision,
`N' to include it and go on to the next revision,
`n' to not skip, but continue to search this log entry for skip regexps,
`q' to quit merging."))
`q' to quit merging.")))
(pcase (save-excursion
(read-char-choice
(format "%s: Skip (y/n/N/q/%s)? " str

View file

@ -1,2 +0,0 @@
*.map
*.el

View file

@ -1,324 +0,0 @@
# Makefile -- Makefile to generate charset maps in etc/charsets.
# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
#
# 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:
# If your system doesn't have the directory /usr/share/i18n/charmaps,
# get the source of the latest glibc, gzip all the charmap files in
# the directory "localedate/charmaps", and set the variable
# GLIBC_CHARMAPS to that directory.
GLIBC_CHARMAPS=/usr/share/i18n/charmaps
CHARSETS = ${ISO8859} ${IBM} ${CODEPAGE} ${CJK} ${MISC} ${MULE}
# Note: We can not prepend "ISO-" to these map files because of file
# name limits on DOS.
ISO8859 = \
8859-2.map 8859-3.map 8859-4.map 8859-5.map 8859-6.map 8859-7.map \
8859-8.map 8859-9.map 8859-10.map 8859-11.map 8859-13.map 8859-14.map \
8859-15.map 8859-16.map
IBM = \
IBM037.map IBM038.map \
IBM256.map IBM273.map IBM274.map IBM275.map IBM277.map IBM278.map \
IBM280.map IBM281.map IBM284.map IBM285.map IBM290.map IBM297.map \
IBM420.map IBM423.map IBM424.map IBM437.map IBM500.map IBM850.map \
IBM851.map IBM852.map IBM855.map IBM856.map IBM857.map IBM860.map \
IBM861.map IBM862.map IBM863.map IBM864.map IBM865.map IBM866.map \
IBM868.map IBM869.map IBM870.map IBM871.map IBM874.map IBM875.map \
IBM880.map IBM891.map IBM903.map IBM904.map IBM905.map IBM918.map \
IBM1004.map IBM1026.map IBM1047.map
CODEPAGE = \
CP737.map CP775.map CP1125.map\
CP1250.map CP1251.map CP1252.map CP1253.map CP1254.map \
CP1255.map CP1256.map CP1257.map CP1258.map \
CP10007.map \
CP720.map CP858.map
CJK = GB2312.map GBK.map GB180302.map GB180304.map \
BIG5.map BIG5-HKSCS.map\
CNS-1.map CNS-2.map CNS-3.map CNS-4.map CNS-5.map CNS-6.map CNS-7.map \
CNS-F.map \
JISX0201.map JISX0208.map JISX0212.map JISX2131.map JISX2132.map \
JISC6226.map CP932-2BYTE.map JISX213A.map\
KSC5601.map KSC5636.map JOHAB.map
MISC = KOI-8.map KOI8-R.map KOI8-U.map KOI8-T.map ALTERNATIVNYJ.map \
MIK.map PTCP154.map \
TIS-620.map VISCII.map VSCII.map VSCII-2.map\
KA-PS.map KA-ACADEMY.map \
HP-ROMAN8.map NEXTSTEP.map MACINTOSH.map EBCDICUK.map EBCDICUS.map \
stdenc.map symbol.map \
CP949-2BYTE.map \
BIG5-1.map BIG5-2.map
# Emacs-mule charsets.
MULE = MULE-ethiopic.map MULE-ipa.map MULE-is13194.map \
MULE-sisheng.map MULE-tibetan.map \
MULE-lviscii.map MULE-uviscii.map
TRANS_TABLE = cp51932.el eucjp-ms.el
SED_SCRIPT = jisx2131-filter
all: ${CHARSETS} ${TRANS_TABLE}
AWK = gawk
# Rules for each charset
VSCII.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[0-9a-f].[ ]/' GLIBC-1 compact.awk > $@
VSCII-2.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[2-7a-f].[ ]/' GLIBC-1 compact.awk \
| sed 's/0x20-0x7F.*/0x00-0x7F 0x0000/' > $@
ALTERNATIVNYJ.map: IBM866.map
# Generating $@...
@echo "# Modified from IBM866.map according to the chart at" > $@
@echo "# http://www.cyrillic.com/ref/cyrillic/koi-8alt.html," >> $@
@echo "# with guesses for the Unicodes of the glyphs." >> $@
@sed -e '1 d' \
-e '/0xF2/ s/ .*/ 0x2019/' \
-e '/0xF3/ s/ .*/ 0x2018/' \
-e '/0xF4/ s/ .*/ 0x0301/' \
-e '/0xF5/ s/ .*/ 0x0300/' \
-e '/0xF6/ s/ .*/ 0x203A/' \
-e '/0xF7/ s/ .*/ 0x2039/' \
-e '/0xF8/ s/ .*/ 0x2191/' \
-e '/0xF9/ s/ .*/ 0x2193/' \
-e '/0xFA/ s/ .*/ 0x00B1/' \
-e '/0xFB/ s/ .*/ 0x00F7/' < $< >> $@
MIK.map: mapfiles/bulgarian-mik.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '1,$$' CZYBORRA compact.awk > $@
PTCP154.map: mapfiles/PTCP154 mapconv compact.awk
# Generating $@...
@./mapconv $< '/^0x/' IANA compact.awk > $@
stdenc.map: mapfiles/stdenc.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^[0-9A-Fa-f]/' UNICODE compact.awk > $@
symbol.map: mapfiles/symbol.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^[0-9A-Fa-f]/' UNICODE compact.awk > $@
CP720.map: mapfiles/CP720.map
# Generating $@...
@cp $< $@
CP858.map: mapfiles/CP858.map
# Generating $@...
@cp $< $@
CP949-2BYTE.map: ${GLIBC_CHARMAPS}/CP949.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@
GB2312.map: ${GLIBC_CHARMAPS}/GB2312.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@
GBK.map: ${GLIBC_CHARMAPS}/GBK.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@
GB180302.map: ${GLIBC_CHARMAPS}/GB18030.gz mapconv gb180302.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x..\/x..[ ]/' GLIBC-2 gb180302.awk > $@
GB180304.map: GB180302.map gb180304.awk
# Generating $@...
@$(AWK) -f gb180304.awk < $< > $@
JISX0201.map: ${GLIBC_CHARMAPS}/JIS_X0201.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[0-9]/' GLIBC-1 compact.awk > $@
@echo "# Generated by hand" >> $@
@echo "0xA1-0xDF 0xFF61" >> $@
JISX0208.map: ${GLIBC_CHARMAPS}/EUC-JP.gz mapconv
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \
| sed 's/0x2015/0x2014/' > $@
JISX0212.map: ${GLIBC_CHARMAPS}/EUC-JP.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 compact.awk > $@
jisx2131-filter: mapfiles/JISX213A.map
@sed -n -e '/^#/d' -e 's,.*0x\([0-9A-Z]*\)$$,/0x0*\1$$/d,p' < $< > $@
JISX2131.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz mapconv jisx2131-filter
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \
| sed -f jisx2131-filter \
| sed -e 's/0x2015/0x2014/' -e 's/0x2299/0x29BF/' > $@
JISX2132.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz mapconv
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 > $@
JISX213A.map: mapfiles/JISX213A.map
# Generating $@
@cp $< $@
CP932-2BYTE.map: mapfiles/CP932.TXT mapconv cp932.awk
# Generating $@...
@./mapconv $< '/^0x[89A-F][0-9A-F][0-9A-F]/' UNICODE2 cp932.awk > $@
cp51932.el: CP932-2BYTE.map cp51932.awk
@$(AWK) -f cp51932.awk < CP932-2BYTE.map > $@
eucjp-ms.el: ${GLIBC_CHARMAPS}/EUC-JP-MS.gz eucjp-ms.awk
@zcat $< | $(AWK) -f eucjp-ms.awk > $@
JISC6226.map: mapfiles/Uni2JIS mapconv kuten.awk
# Generating $@...
# As Uni2JIS doesn't contain mappings of characters added to Unicode
# recently, we add them manually here (including one correction for
# U+005C vs U+FF3C). These changes are based on bogytech's blog at
# http://bogytech.blogspot.jp/search/label/emacs.
@./mapconv $< '/^[^#].*0-/' YASUOKA kuten.awk \
| sed -e '/0x2140/s/005C/FF3C/' \
-e '$$ a 0x3442 0x3D4E' \
-e '$$ a 0x374E 0x25874' \
-e '$$ a 0x3764 0x28EF6' \
-e '$$ a 0x513D 0x2F80F' \
-e '$$ a 0x7045 0x9724' > $@
KSC5601.map: ${GLIBC_CHARMAPS}/EUC-KR.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@
BIG5.map: ${GLIBC_CHARMAPS}/BIG5.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2 > $@
BIG5-1.map: BIG5.map mapconv big5.awk
# Generating $@...
@echo "# Generated from $<" > $@
@sed -n -e '/0xa140/,/0xc8fe/p' < $< | gawk -f big5.awk >> $@
BIG5-2.map: BIG5.map mapconv big5.awk
# Generating $@...
@echo "# Generated from $<" > $@
@sed -n -e '/0xc940/,$$ p' < $< | gawk -f big5.awk >> $@
BIG5-HKSCS.map: ${GLIBC_CHARMAPS}/BIG5-HKSCS.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[89a-f].\//' GLIBC-2 compact.awk > $@
JOHAB.map: ${GLIBC_CHARMAPS}/JOHAB.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@
CNS-1.map: ${GLIBC_CHARMAPS}/EUC-TW.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@
# CNS-1.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
# # Generating $@...
# @./mapconv $< '/^C1/' KANJI-DATABASE compact.awk > $@
CNS-2.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^C2/' KANJI-DATABASE compact.awk > $@
CNS-3.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^C3/' KANJI-DATABASE compact.awk > $@
CNS-4.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^C4/' KANJI-DATABASE compact.awk > $@
CNS-5.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^C5/' KANJI-DATABASE compact.awk > $@
CNS-6.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^C6/' KANJI-DATABASE compact.awk > $@
CNS-7.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^C7/' KANJI-DATABASE compact.awk > $@
CNS-F.map: ${GLIBC_CHARMAPS}/EUC-TW.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*\/x8e\/xaf/ s,/x8e/xaf,,' GLIBC-2-7 compact.awk > $@
# General target to produce map files for mule charsets.
MULE-%.map: mapfiles/MULE-%.map
# Generating $@...
@cp $< $@
# General target to produce map files for ISO-8859, GEORGIAN, and
# EBCDIC charsets. We can not use the original file name because of
# file name limit on DOS. "KA" is ISO 639 language code for Georgian.
8859-%.map: ${GLIBC_CHARMAPS}/ISO-8859-%.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@
KA-%.map: ${GLIBC_CHARMAPS}/GEORGIAN-%.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@
EBCDIC%.map: ${GLIBC_CHARMAPS}/EBCDIC-%.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@
# General target to produce map files for single-byte charsets.
%.map: ${GLIBC_CHARMAPS}/%.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@
install:
@for f in ${CHARSETS}; do \
if test -r $$f; then \
if ! cmp -s $$f ../../etc/charsets/$$f; then \
echo updating $$f; \
cp $$f ../../etc/charsets; \
fi; \
fi; \
done
@for f in ${TRANS_TABLE}; do \
if test -r $$f; then \
if ! cmp -s $$f ../../lisp/international/$$f; then \
echo updating $$f; \
cp $$f ../../lisp/international; \
fi; \
fi; \
done
# Clear files that are automatically generated.
clean:
rm -f ${CHARSETS} ${TRANS_TABLE} ${SED_SCRIPT}

321
admin/charsets/Makefile.in Normal file
View file

@ -0,0 +1,321 @@
### @configure_input@
# Copyright (C) 2015 Free Software Foundation, Inc.
# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
#
# 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 charset maps in etc/charsets.
SHELL = @SHELL@
AWK = @AWK@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
charsetdir = ${top_srcdir}/etc/charsets
lispintdir = ${top_srcdir}/lisp/international
mapfiledir = ${srcdir}/mapfiles
GLIBC_CHARMAPS = ${srcdir}/glibc
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
# Note: We can not prepend "ISO-" to these map files because of file
# name limits on DOS.
ISO8859 = \
8859-2.map 8859-3.map 8859-4.map 8859-5.map 8859-6.map 8859-7.map \
8859-8.map 8859-9.map 8859-10.map 8859-11.map 8859-13.map 8859-14.map \
8859-15.map 8859-16.map
IBM = \
IBM037.map IBM038.map \
IBM256.map IBM273.map IBM274.map IBM275.map IBM277.map IBM278.map \
IBM280.map IBM281.map IBM284.map IBM285.map IBM290.map IBM297.map \
IBM420.map IBM423.map IBM424.map IBM437.map IBM500.map IBM850.map \
IBM851.map IBM852.map IBM855.map IBM856.map IBM857.map IBM860.map \
IBM861.map IBM862.map IBM863.map IBM864.map IBM865.map IBM866.map \
IBM868.map IBM869.map IBM870.map IBM871.map IBM874.map IBM875.map \
IBM880.map IBM891.map IBM903.map IBM904.map IBM905.map IBM918.map \
IBM1004.map IBM1026.map IBM1047.map
CODEPAGE = \
CP737.map CP775.map CP1125.map\
CP1250.map CP1251.map CP1252.map CP1253.map CP1254.map \
CP1255.map CP1256.map CP1257.map CP1258.map \
CP10007.map \
CP720.map CP858.map
CJK = GB2312.map GBK.map GB180302.map GB180304.map \
BIG5.map BIG5-HKSCS.map\
CNS-1.map CNS-2.map CNS-3.map CNS-4.map CNS-5.map CNS-6.map CNS-7.map \
CNS-F.map \
JISX0201.map JISX0208.map JISX0212.map JISX2131.map JISX2132.map \
JISC6226.map CP932-2BYTE.map JISX213A.map\
KSC5601.map KSC5636.map JOHAB.map
MISC = KOI-8.map KOI8-R.map KOI8-U.map KOI8-T.map ALTERNATIVNYJ.map \
MIK.map PTCP154.map \
TIS-620.map VISCII.map VSCII.map VSCII-2.map\
KA-PS.map KA-ACADEMY.map \
HP-ROMAN8.map NEXTSTEP.map MACINTOSH.map EBCDICUK.map EBCDICUS.map \
stdenc.map symbol.map \
CP949-2BYTE.map \
BIG5-1.map BIG5-2.map
# Emacs-mule charsets.
MULE = MULE-ethiopic.map MULE-ipa.map MULE-is13194.map \
MULE-sisheng.map MULE-tibetan.map \
MULE-lviscii.map MULE-uviscii.map
SED_SCRIPT = jisx2131-filter
TRANS_TABLE = cp51932.el eucjp-ms.el
TRANS_TABLE := $(addprefix ${lispintdir}/,${TRANS_TABLE})
CHARSETS = ${ISO8859} ${IBM} ${CODEPAGE} ${CJK} ${MISC} ${MULE}
CHARSETS := $(addprefix ${charsetdir}/,${CHARSETS})
.PHONY: all
all: ${srcdir}/charsets.stamp
${srcdir}/charsets.stamp: ${CHARSETS} ${TRANS_TABLE}
${AM_V_GEN}echo timestamp > $@
## Rules for each charset.
mapconv = ${srcdir}/mapconv
run_mapconv = AWK=${AWK} ${srcdir}/mapconv
big5 = ${srcdir}/big5.awk
compact = ${srcdir}/compact.awk
cp51932 = ${srcdir}/cp51932.awk
cp932 = ${srcdir}/cp932.awk
eucjp_ms = ${srcdir}/eucjp-ms.awk
gb180302 = ${srcdir}/gb180302.awk
gb180304 = ${srcdir}/gb180304.awk
kuten = ${srcdir}/kuten.awk
## Short aliases, eg VSCII.map = ${charsetdir}/VSCII.map
define map_template
.PHONY: $(notdir ${1})
$(notdir ${1}): ${1}
endef
$(foreach mfile,${CHARSETS} ${TRANS_TABLE},$(eval $(call map_template,$(mfile))))
${charsetdir}/VSCII.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[0-9a-f].[ ]/' GLIBC-1 ${compact} > $@
${charsetdir}/VSCII-2.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[2-7a-f].[ ]/' GLIBC-1 ${compact} \
| sed 's/0x20-0x7F.*/0x00-0x7F 0x0000/' > $@
${charsetdir}/ALTERNATIVNYJ.map: ${charsetdir}/IBM866.map
${AM_V_GEN}(echo "# Modified from $(notdir $<) according to the chart at" && \
echo "# http://www.cyrillic.com/ref/cyrillic/koi-8alt.html," && \
echo "# with guesses for the Unicodes of the glyphs." && \
sed -e '1 d' \
-e '/0xF2/ s/ .*/ 0x2019/' \
-e '/0xF3/ s/ .*/ 0x2018/' \
-e '/0xF4/ s/ .*/ 0x0301/' \
-e '/0xF5/ s/ .*/ 0x0300/' \
-e '/0xF6/ s/ .*/ 0x203A/' \
-e '/0xF7/ s/ .*/ 0x2039/' \
-e '/0xF8/ s/ .*/ 0x2191/' \
-e '/0xF9/ s/ .*/ 0x2193/' \
-e '/0xFA/ s/ .*/ 0x00B1/' \
-e '/0xFB/ s/ .*/ 0x00F7/' < $< ) > $@
${charsetdir}/MIK.map: ${mapfiledir}/bulgarian-mik.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '1,$$' CZYBORRA ${compact} > $@
${charsetdir}/PTCP154.map: ${mapfiledir}/PTCP154 ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^0x/' IANA ${compact} > $@
${charsetdir}/stdenc.map: ${mapfiledir}/stdenc.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^[0-9A-Fa-f]/' UNICODE ${compact} > $@
${charsetdir}/symbol.map: ${mapfiledir}/symbol.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^[0-9A-Fa-f]/' UNICODE ${compact} > $@
${charsetdir}/CP720.map: ${mapfiledir}/CP720.map
${AM_V_GEN}cp $< $@
${charsetdir}/CP858.map: ${mapfiledir}/CP858.map
${AM_V_GEN}cp $< $@
${charsetdir}/CP949-2BYTE.map: ${GLIBC_CHARMAPS}/CP949.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 ${compact} > $@
${charsetdir}/GB2312.map: ${GLIBC_CHARMAPS}/GB2312.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 ${compact} > $@
${charsetdir}/GBK.map: ${GLIBC_CHARMAPS}/GBK.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 ${compact} > $@
${charsetdir}/GB180302.map: ${GLIBC_CHARMAPS}/GB18030.gz ${mapconv} ${gb180302}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x..\/x..[ ]/' GLIBC-2 ${gb180302} > $@
${charsetdir}/GB180304.map: ${charsetdir}/GB180302.map ${gb180304}
${AM_V_GEN}$(AWK) -f ${gb180304} < $< > $@
${charsetdir}/JISX0201.map: ${GLIBC_CHARMAPS}/JIS_X0201.gz ${mapconv} ${compact}
${AM_V_GEN}(${mapconv} $< '/^<.*[ ]\/x[0-9]/' GLIBC-1 ${compact} && \
echo "# Generated by hand" && \
echo "0xA1-0xDF 0xFF61" ) > $@
${charsetdir}/JISX0208.map: ${GLIBC_CHARMAPS}/EUC-JP.gz ${mapconv}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \
| sed 's/0x2015/0x2014/' > $@
${charsetdir}/JISX0212.map: ${GLIBC_CHARMAPS}/EUC-JP.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 ${compact} > $@
jisx2131-filter: ${mapfiledir}/JISX213A.map
${AM_V_at}sed -n -e '/^#/d' -e 's,.*0x\([0-9A-Z]*\)$$,/0x0*\1$$/d,p' < $< > $@
${charsetdir}/JISX2131.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz ${mapconv} jisx2131-filter
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \
| sed -f jisx2131-filter \
| sed -e 's/0x2015/0x2014/' -e 's/0x2299/0x29BF/' > $@
${charsetdir}/JISX2132.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz ${mapconv}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 > $@
${charsetdir}/JISX213A.map: ${mapfiledir}/JISX213A.map
${AM_V_GEN}cp $< $@
${charsetdir}/CP932-2BYTE.map: ${mapfiledir}/CP932.TXT ${mapconv} ${cp932}
${AM_V_GEN}${run_mapconv} $< '/^0x[89A-F][0-9A-F][0-9A-F]/' UNICODE2 ${cp932} > $@
${lispintdir}/cp51932.el: ${charsetdir}/CP932-2BYTE.map ${cp51932}
${AM_V_GEN}$(AWK) -f ${cp51932} < $< > $@
${lispintdir}/eucjp-ms.el: ${GLIBC_CHARMAPS}/EUC-JP-MS.gz ${eucjp_ms}
${AM_V_GEN}gunzip -c $< | $(AWK) -f ${eucjp_ms} > $@
# As Uni2JIS doesn't contain mappings of characters added to Unicode
# recently, we add them manually here (including one correction for
# U+005C vs U+FF3C). These changes are based on bogytech's blog at
# http://bogytech.blogspot.jp/search/label/emacs.
${charsetdir}/JISC6226.map: ${mapfiledir}/Uni2JIS ${mapconv} ${kuten}
${AM_V_GEN}(${run_mapconv} $< '/^[^#].*0-/' YASUOKA ${kuten} \
| sed -e '/0x2140/s/005C/FF3C/' && \
echo '0x3442 0x3D4E' && echo '0x374E 0x25874' && \
echo '0x3764 0x28EF6' && echo '0x513D 0x2F80F' && \
echo '0x7045 0x9724' ) > $@
${charsetdir}/KSC5601.map: ${GLIBC_CHARMAPS}/EUC-KR.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 ${compact} > $@
${charsetdir}/BIG5.map: ${GLIBC_CHARMAPS}/BIG5.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2 > $@
${charsetdir}/BIG5-1.map: ${charsetdir}/BIG5.map ${mapconv} ${big5}
${AM_V_GEN}(echo "# Generated from $(notdir $<)" && \
sed -n -e '/0xa140/,/0xc8fe/p' < $< | $(AWK) -f ${big5} ) > $@
${charsetdir}/BIG5-2.map: ${charsetdir}/BIG5.map ${mapconv} ${big5}
${AM_V_GEN}(echo "# Generated from $(notdir $<)" && \
sed -n -e '/0xc940/,$$ p' < $< | $(AWK) -f ${big5} ) > $@
${charsetdir}/BIG5-HKSCS.map: ${GLIBC_CHARMAPS}/BIG5-HKSCS.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[89a-f].\//' GLIBC-2 ${compact} > $@
${charsetdir}/JOHAB.map: ${GLIBC_CHARMAPS}/JOHAB.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 ${compact} > $@
${charsetdir}/CNS-1.map: ${GLIBC_CHARMAPS}/EUC-TW.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 ${compact} > $@
# ${charsetdir}/CNS-1.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact}
# ${AM_V_GEN}${run_mapconv} $< '/^C1/' KANJI-DATABASE ${compact} > $@
${charsetdir}/CNS-2.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^C2/' KANJI-DATABASE ${compact} > $@
${charsetdir}/CNS-3.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^C3/' KANJI-DATABASE ${compact} > $@
${charsetdir}/CNS-4.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^C4/' KANJI-DATABASE ${compact} > $@
${charsetdir}/CNS-5.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^C5/' KANJI-DATABASE ${compact} > $@
${charsetdir}/CNS-6.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^C6/' KANJI-DATABASE ${compact} > $@
${charsetdir}/CNS-7.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^C7/' KANJI-DATABASE ${compact} > $@
${charsetdir}/CNS-F.map: ${GLIBC_CHARMAPS}/EUC-TW.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*\/x8e\/xaf/ s,/x8e/xaf,,' GLIBC-2-7 ${compact} > $@
# General target to produce map files for mule charsets.
${charsetdir}/MULE-%.map: ${mapfiledir}/MULE-%.map
${AM_V_GEN}cp $< $@
# General target to produce map files for ISO-8859, GEORGIAN, and
# EBCDIC charsets. We can not use the original file name because of
# file name limit on DOS. "KA" is ISO 639 language code for Georgian.
${charsetdir}/8859-%.map: ${GLIBC_CHARMAPS}/ISO-8859-%.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@
${charsetdir}/KA-%.map: ${GLIBC_CHARMAPS}/GEORGIAN-%.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@
${charsetdir}/EBCDIC%.map: ${GLIBC_CHARMAPS}/EBCDIC-%.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@
# General target to produce map files for single-byte charsets.
${charsetdir}/%.map: ${GLIBC_CHARMAPS}/%.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@
.PHONY: clean bootstrap-clean distclean maintainer-clean extraclean
clean:
rm -f ${SED_SCRIPT}
bootstrap-clean: clean
distclean: clean
rm -f Makefile
maintainer-clean: distclean
## Do not remove these files, even in a bootstrap. They rarely change.
extraclean:
rm -f ${CHARSETS} ${TRANS_TABLE} ${srcdir}/charsets.stamp

View file

@ -69,7 +69,7 @@ function decode_hex(str, idx) {
return n;
}
/^\#/ {
/^#/ {
print;
next;
}
@ -119,4 +119,3 @@ END {
printf "0x%04X-0x%04X 0x%04X\n", from_code, to_code, from_unicode;
}
}

View file

@ -31,7 +31,7 @@
# already been mapped to 1 or 3.
BEGIN {
print ";;; cp51932.el -- translation table for CP51932. -*- no-byte-compile: t -*-";
print ";;; cp51932.el -- translation table for CP51932";
print ";;; Automatically generated from CP932-2BYTE.map";
print "(let ((map";
printf " '(;JISEXT<->UNICODE";
@ -52,4 +52,6 @@ END {
print " (setcar x (cdr x)) (setcdr x tmp)))";
print " map)";
print " (define-translation-table 'cp51932-encode map))";
print "";
print "(provide 'cp51932)";
}

View file

@ -24,7 +24,7 @@
# http://home.m05.itscom.net/numa/cde/ucs-conv/appendix.html
# This program reads the mapping file EUC-JP-MS (of glibc) and
# generates the Elisp file eucjp-ms.el that defines two translation
# tables `eucjp-ms-decode' and `eucjp-ms-encode'.
# tables 'eucjp-ms-decode' and 'eucjp-ms-encode'.
BEGIN {
FS = "[ \t][ \t]*"
@ -38,7 +38,7 @@ BEGIN {
JISX0208_FROM2 = "/xf5/xa1";
JISX0212_FROM = "/x8f/xf3/xf3";
print ";;; eucjp-ms.el -- translation table for eucJP-ms. -*- no-byte-compile: t -*-";
print ";;; eucjp-ms.el -- translation table for eucJP-ms";
print ";;; Automatically generated from /usr/share/i18n/charmaps/EUC-JP-MS.gz";
print "(let ((map";
print " '(;JISEXT<->UNICODE";
@ -106,5 +106,6 @@ END {
print " (setcar x (cdr x)) (setcdr x tmp)))";
print " map)";
print " (define-translation-table 'eucjp-ms-encode map))";
print "";
print "(provide 'eucjp-ms)";
}

View file

@ -53,7 +53,7 @@ function decode_hex(str) {
function gb_to_index(gb) {
b0 = int(gb / 256);
b1 = gb % 256;
idx = (((b0 - 129)) * 191 + b1 - 64);
idx = (((b0 - 129)) * 191 + b1 - 64);
# if (b1 >= 128)
# idx--;
return idx
@ -67,7 +67,7 @@ function index_to_gb(idx) {
return (b0 * 256 + b1);
}
/^\#/ {
/^#/ {
print;
next;
}
@ -108,4 +108,3 @@ END {
printf "0x%04X-0x%04X 0x%04X\n",
index_to_gb(from_gb), index_to_gb(to_gb), from_unicode;
}

View file

@ -49,7 +49,7 @@ function decode_hex(str) {
function gb_to_index(gb) {
b0 = int(gb / 256);
b1 = gb % 256;
idx = (((b0 - 129)) * 191 + b1 - 64);
idx = (((b0 - 129)) * 191 + b1 - 64);
# if (b1 >= 127)
# idx--;
return idx
@ -65,7 +65,7 @@ function index_to_gb(idx) {
return sprintf("%02X%02X%02X%02X", b0, b1, b2, b3);
}
/^\#/ {
/^#/ {
print;
next;
}
@ -119,4 +119,3 @@ END {
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
admin/charsets/glibc/GBK.gz Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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