copy of emacs at 75ca15f2a3146b17fde5e2a50ad9102c6108ba7f (emacs-29)
This commit is contained in:
commit
b84cc59f12
4889 changed files with 4831829 additions and 0 deletions
341
.gitignore
vendored
Normal file
341
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,341 @@
|
|||
# Files that Git should ignore in the Emacs source directory.
|
||||
|
||||
# Copyright 2009-2024 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 <https://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).
|
||||
|
||||
|
||||
# Personal customization.
|
||||
.dir-locals-2.el
|
||||
.no-advice-on-failure
|
||||
|
||||
# Built by 'autogen.sh'.
|
||||
/aclocal.m4
|
||||
/configure
|
||||
src/config.in
|
||||
|
||||
# Built by 'configure'.
|
||||
Info.plist
|
||||
InfoPlist.strings
|
||||
Makefile
|
||||
makefile
|
||||
!etc/refcards/Makefile
|
||||
!test/lisp/progmodes/flymake-resources/Makefile
|
||||
!test/manual/etags/Makefile
|
||||
!test/manual/etags/make-src/Makefile
|
||||
!test/manual/indent/Makefile
|
||||
/*.cache
|
||||
/confdefs.h
|
||||
/config.status
|
||||
/configure.lineno
|
||||
/conftest*
|
||||
lib/gnulib.mk
|
||||
src/config.h
|
||||
src/epaths.h
|
||||
src/emacs-module.h
|
||||
|
||||
# C-level sources built by 'make'.
|
||||
lib/alloca.h
|
||||
lib/assert.h
|
||||
lib/byteswap.h
|
||||
lib/dirent.h
|
||||
lib/errno.h
|
||||
lib/execinfo.h
|
||||
lib/fcntl.h
|
||||
lib/getopt.h
|
||||
lib/getopt-cdefs.h
|
||||
lib/gmp.h
|
||||
lib/ieee754.h
|
||||
lib/inttypes.h
|
||||
lib/libgnu.a
|
||||
lib/limits.h
|
||||
lib/malloc/*.gl.h
|
||||
lib/signal.h
|
||||
lib/std*.h
|
||||
!lib/std*.in.h
|
||||
!lib/stdio-impl.h
|
||||
lib/string.h
|
||||
lib/sys/
|
||||
lib/time.h
|
||||
lib/unistd.h
|
||||
src/buildobj.h
|
||||
src/globals.h
|
||||
src/lisp.mk
|
||||
src/verbose.mk
|
||||
|
||||
# Lisp-level sources built by 'make'.
|
||||
*cus-load.el
|
||||
*loaddefs.el
|
||||
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/cedet/semantic/grammar-wy.el
|
||||
lisp/eshell/esh-groups.el
|
||||
lisp/finder-inf.el
|
||||
lisp/leim/ja-dic/
|
||||
leim/small-ja-dic-option
|
||||
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/mh-e/mh-autoloads.el
|
||||
lisp/subdirs.el
|
||||
|
||||
# Dependencies.
|
||||
deps/
|
||||
|
||||
# Logs and temporaries.
|
||||
*.log
|
||||
*.tmp
|
||||
|
||||
# Time stamps.
|
||||
*.stamp
|
||||
stamp_BLD
|
||||
src/gl-stamp
|
||||
|
||||
# Object files and debugging.
|
||||
*.a
|
||||
*.dSYM/
|
||||
*.dll
|
||||
*.core
|
||||
*.elc
|
||||
*.eln
|
||||
*.o
|
||||
*.res
|
||||
*.so
|
||||
*.dylib
|
||||
core
|
||||
core.*[0-9]
|
||||
gmon.out
|
||||
native-lisp/
|
||||
oo/
|
||||
oo-spd/
|
||||
src/*.map
|
||||
vgcore.*[0-9]
|
||||
|
||||
# Tests.
|
||||
test/manual/biditest.txt
|
||||
test/manual/etags/srclist
|
||||
test/manual/etags/regexfile
|
||||
test/manual/etags/ETAGS
|
||||
test/manual/etags/CTAGS
|
||||
test/manual/etags/CTAGS*.sorted
|
||||
test/manual/indent/*.new
|
||||
test/lisp/gnus/mml-sec-resources/random_seed
|
||||
test/lisp/play/fortune-resources/fortunes.dat
|
||||
test/**/*.xml
|
||||
|
||||
# ctags, etags.
|
||||
TAGS
|
||||
!admin/notes/tags
|
||||
|
||||
# GNU global.
|
||||
GPATH
|
||||
GSYMS
|
||||
GRTAGS
|
||||
GTAGS
|
||||
|
||||
# auto-generated compilation database
|
||||
compile_commands.json
|
||||
|
||||
# ccls, a LSP-compliant server for C
|
||||
/.ccls-cache
|
||||
|
||||
# GNU idutils.
|
||||
ID
|
||||
|
||||
# Executables.
|
||||
*.exe
|
||||
a.out
|
||||
lib-src/be-resources
|
||||
lib-src/blessmail
|
||||
lib-src/ctags
|
||||
lib-src/ebrowse
|
||||
lib-src/emacsclient
|
||||
lib-src/etags
|
||||
lib-src/hexl
|
||||
lib-src/make-docfile
|
||||
lib-src/make-fingerprint
|
||||
lib-src/movemail
|
||||
lib-src/profile
|
||||
lib-src/seccomp-filter
|
||||
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/Emacs
|
||||
src/temacs
|
||||
src/dmpstruct.h
|
||||
src/*.pdmp
|
||||
|
||||
# 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/emoji-zwj.el
|
||||
lisp/international/emoji-labels.el
|
||||
lisp/international/eucjp-ms.el
|
||||
lisp/international/uni-*.el
|
||||
lisp/international/idna-mapping.el
|
||||
lisp/language/pinyin.el
|
||||
|
||||
# Documentation.
|
||||
*.aux
|
||||
*.cm
|
||||
*.cms
|
||||
*.cp
|
||||
*.cps
|
||||
*.doc
|
||||
*.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
|
||||
doc/misc/modus-themes.texi
|
||||
doc/misc/org.texi
|
||||
etc/DOC
|
||||
etc/refcards/emacsver.tex
|
||||
gnustmp*
|
||||
/info/
|
||||
|
||||
# Version control and locks.
|
||||
*.orig
|
||||
*.swp
|
||||
*~
|
||||
.#*
|
||||
\#*\#
|
||||
ChangeLog
|
||||
[0-9]*.patch
|
||||
[0-9]*.txt
|
||||
/vc-dwim-log-*
|
||||
|
||||
# Built by 'make install'.
|
||||
etc/emacs.tmpdesktop
|
||||
|
||||
# Built by 'make-dist'.
|
||||
/MANIFEST
|
||||
|
||||
# Distribution directories.
|
||||
/emacs-[1-9]*/
|
||||
|
||||
# Microsoft-related builds and installations.
|
||||
*.in-h
|
||||
_*
|
||||
!lib/_Noreturn.h
|
||||
!m4/_*.m4
|
||||
/bin/
|
||||
/BIN/
|
||||
/data/
|
||||
etc/icons/
|
||||
lib/cxxdefs.h
|
||||
lib/SYS/
|
||||
/libexec/
|
||||
/lock/
|
||||
/README.W32
|
||||
/share/
|
||||
/site-lisp/
|
||||
nt/emacs.rc
|
||||
nt/emacsclient.rc
|
||||
src/gdb.ini
|
||||
/var/
|
||||
|
||||
# Seccomp filter files.
|
||||
lib-src/seccomp-filter.bpf
|
||||
lib-src/seccomp-filter.pfc
|
||||
lib-src/seccomp-filter-exec.bpf
|
||||
lib-src/seccomp-filter-exec.pfc
|
||||
|
||||
# gsettings schema
|
||||
/etc/*.gschema.valid
|
||||
|
||||
# Ignore directory made by admin/make-manuals.
|
||||
/manual/
|
||||
|
||||
# Ignore Finder files on MacOS.
|
||||
.DS_Store
|
||||
|
||||
# Ignore a directory used by dap-mode.
|
||||
.vscode
|
||||
/test/gmp.h
|
||||
|
||||
# GDB history
|
||||
.gdb_history
|
||||
_gdb_history
|
||||
30
BUGS
Normal file
30
BUGS
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
If you think you may have found a bug in GNU Emacs, please read the
|
||||
Bugs section of the Emacs manual for advice on
|
||||
|
||||
(1) how to tell when to report a bug, and
|
||||
(2) how to write a useful bug report and what information it needs to have.
|
||||
|
||||
You can read the Bugs section of the manual from inside Emacs.
|
||||
Start Emacs, and press
|
||||
C-h r (to view the Emacs manual)
|
||||
m Bugs RET (to go to the section on Bugs)
|
||||
Or you can use the standalone Info program:
|
||||
info emacs
|
||||
m Bugs RET
|
||||
(Standalone Info is part of the Texinfo distribution, not part of the
|
||||
Emacs distribution.)
|
||||
|
||||
Printed copies of the Emacs manual can be purchased from the Free
|
||||
Software Foundation's online store at <https://shop.fsf.org/>.
|
||||
|
||||
If necessary, you can read the manual without an info program:
|
||||
|
||||
cat info/emacs* | more "+/^File: emacs.*, Node: Bugs,"
|
||||
|
||||
If you think you may have found a critical security issue that needs
|
||||
to be communicated privately, please contact the GNU Emacs maintainers
|
||||
directly. See admin/MAINTAINERS for their contact details.
|
||||
|
||||
|
||||
Please first check the file etc/PROBLEMS (e.g. with C-h C-p in Emacs) to
|
||||
make sure it isn't a known issue.
|
||||
512
CONTRIBUTE
Normal file
512
CONTRIBUTE
Normal file
|
|
@ -0,0 +1,512 @@
|
|||
Copyright (C) 2006-2024 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
* How developers contribute to GNU Emacs
|
||||
|
||||
Here is how software developers can contribute to Emacs. (Non-developers: see
|
||||
https://www.gnu.org/software/emacs/manual/html_node/emacs/Contributing.html
|
||||
or run the shell command 'info "(emacs)Contributing"'.)
|
||||
|
||||
** The Emacs repository
|
||||
|
||||
Emacs development uses Git on Savannah for its main repository.
|
||||
To configure Git for Emacs development, you can run the following:
|
||||
|
||||
git config --global user.name 'Your Name'
|
||||
git config --global user.email 'your.name@example.com'
|
||||
git config --global transfer.fsckObjects true
|
||||
|
||||
The following shell commands then build and run Emacs from scratch:
|
||||
|
||||
git clone git://git.sv.gnu.org/emacs.git
|
||||
cd emacs
|
||||
./autogen.sh
|
||||
./configure
|
||||
make
|
||||
src/emacs
|
||||
|
||||
For more details, see
|
||||
https://www.emacswiki.org/emacs/GitQuickStartForEmacsDevs and
|
||||
https://www.emacswiki.org/emacs/GitForEmacsDevs or see the file
|
||||
admin/notes/git-workflow.
|
||||
|
||||
** Getting involved with development
|
||||
|
||||
Discussion about Emacs development takes place on emacs-devel@gnu.org.
|
||||
You can subscribe to the emacs-devel@gnu.org mailing list.
|
||||
If you want to get only the important mails (for things like
|
||||
feature freezes), choose to receive only the 'emacs-announce' topic
|
||||
(although so far this feature has not been well or consistently used).
|
||||
See https://lists.gnu.org/mailman/listinfo/emacs-devel for mailing list
|
||||
instructions and archives. You can develop and commit changes in your
|
||||
own copy of the repository, and discuss proposed changes on the
|
||||
mailing list. Frequent contributors to Emacs can request write access
|
||||
there.
|
||||
|
||||
Bug reports and fixes, feature requests and patches/implementations
|
||||
should be sent to bug-gnu-emacs@gnu.org, the bug/feature list. This
|
||||
is coupled to the https://debbugs.gnu.org tracker. It is best to use
|
||||
the command 'M-x report-emacs-bug RET' to report issues to the tracker
|
||||
(described below). Be prepared to receive comments and requests for
|
||||
changes in your patches, following your submission.
|
||||
|
||||
The Savannah info page https://savannah.gnu.org/mail/?group=emacs
|
||||
describes how to subscribe to the mailing lists, or see the list
|
||||
archives.
|
||||
|
||||
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, and makes sure the
|
||||
format and whitespace are not munged in transit by the various mail
|
||||
agents. To send just one such patch without additional remarks, it is
|
||||
also possible to use a command like
|
||||
|
||||
git send-email --to=bug-gnu-emacs@gnu.org 0001-DESCRIPTION.patch
|
||||
|
||||
However, we prefer the 'git format-patch' method with attachment, as
|
||||
doing so delivers patches in the correct and easily-recognizable format
|
||||
more reliably, and makes the job of applying the patches easier and less
|
||||
error-prone. It also allows sending patches whose author is someone
|
||||
other than the email sender.
|
||||
|
||||
Once the cumulative amount of your submissions exceeds a dozen or so
|
||||
lines of non-trivial changes, we will need you to assign to the FSF
|
||||
the copyright for your contributions. (To see how many lines were
|
||||
non-trivially changed, count only added and modified lines in the
|
||||
patched code. Consider an added or changed line non-trivial if it
|
||||
includes at least one identifier, string, or substantial comment.)
|
||||
In most cases, to start the assignment process you should download
|
||||
https://git.savannah.gnu.org/cgit/gnulib.git/plain/doc/Copyright/request-assign.future
|
||||
and return the completed information to the address at the top.
|
||||
(There are other assignment options, but they are much less commonly used.)
|
||||
If you have questions about the assignment process, you can ask the
|
||||
address listed on the form, and/or emacs-devel@gnu.org.
|
||||
|
||||
** Issue tracker (a.k.a. "bug tracker")
|
||||
|
||||
The Emacs issue tracker at https://debbugs.gnu.org lets you view bug
|
||||
reports and search the database for bugs matching several criteria.
|
||||
Messages posted to the bug-gnu-emacs@gnu.org mailing list, mentioned
|
||||
above, are recorded by the tracker with the corresponding
|
||||
bugs/issues. If a message to the bug tracker contains a patch, please
|
||||
include the string "[PATCH]" in the subject of the message in order to
|
||||
let the bug tracker tag the bug properly.
|
||||
|
||||
GNU ELPA has a 'debbugs' package that allows accessing the tracker
|
||||
database from Emacs.
|
||||
|
||||
Bugs needs regular attention. A large backlog of bugs is
|
||||
disheartening to the developers, and a culture of ignoring bugs is
|
||||
harmful to users, who expect software that works. Bugs have to be
|
||||
regularly looked at and acted upon. Not all bugs are critical, but at
|
||||
the least, each bug needs to be regularly re-reviewed to make sure it
|
||||
is still reproducible.
|
||||
|
||||
The process of going through old or new bugs and acting on them is
|
||||
called bug triage. This process is described in the file
|
||||
admin/notes/bug-triage.
|
||||
|
||||
** Documenting your changes
|
||||
|
||||
Any change that matters to end-users should have an entry in etc/NEWS.
|
||||
Try to start each NEWS entry with a sentence that summarizes the entry
|
||||
and takes just one line -- this will allow reading NEWS in Outline
|
||||
mode after hiding the body of each entry.
|
||||
|
||||
Doc-strings should be updated together with the code.
|
||||
|
||||
New defcustom's and defface's should always have a ':version' tag
|
||||
stating the first Emacs version in which they will appear. Likewise
|
||||
with defcustom's or defface's whose value is changed -- update their
|
||||
':version' tag.
|
||||
|
||||
Think about whether your change requires updating the manuals. If you
|
||||
know it does not, mark the NEWS entry with "---" before the entry. If
|
||||
you know that *all* the necessary documentation updates have been made
|
||||
as part of your changes or those by others, mark the entry with "+++".
|
||||
Otherwise, do not mark it.
|
||||
|
||||
If your change requires updating the manuals to document new
|
||||
functions/commands/variables/faces, then use the proper Texinfo
|
||||
command to index them; for instance, use @vindex for variables and
|
||||
@findex for functions/commands. For the full list of predefined indices, see
|
||||
https://www.gnu.org/software/texinfo/manual/texinfo/html_node/Predefined-Indices.html
|
||||
or run the shell command 'info "(texinfo)Predefined Indices"'.
|
||||
|
||||
We prefer American English both in doc strings and in the manuals.
|
||||
That includes both spelling (e.g., "behavior", not "behaviour") and
|
||||
the convention of leaving 2 spaces between sentences.
|
||||
|
||||
For more specific tips on Emacs's doc style, see
|
||||
https://www.gnu.org/software/emacs/manual/html_node/elisp/Documentation-Tips.html
|
||||
Use 'checkdoc' to check for documentation errors before submitting a patch.
|
||||
|
||||
** Testing your changes
|
||||
|
||||
Please test your changes before committing them or sending them to the
|
||||
list. If possible, add a new test along with any bug fix or new
|
||||
functionality you commit (of course, some changes cannot be easily
|
||||
tested).
|
||||
|
||||
Emacs uses ERT, Emacs Lisp Regression Testing, for testing. See
|
||||
https://www.gnu.org/software/emacs/manual/html_node/ert/
|
||||
or run 'info "(ert)"' for more information on writing and running
|
||||
tests.
|
||||
|
||||
If your test lasts longer than some few seconds, mark it in its
|
||||
'ert-deftest' definition with ":tags '(:expensive-test)".
|
||||
|
||||
To run tests on the entire Emacs tree, run "make check" from the
|
||||
top-level directory. Most tests are in the directory "test/". From
|
||||
the "test/" directory, run "make <filename>" to run the tests for
|
||||
<filename>.el(c). See "test/README" for more information.
|
||||
|
||||
If you're making changes that involve the Emacs build system, please
|
||||
test 'out-of-tree' builds as well, i.e.:
|
||||
|
||||
mkdir emacs-build
|
||||
cd emacs-build
|
||||
../path-to-emacs-sources/configure
|
||||
make
|
||||
|
||||
** Commit messages
|
||||
|
||||
Ordinarily, a changeset you commit should contain a description of the
|
||||
changes in its commit message and should not touch the repository's
|
||||
ChangeLog files. Here is an example 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.
|
||||
|
||||
Occasionally, commit messages are collected and prepended to a
|
||||
generated ChangeLog file, where they can be corrected. It saves time
|
||||
to get them right the first time, so here are guidelines for
|
||||
formatting them:
|
||||
|
||||
- Start with a single unindented summary line explaining the change;
|
||||
do not end this line with a period. If possible, try to keep the
|
||||
summary line to 50 characters or fewer; this is for compatibility
|
||||
with certain Git commands that print that line in width-constrained
|
||||
contexts.
|
||||
|
||||
If the summary line starts with a semicolon and a space "; ", the
|
||||
commit message will be skipped and not added to the generated
|
||||
ChangeLog file. Use this for minor commits that do not need to be
|
||||
mentioned in the ChangeLog file, such as changes in etc/NEWS, typo
|
||||
fixes, etc.
|
||||
|
||||
- After the summary line, there should be an empty line.
|
||||
|
||||
- Unindented ChangeLog entries normally come next. However, if the
|
||||
commit couldn't be properly summarized in the brief summary line,
|
||||
you can put a paragraph (after the empty line and before the
|
||||
individual ChangeLog entries) that further describes the commit.
|
||||
|
||||
- Lines in ChangeLog entries should preferably be not longer than 63
|
||||
characters, and must not exceed 78 characters, unless they consist
|
||||
of a single word of at most 140 characters; this 78/140 limit is
|
||||
enforced by a commit hook.
|
||||
|
||||
- If only a single file is changed, the summary line can be the normal
|
||||
first line of a ChangeLog entry (starting with the asterisk). Then
|
||||
there will be no individual ChangeLog entries beyond the one in the
|
||||
summary line.
|
||||
|
||||
- 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)".
|
||||
|
||||
- When citing URLs, prefer https: to http: when either will do. In
|
||||
particular, gnu.org and fsf.org URLs should start with "https:".
|
||||
|
||||
- Commit messages should contain only printable UTF-8 characters.
|
||||
However, we ask that non-ASCII characters be used only if strictly
|
||||
necessary, not just for aesthetic purposes.
|
||||
|
||||
- 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 following ChangeLog entries.
|
||||
|
||||
- Emacs follows the GNU coding standards for ChangeLog entries: see
|
||||
https://www.gnu.org/prep/standards/html_node/Change-Logs.html or run
|
||||
'info "(standards)Change Logs"'. One exception is that commits
|
||||
still sometimes quote `like-this' (as the standards used to
|
||||
recommend) rather than 'like-this' or ‘like this’ (as they do now),
|
||||
as `...' is so widely used elsewhere in Emacs.
|
||||
|
||||
- Some commenting rules in the GNU coding standards 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). See
|
||||
https://www.gnu.org/prep/standards/html_node/Comments.html
|
||||
or run 'info "(standards)Comments"'. American English is preferred
|
||||
in Emacs; that includes spelling and leaving 2 blanks between
|
||||
sentences.
|
||||
|
||||
The ChangeLog entries 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/menu-bar.el (clipboard-yank, clipboard-kill-ring-save)
|
||||
(clipboard-kill-region):
|
||||
* lisp/eshell/esh-io.el (eshell-virtual-targets)
|
||||
(eshell-clipboard-append):
|
||||
Replace option gui-select-enable-clipboard with
|
||||
select-enable-clipboard; renamed October 2014. (Bug#25145)
|
||||
|
||||
(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 doing only that.
|
||||
|
||||
One way to identify revisions is by quoting their summary line.
|
||||
Prefixing the summary with the commit date can give useful context
|
||||
(use 'git show -s "--pretty=format:%cd \"%s\"" --date=short HASH' to
|
||||
produce that). Often, "my previous commit" will suffice.
|
||||
|
||||
- There is no need to mention files such as NEWS and MAINTAINERS, or
|
||||
to indicate regeneration of files such as 'lib/gnulib.mk', in the
|
||||
ChangeLog entry. "There is no need" means you don't have to, but
|
||||
you can if you want to.
|
||||
|
||||
** Generating ChangeLog entries
|
||||
|
||||
- If you use Emacs VC, you can use 'C-c C-w' to generate formatted
|
||||
blank ChangeLog entries from the diff being committed, then use
|
||||
'M-q' to combine and fill them. See 'info "(emacs) Log Buffer"'.
|
||||
|
||||
- If you use the third-party package Magit, you can use
|
||||
'magit-generate-changelog' from the commit message buffer.
|
||||
See also 'magit-add-change-log-entry' and
|
||||
'magit-add-change-log-entry-other-window'.
|
||||
|
||||
- Alternatively, you can use Emacs functions for ChangeLog files; see
|
||||
https://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html
|
||||
or run 'info "(emacs)Change Log Commands"'.
|
||||
|
||||
To format ChangeLog entries with Emacs VC, 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 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.
|
||||
|
||||
- Instead of Emacs VC, 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.
|
||||
|
||||
** Committing your changes.
|
||||
|
||||
When you commit changes, Git invokes several scripts that test the
|
||||
commit for validity, and may abort the commit if some of the tests
|
||||
fail. These scripts live in the '.git/hooks/' subdirectory of the
|
||||
top-level directory of the repository, and they perform the following
|
||||
tests:
|
||||
|
||||
- commit log message must not be empty;
|
||||
- the first line of the commit log message doesn't start with
|
||||
whitespace characters;
|
||||
- the second line of the commit log message must be empty;
|
||||
- commit log message should include only valid printable ASCII and
|
||||
UTF-8 characters;
|
||||
- commit log message lines must be shorter than 79 characters, unless
|
||||
a line consists of a single long word, in which case that word can
|
||||
be up to 140 characters long;
|
||||
- there shouldn't be any "Signed-off-by:" tags in the commit log
|
||||
message, and "git commit" should not be invoked with the '-s' option
|
||||
(which automatically adds "Signed-off-by:");
|
||||
- if the commit adds new files, the file names must not begin with
|
||||
'-' and must consist of ASCII letters, digits, and characters of the
|
||||
set [-+./_];
|
||||
- the changes don't include unresolved merge conflict markers;
|
||||
- the changes don't introduce whitespace errors: trailing whitespace,
|
||||
lines that include nothing but whitespace characters, and indented
|
||||
lines where a SPC character is immediately followed by a TAB in the
|
||||
line's initial indentation
|
||||
|
||||
** Committing changes by others
|
||||
|
||||
If committing changes written by someone else, commit in their name,
|
||||
not yours. You can use 'git commit --author="AUTHOR"' to specify a
|
||||
change's author. When using Emacs VC to commit, the author can be
|
||||
specified in the log-edit buffer by adding an "Author: AUTHOR" header
|
||||
line (set 'log-edit-setup-add-author' non-nil to have this header line
|
||||
added automatically). Note that the validity checks described in the
|
||||
previous section are still applied, so you will have to correct any
|
||||
problems they uncover in the changes submitted by others.
|
||||
|
||||
** Branches
|
||||
|
||||
Future development normally takes place on the master branch.
|
||||
Sometimes specialized features are developed on other branches before
|
||||
possibly being merged to the master. Release branches are named
|
||||
"emacs-NN" where NN is the major version number, and are mainly
|
||||
intended for more-conservative changes such as bug fixes. Typically,
|
||||
collective development is active on the master branch and possibly on
|
||||
the current release branch. Periodically, the current release branch
|
||||
is merged into the master, using the gitmerge function described in
|
||||
admin/notes/git-workflow.
|
||||
|
||||
If you are fixing a bug that exists in the current release, you should
|
||||
generally commit it to the release branch; it will be merged to the
|
||||
master branch later by the gitmerge function. However, when the
|
||||
release branch is for Emacs version NN.2 and later, or when it is for
|
||||
Emacs version NN.1 that is in the very last stages of its pretest,
|
||||
that branch is considered to be in a feature freeze: only bug fixes
|
||||
that are "safe" or are fixing major problems should go to the release
|
||||
branch, the rest should be committed to the master branch. This is so
|
||||
to avoid destabilizing the next Emacs release. If you are unsure
|
||||
whether your bug fix is "safe" enough for the release branch, ask on
|
||||
the emacs-devel mailing list.
|
||||
|
||||
Documentation fixes (in doc strings, in manuals, in NEWS, and in
|
||||
comments) should always go to the release branch, if the documentation
|
||||
to be fixed exists and is relevant to the release-branch codebase.
|
||||
Doc fixes are always considered "safe" -- even when a release branch
|
||||
is in feature freeze, it can still receive doc fixes. However, this
|
||||
rule is limited to fixing real problems in the documentation; cleanups
|
||||
and stylistic changes are excluded.
|
||||
|
||||
When you know that the change will be difficult to merge to the
|
||||
master (e.g., because the code on master has changed a lot), you can
|
||||
apply the change to both master and branch yourself. It could also
|
||||
happen that a change is cherry-picked from master to the release
|
||||
branch, and so doesn't need to be merged back. In these cases,
|
||||
say in the release branch commit message that there is no need to merge
|
||||
the commit to master, by starting the commit message with "Backport:".
|
||||
The gitmerge function excludes these commits from the merge to the master.
|
||||
|
||||
Some changes should not be merged to master at all, for whatever
|
||||
reason. These should be marked by including something like "Do not
|
||||
merge to master" or anything that matches gitmerge-skip-regexp (see
|
||||
admin/gitmerge.el) in the commit message.
|
||||
|
||||
** Some packages in Emacs are maintained externally
|
||||
|
||||
Sometimes a package that ships as part of GNU Emacs is maintained as a
|
||||
separate project, with its own upstream repository, its own maintainer
|
||||
group, its own development conventions, etc. The upstream project's
|
||||
code is periodically merged into Emacs (exactly when and how such
|
||||
merges happen depends on the package).
|
||||
|
||||
So when you are making a contribution -- such as fixing a bug or
|
||||
proposing an enhancement -- to one of these externally maintained
|
||||
packages, you sometimes need to deal with that package at its upstream
|
||||
source.
|
||||
|
||||
In the section "Externally maintained packages" in "admin/MAINTAINERS"
|
||||
we maintain a list of such packages.
|
||||
|
||||
** GNU ELPA
|
||||
|
||||
This repository does not contain the Emacs Lisp package archive
|
||||
(elpa.gnu.org). See admin/notes/elpa for how to access the GNU ELPA
|
||||
repository.
|
||||
|
||||
** Understanding Emacs internals
|
||||
|
||||
The best way to understand Emacs internals is to read the code. Some
|
||||
source files, such as xdisp.c, have extensive comments describing the
|
||||
design and implementation. The following resources may also help:
|
||||
|
||||
https://www.gnu.org/software/emacs/manual/html_node/elisp/Tips.html
|
||||
https://www.gnu.org/software/emacs/manual/html_node/elisp/GNU-Emacs-Internals.html
|
||||
|
||||
or run 'info "(elisp)Tips"' or 'info "(elisp)GNU Emacs Internals"'.
|
||||
|
||||
The file etc/DEBUG describes how to debug Emacs bugs.
|
||||
|
||||
*** Non-ASCII characters in Emacs files
|
||||
|
||||
If you introduce non-ASCII characters into Emacs source files, use the
|
||||
UTF-8 encoding unless it cannot do the job for some good reason.
|
||||
Although it is generally a good idea to add 'coding:' cookies to
|
||||
non-ASCII source files, cookies are not needed in UTF-8-encoded *.el
|
||||
files intended for use only with Emacs version 24.5 and later.
|
||||
|
||||
*** Useful files in the admin/ directory
|
||||
|
||||
See all the files in 'admin/notes/*'. In particular, see
|
||||
'admin/notes/newfile' and '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 the master branch, instead of squashing
|
||||
the commits into one. The commit message on this merge should
|
||||
summarize the renames and all the changes.
|
||||
|
||||
|
||||
|
||||
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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
Local variables:
|
||||
mode: outline
|
||||
paragraph-separate: "[ ]*$"
|
||||
coding: utf-8
|
||||
end:
|
||||
674
COPYING
Normal file
674
COPYING
Normal file
|
|
@ -0,0 +1,674 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
14718
ChangeLog.1
Normal file
14718
ChangeLog.1
Normal file
File diff suppressed because it is too large
Load diff
35806
ChangeLog.2
Normal file
35806
ChangeLog.2
Normal file
File diff suppressed because it is too large
Load diff
237373
ChangeLog.3
Normal file
237373
ChangeLog.3
Normal file
File diff suppressed because it is too large
Load diff
122011
ChangeLog.4
Normal file
122011
ChangeLog.4
Normal file
File diff suppressed because it is too large
Load diff
124
GNUmakefile
Normal file
124
GNUmakefile
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
# Build Emacs from a fresh tarball or version-control checkout.
|
||||
|
||||
# Copyright (C) 2011-2024 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 <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# written by Paul Eggert
|
||||
|
||||
|
||||
# This GNUmakefile is for GNU Make. It is for convenience, so that
|
||||
# one can run 'make' in an unconfigured source tree. In such a tree,
|
||||
# this file causes GNU Make to first create a standard configuration
|
||||
# with the default options, and then reinvokes itself on the
|
||||
# newly-built Makefile. If the source tree is already configured,
|
||||
# this file defers to the existing Makefile.
|
||||
|
||||
# If you want non-default build options, or if you want to build in an
|
||||
# out-of-source tree, you should run 'configure' before running 'make'.
|
||||
# But run 'autogen.sh' first, if the source was checked out directly
|
||||
# from the repository.
|
||||
|
||||
# Display help.
|
||||
|
||||
ifeq (help,$(filter help,$(MAKECMDGOALS)))
|
||||
help:
|
||||
$(info $ NOTE: This is a brief summary of some common make targets.)
|
||||
$(info $ For more detailed information, please read the files INSTALL,)
|
||||
$(info $ INSTALL.REPO, Makefile or visit this URL:)
|
||||
$(info $ https://www.gnu.org/prep/standards/html_node/Standard-Targets.html)
|
||||
$(info $ )
|
||||
$(info $ make all -- compile and build Emacs)
|
||||
$(info $ make install -- install Emacs)
|
||||
$(info $ make TAGS -- update tags tables)
|
||||
$(info $ make clean -- delete built files but preserve configuration)
|
||||
$(info $ make mostlyclean -- like 'make clean', but leave those files that)
|
||||
$(info $ usually do not need to be recompiled)
|
||||
$(info $ make distclean -- delete all build and configuration files,)
|
||||
$(info $ leave only files included in source distribution)
|
||||
$(info $ make maintainer-clean -- delete almost everything that can be regenerated)
|
||||
$(info $ make extraclean -- like maintainer-clean, and also delete)
|
||||
$(info $ backup and autosave files)
|
||||
$(info $ make bootstrap -- delete all compiled files to force a new bootstrap)
|
||||
$(info $ from a clean slate, then build in the normal way)
|
||||
$(info $ make uninstall -- remove files installed by 'make install')
|
||||
$(info $ make check -- run the Emacs test suite)
|
||||
$(info $ make docs -- generate Emacs documentation in info format)
|
||||
$(info $ make html -- generate documentation in html format)
|
||||
$(info $ make ps -- generate documentation in ps format)
|
||||
$(info $ make pdf -- generate documentation in pdf format )
|
||||
@:
|
||||
|
||||
.PHONY: help
|
||||
|
||||
else
|
||||
|
||||
# If a Makefile already exists, just use it.
|
||||
|
||||
ifeq ($(wildcard Makefile),Makefile)
|
||||
include Makefile
|
||||
else
|
||||
|
||||
# If cleaning and Makefile does not exist, don't bother creating it.
|
||||
# The source tree is already clean, or is in a weird state that
|
||||
# requires expert attention.
|
||||
|
||||
ifeq ($(filter-out %clean,$(or $(MAKECMDGOALS),default)),)
|
||||
|
||||
$(MAKECMDGOALS):
|
||||
$(warning No Makefile; skipping $@.)
|
||||
|
||||
else
|
||||
|
||||
# No Makefile, and not cleaning.
|
||||
# If 'configure' does not exist, Emacs must have been checked
|
||||
# out directly from the repository; run ./autogen.sh.
|
||||
# Once 'configure' exists, run it.
|
||||
# Finally, run the actual 'make'.
|
||||
|
||||
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:
|
||||
$(warning There seems to be no "configure" file in this directory.)
|
||||
$(warning Running ./autogen.sh ...)
|
||||
./autogen.sh
|
||||
@echo >&2 '"configure" file built.'
|
||||
|
||||
Makefile: configure
|
||||
$(warning There seems to be no Makefile in this directory.)
|
||||
ifeq ($(configure),default)
|
||||
$(warning Running ./configure ...)
|
||||
./configure
|
||||
else
|
||||
$(warning Running ./configure $(configure)...)
|
||||
./configure $(configure)
|
||||
endif
|
||||
@echo >&2 'Makefile built.'
|
||||
|
||||
# 'make bootstrap' in a fresh checkout needn't run 'configure' twice.
|
||||
bootstrap: Makefile
|
||||
$(MAKE) -f Makefile bootstrap-all
|
||||
|
||||
.PHONY: bootstrap default $(ORDINARY_GOALS)
|
||||
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
760
INSTALL
Normal file
760
INSTALL
Normal file
|
|
@ -0,0 +1,760 @@
|
|||
GNU Emacs Installation Guide
|
||||
Copyright (C) 1992, 1994, 1996-1997, 2000-2024 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/macOS, and MS-DOS
|
||||
ports, also read the files nt/INSTALL, nextstep/INSTALL, and
|
||||
msdos/INSTALL.
|
||||
|
||||
For information about building from a Git checkout (rather than an
|
||||
Emacs release), read the INSTALL.REPO file first.
|
||||
|
||||
|
||||
BASIC INSTALLATION
|
||||
|
||||
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.
|
||||
|
||||
Building Emacs requires GNU make, <https://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. Obtain and unpack the Emacs release, with commands like this:
|
||||
|
||||
wget https://ftp.gnu.org/gnu/emacs/emacs-VERSION.tar.xz
|
||||
tar -xf emacs-VERSION.tar.xz
|
||||
|
||||
where VERSION is the Emacs version number.
|
||||
|
||||
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'
|
||||
from there:
|
||||
|
||||
SOURCE-DIR/configure
|
||||
|
||||
where SOURCE-DIR is the top-level Emacs source directory.
|
||||
|
||||
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'
|
||||
one or more options specifying the explicit machine configuration
|
||||
name, where to find various headers and libraries, etc.
|
||||
Refer to the section DETAILED BUILDING AND INSTALLATION below.
|
||||
|
||||
If 'configure' didn't find some image support libraries, such as
|
||||
Xpm and jpeg, refer to "Image support libraries" below.
|
||||
|
||||
If the details printed by 'configure' don't make any sense to
|
||||
you, but there are no obvious errors, assume that 'configure' did
|
||||
its job and proceed.
|
||||
|
||||
4. 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
|
||||
it works:
|
||||
|
||||
src/emacs -Q
|
||||
|
||||
To test Emacs further (intended mostly to help developers):
|
||||
|
||||
make check
|
||||
|
||||
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:
|
||||
|
||||
make install
|
||||
|
||||
You are now ready to use Emacs. If you wish to conserve space,
|
||||
you may remove the program binaries and object files from the
|
||||
directory where you built Emacs:
|
||||
|
||||
make clean
|
||||
|
||||
You can delete the entire build directory if you do not plan to
|
||||
build Emacs again, but it can be useful to keep for debugging.
|
||||
If you want to build Emacs again with different configure options,
|
||||
first clean the source directories:
|
||||
|
||||
make distclean
|
||||
|
||||
Note that the install automatically saves space by compressing
|
||||
(provided you have the 'gzip' program) those installed Lisp source (.el)
|
||||
files that have corresponding .elc versions, as well as the Info files.
|
||||
|
||||
You can read a brief summary about common make targets:
|
||||
|
||||
make help
|
||||
|
||||
|
||||
ADDITIONAL DISTRIBUTION FILES
|
||||
|
||||
* Complex Text Layout support libraries
|
||||
|
||||
On GNU and Unix systems, Emacs needs optional libraries to correctly
|
||||
display such complex scripts as Indic and Khmer, and also for scripts
|
||||
that require Arabic shaping support (Arabic and Farsi). If the
|
||||
HarfBuzz library is installed, Emacs will build with it and use it for
|
||||
this purpose. HarfBuzz is the preferred shaping engine, both on Posix
|
||||
hosts and on MS-Windows, so we recommend installing it before building
|
||||
Emacs. The alternative for GNU/Linux and Posix systems is to use the
|
||||
"m17n-db", "libm17n-flt", and "libotf" libraries. (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, 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. On MS-Windows, if HarfBuzz is not available, Emacs
|
||||
will use the Uniscribe shaping engine that is part of the OS.
|
||||
|
||||
Note that Emacs cannot support complex scripts on a TTY, unless the
|
||||
terminal includes such a support. However, most modern terminal
|
||||
emulators, such as xterm, do support such scripts.
|
||||
|
||||
* intlfonts-VERSION.tar.gz
|
||||
|
||||
The intlfonts distribution contains X11 fonts in various encodings
|
||||
that Emacs can use to display international characters. If you see a
|
||||
non-ASCII character appear as a hollow box, that means you don't have
|
||||
a font for it. You might find one in the intlfonts distribution. If
|
||||
you do have a font for a non-ASCII character, but some characters
|
||||
don't look right, or appear improperly aligned, a font from the
|
||||
intlfonts distribution might look better.
|
||||
|
||||
The fonts in the intlfonts distribution are also used by the ps-print
|
||||
package for printing international characters. The file
|
||||
lisp/ps-mule.el defines the *.bdf font files required for printing
|
||||
each character set.
|
||||
|
||||
The intlfonts distribution contains its own installation instructions,
|
||||
in the intlfonts/README file. See also the Emacs Frequently Asked
|
||||
Questions info pages "(efaq) How to add fonts" for installation
|
||||
instructions.
|
||||
|
||||
* Image support libraries
|
||||
|
||||
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. 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. 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 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 https://directory.fsf.org/project/Xaw3d
|
||||
X libxpm for XPM: https://www.x.org/releases/current/src/lib/
|
||||
X libpng for PNG: http://www.libpng.org/
|
||||
libz (for PNG): https://www.zlib.net/
|
||||
X libjpeg for JPEG: https://www.ijg.org/
|
||||
X libtiff for TIFF: http://www.simplesystems.org/libtiff/
|
||||
X libgif for GIF: https://giflib.sourceforge.net/
|
||||
librsvg2 for SVG: https://wiki.gnome.org/Projects/LibRsvg
|
||||
libwebp for WebP: https://developers.google.com/speed/webp/
|
||||
|
||||
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
|
||||
|
||||
The Emacs distribution does not include fonts and does not install
|
||||
them.
|
||||
|
||||
On the GNU system, Emacs supports both X fonts and local fonts
|
||||
(i.e. fonts managed by the fontconfig library). If you need more
|
||||
fonts than your distribution normally provides, you must install them
|
||||
yourself. See <https://www.gnu.org/software/freefont/> for a large
|
||||
number of free Unicode fonts.
|
||||
|
||||
* GNU/Linux development packages
|
||||
|
||||
Many GNU/Linux systems do not come with development packages by default;
|
||||
they include the files that you need to run Emacs, but not those you
|
||||
need to compile it. For example, to compile Emacs with support for X
|
||||
and graphics libraries, you may need to install the X development
|
||||
package(s), and development versions of the jpeg, png, etc. packages.
|
||||
|
||||
The names of the packages that you need vary 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 emacs' (on older systems, replace 'emacs' with
|
||||
e.g. 'emacs25'). On Red Hat-based systems, the corresponding command is
|
||||
'dnf builddep emacs' (on older systems, use 'yum-builddep' instead).
|
||||
|
||||
On FreeBSD, the command is 'pkg install -y `pkg rquery %dn emacs-devel`'.
|
||||
|
||||
* Alternative window systems
|
||||
|
||||
If you want to use Emacs on one of the alternative window systems
|
||||
available on GNU/Linux and some Unix systems, such as Wayland or
|
||||
Broadway, you can build the PGTK ("Pure GTK") port of Emacs, which
|
||||
utilizes the GTK+ toolkit to support those window systems. To this
|
||||
end, invoke the configure script with the '--with-pgtk' option, like
|
||||
this:
|
||||
|
||||
./configure --with-pgtk
|
||||
|
||||
This build is only supported with GTK+ version 3, and it is an error
|
||||
to specify any other X-specific configuration option when PGTK is
|
||||
enabled.
|
||||
|
||||
If you use exclusively X, do not use the PGTK port. There are a
|
||||
number of respects in which the regular --with-x-toolkit=gtk build
|
||||
works better. The PGTK port should not be considered a simple upgrade
|
||||
from --with-x-toolkit=gtk.
|
||||
|
||||
With the PGTK build, you will be able to switch between running Emacs
|
||||
on X, Wayland and Broadway using the 'GDK_BACKEND' environment
|
||||
variable. GTK+ should automatically detect and use the correct value
|
||||
for your system, but you can also specify it manually. For example,
|
||||
to force GTK+ to run under Broadway, start Emacs like this:
|
||||
|
||||
GDK_BACKEND=broadway emacs ...
|
||||
|
||||
(where '...' denotes any further options you may want to pass to Emacs).
|
||||
|
||||
The GNUstep build also supports the Wayland window system. If that is
|
||||
what you want, see nextstep/INSTALL.
|
||||
|
||||
DETAILED BUILDING AND INSTALLATION:
|
||||
|
||||
(This is for a Unix or Unix-like system. For GNUstep and macOS,
|
||||
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) See BASIC INSTALLATION above for getting and configuring Emacs.
|
||||
|
||||
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:
|
||||
|
||||
./configure [--OPTION[=VALUE]] ...
|
||||
|
||||
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
|
||||
system has X, and arrange to use it if present.
|
||||
|
||||
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'
|
||||
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'). 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 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'.
|
||||
|
||||
To read email via a network protocol like IMAP or POP, you can
|
||||
configure Emacs with the option '--with-mailutils', so that it always
|
||||
uses the GNU Mailutils 'movemail' program to retrieve mail; this is
|
||||
the default if GNU Mailutils is installed. Otherwise the Emacs build
|
||||
procedure builds and installs an auxiliary 'movemail' program, a
|
||||
limited and insecure substitute; when this happens, there are several
|
||||
configure options such as --without-pop that provide fine-grained
|
||||
control over Emacs 'movemail' construction.
|
||||
|
||||
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. While POP3 support is typically enabled,
|
||||
whether Emacs actually uses POP3 is controlled by individual users;
|
||||
see the Rmail chapter of the Emacs manual. Unless --with-mailutils is
|
||||
in effect, it is a good idea to configure without POP3 support so that
|
||||
users are less likely to inadvertently read email via insecure
|
||||
channels. On native MS-Windows, --with-pop is the default; on other
|
||||
platforms, --without-pop is the default.
|
||||
|
||||
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 "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-rsvg for SVG image support
|
||||
--without-webp for WebP image support
|
||||
|
||||
Although ImageMagick support is disabled by default due to security
|
||||
and stability concerns, you can enable it with --with-imagemagick.
|
||||
|
||||
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.
|
||||
|
||||
Use --without-xinput2 to disable the use of version 2 of the X Input
|
||||
Extension. This disables support for touchscreens, pinch gestures,
|
||||
and scroll wheels that report scroll deltas at pixel-level precision.
|
||||
|
||||
Use --disable-largefile to omit support for files larger than 2GB, and
|
||||
--disable-year2038 to omit support for timestamps past the year 2038,
|
||||
on systems which allow omitting such support. This may help when
|
||||
linking Emacs to a library with an ABI that requires a particular
|
||||
width for off_t or for time_t.
|
||||
|
||||
Use --without-sound to disable sound support.
|
||||
|
||||
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 --without-x --with-dbus to
|
||||
build with D-Bus support and nothing more.
|
||||
|
||||
Use --with-gnutls=ifavailable to use GnuTLS if available but go ahead
|
||||
and build without it if not available. This overrides Emacs's default
|
||||
behavior of refusing to build if GnuTLS is absent. When X11 support
|
||||
is enabled, the libraries for gif, jpeg, png, tiff, and xpm are in the
|
||||
same strongly-recommended category as GnuTLS, and have similar options.
|
||||
|
||||
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
|
||||
typical 32-bit host, Emacs integers have 62 bits instead of 30.
|
||||
|
||||
Use --with-cairo to compile Emacs with Cairo drawing.
|
||||
|
||||
Use --with-cairo-xcb to also utilize the Cairo XCB backend on systems
|
||||
where it is available. While such a configuration is moderately
|
||||
faster when running over X connections with high latency, it is likely
|
||||
to crash when a new frame is created on a display connection opened
|
||||
after a display connection is closed.
|
||||
|
||||
Use --with-modules to build Emacs with support for dynamic modules.
|
||||
This needs a C compiler that supports '__attribute__ ((cleanup (...)))',
|
||||
as in GCC 3.4 and later.
|
||||
|
||||
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, though you may prefer
|
||||
configuring with --enable-gcc-warnings=warn-only so they are not
|
||||
treated as errors. The default is --enable-gcc-warnings=warn-only if
|
||||
it appears to be a developer build, and is --disable-gcc-warnings
|
||||
otherwise.
|
||||
|
||||
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.
|
||||
|
||||
Use --enable-link-time-optimization to enable link-time optimization.
|
||||
With GCC, you need GCC 4.5.0 and later, and 'configure' arranges for
|
||||
linking to be parallelized if possible. With Clang, you need GNU
|
||||
binutils with the gold linker and plugin support, along with the LLVM
|
||||
gold plugin <https://llvm.org/docs/GoldPlugin.html>. Link time
|
||||
optimization is not the default as it tends to cause crashes and to
|
||||
make Emacs slower.
|
||||
|
||||
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).
|
||||
- The architecture-independent files go in PREFIXDIR/share/emacs/VERSION
|
||||
(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.
|
||||
|
||||
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
|
||||
- The architecture-dependent files go in
|
||||
EXECDIR/libexec/emacs/VERSION/CONFIGURATION.
|
||||
EXECDIR/bin should be a directory that is normally in users' PATHs.
|
||||
|
||||
For example, the command
|
||||
|
||||
./configure --build=i386-linux-gnu --without-sound
|
||||
|
||||
configures Emacs to build for a 32-bit GNU/Linux distribution,
|
||||
without sound support.
|
||||
|
||||
'configure' doesn't do any compilation or installation itself.
|
||||
It just creates the files that influence those things:
|
||||
'./Makefile' 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'.
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
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
|
||||
setting the variables CPPFLAGS, CFLAGS, LDFLAGS, LIBS, CPP and CC
|
||||
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
|
||||
shell such as Bash, which uses these variables:
|
||||
|
||||
./configure \
|
||||
CPPFLAGS='-I/foo/myinclude' LDFLAGS='-L/bar/mylib' \
|
||||
CFLAGS='-Og' LIBS='-lfoo -lbar'
|
||||
|
||||
(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 -Og 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
|
||||
pkg-config to find where those libraries are installed.
|
||||
If you want pkg-config to look in special directories, you have to set
|
||||
PKG_CONFIG_PATH to point to the directories where the .pc-files for
|
||||
those libraries are. For example:
|
||||
|
||||
./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:
|
||||
|
||||
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.
|
||||
|
||||
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'.
|
||||
|
||||
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,
|
||||
|
||||
(setq news-inews-program "/usr/bin/inews")
|
||||
|
||||
is how you would override the default value of the variable
|
||||
news-inews-program.
|
||||
|
||||
Before you override a variable this way, *look at the value* that the
|
||||
variable gets by default! Make sure you know what kind of value the
|
||||
variable should have. If you don't pay attention to what you are
|
||||
doing, you'll make a mistake.
|
||||
|
||||
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
|
||||
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
|
||||
building Emacs in the standard way. The final executable file is
|
||||
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
|
||||
are installed in the following directories:
|
||||
|
||||
'/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
|
||||
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
|
||||
file, and other architecture-independent files Emacs
|
||||
might need while running.
|
||||
|
||||
'/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
|
||||
programs used by Emacs that users are not expected to
|
||||
run themselves.
|
||||
'VERSION' is the number of the Emacs version you are
|
||||
installing, and 'CONFIGURATION-NAME' is the 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 versions of Emacs for any mix of machines and
|
||||
operating systems installed at the same time; this is
|
||||
useful for sites at which different kinds of machines
|
||||
share the file system Emacs is installed on.
|
||||
|
||||
'/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'.
|
||||
|
||||
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
|
||||
files installed for Emacs version VERSION only.
|
||||
|
||||
'/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'.
|
||||
|
||||
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
|
||||
information on this.
|
||||
|
||||
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.
|
||||
|
||||
8) If your system uses lock files to interlock access to mailer inbox files,
|
||||
and if --with-mailutils is not in effect, then you might need to
|
||||
make the Emacs-specific 'movemail' program setuid or setgid in order
|
||||
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'.
|
||||
|
||||
|
||||
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'
|
||||
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'.
|
||||
|
||||
Here is a complete list of the variables you may want to set.
|
||||
|
||||
'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
|
||||
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
|
||||
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
|
||||
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'.
|
||||
Since these files are specific to the version of Emacs,
|
||||
operating system, and architecture in use, including the
|
||||
configuration name in the path allows you to have several
|
||||
versions of Emacs for any mix of machines and operating
|
||||
systems installed at the same time; this is useful for sites
|
||||
at which different kinds of machines share the file system
|
||||
Emacs is installed on.
|
||||
|
||||
'infodir' indicates where to put the info files distributed with
|
||||
Emacs; it defaults to '/usr/local/share/info'.
|
||||
|
||||
'mandir' indicates where to put the man pages for Emacs and its
|
||||
utilities (like 'etags'); it defaults to
|
||||
'/usr/local/share/man/man1'.
|
||||
|
||||
'prefix' doesn't give a path for any specific part of Emacs; instead,
|
||||
its value is used to determine the defaults for all the
|
||||
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'.
|
||||
By including
|
||||
'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
|
||||
determines the default values for the architecture-dependent
|
||||
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
|
||||
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'
|
||||
(where VERSION and CONFIGURATION-NAME are as described above).
|
||||
|
||||
'GZIP_PROG' is the name of the executable that compresses installed info,
|
||||
manual, and .el files. It defaults to gzip. Setting it to
|
||||
the empty string suppresses compression.
|
||||
|
||||
Remember that you must specify any variable values you need each time
|
||||
you run 'make' in the top directory. If you run 'make' once to build
|
||||
emacs, test it, and then run 'make' again to install the files, you
|
||||
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'.
|
||||
|
||||
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'.
|
||||
|
||||
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.
|
||||
|
||||
|
||||
PROBLEMS
|
||||
|
||||
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.
|
||||
|
||||
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 <https://www.gnu.org/licenses/>.
|
||||
116
INSTALL.REPO
Normal file
116
INSTALL.REPO
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
Building and Installing Emacs from the Repository
|
||||
|
||||
The Emacs repository is hosted on Savannah. The following Git command
|
||||
will clone the repository to the 'emacs' subdirectory of the current
|
||||
directory on your local machine:
|
||||
|
||||
git clone git://git.sv.gnu.org/emacs.git
|
||||
|
||||
To build the repository code, simply run 'make' in the 'emacs'
|
||||
directory. This should work if your files are freshly checked out
|
||||
from the repository, and if you have the proper tools installed; the
|
||||
default configuration options will be used. Other configuration
|
||||
options can be specified by setting a 'configure' variable, for
|
||||
example:
|
||||
|
||||
$ make configure="--prefix=/opt/emacs CFLAGS='-O0 -g3'"
|
||||
|
||||
If the above 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).
|
||||
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. GNU Texinfo 4.13 or later should work.
|
||||
|
||||
To use the autotools, run the following shell command to generate the
|
||||
'configure' script and some related files, and to set up your git
|
||||
configuration:
|
||||
|
||||
$ ./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
|
||||
|
||||
You can also type 'make check' to test and 'make install' to install
|
||||
Emacs.
|
||||
|
||||
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 a more thorough way
|
||||
to rebuild, avoiding spurious problems. 'make bootstrap' rebuilds
|
||||
Emacs with the same configuration options as the previous build; it
|
||||
can also be used to rebuild Emacs with other configuration options by
|
||||
setting a 'configure' variable, for example:
|
||||
|
||||
$ make bootstrap configure="CFLAGS='-O0 -g3'"
|
||||
|
||||
To rebuild Emacs with the default configuration options, you can use:
|
||||
|
||||
$ make bootstrap configure=default
|
||||
|
||||
Occasionally, there are changes that 'make bootstrap' won't be able to
|
||||
handle. The most thorough cleaning can be achieved by 'git clean -fdx'
|
||||
which will leave you with only files from the git repository. Here
|
||||
are some faster methods for a couple of particular error cases:
|
||||
|
||||
/usr/bin/m4:aclocal.m4:9: cannot open `m4/count-leading-zeros.m4': No such file or directory
|
||||
|
||||
This can be fixed with 'rm aclocal.m4'.
|
||||
|
||||
make: *** No rule to make target 'lib/Makefile.am', needed by 'lib/Makefile.in'
|
||||
|
||||
This can be fixed with 'rm lib/Makefile Makefile'.
|
||||
|
||||
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-2024 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 <https://www.gnu.org/licenses/>.
|
||||
1369
Makefile.in
Normal file
1369
Makefile.in
Normal file
File diff suppressed because it is too large
Load diff
125
README
Normal file
125
README
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
Copyright (C) 2001-2024 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
|
||||
This directory tree holds version 29.4.50 of GNU Emacs, the extensible,
|
||||
customizable, self-documenting real-time display editor.
|
||||
|
||||
The file INSTALL in this directory says how to build and install GNU
|
||||
Emacs on various systems, once you have unpacked or checked out the
|
||||
entire Emacs file tree.
|
||||
|
||||
See the file etc/NEWS for information on new features and other
|
||||
user-visible changes in recent versions of Emacs.
|
||||
|
||||
The file etc/PROBLEMS contains information on many common problems that
|
||||
occur in building, installing and running Emacs.
|
||||
|
||||
The file CONTRIBUTE contains information on contributing to Emacs as a
|
||||
developer.
|
||||
|
||||
You may encounter bugs in this release. If you do, please report
|
||||
them; your bug reports are valuable contributions to the FSF, since
|
||||
they allow us to notice and fix problems on machines we don't have, or
|
||||
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
|
||||
can find and read that section using the Info files that come with
|
||||
Emacs.) For a list of mailing lists related to Emacs, see
|
||||
<https://savannah.gnu.org/mail/?group=emacs>. For the complete
|
||||
list of GNU mailing lists, see <https://lists.gnu.org/>.
|
||||
|
||||
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
|
||||
oddities of your processor and operating system. It creates the file
|
||||
'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.
|
||||
|
||||
The shell script 'autogen.sh' generates 'configure' and other files by
|
||||
running Autoconf (which in turn uses GNU m4), and configures files in
|
||||
the .git subdirectory if you are using Git. 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 procedure.
|
||||
|
||||
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
|
||||
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
|
||||
its primitives, the redisplay code, and some basic editing
|
||||
functions).
|
||||
'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.
|
||||
'lwlib' holds the sources of the Lucid Widget Library used on X.
|
||||
'oldXMenu' source files from X11R2 XMenu library, used in non-toolkit builds.
|
||||
'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'
|
||||
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
|
||||
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
|
||||
in Emacs Lisp manual.
|
||||
'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 macOS Cocoa.
|
||||
'nt' holds code and documentation for building Emacs on MS-Windows.
|
||||
'test' holds tests for various aspects of Emacs's functionality.
|
||||
'modules' holds the modhelp.py helper script.
|
||||
'admin' holds files used by Emacs developers, and Unicode data files.
|
||||
'build-aux' holds auxiliary files used during the build.
|
||||
'm4' holds Autoconf macros used for generating the configure script.
|
||||
|
||||
Building Emacs on non-Posix platforms requires tools that aren't part
|
||||
of the standard distribution of the OS. The platform-specific README
|
||||
files and installation instructions should list the required tools.
|
||||
|
||||
|
||||
NOTE ON COPYRIGHT YEARS
|
||||
|
||||
In copyright notices where the copyright holder is the Free Software
|
||||
Foundation, then where a range of years appears, this is an inclusive
|
||||
range that applies to every year in the range. For example: 2005-2008
|
||||
represents the years 2005, 2006, 2007, and 2008.
|
||||
|
||||
|
||||
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 <https://www.gnu.org/licenses/>.
|
||||
529
admin/CPP-DEFINES
Normal file
529
admin/CPP-DEFINES
Normal file
|
|
@ -0,0 +1,529 @@
|
|||
Here are some of the cpp macros used, together with some short explanation
|
||||
of their use. Feel free to add more macros and more categories.
|
||||
Most of these are from config.in, so it's probably better to put the
|
||||
explanations in that file. Ideally, everything would be defined and
|
||||
documented in config.in, and this file would not be necessary.
|
||||
|
||||
|
||||
** Distinguishing OSes **
|
||||
|
||||
AIX
|
||||
_AIX
|
||||
CYGWIN Compiling the Cygwin port.
|
||||
__CYGWIN__ Ditto
|
||||
GNU_LINUX
|
||||
HPUX
|
||||
MSDOS Compiling the MS-DOS port.
|
||||
__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 or MinGW-w64 ports of GCC.
|
||||
MINGW_W64 Compiling the W32 port with the MinGW-w64 port of GCC.
|
||||
DARWIN_OS Compiling on macOS or pure Darwin (and using s/darwin.h).
|
||||
SOLARIS2
|
||||
USG
|
||||
USG5_4
|
||||
HAIKU Compiling on Haiku.
|
||||
|
||||
** Distinguishing GUIs **
|
||||
|
||||
HAVE_NTGUI Use the native W32 GUI for windows, frames, menus&scrollbars.
|
||||
HAVE_NS Use the NeXT/OpenStep/Cocoa UI under macOS or GNUstep.
|
||||
NS_IMPL_GNUSTEP Compile support for GNUstep implementation of NS GUI API.
|
||||
NS_IMPL_COCOA Compile support for Cocoa (Apple) implementation of NS GUI API.
|
||||
HAVE_X11 Compile support for the X11 GUI.
|
||||
HAVE_PGTK Compile support for using GTK itself without directly using X Windows APIs.
|
||||
HAVE_HAIKU Compile support for the Haiku window system.
|
||||
HAVE_X_WINDOWS Compile support for X Window system
|
||||
(It looks like, nowadays, if HAVE_X11 is set, HAVE_X_WINDOWS must
|
||||
be, and vice versa. At least, this is true for configure, and
|
||||
msdos; not sure about nt.)
|
||||
|
||||
** X Windows features **
|
||||
HAVE_X11R6 Whether or not the system has X11R6. (Always defined.)
|
||||
HAVE_X11R6_XIM Whether or not the system supports XIM features introduced in R6.
|
||||
HAVE_X11XTR6 Whether or not the Xt is from X11R6 or newer.
|
||||
|
||||
USE_LUCID Use the Lucid toolkit for menus&scrollbars. Requires HAVE_X11.
|
||||
USE_MOTIF Use the Motif toolkit for menus&scrollbars. Requires HAVE_X11.
|
||||
USE_GTK Use the Gtk toolkit for menus&scrollbars. Requires HAVE_X11 or HAVE_PGTK.
|
||||
HAVE_GTK3 Use GTK version 3 or later. Requires HAVE_X11.
|
||||
|
||||
HAVE_XCB_SHAPE Whether or not XCB supports the Nonrectangular Window Shape extension.
|
||||
HAVE_XCOMPOSITE Whether or not the XCOMPOSITE extension library is present.
|
||||
HAVE_XDBE Whether or not to use the Xdbe extension for double buffering.
|
||||
HAVE_XFIXES Whether or not the Xfixes extension library is present.
|
||||
HAVE_XINERAMA Whether or not the Xinerama extension library is present.
|
||||
HAVE_XINPUT2 Whether or not to use version 2 of the X Input Extension for input.
|
||||
HAVE_XINPUT2_1 Whether or not version 2.1 of the X Input Extension is supported.
|
||||
HAVE_XINPUT2_2 Whether or not version 2.2 of the X Input Extension is supported.
|
||||
HAVE_XINPUT2_3 Whether or not version 2.3 of the X Input Extension is supported.
|
||||
HAVE_XINPUT2_4 Whether or not version 2.4 of the X Input Extension is supported.
|
||||
HAVE_XKB Whether or not the XKB extension library is present.
|
||||
HAVE_XRANDR Whether or not the RandR extension library is present.
|
||||
HAVE_XSHAPE Whether or not the Nonrectangular Window Shape extension library is present.
|
||||
HAVE_XSYNC Whether or not the X Synchronization Extension library is present.
|
||||
USE_XCB Whether or not the XCB library is used to optimize some X requests.
|
||||
|
||||
** Frame types **
|
||||
|
||||
FRAME_TERMCAP_P A tty (character terminal) frame.
|
||||
FRAME_X_P A frame on X Window system.
|
||||
FRAME_MSDOS_P An MS-DOS frame (used only by the DOS port).
|
||||
FRAME_W32_P A frame using native MS-Windows GUI.
|
||||
FRAME_WINDOW_P A GUI frame (like X, w32, etc.)
|
||||
|
||||
** Support for accessing other processes on the system **
|
||||
|
||||
HAVE_PROCFS The /proc filesystem is supported.
|
||||
|
||||
** Compile-time options **
|
||||
|
||||
REL_ALLOC Compile in the relocatable memory allocator ralloc.c.
|
||||
SYSTEM_MALLOC Use the system library's malloc.
|
||||
subprocesses System can use subprocesses (for M-x shell for example).
|
||||
Defined by default, only MSDOS undefines it.
|
||||
DEBUG_LISP_OBJECT_TYPE Define it in lisp.h enable compile time checks
|
||||
on Lisp_Object use.
|
||||
|
||||
** System specific macros
|
||||
FIRST_PTY_LETTER
|
||||
HAVE_PTYS
|
||||
INTERRUPT_INPUT
|
||||
NARROWPROTO
|
||||
SEPCHAR
|
||||
SYSTEM_TYPE
|
||||
|
||||
** Misc macros
|
||||
USER_FULL_NAME If defined, overrides the default pw->pw_gecos for
|
||||
getting at the full user name. Only MSDOS overrides the default.
|
||||
|
||||
** Miscellaneous defines. Some of these might not be used in the code
|
||||
anymore, so they can be removed.
|
||||
|
||||
AMPERSAND_FULL_NAME
|
||||
BROKEN_DATAGRAM_SOCKETS
|
||||
BROKEN_GET_CURRENT_DIR_NAME
|
||||
BROKEN_PTY_READ_AFTER_EAGAIN
|
||||
DEFAULT_SOUND_DEVICE
|
||||
DEVICE_SEP
|
||||
DIRECTORY_SEP
|
||||
DONT_REOPEN_PTY
|
||||
DOUG_LEA_MALLOC
|
||||
EMACS_CONFIGURATION
|
||||
EMACS_CONFIG_OPTIONS
|
||||
EMACS_INT
|
||||
EMACS_UINT
|
||||
GC_MARK_SECONDARY_STACK
|
||||
GC_SETJMP_WORKS
|
||||
GNU_MALLOC
|
||||
HAVE_ALLOCA
|
||||
HAVE_ALLOCA_H
|
||||
HAVE_ALSA
|
||||
HAVE_BDFFONT
|
||||
HAVE_CFMAKERAW
|
||||
HAVE_CFSETSPEED
|
||||
HAVE_CLOCK_GETTIME
|
||||
HAVE_CLOCK_SETTIME
|
||||
HAVE_COFF_H
|
||||
HAVE_COM_ERR_H
|
||||
HAVE_DBUS
|
||||
HAVE_DBUS_TYPE_IS_VALID
|
||||
HAVE_DBUS_VALIDATE_BUS_NAME
|
||||
HAVE_DBUS_VALIDATE_INTERFACE
|
||||
HAVE_DBUS_VALIDATE_MEMBER
|
||||
HAVE_DBUS_VALIDATE_PATH
|
||||
HAVE_DBUS_WATCH_GET_UNIX_FD
|
||||
HAVE_DECL_LOCALTIME_R
|
||||
HAVE_DECL_STRMODE
|
||||
HAVE_DECL_STRTOIMAX
|
||||
HAVE_DECL_STRTOLL
|
||||
HAVE_DECL_STRTOULL
|
||||
HAVE_DECL_STRTOUMAX
|
||||
HAVE_DECL_TZNAME
|
||||
HAVE_DIALOGS
|
||||
HAVE_ENDGRENT
|
||||
HAVE_ENDPWENT
|
||||
HAVE_ENVIRON_DECL
|
||||
HAVE_EUIDACCESS
|
||||
HAVE_FORK
|
||||
HAVE_FREEIFADDRS
|
||||
HAVE_FREETYPE
|
||||
HAVE_FSEEKO
|
||||
HAVE_FUTIMENS
|
||||
HAVE_FUTIMES
|
||||
HAVE_FUTIMESAT
|
||||
HAVE_GAI_STRERROR
|
||||
HAVE_GCONF
|
||||
HAVE_GETGRENT
|
||||
HAVE_GETHOSTNAME
|
||||
HAVE_GETIFADDRS
|
||||
HAVE_GETLOADAVG
|
||||
HAVE_GETOPT_H
|
||||
HAVE_GETOPT_LONG_ONLY
|
||||
HAVE_GETPAGESIZE
|
||||
HAVE_GETPT
|
||||
HAVE_GETPWENT
|
||||
HAVE_GETRLIMIT
|
||||
HAVE_GETRUSAGE
|
||||
HAVE_GETSOCKNAME
|
||||
HAVE_GETTIMEOFDAY
|
||||
HAVE_GET_CURRENT_DIR_NAME
|
||||
HAVE_GHOSTSCRIPT
|
||||
HAVE_GIF
|
||||
HAVE_GNUTLS
|
||||
HAVE_GPM
|
||||
HAVE_GRANTPT
|
||||
HAVE_GSETTINGS
|
||||
HAVE_GTK3
|
||||
HAVE_GTK_FILE_SELECTION_NEW
|
||||
HAVE_GTK_WINDOW_SET_HAS_RESIZE_GRIP
|
||||
HAVE_IFADDRS_H
|
||||
HAVE_IMAGEMAGICK
|
||||
HAVE_INTTYPES_H
|
||||
HAVE_JPEG
|
||||
HAVE_KERBEROSIV_KRB_H
|
||||
HAVE_KERBEROS_KRB_H
|
||||
HAVE_KRB5_ERROR_E_TEXT
|
||||
HAVE_KRB5_ERROR_TEXT
|
||||
HAVE_KRB5_H
|
||||
HAVE_KRB_H
|
||||
HAVE_LANGINFO_CODESET
|
||||
HAVE_LIBDGC
|
||||
HAVE_LIBKSTAT
|
||||
HAVE_LIBLOCKFILE
|
||||
HAVE_LIBMAIL
|
||||
HAVE_LIBOTF
|
||||
HAVE_LIBPERFSTAT
|
||||
HAVE_LIBSELINUX
|
||||
HAVE_LIBXML2
|
||||
HAVE_LOCALTIME_R
|
||||
HAVE_LOCAL_SOCKETS
|
||||
HAVE_LRAND48
|
||||
HAVE_LSTAT
|
||||
HAVE_LUTIMES
|
||||
HAVE_M17N_FLT
|
||||
HAVE_MACHINE_SOUNDCARD_H
|
||||
HAVE_MACH_MACH_H
|
||||
HAVE_MAGICKEXPORTIMAGEPIXELS
|
||||
HAVE_MAGICKMERGEIMAGELAYERS
|
||||
HAVE_MAILLOCK_H
|
||||
HAVE_MALLOC_MALLOC_H
|
||||
HAVE_MBSTATE_T
|
||||
HAVE_MEMORY_H
|
||||
HAVE_MEMSET
|
||||
HAVE_MKSTEMP
|
||||
HAVE_MMAP
|
||||
HAVE_MULTILINGUAL_MENU
|
||||
HAVE_NET_IF_DL_H
|
||||
HAVE_NET_IF_H
|
||||
HAVE_NLIST_H
|
||||
HAVE_OTF_GET_VARIATION_GLYPHS
|
||||
HAVE_PERSONALITY_ADDR_NO_RANDOMIZE
|
||||
HAVE_PNG
|
||||
HAVE_POSIX_MEMALIGN
|
||||
HAVE_PROCFS
|
||||
HAVE_PSELECT
|
||||
HAVE_PSTAT_GETDYNAMIC
|
||||
HAVE_PTHREAD
|
||||
HAVE_PTHREAD_H
|
||||
HAVE_PTHREAD_SIGMASK
|
||||
HAVE_PTYS
|
||||
HAVE_PTY_H
|
||||
HAVE_PWD_H
|
||||
HAVE_RANDOM
|
||||
HAVE_READLINK
|
||||
HAVE_READLINKAT
|
||||
HAVE_RECVFROM
|
||||
HAVE_RINT
|
||||
HAVE_RSVG
|
||||
HAVE_SELECT
|
||||
HAVE_SENDTO
|
||||
HAVE_SEQPACKET
|
||||
HAVE_SETITIMER
|
||||
HAVE_SETLOCALE
|
||||
HAVE_SETRLIMIT
|
||||
HAVE_SHARED_GAME_DIR
|
||||
HAVE_SHUTDOWN
|
||||
HAVE_SIGNED_${GLTYPE}
|
||||
HAVE_SIGNED_SIG_ATOMIC_T
|
||||
HAVE_SIGNED_WCHAR_T
|
||||
HAVE_SIGNED_WINT_T
|
||||
HAVE_SIGSET_T
|
||||
HAVE_SNPRINTF
|
||||
HAVE_SOCKETS
|
||||
HAVE_SOUND
|
||||
HAVE_SOUNDCARD_H
|
||||
HAVE_STDINT_H
|
||||
HAVE_STDIO_EXT_H
|
||||
HAVE_STDLIB_H
|
||||
HAVE_STRINGS_H
|
||||
HAVE_STRING_H
|
||||
HAVE_STRSIGNAL
|
||||
HAVE_STRTOIMAX
|
||||
HAVE_STRTOLL
|
||||
HAVE_STRTOULL
|
||||
HAVE_STRUCT_ERA_ENTRY
|
||||
HAVE_STRUCT_IFREQ_IFR_ADDR
|
||||
HAVE_STRUCT_IFREQ_IFR_ADDR_SA_LEN
|
||||
HAVE_STRUCT_IFREQ_IFR_BROADADDR
|
||||
HAVE_STRUCT_IFREQ_IFR_FLAGS
|
||||
HAVE_STRUCT_IFREQ_IFR_HWADDR
|
||||
HAVE_STRUCT_IFREQ_IFR_NETMASK
|
||||
HAVE_STRUCT_NLIST_N_UN_N_NAME
|
||||
HAVE_STRUCT_STAT_ST_ATIMENSEC
|
||||
HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
|
||||
HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC
|
||||
HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
|
||||
HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC
|
||||
HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC
|
||||
HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC
|
||||
HAVE_STRUCT_TM_TM_ZONE
|
||||
HAVE_ST_DM_MODE
|
||||
HAVE_SYMLINK
|
||||
HAVE_SYNC
|
||||
HAVE_SYS_BITYPES_H
|
||||
HAVE_SYS_INTTYPES_H
|
||||
HAVE_SYS_LOADAVG_H
|
||||
HAVE_SYS_PARAM_H
|
||||
HAVE_SYS_RESOURCE_H
|
||||
HAVE_SYS_SELECT_H
|
||||
HAVE_SYS_SOCKET_H
|
||||
HAVE_SYS_SOUNDCARD_H
|
||||
HAVE_SYS_STAT_H
|
||||
HAVE_SYS_SYSTEMINFO_H
|
||||
HAVE_SYS_TIME_H
|
||||
HAVE_SYS_TYPES_H
|
||||
HAVE_SYS_UN_H
|
||||
HAVE_SYS_UTSNAME_H
|
||||
HAVE_SYS_VLIMIT_H
|
||||
HAVE_SYS_WAIT_H
|
||||
HAVE_TERM_H
|
||||
HAVE_TIFF
|
||||
HAVE_TM_GMTOFF
|
||||
HAVE_TM_ZONE
|
||||
HAVE_TOUCHLOCK
|
||||
HAVE_TZNAME
|
||||
HAVE_UTIL_H
|
||||
HAVE_UTIMENSAT
|
||||
HAVE_UTMP_H
|
||||
HAVE_VFORK
|
||||
HAVE_VFORK_H
|
||||
HAVE_WEBP
|
||||
HAVE_SQLITE3
|
||||
HAVE_WCHAR_H
|
||||
HAVE_WCHAR_T
|
||||
HAVE_WINDOW_SYSTEM
|
||||
HAVE_WINSOCK2_H
|
||||
HAVE_WORKING_FORK
|
||||
HAVE_WORKING_UTIMES
|
||||
HAVE_WORKING_VFORK
|
||||
HAVE_WS2TCPIP_H
|
||||
HAVE_XAW3D
|
||||
HAVE_XFT
|
||||
HAVE_XIM
|
||||
HAVE_XPM
|
||||
HAVE_XRMSETDATABASE
|
||||
HAVE_XSCREENNUMBEROFSCREEN
|
||||
HAVE_XSCREENRESOURCESTRING
|
||||
HAVE_X_I18N
|
||||
HAVE_X_SM
|
||||
HAVE_X_WINDOWS
|
||||
HAVE___BUILTIN_UNWIND_INIT
|
||||
HAVE___EXECUTABLE_START
|
||||
INTERNAL_TERMINAL
|
||||
IS_ANY_SEP
|
||||
IS_DIRECTORY_SEP
|
||||
MAIL_USE_FLOCK
|
||||
MAIL_USE_LOCKF
|
||||
MAIL_USE_POP
|
||||
MAIL_USE_SYSTEM_LOCK
|
||||
MAXPATHLEN
|
||||
NLIST_STRUCT
|
||||
NSIG
|
||||
NSIG_MINIMUM
|
||||
NULL_DEVICE
|
||||
PAGESIZE
|
||||
PTY_ITERATION
|
||||
PTY_NAME_SPRINTF
|
||||
PTY_OPEN
|
||||
PTY_TTY_NAME_SPRINTF
|
||||
PURESIZE
|
||||
RUN_TIME_REMAP
|
||||
SETUP_SLAVE_PTY
|
||||
SIGNALS_VIA_CHARACTERS
|
||||
STDC_HEADERS
|
||||
SYSTEM_PURESIZE_EXTRA
|
||||
SYSTEM_MALLOC
|
||||
TAB3
|
||||
TABDLY
|
||||
TERM
|
||||
TIOCSIGSEND
|
||||
TM_IN_SYS_TIME
|
||||
UNIX98_PTYS
|
||||
USE_TOOLKIT_SCROLL_BARS
|
||||
USG_SUBTTY_WORKS
|
||||
VALBITS
|
||||
XOS_NEEDS_TIME_H
|
||||
_FILE_OFFSET_BITS
|
||||
_LP64
|
||||
_longjmp
|
||||
_setjmp
|
||||
abort
|
||||
alloca
|
||||
close
|
||||
emacs
|
||||
free
|
||||
gmtime
|
||||
localtime
|
||||
malloc
|
||||
random
|
||||
read
|
||||
realloc
|
||||
select
|
||||
umask
|
||||
vfork
|
||||
|
||||
|
||||
src/sysdep.c:
|
||||
write
|
||||
|
||||
src/syssignal.h:
|
||||
signal
|
||||
sigmask
|
||||
sigsetmask
|
||||
|
||||
|
||||
lib/dup2.c:
|
||||
dup2
|
||||
|
||||
lib/signal.h:
|
||||
signal
|
||||
|
||||
lib/stdio.h:
|
||||
fdopen
|
||||
fopen
|
||||
fwrite
|
||||
popen
|
||||
rename
|
||||
|
||||
lib/stdlib.h:
|
||||
calloc
|
||||
srandom (conf_post.h may undo)
|
||||
|
||||
lib/strftime.c:
|
||||
tzname
|
||||
tzset
|
||||
|
||||
lib/sys/stat.h:
|
||||
mkdir
|
||||
|
||||
lib/unistd.h:
|
||||
chown
|
||||
dup
|
||||
dup2
|
||||
ftruncate
|
||||
isatty
|
||||
link
|
||||
lseek
|
||||
pipe
|
||||
rmdir
|
||||
sleep
|
||||
unlink
|
||||
|
||||
|
||||
MS DOS stuff:
|
||||
|
||||
_NAIVE_DOS_REGS
|
||||
|
||||
|
||||
MS stuff:
|
||||
|
||||
USE_CRT_DLL
|
||||
|
||||
ms-w32.h:
|
||||
DebPrint
|
||||
EMACSDEBUG
|
||||
MUST_UNDEF__STDC__
|
||||
|
||||
_VARARGS_
|
||||
_WINSOCKAPI_
|
||||
_WINSOCK_H
|
||||
|
||||
access
|
||||
calloc
|
||||
chdir
|
||||
chmod
|
||||
chown
|
||||
creat
|
||||
ctime
|
||||
dup
|
||||
dup2
|
||||
execlp
|
||||
execvp (also emacsclient.c [WINDOWSNT])
|
||||
fdopen
|
||||
fileno
|
||||
fopen
|
||||
fsync
|
||||
ftruncate
|
||||
getdefdir
|
||||
getdisk
|
||||
getpid
|
||||
isatty
|
||||
kill
|
||||
link
|
||||
lseek
|
||||
mkdir
|
||||
mktemp
|
||||
open
|
||||
pclose
|
||||
pipe
|
||||
popen
|
||||
rename
|
||||
rmdir
|
||||
signal
|
||||
sleep
|
||||
spawnve
|
||||
strdup
|
||||
stricmp
|
||||
strnicmp
|
||||
strupr
|
||||
sys_nerr
|
||||
tzname
|
||||
tzset
|
||||
umask
|
||||
unlink
|
||||
utimbuf
|
||||
utime
|
||||
wait (also movemail.c [WINDOWSNT])
|
||||
write
|
||||
|
||||
lib-src/ntlib:
|
||||
access
|
||||
chdir
|
||||
chmod
|
||||
creat
|
||||
dup
|
||||
dup2
|
||||
execlp
|
||||
execvp
|
||||
fdopen
|
||||
fileno
|
||||
fopen
|
||||
getpid
|
||||
index
|
||||
isatty
|
||||
lseek
|
||||
mkdir
|
||||
mktemp
|
||||
open
|
||||
pclose
|
||||
pipe
|
||||
popen
|
||||
rmdir
|
||||
rindex
|
||||
sleep
|
||||
umask
|
||||
unlink
|
||||
utime
|
||||
2595
admin/ChangeLog.1
Normal file
2595
admin/ChangeLog.1
Normal file
File diff suppressed because it is too large
Load diff
343
admin/MAINTAINERS
Normal file
343
admin/MAINTAINERS
Normal file
|
|
@ -0,0 +1,343 @@
|
|||
Emacs Maintainers
|
||||
|
||||
This file contains a description of who is responsible for maintaining
|
||||
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 (co-)maintainers of Emacs are:
|
||||
|
||||
Eli Zaretskii <eliz@gnu.org>
|
||||
Stefan Kangas <stefankangas@gmail.com>
|
||||
Andrea Corallo <acorallo@gnu.org>
|
||||
|
||||
==============================================================================
|
||||
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.
|
||||
==============================================================================
|
||||
|
||||
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
|
||||
msdos/*
|
||||
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/msdos.texi
|
||||
|
||||
Kenichi Handa
|
||||
Mule
|
||||
|
||||
Stefan Monnier
|
||||
src/regex-emacs.c
|
||||
src/syntax.c
|
||||
src/keymap.c
|
||||
font-lock/jit-lock/syntax
|
||||
minor-mode/major-mode infrastructure
|
||||
text filling
|
||||
minibuffer completion
|
||||
lisp/outline.el
|
||||
|
||||
Bastien Guerry
|
||||
Org
|
||||
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/url/url-tramp.el
|
||||
test/lisp/url/url-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/lisp/net/dbus-tests.el
|
||||
|
||||
File Notifications
|
||||
src/gfilenotify.c
|
||||
src/kqueue.c
|
||||
lisp/filenotify.el
|
||||
test/lisp/filenotify-tests.el
|
||||
|
||||
Simen Heggestøyl
|
||||
lisp/textmodes/css-mode.el
|
||||
|
||||
Nicolas Petton
|
||||
lisp/emacs-lisp/map.el
|
||||
test/lisp/emac-lisp/map-tests.el
|
||||
lisp/emacs-lisp/seq.el
|
||||
test/lisp/emac-lisp/seq-tests.el
|
||||
lisp/emacs-lisp/thunk.el
|
||||
test/lisp/emac-lisp/thunk-tests.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/lisp/progmodes/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/lisp/net/newsticker-tests.el
|
||||
|
||||
Icalendar
|
||||
lisp/calendar/icalendar.el
|
||||
test/lisp/calendar/icalendar-tests.el
|
||||
|
||||
Amin Bandali
|
||||
ERC
|
||||
lisp/erc/*
|
||||
doc/misc/erc.texi
|
||||
|
||||
Andrea Corallo
|
||||
Lisp native compiler
|
||||
src/comp.c
|
||||
lisp/emacs-lisp/comp.el
|
||||
lisp/emacs-lisp/comp-cstr.el
|
||||
test/src/comp-*.el
|
||||
|
||||
Stefan Kangas
|
||||
admin/automerge
|
||||
admin/update_autogen
|
||||
|
||||
Po Lu
|
||||
The Haiku port:
|
||||
src/haikuterm.c
|
||||
src/haikufns.c
|
||||
src/haikuimage.c
|
||||
src/haikuselect.c
|
||||
src/haiku_io.c
|
||||
src/haiku.c
|
||||
src/haiku_select.cc
|
||||
src/haiku_support.cc
|
||||
src/haiku_font_support.cc
|
||||
src/haiku_draw_support.cc
|
||||
src/haikugui.h
|
||||
src/haikuterm.h
|
||||
src/haikuselect.h
|
||||
src/haiku_support.h
|
||||
lisp/term/haiku-win.el
|
||||
doc/emacs/haiku.texi
|
||||
|
||||
Haiku battery support in lisp/battery.el
|
||||
|
||||
==============================================================================
|
||||
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/*
|
||||
|
||||
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
|
||||
lisp/hexl.el
|
||||
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
|
||||
src/keyboard.c
|
||||
lisp/textmodes/tex-mode.el
|
||||
lisp/progmodes/perl-mode.el
|
||||
lisp/progmodes/tcl.el
|
||||
lisp/emacs-lisp/easymenu.el
|
||||
|
||||
Artur Malabarba
|
||||
lisp/isearch.el
|
||||
|
||||
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)
|
||||
|
||||
Michael Albinus
|
||||
.gitlab-ci.yml
|
||||
src/inotify.c
|
||||
lisp/autorevert.el
|
||||
lisp/eshell/em-tramp.el
|
||||
lisp/files.el (file-name-non-special)
|
||||
lisp/net/ange-ftp.el
|
||||
lisp/notifications.el
|
||||
lisp/shadowfile.el
|
||||
test/infra/*
|
||||
test/lisp/autorevert-tests.el
|
||||
test/lisp/files-tests.el (file-name-non-special)
|
||||
test/lisp/shadowfile-tests.el
|
||||
test/src/inotify-test.el
|
||||
|
||||
Secret Service API in
|
||||
lisp/auth-source.el
|
||||
doc/misc/auth.texi
|
||||
test/lisp/auth-source-tests.el
|
||||
|
||||
Nicolas Petton
|
||||
lisp/emacs-lisp/subr-x.el
|
||||
lisp/arc-mode.el
|
||||
|
||||
Tassilo Horn
|
||||
lisp/doc-view.el
|
||||
|
||||
Dmitry Gutov
|
||||
lisp/whitespace.el
|
||||
lisp/vc/*
|
||||
|
||||
Vibhav Pant
|
||||
lisp/net/browse-url.el
|
||||
lisp/erc/*
|
||||
|
||||
Amin Bandali
|
||||
Eshell
|
||||
lisp/eshell/*
|
||||
doc/misc/eshell.texi
|
||||
|
||||
Po Lu
|
||||
The X port
|
||||
src/xterm.c
|
||||
src/xfns.c
|
||||
X11 and GTK xwidget support in src/xwidget.c
|
||||
Precision pixel scrolling in lisp/pixel-scroll.el
|
||||
|
||||
==============================================================================
|
||||
3. Externally maintained packages.
|
||||
==============================================================================
|
||||
|
||||
Tramp
|
||||
Maintainer: Michael Albinus
|
||||
Repository: git://git.savannah.gnu.org/tramp.git
|
||||
Mailing List: tramp-devel@gnu.org
|
||||
Bug Reports: M-x tramp-bug
|
||||
Notes: For backward compatibility requirements, see
|
||||
lisp/net/trampver.el.
|
||||
|
||||
lisp/net/tramp*.el
|
||||
doc/misc/tramp*.texi
|
||||
test/lisp/net/tramp*-tests.el
|
||||
|
||||
Modus themes
|
||||
Maintainer: Protesilaos Stavrou
|
||||
Repository: https://git.sr.ht/~protesilaos
|
||||
Mailing list: https://lists.sr.ht/~protesilaos/modus-themes
|
||||
Bug Reports: M-x modus-themes-report-bug
|
||||
|
||||
doc/misc/modus-themes.org
|
||||
etc/themes/modus*.el
|
||||
|
||||
Org Mode
|
||||
Home Page: https://orgmode.org/
|
||||
Maintainer: Org Mode developers
|
||||
Repository: git://git.sv.gnu.org/emacs/org-mode.git
|
||||
Mailing list: emacs-orgmode@gnu.org
|
||||
Bug Reports: M-x org-submit-bug-report
|
||||
Notes: Org Mode is maintained as a separate project that is
|
||||
periodically merged into Emacs. To view or participate in
|
||||
Org Mode development, please go to https://orgmode.org/ and
|
||||
follow the instructions there.
|
||||
|
||||
lisp/org/*.el
|
||||
etc/org/*
|
||||
etc/refcards/orgcard.tex
|
||||
doc/misc/org.org
|
||||
doc/misc/org-setup.org
|
||||
|
||||
|
||||
;;; Local Variables:
|
||||
;;; coding: utf-8
|
||||
;;; indent-tabs-mode: t
|
||||
;;; End:
|
||||
103
admin/README
Normal file
103
admin/README
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
Copyright (C) 2001-2024 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
|
||||
The admin directory
|
||||
|
||||
This directory contains scripts and other things useful for developing
|
||||
and maintaining Emacs. These files are not part of Emacs releases
|
||||
because they are not deemed generally useful, and you have to know
|
||||
what you do when using them.
|
||||
|
||||
|
||||
* Instructions and scripts used to prepare an Emacs release.
|
||||
|
||||
** release-process
|
||||
|
||||
The release process used by GNU Emacs.
|
||||
|
||||
** make-tarball.txt
|
||||
|
||||
Instructions to create pretest or release tarballs, announcements, etc.
|
||||
|
||||
** admin.el
|
||||
|
||||
Utilities for setting version numbers and alike.
|
||||
|
||||
|
||||
* Scripts that can be used to build and test Emacs.
|
||||
|
||||
** build-configs
|
||||
|
||||
Build Emacs in various configurations.
|
||||
|
||||
** make-emacs
|
||||
|
||||
Build Emacs in various ways.
|
||||
|
||||
** quick-install-emacs
|
||||
|
||||
Install emacs quickly ("incrementally").
|
||||
|
||||
** run-codespell
|
||||
|
||||
Run the codespell tool on the Emacs sources. Requires codespell to be
|
||||
installed first.
|
||||
|
||||
** alloc-colors.c
|
||||
|
||||
A utility program that allocates a given number of colors on X. Can
|
||||
be used to debug Emacs with dense colormaps (PseudoColor).
|
||||
|
||||
** check-doc-strings
|
||||
|
||||
Check doc strings against documentation.
|
||||
|
||||
** cus-test.el
|
||||
|
||||
Tests for custom types and load problems.
|
||||
|
||||
** diff-tar-files
|
||||
|
||||
Show files added/removed between two tar files.
|
||||
|
||||
|
||||
* Brief description of sub-directories.
|
||||
|
||||
charsets scripts for generating charset map files
|
||||
in ../etc/charsets
|
||||
coccinelle semantic patches for use with the static code
|
||||
analyzer coccinelle. Since they apply a few
|
||||
minor changes in Emacs internals in multiple
|
||||
places, they are trivial for copyright
|
||||
purposes.
|
||||
codespell supporting files for the run-codespell script.
|
||||
grammars wisent and bovine grammars, used to produce
|
||||
files in lisp/cedet/.
|
||||
notes miscellaneous notes related to administrative
|
||||
tasks.
|
||||
nt support files for administrative tasks related
|
||||
to building MS-Windows distributions.
|
||||
unidata scripts for generating character property files
|
||||
in ../lisp/international/.
|
||||
|
||||
|
||||
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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
Local variables:
|
||||
mode: outline
|
||||
paragraph-separate: "[ ]*$"
|
||||
end:
|
||||
1205
admin/admin.el
Normal file
1205
admin/admin.el
Normal file
File diff suppressed because it is too large
Load diff
114
admin/alloc-colors.c
Normal file
114
admin/alloc-colors.c
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
/* Allocate X colors. Used for testing with dense colormaps.
|
||||
|
||||
Copyright (C) 2001-2024 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 <https://www.gnu.org/licenses/>. */
|
||||
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
|
||||
void
|
||||
fatal (const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, fmt);
|
||||
vfprintf (stderr, fmt, ap);
|
||||
fputc ('\n', stderr);
|
||||
va_end (ap);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
void
|
||||
usage (const char *progname)
|
||||
{
|
||||
fprintf (stderr, "Usage %s options\n", progname);
|
||||
fprintf (stderr, "-n NCOLORS allocate NCOLORS colors\n");
|
||||
exit (1);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
Display *dpy;
|
||||
int opt, ncolors = 0, i;
|
||||
XColor *allocated;
|
||||
int nallocated;
|
||||
XColor color;
|
||||
Colormap cmap;
|
||||
|
||||
while ((opt = getopt (argc, argv, "n:")) != EOF)
|
||||
switch (opt)
|
||||
{
|
||||
case 'n':
|
||||
ncolors = atoi (optarg);
|
||||
break;
|
||||
|
||||
case '?':
|
||||
usage (argv[0]);
|
||||
}
|
||||
|
||||
if (ncolors == 0)
|
||||
usage (argv[0]);
|
||||
|
||||
dpy = XOpenDisplay ("");
|
||||
if (dpy == NULL)
|
||||
fatal ("Cannot open display");
|
||||
cmap = DefaultColormap (dpy, 0);
|
||||
|
||||
allocated = malloc (ncolors * sizeof *allocated);
|
||||
nallocated = 0;
|
||||
memset (&color, 0, sizeof color);
|
||||
|
||||
while (nallocated < ncolors
|
||||
&& color.red < 65536)
|
||||
{
|
||||
allocated[nallocated] = color;
|
||||
if (XAllocColor (dpy, cmap, &allocated[nallocated]))
|
||||
{
|
||||
for (i = 0; i < nallocated; ++i)
|
||||
if (allocated[i].red == allocated[nallocated].red
|
||||
&& allocated[i].green == allocated[nallocated].green
|
||||
&& allocated[i].blue == allocated[nallocated].blue)
|
||||
break;
|
||||
|
||||
if (i == nallocated)
|
||||
{
|
||||
printf ("allocated %d/%d/%d\n",
|
||||
allocated[nallocated].red,
|
||||
allocated[nallocated].green,
|
||||
allocated[nallocated].blue);
|
||||
++nallocated;
|
||||
}
|
||||
}
|
||||
|
||||
++color.red;
|
||||
++color.green;
|
||||
++color.blue;
|
||||
}
|
||||
|
||||
fprintf (stderr, "Waiting. Press ^C to stop.\n");
|
||||
while (1)
|
||||
sleep (10);
|
||||
|
||||
XCloseDisplay (dpy);
|
||||
return 0;
|
||||
}
|
||||
2203
admin/authors.el
Normal file
2203
admin/authors.el
Normal file
File diff suppressed because it is too large
Load diff
248
admin/automerge
Executable file
248
admin/automerge
Executable file
|
|
@ -0,0 +1,248 @@
|
|||
#!/bin/bash
|
||||
### automerge - automatically merge the Emacs release branch to master
|
||||
|
||||
## Copyright (C) 2018-2024 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Glenn Morris <rgm@gnu.org>
|
||||
## Maintainer: Stefan Kangas <stefankangas@gmail.com>
|
||||
|
||||
## 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
### Commentary:
|
||||
|
||||
## Automatically merge the Emacs release branch to master.
|
||||
## If the merge succeeds, optionally build and test the results,
|
||||
## and then push it.
|
||||
## Intended usage:
|
||||
## Have a dedicated git directory just for this.
|
||||
## Have a cron job that calls this script with -r -p.
|
||||
##
|
||||
## Modifying a running shell script can have unpredictable results,
|
||||
## so the paranoid will first make a copy of this script, and then run
|
||||
## it with the -d option in the repository directory, in case a pull
|
||||
## updates this script while it is working.
|
||||
|
||||
source "${0%/*}/emacs-shell-lib"
|
||||
|
||||
usage ()
|
||||
{
|
||||
cat 1>&2 <<EOF
|
||||
Usage: ${PN} [-b] [-d] [-e emacs] [-n nmin] [-p] [-r] [-t] [-- mflags]
|
||||
Merge the Emacs release branch to master.
|
||||
Passes any non-option args to make (eg -- -j2).
|
||||
Options:
|
||||
-d: no initial cd to parent of script directory
|
||||
-e: Emacs executable to use for the initial merge (default $emacs)
|
||||
-n: minimum number of commits to try merging (default $nmin)
|
||||
-b: try to build after merging
|
||||
-t: try to check after building
|
||||
-p: if merge, build, check all succeed, push when finished (caution!)
|
||||
-r: start by doing a hard reset (caution!) and pull
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
## Defaults.
|
||||
|
||||
emacs=emacs
|
||||
nmin=10
|
||||
build=
|
||||
test=
|
||||
push=
|
||||
quiet=
|
||||
reset=
|
||||
nocd=
|
||||
|
||||
while getopts ":hbde:n:pqrt" option ; do
|
||||
case $option in
|
||||
(h) usage ;;
|
||||
|
||||
(b) build=1 ;;
|
||||
|
||||
(d) nocd=1 ;;
|
||||
|
||||
(e) emacs=$OPTARG ;;
|
||||
|
||||
(n) nmin=$OPTARG ;;
|
||||
|
||||
(p) push=1 ;;
|
||||
|
||||
(q) quiet=1 ;;
|
||||
|
||||
(r) reset=1 ;;
|
||||
|
||||
(t) test=1 ;;
|
||||
|
||||
(\?) die "Bad option -$OPTARG" ;;
|
||||
|
||||
(:) die "Option -$OPTARG requires an argument" ;;
|
||||
|
||||
(*) die "getopts error" ;;
|
||||
esac
|
||||
done
|
||||
shift $(( --OPTIND ))
|
||||
OPTIND=1
|
||||
|
||||
|
||||
[ "$nocd" ] || {
|
||||
# $PD should be the admin directory
|
||||
cd $PD || die "Could not change directory to $PD"
|
||||
cd ../
|
||||
}
|
||||
|
||||
[ -d admin ] || die "Could not locate admin directory"
|
||||
|
||||
[ -e .git ] || die "No .git"
|
||||
|
||||
|
||||
## Does not work 100% because a lot of Emacs batch output comes on
|
||||
## stderr (?).
|
||||
[ "$quiet" ] && exec 1> /dev/null
|
||||
|
||||
|
||||
[ "$push" ] && test=1
|
||||
[ "$test" ] && build=1
|
||||
|
||||
|
||||
tempfile="$(emacs_mktemp)"
|
||||
|
||||
|
||||
[ -e Makefile ] && [ "$build" ] && {
|
||||
echo "Cleaning..."
|
||||
make maintainer-clean >& /dev/null
|
||||
}
|
||||
|
||||
|
||||
[ "$reset" ] && {
|
||||
echo "Resetting..."
|
||||
git reset -q --hard origin/master || die "reset error"
|
||||
|
||||
echo "Pulling..."
|
||||
git pull -q --ff-only || die "pull error"
|
||||
}
|
||||
|
||||
|
||||
rev=$(git rev-parse HEAD)
|
||||
|
||||
[ "$(git rev-parse @{u})" = "$rev" ] || die "Local state does not match origin"
|
||||
|
||||
|
||||
merge ()
|
||||
{
|
||||
echo "Merging..."
|
||||
|
||||
if $emacs --batch -Q -l ./admin/gitmerge.el \
|
||||
--eval "(setq gitmerge-minimum-missing $nmin)" -f gitmerge \
|
||||
>| "$tempfile" 2>&1; then
|
||||
echo "merged ok"
|
||||
return 0
|
||||
|
||||
else
|
||||
grep -E "Nothing to merge|Number of missing commits" "$tempfile" && \
|
||||
exit 0
|
||||
|
||||
cat "$tempfile" 1>&2
|
||||
|
||||
die "merge error"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
merge
|
||||
|
||||
|
||||
## FIXME it would be better to trap this in gitmerge.
|
||||
## NEWS should never be modified, only eg NEWS.26.
|
||||
git diff --stat --cached origin/master | grep -q "etc/NEWS " && \
|
||||
die "etc/NEWS has been modified"
|
||||
|
||||
|
||||
[ "$build" ] || exit 0
|
||||
|
||||
|
||||
echo "Running autoreconf..."
|
||||
|
||||
autoreconf -i -I m4 2>| "$tempfile"
|
||||
|
||||
retval=$?
|
||||
|
||||
## Annoyingly, autoreconf puts the "installing `./foo' messages on stderr.
|
||||
if [ "$quiet" ]; then
|
||||
grep -v 'installing `\.' "$tempfile" 1>&2
|
||||
else
|
||||
cat "$tempfile" 1>&2
|
||||
fi
|
||||
|
||||
[ $retval -ne 0 ] && die "autoreconf error"
|
||||
|
||||
|
||||
echo "Running ./configure..."
|
||||
|
||||
## Minimize required packages.
|
||||
./configure --without-x || die "configure error"
|
||||
|
||||
|
||||
echo "Building..."
|
||||
|
||||
make "$@" || die "make error"
|
||||
|
||||
echo "Build finished ok"
|
||||
|
||||
|
||||
[ "$test" ] || exit 0
|
||||
|
||||
|
||||
echo "Testing..."
|
||||
|
||||
## We just want a fast pass/fail, we don't want to debug.
|
||||
make "$@" check TEST_LOAD_EL=no || die "check error"
|
||||
|
||||
echo "Tests finished ok"
|
||||
|
||||
|
||||
[ "$push" ] || exit 0
|
||||
|
||||
|
||||
## In case someone else pushed while we were working.
|
||||
echo "Checking for remote changes..."
|
||||
git fetch || die "fetch error"
|
||||
|
||||
[ "$(git rev-parse @{u})" = "$rev" ] || {
|
||||
|
||||
echo "Upstream has changed"
|
||||
|
||||
## Rebasing would be incorrect, since it would rewrite the
|
||||
## (already published) release branch commits.
|
||||
## Ref eg https://lists.gnu.org/r/emacs-devel/2014-12/msg01435.html
|
||||
## Instead, we throw away what we just did, and do the merge again.
|
||||
echo "Resetting..."
|
||||
git reset --hard "$rev"
|
||||
|
||||
echo "Pulling..."
|
||||
git pull --ff-only || die "pull error"
|
||||
|
||||
merge
|
||||
|
||||
## If the merge finished ok again, we don't bother doing a second
|
||||
## build and test.
|
||||
}
|
||||
|
||||
echo "Pushing..."
|
||||
git push || die "push error"
|
||||
|
||||
|
||||
exit 0
|
||||
99
admin/build-configs
Executable file
99
admin/build-configs
Executable file
|
|
@ -0,0 +1,99 @@
|
|||
#! /usr/bin/perl
|
||||
# Build Emacs in several different configurations.
|
||||
|
||||
# Copyright (C) 2001-2024 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
require 5;
|
||||
use strict;
|
||||
use warnings;
|
||||
use Getopt::Long;
|
||||
use File::Basename;
|
||||
use Cwd;
|
||||
|
||||
@configs =
|
||||
(
|
||||
["--without-x", "--optim"],
|
||||
["--without-x-toolkit", "--optim"],
|
||||
["--without-toolkit-scroll-bars", "--optim"],
|
||||
["--with-x-toolkit=lucid", "--optim"],
|
||||
["--with-x-toolkit=motif", "--optim"],
|
||||
["--with-x-toolkit=motif", "--enable-checking"],
|
||||
["--with-x-toolkit=motif", "--gcc3"],
|
||||
["--with-x-toolkit=motif", ""],
|
||||
);
|
||||
|
||||
$log = "/tmp/$$.out";
|
||||
print "Using log file $log\n";
|
||||
unlink $log;
|
||||
|
||||
$root = $ENV{"EMACS_ROOT"};
|
||||
$root = "/gd/gnu/emacs" unless $root;
|
||||
|
||||
$rc = GetOptions ("help" => \$help);
|
||||
if ($rc == 0 || $help)
|
||||
{
|
||||
print <<USAGE;
|
||||
build-configs
|
||||
|
||||
Build Emacs in different configurations.
|
||||
|
||||
--help show this help
|
||||
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
|
||||
# Chdir to the top-level directory of the tree. If not in a tree
|
||||
# containing Emacs, use the default.
|
||||
|
||||
while (! -f "src/emacs.c" && cwd () ne "/")
|
||||
{
|
||||
chdir "..";
|
||||
}
|
||||
|
||||
chdir $root if cwd () eq "/";
|
||||
print "Build in ", cwd (), "\n";
|
||||
|
||||
foreach $config (@configs)
|
||||
{
|
||||
my $configure_options = @$config[0];
|
||||
my $make_options = @$config[1];
|
||||
my $rc;
|
||||
|
||||
print "$configure_options, $make_options\n";
|
||||
unlink "config.cache";
|
||||
|
||||
$rc = system ("$root/configure $configure_options >>$log 2>&1");
|
||||
if ($rc != 0)
|
||||
{
|
||||
print "configure failed\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
$rc = system ("make-emacs --all $make_options >>$log 2>&1");
|
||||
if ($rc != 0)
|
||||
{
|
||||
print "Make failed\n";
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
|
||||
# Local Variables:
|
||||
# mode: cperl
|
||||
# End:
|
||||
314
admin/charsets/Makefile.in
Normal file
314
admin/charsets/Makefile.in
Normal file
|
|
@ -0,0 +1,314 @@
|
|||
### @configure_input@
|
||||
|
||||
# Copyright (C) 2015-2024 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
### Commentary:
|
||||
|
||||
# Generate charset maps in etc/charsets.
|
||||
|
||||
SHELL = @SHELL@
|
||||
|
||||
AWK = @AWK@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
top_builddir = @top_builddir@
|
||||
|
||||
charsetdir = ${top_srcdir}/etc/charsets
|
||||
lispintdir = ${top_srcdir}/lisp/international
|
||||
mapfiledir = ${srcdir}/mapfiles
|
||||
|
||||
GLIBC_CHARMAPS = ${srcdir}/glibc
|
||||
|
||||
-include ${top_builddir}/src/verbose.mk
|
||||
|
||||
# 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 = $(srcdir)/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 "# https://web.archive.org/web/20100131045151/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} > $@
|
||||
|
||||
$(SED_SCRIPT): ${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} \
|
||||
$(SED_SCRIPT)
|
||||
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \
|
||||
| sed -f $(SED_SCRIPT) \
|
||||
| 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:
|
||||
# https://bogytech.blogspot.com/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 gen-clean
|
||||
|
||||
clean:
|
||||
|
||||
## IMO this should also run gen-clean.
|
||||
bootstrap-clean: clean
|
||||
|
||||
distclean: clean
|
||||
rm -f Makefile
|
||||
|
||||
gen-clean:
|
||||
rm -f ${CHARSETS} ${SED_SCRIPT} ${TRANS_TABLE} ${srcdir}/charsets.stamp
|
||||
|
||||
maintainer-clean: gen-clean distclean
|
||||
|
||||
70
admin/charsets/big5.awk
Normal file
70
admin/charsets/big5.awk
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
# 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
BEGIN {
|
||||
tohex["A"] = 10;
|
||||
tohex["B"] = 11;
|
||||
tohex["C"] = 12;
|
||||
tohex["D"] = 13;
|
||||
tohex["E"] = 14;
|
||||
tohex["F"] = 15;
|
||||
tohex["a"] = 10;
|
||||
tohex["b"] = 11;
|
||||
tohex["c"] = 12;
|
||||
tohex["d"] = 13;
|
||||
tohex["e"] = 14;
|
||||
tohex["f"] = 15;
|
||||
}
|
||||
|
||||
function decode_hex(str) {
|
||||
n = 0;
|
||||
len = length(str);
|
||||
for (i = 1; i <= len; i++)
|
||||
{
|
||||
c = substr (str, i, 1);
|
||||
if (c >= "0" && c <= "9")
|
||||
n = n * 16 + (c - "0");
|
||||
else
|
||||
n = n * 16 + tohex[c];
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
function decode_big5(big5) {
|
||||
b0 = int(big5 / 256);
|
||||
b1 = big5 % 256;
|
||||
# (0xFF - 0xA1 + 0x7F - 0x40) = 157
|
||||
# (0xA1 - (0x7F - 0x40)) = 98
|
||||
# (0xC9 - 0xA1) * (0xFF - 0xA1 + 0x7F - 0x40) = 6280
|
||||
if (b1 < 127)
|
||||
idx = (b0 - 161) * 157 + (b1 - 64);
|
||||
else
|
||||
idx = (b0 - 161) * 157 + (b1 - 98);
|
||||
if (b0 >= 201)
|
||||
idx -= 6280;
|
||||
b0 = int(idx / 94) + 33;
|
||||
b1 = (idx % 94) + 33;
|
||||
return (b0 * 256 + b1)
|
||||
}
|
||||
|
||||
{
|
||||
big5 = decode_hex($1);
|
||||
code = decode_big5(big5);
|
||||
printf "0x%04X %s\n", code, $2;
|
||||
}
|
||||
121
admin/charsets/compact.awk
Normal file
121
admin/charsets/compact.awk
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
# compact.awk -- Make charset map compact.
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
# Commentary:
|
||||
# Make a charset map compact by changing this kind of line sequence:
|
||||
# 0x00 0x0000
|
||||
# 0x01 0x0001
|
||||
# ...
|
||||
# 0x7F 0x007F
|
||||
# to one line of this format:
|
||||
# 0x00-0x7F 0x0000
|
||||
|
||||
BEGIN {
|
||||
tohex["0"] = 1;
|
||||
tohex["1"] = 2;
|
||||
tohex["2"] = 3;
|
||||
tohex["3"] = 4;
|
||||
tohex["4"] = 5;
|
||||
tohex["5"] = 6;
|
||||
tohex["6"] = 7;
|
||||
tohex["7"] = 8;
|
||||
tohex["8"] = 9;
|
||||
tohex["9"] = 10;
|
||||
tohex["A"] = 11;
|
||||
tohex["B"] = 12;
|
||||
tohex["C"] = 13;
|
||||
tohex["D"] = 14;
|
||||
tohex["E"] = 15;
|
||||
tohex["F"] = 16;
|
||||
tohex["a"] = 11;
|
||||
tohex["b"] = 12;
|
||||
tohex["c"] = 13;
|
||||
tohex["d"] = 14;
|
||||
tohex["e"] = 15;
|
||||
tohex["f"] = 16;
|
||||
from_code = 0;
|
||||
to_code = -1;
|
||||
to_unicode = 0;
|
||||
from_unicode = 0;
|
||||
}
|
||||
|
||||
function decode_hex(str, idx) {
|
||||
n = 0;
|
||||
len = length(str);
|
||||
for (i = idx; i <= len; i++)
|
||||
{
|
||||
c = tohex[substr (str, i, 1)];
|
||||
if (c == 0)
|
||||
break;
|
||||
n = n * 16 + c - 1;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
/^#/ {
|
||||
print;
|
||||
next;
|
||||
}
|
||||
|
||||
{
|
||||
code = decode_hex($1, 3);
|
||||
unicode = decode_hex($2, 3);
|
||||
if ((code == to_code + 1) && (unicode == to_unicode + 1))
|
||||
{
|
||||
to_code++;
|
||||
to_unicode++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (to_code < 256)
|
||||
{
|
||||
if (from_code == to_code)
|
||||
printf "0x%02X 0x%04X\n", from_code, from_unicode;
|
||||
else if (from_code < to_code)
|
||||
printf "0x%02X-0x%02X 0x%04X\n", from_code, to_code, from_unicode;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (from_code == to_code)
|
||||
printf "0x%04X 0x%04X\n", from_code, from_unicode;
|
||||
else if (from_code < to_code)
|
||||
printf "0x%04X-0x%04X 0x%04X\n", from_code, to_code, from_unicode;
|
||||
}
|
||||
from_code = to_code = code;
|
||||
from_unicode = to_unicode = unicode;
|
||||
}
|
||||
}
|
||||
|
||||
END {
|
||||
if (to_code < 256)
|
||||
{
|
||||
if (from_code == to_code)
|
||||
printf "0x%02X 0x%04X\n", from_code, from_unicode;
|
||||
else
|
||||
printf "0x%02X-0x%02X 0x%04X\n", from_code, to_code, from_unicode;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (from_code == to_code)
|
||||
printf "0x%04X 0x%04X\n", from_code, from_unicode;
|
||||
else
|
||||
printf "0x%04X-0x%04X 0x%04X\n", from_code, to_code, from_unicode;
|
||||
}
|
||||
}
|
||||
58
admin/charsets/cp51932.awk
Normal file
58
admin/charsets/cp51932.awk
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
# cp51932.awk -- Generate a translation table for CP51932.
|
||||
# Copyright (C) 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
# Commentary:
|
||||
|
||||
# Generate a translation table for CP51932 (EUC-JP of MicroSoft Version).
|
||||
# It maps invalid JISX0208 code points used by CP51932 to Unicode.
|
||||
# 4th field of the input has these meanings:
|
||||
# 0: JISX0208 characters.
|
||||
# 1: NEC special characters.
|
||||
# 2: IBM extension characters.
|
||||
# 3: NEC selection of IBM extension characters.
|
||||
# Among them, 1 and 3 are the target characters. 2 should have
|
||||
# already been mapped to 1 or 3.
|
||||
|
||||
BEGIN {
|
||||
print ";;; cp51932.el -- translation table for CP51932 -*- lexical-binding:t -*-";
|
||||
print ";;; Automatically generated from CP932-2BYTE.map";
|
||||
print "(let ((map";
|
||||
printf " '(;JISEXT<->UNICODE";
|
||||
}
|
||||
|
||||
/# [13]/ {
|
||||
printf "\n (#x%s . #x%s)", $5 ,substr($2, 3, 4);
|
||||
}
|
||||
|
||||
END {
|
||||
print ")))";
|
||||
print " (setq map (mapcar (lambda (x)";
|
||||
print " (cons (decode-char 'japanese-jisx0208 (car x))";
|
||||
print " (cdr x)))";
|
||||
print " map))";
|
||||
print " (define-translation-table 'cp51932-decode map)";
|
||||
print " (mapc (lambda (x)";
|
||||
print " (let ((tmp (car x)))";
|
||||
print " (setcar x (cdr x)) (setcdr x tmp)))";
|
||||
print " map)";
|
||||
print " (define-translation-table 'cp51932-encode map))";
|
||||
print "";
|
||||
print "(provide 'cp51932)";
|
||||
}
|
||||
114
admin/charsets/cp932.awk
Normal file
114
admin/charsets/cp932.awk
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
# cp932.awk -- Add sort keys and append user defined area to CP932-2BYTE.map.
|
||||
# Copyright (C) 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
# Commentary:
|
||||
|
||||
# Add a sort key 0, 1, 2, or 3 at the tail of each line as a comment
|
||||
# to realize the round trip mapping to Unicode works as described in
|
||||
# https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT
|
||||
# Each sort key means as below:
|
||||
# 0: JISX0208 characters.
|
||||
# 1: NEC special characters.
|
||||
# 2: IBM extension characters.
|
||||
# 3: NEC selection of IBM extension characters.
|
||||
# 4: user defined area
|
||||
|
||||
BEGIN {
|
||||
tohex["A"] = 10;
|
||||
tohex["B"] = 11;
|
||||
tohex["C"] = 12;
|
||||
tohex["D"] = 13;
|
||||
tohex["E"] = 14;
|
||||
tohex["F"] = 15;
|
||||
}
|
||||
|
||||
function decode_hex(str) {
|
||||
n = 0;
|
||||
len = length(str);
|
||||
for (i = 1; i <= len; i++)
|
||||
{
|
||||
c = substr(str, i, 1);
|
||||
if (c >= "0" && c <= "9")
|
||||
n = n * 16 + (c - "0");
|
||||
else
|
||||
n = n * 16 + tohex[c];
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
function sjis_to_jis_ku(code)
|
||||
{
|
||||
s1 = int(code / 256);
|
||||
s2 = code % 256;
|
||||
if (s2 >= 159) # s2 >= 0x9F
|
||||
{
|
||||
if (s1 >= 224) # s1 >= 0xE0
|
||||
j1 = s1 * 2 - 352; # j1 = s1 * 2 - 0x160
|
||||
else
|
||||
j1 = s1 * 2 - 224; # j1 = s1 * 2 - 0xE0
|
||||
j2 = s2 - 126 # j2 = s2 - #x7E
|
||||
}
|
||||
else
|
||||
{
|
||||
if (s1 >= 224)
|
||||
j1 = s1 * 2 - 353; # j1 = s1 * 2 - 0x161
|
||||
else
|
||||
j1 = s1 * 2 - 225; # j1 = s1 * 2 - 0xE1
|
||||
if (s2 >= 127) # s2 >= #x7F
|
||||
j2 = s2 - 32;
|
||||
else
|
||||
j2 = s2 - 31;
|
||||
}
|
||||
return j1 - 32;
|
||||
}
|
||||
|
||||
/^0x[89E]/ {
|
||||
sjis=decode_hex(substr($1, 3, 4))
|
||||
ku=sjis_to_jis_ku(sjis);
|
||||
if (ku == 13)
|
||||
printf "%s # 1 %02X%02X\n", $0, j1, j2;
|
||||
else if (ku >= 89 && ku <= 92)
|
||||
printf "%s # 3 %02X%02X\n", $0, j1, j2;
|
||||
else
|
||||
printf "%s # 0 %02X%02X\n", $0, j1, j2;
|
||||
next;
|
||||
}
|
||||
|
||||
/^0xF/ {
|
||||
printf "%s # 2\n", $0;
|
||||
next;
|
||||
}
|
||||
|
||||
{
|
||||
print;
|
||||
}
|
||||
|
||||
END {
|
||||
code = 57344; # 0xE000
|
||||
for (i = 240; i < 250; i++)
|
||||
{
|
||||
for (j = 64; j <= 126; j++)
|
||||
printf "0x%02X%02X 0x%04X # 4\n", i, j, code++;
|
||||
for (j = 128; j <= 158; j++)
|
||||
printf "0x%02X%02X 0x%04X # 4\n", i, j, code++;
|
||||
for (; j <= 252; j++)
|
||||
printf "0x%02X%02X 0x%04X # 4\n", i, j, code++;
|
||||
}
|
||||
}
|
||||
113
admin/charsets/eucjp-ms.awk
Normal file
113
admin/charsets/eucjp-ms.awk
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
# eucjp-ms.awk -- Generate a translation table for eucJP-ms.
|
||||
# Copyright (C) 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
# Commentary:
|
||||
|
||||
# eucJP-ms is one of eucJP-open encoding defined at this page:
|
||||
# https://web.archive.org/web/20120207064433/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'.
|
||||
|
||||
BEGIN {
|
||||
FS = "[ \t][ \t]*"
|
||||
|
||||
# STATE: 0/ignore, 1/JISX0208, 2/JISX0208 target range
|
||||
# 3/JISX0212 4/JISX0212 target range
|
||||
state = 0;
|
||||
|
||||
JISX0208_FROM1 = "/xad/xa1";
|
||||
JISX0208_TO1 = "/xad/xfc";
|
||||
JISX0208_FROM2 = "/xf5/xa1";
|
||||
JISX0212_FROM = "/x8f/xf3/xf3";
|
||||
|
||||
print ";;; eucjp-ms.el --- translation table for eucJP-ms -*- lexical-binding:t -*-";
|
||||
print ";;; Automatically generated from /usr/share/i18n/charmaps/EUC-JP-MS.gz";
|
||||
print "(let ((map";
|
||||
print " '(;JISEXT<->UNICODE";
|
||||
}
|
||||
|
||||
function write_entry (unicode) {
|
||||
if (state == 1) {
|
||||
if ($2 == JISX0208_FROM1 || $2 == JISX0208_FROM2)
|
||||
state = 2;
|
||||
} else if (state == 3) {
|
||||
if ($2 == JISX0212_FROM)
|
||||
state = 4;
|
||||
}
|
||||
if (state == 2) {
|
||||
jis = $2
|
||||
gsub("/x", "", jis);
|
||||
printf "\n (#x%s . #x%s)", jis, unicode;
|
||||
if ($2 == JISX0208_TO1)
|
||||
state = 1;
|
||||
} else if (state == 4) {
|
||||
jis = substr($2, 5, 8);
|
||||
gsub("/x", "", jis);
|
||||
printf "\n (#x%s #x%s)", jis, unicode;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/^% JIS X 0208/ {
|
||||
state = 1;
|
||||
next;
|
||||
}
|
||||
|
||||
/^% JIS X 0212/ {
|
||||
state = 3;
|
||||
next;
|
||||
}
|
||||
|
||||
/^END CHARMAP/ {
|
||||
state = 0;
|
||||
next;
|
||||
}
|
||||
|
||||
/^<U[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]>/ {
|
||||
if (state > 0)
|
||||
write_entry(substr($1, 3, 4));
|
||||
}
|
||||
|
||||
/^%IRREVERSIBLE%<U[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]>/ {
|
||||
if (state > 0)
|
||||
write_entry(substr($1, 17, 4));
|
||||
}
|
||||
|
||||
END {
|
||||
print ")))";
|
||||
print " (setq map";
|
||||
print " (mapcar";
|
||||
print " (lambda (x)";
|
||||
print " (let ((code (logand (car x) #x7F7F)))";
|
||||
print " (if (integerp (cdr x))";
|
||||
print " (cons (decode-char 'japanese-jisx0208 code) (cdr x))";
|
||||
print " (cons (decode-char 'japanese-jisx0212 code)"
|
||||
print " (cadr x)))))";
|
||||
print " map))";
|
||||
print " (define-translation-table 'eucjp-ms-decode map)";
|
||||
print " (mapc (lambda (x)";
|
||||
print " (let ((tmp (car x)))";
|
||||
print " (setcar x (cdr x)) (setcdr x tmp)))";
|
||||
print " map)";
|
||||
print " (define-translation-table 'eucjp-ms-encode map))";
|
||||
print "";
|
||||
print "(provide 'eucjp-ms)";
|
||||
}
|
||||
110
admin/charsets/gb180302.awk
Normal file
110
admin/charsets/gb180302.awk
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
# 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
BEGIN {
|
||||
tohex["A"] = 10;
|
||||
tohex["B"] = 11;
|
||||
tohex["C"] = 12;
|
||||
tohex["D"] = 13;
|
||||
tohex["E"] = 14;
|
||||
tohex["F"] = 15;
|
||||
tohex["a"] = 10;
|
||||
tohex["b"] = 11;
|
||||
tohex["c"] = 12;
|
||||
tohex["d"] = 13;
|
||||
tohex["e"] = 14;
|
||||
tohex["f"] = 15;
|
||||
from_gb = 0;
|
||||
to_gb = -1;
|
||||
to_unicode = 0;
|
||||
from_unicode = 0;
|
||||
}
|
||||
|
||||
function decode_hex(str) {
|
||||
n = 0;
|
||||
len = length(str);
|
||||
for (i = 1; i <= len; i++)
|
||||
{
|
||||
c = substr (str, i, 1);
|
||||
if (c >= "0" && c <= "9")
|
||||
n = n * 16 + (c - "0");
|
||||
else
|
||||
n = n * 16 + tohex[c];
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
function gb_to_index(gb) {
|
||||
b0 = int(gb / 256);
|
||||
b1 = gb % 256;
|
||||
idx = (((b0 - 129)) * 191 + b1 - 64);
|
||||
# if (b1 >= 128)
|
||||
# idx--;
|
||||
return idx
|
||||
}
|
||||
|
||||
function index_to_gb(idx) {
|
||||
b0 = int(idx / 191) + 129;
|
||||
b1 = (idx % 191) + 64;
|
||||
# if (b1 >= 127)
|
||||
# b1++;
|
||||
return (b0 * 256 + b1);
|
||||
}
|
||||
|
||||
/^#/ {
|
||||
print;
|
||||
next;
|
||||
}
|
||||
|
||||
{
|
||||
gb = gb_to_index(decode_hex(substr($1, 3, 4)));
|
||||
unicode = decode_hex(substr($2, 3));
|
||||
if ((gb == to_gb + 1) && (unicode == to_unicode + 1))
|
||||
{
|
||||
to_gb++;
|
||||
to_unicode++;
|
||||
}
|
||||
else if (gb > to_gb) # ignore the case gb == to_gb that is a duplication
|
||||
{
|
||||
if (from_gb == to_gb)
|
||||
{
|
||||
if (from_unicode <= 65535)
|
||||
printf "0x%04X 0x%04X\n", index_to_gb(from_gb), from_unicode;
|
||||
else
|
||||
printf "0x%04X 0x%08X\n", index_to_gb(from_gb), from_unicode;
|
||||
}
|
||||
else if (from_gb < to_gb)
|
||||
{
|
||||
if (from_unicode <= 65535)
|
||||
printf "0x%04X-0x%04X 0x%04X\n",
|
||||
index_to_gb(from_gb), index_to_gb(to_gb), from_unicode;
|
||||
else
|
||||
printf "0x%04X-0x%04X 0x%08X\n",
|
||||
index_to_gb(from_gb), index_to_gb(to_gb), from_unicode;
|
||||
}
|
||||
from_gb = to_gb = gb;
|
||||
from_unicode = to_unicode = unicode;
|
||||
}
|
||||
}
|
||||
|
||||
END {
|
||||
if (from_gb <= to_gb)
|
||||
printf "0x%04X-0x%04X 0x%04X\n",
|
||||
index_to_gb(from_gb), index_to_gb(to_gb), from_unicode;
|
||||
}
|
||||
121
admin/charsets/gb180304.awk
Normal file
121
admin/charsets/gb180304.awk
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
# 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
BEGIN {
|
||||
tohex["A"] = 10;
|
||||
tohex["B"] = 11;
|
||||
tohex["C"] = 12;
|
||||
tohex["D"] = 13;
|
||||
tohex["E"] = 14;
|
||||
tohex["F"] = 15;
|
||||
tohex["a"] = 10;
|
||||
tohex["b"] = 11;
|
||||
tohex["c"] = 12;
|
||||
tohex["d"] = 13;
|
||||
tohex["e"] = 14;
|
||||
tohex["f"] = 15;
|
||||
}
|
||||
|
||||
function decode_hex(str) {
|
||||
n = 0;
|
||||
len = length(str);
|
||||
for (i = 1; i <= len; i++)
|
||||
{
|
||||
c = substr (str, i, 1);
|
||||
if (c >= "0" && c <= "9")
|
||||
n = n * 16 + (c - "0");
|
||||
else
|
||||
n = n * 16 + tohex[c];
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
function gb_to_index(gb) {
|
||||
b0 = int(gb / 256);
|
||||
b1 = gb % 256;
|
||||
idx = (((b0 - 129)) * 191 + b1 - 64);
|
||||
# if (b1 >= 127)
|
||||
# idx--;
|
||||
return idx
|
||||
}
|
||||
|
||||
function index_to_gb(idx) {
|
||||
b3 = (idx % 10) + 48;
|
||||
idx = int(idx / 10);
|
||||
b2 = (idx % 126) + 129;
|
||||
idx = int(idx / 126);
|
||||
b1 = (idx % 10) + 48;
|
||||
b0 = int(idx / 10) + 129;
|
||||
return sprintf("%02X%02X%02X%02X", b0, b1, b2, b3);
|
||||
}
|
||||
|
||||
/^#/ {
|
||||
print;
|
||||
next;
|
||||
}
|
||||
|
||||
/0x....-0x..../ {
|
||||
gb_from = gb_to_index(decode_hex(substr($1, 3, 4)));
|
||||
gb_to = gb_to_index(decode_hex(substr($1, 10, 4)));
|
||||
unicode = decode_hex(substr($2, 3, 4));
|
||||
while (gb_from <= gb_to)
|
||||
{
|
||||
table[unicode++] = 1;
|
||||
gb_from++;
|
||||
}
|
||||
next;
|
||||
}
|
||||
|
||||
{
|
||||
gb = decode_hex(substr($1, 3, 4));
|
||||
unicode = decode_hex(substr($2, 3, 4));
|
||||
table[unicode] = 1;
|
||||
}
|
||||
|
||||
END {
|
||||
from_gb = -1;
|
||||
to_gb = 0;
|
||||
from_i = 0;
|
||||
table[65536] = 1;
|
||||
for (i = 128; i <= 65536; i++)
|
||||
{
|
||||
if (table[i] == 0)
|
||||
{
|
||||
if (i < 55296 || i >= 57344)
|
||||
{
|
||||
if (from_gb < 0)
|
||||
{
|
||||
from_gb = to_gb;
|
||||
from_i = i;
|
||||
}
|
||||
to_gb++;
|
||||
}
|
||||
}
|
||||
else if (from_gb >= 0)
|
||||
{
|
||||
if (from_gb + 1 == to_gb)
|
||||
printf "0x%s\t\t0x%04X\n",
|
||||
index_to_gb(from_gb), from_i;
|
||||
else
|
||||
printf "0x%s-0x%s\t0x%04X\n",
|
||||
index_to_gb(from_gb), index_to_gb(to_gb - 1), from_i;
|
||||
from_gb = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
admin/charsets/glibc/BIG5-HKSCS.gz
Normal file
BIN
admin/charsets/glibc/BIG5-HKSCS.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/BIG5.gz
Normal file
BIN
admin/charsets/glibc/BIG5.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/CP10007.gz
Normal file
BIN
admin/charsets/glibc/CP10007.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/CP1125.gz
Normal file
BIN
admin/charsets/glibc/CP1125.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/CP1250.gz
Normal file
BIN
admin/charsets/glibc/CP1250.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/CP1251.gz
Normal file
BIN
admin/charsets/glibc/CP1251.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/CP1252.gz
Normal file
BIN
admin/charsets/glibc/CP1252.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/CP1253.gz
Normal file
BIN
admin/charsets/glibc/CP1253.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/CP1254.gz
Normal file
BIN
admin/charsets/glibc/CP1254.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/CP1255.gz
Normal file
BIN
admin/charsets/glibc/CP1255.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/CP1256.gz
Normal file
BIN
admin/charsets/glibc/CP1256.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/CP1257.gz
Normal file
BIN
admin/charsets/glibc/CP1257.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/CP1258.gz
Normal file
BIN
admin/charsets/glibc/CP1258.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/CP737.gz
Normal file
BIN
admin/charsets/glibc/CP737.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/CP775.gz
Normal file
BIN
admin/charsets/glibc/CP775.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/CP949.gz
Normal file
BIN
admin/charsets/glibc/CP949.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/EBCDIC-UK.gz
Normal file
BIN
admin/charsets/glibc/EBCDIC-UK.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/EBCDIC-US.gz
Normal file
BIN
admin/charsets/glibc/EBCDIC-US.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/EUC-JISX0213.gz
Normal file
BIN
admin/charsets/glibc/EUC-JISX0213.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/EUC-JP-MS.gz
Normal file
BIN
admin/charsets/glibc/EUC-JP-MS.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/EUC-JP.gz
Normal file
BIN
admin/charsets/glibc/EUC-JP.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/EUC-KR.gz
Normal file
BIN
admin/charsets/glibc/EUC-KR.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/EUC-TW.gz
Normal file
BIN
admin/charsets/glibc/EUC-TW.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/GB18030.gz
Normal file
BIN
admin/charsets/glibc/GB18030.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/GB2312.gz
Normal file
BIN
admin/charsets/glibc/GB2312.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/GBK.gz
Normal file
BIN
admin/charsets/glibc/GBK.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/GEORGIAN-ACADEMY.gz
Normal file
BIN
admin/charsets/glibc/GEORGIAN-ACADEMY.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/GEORGIAN-PS.gz
Normal file
BIN
admin/charsets/glibc/GEORGIAN-PS.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/HP-ROMAN8.gz
Normal file
BIN
admin/charsets/glibc/HP-ROMAN8.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM037.gz
Normal file
BIN
admin/charsets/glibc/IBM037.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM038.gz
Normal file
BIN
admin/charsets/glibc/IBM038.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM1004.gz
Normal file
BIN
admin/charsets/glibc/IBM1004.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM1026.gz
Normal file
BIN
admin/charsets/glibc/IBM1026.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM1047.gz
Normal file
BIN
admin/charsets/glibc/IBM1047.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM256.gz
Normal file
BIN
admin/charsets/glibc/IBM256.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM273.gz
Normal file
BIN
admin/charsets/glibc/IBM273.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM274.gz
Normal file
BIN
admin/charsets/glibc/IBM274.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM275.gz
Normal file
BIN
admin/charsets/glibc/IBM275.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM277.gz
Normal file
BIN
admin/charsets/glibc/IBM277.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM278.gz
Normal file
BIN
admin/charsets/glibc/IBM278.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM280.gz
Normal file
BIN
admin/charsets/glibc/IBM280.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM281.gz
Normal file
BIN
admin/charsets/glibc/IBM281.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM284.gz
Normal file
BIN
admin/charsets/glibc/IBM284.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM285.gz
Normal file
BIN
admin/charsets/glibc/IBM285.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM290.gz
Normal file
BIN
admin/charsets/glibc/IBM290.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM297.gz
Normal file
BIN
admin/charsets/glibc/IBM297.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM420.gz
Normal file
BIN
admin/charsets/glibc/IBM420.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM423.gz
Normal file
BIN
admin/charsets/glibc/IBM423.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM424.gz
Normal file
BIN
admin/charsets/glibc/IBM424.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM437.gz
Normal file
BIN
admin/charsets/glibc/IBM437.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM500.gz
Normal file
BIN
admin/charsets/glibc/IBM500.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM850.gz
Normal file
BIN
admin/charsets/glibc/IBM850.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM851.gz
Normal file
BIN
admin/charsets/glibc/IBM851.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM852.gz
Normal file
BIN
admin/charsets/glibc/IBM852.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM855.gz
Normal file
BIN
admin/charsets/glibc/IBM855.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM856.gz
Normal file
BIN
admin/charsets/glibc/IBM856.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM857.gz
Normal file
BIN
admin/charsets/glibc/IBM857.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM860.gz
Normal file
BIN
admin/charsets/glibc/IBM860.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM861.gz
Normal file
BIN
admin/charsets/glibc/IBM861.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM862.gz
Normal file
BIN
admin/charsets/glibc/IBM862.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM863.gz
Normal file
BIN
admin/charsets/glibc/IBM863.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM864.gz
Normal file
BIN
admin/charsets/glibc/IBM864.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM865.gz
Normal file
BIN
admin/charsets/glibc/IBM865.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM866.gz
Normal file
BIN
admin/charsets/glibc/IBM866.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM868.gz
Normal file
BIN
admin/charsets/glibc/IBM868.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM869.gz
Normal file
BIN
admin/charsets/glibc/IBM869.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM870.gz
Normal file
BIN
admin/charsets/glibc/IBM870.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM871.gz
Normal file
BIN
admin/charsets/glibc/IBM871.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM874.gz
Normal file
BIN
admin/charsets/glibc/IBM874.gz
Normal file
Binary file not shown.
BIN
admin/charsets/glibc/IBM875.gz
Normal file
BIN
admin/charsets/glibc/IBM875.gz
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue