forked from Github/emacs
Compare commits
1 commit
master
...
scratch/re
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c0d312bcb |
4202 changed files with 349917 additions and 1140899 deletions
|
|
@ -1,20 +1,12 @@
|
|||
Language: Cpp
|
||||
BasedOnStyle: GNU
|
||||
BasedOnStyle: LLVM
|
||||
AlignEscapedNewlinesLeft: true
|
||||
AlignOperands: Align
|
||||
AlwaysBreakAfterReturnType: TopLevelDefinitions
|
||||
BreakBeforeBinaryOperators: All
|
||||
BreakBeforeBraces: GNU
|
||||
ColumnLimit: 70
|
||||
ColumnLimit: 80
|
||||
ContinuationIndentWidth: 2
|
||||
IndentPPDirectives: AfterHash
|
||||
PPIndentWidth: 1
|
||||
ForEachMacros:
|
||||
- FOR_EACH_TAIL
|
||||
- FOR_EACH_TAIL_SAFE
|
||||
- FOR_EACH_LIVE_BUFFER
|
||||
- ITREE_FOREACH
|
||||
- FOR_EACH_ALIST_VALUE
|
||||
ForEachMacros: [FOR_EACH_TAIL, FOR_EACH_TAIL_SAFE]
|
||||
IncludeCategories:
|
||||
- Regex: '^<config\.h>$'
|
||||
Priority: -1
|
||||
|
|
@ -24,17 +16,11 @@ IncludeCategories:
|
|||
Priority: 2
|
||||
- Regex: '.*'
|
||||
Priority: 3
|
||||
WhitespaceSensitiveMacros:
|
||||
- STR
|
||||
- CALL1I
|
||||
- CALL2I
|
||||
- STR_VALUE
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
MaxEmptyLinesToKeep: 1
|
||||
PenaltyBreakBeforeFirstCallParameter: 2000
|
||||
SpaceAfterCStyleCast: true
|
||||
SpaceBeforeParens: Always
|
||||
UseTab: Always
|
||||
|
||||
# Local Variables:
|
||||
# mode: yaml
|
||||
|
|
|
|||
|
|
@ -1,42 +1,22 @@
|
|||
;;; Directory Local Variables -*- no-byte-compile: t; -*-
|
||||
;;; For more information see (info "(emacs) Directory Variables")
|
||||
|
||||
((nil . ((tab-width . 8)
|
||||
(sentence-end-double-space . t)
|
||||
(fill-column . 70)
|
||||
(emacs-lisp-docstring-fill-column . 65)
|
||||
(vc-git-annotate-switches . "-w")
|
||||
(bug-reference-url-format . "https://debbugs.gnu.org/%s")
|
||||
(diff-add-log-use-relative-names . t)
|
||||
(vc-prepare-patches-separately . nil)))
|
||||
(fill-column . 70)))
|
||||
(c-mode . ((c-file-style . "GNU")
|
||||
(c-noise-macro-names . ("INLINE" "NO_INLINE" "ATTRIBUTE_NO_SANITIZE_UNDEFINED"
|
||||
"UNINIT" "CALLBACK" "ALIGN_STACK" "ATTRIBUTE_MALLOC"
|
||||
"ATTRIBUTE_DEALLOC_FREE"))
|
||||
(c-noise-macro-names . ("UNINIT" "CALLBACK" "ALIGN_STACK"))
|
||||
(electric-quote-comment . nil)
|
||||
(electric-quote-string . nil)
|
||||
(indent-tabs-mode . t)
|
||||
(mode . bug-reference-prog)))
|
||||
(electric-quote-string . nil)))
|
||||
(objc-mode . ((c-file-style . "GNU")
|
||||
(electric-quote-comment . nil)
|
||||
(electric-quote-string . nil)
|
||||
(mode . bug-reference-prog)))
|
||||
(c-ts-mode . ((c-ts-mode-indent-style . gnu)
|
||||
(indent-tabs-mode . t)
|
||||
(mode . bug-reference-prog)))
|
||||
(electric-quote-string . nil)))
|
||||
(log-edit-mode . ((log-edit-font-lock-gnu-style . t)
|
||||
(log-edit-setup-add-author . t)
|
||||
(vc-git-log-edit-summary-target-len . 50)))
|
||||
(log-edit-setup-add-author . t)))
|
||||
(change-log-mode . ((add-log-time-zone-rule . t)
|
||||
(fill-column . 74)
|
||||
(bug-reference-url-format . "https://debbugs.gnu.org/%s")
|
||||
(mode . bug-reference)))
|
||||
(diff-mode . ((mode . whitespace)))
|
||||
(emacs-lisp-mode . ((indent-tabs-mode . nil)
|
||||
(electric-quote-comment . nil)
|
||||
(electric-quote-string . nil)
|
||||
(mode . bug-reference-prog)))
|
||||
(lisp-data-mode . ((indent-tabs-mode . nil)))
|
||||
(electric-quote-string . nil)))
|
||||
(texinfo-mode . ((electric-quote-comment . nil)
|
||||
(electric-quote-string . nil)
|
||||
(mode . bug-reference-prog)))
|
||||
(outline-mode . ((mode . bug-reference))))
|
||||
(electric-quote-string . nil))))
|
||||
|
|
|
|||
5
.gitattributes
vendored
5
.gitattributes
vendored
|
|
@ -1,6 +1,6 @@
|
|||
# Attributes of Emacs files in the Git repository.
|
||||
|
||||
# Copyright 2015-2023 Free Software Foundation, Inc.
|
||||
# Copyright 2015-2019 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -31,6 +31,9 @@ test/manual/etags/html-src/algrthms.html whitespace=cr-at-eol
|
|||
# The todo-mode file format includes trailing whitespace.
|
||||
*.tod[aorty] -whitespace=blank-at-eol
|
||||
|
||||
# The upstream maintainer does not want to remove trailing whitespace.
|
||||
doc/misc/texinfo.tex -whitespace=blank-at-eol
|
||||
|
||||
# Some files should not be treated as text when diffing or merging.
|
||||
*.cur binary
|
||||
*.gpg binary
|
||||
|
|
|
|||
63
.gitignore
vendored
63
.gitignore
vendored
|
|
@ -1,6 +1,6 @@
|
|||
# Files that Git should ignore in the Emacs source directory.
|
||||
|
||||
# Copyright 2009-2023 Free Software Foundation, Inc.
|
||||
# Copyright 2009-2019 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -23,10 +23,6 @@
|
|||
# in Git 1.8.2 (March 2013).
|
||||
|
||||
|
||||
# Personal customization.
|
||||
.dir-locals-2.el
|
||||
.no-advice-on-failure
|
||||
|
||||
# Built by 'autogen.sh'.
|
||||
/aclocal.m4
|
||||
/configure
|
||||
|
|
@ -54,7 +50,6 @@ 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
|
||||
|
|
@ -62,12 +57,10 @@ 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
|
||||
|
|
@ -79,7 +72,6 @@ lib/unistd.h
|
|||
src/buildobj.h
|
||||
src/globals.h
|
||||
src/lisp.mk
|
||||
src/verbose.mk
|
||||
|
||||
# Lisp-level sources built by 'make'.
|
||||
*cus-load.el
|
||||
|
|
@ -91,7 +83,6 @@ 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/
|
||||
|
|
@ -138,15 +129,12 @@ src/gl-stamp
|
|||
*.dll
|
||||
*.core
|
||||
*.elc
|
||||
*.eln
|
||||
*.o
|
||||
*.res
|
||||
*.so
|
||||
*.dylib
|
||||
core
|
||||
core.*[0-9]
|
||||
gmon.out
|
||||
native-lisp/
|
||||
oo/
|
||||
oo-spd/
|
||||
src/*.map
|
||||
|
|
@ -158,11 +146,7 @@ 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
|
||||
|
|
@ -174,19 +158,12 @@ 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
|
||||
|
|
@ -197,7 +174,6 @@ 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
|
||||
|
|
@ -208,8 +184,9 @@ nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist
|
|||
src/bootstrap-emacs
|
||||
src/emacs
|
||||
src/emacs-[0-9]*
|
||||
src/Emacs
|
||||
src/temacs
|
||||
src/temacs.in
|
||||
src/fingerprint.c
|
||||
src/dmpstruct.h
|
||||
src/*.pdmp
|
||||
|
||||
|
|
@ -220,12 +197,8 @@ 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
|
||||
|
|
@ -268,8 +241,6 @@ 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*
|
||||
|
|
@ -277,6 +248,7 @@ gnustmp*
|
|||
|
||||
# Version control and locks.
|
||||
*.orig
|
||||
*.rej
|
||||
*.swp
|
||||
*~
|
||||
.#*
|
||||
|
|
@ -284,14 +256,12 @@ gnustmp*
|
|||
ChangeLog
|
||||
[0-9]*.patch
|
||||
[0-9]*.txt
|
||||
.dir-locals?.el
|
||||
/vc-dwim-log-*
|
||||
|
||||
# Built by 'make install'.
|
||||
etc/emacs.tmpdesktop
|
||||
|
||||
# Built by 'make-dist'.
|
||||
/MANIFEST
|
||||
|
||||
# Distribution directories.
|
||||
/emacs-[1-9]*/
|
||||
|
||||
|
|
@ -315,26 +285,3 @@ 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
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (C) 2021-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2017-2019 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Emacs.
|
||||
#
|
||||
|
|
@ -15,14 +15,51 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# GNU Emacs support for the GitLab protocol for CI.
|
||||
# GNU Emacs support for the GitLab protocol for CI
|
||||
|
||||
# The presence of this file does not imply any FSF/GNU endorsement of
|
||||
# any particular service that uses that protocol. Also, it is intended for
|
||||
# evaluation purposes, thus possibly temporary.
|
||||
|
||||
# Maintainer: Ted Zlatanov <tzz@lifelogs.com>
|
||||
# Maintainer: tzz@lifelogs.com
|
||||
# URL: https://emba.gnu.org/emacs/emacs
|
||||
|
||||
# Just load from test/infra, to keep build automation files there.
|
||||
include: '/test/infra/gitlab-ci.yml'
|
||||
image: debian:stretch
|
||||
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
EMACS_EMBA_CI: 1
|
||||
|
||||
before_script:
|
||||
- apt update -qq
|
||||
- DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 libc-dev gcc make autoconf automake libncurses-dev gnutls-dev git
|
||||
|
||||
stages:
|
||||
- test
|
||||
|
||||
test-all:
|
||||
# This tests also file monitor libraries inotify and inotifywatch.
|
||||
stage: test
|
||||
script:
|
||||
- DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 inotify-tools
|
||||
- ./autogen.sh autoconf
|
||||
- ./configure --without-makeinfo
|
||||
- make bootstrap
|
||||
- make check-expensive
|
||||
|
||||
test-filenotify-gio:
|
||||
stage: test
|
||||
# This tests file monitor libraries gfilemonitor and gio.
|
||||
only:
|
||||
changes:
|
||||
- .gitlab-ci.yml
|
||||
- lisp/filenotify.el
|
||||
- lisp/net/tramp-sh.el
|
||||
- src/gfilenotify.c
|
||||
- test/lisp/filenotify-tests.el
|
||||
script:
|
||||
- DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 libglib2.0-dev libglib2.0-bin libglib2.0-0
|
||||
- ./autogen.sh autoconf
|
||||
- ./configure --without-makeinfo --with-file-notification=gfile
|
||||
- make bootstrap
|
||||
- make -C test filenotify-tests
|
||||
|
|
|
|||
197
.mailmap
197
.mailmap
|
|
@ -1,197 +0,0 @@
|
|||
#
|
||||
# This list is used to fix a few misspelled names in various git
|
||||
# listings (e.g., "git log"). This can be used to fix incorrect
|
||||
# attribution, poor display, or names showing up more than once.
|
||||
# It also allows updating an old email addresses to a new one.
|
||||
#
|
||||
# See "man git-shortlog" for more information on the format.
|
||||
#
|
||||
# Keep file sorted using `M-x sort-lines'.
|
||||
#
|
||||
Aaron S. Hawley <aaron.s.hawley@gmail.com> <Aaron.Hawley@vtinfo.com>
|
||||
Aaron S. Hawley <aaron.s.hawley@gmail.com> <Aaron.S.Hawley@gmail.com>
|
||||
Aaron S. Hawley <aaron.s.hawley@gmail.com> <ashawley@burlingtontelecom.net>
|
||||
Alan Third <alan@idiocy.org>
|
||||
Alan Third <alan@idiocy.org> <alan@breton-build.holly.idiocy.org>
|
||||
Alan Third <alan@idiocy.org> Alan Third <address@hidden>
|
||||
Alan Third <alan@idiocy.org> bug-gnu-emacs@gnu.org <bug-gnu-emacs@gnu.org>
|
||||
Alex Harsanyi <AlexHarsanyi@gmail.com> <harsanyi@mac.com>
|
||||
Alexander Gramiak <agrambot@gmail.com>
|
||||
Amin Bandali <bandali@gnu.org> <mab@gnu.org>
|
||||
Andrea Corallo <akrl@sdf.org>
|
||||
Andrea Corallo <akrl@sdf.org> <akrl@sdf.com>
|
||||
Andrea Corallo <akrl@sdf.org> <andcor03@e112547.nice.arm.com>
|
||||
Andrea Corallo <akrl@sdf.org> <andrea_corallo@yahoo.it>
|
||||
Andrew G Cohen <cohen@andy.bu.edu>
|
||||
Andrew G Cohen <cohen@andy.bu.edu> <cohen@bu.edu>
|
||||
Arash Esbati <arash@gnu.org> <arash.esbati@gmail.com>
|
||||
Arash Esbati <arash@gnu.org> <esbati@gmx.de>
|
||||
Artur Malabarba <bruce.connor.am@gmail.com> <am12548@it055607.users.bris.ac.uk>
|
||||
Bastien Guerry <bzg@gnu.org>
|
||||
Bastien Guerry <bzg@gnu.org> <bastien1@free.fr>
|
||||
Bastien Guerry <bzg@gnu.org> <bzg@altern.org>
|
||||
Benjamin Schwerdtner <Benjamin.Schwerdtner@gmail.com>
|
||||
Bob Rogers <rogers@rgrjr.com> <rogers-emacs@rgrjr.homedns.org>
|
||||
Bruno Félix Rezende Ribeiro <oitofelix@gnu.org> <oitofelix@gmail.com>
|
||||
Carlos Pita <carlosjosepita@gmail.com>
|
||||
Chong Yidong <cyd@gnu.org> <cyd@stupidchicken.com>
|
||||
Christoph Scholtes <cschol2112@gmail.com>
|
||||
Christoph Scholtes <cschol2112@gmail.com> <cschol2112@googlemail.com>
|
||||
Christoph Scholtes <cschol2112@gmail.com> Christoph Scholtes <>
|
||||
Clément Pit-Claudel <clement.pitclaudel@live.com>
|
||||
Clément Pit-Claudel <clement.pitclaudel@live.com> <clement.pit@gmail.com>
|
||||
Courtney Bane <emacs-bugs-7626@cbane.org>
|
||||
Daiki Ueno <ueno@gnu.org> <ueno@unixuser.org>
|
||||
Daiki Ueno <ueno@gnu.org> Daiki Ueno <ueno@debian>
|
||||
Dan Nicolaescu <dann@ics.uci.edu> <dann@gnu.org>
|
||||
Dan Nicolaescu <dann@ics.uci.edu> <done@ece.arizona.edu>
|
||||
Daniel Colascione <dancol@dancol.org> <dan.colascione@gmail.com>
|
||||
David Abrahams <dave@boostpro.com>
|
||||
David M. Koppelman <koppel@ece.lsu.edu>
|
||||
Deniz Dogan <deniz@dogan.se> <deniz.a.m.dogan@gmail.com>
|
||||
Dick R. Chiang <dick.r.chiang@gmail.com>
|
||||
Dick R. Chiang <dick.r.chiang@gmail.com> dickmao <none>
|
||||
Earl Hyatt <ej32u@protonmail.com>
|
||||
Earl Hyatt <ej32u@protonmail.com> <okamsn@protonmail.com>
|
||||
Edward M. Reingold <reingold@emr.cs.iit.edu>
|
||||
Eli Zaretskii <eliz@gnu.org> <eliz@is.elta.co.il>
|
||||
Emilio C. Lopes <eclig@gmx.net>
|
||||
Enami Tsugutomo <tsugutomo.enami@jp.sony.com>
|
||||
Era Eriksson <era+emacs@iki.fi> <era+emacsbugs@iki.fi>
|
||||
Eric Ludlam <zappo@gnu.org>
|
||||
Eric Ludlam <zappo@gnu.org> <eric@siege-engine.com>
|
||||
Eric Ludlam <zappo@gnu.org> <ericludlam@gmail.com>
|
||||
Eric S. Raymond <esr@thyrsus.com> <esr@snark.thyrsus.com>
|
||||
Etienne Prud’homme <e.e.f.prudhomme@gmail.com>
|
||||
Fabián Ezequiel Gallina <fgallina@gnu.org> <fgallina@cuca>
|
||||
Fabián Ezequiel Gallina <fgallina@gnu.org> <galli.87@gmail.com>
|
||||
Francis Litterio <flitterio@gmail.com>
|
||||
Gabor Vida <vidagabor@gmail.com>
|
||||
Gerd Möllmann <gerd@gnu.org>
|
||||
Gerd Möllmann <gerd@gnu.org> <gerd.moellmann@gmail.com>
|
||||
Glenn Morris <rgm@gnu.org>
|
||||
Glenn Morris <rgm@gnu.org> <rgm@fencepost>
|
||||
Glenn Morris <rgm@gnu.org> <rgm@stanford.edu>
|
||||
Gnus developers <ding@gnus.org.noreply> <ding@gnus.org>
|
||||
Gregory Heytings <gregory@heytings.org> <ghe@sdf.org>
|
||||
Grégoire Jadi <daimrod@gmail.com>
|
||||
Ian Dunn <dunni@gnu.org>
|
||||
Jan Djärv <jan.h.d@swipnet.se>
|
||||
Jan Djärv <jan.h.d@swipnet.se> <jhd@f20.localdomain>
|
||||
Jason Rumney <jasonr@gnu.org> <jasonr@wanchan>
|
||||
Jeff Walsh <fejfighter@gmail.com> <jawalsh@localhost.localdomain>
|
||||
Jeff Walsh <fejfighter@gmail.com> <jeff.walsh@drtusers-MacBook-Pro.local>
|
||||
Jeff Walsh <fejfighter@gmail.com> <jewalsh@redhat.com>
|
||||
Jens Lechtenbörger <jens.lechtenboerger@fsfe.org>
|
||||
Jim Blandy <jimb@red-bean.com> <jimb@redhat.com>
|
||||
Jimmy Aguilar Mena <spacibba@aol.com>
|
||||
Joakim Verona <joakim@verona.se>
|
||||
Joakim Verona <joakim@verona.se> <root@exodia.verona.se>
|
||||
John Wiegley <johnw@newartisans.com> <jwiegley@gmail.com>
|
||||
Jose A. Ortega Ruiz <jao@gnu.org>
|
||||
João Távora <joaotavora@gmail.com>
|
||||
Julien Danjou <julien@danjou.info> <jd@dex.adm.naquadah.org>
|
||||
Julien Danjou <julien@danjou.info> Julien Danjou <jd@abydos>
|
||||
Juri Linkov <juri@linkov.net> <juri@jurta.org>
|
||||
Jérémy Compostella <jeremy.compostella@gmail.com>
|
||||
Jürgen Hötzel <juergen@archlinux.org>
|
||||
Karl Fogel <kfogel@red-bean.com> <karl.fogel@canonical.com>
|
||||
Katsumi Yamaoka <yamaoka@jpl.org> <katsumi@flagship2>
|
||||
Kaushal Modi <kaushal.modi@gmail.com>
|
||||
Kelvin White <kwhite@gnu.org>
|
||||
Kelvin White <kwhite@gnu.org> <kelvin.white77@gmail.com>
|
||||
Ken Raeburn <raeburn@raeburn.org> <raeburn@permabit.com>
|
||||
Kenichi Handa <handa@gnu.org>
|
||||
Kenichi Handa <handa@gnu.org> <handa@etlken>
|
||||
Kenichi Handa <handa@gnu.org> <handa@m17n.org>
|
||||
Kenjiro Nakayama <nakayamakenjiro@gmail.com>
|
||||
Kjartan Óli Ágústsson <kjartanoli@outlook.com>
|
||||
Károly Lőrentey <lorentey@elte.hu>
|
||||
Lars Ingebrigtsen <larsi@gnus.org>
|
||||
Lars Ingebrigtsen <larsi@gnus.org> <larsi@emkay.local>
|
||||
Lars Ingebrigtsen <larsi@gnus.org> <larsi@openbsd6.gnus.org>
|
||||
Lars Ingebrigtsen <larsi@gnus.org> <larsi@quimbies.gnus.org>
|
||||
Lars Ingebrigtsen <larsi@gnus.org> <larsi@stories.gnus.org>
|
||||
Laurence Warne <laurencewarne@gmail.com>
|
||||
Lin Sun <lin.sun@zoom.us>
|
||||
Ludovic Courtès <ludo@gnu.org>
|
||||
Luke Lee <luke.yx.lee@gmail.com>
|
||||
Martin Rudalics <rudalics@gmx.at>
|
||||
Martin Rudalics <rudalics@gmx.at> <“rudalics@gmx.atâ€>
|
||||
Masatake YAMATO <yamato@redhat.com> <jet@gyve.org>
|
||||
Matt Armstrong <matt@rfc20.org> <marmstrong@google.com>
|
||||
Matt Armstrong <matt@rfc20.org> <matt@mdeb>
|
||||
Mattias Engdegård <mattiase@acm.org>
|
||||
Maxim Nikulin <manikulin@gmail.com>
|
||||
Michael Albinus <michael.albinus@gmx.de> <albinus@detlef>
|
||||
Michalis V <mvar.40k@gmail.com>
|
||||
Miha Rihtaršič <miha@kamnitnik.top>
|
||||
Morgan J. Smith <Morgan.J.Smith@outlook.com>
|
||||
Nick Drozd <nicholasdrozd@gmail.com>
|
||||
Nicolas Petton <nicolas@petton.fr> <petton.nicolas@gmail.com>
|
||||
Nitish Chandra <nitishchandrachinta@gmail.com>
|
||||
Noam Postavsky <npostavs@gmail.com> <npostavs@users.sourceforge.net>
|
||||
Noam Postavsky <npostavs@gmail.com> <npostavs@users.sourceforget.net>
|
||||
Paul Eggert <eggert@cs.ucla.edu> <eggert@Penguin.CS.UCLA.EDU>
|
||||
Paul Eggert <eggert@cs.ucla.edu> <eggert@day>
|
||||
Paul Eggert <eggert@cs.ucla.edu> <eggert@twinsun.com>
|
||||
Paul Eggert <eggert@cs.ucla.edu> <eggert@union>
|
||||
Peter J. Weisberg <pj@irregularexpressions.net>
|
||||
Peter Oliver <p.d.oliver@mavit.org.uk> <bzr@mavit.org.uk>
|
||||
Peter Oliver <p.d.oliver@mavit.org.uk> <git@mavit.org.uk>
|
||||
Philip Kaludercic <philipk@posteo.net>
|
||||
Philip Kaludercic <philipk@posteo.net> <philip.kaludercic@fau.de>
|
||||
Philip Kaludercic <philipk@posteo.net> <philip@icterid>
|
||||
Philip Kaludercic <philipk@posteo.net> <philip@warpmail.net>
|
||||
Philipp Stephani <phst@google.com>
|
||||
Philipp Stephani <phst@google.com> Philipp Stephani <p.stephani2@gmail.com>
|
||||
Phillip Lord <phillip.lord@russet.org.uk> <phillip.lord@newcastle.ac.uk>
|
||||
Pierre Lorenzon <devel@pollock-nageoire.net>
|
||||
Pieter van Oostrum <pieter@vanoostrum.org> <pieter-l@vanoostrum.org>
|
||||
Pip Cet <pipcet@gmail.com>
|
||||
Po Lu <luangruo@yahoo.com>
|
||||
Po Lu <luangruo@yahoo.com> Po Lu via <emacs-devel@gnu.org>
|
||||
Przemysław Wojnowski <esperanto@cumego.com>
|
||||
Rasmus <rasmus@gmx.us>
|
||||
Richard M. Stallman <rms@gnu.org>
|
||||
Robert J. Chassell <bob@gnu.org> <bob@rattlesnake.com>
|
||||
Robert Weiner <rsw@gnu.org> <rswgnu@gmail.com>
|
||||
Roland Winkler <winkler@gnu.org> <Roland.Winkler@physik.uni-erlangen.de>
|
||||
Ronnie Schnell <ronnie@driver-aces.com>
|
||||
Ryan C. Thompson <rct@thompsonclan.org>
|
||||
Sam Steingold <sds@gnu.org> <sdsg@amazon.com>
|
||||
Simen Heggestøyl <simenheg@runbox.com>
|
||||
Simen Heggestøyl <simenheg@runbox.com> <simenheg@ifi.uio.no>
|
||||
Simen Heggestøyl <simenheg@runbox.com> <simenheg@gmail.com>
|
||||
Simon Josefsson <simon@josefsson.org> <jas@extundo.com>
|
||||
Stefan Kangas <stefankangas@gmail.com> <stefan@marxist.se>
|
||||
Stefan Monnier <monnier@iro.umontreal.ca> <monnier@IRO.UMontreal.CA>
|
||||
Stephen Berman <stephen.berman@gmx.net> <Stephen.Berman@gmx.net>
|
||||
Stephen Berman <stephen.berman@gmx.net> <Stephen.Berman@gmx.net>
|
||||
Stephen Berman <stephen.berman@gmx.net> <steve@rosalinde.fritz.box>
|
||||
Stephen Gildea <stepheng+emacs@gildea.com>
|
||||
Stephen Gildea <stepheng+emacs@gildea.com> <gildea@stop.mail-abuse.org>
|
||||
Stephen Gildea <stepheng+emacs@gildea.com> <stepheng+git-config-global@gildea.com>
|
||||
Stephen Gildea <stepheng+emacs@gildea.com> <stepheng+savannah@gildea.com>
|
||||
Tassilo Horn <tsdh@gnu.org> <tassilo@member.fsf.org>
|
||||
Ted Zlatanov <tzz@lifelogs.com>
|
||||
Thien-Thi Nguyen <ttn@gnu.org> <ttn@gnuvola.org>
|
||||
Thierry Volpiatto <thievol@posteo.net> <thierry.volpiatto@gmail.com>
|
||||
Tino Calancha <ccalancha@suse.com> <f92capac@gmail.com>
|
||||
Tino Calancha <ccalancha@suse.com> <tino.calancha@gmail.com>
|
||||
Tom Tromey <tom@tromey.com> <tromey@redhat.com>
|
||||
Ulf Jasper <ulf.jasper@web.de> Ulf Jasper <>
|
||||
Ulf Jasper <ulf.jasper@web.de> Ulf Jasper <ulf@uthinkpad>
|
||||
Ulrich Müller <ulm@gentoo.org>
|
||||
Vinicius Jose Latorre <viniciusjl@ig.com.br> <viniciusjl.gnu@gmail.com>
|
||||
Vladimir Nikishkin <lockywolf@gmail.com> <for.emacs-table.el-environment-patch_2022-05-09@lockywolf.net>
|
||||
Werner Lemberg <wl@gnu.org>
|
||||
Wolfgang Scherer <wolfgang.scherer@gmx.de> <Wolfgang.Scherer@gmx.de>
|
||||
Xi Lu <lx@shellcodes.org>
|
||||
Xue Fuqiao <xfq.free@gmail.com> <xfq@gnu.org>
|
||||
Yilkal Argaw <yilkalargawworkneh@gmail.com>
|
||||
Yuuki Harano <masm+github@masm11.me> <masm@masm11.ddo.jp>
|
||||
Óscar Fuentes <ofv@wanadoo.es>
|
||||
İ. Göktuğ Kayaalp <self@gkayaalp.com>
|
||||
Łukasz Stelmach <stlman@poczta.fm> <l.stelmach@samsung.com>
|
||||
Łukasz Stelmach <stlman@poczta.fm> <lukasz.stelmach@iem.pw.edu.pl>
|
||||
181
CONTRIBUTE
181
CONTRIBUTE
|
|
@ -1,6 +1,3 @@
|
|||
Copyright (C) 2006-2023 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
|
||||
|
|
@ -10,15 +7,12 @@ 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:
|
||||
Briefly, the following shell commands build and run Emacs from scratch:
|
||||
|
||||
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 https://git.savannah.gnu.org/git/emacs.git
|
||||
git clone git://git.sv.gnu.org/emacs.git
|
||||
cd emacs
|
||||
./autogen.sh
|
||||
./configure
|
||||
|
|
@ -26,8 +20,8 @@ The following shell commands then build and run Emacs from scratch:
|
|||
src/emacs
|
||||
|
||||
For more details, see
|
||||
https://www.emacswiki.org/emacs/GitQuickStartForEmacsDevs and
|
||||
https://www.emacswiki.org/emacs/GitForEmacsDevs or see the file
|
||||
http://www.emacswiki.org/emacs/GitQuickStartForEmacsDevs and
|
||||
http://www.emacswiki.org/emacs/GitForEmacsDevs or see the file
|
||||
admin/notes/git-workflow.
|
||||
|
||||
** Getting involved with development
|
||||
|
|
@ -56,41 +50,16 @@ 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.
|
||||
packages the patch's commit message and changes. To send just one
|
||||
such patch without additional remarks, you can use a command like
|
||||
'git send-email --to=bug-gnu-emacs@gnu.org 0001-DESCRIPTION.patch'.
|
||||
|
||||
** 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.
|
||||
above, are recorded by the tracker with the corresponding bugs/issues.
|
||||
|
||||
GNU ELPA has a 'debbugs' package that allows accessing the tracker
|
||||
database from Emacs.
|
||||
|
|
@ -110,7 +79,7 @@ admin/notes/bug-triage.
|
|||
|
||||
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
|
||||
and takes just one line -- this will allow to read NEWS in Outline
|
||||
mode after hiding the body of each entry.
|
||||
|
||||
Doc-strings should be updated together with the code.
|
||||
|
|
@ -123,7 +92,7 @@ Think about whether your change requires updating the manuals. If you
|
|||
know it does not, mark the NEWS entry with "---". If you know
|
||||
that *all* the necessary documentation updates have been made as part
|
||||
of your changes or those by others, mark the entry with "+++".
|
||||
Otherwise, do not mark it.
|
||||
Otherwise do not mark it.
|
||||
|
||||
If your change requires updating the manuals to document new
|
||||
functions/commands/variables/faces, then use the proper Texinfo
|
||||
|
|
@ -160,14 +129,6 @@ 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 change you commit should contain a log entry in its
|
||||
|
|
@ -188,27 +149,20 @@ 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.
|
||||
do not end this line with a period. If that line starts with a
|
||||
semicolon and a space "; ", the commit message will be ignored when
|
||||
generating the ChangeLog file. Use this for minor commits that do
|
||||
not need separate ChangeLog entries, such as changes in etc/NEWS.
|
||||
|
||||
If the summary line starts with a semicolon and a space "; ", the
|
||||
commit message will be ignored when generating the ChangeLog file.
|
||||
Use this for minor commits that do not need separate ChangeLog
|
||||
entries, such as changes in etc/NEWS.
|
||||
- After the summary line, there should be an empty line, then
|
||||
unindented ChangeLog entries.
|
||||
|
||||
- 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.
|
||||
- Limit lines in commit messages to 78 characters, unless they consist
|
||||
of a single word of at most 140 characters; this is enforced by a
|
||||
commit hook. It's nicer to limit the summary line to 50 characters;
|
||||
this isn't enforced. If the change can't be summarized so briefly,
|
||||
add a paragraph after the empty line and before the individual file
|
||||
descriptions.
|
||||
|
||||
- If only a single file is changed, the summary line can be the normal
|
||||
file first line (starting with the asterisk). Then there is no
|
||||
|
|
@ -282,12 +236,13 @@ them right the first time, so here are guidelines for formatting them:
|
|||
- 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.
|
||||
switches to a different VCS. So we recommend against 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.
|
||||
Another is with an action stamp - an RFC3339 date followed by !
|
||||
followed by the committer's email - for example,
|
||||
"2014-01-16T05:43:35Z!esr@thyrsus.com". Often, "my previous commit"
|
||||
will suffice.
|
||||
|
||||
- There is no need to mention files such as NEWS and MAINTAINERS, or
|
||||
to indicate regeneration of files such as 'lib/gnulib.mk', in the
|
||||
|
|
@ -296,67 +251,29 @@ them right the first time, so here are guidelines for formatting them:
|
|||
|
||||
** 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"'.
|
||||
|
||||
- Alternatively, you can use Emacs functions for ChangeLog files; see
|
||||
- You can use Emacs functions to write ChangeLog entries; 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.
|
||||
- If you use Emacs VC, one way to format ChangeLog entries is to create
|
||||
a top-level ChangeLog file manually, and update it with 'C-x 4 a' as
|
||||
usual. Do not register the ChangeLog file under git; instead, use
|
||||
'C-c C-a' to insert its contents into 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
|
||||
- Alternatively, you can use the vc-dwim command to maintain commit
|
||||
messages. When you create a source directory, run the shell command
|
||||
'git-changelog-symlink-init' to create a symbolic link from
|
||||
ChangeLog to .git/c/ChangeLog. Edit this ChangeLog via its symlink
|
||||
with Emacs commands like 'C-x 4 a', and commit the change using the
|
||||
shell command 'vc-dwim --commit'. Type 'vc-dwim --help' for more.
|
||||
|
||||
** 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.
|
||||
change's author.
|
||||
|
||||
** Branches
|
||||
|
||||
|
|
@ -386,9 +303,7 @@ 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.
|
||||
is in feature freeze, it can still receive doc fixes.
|
||||
|
||||
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
|
||||
|
|
@ -400,26 +315,10 @@ 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
|
||||
reasons. 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
|
||||
|
|
@ -449,8 +348,8 @@ 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'.
|
||||
See all the files in admin/notes/* . In particular, see
|
||||
admin/notes/newfile, see admin/notes/repo.
|
||||
|
||||
The file admin/MAINTAINERS records the areas of interest of frequent
|
||||
Emacs contributors. If you are making changes in one of the files
|
||||
|
|
|
|||
16
ChangeLog.1
16
ChangeLog.1
|
|
@ -12,7 +12,7 @@
|
|||
"/usr/include/glib-2.0/glib/gmem.h: ... warning: unknown attribute
|
||||
'__alloc_size__' ignored". Use -Werror when checking for -nopie;
|
||||
otherwise clang warns about -nopie instead of failing, and then
|
||||
later it warns every time the build uses -nopie.
|
||||
later it warns everytime the build uses -nopie.
|
||||
|
||||
2015-04-03 Ulrich Müller <ulm@gentoo.org>
|
||||
|
||||
|
|
@ -930,7 +930,7 @@
|
|||
(mostlyclean_dirs, clean_dirs, distclean_dirs, maintainer_clean_dirs):
|
||||
New variables.
|
||||
(mostlyclean, clean, distclean, bootstrap-clean, maintainer-clean)
|
||||
(extraclean): Define using each subdirectory as a prerequisite.
|
||||
(extraclean): Define using each subdirectory as a prequisite.
|
||||
* lib/Makefile.am (bootstrap-clean): New.
|
||||
|
||||
2014-06-15 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
|
@ -1657,7 +1657,7 @@
|
|||
|
||||
2013-12-08 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* configure.ac: Simplify suppression of GTK deprecation warning.
|
||||
* configure.ac: Simplify supression of GTK deprecation warning.
|
||||
Move -DGDK_DISABLE_DEPRECATION_WARNINGS out of the command line
|
||||
and into config.h, to shorten the command line when doing 'make'.
|
||||
Don't AC_SUBST GTK_CFLAGS, as this is not needed.
|
||||
|
|
@ -2326,7 +2326,7 @@
|
|||
2013-07-03 Christoph Egger <christoph@debian.org> (tiny change)
|
||||
|
||||
* configure.ac (emacs_broken_SIGIO): Set on gnu-kfreebsd to avoid hang.
|
||||
https://bugs.debian.org/712974
|
||||
http://bugs.debian.org/712974
|
||||
|
||||
2013-07-02 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
|
|
@ -3528,7 +3528,7 @@
|
|||
Port to Solaris 8.
|
||||
Without this change, 'configure' fails because the recently-added
|
||||
wait3 prototype in config.h messes up later 'configure' tests.
|
||||
Fix this problem by dropping wait3 and WRETCODE, as they're
|
||||
Fix this problem by droping wait3 and WRETCODE, as they're
|
||||
no longer needed on hosts that are current porting targets.
|
||||
* configure.ac (wait3, WRETCODE): Remove, fixing a FIXME.
|
||||
All uses changed to waitpid and WEXITSTATUS.
|
||||
|
|
@ -4302,7 +4302,7 @@
|
|||
(install-arch-indep): Don't install-etc for self-contained ns builds.
|
||||
|
||||
* configure.in (GCC_TEST_OPTIONS, NON_GCC_TEST_OPTIONS) <darwin>:
|
||||
No longer unconditionally add /sw directories. (Bug#2280)
|
||||
No longer unconditonally add /sw directories. (Bug#2280)
|
||||
|
||||
* Makefile.in (install-arch-dep): Depend on install-arch-indep.
|
||||
(install-arch-indep): Depend on install-leim.
|
||||
|
|
@ -5685,7 +5685,7 @@
|
|||
(__mktime_internal): Use it systematically for all isdst comparisons.
|
||||
This completes the fix for libc BZ #6723, and removes the need for
|
||||
normalizing tm_isdst.
|
||||
See <https://sourceware.org/bugzilla/show_bug.cgi?id=6723>
|
||||
See <http://sourceware.org/bugzilla/show_bug.cgi?id=6723>
|
||||
(not_equal_tm) [DEBUG]: Use isdst_differ here, too.
|
||||
|
||||
mktime: fix some integer overflow issues and sidestep the rest
|
||||
|
|
@ -14700,7 +14700,7 @@
|
|||
;; coding: utf-8
|
||||
;; End:
|
||||
|
||||
Copyright (C) 1993-1999, 2001-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993-1999, 2001-2019 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
86
ChangeLog.2
86
ChangeLog.2
|
|
@ -111,7 +111,7 @@
|
|||
|
||||
2017-03-21 Noam Postavsky <npostavs@gmail.com>
|
||||
|
||||
Narrow scope of modification hook re-enabling in org-src fontification
|
||||
Narrow scope of modification hook renabling in org-src fontification
|
||||
|
||||
Modification hooks should be enabled while modifying text in the
|
||||
org-src temp buffer, but in 2017-01-29 "Call modification hooks in
|
||||
|
|
@ -485,7 +485,7 @@
|
|||
Clarify major mode switching
|
||||
|
||||
* doc/emacs/modes.texi (Major Modes):
|
||||
* doc/lispref/modes.texi (Modes, Major Modes): Explicitly say that each
|
||||
* doc/lispref/modes.texi (Modes, Major Modes): Explictly say that each
|
||||
buffer has exactly one major mode and can't be "turned off", only
|
||||
switched away from (Bug#25357).
|
||||
|
||||
|
|
@ -1661,7 +1661,7 @@
|
|||
`re_match_2_internal' uses pointers to the lisp objects that it
|
||||
searches. Since it may call malloc when growing the "fail stack", these
|
||||
pointers may be invalidated while searching, resulting in memory
|
||||
corruption (Bug #24358).
|
||||
curruption (Bug #24358).
|
||||
|
||||
To fix this, we check the pointer that the lisp object (as specified by
|
||||
re_match_object) points to before and after growing the stack, and
|
||||
|
|
@ -2681,7 +2681,7 @@
|
|||
|
||||
* doc/misc/ses.texi (Quick Tutorial): Mention the '!'
|
||||
'ses-range' modifier as an alternative to 'ses+'.
|
||||
(Advanced Features): Add a reference to node 'Nonrelocatable
|
||||
(Advanced Features): Add a refernce to node 'Nonrelocatable
|
||||
references' concerning function 'ses-rename-cell'.
|
||||
(Standard formula functions): Mention the '!' 'ses-range'
|
||||
modifier as an alternative to 'ses-delete-blanks'.
|
||||
|
|
@ -3983,7 +3983,7 @@
|
|||
|
||||
2016-05-10 Dmitry Gutov <dgutov@yandex.ru>
|
||||
|
||||
Don't treat JS spread as continuation method call
|
||||
Don't treat JS spread as contination method call
|
||||
|
||||
* lisp/progmodes/js.el (js--indent-operator-re):
|
||||
Allow only one dot (bug#23492).
|
||||
|
|
@ -4040,7 +4040,7 @@
|
|||
|
||||
* lisp/progmodes/xref.el (xref--query-replace-1):
|
||||
Say 'All results processed' at the end if the user hadn't
|
||||
canceled the process (bug#23284).
|
||||
cancelled the process (bug#23284).
|
||||
|
||||
2016-05-07 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
|
|
@ -4530,7 +4530,7 @@
|
|||
cursor-type doc fix
|
||||
|
||||
* src/buffer.c (syms_of_buffer): Mention that cursor-type's
|
||||
WIDTH/HEIGHT can't exceed the frame char size (bug#19215).
|
||||
WIDHT/HEIGHT can't exceed the frame char size (bug#19215).
|
||||
|
||||
(cherry picked from commit 77c5f4554ebb3b7c7d49bc881e45a550f6c93987)
|
||||
|
||||
|
|
@ -4599,7 +4599,7 @@
|
|||
|
||||
2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
Explicitly explain that package-initialize loads the packages
|
||||
Explictly explain that package-initialize loads the packages
|
||||
|
||||
* lisp/emacs-lisp/package.el (package-initialize): Be explicit
|
||||
in saying that `package-initialize' obviates adjusting the
|
||||
|
|
@ -4970,7 +4970,7 @@
|
|||
* msdos/sed1v2.inp: Adapt to Emacs 25.
|
||||
|
||||
* src/process.c (remove_slash_colon): Move out of "#ifdef
|
||||
subprocesses" block, as it is called unconditionally. Move
|
||||
subprocesses" block, as it its called unconditionally. Move
|
||||
ADD_SUBFEATURE calls into "#ifdef subprocesses" block, as they
|
||||
reference variables only defined in that block.
|
||||
* src/msdos.h: Provide prototypes for IT_set_frame_parameters,
|
||||
|
|
@ -5985,7 +5985,7 @@
|
|||
|
||||
2016-03-30 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
Finish fixing a caching bug in CC Mode (see 2016-03-09)
|
||||
Finish fixing a cacheing bug in CC Mode (see 2016-03-09)
|
||||
|
||||
* lisp/progmodes/cc-cmds.el: (c-beginning-of-defun, c-end-of-defun): Remove
|
||||
superfluous invocations of c-self-bind-state-cache.
|
||||
|
|
@ -6609,7 +6609,7 @@
|
|||
|
||||
2016-03-14 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
Fix a caching bug, which led to inordinately slow c-beginning-of-defun.
|
||||
Fix a cacheing bug, which led to inordinately slow c-beginning-of-defun.
|
||||
|
||||
* lisp/progmodes/cc-defs.el (c-self-bind-state-cache): New macro.
|
||||
|
||||
|
|
@ -6624,7 +6624,7 @@
|
|||
|
||||
2016-03-14 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
Fix a caching bug, which led to inordinately slow c-beginning-of-defun.
|
||||
Fix a cacheing bug, which led to inordinately slow c-beginning-of-defun.
|
||||
|
||||
* lisp/progmodes/cc-defs.el (c-self-bind-state-cache): New macro.
|
||||
|
||||
|
|
@ -7145,7 +7145,7 @@
|
|||
|
||||
Prevent infinite loop on not-well-formed xml. (Bug#16344)
|
||||
|
||||
* lisp/xml.el (xml-parse-tag-1): Prevent infinite loop. (Bug#16344)
|
||||
* lisp/xml.el (xml-parse-tag-1): Prevent inifinite loop. (Bug#16344)
|
||||
* test/automated/xml-parse-tests.el (xml-parse-tests--bad-data): Add
|
||||
test cases for Bug#16344.
|
||||
|
||||
|
|
@ -9269,7 +9269,7 @@
|
|||
|
||||
This is related to the autogen.sh changes made by Paul Eggert in
|
||||
commit d766ca8f (2016-02-01) and commit cedd7cad (2016-02-01), and to
|
||||
my edits today to https://www.emacswiki.org/emacs/GitForEmacsDevs and
|
||||
my edits today to http://www.emacswiki.org/emacs/GitForEmacsDevs and
|
||||
to emacswiki.org/emacs/GitQuickStartForEmacsDevs. See also the thread
|
||||
"Recommend these .gitconfig settings for git integrity." at
|
||||
https://lists.gnu.org/r/emacs-devel/2016-01/threads.html#01802.
|
||||
|
|
@ -9317,7 +9317,7 @@
|
|||
optional.
|
||||
|
||||
* src/buffer.c (Fbarf_if_buffer_read_only): Rename argument POS
|
||||
to POSITION to keep consistent with doc-string.
|
||||
to POSITION to keep consisteny with doc-string.
|
||||
|
||||
2016-02-01 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
|
|
@ -9956,7 +9956,7 @@
|
|||
* lisp/files.el (dir-locals-find-file): Refactor return values
|
||||
|
||||
Returning a cache remains unchanged, but the case of returning a
|
||||
file (or pattern) is now changed to return the containing
|
||||
file (or pattern) is now changed to return the contaning
|
||||
directory.
|
||||
|
||||
(dir-locals-read-from-file): Rename to `dir-locals-read-from-dir'
|
||||
|
|
@ -10856,7 +10856,7 @@
|
|||
|
||||
2016-01-18 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
Desktop: protect users against inadvertent upgrading of desktop file.
|
||||
Desktop: protect users against inadvertant upgrading of desktop file.
|
||||
|
||||
An upgraded (version 208) desktop file cannot be read in Emacs < 25.
|
||||
|
||||
|
|
@ -11212,7 +11212,7 @@
|
|||
|
||||
2016-01-13 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
Document the new default value of 'load-read-function'
|
||||
Document the new deafault value of 'load-read-function'
|
||||
|
||||
* doc/lispref/loading.texi (How Programs Do Loading): Document the
|
||||
change in the default value of 'load-read-function'.
|
||||
|
|
@ -11843,7 +11843,7 @@
|
|||
|
||||
2016-01-05 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
Make C++ buffers writable when writing their initial text properties.
|
||||
Make C++ buffers writeable when writing their initial text properties.
|
||||
|
||||
This is a correction to yesterday's CC Mode patch.
|
||||
|
||||
|
|
@ -12542,7 +12542,7 @@
|
|||
|
||||
* lisp/erc/erc-backend.el (erc-server-setup-periodical-ping): Checks
|
||||
for existing timers in the alist before adding new ones. If a
|
||||
timer already exists, it is canceled and
|
||||
timer already exists, it is cancelled and
|
||||
overwritten. (bug#19292).
|
||||
|
||||
2015-12-27 Jens Lechtenboerger <jens.lechtenboerger@fsfe.org>
|
||||
|
|
@ -13444,7 +13444,7 @@
|
|||
(gdb-send): Recognize various ways of exiting from Python and
|
||||
Guile interpreters and returning to GDB. For details, see
|
||||
https://lists.gnu.org/r/emacs-devel/2015-12/msg00693.html
|
||||
and https://stackoverflow.com/questions/31514741.
|
||||
and http://stackoverflow.com/questions/31514741.
|
||||
|
||||
2015-12-16 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
|
|
@ -15300,7 +15300,7 @@
|
|||
|
||||
* lisp/progmodes/cc-langs.el (c++-template-syntax-table)
|
||||
(c-no-parens-syntax-table): Add extra "(eval ..)"s around "'(lambda ..)"
|
||||
forms to remove the superfluous quotes.
|
||||
forms to remove the superflous quotes.
|
||||
|
||||
2015-11-24 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
|
|
@ -17774,7 +17774,7 @@
|
|||
|
||||
2015-11-08 Dmitry Gutov <dgutov@yandex.ru>
|
||||
|
||||
Remove dirs in vc project roots from the vc project library roots
|
||||
Remove dirs in vc project roots from the the vc project library roots
|
||||
|
||||
* lisp/progmodes/project.el (project-library-roots):
|
||||
Remove directories inside the project roots from the result.
|
||||
|
|
@ -19985,7 +19985,7 @@
|
|||
* src/intervals.h: Don’t include dispextern.h, composite.h.
|
||||
* src/keyboard.c: Don’t include sysstdio.h, disptab.h, puresize.h.
|
||||
Include coding.h.
|
||||
* src/keyboard.h: Don’t include systime.h.
|
||||
* src/keyboard.h: Don’t incldue systime.h.
|
||||
* src/keymap.c: Don’t include charset.h, frame.h.
|
||||
* src/lread.c: Include dispextern.h and systime.h.
|
||||
Don’t include frame.h. Include systime.h.
|
||||
|
|
@ -21808,7 +21808,7 @@
|
|||
2015-09-26 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* admin/MAINTAINERS: Add self, plus list some more files
|
||||
sans maintainers.
|
||||
sans maintaners.
|
||||
|
||||
2015-09-26 Zachary Kanfer <zkanfer@gmail.com> (tiny change)
|
||||
|
||||
|
|
@ -22108,7 +22108,7 @@
|
|||
* src/gfilenotify.c (dir_monitor_callback): Cancel the monitor if
|
||||
the file or directory to be watched is deleted.
|
||||
(Fgfile_add_watch): Make watch_object a triple.
|
||||
(Fgfile_rm_watch): Check, whether watch is canceled already.
|
||||
(Fgfile_rm_watch): Check, whether watch is cancelled already.
|
||||
(Fgfile_valid_p): New defun.
|
||||
(syms_of_gfilenotify): Declare Sgfile_valid_p.
|
||||
|
||||
|
|
@ -22530,7 +22530,7 @@
|
|||
|
||||
Omit unnecessary \ before paren in C docstrings
|
||||
Although \( is needed in docstrings in Elisp code, it is not needed in
|
||||
docstrings in C code, since C function definitions do not start with
|
||||
docstrings in C code, since C function definitiions do not start with
|
||||
a parenthesis. The backslashes made the docstrings a bit harder to
|
||||
read and to format in columns. Also, some C docstrings had ( in
|
||||
column 1 and this did not appear to be causing any problems. So,
|
||||
|
|
@ -23054,8 +23054,8 @@
|
|||
|
||||
Fix tests in file-notify-tests.el
|
||||
* test/automated/file-notify-tests.el: Remove Tramp declarations.
|
||||
(file-notify-test00-availability): Print remote command without
|
||||
Tramp internal functions.
|
||||
(file-notify-test00-availability): Print remote command w/o Tramp
|
||||
internal functions.
|
||||
(file-notify-test02-events, file-notify-test02-events-remote):
|
||||
Adapt docstring.
|
||||
(file-notify-test03-autorevert): Use `format-message' when
|
||||
|
|
@ -23731,7 +23731,7 @@
|
|||
|
||||
* lisp/progmodes/etags.el (etags-tags-completion-table):
|
||||
Allow even one non-regular character before the implicit tag name.
|
||||
Reported at https://emacs.stackexchange.com/questions/15269/.
|
||||
Reported at http://emacs.stackexchange.com/questions/15269/.
|
||||
|
||||
2015-09-06 Thomas Fitzsimmons <fitzsim@fitzsim.org>
|
||||
|
||||
|
|
@ -24607,7 +24607,7 @@
|
|||
|
||||
Tweak startup screen quoting
|
||||
* lisp/startup.el (normal-splash-screen): Use standard
|
||||
"M-" abbreviation rather than a confusingly-different one.
|
||||
"M-" abbrevation rather than a confusingly-different one.
|
||||
(normal-no-mouse-startup-screen): Follow ‘text-quoting-style’.
|
||||
|
||||
2015-08-27 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
|
@ -26343,7 +26343,7 @@
|
|||
(verilog-type-font-keywords): Cycle delay operators like ##1 and
|
||||
##[0:$] are now highlighted in their entirety similarly to the #
|
||||
delay-control operator. Likewise, the followed-by operators #-#
|
||||
and #=# are no longer partially highlighted.
|
||||
and #=# are no longer partially highlighed.
|
||||
(verilog-backward-syntactic-ws-quick)
|
||||
(verilog-skip-backward-comments): Minor performance improvements
|
||||
to buffer traversal functions for reduced latency.
|
||||
|
|
@ -27510,7 +27510,7 @@
|
|||
Allocate and use slightly-larger cost vectors, ones based on
|
||||
FRAME_TOTAL_LINES instead of FRAME_LINES.
|
||||
|
||||
Fix uninitialized value in encode_coding_object
|
||||
Fix uninitalized value in encode_coding_object
|
||||
* src/coding.c (encode_coding_object): Also initialize
|
||||
coding->src_pos and coding->src_pos_byte when NILP (src_object).
|
||||
This avoids later use of uninitialized storage.
|
||||
|
|
@ -28676,7 +28676,7 @@
|
|||
* lisp/faces.el (set-face-attribute): Don't be fooled too easily
|
||||
by a hyphen in a font's name.
|
||||
|
||||
Fix value of posn-at-point in R2L lines
|
||||
Fix value of posn-at-pont in R2L lines
|
||||
* src/keyboard.c (Fposn_at_x_y, Fposn_at_point): Allow X pixel
|
||||
coordinate of -1, for a newline in a right-to-left line that
|
||||
overflowed into the left fringe.
|
||||
|
|
@ -29884,7 +29884,7 @@
|
|||
file names due to deleted PWD.
|
||||
|
||||
* src/xsmfns.c (x_session_initialize): Avoid libSM crash
|
||||
when startup directory is missing. (Bug#18851)
|
||||
when starup directory is missing. (Bug#18851)
|
||||
(errno.h): Include it.
|
||||
|
||||
2015-06-13 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
|
@ -30029,7 +30029,7 @@
|
|||
because '(format "%S" '(` FOO))' returns "(\\` FOO)". A comment
|
||||
in src/lread.c's read1 function says that the backslash will be
|
||||
needed starting in Emacs 25, which implies that 'format' is
|
||||
correct and the old pcase documentation was wrong to omit the backslash.
|
||||
correct and the old pcase documention was wrong to omit the backslash.
|
||||
* lisp/emacs-lisp/nadvice.el (advice--make-docstring):
|
||||
* lisp/help-fns.el (help-fns--signature):
|
||||
* lisp/help.el (help-add-fundoc-usage):
|
||||
|
|
@ -30117,7 +30117,7 @@
|
|||
(bug#20730).
|
||||
|
||||
* lisp/progmodes/sh-script.el: Better handle nested quotes.
|
||||
(sh-here-doc-open-re): Don't mismatch the <<< operator (bug#20683).
|
||||
(sh-here-doc-open-re): Don't mis-match the <<< operator (bug#20683).
|
||||
(sh-font-lock-quoted-subshell): Make sure double quotes within single
|
||||
quotes don't mistakenly end prematurely the surrounding string.
|
||||
|
||||
|
|
@ -31364,7 +31364,7 @@
|
|||
|
||||
2015-05-25 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
Fix last change in etags.c that broke tagging compressed files
|
||||
Fix last change in etags.c that broke tagging compresed files
|
||||
* lib-src/etags.c (process_file_name) [MSDOS || DOS_NT]: Fix
|
||||
quoting of decompression shell command for MS-Windows/MS-DOS.
|
||||
|
||||
|
|
@ -32680,7 +32680,7 @@
|
|||
(verilog-beg-of-statement): Fix indenting for some forms of
|
||||
constraintsm bug433. Reported by Brad Parker. Fix indentation of
|
||||
continued assignment incorrect if first line ends with ']', bug437.
|
||||
Reported by Dan Dever. Fix indentation of cover inside an
|
||||
Reported by Dan Dever. Fix indention of cover inside an
|
||||
ifdef, bug 862. Reported by Bernd Beuster. Fix labeling do-while
|
||||
blocks, bug842.
|
||||
(verilog-preprocessor-re): Fix fork/end UNMATCHED warning, bug859.
|
||||
|
|
@ -34464,7 +34464,7 @@
|
|||
|
||||
* lisp/emacs-lisp/package.el: Make archive and status pseudo-keywords
|
||||
(package--has-keyword-p): Understand "arc:xxxx" and "status:xxxx"
|
||||
as special keywords which match against package archive and status
|
||||
as special keywords which match agains package archive and status
|
||||
respectively.
|
||||
* etc/NEWS: Document it.
|
||||
|
||||
|
|
@ -35272,7 +35272,7 @@
|
|||
2015-04-11 Artur Malabarba <bruce.connor.am@gmail.com>
|
||||
|
||||
Speed up byte-compilation and autoload generation by avoiding mode-hooks
|
||||
This prevents emacs-lisp-mode-hook from being run every time an
|
||||
This prevents emacs-lisp-mode-hook from being run everytime an
|
||||
autoload file is generated, which can account for a fraction of
|
||||
package installation time depending on the hooks the user has
|
||||
configured.
|
||||
|
|
@ -35670,7 +35670,7 @@
|
|||
2015-04-08 Artur Malabarba <bruce.connor.am@gmail.com>
|
||||
|
||||
* lisp/emacs-lisp/package.el (package-menu-mode): Mode-line notification
|
||||
while downloading information.
|
||||
while dowloading information.
|
||||
|
||||
* lisp/emacs-lisp/package.el: More conservative `ensure-init-file'
|
||||
(package--ensure-init-file): Check file contents before visiting.
|
||||
|
|
@ -35787,7 +35787,7 @@ See ChangeLog.1 for earlier changes.
|
|||
;; coding: utf-8
|
||||
;; End:
|
||||
|
||||
Copyright (C) 2015-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2015-2019 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
173571
ChangeLog.3
173571
ChangeLog.3
File diff suppressed because it is too large
Load diff
114348
ChangeLog.4
114348
ChangeLog.4
File diff suppressed because it is too large
Load diff
62
GNUmakefile
62
GNUmakefile
|
|
@ -1,6 +1,6 @@
|
|||
# Build Emacs from a fresh tarball or version-control checkout.
|
||||
|
||||
# Copyright (C) 2011-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2011-2019 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Emacs.
|
||||
#
|
||||
|
|
@ -27,44 +27,10 @@
|
|||
# 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 you are using a non-GNU 'make', or if you want non-default build
|
||||
# options, or if you want to build in an out-of-source tree, please
|
||||
# run "configure" by hand. But run autogen.sh first, if the source
|
||||
# was checked out directly from the repository.
|
||||
|
||||
# If a Makefile already exists, just use it.
|
||||
|
||||
|
|
@ -79,7 +45,7 @@ else
|
|||
ifeq ($(filter-out %clean,$(or $(MAKECMDGOALS),default)),)
|
||||
|
||||
$(MAKECMDGOALS):
|
||||
$(warning No Makefile; skipping $@.)
|
||||
@echo >&2 'No Makefile; skipping $@.'
|
||||
|
||||
else
|
||||
|
||||
|
|
@ -97,28 +63,22 @@ default $(ORDINARY_GOALS): Makefile
|
|||
.NOTPARALLEL:
|
||||
|
||||
configure:
|
||||
$(warning There seems to be no "configure" file in this directory.)
|
||||
$(warning Running ./autogen.sh ...)
|
||||
@echo >&2 'There seems to be no "configure" file in this directory.'
|
||||
@echo >&2 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 ...)
|
||||
@echo >&2 'There seems to be no Makefile in this directory.'
|
||||
@echo >&2 '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
|
||||
$(MAKE) -f Makefile all
|
||||
|
||||
.PHONY: bootstrap default $(ORDINARY_GOALS)
|
||||
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
|
|
|||
146
INSTALL
146
INSTALL
|
|
@ -1,16 +1,14 @@
|
|||
GNU Emacs Installation Guide
|
||||
Copyright (C) 1992, 1994, 1996-1997, 2000-2023 Free Software Foundation,
|
||||
Copyright (C) 1992, 1994, 1996-1997, 2000-2019 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.
|
||||
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 repository checkout
|
||||
(rather than a release), also read the file INSTALL.REPO.
|
||||
|
||||
|
||||
BASIC INSTALLATION
|
||||
|
|
@ -36,12 +34,11 @@ 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.
|
||||
1. Unpacking the Emacs release requires about 200 MB of free
|
||||
disk space. Building Emacs uses about another 200 MB of space.
|
||||
The final installed Emacs uses about 150 MB of disk space.
|
||||
This includes the space-saving that comes from automatically
|
||||
compressing the Lisp source files on installation.
|
||||
|
||||
2a. 'cd' to the directory where you unpacked Emacs and invoke the
|
||||
'configure' script:
|
||||
|
|
@ -84,17 +81,13 @@ sections if you need to.
|
|||
|
||||
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 are now ready to use Emacs. If you wish to conserve disk space,
|
||||
you may remove the program binaries and object files from the
|
||||
directory where you built Emacs:
|
||||
|
||||
|
|
@ -111,34 +104,24 @@ sections if you need to.
|
|||
(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.
|
||||
On GNU and Unix systems, Emacs needs the optional libraries "m17n-db",
|
||||
"libm17n-flt", "libotf" to correctly display such complex scripts as
|
||||
Indic and Khmer, and also for scripts that require Arabic shaping
|
||||
support (Arabic and Farsi). On some systems, particularly GNU/Linux,
|
||||
these libraries may be already present or available as additional
|
||||
packages. Note that if there is a separate 'dev' or 'devel' package,
|
||||
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 the libraries from <http://www.nongnu.org/m17n/>.
|
||||
|
||||
Note that Emacs cannot support complex scripts on a TTY, unless the
|
||||
terminal includes such a support. However, most modern terminal
|
||||
emulators, such as xterm, do support such scripts.
|
||||
terminal includes such a support.
|
||||
|
||||
* intlfonts-VERSION.tar.gz
|
||||
|
||||
|
|
@ -156,9 +139,7 @@ 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.
|
||||
in the intlfonts/README file.
|
||||
|
||||
* Image support libraries
|
||||
|
||||
|
|
@ -181,15 +162,14 @@ 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/
|
||||
libXaw3d https://directory.fsf.org/project/xaw3d/
|
||||
X libxpm for XPM: http://www.x.org/releases/current/src/lib/
|
||||
X libpng for PNG: http://www.libpng.org/
|
||||
libz (for PNG): 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/
|
||||
libz (for PNG): http://www.zlib.net/
|
||||
X libjpeg for JPEG: http://www.ijg.org/
|
||||
X libtiff for TIFF: http://www.remotesensing.org/libtiff/
|
||||
X libgif for GIF: http://sourceforge.net/projects/giflib/
|
||||
librsvg2 for SVG: http://wiki.gnome.org/action/show/Projects/LibRsvg
|
||||
|
||||
If you supply the appropriate --without-LIB option, 'configure' will
|
||||
omit the corresponding library from Emacs, even if that makes for a
|
||||
|
|
@ -218,48 +198,14 @@ 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
|
||||
The names of the packages that you need varies according to the
|
||||
GNU/Linux distribution that you use, and the options that you want to
|
||||
configure Emacs with. On Debian-based systems, you can install all the
|
||||
packages needed to build the installed version of Emacs with a command
|
||||
like 'apt-get build-dep emacs' (on older systems, replace 'emacs' with
|
||||
e.g. 'emacs25'). On Red Hat-based systems, the corresponding command is
|
||||
eg '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:
|
||||
|
||||
|
|
@ -267,7 +213,7 @@ DETAILED BUILDING AND INSTALLATION:
|
|||
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.
|
||||
1) See the basic installation summary above for the disk space requirements.
|
||||
|
||||
2) In the unlikely event that 'configure' does not detect your system
|
||||
type correctly, consult './etc/MACHINES' to see what --host, --build
|
||||
|
|
@ -348,25 +294,15 @@ or more of these options:
|
|||
--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.
|
||||
--without-imagemagick for Imagemagick support
|
||||
|
||||
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 --disable-largefile to omit support for files larger than 2GB on
|
||||
systems which support that.
|
||||
|
||||
Use --without-sound to disable sound support.
|
||||
|
||||
|
|
@ -382,12 +318,6 @@ 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.
|
||||
|
|
@ -416,7 +346,7 @@ 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
|
||||
gold plugin <http://llvm.org/docs/GoldPlugin.html>. Link time
|
||||
optimization is not the default as it tends to cause crashes and to
|
||||
make Emacs slower.
|
||||
|
||||
|
|
|
|||
38
INSTALL.REPO
38
INSTALL.REPO
|
|
@ -1,22 +1,9 @@
|
|||
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 https://git.savannah.gnu.org/git/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.
|
||||
Simply run 'make'. This should work if your files are freshly checked
|
||||
out from the repository, and if you have the proper tools installed.
|
||||
If it doesn't work, or if you have special build requirements, the
|
||||
following information may be helpful.
|
||||
|
||||
Building Emacs from the source-code repository requires some tools
|
||||
that are not needed when building from a release. You will need:
|
||||
|
|
@ -45,8 +32,8 @@ 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.
|
||||
If you want to install Emacs, type 'make install' instead of 'make' in
|
||||
the last command.
|
||||
|
||||
Occasionally the file 'lisp/loaddefs.el' (and similar automatically
|
||||
generated files, such as 'esh-groups.el', and '*-loaddefs.el' in some
|
||||
|
|
@ -64,16 +51,7 @@ To update loaddefs.el (and similar files), do:
|
|||
|
||||
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
|
||||
to rebuild, avoiding spurious problems.
|
||||
|
||||
Occasionally, there are changes that 'make bootstrap' won't be able to
|
||||
handle. The most thorough cleaning can be achieved by 'git clean -fdx'
|
||||
|
|
@ -98,7 +76,7 @@ never platform-specific.
|
|||
|
||||
|
||||
|
||||
Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002-2019 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
462
Makefile.in
462
Makefile.in
|
|
@ -1,6 +1,6 @@
|
|||
### @configure_input@
|
||||
|
||||
# Copyright (C) 1992-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1992-2019 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -48,18 +48,12 @@
|
|||
#
|
||||
# make extraclean
|
||||
# Still more severe - delete backup and autosave files, too.
|
||||
# Also generated files that do not normally change and can be slow
|
||||
# to rebuild (eg leim/ja-dic).
|
||||
#
|
||||
# make bootstrap
|
||||
# Removes all the compiled files to force a new bootstrap from a
|
||||
# clean slate, and then build in the normal way. If the FAST Make
|
||||
# variable is set, then the autom4te.cache directory and the
|
||||
# config.cache file are not removed. This lets you say
|
||||
#
|
||||
# ./configure -C
|
||||
# make FAST=true bootstrap
|
||||
#
|
||||
# and use the cached results from the configure run, which is much
|
||||
# faster though it does not work in general.
|
||||
# clean slate, and then build in the normal way.
|
||||
#
|
||||
# make docs
|
||||
# Make Emacs documentation files from their sources; requires makeinfo.
|
||||
|
|
@ -101,29 +95,25 @@ configuration=@configuration@
|
|||
### The nt/ subdirectory gets built only for MinGW
|
||||
NTDIR=@NTDIR@
|
||||
|
||||
top_builddir = @top_builddir@
|
||||
-include ${top_builddir}/src/verbose.mk
|
||||
# 'make' verbosity.
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
|
||||
FIND_DELETE = @FIND_DELETE@
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
|
||||
HAVE_NATIVE_COMP = @HAVE_NATIVE_COMP@
|
||||
|
||||
USE_STARTUP_NOTIFICATION = @USE_STARTUP_NOTIFICATION@
|
||||
|
||||
HAVE_BE_APP = @HAVE_BE_APP@
|
||||
|
||||
HAVE_PGTK = @HAVE_PGTK@
|
||||
HAVE_GSETTINGS = @HAVE_GSETTINGS@
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
|
||||
# ==================== Where To Install Things ====================
|
||||
|
||||
# Location to install Emacs.app under GNUstep / macOS.
|
||||
# Later values may use these.
|
||||
ns_appdir=@ns_appdir@
|
||||
ns_appbindir=@ns_appbindir@
|
||||
ns_applibexecdir=@ns_applibexecdir@
|
||||
ns_appresdir=@ns_appresdir@
|
||||
ns_applibdir=@ns_applibdir@
|
||||
# Either yes or no depending on whether this is a relocatable Emacs.app.
|
||||
ns_self_contained=@ns_self_contained@
|
||||
|
||||
|
|
@ -176,6 +166,9 @@ infodir=@infodir@
|
|||
# Info files not in the doc/misc directory (we get those via make echo-info).
|
||||
INFO_NONMISC=emacs.info eintr.info elisp.info
|
||||
|
||||
# If no makeinfo was found and configured --without-makeinfo, "no"; else "yes".
|
||||
HAVE_MAKEINFO=@HAVE_MAKEINFO@
|
||||
|
||||
# Directory for local state files for all programs.
|
||||
localstatedir=@localstatedir@
|
||||
|
||||
|
|
@ -203,8 +196,8 @@ x_default_search_path=@x_default_search_path@
|
|||
# Where the etc/emacs.desktop file is to be installed.
|
||||
desktopdir=$(datarootdir)/applications
|
||||
|
||||
# Where the etc/emacs.metainfo.xml file is to be installed.
|
||||
metainfodir=$(datarootdir)/metainfo
|
||||
# Where the etc/emacs.appdata.xml file is to be installed.
|
||||
appdatadir=$(datarootdir)/metainfo
|
||||
|
||||
# Where the etc/emacs.service file is to be installed.
|
||||
# The system value (typically /usr/lib/systemd/user) can be
|
||||
|
|
@ -223,18 +216,11 @@ icondir=$(datarootdir)/icons
|
|||
# The source directory for the icon files.
|
||||
iconsrcdir=$(srcdir)/etc/images/icons
|
||||
|
||||
# Where to install the gsettings schema file.
|
||||
gsettingsschemadir = $(datadir)/glib-2.0/schemas
|
||||
|
||||
# ==================== Emacs-specific directories ====================
|
||||
|
||||
# These variables hold the values Emacs will actually use. They are
|
||||
# based on the values of the standard Make variables above.
|
||||
|
||||
# Where lisp files are installed in a distributed with Emacs (relative
|
||||
# path to the installation directory).
|
||||
lispdirrel=@lispdirrel@
|
||||
|
||||
# Where to install the lisp files distributed with Emacs.
|
||||
# This includes the Emacs version, so that the lisp files for different
|
||||
# versions of Emacs will install themselves in separate directories.
|
||||
|
|
@ -301,16 +287,10 @@ use_gamedir=$(gameuser)$(gamegroup)
|
|||
# not use an absolute path. So we must take care to always run
|
||||
# INSTALL-type commands from the directory containing the Makefile.
|
||||
# This explains (I think) the cd thisdir seen in several install rules.
|
||||
SYSTEM_TYPE = @SYSTEM_TYPE@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_INFO = @INSTALL_INFO@
|
||||
ifeq ($(SYSTEM_TYPE),cygwin)
|
||||
INSTALL_ELN = $(INSTALL)
|
||||
else
|
||||
INSTALL_ELN = $(INSTALL_DATA)
|
||||
endif
|
||||
# By default, we uphold the dignity of our programs.
|
||||
INSTALL_STRIP =
|
||||
MKDIR_P = @MKDIR_P@
|
||||
|
|
@ -320,21 +300,15 @@ LN_S_FILEONLY = @LN_S_FILEONLY@
|
|||
# We use gzip to compress installed .el and some .txt files.
|
||||
GZIP_PROG = @GZIP_PROG@
|
||||
|
||||
GLIB_COMPILE_SCHEMAS = glib-compile-schemas
|
||||
|
||||
# ============================= Targets ==============================
|
||||
|
||||
# Program name transformation.
|
||||
TRANSFORM = @program_transform_name@
|
||||
|
||||
# Prevent any settings in the user environment causing problems.
|
||||
unexport EMACSDATA EMACSDOC EMACSLOADPATH EMACSPATH
|
||||
|
||||
# What emacs should be called when installed.
|
||||
EMACS_NAME = `echo emacs | sed '$(TRANSFORM)'`
|
||||
EMACS = ${EMACS_NAME}${EXEEXT}
|
||||
EMACSFULL = `echo emacs-${version} | sed '$(TRANSFORM)'`${EXEEXT}
|
||||
EMACS_PDMP = `./src/emacs${EXEEXT} --fingerprint`.pdmp
|
||||
|
||||
# Subdirectories to make recursively.
|
||||
SUBDIR = $(NTDIR) lib lib-src src lisp
|
||||
|
|
@ -346,8 +320,7 @@ SUBDIR_MAKEFILES = $(patsubst ${srcdir}/%,%,${SUBDIR_MAKEFILES_IN:.in=})
|
|||
# Non-makefile files created by config.status.
|
||||
CONFIG_STATUS_FILES_IN = \
|
||||
${srcdir}/nt/emacs.rc.in ${srcdir}/nt/emacsclient.rc.in \
|
||||
${srcdir}/doc/man/emacs.1.in ${srcdir}/src/emacs-module.h.in \
|
||||
${srcdir}/src/module-env-*.h
|
||||
${srcdir}/doc/man/emacs.1.in
|
||||
|
||||
# Subdirectories to install, and where they'll go. lib-src's and nt's
|
||||
# makefiles know how to install them, so we don't do that here.
|
||||
|
|
@ -356,88 +329,9 @@ CONFIG_STATUS_FILES_IN = \
|
|||
COPYDIR = ${srcdir}/etc ${srcdir}/lisp
|
||||
COPYDESTS = "$(DESTDIR)${etcdir}" "$(DESTDIR)${lispdir}"
|
||||
|
||||
ifeq (${ns_self_contained},no)
|
||||
BIN_DESTDIR='$(DESTDIR)${bindir}/'
|
||||
ELN_DESTDIR = $(DESTDIR)${libdir}/emacs/${version}/
|
||||
else
|
||||
BIN_DESTDIR='${ns_appbindir}/'
|
||||
ELN_DESTDIR = ${ns_applibdir}/
|
||||
endif
|
||||
all: ${SUBDIR} info
|
||||
|
||||
gsettings_SCHEMAS = etc/org.gnu.emacs.defaults.gschema.xml
|
||||
|
||||
all:
|
||||
$(MAKE) actual-all || $(MAKE) advice-on-failure make-target=all exit-status=$$?
|
||||
$(MAKE) sanity-check make-target=all
|
||||
|
||||
# This target is used by the 'bootstrap' target in GNUmakefile, instead of 'all'.
|
||||
bootstrap-all:
|
||||
$(MAKE) actual-all || $(MAKE) advice-on-failure make-target=bootstrap exit-status=$$?
|
||||
$(MAKE) sanity-check make-target=bootstrap
|
||||
|
||||
.PHONY: bootstrap-all actual-all advice-on-failure sanity-check
|
||||
|
||||
actual-all: ${SUBDIR} info $(gsettings_SCHEMAS:.xml=.valid) src-depending-on-lisp
|
||||
|
||||
# ADVICE-ON-FAILURE-BEGIN:all
|
||||
# You could try to:
|
||||
# - run "make bootstrap", which might fix the problem
|
||||
# - run "make V=1", which displays the full commands invoked by make,
|
||||
# to further investigate the problem
|
||||
# ADVICE-ON-FAILURE-END:all
|
||||
|
||||
# ADVICE-ON-FAILURE-BEGIN:bootstrap
|
||||
# You could try to:
|
||||
# - run "make extraclean" and run "make" again (or, equivalently, run
|
||||
# "make bootstrap configure=default"), to rebuild Emacs with the
|
||||
# default configuration options, which might fix the problem
|
||||
# - run "git clean -fdx" and run "make bootstrap" again, which might
|
||||
# fix the problem if "make bootstrap configure=default" did not
|
||||
# !BEWARE! "git clean -fdx" deletes all files that are not under
|
||||
# !BEWARE! version control, which means that all changes to such
|
||||
# !BEWARE! files will be lost and cannot be restored later
|
||||
# - run "make V=1", which displays the full commands invoked by make,
|
||||
# to further investigate the problem
|
||||
# - report the problem and ask for help by sending an email to
|
||||
# bug-gnu-emacs@gnu.org, mentioning at least the build error
|
||||
# message, the platform, and the repository revision displayed by
|
||||
# "git rev-parse HEAD"
|
||||
# ADVICE-ON-FAILURE-END:bootstrap
|
||||
|
||||
advice-on-failure:
|
||||
@[ -f .no-advice-on-failure ] && exit ${exit-status}; true
|
||||
@echo >&2 '***'
|
||||
@echo >&2 '*** '"\"make ${make-target}\" failed with exit status ${exit-status}."
|
||||
@echo >&2 '***'
|
||||
@cat Makefile | \
|
||||
sed -n '/^# ADVICE-ON-FAILURE-BEGIN:${make-target}/,$${p;/^# ADVICE-ON-FAILURE-END:${make-target}/q;};' | \
|
||||
sed 's/^# /*** /' | grep -v '^\*\*\* ADVICE-ON-FAILURE-' >&2
|
||||
@echo >&2 '***'
|
||||
@exit ${exit-status}
|
||||
|
||||
sanity-check:
|
||||
@[ -f .no-advice-on-failure ] && exit 0; true
|
||||
@v=`src/emacs${EXEEXT} --batch --eval \
|
||||
'(progn (defun f (n) (if (= 0 n) 1 (* n (f (- n 1))))) (princ (f 10)))' \
|
||||
2> /dev/null`; \
|
||||
[ "X$$v" = "X3628800" ] && exit 0; \
|
||||
echo >&2 '***'; \
|
||||
echo >&2 '*** '"\"make ${make-target}\" succeeded, but Emacs is not functional."; \
|
||||
echo >&2 '***'; \
|
||||
cat Makefile | \
|
||||
sed -n '/^# ADVICE-ON-FAILURE-BEGIN:${make-target}/,$${p;/^# ADVICE-ON-FAILURE-END:${make-target}/q;};' | \
|
||||
sed 's/^# /*** /' | grep -v '^\*\*\* ADVICE-ON-FAILURE-' >&2; \
|
||||
echo >&2 '***'; \
|
||||
exit 1
|
||||
|
||||
.PHONY: all ${SUBDIR} blessmail epaths-force epaths-force-w32 epaths-force-ns-self-contained etc-emacsver
|
||||
|
||||
# Changes in lisp may require us to reconsider the build in src. For
|
||||
# example, if loaddefs.{el,elc} were built in lisp, we need a new
|
||||
# .pdmp containing the new autoloads.
|
||||
.PHONY: src-depending-on-lisp
|
||||
src-depending-on-lisp: lisp
|
||||
${MAKE} -C src BIN_DESTDIR='$(BIN_DESTDIR)' ELN_DESTDIR='$(ELN_DESTDIR)'
|
||||
.PHONY: all ${SUBDIR} blessmail epaths-force epaths-force-w32 etc-emacsver
|
||||
|
||||
# If configure were to just generate emacsver.tex from emacsver.tex.in
|
||||
# in the normal way, the timestamp of emacsver.tex would always be
|
||||
|
|
@ -469,7 +363,6 @@ epaths-force:
|
|||
@(gamedir='${gamedir}'; \
|
||||
sed < ${srcdir}/src/epaths.in > epaths.h.$$$$ \
|
||||
-e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "${standardlisppath}";' \
|
||||
-e 's;\(#.*PATH_REL_LOADSEARCH\).*$$;\1 "${lispdirrel}";' \
|
||||
-e 's;\(#.*PATH_SITELOADSEARCH\).*$$;\1 "${locallisppath}";' \
|
||||
-e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "${buildlisppath}";' \
|
||||
-e '/^#define PATH_[^ ]*SEARCH /s/\([":]\):*/\1/g' \
|
||||
|
|
@ -500,27 +393,11 @@ epaths-force-w32:
|
|||
w32locallisppath=$${w32locallisppath//$${w32prefix}/"%emacs_dir%"} ; \
|
||||
sed < ${srcdir}/nt/epaths.nt > epaths.h.$$$$ \
|
||||
-e 's;\(#.*PATH_SITELOADSEARCH\).*$$;\1 "'"$${w32locallisppath//;/\\;}"'";' \
|
||||
-e 's;\(#.*PATH_REL_LOADSEARCH\).*$$;\1 "${lispdirrel}";' \
|
||||
-e '/^.*#/s/@VER@/${version}/g' \
|
||||
-e '/^.*#/s/@CFG@/${configuration}/g' \
|
||||
-e "/^.*#/s|@SRC@|$${w32srcdir}|g") && \
|
||||
${srcdir}/build-aux/move-if-change epaths.h.$$$$ src/epaths.h
|
||||
|
||||
# A NextStep style app bundle is relocatable, so instead of
|
||||
# hard-coding paths try to generate them at run-time.
|
||||
#
|
||||
# The paths are mostly the same, and the bundle paths are different
|
||||
# between macOS and GNUstep, so just replace any references to the app
|
||||
# bundle root itself with the relative path.
|
||||
epaths-force-ns-self-contained: epaths-force
|
||||
@(sed < src/epaths.h > epaths.h.$$$$ \
|
||||
-e 's;${ns_appdir}/;;') && \
|
||||
${srcdir}/build-aux/move-if-change epaths.h.$$$$ src/epaths.h
|
||||
|
||||
ifneq ($(NTDIR),)
|
||||
$(NTDIR): lib
|
||||
endif
|
||||
|
||||
lib-src src: $(NTDIR) lib
|
||||
|
||||
src: lib-src
|
||||
|
|
@ -532,17 +409,18 @@ lisp: src
|
|||
lib lib-src lisp nt: Makefile
|
||||
$(MAKE) -C $@ all
|
||||
|
||||
trampolines: src lisp
|
||||
ifeq ($(HAVE_NATIVE_COMP),yes)
|
||||
$(MAKE) -C lisp trampolines
|
||||
endif
|
||||
|
||||
# Ideally, VCSWITNESS should be a file that is modified whenever the
|
||||
# repository registers a commit from either a local checkin or a
|
||||
# repository pull. In git there is no single file that guarantees
|
||||
# this, but the local log for the current head should be close enough.
|
||||
#
|
||||
# Pass an unexpanded $srcdir to src's Makefile, which then
|
||||
# expands it using its own value of srcdir (which points to the
|
||||
# source directory of src/).
|
||||
dirstate = .git/logs/HEAD
|
||||
VCSWITNESS = $(if $(wildcard $(srcdir)/$(dirstate)),$$(srcdir)/../$(dirstate))
|
||||
src: Makefile
|
||||
$(MAKE) -C $@ BIN_DESTDIR='$(BIN_DESTDIR)' \
|
||||
ELN_DESTDIR='$(ELN_DESTDIR)' all
|
||||
$(MAKE) -C $@ VCSWITNESS='$(VCSWITNESS)' all
|
||||
|
||||
blessmail: Makefile src
|
||||
$(MAKE) -C lib-src maybe-blessmail
|
||||
|
|
@ -582,14 +460,14 @@ $(srcdir)/configure: $(srcdir)/configure.ac $(srcdir)/m4/*.m4
|
|||
# ==================== Installation ====================
|
||||
|
||||
.PHONY: install install-arch-dep install-arch-indep install-etcdoc install-info
|
||||
.PHONY: install-man install-etc install-strip install-$(NTDIR) install-eln
|
||||
.PHONY: install-man install-etc install-strip install-$(NTDIR)
|
||||
.PHONY: uninstall uninstall-$(NTDIR)
|
||||
|
||||
## If we let lib-src do its own installation, that means we
|
||||
## don't have to duplicate the list of utilities to install in
|
||||
## this Makefile as well.
|
||||
|
||||
install: actual-all install-arch-indep install-etcdoc install-arch-dep install-$(NTDIR) blessmail install-eln install-gsettings-schemas
|
||||
install: all install-arch-indep install-etcdoc install-arch-dep install-$(NTDIR) blessmail
|
||||
@true
|
||||
|
||||
## Ensure that $subdir contains a subdirs.el file.
|
||||
|
|
@ -615,14 +493,8 @@ install-arch-dep: src install-arch-indep install-etcdoc install-$(NTDIR)
|
|||
$(MAKE) -C lib-src install
|
||||
ifeq (${ns_self_contained},no)
|
||||
${INSTALL_PROGRAM} $(INSTALL_STRIP) src/emacs${EXEEXT} "$(DESTDIR)${bindir}/$(EMACSFULL)"
|
||||
ifeq (${HAVE_BE_APP},yes)
|
||||
${INSTALL_PROGRAM} $(INSTALL_STRIP) src/Emacs "$(DESTDIR)${prefix}/apps/Emacs"
|
||||
endif
|
||||
ifeq (${DUMPING},pdumper)
|
||||
ifeq (${HAVE_BE_APP},yes)
|
||||
${INSTALL_DATA} src/Emacs.pdmp "$(DESTDIR)${libexecdir}/emacs/${version}/${configuration}"/Emacs.pdmp
|
||||
endif
|
||||
${INSTALL_DATA} src/emacs.pdmp "$(DESTDIR)${libexecdir}/emacs/${version}/${configuration}"/emacs-${EMACS_PDMP}
|
||||
${INSTALL_DATA} src/emacs.pdmp "$(DESTDIR)${libexecdir}/emacs/${version}/${configuration}"/emacs.pdmp
|
||||
endif
|
||||
-chmod 755 "$(DESTDIR)${bindir}/$(EMACSFULL)"
|
||||
ifndef NO_BIN_LINK
|
||||
|
|
@ -705,8 +577,8 @@ install-arch-indep: lisp install-info install-man ${INSTALL_ARCH_INDEP_EXTRA}
|
|||
[ -d $${dir} ] || exit 1 ; \
|
||||
dest="$$1" ; shift ; \
|
||||
if [ -d "$${dest}" ]; then \
|
||||
exp_dest=`cd "$${dest}" && pwd -P`; \
|
||||
[ "$$exp_dest" = "`cd $${dir} && pwd -P`" ] && continue ; \
|
||||
exp_dest=`cd "$${dest}" && /bin/pwd`; \
|
||||
[ "$$exp_dest" = "`cd $${dir} && /bin/pwd`" ] && continue ; \
|
||||
else true; \
|
||||
fi; \
|
||||
rm -rf "$${dest}" ; \
|
||||
|
|
@ -762,33 +634,39 @@ install-arch-indep: lisp install-info install-man ${INSTALL_ARCH_INDEP_EXTRA}
|
|||
install-etcdoc: src install-arch-indep
|
||||
-unset CDPATH; \
|
||||
umask 022; ${MKDIR_P} "$(DESTDIR)${etcdocdir}" ; \
|
||||
exp_etcdocdir=`cd "$(DESTDIR)${etcdocdir}"; pwd -P`; \
|
||||
if [ "`cd ./etc; pwd -P`" != "$$exp_etcdocdir" ]; \
|
||||
exp_etcdocdir=`cd "$(DESTDIR)${etcdocdir}"; /bin/pwd`; \
|
||||
if [ "`cd ./etc; /bin/pwd`" != "$$exp_etcdocdir" ]; \
|
||||
then \
|
||||
docfile="DOC"; \
|
||||
printf 'Copying %s to %s ...\n' "etc/$$docfile" \
|
||||
"$(DESTDIR)${etcdocdir}"; \
|
||||
${INSTALL_DATA} etc/$${docfile} "$(DESTDIR)${etcdocdir}/$${docfile}"; \
|
||||
$(set_installuser); \
|
||||
chown $${installuser} "$(DESTDIR)${etcdocdir}/$${docfile}" || true ; \
|
||||
else true; fi
|
||||
|
||||
## FIXME:
|
||||
## If info/dir is missing, but we have install-info, we should let
|
||||
## that handle it. If info/dir is present and we do not have install-info,
|
||||
## we should check for missing entries and add them by hand.
|
||||
##
|
||||
## FIXME:
|
||||
## If HAVE_MAKEINFO = no and there are no info files, do not install info/dir.
|
||||
install-info: info
|
||||
umask 022; ${MKDIR_P} "$(DESTDIR)${infodir}"
|
||||
-unset CDPATH; \
|
||||
thisdir=`pwd -P`; \
|
||||
exp_infodir=`cd "$(DESTDIR)${infodir}" && pwd -P`; \
|
||||
if [ "`cd ${srcdir}/info && pwd -P`" = "$$exp_infodir" ]; then \
|
||||
thisdir=`/bin/pwd`; \
|
||||
exp_infodir=`cd "$(DESTDIR)${infodir}" && /bin/pwd`; \
|
||||
if [ "`cd ${srcdir}/info && /bin/pwd`" = "$$exp_infodir" ]; then \
|
||||
true; \
|
||||
else \
|
||||
[ -f "$(DESTDIR)${infodir}/dir" ] || \
|
||||
[ ! -f ${srcdir}/info/dir ] || \
|
||||
${INSTALL_DATA} ${srcdir}/info/dir "$(DESTDIR)${infodir}/dir"; \
|
||||
info_misc=`MAKEFLAGS= $(MAKE) --no-print-directory -s -C doc/misc echo-info`; \
|
||||
info_misc=`$(MAKE) --no-print-directory -s -C doc/misc echo-info`; \
|
||||
cd ${srcdir}/info ; \
|
||||
for elt in ${INFO_NONMISC} $${info_misc}; do \
|
||||
test "$(HAVE_MAKEINFO)" = "no" && test ! -f $$elt && continue; \
|
||||
for f in `ls $$elt $$elt-[1-9] $$elt-[1-9][0-9] 2>/dev/null`; do \
|
||||
(cd "$${thisdir}"; \
|
||||
${INSTALL_DATA} ${srcdir}/info/$$f "$(DESTDIR)${infodir}/$$f"); \
|
||||
|
|
@ -809,7 +687,7 @@ install-info: info
|
|||
## but not sure if portable.
|
||||
install-man:
|
||||
umask 022; ${MKDIR_P} "$(DESTDIR)${man1dir}"
|
||||
thisdir=`pwd -P`; \
|
||||
thisdir=`/bin/pwd`; \
|
||||
cd ${mansrcdir}; \
|
||||
for page in *.1; do \
|
||||
test "$$page" = ChangeLog.1 && continue; \
|
||||
|
|
@ -827,44 +705,19 @@ install-man:
|
|||
## Note: emacs22 does not have all the resolutions.
|
||||
EMACS_ICON=emacs
|
||||
|
||||
ifeq (${USE_STARTUP_NOTIFICATION},no)
|
||||
USE_STARTUP_NOTIFICATION_SED_CMD=-e "/^StartupNotify=true$$/d"
|
||||
endif
|
||||
install-etc:
|
||||
umask 022; ${MKDIR_P} "$(DESTDIR)${desktopdir}"
|
||||
tmp=etc/emacs.tmpdesktop; rm -f $${tmp}; \
|
||||
sed -e "/^Exec=emacs/ s/emacs/${EMACS_NAME}/" \
|
||||
-e "/^Icon=emacs/ s/emacs/${EMACS_NAME}/" \
|
||||
$(USE_STARTUP_NOTIFICATION_SED_CMD) \
|
||||
${srcdir}/etc/emacs.desktop > $${tmp}; \
|
||||
${INSTALL_DATA} $${tmp} "$(DESTDIR)${desktopdir}/${EMACS_NAME}.desktop"; \
|
||||
rm -f $${tmp}
|
||||
tmp=etc/emacsclient.tmpdesktop; rm -f $${tmp}; \
|
||||
client_name=`echo emacsclient | sed '$(TRANSFORM)'`${EXEEXT}; \
|
||||
sed -e "/^Exec=/ s|emacsclient|${bindir}/$${client_name}|" \
|
||||
-e "/^Icon=emacs/ s/emacs/${EMACS_NAME}/" \
|
||||
$(USE_STARTUP_NOTIFICATION_SED_CMD) \
|
||||
${srcdir}/etc/emacsclient.desktop > $${tmp}; \
|
||||
${INSTALL_DATA} $${tmp} "$(DESTDIR)${desktopdir}/$${client_name}.desktop"; \
|
||||
rm -f $${tmp}
|
||||
tmp=etc/emacs-mail.tmpdesktop; rm -f $${tmp}; \
|
||||
sed -e "/^Exec=emacs/ s/emacs/${EMACS_NAME}/" \
|
||||
-e "/^Icon=emacs/ s/emacs/${EMACS_NAME}/" \
|
||||
${srcdir}/etc/emacs-mail.desktop > $${tmp}; \
|
||||
${INSTALL_DATA} $${tmp} "$(DESTDIR)${desktopdir}/${EMACS_NAME}-mail.desktop"; \
|
||||
rm -f $${tmp}
|
||||
tmp=etc/emacsclient-mail.tmpdesktop; rm -f $${tmp}; \
|
||||
client_name=`echo emacsclient | sed '$(TRANSFORM)'`${EXEEXT}; \
|
||||
sed -e "/^Exec=/ s|emacsclient|${bindir}/$${client_name}|" \
|
||||
-e "/^Icon=emacs/ s/emacs/${EMACS_NAME}/" \
|
||||
${srcdir}/etc/emacsclient-mail.desktop > $${tmp}; \
|
||||
${INSTALL_DATA} $${tmp} "$(DESTDIR)${desktopdir}/$${client_name}-mail.desktop"; \
|
||||
rm -f $${tmp}
|
||||
umask 022; ${MKDIR_P} "$(DESTDIR)${metainfodir}"
|
||||
tmp=etc/emacs.tmpmetainfo; rm -f $${tmp}; \
|
||||
umask 022; ${MKDIR_P} "$(DESTDIR)${appdatadir}"
|
||||
tmp=etc/emacs.tmpappdata; rm -f $${tmp}; \
|
||||
sed -e "s/emacs\.desktop/${EMACS_NAME}.desktop/" \
|
||||
${srcdir}/etc/emacs.metainfo.xml > $${tmp}; \
|
||||
${INSTALL_DATA} $${tmp} "$(DESTDIR)${metainfodir}/${EMACS_NAME}.metainfo.xml"; \
|
||||
${srcdir}/etc/emacs.appdata.xml > $${tmp}; \
|
||||
${INSTALL_DATA} $${tmp} "$(DESTDIR)${appdatadir}/${EMACS_NAME}.appdata.xml"; \
|
||||
rm -f $${tmp}
|
||||
umask 022; $(MKDIR_P) "$(DESTDIR)$(systemdunitdir)"
|
||||
tmp=etc/emacs.tmpservice; rm -f $${tmp}; \
|
||||
|
|
@ -876,7 +729,7 @@ install-etc:
|
|||
${srcdir}/etc/emacs.service > $${tmp}; \
|
||||
$(INSTALL_DATA) $${tmp} "$(DESTDIR)$(systemdunitdir)/${EMACS_NAME}.service"; \
|
||||
rm -f $${tmp}
|
||||
thisdir=`pwd -P`; \
|
||||
thisdir=`/bin/pwd`; \
|
||||
cd ${iconsrcdir} || exit 1; umask 022 ; \
|
||||
for dir in */*/apps */*/mimetypes; do \
|
||||
[ -d $${dir} ] || continue ; \
|
||||
|
|
@ -891,14 +744,6 @@ install-etc:
|
|||
done ; \
|
||||
done
|
||||
|
||||
### Install native compiled Lisp files.
|
||||
install-eln: lisp
|
||||
ifeq ($(HAVE_NATIVE_COMP),yes)
|
||||
umask 022 ; \
|
||||
find native-lisp -type d -exec $(MKDIR_P) "$(ELN_DESTDIR){}" \; ; \
|
||||
find native-lisp -type f -exec ${INSTALL_ELN} "{}" "$(ELN_DESTDIR){}" \;
|
||||
endif
|
||||
|
||||
### Build Emacs and install it, stripping binaries while installing them.
|
||||
install-strip:
|
||||
$(MAKE) INSTALL_STRIP=-s install
|
||||
|
|
@ -907,14 +752,14 @@ install-strip:
|
|||
### create (but not the noninstalled files such as 'make all' would create).
|
||||
###
|
||||
### Don't delete the lisp and etc directories if they're in the source tree.
|
||||
uninstall: uninstall-$(NTDIR) uninstall-doc uninstall-gsettings-schemas
|
||||
uninstall: uninstall-$(NTDIR) uninstall-doc
|
||||
rm -f "$(DESTDIR)$(includedir)/emacs-module.h"
|
||||
$(MAKE) -C lib-src uninstall
|
||||
-unset CDPATH; \
|
||||
for dir in "$(DESTDIR)${lispdir}" "$(DESTDIR)${etcdir}" "$(ELN_DESTDIR)" ; do \
|
||||
for dir in "$(DESTDIR)${lispdir}" "$(DESTDIR)${etcdir}" ; do \
|
||||
if [ -d "$${dir}" ]; then \
|
||||
case `cd "$${dir}" ; pwd -P` in \
|
||||
"`cd ${srcdir} ; pwd -P`"* ) ;; \
|
||||
case `cd "$${dir}" ; /bin/pwd` in \
|
||||
"`cd ${srcdir} ; /bin/pwd`"* ) ;; \
|
||||
* ) rm -rf "$${dir}" ;; \
|
||||
esac ; \
|
||||
case "$${dir}" in \
|
||||
|
|
@ -925,8 +770,8 @@ uninstall: uninstall-$(NTDIR) uninstall-doc uninstall-gsettings-schemas
|
|||
fi ; \
|
||||
done
|
||||
-rm -rf "$(DESTDIR)${libexecdir}/emacs/${version}"
|
||||
thisdir=`pwd -P`; \
|
||||
(info_misc=`MAKEFLAGS= $(MAKE) --no-print-directory -s -C doc/misc echo-info`; \
|
||||
thisdir=`/bin/pwd`; \
|
||||
(info_misc=`$(MAKE) --no-print-directory -s -C doc/misc echo-info`; \
|
||||
if cd "$(DESTDIR)${infodir}"; then \
|
||||
for elt in ${INFO_NONMISC} $${info_misc}; do \
|
||||
(cd "$${thisdir}"; \
|
||||
|
|
@ -951,7 +796,7 @@ uninstall: uninstall-$(NTDIR) uninstall-doc uninstall-gsettings-schemas
|
|||
"hicolor/scalable/mimetypes/${EMACS_NAME}-document23.svg"; \
|
||||
fi)
|
||||
-rm -f "$(DESTDIR)${desktopdir}/${EMACS_NAME}.desktop"
|
||||
-rm -f "$(DESTDIR)${metainfodir}/${EMACS_NAME}.metainfo.xml"
|
||||
-rm -f "$(DESTDIR)${appdatadir}/${EMACS_NAME}.appdata.xml"
|
||||
-rm -f "$(DESTDIR)$(systemdunitdir)/${EMACS_NAME}.service"
|
||||
ifneq (,$(use_gamedir))
|
||||
for file in snake-scores tetris-scores; do \
|
||||
|
|
@ -985,11 +830,12 @@ endef
|
|||
### target for GCC does not delete 'libgcc.a', because recompiling it
|
||||
### is rarely necessary and takes a lot of time.
|
||||
mostlyclean_dirs = src oldXMenu lwlib lib lib-src nt doc/emacs doc/misc \
|
||||
doc/lispref doc/lispintro test
|
||||
doc/lispref doc/lispintro
|
||||
|
||||
$(foreach dir,$(mostlyclean_dirs),$(eval $(call submake_template,$(dir),mostlyclean)))
|
||||
|
||||
mostlyclean: $(mostlyclean_dirs:=_mostlyclean)
|
||||
[ ! -d test ] || $(MAKE) -C test $@
|
||||
|
||||
### 'clean'
|
||||
### Delete all files from the current directory that are normally
|
||||
|
|
@ -999,19 +845,20 @@ mostlyclean: $(mostlyclean_dirs:=_mostlyclean)
|
|||
### with them.
|
||||
###
|
||||
### Delete '.dvi' files here if they are not part of the distribution.
|
||||
clean_dirs = $(mostlyclean_dirs) nextstep admin/charsets admin/unidata
|
||||
clean_dirs = $(mostlyclean_dirs) nextstep
|
||||
|
||||
$(foreach dir,$(clean_dirs),$(eval $(call submake_template,$(dir),clean)))
|
||||
|
||||
clean: $(clean_dirs:=_clean) clean-gsettings-schemas
|
||||
clean: $(clean_dirs:=_clean)
|
||||
$(MAKE) -C admin/charsets $@
|
||||
[ ! -d test ] || $(MAKE) -C test $@
|
||||
-rm -f ./*.tmp etc/*.tmp*
|
||||
-rm -rf info-dir.*
|
||||
-rm -rf native-lisp
|
||||
|
||||
### 'bootclean'
|
||||
### Delete all files that need to be remade for a clean bootstrap.
|
||||
top_bootclean=\
|
||||
rm -f config.log ${srcdir}/doc/man/emacs.1
|
||||
rm -f config.cache config.log ${srcdir}/doc/man/emacs.1
|
||||
|
||||
### 'distclean'
|
||||
### Delete all files from the current directory that are created by
|
||||
|
|
@ -1021,18 +868,21 @@ top_bootclean=\
|
|||
### distribution.
|
||||
top_distclean=\
|
||||
${top_bootclean}; \
|
||||
rm -f config.cache config.status config.log~ \
|
||||
Makefile makefile lib/gnulib.mk ${SUBDIR_MAKEFILES}
|
||||
rm -f config.status config.log~ \
|
||||
Makefile lib/gnulib.mk ${SUBDIR_MAKEFILES}
|
||||
|
||||
distclean_dirs = $(clean_dirs) leim lisp admin/grammars
|
||||
distclean_dirs = $(clean_dirs) leim lisp
|
||||
|
||||
$(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),distclean)))
|
||||
|
||||
distclean: $(distclean_dirs:=_distclean) clean-gsettings-schemas
|
||||
maybeclean_dirs = test admin/grammars admin/unidata admin/charsets
|
||||
|
||||
distclean: $(distclean_dirs:=_distclean)
|
||||
for dir in $(filter-out test,$(maybeclean_dirs)); do \
|
||||
$(MAKE) -C $$dir $@ || exit; \
|
||||
done
|
||||
[ ! -d test ] || $(MAKE) -C test $@
|
||||
${top_distclean}
|
||||
ifeq ($(HAVE_NATIVE_COMP),yes)
|
||||
rm -rf native-lisp
|
||||
endif
|
||||
|
||||
### 'bootstrap-clean'
|
||||
### Delete everything that can be reconstructed by 'make' and that
|
||||
|
|
@ -1040,13 +890,13 @@ endif
|
|||
$(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),bootstrap-clean)))
|
||||
|
||||
bootstrap-clean: $(distclean_dirs:=_bootstrap-clean)
|
||||
for dir in $(filter-out test,$(maybeclean_dirs)); do \
|
||||
$(MAKE) -C $$dir $@ || exit; \
|
||||
done
|
||||
[ ! -d test ] || $(MAKE) -C test $@
|
||||
[ ! -f config.log ] || mv -f config.log config.log~
|
||||
rm -rf ${srcdir}/info
|
||||
rm -f ${srcdir}/etc/refcards/emacsver.tex
|
||||
rm -rf native-lisp/ lisp/leim/ja-dic/
|
||||
ifndef FAST
|
||||
rm -fr autom4te.cache config.cache
|
||||
endif
|
||||
${top_bootclean}
|
||||
|
||||
### 'maintainer-clean'
|
||||
|
|
@ -1062,47 +912,53 @@ endif
|
|||
### begin to build the program.
|
||||
top_maintainer_clean=\
|
||||
${top_distclean}; \
|
||||
rm -fr ${srcdir}/autom4te.cache
|
||||
rm -fr autom4te.cache
|
||||
|
||||
$(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),maintainer-clean)))
|
||||
maintainer_clean_dirs = src leim lisp
|
||||
|
||||
maintainer-clean: $(distclean_dirs:=_maintainer-clean)
|
||||
rm -rf ${srcdir}/info
|
||||
rm -f ${srcdir}/etc/refcards/emacsver.tex
|
||||
$(foreach dir,$(maintainer_clean_dirs),$(eval $(call submake_template,$(dir),maintainer-clean)))
|
||||
|
||||
maintainer-clean: bootstrap-clean $(maintainer_clean_dirs:=_maintainer-clean)
|
||||
for dir in $(filter-out test,$(maybeclean_dirs)); do \
|
||||
$(MAKE) -C $$dir $@ || exit; \
|
||||
done
|
||||
[ ! -d test ] || $(MAKE) -C test $@
|
||||
${top_maintainer_clean}
|
||||
|
||||
### This doesn't actually appear in the coding standards, but Karl
|
||||
### says GCC supports it, and that's where the configuration part of
|
||||
### the coding standards seem to come from. It's like distclean, but
|
||||
### it deletes backup and autosave files too.
|
||||
extraclean: maintainer-clean
|
||||
-rm -f config-tmp-* ${srcdir}/aclocal.m4 ${srcdir}/configure \
|
||||
${srcdir}/src/config.in
|
||||
-[ "${srcdir}" = "." ] || \
|
||||
find ${srcdir} '(' -name '*~' -o -name '#*' ')' ${FIND_DELETE}
|
||||
-find . '(' -name '*~' -o -name '#*' ')' ${FIND_DELETE}
|
||||
### Note that we abuse this in some subdirectories (eg leim),
|
||||
### to delete some generated files that are slow to rebuild.
|
||||
extraclean_dirs = ${NTDIR} lib-src src leim \
|
||||
admin/charsets admin/grammars admin/unidata
|
||||
|
||||
$(foreach dir,$(extraclean_dirs),$(eval $(call submake_template,$(dir),extraclean)))
|
||||
|
||||
extraclean: $(extraclean_dirs:=_extraclean)
|
||||
${top_maintainer_clean}
|
||||
-rm -f config-tmp-*
|
||||
-rm -f ./*~ \#*
|
||||
|
||||
# The src subdir knows how to do the right thing
|
||||
# even when the build directory and source dir are different.
|
||||
.PHONY: TAGS tags
|
||||
# FIXME: We used to include `src` in the dependencies, not sure why.
|
||||
# I removed it because it causes `make tags` to build Emacs.
|
||||
TAGS tags: lib lib-src # src
|
||||
TAGS tags: lib lib-src src
|
||||
$(MAKE) -C src tags
|
||||
$(MAKE) -C doc/emacs tags
|
||||
$(MAKE) -C doc/lispintro tags
|
||||
$(MAKE) -C doc/lispref tags
|
||||
$(MAKE) -C doc/misc tags
|
||||
|
||||
CHECK_TARGETS = check check-maybe check-expensive check-all
|
||||
.PHONY: $(CHECK_TARGETS)
|
||||
$(CHECK_TARGETS): all
|
||||
.PHONY: have-tests
|
||||
have-tests:
|
||||
@if test ! -d test; then \
|
||||
echo "You do not seem to have the test/ directory."; \
|
||||
echo "Maybe you are using a release tarfile, rather than a repository checkout."; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
.PHONY: check check-maybe check-expensive check-all
|
||||
check check-maybe check-expensive check-all: have-tests all
|
||||
$(MAKE) -C test $@
|
||||
|
||||
test/%:
|
||||
$(MAKE) -C test $*
|
||||
|
||||
|
||||
dist:
|
||||
cd ${srcdir}; ./make-dist
|
||||
|
||||
|
|
@ -1117,34 +973,24 @@ $(DOCS):
|
|||
$(MAKE) -C doc/$(subst -, ,$@)
|
||||
|
||||
.PHONY: $(DOCS) docs pdf ps
|
||||
.PHONY: info dvi dist html info-dir check-info
|
||||
.PHONY: info dvi dist html info-real info-dir check-info
|
||||
|
||||
## TODO add etc/refcards.
|
||||
docs: $(DOCS)
|
||||
dvi: $(DVIS)
|
||||
html: $(HTMLS)
|
||||
info: $(INFOS) info-dir
|
||||
info-real: $(INFOS)
|
||||
pdf: $(PDFS)
|
||||
ps: $(PSS)
|
||||
|
||||
# This dependency is due to those doc/misc/ manuals that use .org sources.
|
||||
# Depending on src is sufficient, but ends up being slow, since the
|
||||
# uncompiled lisp/org/*.el files are used to build the .texi files
|
||||
# (which can be slow even with the elc files).
|
||||
misc-info: lisp
|
||||
# Using src rather than lisp because one is less likely to get unnecessary
|
||||
# rebuilds of stuff that is not strictly necessary for generating manuals.
|
||||
misc-dvi misc-html misc-pdf misc-ps: src
|
||||
|
||||
info-dir: ${srcdir}/info/dir
|
||||
|
||||
texi_misc = $(shell MAKEFLAGS= ${MAKE} --no-print-directory -s -C doc/misc echo-sources)
|
||||
|
||||
## Hopefully doc/misc/*.texi is not too long for some systems?
|
||||
srcdir_doc_info_dir_inputs = \
|
||||
${srcdir}/doc/emacs/emacs.texi \
|
||||
${srcdir}/doc/lispintro/emacs-lisp-intro.texi \
|
||||
${srcdir}/doc/lispref/elisp.texi \
|
||||
$(addprefix ${srcdir}/doc/misc/,${texi_misc})
|
||||
$(sort $(wildcard ${srcdir}/doc/misc/*.texi))
|
||||
info_dir_inputs = \
|
||||
../build-aux/dir_top \
|
||||
$(subst ${srcdir}/doc/,,${srcdir_doc_info_dir_inputs})
|
||||
|
|
@ -1157,11 +1003,11 @@ info_dir_deps = \
|
|||
## installation location by the install-info rule, but we also
|
||||
## need one in the source directory for people running uninstalled.
|
||||
## FIXME it would be faster to use the install-info program if we have it,
|
||||
## but then we would need to depend on ${INFOS}, which would
|
||||
## but then we would need to depend on info-real, which would
|
||||
## slow down parallelization.
|
||||
${srcdir}/info/dir: ${info_dir_deps}
|
||||
$(AM_V_GEN)${MKDIR_P} ${srcdir}/info
|
||||
$(AM_V_at)(cd ${srcdir}/doc && \
|
||||
$(AM_V_at)${MKDIR_P} ${srcdir}/info
|
||||
$(AM_V_GEN)(cd ${srcdir}/doc && \
|
||||
AWK='${AWK}' ../build-aux/make-info-dir ${info_dir_inputs} \
|
||||
) >$@.tmp && mv $@.tmp $@
|
||||
|
||||
|
|
@ -1212,6 +1058,23 @@ uninstall-html: $(UNINSTALL_HTML)
|
|||
uninstall-pdf: $(UNINSTALL_PDF)
|
||||
uninstall-ps: $(UNINSTALL_PS)
|
||||
|
||||
|
||||
# Note that man/Makefile knows how to put the info files in $(srcdir),
|
||||
# so we can do ok running make in the build dir.
|
||||
# This used to have a clause that exited with an error if MAKEINFO = no.
|
||||
# But it is inappropriate to do so without checking if makeinfo is
|
||||
# actually needed - it is not if the info files are up-to-date. (Bug#3982)
|
||||
# Only the doc/*/Makefiles can decide that, so we let those rules run
|
||||
# and give a standard error if makeinfo is needed but missing.
|
||||
# While it would be nice to give a more detailed error message, that
|
||||
# would require changing every rule in doc/ that builds an info file,
|
||||
# and it's not worth it. This case is only relevant if you download a
|
||||
# release, then change the .texi files.
|
||||
info:
|
||||
ifneq ($(HAVE_MAKEINFO),no)
|
||||
$(MAKE) info-real info-dir
|
||||
endif
|
||||
|
||||
## build-aux/make-info-dir expects only certain dircategories.
|
||||
check-info: info
|
||||
cd info ; \
|
||||
|
|
@ -1240,30 +1103,17 @@ check-info: info
|
|||
### This first cleans the lisp subdirectory, removing all compiled
|
||||
### Lisp files. Then re-run make to build all the files anew.
|
||||
|
||||
.PHONY: bootstrap actual-bootstrap
|
||||
.PHONY: bootstrap
|
||||
|
||||
bootstrap:
|
||||
$(MAKE) actual-bootstrap || $(MAKE) advice-on-failure make-target=bootstrap exit-status=$$?
|
||||
$(MAKE) sanity-check make-target=bootstrap
|
||||
|
||||
# Without a 'configure' variable, bootstrapping does the following:
|
||||
# Bootstrapping does the following:
|
||||
# * Remove files to start from a bootstrap-clean slate.
|
||||
# * Run autogen.sh.
|
||||
# * Rebuild Makefile, to update the build procedure itself.
|
||||
# * Do the actual build.
|
||||
# With a 'configure' variable, bootstrapping does the following:
|
||||
# * Remove files to start from an extraclean slate.
|
||||
# * Do the actual build, during which the 'configure' variable is
|
||||
# used (see the Makefile goal in GNUmakefile).
|
||||
actual-bootstrap:
|
||||
ifndef configure
|
||||
$(MAKE) bootstrap-clean
|
||||
bootstrap: bootstrap-clean
|
||||
cd $(srcdir) && ./autogen.sh autoconf
|
||||
$(MAKE) MAKEFILE_NAME=force-Makefile force-Makefile
|
||||
else
|
||||
$(MAKE) extraclean
|
||||
endif
|
||||
$(MAKE) actual-all
|
||||
$(MAKE) all
|
||||
|
||||
.PHONY: ChangeLog change-history change-history-commit change-history-nocommit
|
||||
.PHONY: preferred-branch-is-current unchanged-history-files
|
||||
|
|
@ -1283,11 +1133,11 @@ ChangeLog:
|
|||
./$(emacslog) -o $(CHANGELOG) -n $(CHANGELOG_HISTORY_INDEX_MAX)
|
||||
|
||||
# Check that we are in a good state for changing history.
|
||||
PREFERRED_BRANCH = emacs-28
|
||||
PREFERRED_BRANCH = emacs-26
|
||||
preferred-branch-is-current:
|
||||
git branch | grep -q '^\* $(PREFERRED_BRANCH)$$'
|
||||
unchanged-history-files:
|
||||
x=`git diff-files --name-only $(CHANGELOG_N) $(emacslog)` && \
|
||||
x=$$(git diff-files --name-only $(CHANGELOG_N) $(emacslog)) && \
|
||||
test -z "$$x"
|
||||
|
||||
# Regular expression that matches the newest commit covered by a ChangeLog.
|
||||
|
|
@ -1334,31 +1184,3 @@ gitmerge:
|
|||
${GITMERGE_EMACS} -batch --no-site-file --no-site-lisp \
|
||||
-l ${srcdir}/admin/gitmerge.el \
|
||||
--eval '(setq gitmerge-minimum-missing ${GITMERGE_NMIN})' -f gitmerge
|
||||
|
||||
install-gsettings-schemas:
|
||||
ifeq ($(HAVE_PGTK)$(HAVE_GSETTINGS),yesyes)
|
||||
$(MKDIR_P) "$(DESTDIR)$(gsettingsschemadir)"
|
||||
$(INSTALL_DATA) $(srcdir)/$(gsettings_SCHEMAS) "$(DESTDIR)$(gsettingsschemadir)"
|
||||
if [ -z "$(DESTDIR)" ]; then $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir); fi
|
||||
endif
|
||||
|
||||
uninstall-gsettings-schemas:
|
||||
ifeq ($(HAVE_PGTK)$(HAVE_GSETTINGS),yesyes)
|
||||
for x in $(gsettings_SCHEMAS); do \
|
||||
xx=`echo $$x | sed -e 's|.*/||'`; \
|
||||
rm -f "$(DESTDIR)$(gsettingsschemadir)/$${xx}"; \
|
||||
done
|
||||
if [ -z "$(DESTDIR)" ]; then $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir); fi
|
||||
endif
|
||||
|
||||
clean-gsettings-schemas:
|
||||
ifeq ($(HAVE_PGTK)$(HAVE_GSETTINGS),yesyes)
|
||||
rm -f $(gsettings_SCHEMAS:.xml=.valid)
|
||||
endif
|
||||
|
||||
$(gsettings_SCHEMAS:.xml=.valid): $(srcdir)/$(gsettings_SCHEMAS)
|
||||
ifeq ($(HAVE_PGTK)$(HAVE_GSETTINGS),yesyes)
|
||||
$(GLIB_COMPILE_SCHEMAS) --strict --dry-run --schema-file=$(srcdir)/$(gsettings_SCHEMAS)
|
||||
$(MKDIR_P) $(@D)
|
||||
touch $@
|
||||
endif
|
||||
|
|
|
|||
4
README
4
README
|
|
@ -1,8 +1,8 @@
|
|||
Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001-2019 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
|
||||
This directory tree holds version 30.0.50 of GNU Emacs, the extensible,
|
||||
This directory tree holds version 27.0.50 of GNU Emacs, the extensible,
|
||||
customizable, self-documenting real-time display editor.
|
||||
|
||||
The file INSTALL in this directory says how to build and install GNU
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ DARWIN_OS Compiling on macOS or pure Darwin (and using s/darwin.h).
|
|||
SOLARIS2
|
||||
USG
|
||||
USG5_4
|
||||
HAIKU Compiling on Haiku.
|
||||
|
||||
** Distinguishing GUIs **
|
||||
|
||||
|
|
@ -33,38 +32,16 @@ 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.
|
||||
|
||||
HAVE_X11R6
|
||||
HAVE_X11R6_XIM
|
||||
HAVE_X11XTR6
|
||||
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.
|
||||
USE_GTK Use the Gtk toolkit for menus&scrollbars. Requires HAVE_X11.
|
||||
|
||||
** Frame types **
|
||||
|
||||
|
|
@ -104,6 +81,7 @@ anymore, so they can be removed.
|
|||
|
||||
AMPERSAND_FULL_NAME
|
||||
BROKEN_DATAGRAM_SOCKETS
|
||||
BROKEN_FIONREAD
|
||||
BROKEN_GET_CURRENT_DIR_NAME
|
||||
BROKEN_PTY_READ_AFTER_EAGAIN
|
||||
DEFAULT_SOUND_DEVICE
|
||||
|
|
@ -116,12 +94,17 @@ EMACS_CONFIG_OPTIONS
|
|||
EMACS_INT
|
||||
EMACS_UINT
|
||||
GC_MARK_SECONDARY_STACK
|
||||
GC_MARK_STACK
|
||||
GC_SETJMP_WORKS
|
||||
GNU_MALLOC
|
||||
HAVE_AIX_SMT_EXP
|
||||
HAVE_ALARM
|
||||
HAVE_ALLOCA
|
||||
HAVE_ALLOCA_H
|
||||
HAVE_ALSA
|
||||
HAVE_BDFFONT
|
||||
HAVE_BOXES
|
||||
HAVE_C99_STRTOLD
|
||||
HAVE_CFMAKERAW
|
||||
HAVE_CFSETSPEED
|
||||
HAVE_CLOCK_GETTIME
|
||||
|
|
@ -135,14 +118,19 @@ HAVE_DBUS_VALIDATE_INTERFACE
|
|||
HAVE_DBUS_VALIDATE_MEMBER
|
||||
HAVE_DBUS_VALIDATE_PATH
|
||||
HAVE_DBUS_WATCH_GET_UNIX_FD
|
||||
HAVE_DECL_GETENV
|
||||
HAVE_DECL_LOCALTIME_R
|
||||
HAVE_DECL_STRMODE
|
||||
HAVE_DECL_STRTOIMAX
|
||||
HAVE_DECL_STRTOLL
|
||||
HAVE_DECL_STRTOULL
|
||||
HAVE_DECL_STRTOUMAX
|
||||
HAVE_DECL_SYS_SIGLIST
|
||||
HAVE_DECL_TZNAME
|
||||
HAVE_DECL___SYS_SIGLIST
|
||||
HAVE_DIALOGS
|
||||
HAVE_DIFFTIME
|
||||
HAVE_DUP2
|
||||
HAVE_ENDGRENT
|
||||
HAVE_ENDPWENT
|
||||
HAVE_ENVIRON_DECL
|
||||
|
|
@ -156,9 +144,11 @@ HAVE_FUTIMES
|
|||
HAVE_FUTIMESAT
|
||||
HAVE_GAI_STRERROR
|
||||
HAVE_GCONF
|
||||
HAVE_GETDELIM
|
||||
HAVE_GETGRENT
|
||||
HAVE_GETHOSTNAME
|
||||
HAVE_GETIFADDRS
|
||||
HAVE_GETLINE
|
||||
HAVE_GETLOADAVG
|
||||
HAVE_GETOPT_H
|
||||
HAVE_GETOPT_LONG_ONLY
|
||||
|
|
@ -177,8 +167,18 @@ HAVE_GPM
|
|||
HAVE_GRANTPT
|
||||
HAVE_GSETTINGS
|
||||
HAVE_GTK3
|
||||
HAVE_GTK_ADJUSTMENT_GET_PAGE_SIZE
|
||||
HAVE_GTK_DIALOG_GET_ACTION_AREA
|
||||
HAVE_GTK_FILE_SELECTION_NEW
|
||||
HAVE_GTK_MAIN
|
||||
HAVE_GTK_MULTIDISPLAY
|
||||
HAVE_GTK_ORIENTABLE_SET_ORIENTATION
|
||||
HAVE_GTK_WIDGET_GET_MAPPED
|
||||
HAVE_GTK_WIDGET_GET_SENSITIVE
|
||||
HAVE_GTK_WIDGET_GET_WINDOW
|
||||
HAVE_GTK_WIDGET_SET_HAS_WINDOW
|
||||
HAVE_GTK_WINDOW_SET_HAS_RESIZE_GRIP
|
||||
HAVE_G_TYPE_INIT
|
||||
HAVE_IFADDRS_H
|
||||
HAVE_IMAGEMAGICK
|
||||
HAVE_INTTYPES_H
|
||||
|
|
@ -196,10 +196,13 @@ HAVE_LIBLOCKFILE
|
|||
HAVE_LIBMAIL
|
||||
HAVE_LIBOTF
|
||||
HAVE_LIBPERFSTAT
|
||||
HAVE_LIBPNG_PNG_H
|
||||
HAVE_LIBSELINUX
|
||||
HAVE_LIBXML2
|
||||
HAVE_LIBXMU
|
||||
HAVE_LOCALTIME_R
|
||||
HAVE_LOCAL_SOCKETS
|
||||
HAVE_LONG_LONG_INT
|
||||
HAVE_LRAND48
|
||||
HAVE_LSTAT
|
||||
HAVE_LUTIMES
|
||||
|
|
@ -210,18 +213,24 @@ HAVE_MAGICKEXPORTIMAGEPIXELS
|
|||
HAVE_MAGICKMERGEIMAGELAYERS
|
||||
HAVE_MAILLOCK_H
|
||||
HAVE_MALLOC_MALLOC_H
|
||||
HAVE_MATHERR
|
||||
HAVE_MBSTATE_T
|
||||
HAVE_MEMCMP
|
||||
HAVE_MEMMOVE
|
||||
HAVE_MEMORY_H
|
||||
HAVE_MEMSET
|
||||
HAVE_MENUS
|
||||
HAVE_MKSTEMP
|
||||
HAVE_MMAP
|
||||
HAVE_MULTILINGUAL_MENU
|
||||
HAVE_NANOTIME
|
||||
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_PNG_H
|
||||
HAVE_POSIX_MEMALIGN
|
||||
HAVE_PROCFS
|
||||
HAVE_PSELECT
|
||||
|
|
@ -258,12 +267,15 @@ HAVE_SOUNDCARD_H
|
|||
HAVE_STDINT_H
|
||||
HAVE_STDIO_EXT_H
|
||||
HAVE_STDLIB_H
|
||||
HAVE_STLIB_H_1
|
||||
HAVE_STRINGS_H
|
||||
HAVE_STRING_H
|
||||
HAVE_STRNCASECMP
|
||||
HAVE_STRSIGNAL
|
||||
HAVE_STRTOIMAX
|
||||
HAVE_STRTOLL
|
||||
HAVE_STRTOULL
|
||||
HAVE_STRTOUMAX
|
||||
HAVE_STRUCT_ERA_ENTRY
|
||||
HAVE_STRUCT_IFREQ_IFR_ADDR
|
||||
HAVE_STRUCT_IFREQ_IFR_ADDR_SA_LEN
|
||||
|
|
@ -279,7 +291,9 @@ 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_TIMEZONE
|
||||
HAVE_STRUCT_TM_TM_ZONE
|
||||
HAVE_STRUCT_UTIMBUF
|
||||
HAVE_ST_DM_MODE
|
||||
HAVE_SYMLINK
|
||||
HAVE_SYNC
|
||||
|
|
@ -293,25 +307,30 @@ HAVE_SYS_SOCKET_H
|
|||
HAVE_SYS_SOUNDCARD_H
|
||||
HAVE_SYS_STAT_H
|
||||
HAVE_SYS_SYSTEMINFO_H
|
||||
HAVE_SYS_TIMEB_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_TCATTR
|
||||
HAVE_TERM_H
|
||||
HAVE_TIFF
|
||||
HAVE_TIMEVAL
|
||||
HAVE_TM_GMTOFF
|
||||
HAVE_TM_ZONE
|
||||
HAVE_TOUCHLOCK
|
||||
HAVE_TZNAME
|
||||
HAVE_TZSET
|
||||
HAVE_UNSIGNED_LONG_LONG_INT
|
||||
HAVE_UTIL_H
|
||||
HAVE_UTIMENSAT
|
||||
HAVE_UTIMES
|
||||
HAVE_UTIME_H
|
||||
HAVE_UTMP_H
|
||||
HAVE_VFORK
|
||||
HAVE_VFORK_H
|
||||
HAVE_WEBP
|
||||
HAVE_SQLITE3
|
||||
HAVE_WCHAR_H
|
||||
HAVE_WCHAR_T
|
||||
HAVE_WINDOW_SYSTEM
|
||||
|
|
@ -328,10 +347,14 @@ HAVE_XRMSETDATABASE
|
|||
HAVE_XSCREENNUMBEROFSCREEN
|
||||
HAVE_XSCREENRESOURCESTRING
|
||||
HAVE_X_I18N
|
||||
HAVE_X_MENU
|
||||
HAVE_X_SM
|
||||
HAVE_X_WINDOWS
|
||||
HAVE__BOOL
|
||||
HAVE__FTIME
|
||||
HAVE___BUILTIN_UNWIND_INIT
|
||||
HAVE___EXECUTABLE_START
|
||||
HAVE___FPENDING
|
||||
INTERNAL_TERMINAL
|
||||
IS_ANY_SEP
|
||||
IS_DIRECTORY_SEP
|
||||
|
|
@ -341,6 +364,7 @@ MAIL_USE_POP
|
|||
MAIL_USE_SYSTEM_LOCK
|
||||
MAXPATHLEN
|
||||
NLIST_STRUCT
|
||||
NO_EDITRES
|
||||
NSIG
|
||||
NSIG_MINIMUM
|
||||
NULL_DEVICE
|
||||
|
|
@ -359,6 +383,7 @@ SYSTEM_MALLOC
|
|||
TAB3
|
||||
TABDLY
|
||||
TERM
|
||||
TIME_WITH_SYS_TIME
|
||||
TIOCSIGSEND
|
||||
TM_IN_SYS_TIME
|
||||
UNIX98_PTYS
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@
|
|||
|
||||
* grammars/c.by (opt-brackets-after-symbol): New.
|
||||
(multi-stage-dereference): Use it. Add rules for explicit
|
||||
matching the last dereference. We cannot just use
|
||||
matching the last dereference. We cannot just juse
|
||||
'namespace-symbol' as a single rule, since this would match too
|
||||
greedy and mess with parsing default values of variables.
|
||||
|
||||
|
|
@ -1258,7 +1258,7 @@
|
|||
2012-06-13 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* make-emacs: Rename --union-type to --check-lisp-type.
|
||||
Define CHECK_LISP_OBJECT_TYPE instead of USE_LISP_UNION_TYPE.
|
||||
Define CHECK_LISP_OBJECT_TYPE insted of USE_LISP_UNION_TYPE.
|
||||
* CPP-DEFINES (DEBUG_LISP_OBJECT_TYPE): Rename from
|
||||
USE_LISP_UNION_TYPE.
|
||||
|
||||
|
|
@ -1629,10 +1629,10 @@
|
|||
2010-09-05 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* unidata/BidiMirroring.txt: Update from
|
||||
https://www.unicode.org/Public/6.0.0/ucd/BidiMirroring-6.0.0d2.txt
|
||||
http://www.unicode.org/Public/6.0.0/ucd/BidiMirroring-6.0.0d2.txt
|
||||
|
||||
* unidata/UnicodeData.txt: Update from
|
||||
https://www.unicode.org/Public/6.0.0/ucd/UnicodeData-6.0.0d7.txt
|
||||
http://www.unicode.org/Public/6.0.0/ucd/UnicodeData-6.0.0d7.txt
|
||||
|
||||
2010-08-09 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
|
|
@ -1668,7 +1668,7 @@
|
|||
* unidata/bidimirror.awk: New file.
|
||||
|
||||
* unidata/BidiMirroring.txt: New file from
|
||||
https://www.unicode.org/Public/6.0.0/ucd/BidiMirroring-6.0.0d1.txt.
|
||||
http://www.unicode.org/Public/6.0.0/ucd/BidiMirroring-6.0.0d1.txt.
|
||||
|
||||
* unidata/Makefile.in (../../src/bidimirror.h): New target.
|
||||
(all): Depend on ../../src/biditype.h and ../../src/bidimirror.h.
|
||||
|
|
@ -1685,7 +1685,7 @@
|
|||
2010-06-09 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* unidata/UnicodeData.txt: Update from
|
||||
https://www.unicode.org/Public/6.0.0/ucd/UnicodeData-6.0.0d5.txt
|
||||
http://www.unicode.org/Public/6.0.0/ucd/UnicodeData-6.0.0d5.txt
|
||||
|
||||
2010-05-27 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
|
|
@ -2031,7 +2031,7 @@
|
|||
* unidata/unidata-gen.el: New file.
|
||||
|
||||
* unidata/UnicodeData.txt: New file. Copied from
|
||||
https://www.unicode.org on 2006-05-23.
|
||||
http://www.unicode.org on 2006-05-23.
|
||||
|
||||
* unidata/.cvsignore: New file.
|
||||
|
||||
|
|
@ -2577,7 +2577,7 @@
|
|||
;; coding: utf-8
|
||||
;; End:
|
||||
|
||||
Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001-2019 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -58,7 +58,10 @@ Artur Malabarba
|
|||
|
||||
Michael Albinus
|
||||
Tramp
|
||||
lisp/net/tramp*.el
|
||||
lisp/url/url-tramp.el
|
||||
doc/misc/tramp*.texi
|
||||
test/lisp/net/tramp*-tests.el
|
||||
test/lisp/url/url-tramp-tests.el
|
||||
|
||||
D-Bus
|
||||
|
|
@ -123,43 +126,6 @@ Ulf Jasper
|
|||
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.
|
||||
|
|
@ -242,7 +208,6 @@ Paul Eggert
|
|||
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
|
||||
|
|
@ -250,7 +215,6 @@ Michael Albinus
|
|||
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
|
||||
|
|
@ -276,59 +240,13 @@ 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: https://git.savannah.gnu.org/git/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: https://git.savannah.gnu.org/git/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
|
||||
Alan Third
|
||||
The NS port:
|
||||
nextstep/*
|
||||
src/ns*
|
||||
src/*.m
|
||||
lisp/term/ns-win.el
|
||||
doc/emacs/macos.texi
|
||||
|
||||
|
||||
;;; Local Variables:
|
||||
|
|
|
|||
15
admin/README
15
admin/README
|
|
@ -1,4 +1,4 @@
|
|||
Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001-2019 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
|
||||
|
|
@ -61,19 +61,8 @@ Brief description of sub-directories:
|
|||
|
||||
charsets scripts for generating charset map files
|
||||
in ../etc/charsets
|
||||
coccinelle patches to make coccinelle work with
|
||||
the latest Emacs version. Since they
|
||||
apply a few minor changes in Emacs internals
|
||||
in multiple places, they are trivial for
|
||||
copyright purposes.
|
||||
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/.
|
||||
in ../lisp/international
|
||||
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
|
|
|||
460
admin/admin.el
460
admin/admin.el
|
|
@ -1,6 +1,6 @@
|
|||
;;; admin.el --- utilities for Emacs administration -*- lexical-binding: t; -*-
|
||||
;;; admin.el --- utilities for Emacs administration
|
||||
|
||||
;; Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001-2019 Free Software Foundation, Inc.
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -88,9 +88,6 @@ Optional argument DATE is the release date, default today."
|
|||
(kill-buffer)
|
||||
(message "No need to update `%s'" file)))
|
||||
|
||||
(defvar admin-git-command (executable-find "git")
|
||||
"The `git' program to use.")
|
||||
|
||||
(defun set-version (root version)
|
||||
"Set Emacs version to VERSION in relevant files under ROOT.
|
||||
Root must be the root of an Emacs source tree."
|
||||
|
|
@ -99,8 +96,6 @@ Root must be the root of an Emacs source tree."
|
|||
(read-string "Version number: " emacs-version)))
|
||||
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
|
||||
(user-error "%s doesn't seem to be the root of an Emacs source tree" root))
|
||||
(unless admin-git-command
|
||||
(user-error "Could not find git; please install git and move NEWS manually"))
|
||||
(message "Setting version numbers...")
|
||||
;; There's also a "version 3" (standing for GPLv3) at the end of
|
||||
;; `README', but since `set-version-in-file' only replaces the first
|
||||
|
|
@ -124,6 +119,9 @@ Root must be the root of an Emacs source tree."
|
|||
;; Major version only.
|
||||
(when (string-match "\\([0-9]\\{2,\\}\\)" version)
|
||||
(let ((newmajor (match-string 1 version)))
|
||||
(set-version-in-file root "src/msdos.c" newmajor
|
||||
(rx (and "Vwindow_system_version" (1+ not-newline)
|
||||
?\( (submatch (1+ (in "0-9"))) ?\))))
|
||||
(set-version-in-file root "etc/refcards/ru-refcard.tex" newmajor
|
||||
"\\\\newcommand{\\\\versionemacs}\\[0\\]\
|
||||
{\\([0-9]\\{2,\\}\\)}.+%.+version of Emacs")))
|
||||
|
|
@ -140,32 +138,19 @@ Root must be the root of an Emacs source tree."
|
|||
(if (eq 2 (length newversion)) 0 1))))
|
||||
(majorbump (and oldversion (not (equal oldmajor newmajor))))
|
||||
(minorbump (and oldversion (not majorbump)
|
||||
(or (not (equal (cadr oldversion) (cadr newversion)))
|
||||
;; Eg 26.2 -> 26.2.50.
|
||||
(and (> (length newversion)
|
||||
(length oldversion))))))
|
||||
(not (equal (cadr oldversion) (cadr newversion)))))
|
||||
(newsfile (expand-file-name "etc/NEWS" root))
|
||||
(oldnewsfile (expand-file-name (format "etc/NEWS.%s" oldmajor) root)))
|
||||
(unless (> (length newversion) 2) ; pretest or release candidate?
|
||||
(with-temp-buffer
|
||||
(insert-file-contents newsfile)
|
||||
(when (re-search-forward "^\\* [^\n]*\n+" nil t)
|
||||
(display-warning 'admin
|
||||
"NEWS file contains empty sections - remove them?"))
|
||||
(goto-char (point-min))
|
||||
(if (re-search-forward "^\\(\\+\\+\\+? *$\\|---? *$\\|Temporary note:\\)" nil t)
|
||||
(if (re-search-forward "^\\(+++ *\\|--- *\\)$" nil t)
|
||||
(display-warning 'admin
|
||||
"NEWS file still contains temporary markup.
|
||||
Documentation changes might not have been completed!"))))
|
||||
(when (and majorbump
|
||||
(not (file-exists-p oldnewsfile)))
|
||||
(call-process admin-git-command nil nil nil
|
||||
"mv" newsfile oldnewsfile)
|
||||
(when (y-or-n-p "Commit move of NEWS file?")
|
||||
(call-process admin-git-command nil nil nil
|
||||
"commit" "-m" (format "; Move etc/%s to etc/%s"
|
||||
(file-name-nondirectory newsfile)
|
||||
(file-name-nondirectory oldnewsfile))))
|
||||
(rename-file newsfile oldnewsfile)
|
||||
(find-file oldnewsfile) ; to prompt you to commit it
|
||||
(copy-file oldnewsfile newsfile)
|
||||
(with-temp-buffer
|
||||
|
|
@ -262,7 +247,7 @@ ROOT should be the root of an Emacs source tree."
|
|||
(search-forward "INFO_COMMON = ")
|
||||
(let ((start (point)))
|
||||
(end-of-line)
|
||||
(while (and (looking-back "\\\\" (- (point) 2))
|
||||
(while (and (looking-back "\\\\")
|
||||
(zerop (forward-line 1)))
|
||||
(end-of-line))
|
||||
(append (split-string (replace-regexp-in-string
|
||||
|
|
@ -345,16 +330,14 @@ Optional argument TYPE is type of output (nil means all)."
|
|||
|
||||
(defconst manual-doctype-string
|
||||
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"
|
||||
\"https://www.w3.org/TR/html4/loose.dtd\">\n\n")
|
||||
\"http://www.w3.org/TR/html4/loose.dtd\">\n\n")
|
||||
|
||||
(defconst manual-meta-string
|
||||
"<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n")
|
||||
|
||||
(defconst manual-links-string
|
||||
"<link rev=\"made\" href=\"mailto:bug-gnu-emacs@gnu.org\">
|
||||
"<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">
|
||||
<link rev=\"made\" href=\"mailto:bug-gnu-emacs@gnu.org\">
|
||||
<link rel=\"icon\" type=\"image/png\" href=\"/graphics/gnu-head-mini.png\">
|
||||
<meta name=\"ICBM\" content=\"42.256233,-71.006581\">
|
||||
<meta name=\"DC.title\" content=\"gnu.org\">\n")
|
||||
<meta name=\"DC.title\" content=\"gnu.org\">\n\n")
|
||||
|
||||
(defconst manual-style-string "<style type=\"text/css\">
|
||||
@import url('/software/emacs/manual.css');\n</style>\n")
|
||||
|
|
@ -485,13 +468,6 @@ the @import directive."
|
|||
(delete-region opoint (point))
|
||||
(search-forward "<meta http-equiv=\"Content-Style")
|
||||
(setq opoint (match-beginning 0)))
|
||||
(search-forward "<title>")
|
||||
(delete-region opoint (match-beginning 0))
|
||||
(search-forward "</title>\n")
|
||||
(when (search-forward "<link href=" nil t)
|
||||
(goto-char (match-beginning 0)))
|
||||
(insert manual-links-string)
|
||||
(setq opoint (point))
|
||||
(search-forward "</head>")
|
||||
(goto-char (match-beginning 0))
|
||||
(delete-region opoint (point))
|
||||
|
|
@ -562,7 +538,7 @@ Leave point after the table."
|
|||
(forward-line 1)
|
||||
(while (not done)
|
||||
(cond ((re-search-forward "<tr><td.*• \\(<a.*</a>\\)\
|
||||
:?</td><td> </td><td[^>]*>\\(.*\\)" (line-end-position) t)
|
||||
:</td><td> </td><td[^>]*>\\(.*\\)" (line-end-position) t)
|
||||
(replace-match (format "<tr><td%s>\\1</td>\n<td>\\2"
|
||||
(if table-workaround
|
||||
" bgcolor=\"white\"" "")))
|
||||
|
|
@ -608,87 +584,80 @@ style=\"text-align:left\">")
|
|||
(forward-line 1)
|
||||
(setq done t)))))
|
||||
(let (done open-td tag desc)
|
||||
;; Texinfo 6.8 and later doesn't produce <ul class="menu"> lists
|
||||
;; for the TOC menu, and the "description" part of each menu
|
||||
;; item is not there anymore. So for HTML manuals produced by
|
||||
;; those newer versions of Texinfo we punt and leave the menu in
|
||||
;; its original form.
|
||||
(when (or (search-forward "<ul class=\"menu\">" nil t)
|
||||
;; FIXME? The following search seems dangerously lax.
|
||||
(search-forward "<ul>" nil t))
|
||||
;; Convert the list that Makeinfo made into a table.
|
||||
(replace-match "<table style=\"float:left\" width=\"100%\">")
|
||||
(forward-line 1)
|
||||
(while (not done)
|
||||
(cond
|
||||
((or (looking-at "<li>\\(<a.+</a>\\):[ \t]+\\(.*\\)$")
|
||||
(looking-at "<li>\\(<a.+</a>\\)$"))
|
||||
(setq tag (match-string 1))
|
||||
(setq desc (match-string 2))
|
||||
(replace-match "" t t)
|
||||
(when open-td
|
||||
(save-excursion
|
||||
(forward-char -1)
|
||||
(skip-chars-backward " ")
|
||||
(delete-region (point) (line-end-position))
|
||||
(insert "</td>\n </tr>")))
|
||||
(insert " <tr>\n ")
|
||||
(if table-workaround
|
||||
;; This works around a Firefox bug in the mono file.
|
||||
(insert "<td bgcolor=\"white\">")
|
||||
(insert "<td>"))
|
||||
(insert tag "</td>\n <td>" (or desc ""))
|
||||
(setq open-td t))
|
||||
((eq (char-after) ?\n)
|
||||
(delete-char 1)
|
||||
;; Negate the following `forward-line'.
|
||||
(forward-line -1))
|
||||
((looking-at "<!-- ")
|
||||
(search-forward "-->"))
|
||||
((looking-at "<p>[- ]*The Detailed Node Listing[- \n]*")
|
||||
(replace-match " </td></tr></table>\n
|
||||
;; Convert the list that Makeinfo made into a table.
|
||||
(or (search-forward "<ul class=\"menu\">" nil t)
|
||||
;; FIXME? The following search seems dangerously lax.
|
||||
(search-forward "<ul>"))
|
||||
(replace-match "<table style=\"float:left\" width=\"100%\">")
|
||||
(forward-line 1)
|
||||
(while (not done)
|
||||
(cond
|
||||
((or (looking-at "<li>\\(<a.+</a>\\):[ \t]+\\(.*\\)$")
|
||||
(looking-at "<li>\\(<a.+</a>\\)$"))
|
||||
(setq tag (match-string 1))
|
||||
(setq desc (match-string 2))
|
||||
(replace-match "" t t)
|
||||
(when open-td
|
||||
(save-excursion
|
||||
(forward-char -1)
|
||||
(skip-chars-backward " ")
|
||||
(delete-region (point) (line-end-position))
|
||||
(insert "</td>\n </tr>")))
|
||||
(insert " <tr>\n ")
|
||||
(if table-workaround
|
||||
;; This works around a Firefox bug in the mono file.
|
||||
(insert "<td bgcolor=\"white\">")
|
||||
(insert "<td>"))
|
||||
(insert tag "</td>\n <td>" (or desc ""))
|
||||
(setq open-td t))
|
||||
((eq (char-after) ?\n)
|
||||
(delete-char 1)
|
||||
;; Negate the following `forward-line'.
|
||||
(forward-line -1))
|
||||
((looking-at "<!-- ")
|
||||
(search-forward "-->"))
|
||||
((looking-at "<p>[- ]*The Detailed Node Listing[- \n]*")
|
||||
(replace-match " </td></tr></table>\n
|
||||
<h3>Detailed Node Listing</h3>\n\n" t t)
|
||||
(search-forward "<p>")
|
||||
;; FIXME Fragile!
|
||||
;; The Emacs and Elisp manual have some text at the
|
||||
;; start of the detailed menu that is not part of the menu.
|
||||
;; Other manuals do not.
|
||||
(if (looking-at "Here are some other nodes")
|
||||
(search-forward "<p>"))
|
||||
(goto-char (match-beginning 0))
|
||||
(skip-chars-backward "\n ")
|
||||
(setq open-td nil)
|
||||
(insert "</p>\n\n<table style=\"float:left\" width=\"100%\">"))
|
||||
((looking-at "</li></ul>")
|
||||
(replace-match "" t t))
|
||||
((looking-at "<p>")
|
||||
(replace-match "" t t)
|
||||
(when open-td
|
||||
(insert " </td></tr>")
|
||||
(setq open-td nil))
|
||||
(insert " <tr>
|
||||
(search-forward "<p>")
|
||||
;; FIXME Fragile!
|
||||
;; The Emacs and Elisp manual have some text at the
|
||||
;; start of the detailed menu that is not part of the menu.
|
||||
;; Other manuals do not.
|
||||
(if (looking-at "Here are some other nodes")
|
||||
(search-forward "<p>"))
|
||||
(goto-char (match-beginning 0))
|
||||
(skip-chars-backward "\n ")
|
||||
(setq open-td nil)
|
||||
(insert "</p>\n\n<table style=\"float:left\" width=\"100%\">"))
|
||||
((looking-at "</li></ul>")
|
||||
(replace-match "" t t))
|
||||
((looking-at "<p>")
|
||||
(replace-match "" t t)
|
||||
(when open-td
|
||||
(insert " </td></tr>")
|
||||
(setq open-td nil))
|
||||
(insert " <tr>
|
||||
<th colspan=\"2\" align=\"left\" style=\"text-align:left\">")
|
||||
(if (re-search-forward "</p>[ \t\n]*<ul class=\"menu\">" nil t)
|
||||
(replace-match " </th></tr>")))
|
||||
((looking-at "[ \t]*</ul>[ \t]*$")
|
||||
(replace-match
|
||||
(if open-td
|
||||
" </td></tr>\n</table>"
|
||||
"</table>") t t)
|
||||
(setq done t))
|
||||
(t
|
||||
(if (eobp)
|
||||
(error "Parse error in %s"
|
||||
(file-name-nondirectory buffer-file-name)))
|
||||
(unless open-td
|
||||
(setq done t))))
|
||||
(forward-line 1))))))
|
||||
(if (re-search-forward "</p>[ \t\n]*<ul class=\"menu\">" nil t)
|
||||
(replace-match " </th></tr>")))
|
||||
((looking-at "[ \t]*</ul>[ \t]*$")
|
||||
(replace-match
|
||||
(if open-td
|
||||
" </td></tr>\n</table>"
|
||||
"</table>") t t)
|
||||
(setq done t))
|
||||
(t
|
||||
(if (eobp)
|
||||
(error "Parse error in %s"
|
||||
(file-name-nondirectory buffer-file-name)))
|
||||
(unless open-td
|
||||
(setq done t))))
|
||||
(forward-line 1)))))
|
||||
|
||||
|
||||
(defconst make-manuals-dist-output-variables
|
||||
'(("@\\(top_\\)?srcdir@" . ".") ; top_srcdir is wrong, but not used
|
||||
("@\\(abs_\\)?top_builddir@" . ".") ; wrong but unused
|
||||
("^\\(EMACS *=\\).*" . "\\1 emacs")
|
||||
("^\\(\\(?:texinfo\\|buildinfo\\|emacs\\)dir *=\\).*" . "\\1 .")
|
||||
("^\\(clean:.*\\)" . "\\1 infoclean")
|
||||
("@MAKEINFO@" . "makeinfo")
|
||||
|
|
@ -706,7 +675,9 @@ style=\"text-align:left\">")
|
|||
("@INSTALL@" . "install -c")
|
||||
("@INSTALL_DATA@" . "${INSTALL} -m 644")
|
||||
("@configure_input@" . "")
|
||||
("@AM_DEFAULT_VERBOSITY@" . "0"))
|
||||
("@AM_DEFAULT_VERBOSITY@" . "0")
|
||||
("@AM_V@" . "${V}")
|
||||
("@AM_DEFAULT_V@" . "${AM_DEFAULT_VERBOSITY}"))
|
||||
"Alist of (REGEXP . REPLACEMENT) pairs for `make-manuals-dist'.")
|
||||
|
||||
(defun make-manuals-dist--1 (root type)
|
||||
|
|
@ -725,7 +696,6 @@ style=\"text-align:left\">")
|
|||
(if (file-directory-p stem)
|
||||
(delete-directory stem t))
|
||||
(make-directory stem)
|
||||
(setq stem (file-name-as-directory stem))
|
||||
(copy-file "../doc/misc/texinfo.tex" stem)
|
||||
(unless (equal type "emacs")
|
||||
(copy-file "../doc/emacs/emacsver.texi" stem)
|
||||
|
|
@ -736,8 +706,7 @@ style=\"text-align:left\">")
|
|||
(string-match-p "\\.\\(eps\\|pdf\\)\\'" file)))
|
||||
(copy-file file stem)))
|
||||
(with-temp-buffer
|
||||
(let ((outvars make-manuals-dist-output-variables)
|
||||
(case-fold-search nil))
|
||||
(let ((outvars make-manuals-dist-output-variables))
|
||||
(push `("@version@" . ,version) outvars)
|
||||
(insert-file-contents (format "../doc/%s/Makefile.in" type))
|
||||
(dolist (cons outvars)
|
||||
|
|
@ -749,7 +718,7 @@ style=\"text-align:left\">")
|
|||
(setq ats t)
|
||||
(message "Unexpanded: %s" (match-string 0)))
|
||||
(if ats (error "Unexpanded configure variables in Makefile?")))
|
||||
(write-region nil nil (expand-file-name (format "%sMakefile" stem))
|
||||
(write-region nil nil (expand-file-name (format "%s/Makefile" stem))
|
||||
nil 'silent))
|
||||
(call-process "tar" nil nil nil "-cf" tarfile stem)
|
||||
(delete-directory stem t)
|
||||
|
|
@ -778,207 +747,6 @@ Optional argument TYPE is type of output (nil means all)."
|
|||
(if (member type (list nil m))
|
||||
(make-manuals-dist--1 root m))))
|
||||
|
||||
(defvar admin--org-export-headers-format "\
|
||||
#+title: GNU Emacs %s NEWS -- history of user-visible changes
|
||||
#+author:
|
||||
#+options: author:nil creator:nil toc:2 num:3 *:nil \\n:t ^:nil tex:nil
|
||||
#+language: en
|
||||
#+HTML_LINK_HOME: /software/emacs
|
||||
#+HTML_LINK_UP: /software/emacs
|
||||
#+html_head_extra: <link rel=\"stylesheet\" type=\"text/css\" href=\"/mini.css\" media=\"handheld\" />
|
||||
#+html_head_extra: <link rel=\"stylesheet\" type=\"text/css\" href=\"/layout.min.css\" media=\"screen\" />
|
||||
#+html_head_extra: <link rel=\"stylesheet\" type=\"text/css\" href=\"/print.min.css\" media=\"print\" />
|
||||
|
||||
#+BEGIN_EXPORT html
|
||||
<div style=\"float:right;margin-left:1em;padding:3px;border:0px solid;text-align:center\">
|
||||
<a href=\"/graphics/gnu-head.jpg\">
|
||||
<img src=\"/graphics/gnu-head-sm.jpg\" alt=\" [image of the head
|
||||
of a GNU] \" width=\"129\" height=\"122\"/>
|
||||
</a>
|
||||
</div>
|
||||
#+END_EXPORT\n\n")
|
||||
|
||||
(defvar admin--org-html-postamble "
|
||||
<p>
|
||||
Return to the <a href=\"/software/emacs/emacs.html\">GNU Emacs home page</a>.
|
||||
</p>
|
||||
|
||||
<div id=\"footer\">
|
||||
<div class=\"unprintable\">
|
||||
|
||||
<p>
|
||||
Please send FSF & GNU inquiries to
|
||||
<a href=\"mailto:gnu@gnu.org\"><gnu@gnu.org></a>.
|
||||
There are also <a href=\"/contact/\">other ways to contact</a>
|
||||
the FSF.
|
||||
Broken links and other corrections or suggestions can be sent to
|
||||
<a href=\"mailto:bug-gnu-emacs@gnu.org\"><bug-gnu-emacs@gnu.org></a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Copyright © %s Free Software Foundation, Inc.
|
||||
</p>
|
||||
|
||||
<p>This page is licensed under
|
||||
a <a href=\"https://creativecommons.org/licenses/by-sa/4.0\">CC-BY-SA</a>
|
||||
license.</p>
|
||||
|
||||
<!--#include virtual=\"/server/bottom-notes.html\" -->
|
||||
|
||||
<p class=\"unprintable\">
|
||||
Updated:
|
||||
<!-- timestamp start -->
|
||||
$Date: %s $
|
||||
<!-- timestamp end -->
|
||||
</p>
|
||||
</div>
|
||||
</div>")
|
||||
|
||||
(defun admin--require-external-package (pkg)
|
||||
(package-initialize)
|
||||
(require pkg nil t)
|
||||
(unless (featurep pkg)
|
||||
(when (yes-or-no-p (format "Package \"%s\" is missing. Install now?" pkg))
|
||||
(package-install pkg)
|
||||
(require pkg nil t))))
|
||||
|
||||
(declare-function org-html-export-as-html "ox-html.el")
|
||||
(defvar org-html-postamble)
|
||||
(defvar org-html-mathjax-template)
|
||||
(defvar htmlize-output-type)
|
||||
|
||||
(defun make-news-html-file (root version)
|
||||
"Convert the NEWS file into an HTML file."
|
||||
(interactive (let ((root
|
||||
(if noninteractive
|
||||
(or (pop command-line-args-left)
|
||||
default-directory)
|
||||
(read-directory-name "Emacs root directory: "
|
||||
source-directory nil t))))
|
||||
(list root
|
||||
(read-string "Major version number: "
|
||||
(number-to-string emacs-major-version)))))
|
||||
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
|
||||
(user-error "%s doesn't seem to be the root of an Emacs source tree" root))
|
||||
(admin--require-external-package 'htmlize)
|
||||
(let* ((newsfile (expand-file-name "etc/NEWS" root))
|
||||
(orgfile (expand-file-name (format "etc/NEWS.%s.org" version) root))
|
||||
(html (format "%s.html" (file-name-base orgfile)))
|
||||
(copyright-years (format-time-string "%Y")))
|
||||
(delete-file orgfile)
|
||||
(copy-file newsfile orgfile t)
|
||||
(find-file orgfile)
|
||||
|
||||
;; Find the copyright range.
|
||||
(goto-char (point-min))
|
||||
(re-search-forward "^Copyright (C) \\([0-9-]+\\) Free Software Foundation, Inc.")
|
||||
(setq copyright-years (match-string 1))
|
||||
|
||||
;; Delete some unnecessary stuff.
|
||||
(replace-regexp-in-region "^---$" "" (point-min) (point-max))
|
||||
(replace-regexp-in-region "^\\+\\+\\+$" "" (point-min) (point-max))
|
||||
(dolist (str '("\n"
|
||||
"GNU Emacs NEWS -- history of user-visible changes."
|
||||
"Temporary note:"
|
||||
"+++ indicates that all relevant manuals in doc/ have been updated."
|
||||
"--- means no change in the manuals is needed."
|
||||
"When you add a new item, use the appropriate mark if you are sure it"
|
||||
"applies, and please also update docstrings as needed."
|
||||
"You can narrow news to a specific version by calling 'view-emacs-news'"
|
||||
"with a prefix argument or by typing 'C-u C-h C-n'."))
|
||||
(replace-string-in-region str "" (point-min) (point-max)))
|
||||
|
||||
;; Escape some characters.
|
||||
(replace-regexp-in-region (rx "$") "@@html:$@@" (point-min) (point-max))
|
||||
|
||||
;; Use Org-mode markers for 'symbols', 'C-x k', etc.
|
||||
(replace-regexp-in-region
|
||||
(rx (or (: (group (in " \t\n("))
|
||||
"'"
|
||||
(group (+ (or (not (in "'\n"))
|
||||
(: "'" (not (in " .,\t\n)"))))))
|
||||
"'"
|
||||
(group (in ",.;:!? \t\n)")))
|
||||
;; Buffer names, e.g. "*scratch*".
|
||||
(: "\""
|
||||
(group-n 2 "*" (+ (not (in "*\""))) "*")
|
||||
"\"")))
|
||||
"\\1~\\2~\\3" (point-min) (point-max))
|
||||
|
||||
;; Format code blocks.
|
||||
(while (re-search-forward "^ " nil t)
|
||||
(let ((elisp-block (looking-at "(")))
|
||||
(backward-paragraph)
|
||||
(insert (if elisp-block
|
||||
"\n#+BEGIN_SRC emacs-lisp"
|
||||
"\n#+BEGIN_EXAMPLE"))
|
||||
(forward-paragraph)
|
||||
(insert (if elisp-block
|
||||
"#+END_SRC\n"
|
||||
"#+END_EXAMPLE\n"))))
|
||||
|
||||
;; Delete buffer local variables.
|
||||
(goto-char (point-max))
|
||||
(when (re-search-backward "Local variables:")
|
||||
(forward-line -1)
|
||||
(delete-region (point) (point-max)))
|
||||
|
||||
;; Insert Org-mode export headers.
|
||||
(goto-char (point-min))
|
||||
(insert (format admin--org-export-headers-format version))
|
||||
(org-mode)
|
||||
(save-buffer)
|
||||
|
||||
;; Make everything one level lower.
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward (rx bol (group (+ "*")) " ") nil t)
|
||||
(replace-match "*\\1" nil nil nil 1))
|
||||
|
||||
;; Insert anchors for different versions.
|
||||
(goto-char (point-min))
|
||||
(let (last-major last-minor)
|
||||
(while (re-search-forward (rx bol "** " (+ (not "\n")) "in Emacs "
|
||||
(group digit digit) "." (group digit)
|
||||
eol)
|
||||
nil t)
|
||||
(unless (and (equal (match-string 1) last-major)
|
||||
(equal (match-string 2) last-minor))
|
||||
(setq last-major (match-string 1))
|
||||
(setq last-minor (match-string 2))
|
||||
(forward-line -1)
|
||||
(insert (format
|
||||
(concat
|
||||
"#+HTML: <p> </p>\n"
|
||||
"* Changes in Emacs %s.%s\n"
|
||||
;; Add anchor to allow linking to
|
||||
;; e.g. "NEWS.28.html#28.1".
|
||||
":PROPERTIES:\n"
|
||||
":CUSTOM_ID: %s.%s\n"
|
||||
":END:\n")
|
||||
last-major last-minor
|
||||
last-major last-minor)))))
|
||||
|
||||
(save-buffer)
|
||||
|
||||
;; Make the HTML export.
|
||||
(let* ((org-html-postamble
|
||||
(format admin--org-html-postamble
|
||||
copyright-years
|
||||
;; e.g. "2022/09/13 09:13:13"
|
||||
(format-time-string "%Y/%m/%d %H:%m:%S")))
|
||||
(org-html-mathjax-template "")
|
||||
(htmlize-output-type 'css))
|
||||
(org-html-export-as-html))
|
||||
|
||||
;; Write HTML to file.
|
||||
(let ((html (expand-file-name html (expand-file-name "etc" root))))
|
||||
(write-file html)
|
||||
(unless noninteractive
|
||||
(find-file html)
|
||||
(html-mode))
|
||||
(message "Successfully exported HTML to %s" html))))
|
||||
|
||||
|
||||
;; Stuff to check new `defcustom's got :version tags.
|
||||
;; Adapted from check-declare.el.
|
||||
|
|
@ -1145,60 +913,6 @@ changes (in a non-trivial way). This function does not check for that."
|
|||
'help-echo "Mouse-2: visit this definition"
|
||||
:type 'cusver-xref)))))))
|
||||
|
||||
|
||||
;; Reminder message for open release-blocking bugs. This requires the
|
||||
;; GNU ELPA package `debbugs'.
|
||||
|
||||
(defun reminder-for-release-blocking-bugs (version)
|
||||
"Submit a reminder message for release-blocking bugs of Emacs VERSION."
|
||||
(interactive
|
||||
(list (progn
|
||||
(require 'debbugs-gnu)
|
||||
(defvar debbugs-gnu-emacs-blocking-reports)
|
||||
(defvar debbugs-gnu-emacs-current-release)
|
||||
(completing-read
|
||||
"Emacs release: "
|
||||
(mapcar #'identity debbugs-gnu-emacs-blocking-reports)
|
||||
nil t debbugs-gnu-emacs-current-release))))
|
||||
|
||||
(require 'debbugs-gnu)
|
||||
(declare-function debbugs-get-status "debbugs" (&rest bug-numbers))
|
||||
(declare-function debbugs-get-attribute "debbugs" (bug-or-message attribute))
|
||||
(require 'reporter)
|
||||
(declare-function mail-position-on-field "sendmail" (field &optional soft))
|
||||
(declare-function mail-text "sendmail" ())
|
||||
|
||||
(when-let ((id (alist-get version debbugs-gnu-emacs-blocking-reports
|
||||
nil nil #'string-equal))
|
||||
(status-id (debbugs-get-status id))
|
||||
(blockedby-ids (debbugs-get-attribute (car status-id) 'blockedby))
|
||||
(blockedby-status
|
||||
(apply #'debbugs-get-status (sort blockedby-ids #'<))))
|
||||
|
||||
(reporter-submit-bug-report
|
||||
"<emacs-devel@gnu.org>" ; to-address
|
||||
nil nil nil
|
||||
(lambda () ; posthook
|
||||
(goto-char (point-min))
|
||||
(mail-position-on-field "subject")
|
||||
(insert (format "Reminder: release-blocking bugs for Emacs %s (%s)"
|
||||
version (format-time-string "%F" nil "UTC0")))
|
||||
(mail-text)
|
||||
(delete-region (point) (point-max))
|
||||
(insert "
|
||||
The following bugs are regarded as release-blocking for Emacs " version ".
|
||||
People are encouraged to work on them with priority.\n\n")
|
||||
(dolist (i blockedby-status)
|
||||
(unless (equal (debbugs-get-attribute i 'pending) "done")
|
||||
(insert (format "bug#%d %s\n"
|
||||
(debbugs-get-attribute i 'id)
|
||||
(debbugs-get-attribute i 'subject)))))
|
||||
(insert "
|
||||
If you use the debbugs package from GNU ELPA, you can apply the
|
||||
following form to see all bugs which block a given release:
|
||||
|
||||
(debbugs-gnu-emacs-release-blocking-reports \"" version "\")\n")))))
|
||||
|
||||
(provide 'admin)
|
||||
|
||||
;;; admin.el ends here
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* Allocate X colors. Used for testing with dense colormaps.
|
||||
|
||||
Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001-2019 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -23,7 +23,6 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
|
|||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
|
||||
void
|
||||
fatal (const char *fmt, ...)
|
||||
|
|
|
|||
401
admin/authors.el
401
admin/authors.el
|
|
@ -1,6 +1,7 @@
|
|||
;;; authors.el --- utility for maintaining Emacs's AUTHORS file -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2000-2023 Free Software Foundation, Inc.
|
||||
;;; authors.el --- utility for maintaining Emacs's AUTHORS file
|
||||
|
||||
;; Copyright (C) 2000-2019 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Gerd Moellmann <gerd@gnu.org>
|
||||
;; Maintainer: emacs-devel@gnu.org
|
||||
|
|
@ -41,16 +42,11 @@ files.")
|
|||
(defconst authors-aliases
|
||||
'(
|
||||
(nil "A\\. N\\. Other") ; unknown author 2014-12-03, later removed
|
||||
(nil "Anticrisis")
|
||||
(nil "akater")
|
||||
("Aaron S. Hawley" "Aaron Hawley")
|
||||
("Alan Third" "Alan J Third")
|
||||
("Alexander Gramiak" "Alex Gramiak")
|
||||
("Alexandru Harsanyi" "Alex Harsanyi")
|
||||
("Álvar Jesús Ibeas Martín" "Álvar Ibeas")
|
||||
("Andrea Corallo" "AndreaCorallo")
|
||||
("Andrew Csillag" "Drew Csillag")
|
||||
("Andrew G Cohen" "Andrew Cohen")
|
||||
("Anna M. Bigatti" "Anna Bigatti")
|
||||
("Aurélien Aptel" "Aurelien Aptel")
|
||||
("Barry A. Warsaw" "Barry A. Warsaw, Century Computing, Inc."
|
||||
|
|
@ -60,15 +56,12 @@ files.")
|
|||
("Bill Mann" "William F. Mann")
|
||||
("Bill Rozas" "Guillermo J. Rozas")
|
||||
(nil "binjo.cn@gmail.com")
|
||||
(nil "bug-gnu-emacs@gnu.org") ; mistake
|
||||
("Björn Torkelsson" "Bjorn Torkelsson")
|
||||
("Brian Fox" "Brian J. Fox")
|
||||
("Brian P Templeton" "BT Templeton")
|
||||
("Brian Sniffen" "Brian T. Sniffen")
|
||||
(nil "castor@my-dejanews")
|
||||
(nil "chengang31@gmail.com")
|
||||
(nil "chuntaro")
|
||||
("Clément Pit-Claudel" "Clément Pit--Claudel")
|
||||
("David Abrahams" "Dave Abrahams")
|
||||
("David J. Biesack" "David Biesack")
|
||||
("David De La Harpe Golden" "David Golden")
|
||||
|
|
@ -78,16 +71,13 @@ files.")
|
|||
("David M. Koppelman" "David Koppelman")
|
||||
("David M. Smith" "David Smith" "David M Smith")
|
||||
("David O'Toole" "David T. O'Toole")
|
||||
(nil "dalanicolai")
|
||||
(nil "deech@deech")
|
||||
("Deepak Goel" "D. Goel")
|
||||
("Earl Hyatt" "Earl" "ej32u@protonmail.com")
|
||||
("Ed L. Cashin" "Ed L Cashin")
|
||||
("Edward M. Reingold" "Ed\\(ward\\( M\\)?\\)? Reingold" "Reingold Edward M")
|
||||
("Emilio C. Lopes" "Emilio Lopes")
|
||||
("Eric M. Ludlam" "Eric Ludlam")
|
||||
("Eric S. Raymond" "Eric Raymond")
|
||||
("Etienne Prud’Homme" "Etienne Prud'Homme")
|
||||
("Fabián Ezequiel Gallina" "Fabian Ezequiel Gallina" "Fabi.n E\\. Gallina")
|
||||
(nil "felix.*EmacsWiki")
|
||||
(nil "foudfou")
|
||||
|
|
@ -100,37 +90,26 @@ files.")
|
|||
("Gerd Möllmann" "Gerd Moellmann")
|
||||
("Hallvard B. Furuseth" "Hallvard B Furuseth" "Hallvard Furuseth")
|
||||
("Hrvoje Nikšić" "Hrvoje Niksic")
|
||||
("Ian Dunn" "^Ian D\\>")
|
||||
;; lisp/org/ChangeLog.1 2010-11-11.
|
||||
(nil "immerrr")
|
||||
(nil "aaa bbb")
|
||||
(nil "Code Extracted") ; lisp/newcomment.el's "Author:" header
|
||||
(nil "jakanakaevangeli")
|
||||
("J. Alexander Branham" "Alex Branham")
|
||||
("Jaeyoun Chung" "Jae-youn Chung" "Jae-you Chung" "Chung Jae-youn")
|
||||
("Jan Djärv" "Jan D\\>" "Jan Djarv")
|
||||
("João Távora" "João Tãvora")
|
||||
("Jan Djärv" "Jan D." "Jan Djarv")
|
||||
("Jay K. Adams" "Jay Adams")
|
||||
("J.D. Smith" "Jd Smith")
|
||||
("Jérôme Marant" "Jérôme Marant" "Jerome Marant")
|
||||
("Jens Lechtenbörger" "Jens Lechtenboerger")
|
||||
("Jens-Ulrik Holger Petersen" "Jens-Ulrik Petersen")
|
||||
("Jérémie Courrèges-Anglas" "Jeremie Courreges-Anglas")
|
||||
("Jeremy Bertram Maitin-Shepard" "Jeremy Maitin-Shepard")
|
||||
("Jérémy Compostella" "Jeremy Compostella")
|
||||
("Jimmy Aguilar Mena" "Ergus")
|
||||
("Johan Bockgård" "Johan Bockgard")
|
||||
("John F. Carr" "John F Carr")
|
||||
("John J Foerch" "John Foerch")
|
||||
("John W. Eaton" "John Eaton")
|
||||
("Jonathan I. Kamens" "Jonathan Kamens")
|
||||
("Jorgen Schäfer" "Jorgen Schaefer")
|
||||
("Jose A. Ortega Ruiz" "Jose A Ortega Ruiz")
|
||||
("Joseph Arceneaux" "Joe Arceneaux")
|
||||
("Joseph M. Kelsey" "Joe Kelsey") ; FIXME ?
|
||||
("Juan León Lahoz García" "Juan-Leon Lahoz Garcia")
|
||||
("Jürgen Hötzel" "Juergen Hoetzel")
|
||||
(nil "k3tu0isui")
|
||||
("K. Shane Hartman" "Shane Hartman")
|
||||
("Kai Großjohann" "Kai Grossjohann")
|
||||
("Karl Berry" "K. Berry")
|
||||
|
|
@ -148,12 +127,9 @@ files.")
|
|||
("Mark D. Baushke" "Mark D Baushke")
|
||||
("Mark E. Shoulson" "Mark Shoulson")
|
||||
("Marko Kohtala" "Kohtala Marko")
|
||||
("Maxim Nikulin" "Max Nikulin")
|
||||
("Agustín Martín" "Agustin Martin" "Agustín Martín Domingo")
|
||||
("Martin Lorentzon" "Martin Lorentzson")
|
||||
("Matt Swift" "Matthew Swift")
|
||||
("Mattias Engdegård" "Mattias Engdegard")
|
||||
(nil "^Madhu")
|
||||
(nil "mu@magi.net.ru")
|
||||
("Maxime Edouard Robert Froumentin" "Max Froumentin")
|
||||
("Michael R. Mauger" "Michael Mauger")
|
||||
|
|
@ -162,14 +138,11 @@ files.")
|
|||
("Michael I. Bushnell" "Michael I Bushnell" "Michael I. Bushnell, p/BSG")
|
||||
("Michael R. Cook" "Michael Cook")
|
||||
("Michael Sperber" "Mike Sperber" "Michael Sperber \\[Mr. Preprocessor\\]")
|
||||
("Michalis V" "^mvar")
|
||||
("Miha Rihtaršič" "Miha Rihtarsic")
|
||||
("Mikio Nakajima" "Nakajima Mikio")
|
||||
("Nelson Jose dos Santos Ferreira" "Nelson Ferreira")
|
||||
("Noorul Islam" "Noorul Islam K M")
|
||||
;;; ("Tetsurou Okazaki" "OKAZAKI Tetsurou") ; FIXME?
|
||||
("Óscar Fuentes" "Oscar Fuentes")
|
||||
(nil "pillule")
|
||||
(nil "psyberbits@gmail.com")
|
||||
("Paul Eggert" "Paul R\\. Eggert")
|
||||
("Pavel Janík" "Pavel Janík Ml." "Pavel Janik Ml." "Pavel Janik")
|
||||
|
|
@ -179,10 +152,8 @@ files.")
|
|||
("Peter J. Weisberg" "PJ Weisberg")
|
||||
("Peter S. Galbraith" "Peter S Galbraith" "Peter Galbraith")
|
||||
("Peter Runestig" "Peter 'luna' Runestig")
|
||||
("Philip Kaludercic" "Philip K\\." "Philip K")
|
||||
("Philipp Stephani" "Philipp .*phst@google")
|
||||
("Piotr Zieliński" "Piotr Zielinski")
|
||||
("Po Lu" "Po Lu Via" "Your Name") ; looks like a mistake
|
||||
("Przemysław Wojnowski" "Przemyslaw Wojnowski")
|
||||
("R. Bernstein" "rb@dustyfeet.com")
|
||||
("Rainer Schöpf" "Rainer Schoepf")
|
||||
|
|
@ -217,7 +188,6 @@ files.")
|
|||
("Takaaki Ota" "Tak Ota")
|
||||
("Takahashi Naoto" "Naoto Takahashi")
|
||||
("Teodor Zlatanov" "Ted Zlatanov")
|
||||
(nil "^TEC")
|
||||
(nil "The PCL-CVS Trust")
|
||||
("Thomas Dye" "Tom Dye")
|
||||
("Thomas Horsley" "Tom Horsley") ; FIXME ?
|
||||
|
|
@ -237,21 +207,10 @@ files.")
|
|||
("Yoni Rabkin" "Yoni Rabkin Katzenell")
|
||||
("Yoshinori Koseki" "KOSEKI Yoshinori" "小関 吉則")
|
||||
("Yutaka NIIBE" "NIIBE Yutaka")
|
||||
(nil "stardiviner")
|
||||
(nil "lin.sun")
|
||||
("Nitish Chinta" "nitishch")
|
||||
("Carlos Pita" "memeplex")
|
||||
("Vinicius Jose Latorre" "viniciusjl")
|
||||
("Gaby Launay" "galaunay")
|
||||
("Dick R. Chiang" "dickmao")
|
||||
("Lin Zhou" "georgealbert@qq.com")
|
||||
(nil "yan@metatem.net")
|
||||
(nil "gnu_lists@halloleo.hailmail.net")
|
||||
)
|
||||
"Alist of author aliases.
|
||||
|
||||
Each entry is of the form (REALNAME REGEXP...).
|
||||
If an author's full name, as in \"J.R.Hacker <foobar.com>\",
|
||||
Each entry is of the form (REALNAME REGEXP...). If an author's name
|
||||
matches one of the REGEXPs, use REALNAME instead.
|
||||
If REALNAME is nil, ignore that author.")
|
||||
|
||||
|
|
@ -319,9 +278,9 @@ If REALNAME is nil, ignore that author.")
|
|||
|
||||
|
||||
(defvar authors-obsolete-files-regexps
|
||||
'(".*loaddefs\\.el\\'" ; not obsolete, but auto-generated
|
||||
"\\.\\(bzr\\|cvs\\|git\\)ignore\\'" ; obsolete or uninteresting
|
||||
"\\.arch-inventory\\'"
|
||||
'(".*loaddefs.el$" ; not obsolete, but auto-generated
|
||||
"\\.\\(bzr\\|cvs\\|git\\)ignore$" ; obsolete or uninteresting
|
||||
"\\.arch-inventory$"
|
||||
"ChangeLog\\(\\.[0-9]+\\)?\\'"
|
||||
"\\(automated\\|test\\)/data/" ; not interesting
|
||||
"cedet/tests/"
|
||||
|
|
@ -329,16 +288,13 @@ If REALNAME is nil, ignore that author.")
|
|||
"\\`\\(indent\\|automated\\)\\'" "indent/" "mod-test/"
|
||||
"-resources/"
|
||||
"unidata/.*\\.txt\\'"
|
||||
"BidiCharacterTest\\.txt"
|
||||
"BidiCharacterTest.txt"
|
||||
;; TODO lib/? Matches other things?
|
||||
"build-aux/" "m4/" "Emacs\\.xcodeproj" "mapfiles" "\\.map\\'"
|
||||
"build-aux/" "m4/" "Emacs.xcodeproj" "mapfiles" "\\.map\\'"
|
||||
"preferences\\.\\(nib\\|gorm\\)"
|
||||
;; Generated files that have since been removed.
|
||||
"\\(refcard\\(-de\\|-pl\\)?\\|calccard\\|dired-ref\\|orgcard\\|\
|
||||
gnus-booklet\\|fr-drdref\\)\\.p\\(df\\|s\\)\\'"
|
||||
;; Removed as obsolete
|
||||
"README-ftp-server"
|
||||
)
|
||||
gnus-booklet\\|fr-drdref\\)\\.p\\(df\\|s\\)\\'")
|
||||
"List of regexps matching obsolete files.
|
||||
Changes to files matching one of the regexps in this list are not listed.")
|
||||
|
||||
|
|
@ -358,12 +314,11 @@ Changes to files matching one of the regexps in this list are not listed.")
|
|||
"NEWS.unicode" "COPYING.DJ" "Makefile.old" "Makefile.am"
|
||||
"NEWS.1" "OOOOONEWS...OONEWS" "OOOONEWS" "etc/NEWS"
|
||||
"NEWS.1-17" "NEWS.18" "NEWS.19" "NEWS.20" "NEWS.21" "NEWS.22"
|
||||
"NEWS.23" "NEWS.24" "NEWS.25" "NEWS.26" "NEWS.27" "NEWS.28"
|
||||
"MAINTAINERS" "ERC-NEWS" "MH-E-NEWS" "NXML-NEWS"
|
||||
"MAINTAINERS" "MH-E-NEWS"
|
||||
"install.sh" "install-sh" "missing" "mkinstalldirs"
|
||||
"termcap.dat" "termcap.src" "termcap.ucb" "termcap"
|
||||
"ChangeLog.nextstep" "Emacs.clr" "spec.txt"
|
||||
"gfdl.1" "ledit.l"
|
||||
"gfdl.1"
|
||||
"texi/Makefile.in"
|
||||
"autodeps.mk"
|
||||
"lwlib/autodeps.mk"
|
||||
|
|
@ -385,8 +340,6 @@ Changes to files matching one of the regexps in this list are not listed.")
|
|||
"cedet/tests/test.py"
|
||||
"cedet/tests/teststruct.cpp"
|
||||
"subdirs.el"
|
||||
"etc/facemenu-removal.txt"
|
||||
"src/bytecode.h"
|
||||
"*.el"
|
||||
;; Autogen:
|
||||
"cus-load.el" "finder-inf.el" "ldefs-boot.el" "loaddefs-boot.el"
|
||||
|
|
@ -397,24 +350,14 @@ Changes to files matching one of the regexps in this list are not listed.")
|
|||
"autogen/missing" "autogen"
|
||||
"autogen/copy_autogen" ; not generated, but trivial and now removed
|
||||
"dir_top"
|
||||
;; Imported into Emacs but externally maintained.
|
||||
"publicsuffix.txt" "SKK-JISYO.L"
|
||||
;; Only existed briefly, then renamed:
|
||||
"images/icons/allout-widgets-dark-bg"
|
||||
"images/icons/allout-widgets-light-bg"
|
||||
"lisp/shorthand.el"
|
||||
"test/lisp/shorthand-tests.el"
|
||||
"lisp/shorthands.el"
|
||||
"test/src/comp-test-funcs.el"
|
||||
"lisp/net/link.el"
|
||||
"lisp/net/connection.el"
|
||||
"lisp/net/dictionary-link.el"
|
||||
"test/src/comp-test-funcs-dyn.el"
|
||||
;; Never had any meaningful changes logged, now deleted:
|
||||
"lib/stdarg.in.h" "lib/stdbool.in.h"
|
||||
"unidata/bidimirror.awk" "unidata/biditype.awk"
|
||||
"split-man" "Xkeymap.txt" "ms-7bkermit" "ulimit.hack"
|
||||
"gnu-hp300" "refcard.bit" "forms.README" "forms-d2.dat"
|
||||
"gnu-hp300" "refcard.bit" "ledit.l" "forms.README" "forms-d2.dat"
|
||||
"CXTERM-DIC/PY.tit" "CXTERM-DIC/ZIRANMA.tit"
|
||||
"CXTERM-DIC/CTLau.tit" "CXTERM-DIC/CTLauB.tit"
|
||||
"copying.paper" "celibacy.1" "condom.1" "echo.msg" "sex.6"
|
||||
|
|
@ -469,10 +412,6 @@ Changes to files matching one of the regexps in this list are not listed.")
|
|||
"info/dir"
|
||||
;; Not in gnulib anymore
|
||||
"lib/qset-acl.c" "lib/qcopy-acl.c" "lib/file-has-acl.c" "lib/secure_getenv.c"
|
||||
"lib/malloca.c" "lib/malloca.h"
|
||||
;; Briefly added to repository from gnulib, but not used
|
||||
"lib/localtime-buffer.c"
|
||||
"lib/localtime-buffer.h"
|
||||
;; files from old MS Windows build procedures
|
||||
"nt/gnulib-modules-to-delete.cfg"
|
||||
"makefile.w32-in"
|
||||
|
|
@ -502,57 +441,6 @@ Changes to files matching one of the regexps in this list are not listed.")
|
|||
"nt/subdirs.el"
|
||||
"config.nt"
|
||||
"nextstep/WISHLIST"
|
||||
;; Removed, replaced by gitmerge.el
|
||||
"admin/bzrmerge.el"
|
||||
"bzrmerge.el"
|
||||
;; Removed in commit f5090b91299
|
||||
"lib/fdatasync.c"
|
||||
;; Removed as obsolete
|
||||
"nt/README-ftp-server"
|
||||
"admin/notes/font-backend"
|
||||
"gnus-overrides.texi"
|
||||
"CENSORSHIP"
|
||||
"GNU"
|
||||
"LINUX-GNU"
|
||||
"THE-GNU-PROJECT"
|
||||
"WHY-FREE"
|
||||
"MORE.STUFF"
|
||||
"notes/font-backend"
|
||||
"src/ftxfont.c"
|
||||
"ftxfont.c"
|
||||
"src/ptr-bounds.h"
|
||||
"obsolete/options.el"
|
||||
"obsolete/old-whitespace.el"
|
||||
"obsolete/lucid.el"
|
||||
;; ada-mode has been deleted, now in GNU ELPA
|
||||
"ada-mode.texi"
|
||||
"doc/misc/ada-mode.texi"
|
||||
"lisp/progmodes/ada-mode.el"
|
||||
"lisp/progmodes/ada-prj.el"
|
||||
"lisp/progmodes/ada-xref.el"
|
||||
"GNUS-NEWS"
|
||||
"etc/GNUS-NEWS"
|
||||
"doc/misc/gnus-news.el"
|
||||
"src/fingerprint-dummy.c"
|
||||
"src/fingerprint.h"
|
||||
;; Replaced by lisp/thread.el
|
||||
"lisp/emacs-lisp/thread-list.el"
|
||||
"etc/images/slash.bmp"
|
||||
"src/mini-gmp-emacs.c"
|
||||
"lib/dosname.h"
|
||||
"lib/putenv.c"
|
||||
;; Moved to the org-contrib repo
|
||||
"ob-asymptote.el"
|
||||
"ob-shen.el"
|
||||
"ob-picolisp.el"
|
||||
"ob-io.el"
|
||||
"ob-mscgen.el"
|
||||
"ob-ledger.el"
|
||||
"lisp/org/ob-abc.el"
|
||||
"lisp/org/ob-ebnf.el"
|
||||
"lisp/org/ob-J.el"
|
||||
;; Removed -- for now.
|
||||
"test/src/doc-tests.el"
|
||||
)
|
||||
"List of files and directories to ignore.
|
||||
Changes to files in this list are not listed.")
|
||||
|
|
@ -689,7 +577,7 @@ Changes to files in this list are not listed.")
|
|||
;; No longer distributed: lselect.el.
|
||||
("Lucid, Inc." :changed "bytecode.c" "byte-opt.el" "byte-run.el"
|
||||
"bytecomp.el" "delsel.el" "disass.el" "faces.el" "font-lock.el"
|
||||
"mailabbrev.el" "select.el" "xfaces.c" "xselect.c")
|
||||
"lmenu.el" "mailabbrev.el" "select.el" "xfaces.c" "xselect.c")
|
||||
;; MCC. No longer distributed: emacsserver.c.
|
||||
("Microelectronics and Computer Technology Corporation"
|
||||
:changed "etags.c" "emacsclient.c" "movemail.c"
|
||||
|
|
@ -853,7 +741,7 @@ Changes to files in this list are not listed.")
|
|||
"erc-hecomplete.el"
|
||||
"eshell/esh-maint.el"
|
||||
"language/persian.el"
|
||||
"meese.el" "iswitchb.el" "longlines.el"
|
||||
"ledit.el" "meese.el" "iswitchb.el" "longlines.el"
|
||||
"mh-exec.el" "mh-init.el" "mh-customize.el"
|
||||
"net/zone-mode.el" "xesam.el"
|
||||
"term/mac-win.el" "sup-mouse.el"
|
||||
|
|
@ -865,9 +753,6 @@ Changes to files in this list are not listed.")
|
|||
"org-mac-message.el" "org-mew.el" "org-w3m.el" "org-vm.el" "org-wl.el"
|
||||
"org-mks.el" "org-remember.el" "org-xoxo.el" "org-docbook.el"
|
||||
"org-freemind.el" "ox-jsinfo.el"
|
||||
"org-irc.el" "org-rmail.el" "org-docview.el" "org-keys.el" "org-mhe.el"
|
||||
"org-gnus.el" "org-bibtex.el" "org-bbdb.el" "org-info.el" "org-eshell.el"
|
||||
"ob-keys.el"
|
||||
"org-exp-blocks.el" ; maybe this is ob-exp now? dunno
|
||||
"org-lparse.el"
|
||||
"org-special-blocks.el" "org-taskjuggler.el"
|
||||
|
|
@ -884,9 +769,11 @@ Changes to files in this list are not listed.")
|
|||
"gnus-compat.el" "pgg-parse.el" "pgg-pgp.el" "pgg-pgp5.el" "pgg.el"
|
||||
"dns-mode.el" "run-at-time.el" "gnus-encrypt.el" "sha1-el.el"
|
||||
"gnus-gl.el" "gnus.sum.el" "proto-stream.el" "color.el" "color-lab.el"
|
||||
"earcon.el" "gnus-audio.el" "encrypt.el"
|
||||
"gnus-move.el" "gnus-sync.el"
|
||||
"gnus-ems.el"
|
||||
"eww.el" "shr-color.el" "shr.el" "earcon.el" "gnus-audio.el" "encrypt.el"
|
||||
"format-spec.el" "gnus-move.el" "gnus-sync.el"
|
||||
"auth-source.el" "ecomplete.el" "gravatar.el" "mailcap.el" "plstore.el"
|
||||
"pop3.el" "qp.el" "registry.el" "rfc2231.el" "rtree.el"
|
||||
"sieve.el" "sieve-mode.el" "gnus-ems.el"
|
||||
;; doc
|
||||
"getopt.c" "texindex.c" "news.texi" "vc.texi" "vc2-xtra.texi"
|
||||
"back.texi" "vol1.texi" "vol2.texi" "elisp-covers.texi" "two.el"
|
||||
|
|
@ -952,13 +839,10 @@ Changes to files in this list are not listed.")
|
|||
"lisp/obsolete/spell.el"
|
||||
"lisp/obsolete/swedish.el"
|
||||
"lisp/obsolete/sym-comp.el"
|
||||
"obsolete/sym-comp.el"
|
||||
"library-of-babel.org"
|
||||
"flymake-elisp.el"
|
||||
"flymake-ui.el"
|
||||
"pinentry.el"
|
||||
"ledit.el"
|
||||
"lmenu.el")
|
||||
"pinentry.el")
|
||||
"File names which are valid, but no longer exist (or cannot be found)
|
||||
in the repository.")
|
||||
|
||||
|
|
@ -967,43 +851,6 @@ in the repository.")
|
|||
;; NB So only add a directory if needed to disambiguate.
|
||||
;; FIXME?
|
||||
;; Although perhaps we could let authors-disambiguate-file-name do that?
|
||||
;;
|
||||
;; WARNING: The semantics of these entries is tricky to grasp without
|
||||
;; reading the code!
|
||||
;; The rule is: for every file that was renamed or moved to another
|
||||
;; directory, add an entry (OLD-NAME . NEW-BASENAME), where OLD-NAME
|
||||
;; is the old name of the file as it appears in the ChangeLog files,
|
||||
;; and NEW-BASENAME is the _basename_ of its new name. Yes, this
|
||||
;; means that a file which was moved to another directory but kept its
|
||||
;; basename will have a seemingly-silly entry ("foo" . "foo"). (Told
|
||||
;; you: this is tricky!) If the moved/renamed file was mentioned in
|
||||
;; several ChangeLog files with different leading directories, you
|
||||
;; need to provide an entry for each such instance. For example, if
|
||||
;; some ChangeLog mentioned a moved file as lisp/gnus/something.el and
|
||||
;; another ChangeLog mentioned it as gnus/something.el, you need to
|
||||
;; have two entries:
|
||||
;;
|
||||
;; ("gnus/something.el" . "something.el")
|
||||
;; ("lisp/gnus/something.el" . "something.el")
|
||||
;;
|
||||
;; The important part is that the car of the entry should be identical
|
||||
;; to how a file was mentioned in the respective ChangeLog. It is
|
||||
;; advisable to run a Grep command such as
|
||||
;;
|
||||
;; grep -F -R BASENAME . --include='ChangeLog*'
|
||||
;;
|
||||
;; where BASENAME is the old basename of the renamed file. This will
|
||||
;; show all the different reference forms of the file in the various
|
||||
;; ChangeLog* files, and you can then prepare a separate entry for
|
||||
;; each reference form.
|
||||
;;
|
||||
;; The cdr of the entry should generally be only the basename of the
|
||||
;; file's current name, because that's how AUTHORS references files.
|
||||
;; It _can_ have leading directories, but that is only
|
||||
;; needed/advisable if there are several files in the tree that have
|
||||
;; the same basename, and you want to disambiguate them, so that
|
||||
;; people who actually contributed to different files aren't mentioned
|
||||
;; as if they contributed to the same single file.
|
||||
(defconst authors-renamed-files-alist
|
||||
'(("nt.c" . "w32.c") ("nt.h" . "w32.h")
|
||||
("ntheap.c" . "w32heap.c") ("ntheap.h" . "w32heap.h")
|
||||
|
|
@ -1011,9 +858,8 @@ in the repository.")
|
|||
("ntproc.c" . "w32proc.c")
|
||||
("w32console.c" . "w32term.c")
|
||||
("unexnt.c" . "unexw32.c")
|
||||
("m/windowsnt.h" . "ms-w32.h")
|
||||
("s/windowsnt.h" . "ms-w32.h")
|
||||
("s/ms-w32.h" . "ms-w32.h")
|
||||
("s/windowsnt.h" . "s/ms-w32.h")
|
||||
("s/ms-w32.h" . "inc/ms-w32.h")
|
||||
("src/config.h" . "config.h")
|
||||
("winnt.el" . "w32-fns.el")
|
||||
("linux.h" . "gnu-linux.h")
|
||||
|
|
@ -1036,10 +882,6 @@ in the repository.")
|
|||
("INSTALL.MSYS" . "INSTALL")
|
||||
("server.c" . "emacsserver.c")
|
||||
("lib-src/etags.c" . "etags.c")
|
||||
;; gnulib
|
||||
("lib/strftime.c" . "nstrftime.c")
|
||||
("src/mini-gmp.c" . "mini-gmp.c")
|
||||
("src/mini-gmp.h" . "mini-gmp.h")
|
||||
;; msdos/
|
||||
("is-exec.c" . "is_exec.c")
|
||||
("enriched.doc" . "enriched.txt")
|
||||
|
|
@ -1055,7 +897,6 @@ in the repository.")
|
|||
("DIFF" . "OTHER.EMACSES")
|
||||
("CCADIFF" . "OTHER.EMACSES")
|
||||
("GOSDIFF" . "OTHER.EMACSES")
|
||||
("emacs.appdata.xml" . "emacs.metainfo.xml")
|
||||
;; Nextstep
|
||||
("nextstep/Cocoa/Emacs.base/Contents/Info.plist" . "nextstep/templates/Info.plist.in")
|
||||
;; Moved from lisp/tpu-doc.el to etc/tpu-edt.doc in Emacs 19.29.
|
||||
|
|
@ -1110,12 +951,6 @@ in the repository.")
|
|||
("lisp/gnus/messcompat.el" . "messcompat.el")
|
||||
("html2text.el" . "html2text.el")
|
||||
("lisp/net/html2text.el" . "html2text.el")
|
||||
;; Obsolete in 28.1.
|
||||
("inversion.el" . "inversion.el")
|
||||
("test/lisp/cedet/inversion-tests.el" . "inversion-tests.el")
|
||||
("test/lisp/mail/rfc2368-tests.el" . "rfc2368-tests.el")
|
||||
;; This file was briefly obsolete:
|
||||
("lisp/obsolete/erc-compat.el" . "erc-compat.el")
|
||||
;; From lisp to etc/forms.
|
||||
("forms-d2.el" . "forms-d2.el")
|
||||
("forms-pass.el" . "forms-pass.el")
|
||||
|
|
@ -1123,10 +958,7 @@ in the repository.")
|
|||
("nxml/test.invalid.xml" . "test-invalid.xml")
|
||||
("nxml/test.valid.xml" . "test-valid.xml")
|
||||
("automated/Makefile.in" . "test/Makefile.in")
|
||||
;; rmailmm tests wandered from test/ to test/manual to test/lisp/mail/
|
||||
("rmailmm.el" . "rmailmm-tests.el")
|
||||
("test/rmailmm.el" . "rmailmm-tests.el")
|
||||
("test/manual/rmailmm.el" . "rmailmm-tests.el")
|
||||
("test/rmailmm.el" . "rmailmm.el")
|
||||
;; The one in lisp is eshell/eshell.el.
|
||||
("eshell.el" . "eshell-tests.el")
|
||||
("automated/eshell.el" . "eshell-tests.el")
|
||||
|
|
@ -1158,79 +990,22 @@ in the repository.")
|
|||
("major.texi" . "modes.texi")
|
||||
("msdog-xtra.texi" . "msdos-xtra.texi")
|
||||
("msdog.texi" . "msdos.texi")
|
||||
;; Moved from lisp/gnus/ to lisp/
|
||||
("auth-source.el" . "auth-source.el")
|
||||
("lisp/gnus/auth-source.el" . "auth-source.el")
|
||||
("ecomplete.el" . "ecomplete.el")
|
||||
("format-spec.el" . "format-spec.el")
|
||||
("gnus/format-spec.el" . "format-spec.el")
|
||||
("lisp/gnus/ecomplete.el" . "ecomplete.el")
|
||||
("plstore.el" . "plstore.el")
|
||||
("lisp/gnus/plstore.el" . "plstore.el")
|
||||
("registry.el" . "registry.el")
|
||||
("lisp/gnus/registry.el" . "registry.el")
|
||||
("rtree.el" . "rtree.el")
|
||||
;; Moved from lisp/gnus/ to lisp/calendar/
|
||||
("time-date.el" . "time-date.el")
|
||||
("time-date.el" . "calendar/time-date.el")
|
||||
;; Moved from lisp/gnus/ to lisp/mail/
|
||||
("binhex.el" . "binhex.el")
|
||||
("gnus/binhex.el" . "binhex.el")
|
||||
("uudecode.el" . "uudecode.el")
|
||||
("gnus/uudecode.el" . "uudecode.el")
|
||||
("mail-parse.el" . "mail-parse.el")
|
||||
("gnus/mail-parse.el" . "mail-parse.el")
|
||||
("mail-prsvr.el" . "mail-prsvr.el")
|
||||
("gnus/mail-prsvr.el" . "mail-prsvr.el")
|
||||
("yenc.el" . "yenc.el")
|
||||
("flow-fill.el" . "flow-fill.el")
|
||||
("gnus/flow-fill.el" . "flow-fill.el")
|
||||
("ietf-drums.el" . "ietf-drums.el")
|
||||
("gnus/ietf-drums.el" . "ietf-drums.el")
|
||||
("pop3.el" . "pop3.el")
|
||||
("mail/pop3.el" . "pop3.el")
|
||||
("gnus/pop3.el" . "pop3.el")
|
||||
("lisp/gnus/pop3.el" . "pop3.el")
|
||||
("qp.el" . "qp.el")
|
||||
("gnus/qp.el" . "qp.el")
|
||||
("lisp/gnus/qp.el" . "qp.el")
|
||||
("rfc2045.el" . "rfc2045.el")
|
||||
("gnus/rfc2045.el" . "rfc2045.el")
|
||||
("rfc2047.el" . "rfc2047.el")
|
||||
("gnus/rfc2047.el" . "rfc2047.el")
|
||||
("rfc2231.el" . "rfc2231.el")
|
||||
("gnus/rfc2231.el" . "rfc2231.el")
|
||||
("lisp/gnus/rfc2231.el" . "rfc2231.el")
|
||||
("binhex.el" . "mail/binhex.el")
|
||||
("uudecode.el" . "mail/uudecode.el")
|
||||
("mail-parse.el" . "mail/mail-parse.el")
|
||||
("yenc.el" . "mail/yenc.el")
|
||||
("flow-fill.el" . "mail/flow-fill.el")
|
||||
("ietf-drums.el" . "mail/ietf-drums.el")
|
||||
("sieve-manage.el" . "mail/sieve-manage.el")
|
||||
;; Moved from lisp/gnus/ to lisp/image/
|
||||
("compface.el" . "compface.el")
|
||||
("gravatar.el" . "gravatar.el")
|
||||
("lisp/gnus/gravatar.el" . "gravatar.el")
|
||||
("compface.el" . "image/compface.el")
|
||||
;; Moved from lisp/gnus/ to lisp/net/
|
||||
("eww.el" . "eww.el")
|
||||
("net/eww.el" . "eww.el")
|
||||
("lisp/new/eww.el" . "eww.el") ; an actual typo in ChangeLog.3
|
||||
("gssapi.el" . "gssapi.el")
|
||||
("lisp/gnus/gssapi.el" . "gssapi.el")
|
||||
("imap.el" . "net/imap.el")
|
||||
("mailcap.el" . "mailcap.el")
|
||||
("gnus/mailcap.el" . "mailcap.el")
|
||||
("lisp/gnus/mailcap.el" . "mailcap.el")
|
||||
("rfc2104.el" . "net/rfc2104.el")
|
||||
("starttls.el" . "starttls.el")
|
||||
("lisp/net/starttls.el" . "starttls.el") ; moved to obsolete/
|
||||
("shr.el" . "shr.el")
|
||||
("net/shr.el" . "shr.el")
|
||||
("shr-color.el" . "shr-color.el")
|
||||
("sieve-manage.el" . "sieve-manage.el")
|
||||
("sieve-mode.el" . "sieve-mode.el")
|
||||
("sieve.el" . "sieve.el")
|
||||
("lisp/gnus/sieve-manage.el" . "sieve-manage.el")
|
||||
("lisp/gnus/sieve-mode.el" . "sieve-mode.el")
|
||||
("lisp/gnus/sieve.el" . "sieve.el")
|
||||
;; Moved from lisp/gnus/ to lisp/international
|
||||
("rfc1843.el" . "rfc1843.el")
|
||||
("gnus/rfc1843.el" . "rfc1843.el")
|
||||
("utf7.el" . "utf7.el")
|
||||
("gnus/utf7.el" . "utf7.el")
|
||||
("starttls.el" . "net/starttls.el")
|
||||
;; And from emacs/ to misc/ and back again.
|
||||
("ns-emacs.texi" . "macos.texi")
|
||||
("overrides.texi" . "gnus-overrides.texi")
|
||||
|
|
@ -1245,7 +1020,7 @@ in the repository.")
|
|||
("ED.WORSHIP" . "JOKES")
|
||||
("GNU.JOKES" . "JOKES")
|
||||
("CHARACTERS" . "TODO")
|
||||
("lisp/character-fold.el" . "char-fold.el")
|
||||
("lisp/character-fold.el" . "lisp/char-fold.el")
|
||||
("test/automated/character-fold-tests.el" . "char-fold-tests.el")
|
||||
("test/automated/char-fold-tests.el" . "char-fold-tests.el")
|
||||
("test/lisp/character-fold-tests.el" . "char-fold-tests.el")
|
||||
|
|
@ -1287,8 +1062,7 @@ in the repository.")
|
|||
("grammars" . "grammars")
|
||||
;; Moved from lisp/emacs-lisp/ to admin/.
|
||||
("emacs-lisp/authors.el" . "authors.el")
|
||||
("find-gc.el" . "find-gc.el")
|
||||
("emacs-lisp/find-gc.el" . "find-gc.el")
|
||||
("emacs-lisp/find-gc.el" . "admin/find-gc.el")
|
||||
;; From etc to lisp/cedet/semantic/.
|
||||
("grammars/bovine-grammar.el" . "bovine/grammar.el")
|
||||
("grammars/wisent-grammar.el" . "wisent/grammar.el")
|
||||
|
|
@ -1296,47 +1070,13 @@ in the repository.")
|
|||
("nt/README.W32" . "README.W32")
|
||||
("notes/BRANCH" . "notes/repo")
|
||||
("notes/bzr" . "notes/repo")
|
||||
;; moved from lisp/ to lisp/net/, then removed
|
||||
("pinentry.el" . "pinentry.el")
|
||||
("lisp/pinentry.el" . "pinentry.el")
|
||||
("lisp/net/pinentry.el" . "pinentry.el")
|
||||
;; moved from lisp/ to lisp/net/
|
||||
("lisp/pinentry.el" . "lisp/net/pinentry.el")
|
||||
;; module.* moved to emacs-module.*
|
||||
("src/module.h" . "emacs-module.h")
|
||||
("src/module.c" . "emacs-module.c")
|
||||
("test/src/regex-tests.el" . "regex-emacs-tests.el")
|
||||
("test/lisp/emacs-lisp/cl-tests.el" . "cl-tests.el")
|
||||
("url-ns.el" . "url-ns.el")
|
||||
("gnus-news.texi" . "gnus.texi")
|
||||
("doc/misc/gnus-news.texi" . "gnus.texi")
|
||||
("lisp/multifile.el" . "fileloop.el")
|
||||
("lisp/emacs-lisp/thread.el" . "thread.el")
|
||||
;; cl.el was retired, replaced by cl-lib.el, and we want to
|
||||
;; pretend they are the same file...
|
||||
("emacs-lisp/cl.el" . "cl-lib.el")
|
||||
("lisp/emacs-lisp/cl.el" . "cl-lib.el")
|
||||
("lisp/obsolete/cl.el" . "cl-lib.el")
|
||||
("mantemp.el" . "mantemp.el")
|
||||
("lisp/progmodes/mantemp.el" . "mantemp.el")
|
||||
("progmodes/mantemp.el" . "mantemp.el")
|
||||
("sysdep.c" . "src/sysdep.c")
|
||||
;; nnir.el started in lisp/gnus/ChangeLog.*, then was
|
||||
;; lisp/gnus/nnir.el in ChangeLog.[123], and is now
|
||||
;; lisp/obsolete/nnir.el.
|
||||
("nnir.el" . "nnir.el")
|
||||
("lisp/gnus/nnir.el" . "nnir.el")
|
||||
;; regex.[ch] are mentioned as src/regex.[ch] in ChangeLog.[123],
|
||||
;; but as just regex.[ch] in src/ChangeLog.*, so we need 2 entries
|
||||
;; for each one of them.
|
||||
("regex.c" . "regex-emacs.c")
|
||||
("regex.h" . "regex-emacs.h")
|
||||
("src/regex.c" . "regex-emacs.c")
|
||||
("src/regex.h" . "regex-emacs.h")
|
||||
("test/manual/rmailmm.el" . "rmailmm-tests.el")
|
||||
("test/lisp/cedet/semantic-utest-fmt.el" . "format-tests.el")
|
||||
("test/lisp/emacs-lisp/tabulated-list-test.el" . "tabulated-list-tests.el")
|
||||
("test/lisp/url/url-handlers-test.el" . "url-handlers-tests.el")
|
||||
("test/src/dired-tests.el" . "dired-tests.el")
|
||||
(".dir-locals.el" . ".dir-locals.el")
|
||||
("src/module.h" . "src/emacs-module.h")
|
||||
("src/module.c" . "src/emacs-module.c")
|
||||
;; gnulib
|
||||
("lib/strftime.c" . "lib/nstrftime.c")
|
||||
)
|
||||
"Alist of files which have been renamed during their lifetime.
|
||||
Elements are (OLDNAME . NEWNAME).")
|
||||
|
|
@ -1358,7 +1098,7 @@ Elements are (OLDNAME . NEWNAME).")
|
|||
\\(\\(cs\\|fr\\|sk\\)-\\)?survival\\)\\.tex\\'" "refcards/\\&")
|
||||
("\\`refcard-\\(de\\|pl\\)\\.tex\\'" "refcards/\\1-refcard.tex")
|
||||
("\\`\\(refcards/\\)?fr-drdref\\.tex\\'" "refcards/fr-dired-ref.tex")
|
||||
("\\`\\(TUTORIAL[^/]*\\)" "tutorials/\\1")
|
||||
("^\\(TUTORIAL[^/]*\\)" "tutorials/\\1")
|
||||
("\\`themes/dev-\\(tsdh-\\(?:light\\|dark\\)-theme\\.el\\)\\'"
|
||||
"themes/\\1")
|
||||
;; Moved from lisp/toolbar to etc/images.
|
||||
|
|
@ -1383,9 +1123,9 @@ remove\\|run\\|until\\|up\\|watch\\)\\(\\.\\(?:pb\\|xp\\)m\\)\\'"
|
|||
("\\`\\(toolbar/gud-\\|images/gud/\\)s\\(i\\)?\\(\\.\\(?:pb\\|xp\\)m\\)\\'"
|
||||
"images/gud/step\\2\\3")
|
||||
("\\`toolbar/lc-\\([-a-z]+\\.xpm\\)\\'" "images/low-color/\\1")
|
||||
("\\`\\(tree-widget/\\(?:default\\|folder\\)/[-a-z]+\\.\\(png\\|xpm\\)\\)\\'"
|
||||
("^\\(tree-widget/\\(?:default\\|folder\\)/[-a-z]+\\.\\(png\\|xpm\\)\\)$"
|
||||
"images/\\1")
|
||||
("\\`\\(images/icons/\\)mac\\(emacs\\)_\\([0-9]+\\)\\(\\.png\\)"
|
||||
("^\\(images/icons/\\)mac\\(emacs\\)_\\([0-9]+\\)\\(\\.png\\)"
|
||||
"\\1\\2\\3_mac\\4")
|
||||
("\\(images/icons/\\)emacs_\\([0-9][0-9]\\)\\.png"
|
||||
"\\1hicolor/\\2x\\2/apps/emacs.png")
|
||||
|
|
@ -1406,7 +1146,7 @@ ediff\\|emerge\\|log-edit\\|log-view\\|pcvs\\|smerge-mode\\|vc\\)\\.el\\'"
|
|||
("\\`org-\\(ascii\\|beamer\\|html\\|icalendar\\|jsinfo\\|latex\
|
||||
\\|odt\\|publish\\)\\.el\\'" "ox-\\1.el")
|
||||
;; From test/ to test/automated/.
|
||||
("comint-testsuite\\.el" "automated/\\&")
|
||||
("comint-testsuite.el" "automated/\\&")
|
||||
("\\`\\(bytecomp\\|font-parse\\|icalendar\\|occur\\|newsticker\\)\
|
||||
-testsuite\\.el" "\\1-tests.el")
|
||||
("automated/flymake/warnpred/\\(Makefile\\|test\\.\\(?:c\\|pl\\)\\)\\'"
|
||||
|
|
@ -1416,10 +1156,10 @@ ediff\\|emerge\\|log-edit\\|log-view\\|pcvs\\|smerge-mode\\|vc\\)\\.el\\'"
|
|||
;; Maybe not the exact new name, but disambiguates from lisp/.
|
||||
("automated/\\([^/]*\\)\\.el\\'" "\\1-tests.el")
|
||||
;; NB lax rules should come last.
|
||||
("\\`m/m-\\(.*\\.h\\)\\'" "m/\\1" t)
|
||||
("\\`m-\\(.*\\.h\\)\\'" "\\1" t)
|
||||
("\\`s/s-\\(.*\\.h\\)\\'" "s/\\1" t)
|
||||
("\\`s-\\(.*\\.h\\)\\'" "\\1" t)
|
||||
("^m/m-\\(.*\\.h\\)$" "m/\\1" t)
|
||||
("^m-\\(.*\\.h\\)$" "\\1" t)
|
||||
("^s/s-\\(.*\\.h\\)$" "s/\\1" t)
|
||||
("^s-\\(.*\\.h\\)$" "\\1" t)
|
||||
("\\.\\(el\\|[ch]\\|x[pb]m\\|pbm\\)\\'" t t)
|
||||
)
|
||||
"List of regexps and rewriting rules for renamed files.
|
||||
|
|
@ -1454,7 +1194,7 @@ Additionally, for these logs we apply the `lax' elements of
|
|||
(defun authors-disambiguate-file-name (fullname)
|
||||
"Convert FULLNAME to an unambiguous relative-name."
|
||||
(let ((relname (file-name-nondirectory fullname))
|
||||
dir)
|
||||
dir parent)
|
||||
(if (and (member relname authors-ambiguous-files)
|
||||
;; Try to identify the top-level directory.
|
||||
;; FIXME should really use ROOT from M-x authors.
|
||||
|
|
@ -1466,8 +1206,8 @@ Additionally, for these logs we apply the `lax' elements of
|
|||
;; I think it looks weird to see eg "lisp/simple.el".
|
||||
;; But for eg Makefile.in, we do want to say "lisp/Makefile.in".
|
||||
(if (and (string-equal "lisp"
|
||||
(file-name-nondirectory
|
||||
(directory-file-name dir)))
|
||||
(setq parent (file-name-nondirectory
|
||||
(directory-file-name dir))))
|
||||
;; TODO better to simply have hard-coded list?
|
||||
;; Only really Makefile.in where this applies.
|
||||
(not (file-exists-p
|
||||
|
|
@ -1491,14 +1231,10 @@ Additionally, for these logs we apply the `lax' elements of
|
|||
|
||||
(defun authors-canonical-file-name (file log-file pos author)
|
||||
"Return canonical file name for FILE found in LOG-FILE.
|
||||
FILE is the file name as it appears in LOG-FILE, including any
|
||||
leading directories mentioned there.
|
||||
LOG-FILE is an absolute file name of the log file we are scanning.
|
||||
Checks whether FILE is a valid (existing) file name, has been renamed,
|
||||
or is on the list of removed files. Returns the non-directory part of
|
||||
the file name to use for FILE in the \"AUTHORS\" file.
|
||||
Only uses the LOG-FILE position POS and associated AUTHOR to print a
|
||||
message if FILE is not found."
|
||||
the file name. Only uses the LOG-FILE position POS and associated AUTHOR
|
||||
to print a message if FILE is not found."
|
||||
;; FILE should be re-checked in every different directory associated
|
||||
;; with a LOG-FILE. Eg configure.ac from src/ChangeLog is not the
|
||||
;; same as that from top-level/ChangeLog.
|
||||
|
|
@ -1508,8 +1244,6 @@ message if FILE is not found."
|
|||
(if entry
|
||||
(cdr entry)
|
||||
(setq relname (file-name-nondirectory file))
|
||||
;; File names in `authors-valid-file-names' are OK by
|
||||
;; definition, so no need to check those.
|
||||
(if (or (member file authors-valid-file-names)
|
||||
(member relname authors-valid-file-names)
|
||||
(file-exists-p file)
|
||||
|
|
@ -1536,7 +1270,7 @@ message if FILE is not found."
|
|||
(unless (or valid
|
||||
(member file authors-ignored-files)
|
||||
(authors-obsolete-file-p file)
|
||||
(string-search "*" file)
|
||||
(string-match "[*]" file)
|
||||
(string-match "^[0-9.]+$" file)
|
||||
laxlog)
|
||||
(setq authors-invalid-file-names
|
||||
|
|
@ -1671,7 +1405,7 @@ Suggested\\|Trivial\\|Version\\|Originally\\|From:\\|Patch[ \t]+[Bb]y\\)")))
|
|||
((looking-at "^[ \t]+\\*")
|
||||
(let ((line (buffer-substring-no-properties
|
||||
(match-end 0) (line-end-position))))
|
||||
(while (and (not (string-search ":" line))
|
||||
(while (and (not (string-match ":" line))
|
||||
(forward-line 1)
|
||||
(not (looking-at ":\\|^[ \t]*$")))
|
||||
(setq line (concat line
|
||||
|
|
@ -1681,7 +1415,7 @@ Suggested\\|Trivial\\|Version\\|Originally\\|From:\\|Patch[ \t]+[Bb]y\\)")))
|
|||
(when (string-match ":" line)
|
||||
(setq line (substring line 0 (match-beginning 0)))
|
||||
(setq line (replace-regexp-in-string "[[(<{].*$" "" line))
|
||||
(setq line (string-replace "," "" line))
|
||||
(setq line (replace-regexp-in-string "," "" line))
|
||||
(dolist (file (split-string line))
|
||||
(when (setq file (authors-canonical-file-name file log-file pos (car authors)))
|
||||
(dolist (author authors)
|
||||
|
|
@ -1775,9 +1509,9 @@ and changed by AUTHOR."
|
|||
(cons (cons file (cdr (assq :changed actions)))
|
||||
changed-list))))))
|
||||
(if wrote-list
|
||||
(setq wrote-list (sort wrote-list #'string-lessp)))
|
||||
(setq wrote-list (sort wrote-list 'string-lessp)))
|
||||
(if cowrote-list
|
||||
(setq cowrote-list (sort cowrote-list #'string-lessp)))
|
||||
(setq cowrote-list (sort cowrote-list 'string-lessp)))
|
||||
(when changed-list
|
||||
(setq changed-list (sort changed-list
|
||||
(lambda (a b)
|
||||
|
|
@ -1785,7 +1519,7 @@ and changed by AUTHOR."
|
|||
(string-lessp (car a) (car b))
|
||||
(> (cdr a) (cdr b))))))
|
||||
(setq nchanged (length changed-list))
|
||||
(setq changed-list (mapcar #'car changed-list)))
|
||||
(setq changed-list (mapcar 'car changed-list)))
|
||||
(if (> (- nchanged authors-many-files) 2)
|
||||
(setcdr (nthcdr authors-many-files changed-list)
|
||||
(list (format "and %d other files" (- nchanged authors-many-files)))))
|
||||
|
|
@ -1816,8 +1550,7 @@ and a buffer *Authors Errors* containing references to unknown files."
|
|||
;; the versioned ChangeLog.N rather than the unversioned ChangeLog.
|
||||
(zerop (call-process "make" nil nil nil
|
||||
"-C" root "change-history-nocommit"))
|
||||
(error (substitute-command-keys
|
||||
"Problem updating ChangeLog, try \"\\[universal-argument] \\[authors]\"")))
|
||||
(error "Problem updating ChangeLog"))
|
||||
(let ((logs (process-lines find-program root "-name" "ChangeLog*"))
|
||||
(table (make-hash-table :test 'equal))
|
||||
(buffer-name "*Authors*")
|
||||
|
|
@ -1883,7 +1616,7 @@ list of their contributions.\n")
|
|||
(insert "\n "))
|
||||
(insert " " file))
|
||||
(insert "\n")))))
|
||||
(insert "\nLocal" " Variables:\nmode: emacs-authors\ncoding: "
|
||||
(insert "\nLocal" " Variables:\ncoding: "
|
||||
(symbol-name authors-coding-system) "\nEnd:\n")
|
||||
(message "Generating buffer %s... done" buffer-name)
|
||||
(unless noninteractive
|
||||
|
|
@ -1895,12 +1628,12 @@ list of their contributions.\n")
|
|||
(when authors-invalid-file-names
|
||||
(insert "Unrecognized file entries found:\n\n")
|
||||
(mapc (lambda (f) (if (not (string-match "^[A-Za-z]+$" f)) (insert f "\n")))
|
||||
(sort authors-invalid-file-names #'string-lessp)))
|
||||
(sort authors-invalid-file-names 'string-lessp)))
|
||||
(when authors-ignored-names
|
||||
(insert "\n\nThese authors were ignored:\n\n"
|
||||
(mapconcat
|
||||
#'identity
|
||||
(sort authors-ignored-names #'string-lessp) "\n")))
|
||||
'identity
|
||||
(sort authors-ignored-names 'string-lessp) "\n")))
|
||||
(goto-char (point-min))
|
||||
(compilation-mode)
|
||||
(message "Errors were found. See buffer %s" (buffer-name))))
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
#!/bin/bash
|
||||
### automerge - automatically merge the Emacs release branch to master
|
||||
|
||||
## Copyright (C) 2018-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2018-2019 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Glenn Morris <rgm@gnu.org>
|
||||
## Maintainer: Stefan Kangas <stefankangas@gmail.com>
|
||||
|
||||
## This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -35,7 +34,16 @@
|
|||
## 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"
|
||||
die () # write error to stderr and exit
|
||||
{
|
||||
[ $# -gt 0 ] && echo "$PN: $@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
PN=${0##*/} # basename of script
|
||||
PD=${0%/*}
|
||||
|
||||
[ "$PD" = "$0" ] && PD=. # if PATH includes PWD
|
||||
|
||||
usage ()
|
||||
{
|
||||
|
|
@ -99,8 +107,7 @@ OPTIND=1
|
|||
|
||||
|
||||
[ "$nocd" ] || {
|
||||
# $PD should be the admin directory
|
||||
cd $PD || die "Could not change directory to $PD"
|
||||
cd $PD # this should be the admin directory
|
||||
cd ../
|
||||
}
|
||||
|
||||
|
|
@ -118,7 +125,9 @@ OPTIND=1
|
|||
[ "$test" ] && build=1
|
||||
|
||||
|
||||
tempfile="$(emacs_mktemp)"
|
||||
tempfile=/tmp/$PN.$$
|
||||
|
||||
trap "rm -f $tempfile 2> /dev/null" EXIT
|
||||
|
||||
|
||||
[ -e Makefile ] && [ "$build" ] && {
|
||||
|
|
@ -138,7 +147,7 @@ tempfile="$(emacs_mktemp)"
|
|||
|
||||
rev=$(git rev-parse HEAD)
|
||||
|
||||
[ "$(git rev-parse @{u})" = "$rev" ] || die "Local state does not match origin"
|
||||
[ $(git rev-parse @{u}) = $rev ] || die "Local state does not match origin"
|
||||
|
||||
|
||||
merge ()
|
||||
|
|
@ -147,12 +156,12 @@ merge ()
|
|||
|
||||
if $emacs --batch -Q -l ./admin/gitmerge.el \
|
||||
--eval "(setq gitmerge-minimum-missing $nmin)" -f gitmerge \
|
||||
>| "$tempfile" 2>&1; then
|
||||
>| $tempfile 2>&1; then
|
||||
echo "merged ok"
|
||||
return 0
|
||||
|
||||
else
|
||||
grep -E "Nothing to merge|Number of missing commits" "$tempfile" && \
|
||||
grep -E "Nothing to merge|Number of missing commits" $tempfile && \
|
||||
exit 0
|
||||
|
||||
cat "$tempfile" 1>&2
|
||||
|
|
@ -176,13 +185,13 @@ git diff --stat --cached origin/master | grep -q "etc/NEWS " && \
|
|||
|
||||
echo "Running autoreconf..."
|
||||
|
||||
autoreconf -i -I m4 2>| "$tempfile"
|
||||
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
|
||||
grep -v 'installing `\.' $tempfile 1>&2
|
||||
else
|
||||
cat "$tempfile" 1>&2
|
||||
fi
|
||||
|
|
@ -221,16 +230,16 @@ echo "Tests finished ok"
|
|||
echo "Checking for remote changes..."
|
||||
git fetch || die "fetch error"
|
||||
|
||||
[ "$(git rev-parse @{u})" = "$rev" ] || {
|
||||
[ $(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
|
||||
## Ref eg http://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"
|
||||
git reset --hard $rev
|
||||
|
||||
echo "Pulling..."
|
||||
git pull --ff-only || die "pull error"
|
||||
|
|
@ -246,3 +255,5 @@ git push || die "push error"
|
|||
|
||||
|
||||
exit 0
|
||||
|
||||
### automerge ends here
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#! /usr/bin/perl
|
||||
# Build Emacs in several different configurations.
|
||||
|
||||
# Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2019 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
### @configure_input@
|
||||
|
||||
# Copyright (C) 2015-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2015-2019 Free Software Foundation, Inc.
|
||||
|
||||
# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
# National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
|
|
@ -31,7 +31,6 @@ AWK = @AWK@
|
|||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
top_builddir = @top_builddir@
|
||||
|
||||
charsetdir = ${top_srcdir}/etc/charsets
|
||||
lispintdir = ${top_srcdir}/lisp/international
|
||||
|
|
@ -39,7 +38,16 @@ mapfiledir = ${srcdir}/mapfiles
|
|||
|
||||
GLIBC_CHARMAPS = ${srcdir}/glibc
|
||||
|
||||
-include ${top_builddir}/src/verbose.mk
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
|
||||
# Note: We can not prepend "ISO-" to these map files because of file
|
||||
# name limits on DOS.
|
||||
|
|
@ -88,7 +96,7 @@ 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
|
||||
SED_SCRIPT = jisx2131-filter
|
||||
|
||||
TRANS_TABLE = cp51932.el eucjp-ms.el
|
||||
TRANS_TABLE := $(addprefix ${lispintdir}/,${TRANS_TABLE})
|
||||
|
|
@ -133,7 +141,7 @@ ${charsetdir}/VSCII-2.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz ${mapconv} ${compact}
|
|||
|
||||
${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 "# 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/' \
|
||||
|
|
@ -181,7 +189,7 @@ ${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}(${run_mapconv} $< '/^<.*[ ]\/x[0-9]/' GLIBC-1 ${compact} && \
|
||||
${AM_V_GEN}(${mapconv} $< '/^<.*[ ]\/x[0-9]/' GLIBC-1 ${compact} && \
|
||||
echo "# Generated by hand" && \
|
||||
echo "0xA1-0xDF 0xFF61" ) > $@
|
||||
|
||||
|
|
@ -192,13 +200,12 @@ ${charsetdir}/JISX0208.map: ${GLIBC_CHARMAPS}/EUC-JP.gz ${mapconv}
|
|||
${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
|
||||
jisx2131-filter: ${mapfiledir}/JISX213A.map
|
||||
${AM_V_at}sed -n -e '/^#/d' -e 's,.*0x\([0-9A-Z]*\)$$,/0x0*\1$$/d,p' < $< > $@
|
||||
|
||||
${charsetdir}/JISX2131.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz ${mapconv} \
|
||||
$(SED_SCRIPT)
|
||||
${charsetdir}/JISX2131.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz ${mapconv} jisx2131-filter
|
||||
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \
|
||||
| sed -f $(SED_SCRIPT) \
|
||||
| sed -f jisx2131-filter \
|
||||
| sed -e 's/0x2015/0x2014/' -e 's/0x2299/0x29BF/' > $@
|
||||
|
||||
${charsetdir}/JISX2132.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz ${mapconv}
|
||||
|
|
@ -218,8 +225,8 @@ ${lispintdir}/eucjp-ms.el: ${GLIBC_CHARMAPS}/EUC-JP-MS.gz ${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
|
||||
# U+005C vs U+FF3C). These changes are based on bogytech's blog at
|
||||
# http://bogytech.blogspot.jp/search/label/emacs.
|
||||
${charsetdir}/JISC6226.map: ${mapfiledir}/Uni2JIS ${mapconv} ${kuten}
|
||||
${AM_V_GEN}(${run_mapconv} $< '/^[^#].*0-/' YASUOKA ${kuten} \
|
||||
| sed -e '/0x2140/s/005C/FF3C/' && \
|
||||
|
|
@ -297,18 +304,18 @@ ${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
|
||||
.PHONY: clean bootstrap-clean distclean maintainer-clean extraclean
|
||||
|
||||
clean:
|
||||
rm -f ${SED_SCRIPT}
|
||||
|
||||
## 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
|
||||
maintainer-clean: distclean
|
||||
|
||||
## Do not remove these files, even in a bootstrap. They rarely change.
|
||||
extraclean:
|
||||
rm -f ${CHARSETS} ${TRANS_TABLE} ${srcdir}/charsets.stamp
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
# already been mapped to 1 or 3.
|
||||
|
||||
BEGIN {
|
||||
print ";;; cp51932.el -- translation table for CP51932 -*- lexical-binding:t -*-";
|
||||
print ";;; cp51932.el -- translation table for CP51932";
|
||||
print ";;; Automatically generated from CP932-2BYTE.map";
|
||||
print "(let ((map";
|
||||
printf " '(;JISEXT<->UNICODE";
|
||||
|
|
@ -43,14 +43,13 @@ BEGIN {
|
|||
|
||||
END {
|
||||
print ")))";
|
||||
print " (setq map (mapcar (lambda (x)";
|
||||
print " (cons (decode-char 'japanese-jisx0208 (car x))";
|
||||
print " (cdr x)))";
|
||||
print " map))";
|
||||
print " (mapc #'(lambda (x)";
|
||||
print " (setcar x (decode-char 'japanese-jisx0208 (car 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 " (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 "";
|
||||
|
|
|
|||
|
|
@ -22,7 +22,8 @@
|
|||
|
||||
# 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
|
||||
# this page:
|
||||
# http://support.microsoft.com/default.aspx?scid=kb;EN-US;170559
|
||||
# Each sort key means as below:
|
||||
# 0: JISX0208 characters.
|
||||
# 1: NEC special characters.
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
# 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
|
||||
# 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'.
|
||||
|
|
@ -38,7 +38,7 @@ BEGIN {
|
|||
JISX0208_FROM2 = "/xf5/xa1";
|
||||
JISX0212_FROM = "/x8f/xf3/xf3";
|
||||
|
||||
print ";;; eucjp-ms.el --- translation table for eucJP-ms -*- lexical-binding:t -*-";
|
||||
print ";;; eucjp-ms.el -- translation table for eucJP-ms";
|
||||
print ";;; Automatically generated from /usr/share/i18n/charmaps/EUC-JP-MS.gz";
|
||||
print "(let ((map";
|
||||
print " '(;JISEXT<->UNICODE";
|
||||
|
|
@ -93,17 +93,15 @@ function write_entry (unicode) {
|
|||
|
||||
END {
|
||||
print ")))";
|
||||
print " (setq map";
|
||||
print " (mapcar";
|
||||
print " (lambda (x)";
|
||||
print " (mapc #'(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 " (setcar x (decode-char 'japanese-jisx0208 code))";
|
||||
print " (setcar x (decode-char 'japanese-jisx0212 code))";
|
||||
print " (setcdr x (cadr x)))))";
|
||||
print " map)";
|
||||
print " (define-translation-table 'eucjp-ms-decode map)";
|
||||
print " (mapc (lambda (x)";
|
||||
print " (mapc #'(lambda (x)";
|
||||
print " (let ((tmp (car x)))";
|
||||
print " (setcar x (cdr x)) (setcdr x tmp)))";
|
||||
print " map)";
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Copyright (C) 2015-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2015-2019 Free Software Foundation, Inc.
|
||||
|
||||
# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
# National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
|
|
@ -38,8 +38,7 @@
|
|||
## So that eg [A-F] as used by KANJI-DATABASE branch below works as expected.
|
||||
## Otherwise with LANG=en_US.utf8, CNS-6.map was generated with a
|
||||
## bogus entry. By experiment, LC_COLLATE=C was not enough.
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
export LC_ALL=C
|
||||
|
||||
BASE=`expr "$1" : '.*/\(.*\)' '|' "$1"` # basename
|
||||
FILE="admin/charsets/mapfiles/$BASE"
|
||||
|
|
@ -52,18 +51,17 @@ case "$3" in
|
|||
SOURCE="";;
|
||||
CZYBORRA)
|
||||
BASE="$BASE.gz";
|
||||
SOURCE="https://czyborra.com/charsets/${BASE}";;
|
||||
SOURCE="http://czyborra.com/charsets/${BASE}";;
|
||||
IANA)
|
||||
SOURCE="https://www.iana.org/assignments/charset-reg/${BASE}";;
|
||||
SOURCE="http://www.iana.org/assignments/charset-reg/${BASE}";;
|
||||
UNICODE)
|
||||
SOURCE="https://www.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/${BASE}";;
|
||||
SOURCE="http://www.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/${BASE}";;
|
||||
UNICODE2)
|
||||
SOURCE="https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/${BASE}";;
|
||||
SOURCE="http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/${BASE}";;
|
||||
YASUOKA)
|
||||
BASE="$BASE.Z";
|
||||
SOURCE="http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/ftp/CJKtable/${BASE}";;
|
||||
KANJI-DATABASE)
|
||||
# FIXME: This URL no longer works.
|
||||
SOURCE="http://kanji-database.cvs.sourceforge.net/viewvc/*checkout*/kanji-database/kanji-database/data/cns2ucsdkw.txt?revision=1.4";;
|
||||
*)
|
||||
printf 'Unknown file type: %s\n' "$3"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Created manually from <https://en.wikipedia.org/wiki/Code_page_720>.
|
||||
# Created manually from <http://en.wikipedia.org/wiki/Code_page_720>.
|
||||
# The text in that page is available under the terms of the GNU Free
|
||||
# Documentation License.
|
||||
0x00-0x7F 0x0000
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Created manually from <https://en.wikipedia.org/wiki/Code_page_858>.
|
||||
# Created manually from <http://en.wikipedia.org/wiki/Code_page_858>.
|
||||
# The text in that page is available under the terms of the GNU Free
|
||||
# Documentation License.
|
||||
0x00-0x7F 0x0000
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
Copyright (C) 2009-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2009-2019 Free Software Foundation, Inc.
|
||||
Copyright (C) 2009, 2010, 2011
|
||||
National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
Registration Number H13PRO009
|
||||
|
|
@ -15,12 +15,12 @@ files based on freely available information.
|
|||
* CP932.TXT
|
||||
|
||||
Available at:
|
||||
<https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT>
|
||||
<http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT>
|
||||
|
||||
* PTCP154
|
||||
|
||||
Available at:
|
||||
<https://www.iana.org/assignments/charset-reg/PTCP154>
|
||||
<http://www.iana.org/assignments/charset-reg/PTCP154>
|
||||
|
||||
* Uni2JIS
|
||||
|
||||
|
|
@ -42,16 +42,16 @@ Available at:
|
|||
* stdenc.txt and symbol.txt
|
||||
|
||||
Available at:
|
||||
<https://www.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/stdenc.txt>
|
||||
<https://www.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/symbol.txt>
|
||||
<http://www.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/stdenc.txt>
|
||||
<http://www.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/symbol.txt>
|
||||
|
||||
(2) Newly created files
|
||||
|
||||
* CP720.map and CP858.map
|
||||
|
||||
Created manually by looking at these pages:
|
||||
<https://en.wikipedia.org/wiki/Code_page_720>.
|
||||
<https://en.wikipedia.org/wiki/Code_page_859>.
|
||||
<http://en.wikipedia.org/wiki/Code_page_720>.
|
||||
<http://en.wikipedia.org/wiki/Code_page_859>.
|
||||
The text in that page is under the terms of the GNU Free Documentation
|
||||
License.
|
||||
|
||||
|
|
@ -63,8 +63,8 @@ to "JIS X 0213:2004".
|
|||
|
||||
* MULE-*.map
|
||||
|
||||
Created by using ../mule-charsets.el in Emacs as this:
|
||||
% emacs -batch -l ../mule-charsets.el
|
||||
Created by using ../mule-charsets.el in Emacs 22 as this:
|
||||
% emacs-22 -batch -l ../mule-charsets.el
|
||||
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@
|
|||
#
|
||||
# [v0.1, 5 May 1995] First release.
|
||||
#
|
||||
# Use the Unicode reporting form <https://www.unicode.org/reporting.html>
|
||||
# Use the Unicode reporting form <http://www.unicode.org/reporting.html>
|
||||
# for any questions or comments or to report errors in the data.
|
||||
#
|
||||
0020 20 # SPACE # space
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@
|
|||
#
|
||||
# [v0.1, 5 May 1995] First release.
|
||||
#
|
||||
# Use the Unicode reporting form <https://www.unicode.org/reporting.html>
|
||||
# Use the Unicode reporting form <http://www.unicode.org/reporting.html>
|
||||
# for any questions or comments or to report errors in the data.
|
||||
#
|
||||
0020 20 # SPACE # space
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
;;; mule-charsets.el --- Generate Mule-original charset maps. -*- lexical-binding: t -*-
|
||||
;; mule-charsets.el -- Generate Mule-original charset maps.
|
||||
;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H13PRO009
|
||||
|
|
@ -55,14 +55,14 @@
|
|||
("MULE-lviscii.map" . vietnamese-viscii-lower)
|
||||
("MULE-uviscii.map" . vietnamese-viscii-upper)))
|
||||
|
||||
(defconst mule-charsets-header
|
||||
(defconst header
|
||||
(format
|
||||
"# Generated by running admin/charsets/mule-charsets.el in Emacs %d.%d.\n"
|
||||
emacs-major-version emacs-minor-version))
|
||||
|
||||
(dolist (elt charset-alist)
|
||||
(with-temp-buffer
|
||||
(insert mule-charsets-header)
|
||||
(insert header)
|
||||
(map-charset-chars 'func (cdr elt) (cdr elt))
|
||||
(sort-lines nil (point-min) (point-max))
|
||||
(let ((coding-system-for-write 'unix))
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ sub Check_texi_function {
|
|||
$arglist_parm{$parm} = 1;
|
||||
}
|
||||
|
||||
foreach my $parm ($docstring =~ /\@var\{([^{}]+)\}/g) {
|
||||
foreach my $parm ($docstring =~ /\@var{([^{}]+)}/g) {
|
||||
$docstring_parm{$parm} = 1;
|
||||
}
|
||||
|
||||
|
|
@ -111,9 +111,7 @@ sub Check_function {
|
|||
# $arglist_parm{$parm} = 1;
|
||||
#}
|
||||
foreach my $parm (@parms) {
|
||||
next if $parm eq '&optional'
|
||||
|| $parm eq '&rest'
|
||||
|| $parm eq 'Lisp-Object';
|
||||
next if $parm eq '&optional' || $parm eq '&rest';
|
||||
$arglist_parm{$parm} = 1;
|
||||
}
|
||||
my $doc_tmp = $docstring;
|
||||
|
|
@ -152,22 +150,6 @@ sub Check_function {
|
|||
next if $parm eq 'primary';
|
||||
next if $parm eq 'secondary';
|
||||
next if $parm eq 'clipboard';
|
||||
next if $parm eq 'bbdb';
|
||||
next if $parm eq 'dos';
|
||||
next if $parm eq 'erc';
|
||||
next if $parm eq 'exif';
|
||||
next if $parm eq 'ldap';
|
||||
next if $parm eq 'ime';
|
||||
next if $parm eq 'rfc';
|
||||
next if $parm eq 'ms-dos';
|
||||
next if $parm eq 'url';
|
||||
next if $parm eq 'w32';
|
||||
next if $parm eq 'todo'; # org-mode
|
||||
next if $parm eq 'done'; # org-mode
|
||||
next if $parm eq 'waiting'; #org-mode
|
||||
next if $parm eq 'ordered'; #org-mode
|
||||
next if $parm eq 'deadline'; #org-mode
|
||||
next if $parm eq 'scheduled'; #org-mode
|
||||
next if length $parm < 3;
|
||||
if (! exists $arglist_parm{$parm}) {
|
||||
print "bogus parm: $function: $parm\n";
|
||||
|
|
@ -246,43 +228,20 @@ open (FIND, "find src -name '*.c' -print |") or die;
|
|||
while (my $file = <FIND>) {
|
||||
my @matches =
|
||||
((FileContents $file) =~
|
||||
/\b
|
||||
DEFUN\s*\(\s*
|
||||
## $function
|
||||
\"((?:[^\\\"]|\\.)+)\"\s*,
|
||||
\s*\S+\s*, \s*\S+\s*,
|
||||
## $minargs
|
||||
\s*(\S+)\s*,
|
||||
## $maxargs
|
||||
\s*(\S+)\s*,
|
||||
## $interactive
|
||||
\s*((?:0|\"(?:(?:[^\\\"]|\\.)*)\"))\s*,
|
||||
## $docstring
|
||||
\s*doc:\s*\/\*\s*(.*?)\s*\*\/
|
||||
# attributes -- skip
|
||||
(?:\s*attributes:\s*
|
||||
(?:noreturn|const)
|
||||
\s*)?
|
||||
\s*\)
|
||||
### $parms
|
||||
\s*\(
|
||||
([^()]*)
|
||||
\)
|
||||
/sgox);
|
||||
/\bDEFUN\s*\(\s*\"((?:[^\\\"]|\\.)+)\"\s*,\s*\S+\s*,\s*(\S+)\s*,\s*(\S+)\s*,\s*((?:0|\"(?:(?:[^\\\"]|\\.)*)\"))\s*,\s*\/\*(.*?)\*\/\s*\(([^()]*)\)\)/sgo);
|
||||
while (@matches) {
|
||||
my ($function, $minargs, $maxargs, $interactive, $docstring, $parms) = splice (@matches, 0, 6);
|
||||
$docstring =~ s/^\n+//s;
|
||||
$docstring =~ s/\n+$//s;
|
||||
$parms =~ s/,/ /g;
|
||||
my @parms = $parms eq 'void' ? () : split (' ', $parms);
|
||||
my @parms = split (' ',$parms);
|
||||
for (@parms) { tr/_/-/; s/-$//; }
|
||||
if ($parms !~ /Lisp_Object/) {
|
||||
if ($minargs < @parms) {
|
||||
if ($maxargs =~ /^\d+$/) {
|
||||
die "$function: $maxargs"
|
||||
unless $maxargs eq @parms;
|
||||
splice (@parms, $minargs, 0, '&optional');
|
||||
}
|
||||
if ($maxargs =~ /^\d+$/) {
|
||||
die unless $maxargs eq @parms;
|
||||
splice (@parms, $minargs, 0, '&optional');
|
||||
}
|
||||
}
|
||||
}
|
||||
my $funtype = ($interactive =~ /\"/ ? 'Command' : 'Function');
|
||||
|
|
@ -290,7 +249,13 @@ while (my $file = <FIND>) {
|
|||
}
|
||||
}
|
||||
|
||||
my @pkgs = ();
|
||||
my @pkgs;
|
||||
if (-d "../xemacs-packages") {
|
||||
@pkgs = qw (libs/edebug libs/xemacs-base comm/eudc oa/edit-utils);
|
||||
} else {
|
||||
@pkgs = ();
|
||||
}
|
||||
for (@pkgs) { s@^@../xemacs-packages/@; }
|
||||
open (FIND, "find lisp @pkgs -name '*.el' -print |") or die;
|
||||
while (my $file = <FIND>) {
|
||||
my $contents = FileContents $file;
|
||||
|
|
|
|||
|
|
@ -1,56 +0,0 @@
|
|||
#!/bin/bash
|
||||
### check-man-pages - check man pages for errors
|
||||
|
||||
## Copyright (C) 2022-2023 Free Software Foundation, Inc.
|
||||
|
||||
## Author: 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:
|
||||
|
||||
## Check Emacs man pages for errors using `man'.
|
||||
|
||||
### Code:
|
||||
|
||||
source "${0%/*}/emacs-shell-lib"
|
||||
|
||||
exit_status=0
|
||||
|
||||
cd "$PD"/../doc/man
|
||||
for page in *.1; do
|
||||
# ctags.1 just includes the man page etags.1, which AFAICT will
|
||||
# default to the one installed on the system (!), instead of the
|
||||
# one in the repository. So checking it is pointless, and we will
|
||||
# in any case already check etags.1 separately.
|
||||
if [ "$page" == "ctags.1" ]; then
|
||||
continue
|
||||
fi
|
||||
log=$(emacs_mktemp)
|
||||
LC_ALL=C.UTF-8 MANROFFSEQ='' MANWIDTH=80 \
|
||||
man --warnings=all,mac -E UTF-8 -l -Tutf8 -Z "$page" >/dev/null 2> "$log"
|
||||
log_size=$(stat --format=%s "$log")
|
||||
if [ "$log_size" -ne 0 ]; then
|
||||
echo "doc/man/$page:"
|
||||
# Point to the correct file for *compilation* buffers.
|
||||
cat "$log" \
|
||||
| sed 's/troff: man1\/\([^ ]\+\)\.1/troff: doc\/man\/\1.1/' \
|
||||
| sed "s/<standard input>/doc\/man\/$page/"
|
||||
exit_status=1
|
||||
fi
|
||||
done
|
||||
|
||||
exit $exit_status
|
||||
|
|
@ -106,6 +106,9 @@ Lisp_Object O;
|
|||
- W->column_number_displayed
|
||||
+ WVAR (W, column_number_displayed)
|
||||
|
|
||||
- W->redisplay_end_trigger
|
||||
+ WVAR (W, redisplay_end_trigger)
|
||||
|
|
||||
- W->combination_limit
|
||||
+ WVAR (W, combination_limit)
|
||||
|
|
||||
|
|
@ -222,6 +225,9 @@ Lisp_Object O;
|
|||
- XWINDOW (O)->column_number_displayed
|
||||
+ WVAR (XWINDOW (O), column_number_displayed)
|
||||
|
|
||||
- XWINDOW (O)->redisplay_end_trigger
|
||||
+ WVAR (XWINDOW (O), redisplay_end_trigger)
|
||||
|
|
||||
- XWINDOW (O)->combination_limit
|
||||
+ WVAR (XWINDOW (O), combination_limit)
|
||||
|
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
;;; cus-test.el --- tests for custom types and load problems -*- lexical-binding: t; -*-
|
||||
;;; cus-test.el --- tests for custom types and load problems
|
||||
|
||||
;; Copyright (C) 1998, 2000, 2002-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1998, 2000, 2002-2019 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Markus Rost <rost@math.uni-bielefeld.de>
|
||||
;; Author: Markus Rost <markus.rost@mathematik.uni-regensburg.de>
|
||||
;; Maintainer: Markus Rost <rost@math.ohio-state.edu>
|
||||
;; Created: 13 Sep 1998
|
||||
;; Keywords: maint
|
||||
|
||||
|
|
@ -37,13 +38,6 @@
|
|||
;;
|
||||
;; src/emacs -batch -l admin/cus-test.el -f cus-test-noloads
|
||||
;;
|
||||
;; or as a part of the test suite with
|
||||
;;
|
||||
;; make -C test test-custom-opts
|
||||
;; make -C test test-custom-deps
|
||||
;; make -C test test-custom-libs
|
||||
;; make -C test test-custom-noloads
|
||||
;;
|
||||
;; in the emacs source directory.
|
||||
;;
|
||||
;; For interactive use: Load this file. Then
|
||||
|
|
@ -119,7 +113,6 @@ Names should be as they appear in loaddefs.el.")
|
|||
;; This avoids a hang of `cus-test-apropos' in 21.2.
|
||||
;; (add-to-list 'cus-test-skip-list 'sh-alias-alist)
|
||||
|
||||
(defvar viper-mode)
|
||||
(or noninteractive
|
||||
;; Never Viperize.
|
||||
(setq viper-mode nil))
|
||||
|
|
@ -131,7 +124,7 @@ Names should be as they appear in loaddefs.el.")
|
|||
;; Don't create a file `abbrev-file-name'.
|
||||
(setq save-abbrevs nil)
|
||||
|
||||
;; Avoid compile logs from advised functions.
|
||||
;; Avoid compile logs from adviced functions.
|
||||
(eval-after-load "bytecomp"
|
||||
'(setq ad-default-compilation-action 'never))
|
||||
|
||||
|
|
@ -145,8 +138,7 @@ Names should be as they appear in loaddefs.el.")
|
|||
(require 'cus-load)
|
||||
|
||||
(defvar cus-test-errors nil
|
||||
"List of problematic variables found by `cus-test-apropos'.
|
||||
Each element is (VARIABLE . PROBLEM); see `cus-test--format-problem'.")
|
||||
"List of problematic variables found by `cus-test-apropos'.")
|
||||
|
||||
(defvar cus-test-tested-variables nil
|
||||
"List of options tested by last call of `cus-test-apropos'.")
|
||||
|
|
@ -157,7 +149,7 @@ Each element is (VARIABLE . PROBLEM); see `cus-test--format-problem'.")
|
|||
"Set by `cus-test-apropos' to a list of options with :get property.")
|
||||
|
||||
(defvar cus-test-vars-with-changed-state nil
|
||||
"Set by `cus-test-apropos' to a list of options with state \\='changed.")
|
||||
"Set by `cus-test-apropos' to a list of options with state 'changed.")
|
||||
|
||||
(defvar cus-test-deps-errors nil
|
||||
"List of require/load problems found by `cus-test-deps'.")
|
||||
|
|
@ -182,15 +174,6 @@ Set by `cus-test-noloads'.")
|
|||
;; (defvar cus-test-vars-cus-loaded nil
|
||||
;; "A list of options loaded by `custom-load-symbol'.")
|
||||
|
||||
(defun cus-test--format-error (err)
|
||||
"Format an element of `cus-test-errors'."
|
||||
(pcase err
|
||||
(`(,var :type-error ,value ,type)
|
||||
(format "variable: %s\n value: %S\n type: %S" var value type))
|
||||
(`(,var :other-error ,e)
|
||||
(format "variable: %s\n error: %S" var e))
|
||||
(_ (format "%S" err))))
|
||||
|
||||
(defun cus-test-apropos (regexp)
|
||||
"Check the options matching REGEXP.
|
||||
The detected problematic options are stored in `cus-test-errors'."
|
||||
|
|
@ -210,10 +193,11 @@ The detected problematic options are stored in `cus-test-errors'."
|
|||
(let* ((type (custom-variable-type symbol))
|
||||
(conv (widget-convert type))
|
||||
(get (or (get symbol 'custom-get) 'default-value))
|
||||
values)
|
||||
values
|
||||
mismatch)
|
||||
(when (default-boundp symbol)
|
||||
(push (funcall get symbol) values)
|
||||
(push (eval (car (get symbol 'standard-value)) t) values))
|
||||
(push (eval (car (get symbol 'standard-value))) values))
|
||||
(if (boundp symbol)
|
||||
(push (symbol-value symbol) values))
|
||||
;; That does not work.
|
||||
|
|
@ -224,9 +208,7 @@ The detected problematic options are stored in `cus-test-errors'."
|
|||
;; TODO for booleans, check for values that can be
|
||||
;; evaluated and are not t or nil. Usually a bug.
|
||||
(unless (widget-apply conv :match value)
|
||||
(let ((err (list symbol :type-error value type)))
|
||||
(unless (member err cus-test-errors)
|
||||
(push err cus-test-errors)))))
|
||||
(setq mismatch 'mismatch)))
|
||||
values)
|
||||
|
||||
;; Store symbols with a custom-get property.
|
||||
|
|
@ -241,13 +223,14 @@ The detected problematic options are stored in `cus-test-errors'."
|
|||
(get symbol 'standard-value))))
|
||||
(and (consp c-value)
|
||||
(boundp symbol)
|
||||
(not (equal (eval (car c-value) t) (symbol-value symbol)))
|
||||
(add-to-list 'cus-test-vars-with-changed-state symbol))))
|
||||
(not (equal (eval (car c-value)) (symbol-value symbol)))
|
||||
(add-to-list 'cus-test-vars-with-changed-state symbol)))
|
||||
|
||||
(if mismatch
|
||||
(push symbol cus-test-errors)))
|
||||
|
||||
(error
|
||||
(let ((err (list symbol :other-error alpha)))
|
||||
(unless (member err cus-test-errors)
|
||||
(push err cus-test-errors)))
|
||||
(push symbol cus-test-errors)
|
||||
(message "Error for %s: %s" symbol alpha))))
|
||||
(cus-test-get-options regexp))
|
||||
(message "%s options tested"
|
||||
|
|
@ -257,7 +240,7 @@ The detected problematic options are stored in `cus-test-errors'."
|
|||
(defun cus-test-cus-load-groups (&optional cus-load)
|
||||
"Return a list of current custom groups.
|
||||
If CUS-LOAD is non-nil, include groups from cus-load.el."
|
||||
(append (mapcar #'cdr custom-current-group-alist)
|
||||
(append (mapcar 'cdr custom-current-group-alist)
|
||||
(if cus-load
|
||||
(with-temp-buffer
|
||||
(insert-file-contents (locate-library "cus-load.el"))
|
||||
|
|
@ -282,7 +265,7 @@ currently defined groups."
|
|||
(if group
|
||||
(memq symbol groups)
|
||||
(or
|
||||
;; (custom-variable-p symbol)
|
||||
;; (user-variable-p symbol)
|
||||
(get symbol 'standard-value)
|
||||
;; (get symbol 'saved-value)
|
||||
(get symbol 'custom-type)))
|
||||
|
|
@ -302,13 +285,13 @@ currently defined groups."
|
|||
(insert "No errors found by cus-test.")
|
||||
(insert "The following variables seem to have problems:\n\n")
|
||||
(dolist (e cus-test-errors)
|
||||
(insert (cus-test--format-error e) "\n")))))
|
||||
(insert (symbol-name e) "\n")))))
|
||||
|
||||
(defun cus-test-load-custom-loads ()
|
||||
"Call `custom-load-symbol' on all atoms."
|
||||
(interactive)
|
||||
(if noninteractive (let (noninteractive) (require 'dunnet)))
|
||||
(mapatoms #'custom-load-symbol)
|
||||
(mapatoms 'custom-load-symbol)
|
||||
(run-hooks 'cus-test-after-load-libs-hook))
|
||||
|
||||
(defmacro cus-test-load-1 (&rest body)
|
||||
|
|
@ -337,8 +320,7 @@ If it is \"all\", load all Lisp files."
|
|||
(lambda (file)
|
||||
(condition-case alpha
|
||||
(unless (member file cus-test-libs-noloads)
|
||||
(load (file-name-sans-extension (expand-file-name file lispdir))
|
||||
nil t)
|
||||
(load (file-name-sans-extension (expand-file-name file lispdir)))
|
||||
(push file cus-test-libs-loaded))
|
||||
(error
|
||||
(push (cons file alpha) cus-test-libs-errors)
|
||||
|
|
@ -365,10 +347,8 @@ Optional argument ALL non-nil means list all (non-obsolete) Lisp files."
|
|||
(prog1
|
||||
;; Hack to remove leading "./".
|
||||
(mapcar (lambda (e) (substring e 2))
|
||||
(apply #'process-lines find-program
|
||||
"." "-name" "obsolete" "-prune" "-o"
|
||||
"-name" "ldefs-boot.el" "-prune" "-o"
|
||||
"-name" "*loaddefs.el" "-prune" "-o"
|
||||
(apply 'process-lines find-program
|
||||
"-name" "obsolete" "-prune" "-o"
|
||||
"-name" "[^.]*.el" ; ignore .dir-locals.el
|
||||
(if all
|
||||
'("-print")
|
||||
|
|
@ -391,9 +371,7 @@ This function is suitable for batch mode. E.g., invoke
|
|||
|
||||
in the Emacs source directory.
|
||||
Normally only tests options belonging to files in loaddefs.el.
|
||||
If optional argument ALL is non-nil, test all files with defcustoms.
|
||||
|
||||
Returns a list of variables with suspicious types."
|
||||
If optional argument ALL is non-nil, test all files with defcustoms."
|
||||
(interactive)
|
||||
(and noninteractive
|
||||
command-line-args-left
|
||||
|
|
@ -405,12 +383,9 @@ Returns a list of variables with suspicious types."
|
|||
(message "Running %s" 'cus-test-apropos)
|
||||
(cus-test-apropos "")
|
||||
(if (not cus-test-errors)
|
||||
(progn
|
||||
(message "No problems found")
|
||||
nil)
|
||||
(message "No problems found")
|
||||
(message "The following options might have problems:")
|
||||
(cus-test-message (mapcar #'cus-test--format-error cus-test-errors))
|
||||
cus-test-errors))
|
||||
(cus-test-message cus-test-errors)))
|
||||
|
||||
(defun cus-test-deps ()
|
||||
"Run a verbose version of `custom-load-symbol' on all atoms.
|
||||
|
|
@ -563,7 +538,7 @@ in the Emacs source directory."
|
|||
(message "No options not loaded by custom-load-symbol found")
|
||||
(message "The following options were not loaded by custom-load-symbol:")
|
||||
(cus-test-message
|
||||
(sort cus-test-vars-not-cus-loaded #'string<)))
|
||||
(sort cus-test-vars-not-cus-loaded 'string<)))
|
||||
|
||||
(dolist (o groups-loaded)
|
||||
(setq groups-not-loaded (delete o groups-not-loaded)))
|
||||
|
|
@ -571,7 +546,7 @@ in the Emacs source directory."
|
|||
(if (not groups-not-loaded)
|
||||
(message "No groups not in cus-load.el found")
|
||||
(message "The following groups are not in cus-load.el:")
|
||||
(cus-test-message (sort groups-not-loaded #'string<)))))
|
||||
(cus-test-message (sort groups-not-loaded 'string<)))))
|
||||
|
||||
(provide 'cus-test)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2019 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -17,7 +17,6 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
source "${0%/*}/emacs-shell-lib"
|
||||
|
||||
if [ $# != 2 ]; then
|
||||
cat <<EOF
|
||||
|
|
@ -32,10 +31,11 @@ fi
|
|||
old_tar=$1
|
||||
new_tar=$2
|
||||
|
||||
old_tmp="$(emacs_mktemp ${PN}-old)"
|
||||
new_tmp="$(emacs_mktemp ${PN}-new)"
|
||||
old_tmp=/tmp/old.$$
|
||||
new_tmp=/tmp/new.$$
|
||||
trap "rm -f $old_tmp $new_tmp; exit 1" 1 2 15
|
||||
|
||||
tar tf "$old_tar" | sed -e 's,^[^/]*,,' | sort > $old_tmp
|
||||
tar tf "$new_tar" | sed -e 's,^[^/]*,,' | sort > $new_tmp
|
||||
tar tzf $old_tar | sed -e 's,^[^/]*,,' | sort > $old_tmp
|
||||
tar tzf $new_tar | sed -e 's,^[^/]*,,' | sort > $new_tmp
|
||||
diff -u $old_tmp $new_tmp
|
||||
rm -f $new_tmp $old_tmp
|
||||
|
|
|
|||
|
|
@ -1,87 +0,0 @@
|
|||
#!/bin/bash
|
||||
### emacs-shell-lib - shared code for Emacs shell scripts
|
||||
|
||||
## Copyright (C) 2022-2023 Free Software Foundation, Inc.
|
||||
|
||||
## Author: 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/>.
|
||||
|
||||
### Code:
|
||||
|
||||
# Set an explicit umask.
|
||||
umask 077
|
||||
|
||||
# Treat unset variables as an error.
|
||||
set -o nounset
|
||||
|
||||
# Exit immediately on error.
|
||||
set -o errexit
|
||||
|
||||
# Avoid non-standard command output from non-C locales.
|
||||
unset LANG LC_ALL LC_MESSAGES
|
||||
|
||||
PN=${0##*/} # basename of script
|
||||
PD=${0%/*} # script directory
|
||||
|
||||
[ "$PD" = "$0" ] && PD=. # if PATH includes PWD
|
||||
|
||||
die () # write error to stderr and exit
|
||||
{
|
||||
[ $# -gt 0 ] && echo "$PN: $@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
emacs_tempfiles=()
|
||||
|
||||
emacs_tempfiles_cleanup ()
|
||||
{
|
||||
for file in ${emacs_tempfiles[@]}; do
|
||||
rm -f "${file}" 2> /dev/null
|
||||
done
|
||||
}
|
||||
|
||||
trap '
|
||||
ret=$?
|
||||
emacs_tempfiles_cleanup
|
||||
exit $ret
|
||||
' EXIT
|
||||
|
||||
emacs_mktemp ()
|
||||
{
|
||||
local readonly file="${1-}"
|
||||
local tempfile
|
||||
local prefix
|
||||
|
||||
if [ -z "$file" ]; then
|
||||
prefix="$PN"
|
||||
else
|
||||
prefix="$1"
|
||||
fi
|
||||
|
||||
if [ -x "$(command -v mktemp)" ]; then
|
||||
tempfile=$(mktemp "${TMPDIR-/tmp}/${prefix}.XXXXXXXXXX")
|
||||
else
|
||||
tempfile="${TMPDIR-/tmp}/${prefix}.$RANDOM$$"
|
||||
(umask 077 && touch "$tempfile")
|
||||
fi
|
||||
|
||||
[ -z "${tempfile}" ] && die "Creating temporary file failed"
|
||||
|
||||
emacs_tempfiles+=("${tempfile}")
|
||||
|
||||
echo "$tempfile"
|
||||
}
|
||||
152
admin/emake
152
admin/emake
|
|
@ -1,152 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Copyright (C) 2022-2023 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/>.
|
||||
|
||||
# This script is meant to be used as ./admin/emake, and will compile
|
||||
# the Emacs tree with virtually all of the informational messages
|
||||
# removed, and with errors/warnings highlighted in red. It'll give a
|
||||
# quick overview to confirm that nothing has broken, for instance
|
||||
# after doing a "git pull". It's not meant to be used during actual
|
||||
# development, because it removes so much information that commands
|
||||
# like `next-error' won't be able to jump to the source code where
|
||||
# errors are.
|
||||
|
||||
cores=1
|
||||
|
||||
# Determine the number of cores.
|
||||
if [ -f /proc/cpuinfo ]; then
|
||||
cores=$(($(grep -E "^physical id|^cpu cores" /proc/cpuinfo |\
|
||||
awk '{ print $4; }' |\
|
||||
sed '$!N;s/\n/ /' |\
|
||||
uniq |\
|
||||
sed 's/^[0-9]*/+/')))
|
||||
fi
|
||||
|
||||
NOCOLOR=0
|
||||
NOCHECK=0
|
||||
FASTOPT="FAST=true"
|
||||
QUIETER=0
|
||||
while :
|
||||
do
|
||||
[[ "X$1" == "X--no-color" ]] && { NOCOLOR=1; shift; continue; }
|
||||
[[ "X$1" == "X--no-check" ]] && { NOCHECK=1; shift; continue; }
|
||||
[[ "X$1" == "X--no-fast" ]] && { FASTOPT=""; shift; continue; }
|
||||
[[ "X$1" == "X--quieter" ]] && { QUIETER=1; shift; continue; }
|
||||
break
|
||||
done
|
||||
|
||||
make $FASTOPT -j$cores "$@" 2>&1 | \
|
||||
sed -u 's# \.\./\.\./# #
|
||||
s# \.\./# #
|
||||
s#^Configuring local git # Configuring local git #
|
||||
s#^Installing git hooks...# Installing git hooks...#
|
||||
s#^Running # Running #
|
||||
s#^Configured for # Configured for #
|
||||
s#^./temacs.*# \\& #
|
||||
s#^make.*Error# \\& #
|
||||
s#^Dumping under the name.*# \\& #
|
||||
:a;/\\$/N;s/\\\n//;ta
|
||||
' | \
|
||||
grep -E --line-buffered -v "^make|\
|
||||
^Loading|\
|
||||
SCRAPE|\
|
||||
INFO.*Scraping.*[.] ?\$|\
|
||||
INFO.*Scraping.*done\$|\
|
||||
GEN.*etc/DOC|\
|
||||
GEN.*autoloads|\
|
||||
^Waiting for git|\
|
||||
^Finding pointers|\
|
||||
^Using load-path|\
|
||||
^Adding name|\
|
||||
^Dump mode|\
|
||||
^Dumping finger|\
|
||||
^Byte counts|\
|
||||
^Reloc counts|\
|
||||
^Pure-hashed|\
|
||||
^cp -f temacs|\
|
||||
^rm -f bootstrap|\
|
||||
^Dump complete|\
|
||||
^rm -f emacs|\
|
||||
mkdir -p etc|\
|
||||
mkdir -p info|\
|
||||
mkdir -p lisp|\
|
||||
^LC_ALL.*pdump|\
|
||||
^cp -f emacs.p|\
|
||||
GEN.*loaddefs|\
|
||||
^Reloading stale|\
|
||||
^Source file.*newer than|\
|
||||
^Directories for loaddefs|\
|
||||
^./autogen.sh|\
|
||||
^[Cc]hecking |\
|
||||
^.Read INSTALL.REPO for more|\
|
||||
^Your system has the required tools.|\
|
||||
^Building aclocal.m4|\
|
||||
^ Running 'autoreconf|\
|
||||
^You can now run './configure'|\
|
||||
^./configure|\
|
||||
^configure: creating|\
|
||||
^\"configure\" file built.|\
|
||||
^There seems to be no|\
|
||||
^config.status:|\
|
||||
ELN_DESTDIR|\
|
||||
--bin-dest |\
|
||||
^ *$|\
|
||||
^Makefile built|\
|
||||
The GNU allocators don't work|\
|
||||
^git config |\
|
||||
^'\.git/|\
|
||||
^\^\(\(|\
|
||||
^ANCIENT=yes make|\
|
||||
^touch -t|\
|
||||
^'build-aux/git-hooks|\
|
||||
^GNUmakefile:[0-9]*: There seems to be no |\
|
||||
^GNUmakefile:[0-9]*: Running |\
|
||||
^GNUmakefile:[0-9]*: No Makefile|\
|
||||
^rm -f |\
|
||||
^rm -rf|\
|
||||
^find \. |\
|
||||
^rm -fr deps|\
|
||||
^if test -f \./\.gdbinit|\
|
||||
^true|\
|
||||
^for file in |\
|
||||
^rmdir|\
|
||||
^\[ \"\.\" = \"\.\" \]\
|
||||
" | \
|
||||
while read
|
||||
do
|
||||
C=""
|
||||
(($NOCOLOR == 0)) && [[ "X${REPLY:0:1}" != "X " ]] && C="\033[1;31m"
|
||||
(($NOCOLOR == 0)) && [[ "X${REPLY:0:3}" == "X " ]] && C="\033[1;31m"
|
||||
if (($QUIETER == 0))
|
||||
then
|
||||
[[ "X$C" == "X" ]] && printf "%s\n" "$REPLY" || printf "$C%s\033[0m\n" "$REPLY"
|
||||
else
|
||||
[[ "X$C" == "X" ]] && printf "%-80s\r" "$REPLY" || printf "$C%-80s\033[0m\n" "$REPLY"
|
||||
fi
|
||||
done
|
||||
|
||||
# If make failed, exit now with its error code.
|
||||
((${PIPESTATUS[0]} != 0)) && exit ${PIPESTATUS[0]}
|
||||
|
||||
(($NOCHECK == 1)) && exit 0
|
||||
|
||||
# Run a "make check" on all test files belonging to files that have
|
||||
# changed since last time.
|
||||
make -j$cores check-maybe 2>&1 | \
|
||||
sed -n '/contained unexpected results/,$p' | \
|
||||
grep -E --line-buffered -v "^make"
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
;;; find-gc.el --- detect functions that call the garbage collector -*- lexical-binding: t; -*-
|
||||
;;; find-gc.el --- detect functions that call the garbage collector
|
||||
|
||||
;; Copyright (C) 1992, 2001-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1992, 2001-2019 Free Software Foundation, Inc.
|
||||
|
||||
;; Maintainer: emacs-devel@gnu.org
|
||||
|
||||
|
|
@ -42,14 +42,14 @@ Each entry has the form (FUNCTION . FUNCTIONS-THAT-CALL-IT).")
|
|||
Each entry has the form (FUNCTION . FUNCTIONS-IT-CALLS).")
|
||||
|
||||
|
||||
;; Functions on this list are safe, even if they appear to be able
|
||||
;; to call the target.
|
||||
;;; Functions on this list are safe, even if they appear to be able
|
||||
;;; to call the target.
|
||||
|
||||
(defvar find-gc-noreturn-list '(Fsignal Fthrow wrong_type_argument))
|
||||
|
||||
;; This was originally generated directory-files, but there were
|
||||
;; too many files there that were not actually compiled. The
|
||||
;; list below was created for a HP-UX 7.0 system.
|
||||
;;; This was originally generated directory-files, but there were
|
||||
;;; too many files there that were not actually compiled. The
|
||||
;;; list below was created for a HP-UX 7.0 system.
|
||||
|
||||
(defvar find-gc-source-files
|
||||
'("dispnew.c" "scroll.c" "xdisp.c" "window.c"
|
||||
|
|
@ -73,14 +73,14 @@ Also store it in `find-gc-unsafe-list'."
|
|||
(find-unsafe-funcs 'Fgarbage_collect)
|
||||
(setq find-gc-unsafe-list
|
||||
(sort find-gc-unsafe-list
|
||||
(lambda (x y)
|
||||
(string-lessp (car x) (car y))))))
|
||||
(function (lambda (x y)
|
||||
(string-lessp (car x) (car y)))))))
|
||||
|
||||
;; This does a depth-first search to find all functions that can
|
||||
;; ultimately call the function "target". The result is an a-list
|
||||
;; in find-gc-unsafe-list; the cars are the unsafe functions, and the cdrs
|
||||
;; are (one of) the unsafe functions that these functions directly
|
||||
;; call.
|
||||
;;; This does a depth-first search to find all functions that can
|
||||
;;; ultimately call the function "target". The result is an a-list
|
||||
;;; in find-gc-unsafe-list; the cars are the unsafe functions, and the cdrs
|
||||
;;; are (one of) the unsafe functions that these functions directly
|
||||
;;; call.
|
||||
|
||||
(defun find-unsafe-funcs (target)
|
||||
(setq find-gc-unsafe-list (list (list target)))
|
||||
|
|
@ -100,7 +100,7 @@ Also store it in `find-gc-unsafe-list'."
|
|||
|
||||
|
||||
|
||||
(defun trace-call-tree (&optional _ignored)
|
||||
(defun trace-call-tree (&optional ignored)
|
||||
(message "Setting up directories...")
|
||||
(setq find-gc-subrs-called nil)
|
||||
(let ((case-fold-search nil)
|
||||
|
|
@ -134,8 +134,7 @@ Also store it in `find-gc-unsafe-list'."
|
|||
(setcdr entry (cons name (cdr entry)))))))))))))
|
||||
|
||||
(defun trace-use-tree ()
|
||||
(setq find-gc-subrs-callers
|
||||
(mapcar #'list (mapcar #'car find-gc-subrs-called)))
|
||||
(setq find-gc-subrs-callers (mapcar 'list (mapcar 'car find-gc-subrs-called)))
|
||||
(let ((ptr find-gc-subrs-called)
|
||||
p2 found)
|
||||
(while ptr
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,14 +1,12 @@
|
|||
;;; gitmerge.el --- help merge one Emacs branch into another -*- lexical-binding: t; -*-
|
||||
;;; gitmerge.el --- help merge one Emacs branch into another
|
||||
|
||||
;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2010-2019 Free Software Foundation, Inc.
|
||||
|
||||
;; Authors: David Engster <deng@randomsample.de>
|
||||
;; Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
;; Keywords: maint
|
||||
|
||||
;; 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
|
||||
|
|
@ -37,10 +35,10 @@
|
|||
;; up-to-date).
|
||||
;; - Mark commits you'd like to skip, meaning to only merge their
|
||||
;; metadata (merge strategy 'ours').
|
||||
;; - Hit 'm' to start merging. Skipped commits will be merged separately.
|
||||
;; - Hit 'm' to start merging. Skipped commits will be merged separately.
|
||||
;; - If conflicts cannot be resolved automatically, you'll have to do
|
||||
;; it manually. In that case, resolve the conflicts and restart
|
||||
;; gitmerge, which will automatically resume. It will add resolved
|
||||
;; it manually. In that case, resolve the conflicts and restart
|
||||
;; gitmerge, which will automatically resume. It will add resolved
|
||||
;; files, commit the pending merge and continue merging the rest.
|
||||
;; - Inspect master branch, and if everything looks OK, push.
|
||||
|
||||
|
|
@ -54,7 +52,7 @@
|
|||
;; caused false positives. --Stef
|
||||
(let ((skip "back[- ]?port\\|cherry picked from commit\\|\
|
||||
\\(do\\( no\\|n['’]\\)t\\|no need to\\) merge\\|not to be merged\\|\
|
||||
bump Emacs version\\|Auto-commit"))
|
||||
bump \\(Emacs \\)?version\\|Auto-commit"))
|
||||
(if noninteractive skip
|
||||
;; "Regenerate" is quite prone to false positives.
|
||||
;; We only want to skip merging things like AUTHORS and ldefs-boot.
|
||||
|
|
@ -68,7 +66,8 @@ bump Emacs version\\|Auto-commit"))
|
|||
(defvar gitmerge-minimum-missing 10
|
||||
"Minimum number of missing commits to consider merging in batch mode.")
|
||||
|
||||
(defvar gitmerge-status-file (locate-user-emacs-file "gitmerge-status")
|
||||
(defvar gitmerge-status-file (expand-file-name "gitmerge-status"
|
||||
user-emacs-directory)
|
||||
"File where missing commits will be saved between sessions.")
|
||||
|
||||
(defvar gitmerge-ignore-branches-regexp
|
||||
|
|
@ -97,14 +96,11 @@ If nil, the function `gitmerge-default-branch' guesses.")
|
|||
|
||||
(defvar gitmerge-mode-map
|
||||
(let ((map (make-keymap)))
|
||||
(define-key map [(l)] #'gitmerge-show-log)
|
||||
(define-key map [(d)] #'gitmerge-show-diff)
|
||||
(define-key map [(f)] #'gitmerge-show-files)
|
||||
(define-key map [(s)] #'gitmerge-toggle-skip)
|
||||
(define-key map [(m)] #'gitmerge-start-merge)
|
||||
;; For convenience:
|
||||
(define-key map [(n)] #'next-line)
|
||||
(define-key map [(p)] #'previous-line)
|
||||
(define-key map [(l)] 'gitmerge-show-log)
|
||||
(define-key map [(d)] 'gitmerge-show-diff)
|
||||
(define-key map [(f)] 'gitmerge-show-files)
|
||||
(define-key map [(s)] 'gitmerge-toggle-skip)
|
||||
(define-key map [(m)] 'gitmerge-start-merge)
|
||||
map)
|
||||
"Keymap for gitmerge major mode.")
|
||||
|
||||
|
|
@ -124,21 +120,20 @@ If nil, the function `gitmerge-default-branch' guesses.")
|
|||
(with-temp-buffer
|
||||
(if (not branch)
|
||||
(insert-file-contents "configure.ac")
|
||||
(let ((coding-system-for-read vc-git-log-output-coding-system))
|
||||
(call-process "git" nil t nil "show" (format "%s:configure.ac" branch)))
|
||||
(call-process "git" nil t nil "show" (format "%s:configure.ac" branch))
|
||||
(goto-char (point-min)))
|
||||
(re-search-forward "^AC_INIT([^,]+, \\[?\\([0-9]+\\)\\.")
|
||||
(re-search-forward "^AC_INIT([^,]+, \\([0-9]+\\)\\.")
|
||||
(string-to-number (match-string 1))))
|
||||
|
||||
(defun gitmerge-default-branch ()
|
||||
"Default for branch that should be merged; e.g. \"origin/emacs-28\"."
|
||||
"Default for branch that should be merged; eg \"origin/emacs-26\"."
|
||||
(or gitmerge-default-branch
|
||||
(format "origin/emacs-%s" (1- (gitmerge-emacs-version)))))
|
||||
|
||||
(defun gitmerge-get-sha1 ()
|
||||
"Get SHA1 from commit at point."
|
||||
(save-excursion
|
||||
(goto-char (line-beginning-position))
|
||||
(goto-char (point-at-bol))
|
||||
(when (looking-at "^[A-Z ]\\s-*\\([a-f0-9]+\\)")
|
||||
(match-string 1))))
|
||||
|
||||
|
|
@ -151,8 +146,7 @@ If nil, the function `gitmerge-default-branch' guesses.")
|
|||
(pop-to-buffer (get-buffer-create gitmerge-output-buffer))
|
||||
(fundamental-mode)
|
||||
(erase-buffer)
|
||||
(let ((coding-system-for-read vc-git-log-output-coding-system))
|
||||
(call-process "git" nil t nil "log" "-1" commit))
|
||||
(call-process "git" nil t nil "log" "-1" commit)
|
||||
(goto-char (point-min))
|
||||
(gitmerge-highlight-skip-regexp)))))
|
||||
|
||||
|
|
@ -164,8 +158,7 @@ If nil, the function `gitmerge-default-branch' guesses.")
|
|||
(when commit
|
||||
(pop-to-buffer (get-buffer-create gitmerge-output-buffer))
|
||||
(erase-buffer)
|
||||
(let ((coding-system-for-read vc-git-log-output-coding-system))
|
||||
(call-process "git" nil t nil "diff-tree" "-p" commit))
|
||||
(call-process "git" nil t nil "diff-tree" "-p" commit)
|
||||
(goto-char (point-min))
|
||||
(diff-mode)))))
|
||||
|
||||
|
|
@ -178,9 +171,7 @@ If nil, the function `gitmerge-default-branch' guesses.")
|
|||
(pop-to-buffer (get-buffer-create gitmerge-output-buffer))
|
||||
(erase-buffer)
|
||||
(fundamental-mode)
|
||||
(let ((coding-system-for-read vc-git-log-output-coding-system))
|
||||
(call-process "git" nil t nil "diff" "--name-only"
|
||||
(concat commit "^!")))
|
||||
(call-process "git" nil t nil "diff" "--name-only" (concat commit "^!"))
|
||||
(goto-char (point-min))))))
|
||||
|
||||
(defun gitmerge-toggle-skip ()
|
||||
|
|
@ -190,7 +181,7 @@ If nil, the function `gitmerge-default-branch' guesses.")
|
|||
skip)
|
||||
(when commit
|
||||
(save-excursion
|
||||
(goto-char (line-beginning-position))
|
||||
(goto-char (point-at-bol))
|
||||
(when (looking-at "^\\([A-Z ]\\)\\s-*\\([a-f0-9]+\\)")
|
||||
(setq skip (string= (match-string 1) " "))
|
||||
(goto-char (match-beginning 2))
|
||||
|
|
@ -198,7 +189,7 @@ If nil, the function `gitmerge-default-branch' guesses.")
|
|||
(dolist (ct gitmerge--commits)
|
||||
(when (string-match commit (car ct))
|
||||
(setcdr ct (when skip "M"))))
|
||||
(goto-char (line-beginning-position))
|
||||
(goto-char (point-at-bol))
|
||||
(setq buffer-read-only nil)
|
||||
(delete-char 1)
|
||||
(insert (if skip "M" " "))
|
||||
|
|
@ -223,10 +214,9 @@ if and why this commit should be skipped."
|
|||
;; Go through the log and remember all commits that match
|
||||
;; `gitmerge-skip-regexp' or are marked by --cherry-mark.
|
||||
(with-temp-buffer
|
||||
(let ((coding-system-for-read vc-git-log-output-coding-system))
|
||||
(call-process "git" nil t nil "log" "--cherry-mark" "--left-only"
|
||||
"--no-decorate"
|
||||
(concat from "..." (car (vc-git-branches)))))
|
||||
(call-process "git" nil t nil "log" "--cherry-mark" "--left-only"
|
||||
"--no-decorate"
|
||||
(concat from "..." (car (vc-git-branches))))
|
||||
(goto-char (point-max))
|
||||
(while (re-search-backward "^commit \\(.+\\) \\([0-9a-f]+\\).*" nil t)
|
||||
(let ((cherrymark (match-string 1))
|
||||
|
|
@ -249,10 +239,9 @@ if and why this commit should be skipped."
|
|||
"Create the buffer for choosing commits."
|
||||
(with-current-buffer (get-buffer-create gitmerge-buffer)
|
||||
(erase-buffer)
|
||||
(let ((coding-system-for-read vc-git-log-output-coding-system))
|
||||
(call-process "git" nil t nil "log" "--left-only"
|
||||
"--pretty=format:%h %<(20,trunc) %an: %<(100,trunc) %s"
|
||||
(concat from "..." (car (vc-git-branches)))))
|
||||
(call-process "git" nil t nil "log" "--left-only"
|
||||
"--pretty=format:%h %<(20,trunc) %an: %<(100,trunc) %s"
|
||||
(concat from "..." (car (vc-git-branches))))
|
||||
(goto-char (point-min))
|
||||
(while (looking-at "^\\([a-f0-9]+\\)")
|
||||
(let ((skipreason (gitmerge-skip-commit-p (match-string 1) commits)))
|
||||
|
|
@ -293,7 +282,7 @@ should not be skipped."
|
|||
"Try to resolve conflicts in FILE with smerge.
|
||||
Returns non-nil if conflicts remain."
|
||||
(unless (file-exists-p file) (error "Gitmerge-resolve: Can't find %s" file))
|
||||
(with-demoted-errors "Error: %S"
|
||||
(with-demoted-errors
|
||||
(let ((exists (find-buffer-visiting file)))
|
||||
(with-current-buffer (let ((enable-local-variables :safe)
|
||||
(enable-local-eval nil))
|
||||
|
|
@ -305,7 +294,7 @@ Returns non-nil if conflicts remain."
|
|||
((derived-mode-p 'change-log-mode)
|
||||
;; Fix up dates before resolving the conflicts.
|
||||
(goto-char (point-min))
|
||||
(let ((diff-refine nil))
|
||||
(let ((diff-auto-refine-mode nil))
|
||||
(while (re-search-forward smerge-begin-re nil t)
|
||||
(smerge-match-conflict)
|
||||
(smerge-ensure-match 3)
|
||||
|
|
@ -335,8 +324,7 @@ Returns non-nil if conflicts remain."
|
|||
;; (pop-to-buffer (current-buffer)) (debug 'before-resolve)
|
||||
))
|
||||
;; Try to resolve the conflicts.
|
||||
(let ((coding-system-for-read vc-git-log-output-coding-system)
|
||||
temp)
|
||||
(let (temp)
|
||||
(cond
|
||||
;; FIXME when merging release branch to master, we still
|
||||
;; need to detect and handle the case where NEWS was modified
|
||||
|
|
@ -366,7 +354,7 @@ Returns non-nil if conflicts remain."
|
|||
;; The conflict markers remain so we return non-nil.
|
||||
(message "Failed to fix NEWS conflict"))))
|
||||
;; Generated files.
|
||||
((member file '("lisp/ldefs-boot.el" "etc/AUTHORS"))
|
||||
((member file '("lisp/ldefs-boot.el"))
|
||||
;; We are in the file's buffer, so names are relative.
|
||||
(call-process "git" nil t nil "reset" "--"
|
||||
(file-name-nondirectory file))
|
||||
|
|
@ -402,10 +390,9 @@ is nil, only the single commit BEG is merged."
|
|||
(if end "s were " " was ")
|
||||
"skipped:\n\n")
|
||||
""))
|
||||
(let ((coding-system-for-read vc-git-log-output-coding-system))
|
||||
(apply #'call-process "git" nil t nil "log" "--oneline"
|
||||
(if end (list (concat beg "~.." end))
|
||||
`("-1" ,beg))))
|
||||
(apply 'call-process "git" nil t nil "log" "--oneline"
|
||||
(if end (list (concat beg "~.." end))
|
||||
`("-1" ,beg)))
|
||||
(insert "\n")
|
||||
;; Truncate to 72 chars so that the resulting ChangeLog line fits in 80.
|
||||
(goto-char (point-min))
|
||||
|
|
@ -419,9 +406,8 @@ MISSING must be a list of SHA1 strings."
|
|||
(with-current-buffer (get-buffer-create gitmerge-output-buffer)
|
||||
(erase-buffer)
|
||||
(let* ((skip (cdar missing))
|
||||
(coding-system-for-read vc-git-log-output-coding-system)
|
||||
(beg (car (pop missing)))
|
||||
end commitmessage commitmessage1 commitmessage-file status)
|
||||
end commitmessage)
|
||||
;; Determine last revision with same boolean skip status.
|
||||
(while (and missing
|
||||
(eq (null (cdar missing))
|
||||
|
|
@ -435,32 +421,12 @@ MISSING must be a list of SHA1 strings."
|
|||
(if end (concat ".." (substring end 0 6)) ""))
|
||||
(unless end
|
||||
(setq end beg))
|
||||
(when (eq system-type 'windows-nt)
|
||||
;; Command lines on MS-Windows cannot include newlines.
|
||||
;; Since "git merge" doesn't accept a -F FILE option, we
|
||||
;; commit the merge with a shortened single-line log message,
|
||||
;; and then invoke "git commit --amend" with the full log
|
||||
;; message from a temporary file.
|
||||
(setq commitmessage1
|
||||
;; Make sure the commit message is at most a single line.
|
||||
(car (split-string commitmessage "[\f\n\r\v]+")))
|
||||
(setq commitmessage-file (make-nearby-temp-file "gitmerge-msg"))
|
||||
(let ((coding-system-for-write vc-git-commits-coding-system))
|
||||
(write-region commitmessage nil commitmessage-file nil 'silent)))
|
||||
(unless (setq status
|
||||
(zerop
|
||||
(apply #'call-process "git" nil t nil "merge" "--no-ff"
|
||||
(append (when skip '("-s" "ours"))
|
||||
(if commitmessage-file
|
||||
`("-m" ,commitmessage1 ,end)
|
||||
`("-m" ,commitmessage ,end))))))
|
||||
(unless (zerop
|
||||
(apply 'call-process "git" nil t nil "merge" "--no-ff"
|
||||
(append (when skip '("-s" "ours"))
|
||||
`("-m" ,commitmessage ,end))))
|
||||
(gitmerge-write-missing missing from)
|
||||
(gitmerge-resolve-unmerged))
|
||||
(when (and commitmessage-file (file-exists-p commitmessage-file))
|
||||
(if status
|
||||
(call-process "git" nil t nil
|
||||
"commit" "--amend" "-F" commitmessage-file))
|
||||
(delete-file commitmessage-file)))
|
||||
(gitmerge-resolve-unmerged)))
|
||||
missing))
|
||||
|
||||
(defun gitmerge-resolve-unmerged ()
|
||||
|
|
@ -468,13 +434,12 @@ MISSING must be a list of SHA1 strings."
|
|||
Throw an user-error if we cannot resolve automatically."
|
||||
(with-current-buffer (get-buffer-create gitmerge-output-buffer)
|
||||
(erase-buffer)
|
||||
(let ((coding-system-for-read vc-git-log-output-coding-system)
|
||||
files conflicted)
|
||||
(let (files conflicted)
|
||||
;; List unmerged files
|
||||
(if (not (zerop
|
||||
(call-process "git" nil t nil
|
||||
"diff" "--name-only" "--diff-filter=U")))
|
||||
(error "Error listing unmerged files. Resolve manually.")
|
||||
(error "Error listing unmerged files. Resolve manually.")
|
||||
(goto-char (point-min))
|
||||
(while (not (eobp))
|
||||
(push (buffer-substring (point) (line-end-position)) files)
|
||||
|
|
@ -512,19 +477,17 @@ Throw an user-error if we cannot resolve automatically."
|
|||
(defun gitmerge-repo-clean ()
|
||||
"Return non-nil if repository is clean."
|
||||
(with-temp-buffer
|
||||
(let ((coding-system-for-read vc-git-log-output-coding-system))
|
||||
(call-process "git" nil t nil
|
||||
"diff" "--staged" "--name-only")
|
||||
(call-process "git" nil t nil
|
||||
"diff" "--name-only")
|
||||
(zerop (buffer-size)))))
|
||||
(zerop (buffer-size))))
|
||||
|
||||
(defun gitmerge-commit ()
|
||||
"Commit, and return non-nil if it succeeds."
|
||||
(with-current-buffer (get-buffer-create gitmerge-output-buffer)
|
||||
(let ((coding-system-for-read vc-git-log-output-coding-system))
|
||||
(erase-buffer)
|
||||
(eq 0 (call-process "git" nil t nil "commit" "--no-edit")))))
|
||||
(erase-buffer)
|
||||
(eq 0 (call-process "git" nil t nil "commit" "--no-edit"))))
|
||||
|
||||
(defun gitmerge-maybe-resume ()
|
||||
"Check if we have to resume a merge.
|
||||
|
|
@ -634,18 +597,12 @@ Branch FROM will be prepended to the list."
|
|||
(with-current-buffer
|
||||
(gitmerge-setup-log-buffer gitmerge--commits gitmerge--from)
|
||||
(goto-char (point-min))
|
||||
(insert (substitute-command-keys
|
||||
(concat
|
||||
(propertize "Commands: " 'font-lock-face 'bold)
|
||||
"\\<gitmerge-mode-map>"
|
||||
"(\\[gitmerge-toggle-skip]) Toggle skip, "
|
||||
"(\\[gitmerge-show-log]) Show log, "
|
||||
"(\\[gitmerge-show-diff]) Show diff, "
|
||||
"(\\[gitmerge-show-files]) Show files, "
|
||||
"(\\[gitmerge-start-merge]) Start merge\n"
|
||||
(propertize "Flags: " 'font-lock-face 'bold)
|
||||
"(C) Detected backport (cherry-mark), (R) Matches skip "
|
||||
"regexp, (M) Manually picked\n\n")))
|
||||
(insert (propertize "Commands: " 'font-lock-face 'bold)
|
||||
"(s) Toggle skip, (l) Show log, (d) Show diff, "
|
||||
"(f) Show files, (m) Start merge\n"
|
||||
(propertize "Flags: " 'font-lock-face 'bold)
|
||||
"(C) Detected backport (cherry-mark), (R) Log matches "
|
||||
"regexp, (M) Manually picked\n\n")
|
||||
(gitmerge-mode)
|
||||
(pop-to-buffer (current-buffer))
|
||||
(if noninteractive (gitmerge-start-merge))))))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
### @configure_input@
|
||||
|
||||
## Copyright (C) 2013-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2013-2019 Free Software Foundation, Inc.
|
||||
|
||||
## This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -28,14 +28,24 @@ srcdir = @srcdir@
|
|||
top_srcdir = @top_srcdir@
|
||||
top_builddir = @top_builddir@
|
||||
|
||||
-include ${top_builddir}/src/verbose.mk
|
||||
# 'make' verbosity.
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
|
||||
# Prevent any settings in the user environment causing problems.
|
||||
unexport EMACSDATA EMACSDOC EMACSLOADPATH EMACSPATH
|
||||
unexport EMACSDATA EMACSDOC EMACSPATH
|
||||
|
||||
EMACS = ${top_builddir}/src/emacs
|
||||
emacs = "${EMACS}" -batch --no-site-file --no-site-lisp \
|
||||
--eval '(setq load-prefer-newer t)'
|
||||
emacs = EMACSLOADPATH= "${EMACS}" -batch --no-site-file --no-site-lisp
|
||||
|
||||
make_bovine = ${emacs} -l semantic/bovine/grammar -f bovine-batch-make-parser
|
||||
make_wisent = ${emacs} -l semantic/wisent/grammar -f wisent-batch-make-parser
|
||||
|
|
@ -44,19 +54,19 @@ cedetdir = ${top_srcdir}/lisp/cedet
|
|||
bovinedir = ${cedetdir}/semantic/bovine
|
||||
wisentdir = ${cedetdir}/semantic/wisent
|
||||
|
||||
grammar_bovine = ${bovinedir}/grammar.el
|
||||
grammar_wisent = ${wisentdir}/grammar.el
|
||||
|
||||
BOVINE = \
|
||||
${bovinedir}/c-by.el \
|
||||
${bovinedir}/make-by.el \
|
||||
${bovinedir}/scm-by.el
|
||||
|
||||
WISENT = \
|
||||
${cedetdir}/semantic/grammar-wy.el \
|
||||
${wisentdir}/javat-wy.el \
|
||||
${wisentdir}/js-wy.el \
|
||||
${wisentdir}/python-wy.el \
|
||||
## FIXME Should include this one too:
|
||||
## ${cedetdir}/semantic/grammar-wy.el
|
||||
## but semantic/grammar.el (which is what we use to generate grammar-wy.el)
|
||||
## requires it!
|
||||
WISENT = \
|
||||
${wisentdir}/javat-wy.el \
|
||||
${wisentdir}/js-wy.el \
|
||||
${wisentdir}/python-wy.el \
|
||||
${cedetdir}/srecode/srt-wy.el
|
||||
|
||||
ALL = ${BOVINE} ${WISENT}
|
||||
|
|
@ -70,45 +80,46 @@ bovine: ${BOVINE}
|
|||
wisent: ${WISENT}
|
||||
|
||||
## c-by.el, make-by.el.
|
||||
${bovinedir}/%-by.el: ${srcdir}/%.by ${grammar_bovine}
|
||||
${bovinedir}/%-by.el: ${srcdir}/%.by
|
||||
$(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@"
|
||||
$(AM_V_at)${make_bovine} -o "$@" $<
|
||||
|
||||
${bovinedir}/scm-by.el: ${srcdir}/scheme.by ${grammar_bovine}
|
||||
${bovinedir}/scm-by.el: ${srcdir}/scheme.by
|
||||
$(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@"
|
||||
$(AM_V_at)${make_bovine} -o "$@" $<
|
||||
|
||||
## grammar-wy.el
|
||||
${cedetdir}/semantic/%-wy.el: ${srcdir}/%.wy ${grammar_wisent}
|
||||
${cedetdir}/semantic/%-wy.el: ${srcdir}/%.wy
|
||||
$(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@"
|
||||
$(AM_V_at)${make_wisent} -o "$@" $<
|
||||
|
||||
## js-wy.el, python-wy.el
|
||||
${wisentdir}/%-wy.el: ${srcdir}/%.wy ${grammar_wisent}
|
||||
${wisentdir}/%-wy.el: ${srcdir}/%.wy
|
||||
$(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@"
|
||||
$(AM_V_at)${make_wisent} -o "$@" $<
|
||||
|
||||
${wisentdir}/javat-wy.el: ${srcdir}/java-tags.wy ${grammar_wisent}
|
||||
${wisentdir}/javat-wy.el: ${srcdir}/java-tags.wy
|
||||
$(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@"
|
||||
$(AM_V_at)${make_wisent} -o "$@" $<
|
||||
|
||||
${cedetdir}/srecode/srt-wy.el: ${srcdir}/srecode-template.wy ${grammar_wisent}
|
||||
${cedetdir}/srecode/srt-wy.el: ${srcdir}/srecode-template.wy
|
||||
$(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@"
|
||||
$(AM_V_at)${make_wisent} -o "$@" $<
|
||||
|
||||
.PHONY: distclean bootstrap-clean maintainer-clean gen-clean
|
||||
|
||||
.PHONY: distclean bootstrap-clean maintainer-clean extraclean
|
||||
|
||||
distclean:
|
||||
rm -f Makefile
|
||||
|
||||
## IMO this should run gen-clean.
|
||||
## Perhaps this should do what extraclean (qv) does.
|
||||
bootstrap-clean:
|
||||
|
||||
gen-clean:
|
||||
maintainer-clean: distclean
|
||||
|
||||
## We do not normally delete the generated files, even in bootstrap.
|
||||
## Creating them does not take long, so we could easily change this.
|
||||
extraclean:
|
||||
rm -f ${ALL}
|
||||
|
||||
maintainer-clean: gen-clean distclean
|
||||
|
||||
|
||||
|
||||
# Makefile.in ends here
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
;;; c.by -- LL grammar for C/C++ language specification
|
||||
;; Copyright (C) 1999-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1999-2019 Free Software Foundation, Inc.
|
||||
;;
|
||||
;; Author: Eric M. Ludlam <zappo@gnu.org>
|
||||
;; David Ponce <david@dponce.com>
|
||||
|
|
@ -187,7 +187,7 @@
|
|||
|
||||
;; Types
|
||||
%token VOID "void"
|
||||
%put VOID summary "Built in type: void"
|
||||
%put VOID summary "Built in typeless type: void"
|
||||
%token CHAR "char"
|
||||
%put CHAR summary "Integral Character Type: (0 to 256)"
|
||||
%token WCHAR "wchar_t"
|
||||
|
|
@ -415,7 +415,7 @@ typesimple
|
|||
: struct-or-class opt-class opt-name opt-template-specifier
|
||||
opt-class-parents semantic-list
|
||||
(TYPE-TAG (car $3) (car $1)
|
||||
(dlet ((semantic-c-classname (cons (car ,$3) (car ,$1))))
|
||||
(let ((semantic-c-classname (cons (car ,$3) (car ,$1))))
|
||||
(EXPANDFULL $6 classsubparts))
|
||||
$5
|
||||
:template-specifier $4
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
;;; semantic-grammar.wy -- LALR grammar of Semantic input grammars
|
||||
;;
|
||||
;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2002-2019 Free Software Foundation, Inc.
|
||||
;;
|
||||
;; Author: David Ponce <david@dponce.com>
|
||||
;; Maintainer: David Ponce <david@dponce.com>
|
||||
;; Created: 26 Aug 2002
|
||||
;; Keywords: syntax
|
||||
;; X-RCS: $Id: semantic-grammar.wy,v 1.16 2005/09/30 20:20:27 zappo Exp $
|
||||
|
|
@ -52,7 +53,6 @@
|
|||
%keyword LEFT "%left"
|
||||
%keyword NONASSOC "%nonassoc"
|
||||
%keyword PACKAGE "%package"
|
||||
%keyword EXPECTEDCONFLICTS "%expectedconflicts"
|
||||
%keyword PROVIDE "%provide"
|
||||
%keyword PREC "%prec"
|
||||
%keyword PUT "%put"
|
||||
|
|
@ -128,7 +128,7 @@ epilogue:
|
|||
;;
|
||||
declaration:
|
||||
decl
|
||||
(eval $1 t)
|
||||
(eval $1)
|
||||
;
|
||||
|
||||
decl:
|
||||
|
|
@ -136,7 +136,6 @@ decl:
|
|||
| no_default_prec_decl
|
||||
| languagemode_decl
|
||||
| package_decl
|
||||
| expectedconflicts_decl
|
||||
| provide_decl
|
||||
| precedence_decl
|
||||
| put_decl
|
||||
|
|
@ -169,11 +168,6 @@ package_decl:
|
|||
`(PACKAGE-TAG ',$2 nil)
|
||||
;
|
||||
|
||||
expectedconflicts_decl:
|
||||
EXPECTEDCONFLICTS symbols
|
||||
`(TAG ',(car $2) 'expectedconflicts :rest ',(cdr $2))
|
||||
;
|
||||
|
||||
provide_decl:
|
||||
PROVIDE SYMBOL
|
||||
`(TAG ',$2 'provide)
|
||||
|
|
@ -206,7 +200,7 @@ put_decl:
|
|||
|
||||
put_name_list:
|
||||
BRACE_BLOCK
|
||||
(mapcar #'semantic-tag-name (EXPANDFULL $1 put_names))
|
||||
(mapcar 'semantic-tag-name (EXPANDFULL $1 put_names))
|
||||
;
|
||||
|
||||
put_names:
|
||||
|
|
@ -226,7 +220,7 @@ put_name:
|
|||
|
||||
put_value_list:
|
||||
BRACE_BLOCK
|
||||
(mapcar #'semantic-tag-code-detail (EXPANDFULL $1 put_values))
|
||||
(mapcar 'semantic-tag-code-detail (EXPANDFULL $1 put_values))
|
||||
;
|
||||
|
||||
put_values:
|
||||
|
|
@ -300,7 +294,7 @@ plist:
|
|||
|
||||
use_name_list:
|
||||
BRACE_BLOCK
|
||||
(mapcar #'semantic-tag-name (EXPANDFULL $1 use_names))
|
||||
(mapcar 'semantic-tag-name (EXPANDFULL $1 use_names))
|
||||
;
|
||||
|
||||
use_names:
|
||||
|
|
@ -356,7 +350,7 @@ nonterminal:
|
|||
|
||||
rules:
|
||||
lifo_rules
|
||||
(apply #'nconc (nreverse $1))
|
||||
(apply 'nconc (nreverse $1))
|
||||
;
|
||||
|
||||
lifo_rules:
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
;;; java-tags.wy -- Semantic LALR grammar for Java
|
||||
|
||||
;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2002-2019 Free Software Foundation, Inc.
|
||||
;;
|
||||
;; Author: David Ponce <david@dponce.com>
|
||||
;; Maintainer: David Ponce <david@dponce.com>
|
||||
;; Created: 26 Aug 2002
|
||||
;; Keywords: syntax
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; javascript-jv.wy -- LALR grammar for Javascript
|
||||
|
||||
;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2005-2019 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1998-2011 Ecma International.
|
||||
|
||||
;; Author: Joakim Verona
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
;; The grammar itself is transcribed from the ECMAScript Language
|
||||
;; Specification published at
|
||||
;;
|
||||
;; https://www.ecma-international.org/publications/standards/Ecma-262.htm
|
||||
;; http://www.ecma-international.org/publications/standards/Ecma-262.htm
|
||||
;;
|
||||
;; and redistributed under the following license:
|
||||
|
||||
|
|
@ -236,9 +236,9 @@
|
|||
%token <number> NUMBER
|
||||
|
||||
|
||||
%token <false> FALSE
|
||||
%token <true> TRUE
|
||||
%token <query> QUERY
|
||||
%token FALSE
|
||||
%token TRUE
|
||||
%token QUERY
|
||||
|
||||
|
||||
%token NULL_TOKEN
|
||||
|
|
@ -296,11 +296,19 @@ FormalParameterList: OPEN_PARENTHESIS
|
|||
()
|
||||
;
|
||||
|
||||
StatementList : Statement
|
||||
| StatementList Statement
|
||||
;
|
||||
|
||||
Block : BRACE_BLOCK
|
||||
;; If you want to parse the body of the function
|
||||
;; ( EXPANDFULL $1 BlockExpand )
|
||||
;
|
||||
|
||||
BlockExpand: START_BLOCK StatementList END_BLOCK
|
||||
| START_BLOCK END_BLOCK
|
||||
;
|
||||
|
||||
VariableStatement : VAR VariableDeclarationList SEMICOLON
|
||||
(VARIABLE-TAG $2 nil nil)
|
||||
;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; make.by -- BY notation for Makefiles.
|
||||
|
||||
;; Copyright (C) 1999-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1999-2019 Free Software Foundation, Inc.
|
||||
;;
|
||||
;; Author: Eric M. Ludlam <zappo@gnu.org>
|
||||
;; David Ponce <david@dponce.com>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
;;; python.wy -- LALR grammar for Python
|
||||
|
||||
;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2002-2019 Free Software Foundation, Inc.
|
||||
;; Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
|
||||
;; 2009, 2010 Python Software Foundation; All Rights Reserved
|
||||
|
||||
;; Author: Richard Kim <ryk@dspwiz.com>
|
||||
;; Maintainer: Richard Kim <ryk@dspwiz.com>
|
||||
;; Created: June 2002
|
||||
;; Keywords: syntax
|
||||
;;
|
||||
|
|
@ -88,17 +89,14 @@
|
|||
|
||||
%package wisent-python-wy
|
||||
%provide semantic/wisent/python-wy
|
||||
%expectedconflicts 5
|
||||
|
||||
%{
|
||||
(require 'semantic/tag)
|
||||
(declare-function wisent-python-reconstitute-function-tag
|
||||
"semantic/wisent/python" (tag suite))
|
||||
(declare-function wisent-python-reconstitute-class-tag "semantic/wisent/python"
|
||||
(tag))
|
||||
(declare-function semantic-parse-region "semantic"
|
||||
(start end &optional nonterminal depth returnonerror))
|
||||
(defvar wisent-python-EXPANDING-block)
|
||||
}
|
||||
|
||||
%languagemode python-mode
|
||||
|
|
@ -186,7 +184,6 @@
|
|||
%token <punctuation> ASSIGN "="
|
||||
%token <punctuation> BACKQUOTE "`"
|
||||
%token <punctuation> AT "@"
|
||||
%token <punctuation> FOLLOWS "->"
|
||||
|
||||
|
||||
;; -----------------
|
||||
|
|
@ -811,17 +808,12 @@ decorators
|
|||
|
||||
;; funcdef: [decorators] 'def' NAME parameters ':' suite
|
||||
funcdef
|
||||
: DEF NAME function_parameter_list return_type_hint COLON suite
|
||||
: DEF NAME function_parameter_list COLON suite
|
||||
(wisent-python-reconstitute-function-tag
|
||||
(FUNCTION-TAG $2 nil $3) $6)
|
||||
| decorators DEF NAME function_parameter_list return_type_hint COLON suite
|
||||
(FUNCTION-TAG $2 nil $3) $5)
|
||||
| decorators DEF NAME function_parameter_list COLON suite
|
||||
(wisent-python-reconstitute-function-tag
|
||||
(FUNCTION-TAG $3 nil $4 :decorators $1) $7)
|
||||
;
|
||||
|
||||
return_type_hint
|
||||
: ;;EMPTY
|
||||
| FOLLOWS type
|
||||
(FUNCTION-TAG $3 nil $4 :decorators $1) $6)
|
||||
;
|
||||
|
||||
function_parameter_list
|
||||
|
|
@ -873,7 +865,7 @@ paren_class_list_opt
|
|||
paren_class_list
|
||||
: PAREN_BLOCK
|
||||
(let ((wisent-python-EXPANDING-block t))
|
||||
(mapcar #'semantic-tag-name (EXPANDFULL $1 paren_classes)))
|
||||
(mapcar 'semantic-tag-name (EXPANDFULL $1 paren_classes)))
|
||||
;
|
||||
|
||||
;; parameters: '(' [varargslist] ')'
|
||||
|
|
@ -895,7 +887,7 @@ paren_classes
|
|||
;; parser can parse general expressions, I don't see much benefit in
|
||||
;; generating a string of expression as base class "name".
|
||||
paren_class
|
||||
: type
|
||||
: dotted_name
|
||||
;
|
||||
|
||||
;;;****************************************************************************
|
||||
|
|
@ -1148,7 +1140,7 @@ fpdef_opt_test
|
|||
|
||||
;; fpdef: NAME | '(' fplist ')'
|
||||
fpdef
|
||||
: NAME type_hint
|
||||
: NAME
|
||||
(VARIABLE-TAG $1 nil nil)
|
||||
;; Below breaks the parser. Don't know why, but my guess is that
|
||||
;; LPAREN/RPAREN clashes with the ones in function_parameters.
|
||||
|
|
@ -1156,25 +1148,15 @@ fpdef
|
|||
;; (identity $2)
|
||||
;
|
||||
|
||||
;; These rules are now useless because the above rule doesn't refer to them.
|
||||
;; ;; fplist: fpdef (',' fpdef)* [',']
|
||||
;; fplist
|
||||
;; : fpdef_list comma_opt
|
||||
;; ;
|
||||
|
||||
;; ;; fpdef (',' fpdef)*
|
||||
;; fpdef_list
|
||||
;; : fpdef
|
||||
;; | fpdef_list COMMA fpdef
|
||||
;; ;
|
||||
|
||||
type_hint
|
||||
: ;;EMPTY
|
||||
| COLON type
|
||||
;; fplist: fpdef (',' fpdef)* [',']
|
||||
fplist
|
||||
: fpdef_list comma_opt
|
||||
;
|
||||
|
||||
type
|
||||
: test
|
||||
;; fpdef (',' fpdef)*
|
||||
fpdef_list
|
||||
: fpdef
|
||||
| fpdef_list COMMA fpdef
|
||||
;
|
||||
|
||||
;; ['=' test]
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; scheme.by -- Scheme BNF language specification
|
||||
|
||||
;; Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001-2019 Free Software Foundation, Inc.
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -72,8 +72,6 @@ scheme-in-list: DEFINE symbol expression
|
|||
(INCLUDE-TAG (file-name-nondirectory (read $2)) (read $2) )
|
||||
| symbol sequence
|
||||
(CODE-TAG $1 nil)
|
||||
| ;; No match, error
|
||||
(TAG "Bad Tag in Sexp" 'error)
|
||||
;
|
||||
|
||||
name-args: semantic-list
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
;;; srecode-template.wy --- Semantic Recoder Template parser
|
||||
|
||||
;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2005-2019 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Eric M. Ludlam <zappo@gnu.org>
|
||||
;; Author: Eric Ludlam <zappo@gnu.org>
|
||||
;; Keywords: syntax
|
||||
;; X-RCS: $Id: srecode-template.wy,v 1.10 2009-01-09 23:01:54 zappo Exp $
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ variable
|
|||
: SET symbol insertable-string-list newline
|
||||
(VARIABLE-TAG $2 nil $3)
|
||||
| SET symbol number newline
|
||||
;; This so a common error with priority works.
|
||||
;; This so a common error w/ priority works.
|
||||
;; Note that "number" still has a string value in the lexer.
|
||||
(VARIABLE-TAG $2 nil (list $3))
|
||||
| SHOW symbol newline
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; last-chance.el --- dangling deterrence -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2016-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2016-2019 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Thien-Thi Nguyen <ttn@gnu.org>
|
||||
;; Maintainer: emacs-devel@gnu.org
|
||||
|
|
@ -41,7 +41,7 @@
|
|||
;;
|
||||
;; will show you any references to `change-log-date-face' in the
|
||||
;; *.el files in a new buffer (in Grep mode). Hopefully you see
|
||||
;; only the obsolete declaration and can proceed with its removal.
|
||||
;; only the obsolete declaration and can proceed w/ its removal.
|
||||
;; If not, please DTRT and refrain from the removal until those
|
||||
;; references are properly transitioned.
|
||||
;;
|
||||
|
|
@ -105,14 +105,18 @@ defaulting to the one at point."
|
|||
"Symbol: " obarray
|
||||
nil nil
|
||||
one nil one)))))
|
||||
(with-current-buffer
|
||||
(let ((default-directory (or (vc-root-dir)
|
||||
default-directory)))
|
||||
(grep (format "%s %s"
|
||||
last-chance-grep-command
|
||||
symbol)))
|
||||
(add-hook 'compilation-finish-functions #'last-chance-cleanup nil t)
|
||||
(setq-local last-chance-symbol symbol)))
|
||||
(let ((default-directory (or (vc-root-dir)
|
||||
default-directory)))
|
||||
(grep (format "%s %s"
|
||||
last-chance-grep-command
|
||||
symbol)))
|
||||
(setf (buffer-local-value 'last-chance-symbol
|
||||
(process-buffer
|
||||
(car compilation-in-progress)))
|
||||
symbol))
|
||||
|
||||
(add-to-list 'compilation-finish-functions
|
||||
'last-chance-cleanup)
|
||||
|
||||
(provide 'last-chance)
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# Build Emacs with various options for profiling, debugging,
|
||||
# with and without warnings enabled etc.
|
||||
|
||||
# Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2019 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -109,7 +109,7 @@
|
|||
shift @ARGV;
|
||||
}
|
||||
|
||||
system ("$make clean") if $all;
|
||||
system ("$make clean versionclean") if $all;
|
||||
|
||||
if ($wall)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
#!/bin/bash
|
||||
### make-manuals - create the Emacs manuals to upload to the gnu.org website
|
||||
|
||||
## Copyright 2018-2023 Free Software Foundation, Inc.
|
||||
## Copyright 2018-2019 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Glenn Morris <rgm@gnu.org>
|
||||
## Maintainer: emacs-devel@gnu.org
|
||||
|
||||
## This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -33,7 +32,13 @@
|
|||
|
||||
### Code:
|
||||
|
||||
source "${0%/*}/emacs-shell-lib"
|
||||
die () # write error to stderr and exit
|
||||
{
|
||||
[ $# -gt 0 ] && echo "$PN: $@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
PN=${0##*/} # basename of script
|
||||
|
||||
usage ()
|
||||
{
|
||||
|
|
@ -88,7 +93,8 @@ OPTIND=1
|
|||
[ -e admin/admin.el ] || die "admin/admin.el not found"
|
||||
|
||||
|
||||
tempfile="$(emacs_mktemp)"
|
||||
tempfile=/tmp/$PN.$$
|
||||
trap "rm -f $tempfile 2> /dev/null" EXIT
|
||||
|
||||
|
||||
[ "$continue" ] || rm -rf $outdir
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Instructions to create pretest or release tarballs. -*- coding: utf-8 -*-
|
|||
|
||||
Steps to take before starting on the first pretest in any release sequence:
|
||||
|
||||
0. The release branch (e.g. emacs-28) should already have been made
|
||||
0. The release branch (e.g. emacs-26) should already have been made
|
||||
and you should use it for all that follows. Diffs from this
|
||||
branch should be going to the emacs-diffs mailing list.
|
||||
|
||||
|
|
@ -14,18 +14,17 @@ Steps to take before starting on the first pretest in any release sequence:
|
|||
|
||||
2. Consider increasing the value of the variable
|
||||
'customize-changed-options-previous-release' in cus-edit.el to
|
||||
refer to a newer version of Emacs. (This is now done when cutting
|
||||
the release branch, see admin/release-branch.txt, but it can't
|
||||
hurt to double check its value.) Commit cus-edit.el if changed.
|
||||
refer to a newer version of Emacs. (This is probably needed only
|
||||
when preparing the first pretest for a major Emacs release.)
|
||||
Commit cus-edit.el if changed.
|
||||
|
||||
3. Remove any old pretests from https://alpha.gnu.org/gnu/emacs/pretest.
|
||||
You can use 'gnupload --delete' (see below for more gnupload details).
|
||||
(We currently don't bother with this.)
|
||||
|
||||
General steps (for each step, check for possible errors):
|
||||
|
||||
1. git pull # fetch from the repository
|
||||
git status # check for locally modified files
|
||||
1. git pull # fetch from the repository
|
||||
git status # check for locally modified files
|
||||
|
||||
Ensure that you have a clean, unmodified state.
|
||||
If you switched in-place from another branch to the release branch,
|
||||
|
|
@ -34,116 +33,41 @@ General steps (for each step, check for possible errors):
|
|||
or some form of "git clean -x". It's probably simpler and safer to
|
||||
make a new working directory exclusively for the release branch.
|
||||
|
||||
If the working directory has subdirectories created when making
|
||||
previous releases or pretests, remove those subdirectories, as the
|
||||
command which updates the ChangeLog file might attempt to recurse
|
||||
there and scan any ChangeLog.* files there.
|
||||
|
||||
Make sure the tree is built, or at least configured. That's
|
||||
because some of the commands below run Make, so they need
|
||||
Makefiles to be present.
|
||||
|
||||
For Emacs 28 and later, as long as --with-native-compilation is
|
||||
not the default, the tree needs to be configured with
|
||||
native-compilation enabled, to ensure all the pertinent *.elc
|
||||
files will end up in the tarball. Otherwise, the *.eln files
|
||||
might not build correctly on the user's system.
|
||||
|
||||
./autogen.sh
|
||||
./configure --with-native-compilation && make
|
||||
|
||||
For a release (as opposed to pretest), visit etc/NEWS and use the
|
||||
"M-x emacs-news-delete-temporary-markers" command to delete any
|
||||
left-over "---" and "+++" markers from etc/NEWS, as well as the
|
||||
"Temporary note" section at the beginning of that file, and commit
|
||||
etc/NEWS if it was modified. For a bug fix release (e.g. 28.2),
|
||||
delete any empty headlines too.
|
||||
|
||||
2. Regenerate the versioned ChangeLog.N and etc/AUTHORS files.
|
||||
|
||||
The "M-x authors" command below will first update the current
|
||||
versioned ChangeLog.N file. For this to work correctly, make sure
|
||||
the top-level Makefile says
|
||||
|
||||
PREFERRED_BRANCH = emacs-NN
|
||||
|
||||
where NN is the version on the release branch from which you are
|
||||
producing the tarball. If NN is incorrect (which it usually is
|
||||
when starting a pretest of a new major release), update
|
||||
Makefile.in and re-run 'configure' to update Makefile.
|
||||
|
||||
For the first pretest of a new major release, consider starting a
|
||||
new top-level ChangeLog.N file if the last versioned ChangeLog.N
|
||||
file is too large. A good point to start a new ChangeLog.N file
|
||||
is when the last one gets larger than 1.5 MiB. If so, start a new
|
||||
one by bumping N, and also update the line in top-level
|
||||
Makefile.in which says
|
||||
|
||||
CHANGELOG_HISTORY_INDEX_MAX = N
|
||||
|
||||
by incrementing the value of N by 1; then regenerate Makefile.
|
||||
After bumping N, you need to actually create and commit
|
||||
ChangeLog.N with the updated N, otherwise "M-x authors" below will
|
||||
fail. The easiest way of creating the new ChangeLog.N is to
|
||||
rename the file ChangeLog (without the .N suffix) left over from
|
||||
the last major release (it is usually unversioned) and commit it.
|
||||
|
||||
Now:
|
||||
|
||||
2. Regenerate the etc/AUTHORS file:
|
||||
M-: (require 'authors) RET
|
||||
M-x authors RET
|
||||
|
||||
If this says "Problem updating ChangeLog", find the reason for the
|
||||
failure of the command it runs, viz.:
|
||||
(This first updates the current versioned ChangeLog.N)
|
||||
|
||||
make -C ROOT change-history-nocommit
|
||||
|
||||
(where ROOT is the top-level directory where you run this). It
|
||||
could be because there are uncommitted changes in ChangeLog.N, for
|
||||
example. One possible way forward is to invoke "C-u M-x authors",
|
||||
which will skip updating the versioned ChangeLog.N file.
|
||||
|
||||
After "M-x authors" finishes, if there is an "*Authors Errors*"
|
||||
buffer, address the issues. If there was a ChangeLog typo, fix
|
||||
the relevant entry. If a file was deleted or renamed, consider
|
||||
adding an appropriate entry to variables authors-ignored-files,
|
||||
authors-valid-file-names, or authors-renamed-files-alist in
|
||||
authors.el. If some authors are "ignored", consider adding
|
||||
entries to the author-aliases variable.
|
||||
If there is an "*Authors Errors*" buffer, address the issues.
|
||||
If there was a ChangeLog typo, fix the relevant entry.
|
||||
If a file was deleted or renamed, consider adding an appropriate
|
||||
entry to authors-ignored-files, authors-valid-file-names, or
|
||||
authors-renamed-files-alist.
|
||||
|
||||
If necessary, repeat 'C-u M-x authors' after making those changes.
|
||||
Save the "*Authors*" buffer as etc/AUTHORS.
|
||||
Check the diff looks reasonable. Maybe add more entries to
|
||||
Check the diff looks reasonable. Maybe add entries to
|
||||
authors-ambiguous-files or authors-aliases, and repeat.
|
||||
Commit any fixes to authors.el.
|
||||
|
||||
3. Set the version number (M-x load-file RET admin/admin.el RET, then
|
||||
M-x set-version RET). For a pretest, start at version .90. After
|
||||
.99, use .990 (so that it sorts). Commit the resulting changes
|
||||
as one, with nothing else included, and using a log message
|
||||
of the format "Bump Emacs version to ...", so that the commit can
|
||||
be skipped when merging branches (see admin/gitmerge.el).
|
||||
.99, use .990 (so that it sorts).
|
||||
|
||||
The final pretest should be a release candidate.
|
||||
Before a release candidate is made, the tasks listed in
|
||||
admin/release-process must be completed.
|
||||
|
||||
Set the version number to that of the actual release (commit in
|
||||
one, as described above). Pick a date about a week from now when
|
||||
you intend to make the release. Use M-x add-release-logs from
|
||||
admin/admin.el to add entries to etc/HISTORY and the ChangeLog
|
||||
Set the version number to that of the actual release. Pick a date
|
||||
about a week from now when you intend to make the release. Use M-x
|
||||
add-release-logs to add entries to etc/HISTORY and the ChangeLog
|
||||
file. It's best not to commit these files until the release is
|
||||
actually made. Merge the entries from (unversioned) ChangeLog
|
||||
into the top of the current versioned ChangeLog.N and commit that
|
||||
along with etc/HISTORY. Then you can tag that commit as the
|
||||
release.
|
||||
|
||||
Alternatively, you can commit and tag with the RC tag right away,
|
||||
and delay the final tagging until you actually decide to make a
|
||||
release and announce it. The "git tag" command can tag a specific
|
||||
commit if you give it the SHA1 of that commit, even if additional
|
||||
commits have been pushed in the meantime.
|
||||
|
||||
Name the tar file as emacs-XX.Y-rc1.tar. If all goes well in the
|
||||
following week, you can simply rename the file and use it for the
|
||||
actual release. If you need another release candidate, remember
|
||||
|
|
@ -157,54 +81,27 @@ General steps (for each step, check for possible errors):
|
|||
Never replace an existing tarfile! If you need to fix something,
|
||||
always upload it with a different name.
|
||||
|
||||
4. autoreconf -i -I m4 --force
|
||||
make bootstrap
|
||||
4. autoreconf -i -I m4 --force
|
||||
make bootstrap
|
||||
|
||||
The below script checks for any mistakes in the source text of
|
||||
manual pages. Fix any errors and re-run the script to verify.
|
||||
make -C etc/refcards
|
||||
make -C etc/refcards clean
|
||||
|
||||
./admin/check-man-pages
|
||||
If some of the non-English etc/refcards fail to build, you
|
||||
probably need to install some TeX foreign language packages.
|
||||
For more information, search for the string "refcard" in the file
|
||||
admin/release-process.
|
||||
|
||||
Then do this:
|
||||
5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el.
|
||||
|
||||
make -C etc/refcards
|
||||
make -C etc/refcards clean
|
||||
|
||||
If some of the etc/refcards, especially the non-English ones, fail
|
||||
to build, you probably need to install some TeX/LaTeX packages, in
|
||||
particular for foreign language support. For more information,
|
||||
search for the string "refcard" in the file admin/release-process.
|
||||
|
||||
(ru-refcard causes numerous "Underfull hbox" and "Overfull hbox"
|
||||
messages from TeX, but those seem to be harmless, as the result
|
||||
looks just fine.)
|
||||
|
||||
5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el. After copying, edit
|
||||
ldefs-boot.el to add
|
||||
|
||||
;; no-byte-compile: t
|
||||
|
||||
to its file-local variables section, otherwise make-dist will
|
||||
complain.
|
||||
|
||||
Commit ChangeLog.N, etc/AUTHORS, lisp/ldefs-boot.el, and the files
|
||||
changed by M-x set-version. Note that the set-version changes
|
||||
should be committed separately, as described in step 3 above, to
|
||||
avoid them being merged to master. The lisp/ldefs-boot.el file
|
||||
should not be merged to master either, so it could be added to the
|
||||
same commit or committed separately.
|
||||
|
||||
The easiest way of doing that is "C-x v d ROOT-DIR RET", then go
|
||||
to the first modified file, press 'M' to mark all modified files,
|
||||
and finally 'v' to commit them. Make sure the commit log message
|
||||
mentions all the changes in all modified files, as by default 'v'
|
||||
doesn't necessarily do so.
|
||||
Commit ChangeLog.N, etc/AUTHORS, lisp/ldefs-boot.el, and the
|
||||
files changed by M-x set-version.
|
||||
|
||||
If someone else made a commit between step 1 and now,
|
||||
you need to repeat from step 4 onwards. (You can commit the files
|
||||
from step 2 and 3 earlier to reduce the chance of this.)
|
||||
|
||||
6. ./make-dist --snapshot --no-compress
|
||||
6. ./make-dist --snapshot --no-compress
|
||||
|
||||
Check the contents of the new tar with admin/diff-tar-files
|
||||
against the previous release (if this is the first pretest) or the
|
||||
|
|
@ -212,30 +109,13 @@ General steps (for each step, check for possible errors):
|
|||
yourself, find it at <https://alpha.gnu.org/gnu/emacs/pretest>.
|
||||
Releases are of course at <https://ftp.gnu.org/pub/gnu/emacs/>.
|
||||
|
||||
./admin/diff-tar-files emacs-OLD.tar emacs-NEW.tar
|
||||
|
||||
Alternatively, if you want to use the compressed tarballs (which
|
||||
diff-tar-files doesn't understand):
|
||||
|
||||
tar tJf emacs-OLD.tar.xz | sed -e 's,^[^/]*,,' | sort > old_tmp
|
||||
tar tJf emacs-NEW.tar.xz | sed -e 's,^[^/]*,,' | sort > new_tmp
|
||||
diff -u old_tmp new_tmp
|
||||
|
||||
If this is the first pretest of a major release, just comparing
|
||||
with the previous release may overlook many new files. You can try
|
||||
something like 'find . | sort' in a clean repository, and
|
||||
compare the results against the new tar contents. Another
|
||||
alternative is using something like:
|
||||
|
||||
tar cf - emacs-NEW | tar t -C /tmp | grep -Ev "\.(o|d)$" | sort
|
||||
|
||||
Where emacs-NEW is the directory containing your clean repository.
|
||||
The output of this command might be easier to compare to the
|
||||
tarball than the one you get from find.
|
||||
|
||||
7. tar xf emacs-NEW.tar; cd emacs-NEW
|
||||
./configure --prefix=/tmp/emacs && make check && make install
|
||||
something like 'find . | sort' in a clean repository, and compare the
|
||||
results against the new tar contents.
|
||||
|
||||
7. tar -xf emacs-NEW.tar; cd emacs-NEW
|
||||
./configure --prefix=/tmp/emacs && make && make install
|
||||
Use 'script' or M-x compile to save the compilation log in
|
||||
compile-NEW.log and compare it against an old one. The easiest way
|
||||
to do that is to visit the old log in Emacs, change the version
|
||||
|
|
@ -243,31 +123,8 @@ General steps (for each step, check for possible errors):
|
|||
M-x ediff. Especially check that Info files aren't built, and that
|
||||
no autotools (autoconf etc) run.
|
||||
|
||||
8. You can now tag the release/pretest and push it together with the
|
||||
last commit:
|
||||
|
||||
cd EMACS_ROOT_DIR && git tag -a TAG -m "Emacs TAG"
|
||||
git push
|
||||
git push --tags
|
||||
|
||||
Here TAG is emacs-XX.Y.ZZ for a pretest, emacs-XX.Y for a release.
|
||||
For a release, if you are producing a release candidate first, use
|
||||
emacs-XX.Y-rcN (N = 1, 2, ...) when you tar the RC, and add the
|
||||
actual release tag later, when the official release tarball is
|
||||
uploaded to ftp.gnu.org. When adding a tag later, it is safer to
|
||||
use the SHA1 of the last commit which went into the release
|
||||
tarball, in case there were some intervening commits since then:
|
||||
|
||||
git tag -a TAG -m "Emacs TAG" SHA1
|
||||
git push --tags
|
||||
|
||||
In the past, we were not always consistent with the annotation
|
||||
(i.e. -m "Emacs TAG"). The preferred format is like this for a
|
||||
pretest, release candidate and final release:
|
||||
|
||||
git tag -a emacs-28.0.90 -m "Emacs 28.0.90 pretest"
|
||||
git tag -a emacs-28.1-rc1 -m "Emacs 28.1 RC1"
|
||||
git tag -a emacs-28.1 -m "Emacs 28.1 release"
|
||||
8. cd EMACS_ROOT_DIR && git tag -a TAG && git push origin tag TAG
|
||||
TAG is emacs-XX.Y.ZZ for a pretest, emacs-XX.Y for a release.
|
||||
|
||||
9. Decide what compression schemes to offer.
|
||||
For a release, at least gz and xz:
|
||||
|
|
@ -291,9 +148,7 @@ General steps (for each step, check for possible errors):
|
|||
FILE.gz FILE.xz ...
|
||||
|
||||
You only need the --user part if you have multiple GPG keys and do
|
||||
not want to use the default. Instead of "your@gpg.key.email" you
|
||||
could also use the fingerprint of the key, a 40-digit hex number.
|
||||
(Alternatively, define default-key in your ~/.gnupg/gpg.conf file.)
|
||||
not want to use the default.
|
||||
Obviously, if you do not have a fast uplink, be prepared for the
|
||||
upload to take a while.
|
||||
|
||||
|
|
@ -317,8 +172,7 @@ General steps (for each step, check for possible errors):
|
|||
https://alpha.gnu.org/gnu/emacs/pretest/ for a pretest, or
|
||||
https://ftp.gnu.org/gnu/emacs/ for a release.
|
||||
|
||||
Download them and check the signatures and SHA1/SHA256 checksums.
|
||||
Check they build (./configure --with-native-compilation).
|
||||
Download them and check the signatures. Check they build.
|
||||
|
||||
11. Send an announcement to: emacs-devel, and bcc: info-gnu-emacs@gnu.org.
|
||||
For a pretest, also bcc: platform-testers@gnu.org.
|
||||
|
|
@ -334,121 +188,28 @@ General steps (for each step, check for possible errors):
|
|||
because replies that invariably are not announcements also get
|
||||
sent out as if they were.)
|
||||
|
||||
To create the included SHA1 and SHA256 checksums, run:
|
||||
12. After a release, update the Emacs pages as below.
|
||||
|
||||
sha1sum emacs-NEW.tar.xz
|
||||
sha256sum emacs-NEW.tar.xz
|
||||
|
||||
You can optionally sign the announcement email, preferably using
|
||||
the same PGP key that you used for signing the tarball.
|
||||
(Use e.g. `M-x mml-secure-message-sign' in `message-mode' to sign
|
||||
an email.)
|
||||
|
||||
12. After a release, update the Emacs pages as described below.
|
||||
|
||||
13. After a release, bump the Emacs version on the release branch.
|
||||
There is no need to bump the version after a pretest; the version
|
||||
is bumped before the next pretest or release instead.
|
||||
|
||||
If the released version was XX.Y, use 'set-version' from
|
||||
admin/admin.el to bump the version on the release branch to
|
||||
XX.Y.50. Commit the changes.
|
||||
|
||||
UPDATING THE EMACS WEB PAGES AFTER A RELEASE
|
||||
|
||||
As soon as possible after a release, the Emacs web pages at
|
||||
https://www.gnu.org/software/emacs/ should be updated.
|
||||
(See admin/notes/www for general information.)
|
||||
As soon as possible after a release, the Emacs web pages should be updated.
|
||||
Anyone with write access to the Emacs code repository can do this.
|
||||
For instructions, see <https://savannah.gnu.org/cvs/?group=emacs>.
|
||||
Changes go live more or less as soon as they are committed.
|
||||
|
||||
The pages to update are:
|
||||
|
||||
emacs.html (for a new major release, a more thorough update is needed)
|
||||
history.html
|
||||
add the new NEWS file as news/NEWS.xx.y
|
||||
Copy new etc/MACHINES to MACHINES and CONTRIBUTE to CONTRIBUTE
|
||||
|
||||
For every new release, a banner is displayed on top of the emacs.html
|
||||
page. Uncomment and the release banner in emacs.html. Keep it on the
|
||||
page for about a month, then comment it again. The new release banner
|
||||
looks like this:
|
||||
page for about a month, then comment it again.
|
||||
|
||||
<div class="release-banner">
|
||||
<div class="container">
|
||||
<h2><em>Emacs 28.1 is out</em>, download it <a href="download.html">here</a>!</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Also, make sure the copyright years at the bottom of emacs.html are
|
||||
up-to-date.
|
||||
|
||||
The file download.html may need to be updated, for example if the
|
||||
MS-Windows binaries will be signed by a different person/key than
|
||||
those mentioned there.
|
||||
|
||||
Next, regenerate the various manuals in HTML, PDF, and PS formats:
|
||||
|
||||
Invoke ./admin/make-manuals from the top-level directory of the
|
||||
Emacs source tree that contains the manuals for which you want to
|
||||
produce HTML docs. This creates the 'manual' directory and
|
||||
populates it with the necessary files.
|
||||
|
||||
If you have Texinfo installed locally, make-manuals might fail if it
|
||||
cannot find epsf.tex. In that case define in the environment
|
||||
|
||||
TEXINPUTS=:/path/to/texinfo-tree/doc
|
||||
|
||||
where /path/to/texinfo-tree is the absolute file name of the
|
||||
top-level directory where you have the Texinfo source tree. Then
|
||||
re-run make-manuals.
|
||||
|
||||
make-manuals can also fail if the HTML manuals produced by Texinfo
|
||||
violate some of the assumptions admin/admin.el makes about the
|
||||
format of the produced HTML. Debug these problems and resolve them,
|
||||
then re-run make-manuals. (Each time you run make-manuals, it
|
||||
empties the manuals/ directory and regenerates the files there, but
|
||||
if the files in manuals/ can be used without regeneration, i.e. if
|
||||
the problem you solved doesn't affect the produced HTML, you can
|
||||
invoke make-manuals with the -c switch, which will make the process
|
||||
much faster.)
|
||||
|
||||
Now change to the 'manual' directory and invoke upload-manuals:
|
||||
|
||||
../admin/upload-manuals /path/to/webpages/cvs/checkout
|
||||
|
||||
where /path/to/webpages/cvs/checkout is the place where you have the
|
||||
CVS checkout of the Emacs Web pages, with subdirectories 'manual'
|
||||
and 'refcards'. This moves the produced manuals to directories in
|
||||
the Web pages CVS checkout tree, and also invokes CVS commands to
|
||||
commit changed files, add new files, and remove stale files that are
|
||||
no longer part of the manuals.
|
||||
|
||||
If upload-manuals fails, resolve the problems and re-invoke it.
|
||||
This requires running make-manuals again, since upload-manuals
|
||||
destructively modifies the 'manual' directory where you invoke it.
|
||||
Also, upload-manuals invokes "cvs commit -f", so if you run it
|
||||
several times, some files will be committed more than once even
|
||||
though they were not changed in-between. Suck it up.
|
||||
|
||||
All the added and removed files need to be committed, so next fire
|
||||
up Emacs, type "C-x v d" to invoke vc-dir on the Web pages checkout,
|
||||
and use "C-x v v" and other VC commands to commit all the files that
|
||||
upload-manuals didn't automatically commit. (You can also do that
|
||||
with manual CVS commands, of course, but this is not recommended.)
|
||||
|
||||
Next, make sure that manual/index.html file is consistent with the
|
||||
info/dir file in the branch for which you are producing the manuals,
|
||||
in that it mentions all the manuals. It could be outdated if
|
||||
manuals were added or removed since the last release.
|
||||
|
||||
For each new manual, a file manual/MANUAL.html (where MANUAL is the
|
||||
name of the manual) should be created from the template in
|
||||
manual/eww.html, after editing the title and the Copyright years,
|
||||
and the links in it changed to point to the appropriate files in the
|
||||
manual/html_node/ and manual/html_mono/ subdirectories.
|
||||
|
||||
In addition, the file refcards/index.html should be audited to make
|
||||
sure it includes the up-to-date list of refcards actually produced
|
||||
and put under that subdirectory.
|
||||
Regenerate the various manuals in manual/.
|
||||
The scripts admin/make-manuals and admin/upload-manuals summarize the process.
|
||||
|
||||
Browsing <https://web.cvs.savannah.gnu.org/viewvc/?root=emacs> is one
|
||||
way to check for any files that still need updating.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#
|
||||
# admin/merge-gnulib
|
||||
|
||||
# Copyright 2012-2023 Free Software Foundation, Inc.
|
||||
# Copyright 2012-2019 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -23,39 +23,33 @@
|
|||
|
||||
# written by Paul Eggert
|
||||
|
||||
GNULIB_URL=https://git.savannah.gnu.org/git/gnulib.git
|
||||
GNULIB_URL=git://git.savannah.gnu.org/gnulib.git
|
||||
|
||||
GNULIB_MODULES='
|
||||
alignasof alloca-opt binary-io byteswap c-ctype c-strcase
|
||||
canonicalize-lgpl
|
||||
careadlinkat close-stream copy-file-range
|
||||
alloca-opt binary-io byteswap c-ctype c-strcase
|
||||
careadlinkat close-stream
|
||||
count-leading-zeros count-one-bits count-trailing-zeros
|
||||
crypto/md5 crypto/md5-buffer
|
||||
crypto/sha1-buffer crypto/sha256-buffer crypto/sha512-buffer
|
||||
d-type diffseq double-slash-root dtoastr dtotimespec dup2
|
||||
environ execinfo faccessat
|
||||
fchmodat fcntl fcntl-h fdopendir file-has-acl
|
||||
filemode filename filevercmp flexmember fpieee
|
||||
free-posix fstatat fsusage fsync futimens
|
||||
getloadavg getopt-gnu getrandom gettime gettimeofday gitlog-to-changelog
|
||||
ieee754-h ignore-value intprops largefile libgmp lstat
|
||||
manywarnings memmem-simple mempcpy memrchr memset_explicit
|
||||
minmax mkostemp mktime
|
||||
nanosleep nproc nstrftime
|
||||
pathmax pipe2 pselect pthread_sigmask
|
||||
qcopy-acl readlink readlinkat regex
|
||||
sig2str sigdescr_np socklen stat-time std-gnu11 stdbool stddef stdio
|
||||
stpcpy strnlen strtoimax symlink sys_stat sys_time
|
||||
tempname time-h time_r time_rz timegm timer-time timespec-add timespec-sub
|
||||
update-copyright unlocked-io utimensat
|
||||
crypto/md5-buffer crypto/sha1-buffer crypto/sha256-buffer crypto/sha512-buffer
|
||||
d-type diffseq dosname dtoastr dtotimespec dup2
|
||||
environ execinfo explicit_bzero faccessat
|
||||
fcntl fcntl-h fdopendir
|
||||
filemode filevercmp flexmember fpieee fstatat fsusage fsync
|
||||
getloadavg getopt-gnu gettime gettimeofday gitlog-to-changelog
|
||||
ieee754-h ignore-value intprops largefile lstat
|
||||
manywarnings memrchr minmax mkostemp mktime nstrftime
|
||||
pipe2 pselect pthread_sigmask putenv qcopy-acl readlink readlinkat regex
|
||||
sig2str socklen stat-time std-gnu11 stdalign stddef stdio
|
||||
stpcpy strtoimax symlink sys_stat sys_time
|
||||
tempname time time_r time_rz timegm timer-time timespec-add timespec-sub
|
||||
update-copyright unlocked-io utimens
|
||||
vla warnings
|
||||
'
|
||||
|
||||
AVOIDED_MODULES='
|
||||
btowc chmod close crypto/af_alg dup fchdir fstat langinfo lock
|
||||
mbrtowc mbsinit memchr mkdir msvc-inval msvc-nothrow nl_langinfo
|
||||
openat-die opendir pthread-h raise
|
||||
save-cwd select setenv sigprocmask stat stdarg
|
||||
btowc close dup fchdir fstat langinfo lock
|
||||
malloc-posix mbrtowc mbsinit mkdir msvc-inval msvc-nothrow nl_langinfo
|
||||
openat-die opendir raise
|
||||
save-cwd select setenv sigprocmask stat stdarg stdbool
|
||||
threadlib tzset unsetenv utime utime-h
|
||||
wchar wcrtomb wctype-h
|
||||
'
|
||||
|
|
@ -103,12 +97,6 @@ test -x "$gnulib_srcdir"/gnulib-tool || {
|
|||
exit 1
|
||||
}
|
||||
|
||||
# gnulib-tool has problems with a bare checkout (Bug#32452#65).
|
||||
test -f configure || ./autogen.sh || exit
|
||||
|
||||
# Old caches can confuse autoconf when some Gnulib-related changes take effect.
|
||||
rm -fr autom4te.cache || exit
|
||||
|
||||
avoided_flags=
|
||||
for module in $AVOIDED_MODULES; do
|
||||
avoided_flags="$avoided_flags --avoid=$module"
|
||||
|
|
@ -116,9 +104,7 @@ done
|
|||
|
||||
"$gnulib_srcdir"/gnulib-tool --dir="$src" $GNULIB_TOOL_FLAGS \
|
||||
$avoided_flags $GNULIB_MODULES &&
|
||||
rm -- "$src"lib/gl_openssl.h \
|
||||
"$src"lib/stdio-read.c "$src"lib/stdio-write.c \
|
||||
"$src"m4/fcntl-o.m4 \
|
||||
rm -- "$src"lib/gl_openssl.h "$src"m4/fcntl-o.m4 \
|
||||
"$src"m4/gl-openssl.m4 \
|
||||
"$src"m4/gnulib-cache.m4 "$src"m4/gnulib-tool.m4 \
|
||||
"$src"m4/manywarnings-c++.m4 \
|
||||
|
|
@ -129,8 +115,5 @@ cp -- "$gnulib_srcdir"/build-aux/config.guess \
|
|||
"$gnulib_srcdir"/build-aux/install-sh \
|
||||
"$gnulib_srcdir"/build-aux/move-if-change \
|
||||
"$src"build-aux &&
|
||||
cp -- "$gnulib_srcdir"/lib/af_alg.h \
|
||||
"$gnulib_srcdir"/lib/save-cwd.h \
|
||||
"$src"lib &&
|
||||
{ test -z "$src" || cd "$src"; } &&
|
||||
./autogen.sh
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#
|
||||
# admin/merge-pkg-config
|
||||
|
||||
# Copyright 2014-2023 Free Software Foundation, Inc.
|
||||
# Copyright 2014-2019 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -60,4 +60,4 @@ test -d m4 || {
|
|||
|
||||
printf >&2 '%s\n' "$0: copying $dir/pkg.m4 to m4/pkg.m4"
|
||||
|
||||
cp "$dir"/pkg.m4 m4
|
||||
cp $dir/pkg.m4 m4
|
||||
|
|
|
|||
|
|
@ -11,11 +11,7 @@ interface via org-mode.
|
|||
The goal of this triage is to prune down the list of old bugs, closing
|
||||
the ones that are not reproducible on the current release.
|
||||
|
||||
0. To start, check the most relevant bugs blocking a release by
|
||||
calling debbugs-gnu-emacs-release-blocking-reports. If you want
|
||||
to check this for another Emacs version but the next-to-be-released-one,
|
||||
use the "C-u" prefix.
|
||||
1. After that, enter debbugs mode (either debbugs-gnu, debbugs-org, or via the
|
||||
1. To start, enter debbugs mode (either debbugs-gnu, debbugs-org, or via the
|
||||
web browser), and accept the default list option of bugs that have severity
|
||||
serious, important, or normal.
|
||||
2. For each bug, we want to primarily make sure it is still
|
||||
|
|
@ -24,7 +20,7 @@ the ones that are not reproducible on the current release.
|
|||
suggested checklist to follow for handling these bugs, along with
|
||||
example replies. Closing, tagging, etc., are done
|
||||
with debbugs control messages, which in debbugs-gnu is initiated
|
||||
with a "C" or "E".
|
||||
with a "C".
|
||||
[ ] Read the mail thread for the bug. Find out if anyone has
|
||||
been able to reproduce this on the current release. If
|
||||
someone has been able to, then your work is finished for this
|
||||
|
|
@ -73,7 +69,7 @@ the ones that are not reproducible on the current release.
|
|||
know if you are able to? If I don't hear back in a few
|
||||
weeks, I'll just close this bug as unreproducible."
|
||||
[ ] Check that the priority is reasonable. Most bugs should be
|
||||
marked as normal, but crashes and security issues can be
|
||||
marked as normal, but crashers and security issues can be
|
||||
marked as serious.
|
||||
3. Your changes will take some time to take effect. After a period of minutes
|
||||
to hours, you will get a mail telling you the control message has been
|
||||
|
|
@ -85,13 +81,13 @@ the ones that are not reproducible on the current release.
|
|||
* New bug triage process
|
||||
|
||||
The goal of the new bug triage process is similar to the backlog triage process,
|
||||
except that the focus is on prioritizing the bug, and making sure it has
|
||||
except that the focus is on prioritizing the bug, and making sure it is has
|
||||
necessary information for others to act on.
|
||||
|
||||
For each new bug, ask the following questions:
|
||||
|
||||
1. Is the bug report written in a way to be easy to reproduce (starts from
|
||||
"emacs -Q", etc.)? If not, ask the reporter to try and reproduce it on an
|
||||
emacs -Q, etc.)? If not, ask the reporter to try and reproduce it on an
|
||||
emacs without customization.
|
||||
2. Is the bug report written against the latest emacs? If not, try to
|
||||
reproduce on the latest version, and if it can't be reproduced, ask the
|
||||
|
|
|
|||
|
|
@ -11,10 +11,6 @@ Use M-x report-emacs-bug, or send mail to bug-gnu-emacs@gnu.org.
|
|||
If you want to Cc someone, use an "X-Debbugs-Cc" header (or
|
||||
pseudo-header, see below) instead.
|
||||
|
||||
** How do I read a bug?
|
||||
Visit https://debbugs.gnu.org/123 in your web browser or try this in
|
||||
Emacs: M-x gnus-read-ephemeral-emacs-bug-group.
|
||||
|
||||
** How do I comment on a bug?
|
||||
Reply to a mail on the bug-gnu-emacs list in the normal way.
|
||||
Or send a mail to 123@debbugs.gnu.org.
|
||||
|
|
@ -33,7 +29,7 @@ By mailing commands to control@debbugs.gnu.org. Place commands at the
|
|||
start of the message body, one per line.
|
||||
|
||||
severity 123 serious|important|normal|minor|wishlist
|
||||
tags 123 moreinfo|unreproducible|wontfix|patch|notabug
|
||||
tags 123 moreinfo|unreproducible|wontfix|patch
|
||||
|
||||
* More detailed information
|
||||
|
||||
|
|
@ -76,7 +72,7 @@ cc everyone on replies.)
|
|||
|
||||
(Many people think the submitter SHOULD be automatically subscribed
|
||||
to subsequent discussion, but this does not seem to be implemented.
|
||||
See https://bugs.debian.org/37078
|
||||
See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=37078
|
||||
See also https://debbugs.gnu.org/5439 )
|
||||
|
||||
Do NOT send a separate copy to the bug list address, since this may
|
||||
|
|
@ -84,7 +80,7 @@ generate a new report. The only time to send mail to the bug list
|
|||
address is to create a new report.
|
||||
|
||||
Gnus users can add the following to message-dont-reply-to-names;
|
||||
similarly with Rmail and mail-dont-reply-to-names:
|
||||
similarly with Rmail and rmail-dont-reply-to-names:
|
||||
|
||||
"\\(emacs-pretest-bug\\|bug-gnu-emacs\\|bug-\\(e\\|gnu\\)macs\\)@gnu\\.org\\|\
|
||||
\\(submit\\|control\\|owner\\)@debbugs\\.gnu\\.org"
|
||||
|
|
@ -155,7 +151,7 @@ Package: emacs
|
|||
Version: 23.0.60
|
||||
Severity: minor
|
||||
|
||||
Remember to fix FOO, as discussed on emacs-devel at https://... .
|
||||
Remember to fix FOO, as discussed on emacs-devel at http://... .
|
||||
|
||||
** Not interested in tracker control messages (tags being set, etc)?
|
||||
Discard mails matching:
|
||||
|
|
@ -185,7 +181,7 @@ Basically, reply only to the numbered bug address (and any individual
|
|||
people's addresses). Do not send mail direct to bug-gnu-emacs or
|
||||
emacs-pretest-bug unless you are reporting a new bug.
|
||||
|
||||
** To close bug#123 (for example), send mail
|
||||
** To close bug #123 (for example), send mail
|
||||
|
||||
To: 123-done@debbugs.gnu.org
|
||||
|
||||
|
|
@ -245,29 +241,21 @@ report, and Bcc: the control server (note the commands have no effect
|
|||
if you just send them to the bug-report number). Bcc: is better than Cc:
|
||||
in case people use Reply-To-All in response.
|
||||
|
||||
For the full documentation of control commands, see
|
||||
https://debbugs.gnu.org/server-control.html
|
||||
|
||||
Some useful control commands:
|
||||
|
||||
*** To close a bug and indicate in what Emacs version it was fixed
|
||||
close 123 VERSION
|
||||
|
||||
where VERSION is XX.YY numerical version number, like 42.1.
|
||||
|
||||
*** To reopen a closed bug:
|
||||
reopen 123
|
||||
|
||||
*** Bugs can be tagged in various ways (eg wontfix, patch, etc).
|
||||
The available tags are:
|
||||
patch wontfix moreinfo unreproducible fixed notabug help security confirmed easy
|
||||
patch wontfix moreinfo unreproducible fixed notabug
|
||||
See https://debbugs.gnu.org/Developer#tags
|
||||
The list of tags can be prefixed with +, - or =, meaning to add (the
|
||||
default), remove, or reset the tags. E.g.:
|
||||
|
||||
tags 123 + wontfix
|
||||
|
||||
*** URL shortcuts
|
||||
** URL shortcuts
|
||||
|
||||
https://debbugs.gnu.org/...
|
||||
|
||||
|
|
@ -278,9 +266,9 @@ from:submitter@email.address
|
|||
severity:severity # all bugs of given severity
|
||||
tag:tag # all bugs with given tag
|
||||
|
||||
*** Usertags
|
||||
** Usertags
|
||||
|
||||
See <https://wiki.debian.org/bugs.debian.org/usertags>
|
||||
See <http://wiki.debian.org/bugs.debian.org/usertags>
|
||||
|
||||
"Usertags" are very similar to tags: a set of labels that can be added
|
||||
to a bug. There are two differences between normal tags and user tags:
|
||||
|
|
@ -290,9 +278,10 @@ limited, predefined set of normal tags are available (see above).
|
|||
|
||||
2) A usertag is associated with a specific user. This is normally
|
||||
an email address (with an "@" sign and least 4 characters after the "@"),
|
||||
but on debbugs.gnu.org, it can also be a package name. For personal tags,
|
||||
but on debbugs.gnu.org, the definition is less strict - anything with
|
||||
5 or more alphanumeric characters will work. For personal tags,
|
||||
using an email address is still recommended. Please only use the
|
||||
"emacs" user for "official" tags.
|
||||
"emacs" user, or other short users, for "official" tags.
|
||||
|
||||
You set usertags in the same way as tags, by talking to the control server.
|
||||
One difference is that you can also specify the associated user.
|
||||
|
|
@ -306,7 +295,7 @@ a) In a control message:
|
|||
user emacs # or email@example.com
|
||||
usertags 1234 any-tag-you-like
|
||||
|
||||
This will add a usertag "any-tag-you-like" to bug#1234. The tag will
|
||||
This will add a usertag "any-tag-you-like" to bug 1234. The tag will
|
||||
be associated with the user "emacs". If you omit the first line,
|
||||
the tag will be associated with your email address.
|
||||
|
||||
|
|
@ -384,7 +373,7 @@ will be assigned proper numbers).
|
|||
NB you cannot clone a merged bug. You'd think that trying to do so
|
||||
would just give you an unmerged copy of the specified bug number, but no:
|
||||
|
||||
https://bugs.debian.org/474742
|
||||
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=474742
|
||||
|
||||
You must unmerge, clone, then re-merge.
|
||||
|
||||
|
|
@ -421,21 +410,21 @@ reassign 1234 emacs
|
|||
Note that reassigning clears the list of found versions, even if the
|
||||
new packages includes the original one.
|
||||
|
||||
*** To remove spam from the tracker, move it to the 'spam' pseudo-package:
|
||||
** To remove spam from the tracker, move it to the 'spam' pseudo-package:
|
||||
reassign 123 spam
|
||||
|
||||
(Should not be necessary any more, now that the input is moderated.)
|
||||
|
||||
*** To change the title of a bug:
|
||||
** To change the title of a bug:
|
||||
retitle 123 Some New Title
|
||||
|
||||
*** To change the submitter address:
|
||||
** To change the submitter address:
|
||||
submitter 123 none@example.com
|
||||
|
||||
Note that it does not seem to work to specify "Submitter:" in the
|
||||
pseudo-header when first reporting a bug.
|
||||
|
||||
*** How does archiving work?
|
||||
** How does archiving work?
|
||||
You can still send mail to a bug after it is closed. After 28 days with
|
||||
no activity, the bug is archived, at which point no more changes can
|
||||
be made. If you try to send mail to the bug after that (or merge with
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007-2019 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
|
||||
|
|
@ -193,14 +193,14 @@ lib-src/etags.c
|
|||
After some investigation in Feb 2007, then to the best of our
|
||||
knowledge we believe that the original 1984 Emacs version was based
|
||||
on the version in BSD4.2. See for example this 1985 post from Ken Arnold:
|
||||
<https://groups.google.com/group/mod.sources/browse_thread/thread/ffe5c55845a640a9>
|
||||
<http://groups.google.com/group/mod.sources/browse_thread/thread/ffe5c55845a640a9>
|
||||
I have received enough requests for the current source to ctags
|
||||
to post it. Here is the latest version (what will go out with
|
||||
4.3, modulo any bugs fixed during the beta period). It is the
|
||||
4.2 ctags with recognition of yacc and lex tags added.
|
||||
|
||||
See also a 1984 version of ctags (no copyright) posted to net.sources:
|
||||
<https://groups.google.com/group/net.sources/msg/a21b6c21be12a98d>
|
||||
<http://groups.google.com/group/net.sources/msg/a21b6c21be12a98d>
|
||||
Version of etags.c in emacs-16.56 duplicates comment typos.
|
||||
|
||||
Accordingly, in Feb 2007 we added a 1984 copyright for the
|
||||
|
|
@ -350,7 +350,9 @@ added or not, rms says (2007-02-25, "oldXmenu issues"):
|
|||
insque.c had no copyright notice until 2005. The version of insque.c
|
||||
added to Emacs 1992-01-27 is essentially the same as insremque.c added
|
||||
to glic three days later by Roland McGrath, with an FSF copyright and
|
||||
GPL, but no ChangeLog entry.
|
||||
GPL, but no ChangeLog entry:
|
||||
<http://sources.redhat.com/cgi-bin/cvsweb.cgi/~checkout~/libc/misc/insremque.c?\
|
||||
rev=1.1&cvsroot=glibc>
|
||||
To the best of his recollection, McGrath (who has a copyright
|
||||
assignment) was the author of this file (email from roland at frob.com
|
||||
to rms, 2007-02-23, "Where did insque.c come from?"). The FSF
|
||||
|
|
|
|||
|
|
@ -3,33 +3,19 @@ NOTES ON THE EMACS PACKAGE ARCHIVE
|
|||
The GNU Emacs package archive, at elpa.gnu.org, is managed using a Git
|
||||
repository named "elpa", hosted on Savannah. To check it out:
|
||||
|
||||
git clone https://git.savannah.gnu.org/git/emacs/elpa
|
||||
git clone git://git.sv.gnu.org/emacs/elpa
|
||||
cd elpa
|
||||
make setup
|
||||
git remote set-url --push origin git+ssh://git.sv.gnu.org/srv/git/emacs/elpa
|
||||
[create task branch for edits, etc.]
|
||||
|
||||
That leaves the elpa/packages directory empty; you must check out the
|
||||
ones you want.
|
||||
Changes to this branch propagate to elpa.gnu.org via a "deployment" script run
|
||||
daily. This script (which is kept in elpa/admin/update-archive.sh) generates
|
||||
the content visible at https://elpa.gnu.org/packages.
|
||||
|
||||
If you wish to check out all the packages into the packages directory,
|
||||
you can run the command:
|
||||
|
||||
make worktrees
|
||||
|
||||
You can check out a specific package <pkgname> into the packages
|
||||
directory with:
|
||||
|
||||
make packages/<pkgname>
|
||||
|
||||
|
||||
Changes to this repository propagate to elpa.gnu.org via a
|
||||
"deployment" script run daily. This script generates the content
|
||||
visible at https://elpa.gnu.org/packages.
|
||||
|
||||
A new package is released as soon as the "version number" of that
|
||||
package is changed. So you can use 'elpa' to work on a package
|
||||
without fear of releasing those changes prematurely. And once the
|
||||
code is ready, just bump the version number to make a new release of
|
||||
the package.
|
||||
A new package is released as soon as the "version number" of that package is
|
||||
changed. So you can use 'elpa' to work on a package without fear of releasing
|
||||
those changes prematurely. And once the code is ready, just bump the
|
||||
version number to make a new release of the package.
|
||||
|
||||
It is easy to use the elpa branch to deploy a "local" copy of the
|
||||
package archive. For details, see the README file in the elpa branch.
|
||||
|
|
|
|||
140
admin/notes/emba
140
admin/notes/emba
|
|
@ -1,140 +0,0 @@
|
|||
-*- mode: outline; coding: utf-8 -*-
|
||||
|
||||
Copyright (C) 2019-2023 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
NOTES FOR EMACS CONTINUOUS BUILD ON EMBA
|
||||
|
||||
A continuous build for Emacs can be found at
|
||||
<https://emba.gnu.org/emacs/emacs>, a Gitlab instance. It watches the
|
||||
Emacs git repository and starts a pipeline (jobset) if there are new
|
||||
changes. This happens for all Emacs branches which belong to the
|
||||
defined workflow (see below).
|
||||
|
||||
* Mail notifications
|
||||
|
||||
In addition to the web interface, emba can send notifications by email
|
||||
when a job fails. It sends notifications about test status to
|
||||
<emacs-buildstatus@gnu.org>.
|
||||
|
||||
If you want to receive these notifications, please subscribe at
|
||||
<https://lists.gnu.org/mailman/listinfo/emacs-buildstatus>.
|
||||
|
||||
Alternatively, these notifications can be read via gmane at
|
||||
<nntp+news.gmane.org:gmane.emacs.buildstatus>.
|
||||
|
||||
The messages contain a URL to the log file of the failed job, like
|
||||
<https://emba.gnu.org/emacs/emacs/-/jobs/739/raw>.
|
||||
|
||||
* Emacs jobset
|
||||
|
||||
The Emacs jobset is defined in the Emacs source tree, file
|
||||
'.gitlab-ci.yml'. All related files are located in directory
|
||||
'test/infra'. They could be adapted for every Emacs branch, see
|
||||
<https://emba.gnu.org/help/ci/yaml/README.md>.
|
||||
|
||||
Only branches whose name starts with 'master', 'emacs', 'feature', or
|
||||
'fix' are considered. This is declared in the workflow rules of file
|
||||
'test/infra/gitlab-ci.yml'.
|
||||
|
||||
A jobset on Gitlab is called a pipeline. Emacs pipelines run through
|
||||
the stages 'build-images', 'platform-images' and 'native-comp-images'
|
||||
(create an Emacs instance by 'make bootstrap' with different
|
||||
configuration parameters) as well as 'normal', 'platforms' and
|
||||
'native-comp' (run respective test jobs based on the produced images).
|
||||
|
||||
The jobs for stage 'normal' are contained in the file
|
||||
'test/infra/test-jobs.yml'. This file is generated by calling 'make
|
||||
-C test generate-test-jobs' in the Emacs source tree, and the
|
||||
resulting file should be pushed to the Emacs git repository afterwards.
|
||||
|
||||
Every job runs in a Debian docker container. It uses the local clone
|
||||
of the Emacs git repository to perform a bootstrap and test of Emacs.
|
||||
This could happen for several jobs with changed configuration, compile,
|
||||
and test parameters.
|
||||
|
||||
The 'build-image-*' jobs of the different '*-images' stages run only
|
||||
if there are severe changes in the Emacs sources, like in Makefiles
|
||||
etc. Otherwise they are skipped, and the corresponding 'test-*' jobs
|
||||
run just 'make -C test ...' in the respective Docker image from a
|
||||
previous build run.
|
||||
|
||||
Jobs in the 'build-images' and 'normal' stages are triggered by
|
||||
changes of respective files in the Emacs git repository. All other
|
||||
jobs run scheduled in a pipeline every 8 hours.
|
||||
|
||||
The log files for every test job are kept on the server for a week.
|
||||
They can be downloaded from the server, visiting the URL
|
||||
<https://emba.gnu.org/emacs/emacs/-/pipelines>, and selecting the job
|
||||
in question.
|
||||
|
||||
Every pipeline generates a JUnit test report for the respective test
|
||||
jobs, which can be inspected on the pipeline web page. This test
|
||||
report counts completed ERT tests, aborted tests are not counted.
|
||||
|
||||
* Emba configuration
|
||||
|
||||
The emba configuration files are hosted on
|
||||
<https://gitlab.com/emacs-ci/emba-ansible>.
|
||||
|
||||
* Identifying emba
|
||||
|
||||
Lisp packages, Makefiles, scripts, and other software could determine
|
||||
whether they run on emba by checking for the environment variable
|
||||
EMACS_EMBA_CI.
|
||||
|
||||
* Running Emba tests locally
|
||||
|
||||
As usual in GitLab, the tests run in containers, which could be
|
||||
applied also locally. Unfortunately, the Emba container registry,
|
||||
emba.gnu.org:5050, is not accessible publicly. Instead, the container
|
||||
images must be build locally. Change the current directory to a
|
||||
recent Emacs branch, and apply the command
|
||||
|
||||
docker build --target emacs-inotify --tag emacs-inotify \
|
||||
-f test/infra/Dockerfile.emba .
|
||||
|
||||
This creates the Debian-based image emacs-inotify, based on the
|
||||
instructions in the file Dockerfile.emba. This image is good for the
|
||||
majority of tests. However, there are also other image build
|
||||
instructions like emacs-filenotify-gio, emacs-eglot, emacs-gnustep and
|
||||
emacs-native-comp-speed{0,1,2}. Use the appropriate one.
|
||||
|
||||
The image contains a directory "/checkout", which is a copy of your
|
||||
local Emacs git repository. Emacs has been built in this directory
|
||||
via "make bootstrap". In order to use the image, start a container
|
||||
like
|
||||
|
||||
docker run --interactive --env EMACS_EMBA_CI=1 --name emacs-inotify \
|
||||
emacs-inotify /bin/sh -i
|
||||
|
||||
In this container, change the current directory to "/checkout". Now
|
||||
you can apply all commands known for Emacs, like
|
||||
|
||||
cd /checkout
|
||||
make -C test files-tests.log
|
||||
|
||||
While this container runs, you can also access its filesystem from
|
||||
your local Emacs via Tramp. For example, in order to see the result
|
||||
of the above test run, open the log file in your local Emacs with
|
||||
|
||||
C-x C-f /docker:emacs-inotify:/checkout/test/lisp/files-tests.log
|
||||
|
||||
Note: On local Red Hat-based systems, use "podman" instead of "docker"
|
||||
in the shell commands and Tramp file names.
|
||||
|
||||
|
||||
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/>.
|
||||
69
admin/notes/font-backend
Normal file
69
admin/notes/font-backend
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
Copyright (C) 2002-2019 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
|
||||
New font handling mechanism with font backend method
|
||||
----------------------------------------------------
|
||||
|
||||
The new files are:
|
||||
font.h -- header providing font-backend related structures
|
||||
(most important ones are "struct font" and "struct
|
||||
font_driver"), macros, and etc.
|
||||
font.c -- main font handling code.
|
||||
xfont.c -- font-driver on X for X core fonts.
|
||||
ftfont.c -- generic font-driver for FreeType fonts providing
|
||||
device-independent methods of struct font_driver.
|
||||
xftfont.c -- font-driver on X using Xft for FreeType fonts
|
||||
utilizing methods provided by ftfont.c.
|
||||
ftxfont.c -- font-driver on X directly using FreeType fonts
|
||||
utilizing methods provided by ftfont.c.
|
||||
w32font.c -- font driver on w32 using Windows native fonts,
|
||||
corresponding to xfont.c
|
||||
w32uniscribe.c -- font driver on w32, using the uniscribe API
|
||||
to provide complex script support for opentype fonts on
|
||||
Windows 2000 and later, or earlier versions of Windows
|
||||
with uniscribe installed as an add-on.
|
||||
|
||||
So we already have codes for X and w32. For Mac it seems that we need
|
||||
these files:
|
||||
atmfont.c -- font-driver on mac using ATM fonts, corresponding
|
||||
to xfont.c
|
||||
As BDF fonts are currently used on w32, we may also implement these:
|
||||
bdffont.c -- generic font-driver for BDF fonts, corresponding to
|
||||
ftfont.c
|
||||
bdfw32font.c -- font-driver on w32 using BDF fonts,
|
||||
corresponding to ftxfont.c
|
||||
But, as FreeType already supports BDF fonts, if FreeType and
|
||||
Fontconfig are also available on w32, what we need may be:
|
||||
ftw32font.c -- font-driver on w32 directly using FreeType fonts
|
||||
utilizing methods provided by ftfont.c.
|
||||
|
||||
It may be interesting if Emacs supports a frame buffer directly and
|
||||
has these font driver.
|
||||
ftfbfont.c -- font-driver on FB for FreeType fonts.
|
||||
bdffbfont.c -- font-driver on FB for BDF fonts.
|
||||
|
||||
Note: The fontset related codes are not yet matured to work well with
|
||||
the font backend method. So, for instance, even if you start Emacs
|
||||
as something like this:
|
||||
% emacs -fn tahoma
|
||||
Non-ASCII Latin characters will not be displayed by the font "tahoma".
|
||||
In such a case, please try this:
|
||||
|
||||
(set-fontset-font "fontset-default" 'latin '("tahoma" . "unicode-bmp"))
|
||||
|
||||
|
||||
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/>.
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
(This is a draft. The method here won't actually work yet, because
|
||||
neither git-new-workdir nor merge-changelog are in the Emacs
|
||||
distribution yet.)
|
||||
|
||||
Setting up and using git for normal, simple bugfixing
|
||||
=====================================================
|
||||
|
||||
|
|
@ -15,15 +19,15 @@ Initial setup
|
|||
=============
|
||||
|
||||
Then we want to clone the repository. We normally want to have both
|
||||
the current master and (if there is one) the active release branch
|
||||
(eg emacs-29).
|
||||
the current master and the emacs-26 branch.
|
||||
|
||||
mkdir ~/emacs
|
||||
cd ~/emacs
|
||||
git clone <membername>@git.sv.gnu.org:/srv/git/emacs.git master
|
||||
cd master
|
||||
git config push.default current
|
||||
git worktree add ../emacs-29 emacs-29
|
||||
(cd master; git config push.default current)
|
||||
./master/admin/git-new-workdir master emacs-26
|
||||
cd emacs-26
|
||||
git checkout emacs-26
|
||||
|
||||
You now have both branches conveniently accessible, and you can do
|
||||
"git pull" in them once in a while to keep updated.
|
||||
|
|
@ -53,11 +57,11 @@ you commit your change locally and then send a patch file as a bug report
|
|||
as described in ../../CONTRIBUTE.
|
||||
|
||||
|
||||
Backporting to release branch
|
||||
=============================
|
||||
Backporting to emacs-26
|
||||
=======================
|
||||
|
||||
If you have applied a fix to the master, but then decide that it should
|
||||
be applied to the release branch, too, then
|
||||
be applied to the emacs-26 branch, too, then
|
||||
|
||||
cd ~/emacs/master
|
||||
git log
|
||||
|
|
@ -67,7 +71,7 @@ which will look like
|
|||
|
||||
commit 958b768a6534ae6e77a8547a56fc31b46b63710b
|
||||
|
||||
cd ~/emacs/emacs-29
|
||||
cd ~/emacs/emacs-26
|
||||
git cherry-pick -xe 958b768a6534ae6e77a8547a56fc31b46b63710b
|
||||
|
||||
and add "Backport:" to the commit string. Then
|
||||
|
|
@ -75,28 +79,17 @@ and add "Backport:" to the commit string. Then
|
|||
git push
|
||||
|
||||
|
||||
Reverting on release branch
|
||||
===========================
|
||||
|
||||
If a commit is made to the release branch, and then it is later
|
||||
decided that this change should only be on the master branch, the
|
||||
simplest way to handle this is to revert the commit on the release
|
||||
branch, and include in the associated log entry "do not merge to master".
|
||||
(Otherwise, the reversion may get merged to master, and inadvertently
|
||||
clobber the change on master if it has been manually made there.)
|
||||
|
||||
|
||||
Merging release branch to the master
|
||||
====================================
|
||||
Merging emacs-26 to the master
|
||||
==============================
|
||||
|
||||
It is recommended to use the file gitmerge.el in the admin directory
|
||||
for merging the release branch into 'master'. It will take care of many
|
||||
for merging 'emacs-26' into 'master'. It will take care of many
|
||||
things which would otherwise have to be done manually, like ignoring
|
||||
commits that should not land in master, fixing up ChangeLogs and
|
||||
automatically dealing with certain types of conflicts. If you really
|
||||
want to, you can do the merge manually, but then you're on your own.
|
||||
If you still choose to do that, make absolutely sure that you *always*
|
||||
use the 'merge' command to transport commits from the release branch to
|
||||
use the 'merge' command to transport commits from 'emacs-26' to
|
||||
'master'. *Never* use 'cherry-pick'! If you don't know why, then you
|
||||
shouldn't manually do the merge in the first place; just use
|
||||
gitmerge.el instead.
|
||||
|
|
@ -109,11 +102,11 @@ up-to-date by doing a pull. Then start Emacs with
|
|||
emacs -l admin/gitmerge.el -f gitmerge
|
||||
|
||||
You'll be asked for the branch to merge, which will default to
|
||||
(eg) 'origin/emacs-29', which you should accept. Merging a local tracking
|
||||
'origin/emacs-26', which you should accept. Merging a local tracking
|
||||
branch is discouraged, since it might not be up-to-date, or worse,
|
||||
contain commits from you which are not yet pushed upstream.
|
||||
|
||||
You will now see the list of commits from the release branch that are not yet
|
||||
You will now see the list of commits from 'emacs-26' which are not yet
|
||||
merged to 'master'. You might also see commits that are already
|
||||
marked for "skipping", which means that they will be merged with a
|
||||
different merge strategy ('ours'), which will effectively ignore the
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
-*- mode: outline; coding: utf-8 -*-
|
||||
|
||||
Copyright (C) 2013-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2013-2019 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
NOTES FOR EMACS CONTINUOUS BUILD ON HYDRA
|
||||
|
|
@ -10,6 +10,8 @@ https://hydra.nixos.org/jobset/gnu/emacs-trunk
|
|||
|
||||
* It builds Emacs on various platforms.
|
||||
Sometimes jobs fail due to hydra problems rather than Emacs problems.
|
||||
Eg it seems like the darwin build will never work again.
|
||||
https://lists.gnu.org/r/hydra-users/2016-01/msg00000.html
|
||||
|
||||
* Mail notifications
|
||||
In addition to the web interface, Hydra can send notifications by
|
||||
|
|
@ -20,8 +22,6 @@ Emacs trunk to emacs-buildstatus@gnu.org.
|
|||
If you want to receive these notifications, please subscribe at
|
||||
https://lists.gnu.org/mailman/listinfo/emacs-buildstatus
|
||||
|
||||
(This feature seems to have been broken for ages.)
|
||||
|
||||
* The Emacs jobset consists of the following jobs:
|
||||
|
||||
** The 'tarball' job
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
-*- coding: utf-8; mode: text; -*-
|
||||
|
||||
Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007-2019 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
From README.multi-tty in the multi-tty branch.
|
||||
|
|
@ -474,7 +474,7 @@ THINGS TO DO
|
|||
definition.
|
||||
|
||||
Exceptions found so far: x-select-text and
|
||||
x-selection-value.
|
||||
x-cut-buffer-or-selection-value.
|
||||
|
||||
** Have a look at fatal_error_hook.
|
||||
|
||||
|
|
|
|||
|
|
@ -65,6 +65,9 @@ functions are:
|
|||
Currently ctrl-g is not detected in as many circumstances as other emacsen.
|
||||
It is not certain whether this is due to the means of event loop integration,
|
||||
or errors of omission in the NS code. This is an area for improvement.
|
||||
Also, see the article here and its containing thread:
|
||||
|
||||
http://article.gmane.org/gmane.emacs.devel/92021/match=handling%5fsignal
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -42,24 +42,6 @@ yet another fun excursion into the exciting world of version control.
|
|||
|
||||
https://lists.gnu.org/r/emacs-devel/2010-04/msg00086.html
|
||||
|
||||
* feature and scratch branches
|
||||
|
||||
Besides the master branch, which is where development takes place, and
|
||||
the "emacs-NN" release branches, we also have branches whose names
|
||||
start with "scratch/" and "feature/". The "feature/" prefix is used
|
||||
for feature branches that are intended to live for some time, while
|
||||
"scratch/" is for one-off throw-away-after-use branches.
|
||||
|
||||
We do not intend to "git merge" from scratch branches, so force-pushes
|
||||
are tolerated, as well as commits with poor style, incomplete commit
|
||||
messages, etc.
|
||||
|
||||
We do expect to "git merge" from feature branches so: no force push,
|
||||
and no commits that don't have a proper commit message.
|
||||
|
||||
Automatic tests are run for feature/* branches on EMBA.
|
||||
See: https://emba.gnu.org/emacs/emacs/-/pipelines
|
||||
|
||||
* Installing changes from gnulib
|
||||
|
||||
Some of the files in Emacs are copied from gnulib. To synchronize
|
||||
|
|
@ -128,14 +110,6 @@ again.
|
|||
This is a semi-automated way to find the revision that introduced a bug.
|
||||
Browse 'git help bisect' for technical instructions.
|
||||
|
||||
It is recommended to start a bisection with the admin/git-bisect-start
|
||||
script. Using that script ensures that commits in branches that are
|
||||
the result of merging external trees into the Emacs repository, as
|
||||
well as certain commits on which Emacs fails to build, are skipped
|
||||
during the bisection process. That script can also be executed
|
||||
automatically when 'git bisect start' is called, with the help of a
|
||||
wrapper script that is included in its commentary section.
|
||||
|
||||
* Maintaining ChangeLog history
|
||||
|
||||
Older ChangeLog entries are kept in history files named ChangeLog.1,
|
||||
|
|
@ -150,11 +124,6 @@ This ChangeLog file is not put into the repository.
|
|||
'make change-history' copies all newer ChangeLog entries into the
|
||||
start of the newest ChangeLog history file. These ChangeLog entries
|
||||
are thereafter considered to be old, so later uses of 'make ChangeLog'
|
||||
and/or 'make change-history' will no longer copy the entries.
|
||||
|
||||
To alter ChangeLog history, run 'make change-history' and commit the
|
||||
changes made by that command. Then edit the ChangeLog history files
|
||||
manually and commit those changes in a second, distinct commit.
|
||||
Altering ChangeLog history like this can make things harder for those
|
||||
who handle merging branches and Emacs releases, so reserve it for
|
||||
correcting more serious mistakes.
|
||||
and/or 'make change-history' will no longer copy the entries. To
|
||||
alter ChangeLog history, run 'make change-history', then edit
|
||||
the ChangeLog history files manually and commit your changes.
|
||||
|
|
|
|||
|
|
@ -6,6 +6,6 @@ Re "behavior" vs "behaviour", etc.
|
|||
for new text (code, docs), choose the US variant.
|
||||
|
||||
- It's probably (IMHO --ttn, 2017-10-13) not a high priority to
|
||||
change existing text; use your best judgment (ask if unsure).
|
||||
change existing text; use your best judgement (ask if unsure).
|
||||
|
||||
- https://lists.gnu.org/r/emacs-devel/2005-06/msg00489.html
|
||||
- http://lists.gnu.org/archive/html/emacs-devel/2005-06/msg00489.html
|
||||
|
|
|
|||
|
|
@ -1,29 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
languages=(
|
||||
'bash'
|
||||
'c'
|
||||
'cmake'
|
||||
'cpp'
|
||||
'css'
|
||||
'c-sharp'
|
||||
'dockerfile'
|
||||
'elixir'
|
||||
'go'
|
||||
'go-mod'
|
||||
'heex'
|
||||
'html'
|
||||
'javascript'
|
||||
'json'
|
||||
'python'
|
||||
'rust'
|
||||
'toml'
|
||||
'tsx'
|
||||
'typescript'
|
||||
'yaml'
|
||||
)
|
||||
|
||||
for language in "${languages[@]}"
|
||||
do
|
||||
./build.sh $language
|
||||
done
|
||||
|
|
@ -1,92 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
lang=$1
|
||||
topdir="$PWD"
|
||||
|
||||
case $(uname) in
|
||||
"Darwin")
|
||||
soext="dylib"
|
||||
;;
|
||||
*"MINGW"*)
|
||||
soext="dll"
|
||||
;;
|
||||
*)
|
||||
soext="so"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Building ${lang}"
|
||||
|
||||
### Retrieve sources
|
||||
|
||||
org="tree-sitter"
|
||||
repo="tree-sitter-${lang}"
|
||||
sourcedir="tree-sitter-${lang}/src"
|
||||
grammardir="tree-sitter-${lang}"
|
||||
|
||||
case "${lang}" in
|
||||
"dockerfile")
|
||||
org="camdencheek"
|
||||
;;
|
||||
"cmake")
|
||||
org="uyha"
|
||||
;;
|
||||
"elixir")
|
||||
org="elixir-lang"
|
||||
;;
|
||||
"go-mod")
|
||||
# The parser is called "gomod".
|
||||
lang="gomod"
|
||||
org="camdencheek"
|
||||
;;
|
||||
"heex")
|
||||
org="phoenixframework"
|
||||
;;
|
||||
"typescript")
|
||||
sourcedir="tree-sitter-typescript/typescript/src"
|
||||
grammardir="tree-sitter-typescript/typescript"
|
||||
;;
|
||||
"tsx")
|
||||
repo="tree-sitter-typescript"
|
||||
sourcedir="tree-sitter-typescript/tsx/src"
|
||||
grammardir="tree-sitter-typescript/tsx"
|
||||
;;
|
||||
"yaml")
|
||||
org="ikatyang"
|
||||
;;
|
||||
esac
|
||||
|
||||
git clone "https://github.com/${org}/${repo}.git" \
|
||||
--depth 1 --quiet
|
||||
cp "${grammardir}"/grammar.js "${sourcedir}"
|
||||
# We have to go into the source directory to compile, because some
|
||||
# C files refer to files like "../../common/scanner.h".
|
||||
cd "${sourcedir}"
|
||||
|
||||
### Build
|
||||
|
||||
cc -fPIC -c -I. parser.c
|
||||
# Compile scanner.c.
|
||||
if test -f scanner.c
|
||||
then
|
||||
cc -fPIC -c -I. scanner.c
|
||||
fi
|
||||
# Compile scanner.cc.
|
||||
if test -f scanner.cc
|
||||
then
|
||||
c++ -fPIC -I. -c scanner.cc
|
||||
fi
|
||||
# Link.
|
||||
if test -f scanner.cc
|
||||
then
|
||||
c++ -fPIC -shared *.o -o "libtree-sitter-${lang}.${soext}"
|
||||
else
|
||||
cc -fPIC -shared *.o -o "libtree-sitter-${lang}.${soext}"
|
||||
fi
|
||||
|
||||
### Copy out
|
||||
|
||||
mkdir -p "${topdir}/dist"
|
||||
cp "libtree-sitter-${lang}.${soext}" "${topdir}/dist"
|
||||
cd "${topdir}"
|
||||
rm -rf "${repo}"
|
||||
|
|
@ -1,458 +0,0 @@
|
|||
STARTER GUIDE ON WRITING MAJOR MODE WITH TREE-SITTER -*- org -*-
|
||||
|
||||
This document guides you on adding tree-sitter support to a major
|
||||
mode.
|
||||
|
||||
TOC:
|
||||
|
||||
- Building Emacs with tree-sitter
|
||||
- Install language definitions
|
||||
- Setup
|
||||
- Naming convention
|
||||
- Font-lock
|
||||
- Indent
|
||||
- Imenu
|
||||
- Navigation
|
||||
- Which-func
|
||||
- More features?
|
||||
- Common tasks (code snippets)
|
||||
- Manual
|
||||
- Appendix 1
|
||||
|
||||
* Building Emacs with tree-sitter
|
||||
|
||||
You can either install tree-sitter by your package manager, or from
|
||||
source:
|
||||
|
||||
git clone https://github.com/tree-sitter/tree-sitter.git
|
||||
cd tree-sitter
|
||||
make
|
||||
make install
|
||||
|
||||
Then pull the tree-sitter branch (or the master branch, if it has
|
||||
merged) and rebuild Emacs.
|
||||
|
||||
* Install language definitions
|
||||
|
||||
Tree-sitter by itself doesn’t know how to parse any particular
|
||||
language. We need to install language definitions (or “grammars”) for
|
||||
a language to be able to parse it. There are a couple of ways to get
|
||||
them.
|
||||
|
||||
You can use this script that I put together here:
|
||||
|
||||
https://github.com/casouri/tree-sitter-module
|
||||
|
||||
This script automatically pulls and builds language definitions for C,
|
||||
C++, Rust, JSON, Go, HTML, JavaScript, CSS, Python, Typescript,
|
||||
C#, etc. Better yet, I pre-built these language definitions for
|
||||
GNU/Linux and macOS, they can be downloaded here:
|
||||
|
||||
https://github.com/casouri/tree-sitter-module/releases/tag/v2.1
|
||||
|
||||
To build them yourself, run
|
||||
|
||||
git clone git@github.com:casouri/tree-sitter-module.git
|
||||
cd tree-sitter-module
|
||||
./batch.sh
|
||||
|
||||
and language definitions will be in the /dist directory. You can
|
||||
either copy them to standard dynamic library locations of your system,
|
||||
eg, /usr/local/lib, or leave them in /dist and later tell Emacs where
|
||||
to find language definitions by setting ‘treesit-extra-load-path’.
|
||||
|
||||
Language definition sources can be found on GitHub under
|
||||
tree-sitter/xxx, like tree-sitter/tree-sitter-python. The tree-sitter
|
||||
organization has all the "official" language definitions:
|
||||
|
||||
https://github.com/tree-sitter
|
||||
|
||||
Alternatively, you can use treesit-install-language-grammar command
|
||||
and follow its instructions. If everything goes right, it should
|
||||
automatically download and compile the language grammar for you.
|
||||
|
||||
* Setting up for adding major mode features
|
||||
|
||||
Start Emacs and load tree-sitter with
|
||||
|
||||
(require 'treesit)
|
||||
|
||||
Now check if Emacs is built with tree-sitter library
|
||||
|
||||
(treesit-available-p)
|
||||
|
||||
Make sure Emacs can find the language grammar you want to use
|
||||
|
||||
(treesit-language-available-p 'lang)
|
||||
|
||||
* Tree-sitter major modes
|
||||
|
||||
Tree-sitter modes should be separate major modes, so other modes
|
||||
inheriting from the original mode don't break if tree-sitter is
|
||||
enabled. For example js2-mode inherits js-mode, we can't enable
|
||||
tree-sitter in js-mode, lest js-mode would not setup things that
|
||||
js2-mode expects to inherit from. So it's best to use separate major
|
||||
modes.
|
||||
|
||||
If the tree-sitter variant and the "native" variant could share some
|
||||
setup, you can create a "base mode", which only contains the common
|
||||
setup. For example, python.el defines python-base-mode (shared),
|
||||
python-mode (native), and python-ts-mode (tree-sitter).
|
||||
|
||||
In the tree-sitter mode, check if we can use tree-sitter with
|
||||
treesit-ready-p, it will error out if tree-sitter is not ready.
|
||||
|
||||
In Emacs 30 we'll introduce some mechanism to more gracefully inherit
|
||||
modes and fallback to other modes.
|
||||
|
||||
* Naming convention
|
||||
|
||||
Use tree-sitter for text (documentation, comment), use treesit for
|
||||
symbol (variable, function).
|
||||
|
||||
* Font-lock
|
||||
|
||||
Tree-sitter works like this: You provide a query made of patterns and
|
||||
capture names, tree-sitter finds the nodes that match these patterns,
|
||||
tag the corresponding capture names onto the nodes and return them to
|
||||
you. The query function returns a list of (capture-name . node). For
|
||||
font-lock, we use face names as capture names. And the captured node
|
||||
will be fontified in their capture name.
|
||||
|
||||
The capture name could also be a function, in which case (NODE
|
||||
OVERRIDE START END) is passed to the function for fontification. START
|
||||
and END are the start and end of the region to be fontified. The
|
||||
function should only fontify within that region. The function should
|
||||
also allow more optional arguments with (&rest _), for future
|
||||
extensibility. For OVERRIDE check out the docstring of
|
||||
treesit-font-lock-rules.
|
||||
|
||||
** Query syntax
|
||||
|
||||
There are two types of nodes, named, like (identifier),
|
||||
(function_definition), and anonymous, like "return", "def", "(",
|
||||
"}". Parent-child relationship is expressed as
|
||||
|
||||
(parent (child) (child) (child (grand_child)))
|
||||
|
||||
Eg, an argument list (1, "3", 1) could be:
|
||||
|
||||
(argument_list "(" (number) (string) (number) ")")
|
||||
|
||||
Children could have field names in its parent:
|
||||
|
||||
(function_definition name: (identifier) type: (identifier))
|
||||
|
||||
Match any of the list:
|
||||
|
||||
["true" "false" "none"]
|
||||
|
||||
Capture names can come after any node in the pattern:
|
||||
|
||||
(parent (child) @child) @parent
|
||||
|
||||
The query above captures both parent and child.
|
||||
|
||||
["return" "continue" "break"] @keyword
|
||||
|
||||
The query above captures all the keywords with capture name
|
||||
"keyword".
|
||||
|
||||
These are the common syntax, see all of them in the manual
|
||||
("Parsing Program Source" section).
|
||||
|
||||
** Query references
|
||||
|
||||
But how do one come up with the queries? Take python for an example,
|
||||
open any python source file, type M-x treesit-explore-mode RET. Now
|
||||
you should see the parse-tree in a separate window, automatically
|
||||
updated as you select text or edit the buffer. Besides this, you can
|
||||
consult the grammar of the language definition. For example, Python’s
|
||||
grammar file is at
|
||||
|
||||
https://github.com/tree-sitter/tree-sitter-python/blob/master/grammar.js
|
||||
|
||||
Neovim also has a bunch of queries to reference:
|
||||
|
||||
https://github.com/nvim-treesitter/nvim-treesitter/tree/master/queries
|
||||
|
||||
The manual explains how to read grammar files in the bottom of section
|
||||
"Tree-sitter Language Definitions".
|
||||
|
||||
** Debugging queries
|
||||
|
||||
If your query has problems, use ‘treesit-query-validate’ to debug the
|
||||
query. It will pop a buffer containing the query (in text format) and
|
||||
mark the offending part in red.
|
||||
|
||||
** Code
|
||||
|
||||
To enable tree-sitter font-lock, set ‘treesit-font-lock-settings’ and
|
||||
‘treesit-font-lock-feature-list’ buffer-locally and call
|
||||
‘treesit-major-mode-setup’. For example, see
|
||||
‘python--treesit-settings’ in python.el. Below is a snippet of it.
|
||||
|
||||
Just like the current font-lock, if the to-be-fontified region already
|
||||
has a face (ie, an earlier match fontified part/all of the region),
|
||||
the new face is discarded rather than applied. If you want later
|
||||
matches always override earlier matches, use the :override keyword.
|
||||
|
||||
Each rule should have a :feature, like function-name,
|
||||
string-interpolation, builtin, etc. Users can then enable/disable each
|
||||
feature individually. See Appendix 1 at the bottom for a set of common
|
||||
features names.
|
||||
|
||||
#+begin_src elisp
|
||||
(defvar python--treesit-settings
|
||||
(treesit-font-lock-rules
|
||||
:feature 'comment
|
||||
:language 'python
|
||||
'((comment) @font-lock-comment-face)
|
||||
|
||||
:feature 'string
|
||||
:language 'python
|
||||
'((string) @font-lock-string-face
|
||||
(string) @contextual) ; Contextual special treatment.
|
||||
|
||||
:feature 'function-name
|
||||
:language 'python
|
||||
'((function_definition
|
||||
name: (identifier) @font-lock-function-name-face))
|
||||
|
||||
:feature 'class-name
|
||||
:language 'python
|
||||
'((class_definition
|
||||
name: (identifier) @font-lock-type-face))
|
||||
|
||||
...))
|
||||
#+end_src
|
||||
|
||||
Then in ‘python-mode’, enable tree-sitter font-lock:
|
||||
|
||||
#+begin_src elisp
|
||||
(treesit-parser-create 'python)
|
||||
(setq-local treesit-font-lock-settings python--treesit-settings)
|
||||
(setq-local treesit-font-lock-feature-list
|
||||
'((comment string function-name)
|
||||
(class-name keyword builtin)
|
||||
(string-interpolation decorator)))
|
||||
...
|
||||
(treesit-major-mode-setup)
|
||||
#+end_src
|
||||
|
||||
Concretely, something like this:
|
||||
|
||||
#+begin_src elisp
|
||||
(define-derived-mode python-mode prog-mode "Python"
|
||||
...
|
||||
(cond
|
||||
;; Tree-sitter.
|
||||
((treesit-ready-p 'python)
|
||||
(treesit-parser-create 'python)
|
||||
(setq-local treesit-font-lock-settings python--treesit-settings)
|
||||
(setq-local treesit-font-lock-feature-list
|
||||
'((comment string function-name)
|
||||
(class-name keyword builtin)
|
||||
(string-interpolation decorator)))
|
||||
(treesit-major-mode-setup))
|
||||
(t
|
||||
;; No tree-sitter, do nothing or fallback to another mode.
|
||||
...)))
|
||||
#+end_src
|
||||
|
||||
* Indent
|
||||
|
||||
Indent works like this: We have a bunch of rules that look like
|
||||
|
||||
(MATCHER ANCHOR OFFSET)
|
||||
|
||||
When the indentation process starts, point is at the BOL of a line, we
|
||||
want to know which column to indent this line to. Let NODE be the node
|
||||
at point, we pass this node to the MATCHER of each rule, one of them
|
||||
will match the node (eg, "this node is a closing bracket!"). Then we
|
||||
pass the node to the ANCHOR, which returns a point, eg, the BOL of the
|
||||
previous line. We find the column number of that point (eg, 4), add
|
||||
OFFSET to it (eg, 0), and that is the column we want to indent the
|
||||
current line to (4 + 0 = 4).
|
||||
|
||||
Matchers and anchors are functions that takes (NODE PARENT BOL &rest
|
||||
_). Matches return nil/non-nil for no match/match, and anchors return
|
||||
the anchor point. Below are some convenient builtin matchers and anchors.
|
||||
|
||||
For MATCHER we have
|
||||
|
||||
(parent-is TYPE) => matches if PARENT’s type matches TYPE as regexp
|
||||
(node-is TYPE) => matches NODE’s type
|
||||
(query QUERY) => matches if querying PARENT with QUERY
|
||||
captures NODE.
|
||||
|
||||
(match NODE-TYPE PARENT-TYPE NODE-FIELD
|
||||
NODE-INDEX-MIN NODE-INDEX-MAX)
|
||||
|
||||
=> checks everything. If an argument is nil, don’t match that. Eg,
|
||||
(match nil TYPE) is the same as (parent-is TYPE)
|
||||
|
||||
For ANCHOR we have
|
||||
|
||||
first-sibling => start of the first sibling
|
||||
parent => start of parent
|
||||
parent-bol => BOL of the line parent is on.
|
||||
standalone-parent => Like parent-bol but handles more edge cases
|
||||
prev-sibling => start of previous sibling
|
||||
no-indent => current position (don’t indent)
|
||||
prev-line => start of previous line
|
||||
|
||||
There is also a manual section for indent: "Parser-based Indentation".
|
||||
|
||||
When writing indent rules, you can use ‘treesit-check-indent’ to
|
||||
check if your indentation is correct. To debug what went wrong, set
|
||||
‘treesit--indent-verbose’ to non-nil. Then when you indent, Emacs
|
||||
tells you which rule is applied in the echo area.
|
||||
|
||||
#+begin_src elisp
|
||||
(defvar typescript-mode-indent-rules
|
||||
(let ((offset typescript-indent-offset))
|
||||
`((typescript
|
||||
;; This rule matches if node at point is "}", ANCHOR is the
|
||||
;; parent node’s BOL, and offset is 0.
|
||||
((node-is "}") parent-bol 0)
|
||||
((node-is ")") parent-bol 0)
|
||||
((node-is "]") parent-bol 0)
|
||||
((node-is ">") parent-bol 0)
|
||||
((node-is "\\.") parent-bol ,offset)
|
||||
((parent-is "ternary_expression") parent-bol ,offset)
|
||||
((parent-is "named_imports") parent-bol ,offset)
|
||||
((parent-is "statement_block") parent-bol ,offset)
|
||||
((parent-is "type_arguments") parent-bol ,offset)
|
||||
((parent-is "variable_declarator") parent-bol ,offset)
|
||||
((parent-is "arguments") parent-bol ,offset)
|
||||
((parent-is "array") parent-bol ,offset)
|
||||
((parent-is "formal_parameters") parent-bol ,offset)
|
||||
((parent-is "template_substitution") parent-bol ,offset)
|
||||
((parent-is "object_pattern") parent-bol ,offset)
|
||||
((parent-is "object") parent-bol ,offset)
|
||||
((parent-is "object_type") parent-bol ,offset)
|
||||
((parent-is "enum_body") parent-bol ,offset)
|
||||
((parent-is "arrow_function") parent-bol ,offset)
|
||||
((parent-is "parenthesized_expression") parent-bol ,offset)
|
||||
...))))
|
||||
#+end_src
|
||||
|
||||
To setup indentation for your major mode, set
|
||||
‘treesit-simple-indent-rules’ to your rules, and call
|
||||
‘treesit-major-mode-setup’:
|
||||
|
||||
#+begin_src elisp
|
||||
(setq-local treesit-simple-indent-rules typescript-mode-indent-rules)
|
||||
(treesit-major-mode-setup)
|
||||
#+end_src
|
||||
|
||||
* Imenu
|
||||
|
||||
Set ‘treesit-simple-imenu-settings’ and call
|
||||
‘treesit-major-mode-setup’.
|
||||
|
||||
* Navigation
|
||||
|
||||
Set ‘treesit-defun-type-regexp’ and call
|
||||
‘treesit-major-mode-setup’. You can additionally set
|
||||
‘treesit-defun-name-function’.
|
||||
|
||||
* Which-func
|
||||
|
||||
If you have an imenu implementation, set ‘which-func-functions’ to
|
||||
nil, and which-func will automatically use imenu’s data.
|
||||
|
||||
If you want an independent implementation for which-func, you can
|
||||
find the current function by ‘treesit-defun-at-point’.
|
||||
|
||||
* More features?
|
||||
|
||||
Obviously this list is just a starting point, if there are features in
|
||||
the major mode that would benefit from a parse tree, adding tree-sitter
|
||||
support for that would be great. But in the minimal case, just adding
|
||||
font-lock is awesome.
|
||||
|
||||
* Common tasks
|
||||
|
||||
How to...
|
||||
|
||||
** Get the buffer text corresponding to a node?
|
||||
|
||||
(treesit-node-text node)
|
||||
|
||||
BTW ‘treesit-node-string’ does different things.
|
||||
|
||||
** Scan the whole tree for stuff?
|
||||
|
||||
(treesit-search-subtree)
|
||||
(treesit-search-forward)
|
||||
(treesit-induce-sparse-tree)
|
||||
|
||||
** Move to next node that...?
|
||||
|
||||
(treesit-search-forward-goto)
|
||||
|
||||
** Get the root node?
|
||||
|
||||
(treesit-buffer-root-node)
|
||||
|
||||
** Get the node at point?
|
||||
|
||||
(treesit-node-at (point))
|
||||
|
||||
* Manual
|
||||
|
||||
I suggest you read the manual section for tree-sitter in Info. The
|
||||
section is Parsing Program Source. Typing
|
||||
|
||||
C-h i d m elisp RET g Parsing Program Source RET
|
||||
|
||||
will bring you to that section. You don’t need to read through every
|
||||
sentence, just read the text paragraphs and glance over function
|
||||
names.
|
||||
|
||||
* Appendix 1
|
||||
|
||||
Below is a set of common features used by built-in major mode.
|
||||
|
||||
Basic tokens:
|
||||
|
||||
delimiter ,.; (delimit things)
|
||||
operator == != || (produces a value)
|
||||
bracket []{}()
|
||||
misc-punctuation (other punctuation that you want to highlight)
|
||||
|
||||
constant true, false, null
|
||||
number
|
||||
keyword
|
||||
comment (includes doc-comments)
|
||||
string (includes chars and docstrings)
|
||||
string-interpolation f"text {variable}"
|
||||
escape-sequence "\n\t\\"
|
||||
function every function identifier
|
||||
variable every variable identifier
|
||||
type every type identifier
|
||||
property a.b <--- highlight b
|
||||
key { a: b, c: d } <--- highlight a, c
|
||||
error highlight parse error
|
||||
|
||||
Abstract features:
|
||||
|
||||
assignment: the LHS of an assignment (thing being assigned to), eg:
|
||||
|
||||
a = b <--- highlight a
|
||||
a.b = c <--- highlight b
|
||||
a[1] = d <--- highlight a
|
||||
|
||||
definition: the thing being defined, eg:
|
||||
|
||||
int a(int b) { <--- highlight a
|
||||
return 0
|
||||
}
|
||||
|
||||
int a; <-- highlight a
|
||||
|
||||
struct a { <--- highlight a
|
||||
int b; <--- highlight b
|
||||
}
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
NOTES ON TREESIT_RECORD_CHANGE
|
||||
|
||||
It is vital that Emacs informs tree-sitter of every change made to the
|
||||
buffer, lest tree-sitter's parse tree would be corrupted/out of sync.
|
||||
|
||||
All buffer changes in Emacs are made through functions in insdel.c
|
||||
(and casefiddle.c), I augmented functions in those files with calls to
|
||||
treesit_record_change. Below is a manifest of all the relevant
|
||||
functions in insdel.c as of Emacs 29:
|
||||
|
||||
Function Calls
|
||||
----------------------------------------------------------------------
|
||||
copy_text (*1)
|
||||
insert insert_1_both
|
||||
insert_and_inherit insert_1_both
|
||||
insert_char insert
|
||||
insert_string insert
|
||||
insert_before_markers insert_1_both
|
||||
insert_before_markers_and_inherit insert_1_both
|
||||
insert_1_both treesit_record_change
|
||||
insert_from_string insert_from_string_1
|
||||
insert_from_string_before_markers insert_from_string_1
|
||||
insert_from_string_1 treesit_record_change
|
||||
insert_from_gap_1 treesit_record_change
|
||||
insert_from_gap insert_from_gap_1
|
||||
insert_from_buffer treesit_record_change
|
||||
insert_from_buffer_1 (used by insert_from_buffer) (*2)
|
||||
replace_range treesit_record_change
|
||||
replace_range_2 (caller needs to call treesit_r_c)
|
||||
del_range del_range_1
|
||||
del_range_1 del_range_2
|
||||
del_range_byte del_range_2
|
||||
del_range_both del_range_2
|
||||
del_range_2 treesit_record_change
|
||||
|
||||
(*1) This functions is used only to copy from string to string when
|
||||
used outside of insdel.c, and when used inside insdel.c, the caller
|
||||
calls treesit_record_change.
|
||||
|
||||
(*2) This function is a static function, and insert_from_buffer is its
|
||||
only caller. So it should be fine to call treesit_record_change in
|
||||
insert_from_buffer but not insert_from_buffer_1. I also left a
|
||||
reminder comment.
|
||||
|
||||
|
||||
As for casefiddle.c, do_casify_unibyte_region and
|
||||
do_casify_multibyte_region modifies buffer, but they are static
|
||||
functions and are called by casify_region, which calls
|
||||
treesit_record_change. Other higher-level functions calls
|
||||
casify_region to do the work.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
-*-mode: text; coding: utf-8;-*-
|
||||
|
||||
Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002-2019 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
Importing a new Unicode Standard version into Emacs
|
||||
|
|
@ -11,38 +11,15 @@ Emacs uses the following files from the Unicode Character Database
|
|||
|
||||
. UnicodeData.txt
|
||||
. Blocks.txt
|
||||
. BidiBrackets.txt
|
||||
. BidiMirroring.txt
|
||||
. BidiBrackets.txt
|
||||
. IVD_Sequences.txt
|
||||
. NormalizationTest.txt
|
||||
. PropertyValueAliases.txt
|
||||
. ScriptExtensions.txt
|
||||
. Scripts.txt
|
||||
. SpecialCasing.txt
|
||||
. confusables.txt
|
||||
. emoji-data.txt
|
||||
. emoji-zwj-sequences.txt
|
||||
. emoji-sequences.txt
|
||||
. BidiCharacterTest.txt
|
||||
|
||||
Emacs also uses the file emoji-test.txt which should be imported from
|
||||
the Unicode's Public/emoji/ directory, and IdnaMappingTable.txt from
|
||||
the Public/idna/ directory.
|
||||
|
||||
First, the first 14 files, emoji-test.txt and IdnaMappingTable.txt
|
||||
need to be copied into admin/unidata/, and the file
|
||||
https://www.unicode.org/copyright.html should be copied over
|
||||
copyright.html in admin/unidata (some of them might need trailing
|
||||
whitespace removed before they can be committed to the Emacs
|
||||
repository).
|
||||
|
||||
Next, review the assignment of default values of the Bidi Class
|
||||
property to blocks in the file extracted/DerivedBidiClass.txt from the
|
||||
UCD (search for "unassigned" in that file). Any changes should be
|
||||
reflected in the unidata-gen.el file, where it sets up the default
|
||||
values around line 210.
|
||||
|
||||
Then Emacs should be rebuilt for them to take effect. Rebuilding
|
||||
First, the first 7 files need to be copied into admin/unidata/, and
|
||||
then Emacs should be rebuilt for them to take effect. Rebuilding
|
||||
Emacs updates several derived files elsewhere in the Emacs source
|
||||
tree, mainly in lisp/international/.
|
||||
|
||||
|
|
@ -51,10 +28,7 @@ files, pay attention to any warning or error messages. In particular,
|
|||
admin/unidata/unidata-gen.el will complain if UnicodeData.txt defines
|
||||
new bidirectional attributes of characters, because unidata-gen.el,
|
||||
bidi.c and dispextern.h need to be updated in that case; failure to do
|
||||
so will cause aborts in redisplay. unidata-gen.el will also complain
|
||||
if the format of the Unicode Copyright notice in copyright.html
|
||||
changed in significant ways; in that case, update the regular
|
||||
expression in unidata-gen-file used to extract the copyright string.
|
||||
so will cause aborts in redisplay.
|
||||
|
||||
Next, review the changes in UnicodeData.txt vs the previous version
|
||||
used by Emacs. Any changes, be it introduction of new scripts or
|
||||
|
|
@ -66,12 +40,7 @@ and see if any changes in admin/unidata/blocks.awk are required.
|
|||
|
||||
The setting of char-width-table around line 1200 of characters.el
|
||||
should be checked against the latest version of the Unicode file
|
||||
EastAsianWidth.txt, and any discrepancies fixed: double-width
|
||||
characters are those marked with W or F in that file. Zero-width
|
||||
characters are not taken from EastAsianWidth.txt, they are those whose
|
||||
Unicode General Category property is one of Mn, Me, or Cf, and also
|
||||
Hangul jungseong and jongseong characters (a.k.a. "Jamo medial vowels"
|
||||
and "Jamo final consonants").
|
||||
EastAsianWidth.txt, and any discrepancies fixed.
|
||||
|
||||
Any new scripts added by UnicodeData.txt will also need updates to
|
||||
script-representative-chars defined in fontset.el, and also the list
|
||||
|
|
@ -80,9 +49,6 @@ of OTF script tags in otf-script-alist, whose source is on this page:
|
|||
https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags
|
||||
|
||||
Other databases in fontset.el might also need to be updated as needed.
|
||||
One notable place to check is the function setup-default-fontset,
|
||||
where new scripts will generally need some addition, most probably to
|
||||
the list of "simple" scripts (search for "Simple").
|
||||
|
||||
The function 'ucs-names', defined in lisp/international/mule-cmds.el,
|
||||
might need to be updated because it knows about used and unused ranges
|
||||
|
|
@ -99,51 +65,7 @@ regarding failing lines.
|
|||
|
||||
The file BidiCharacterTest.txt should be copied to the test suite, and
|
||||
if its format has changed, the file biditest.el there should be
|
||||
modified to follow suit. If there's trailing whitespace in
|
||||
BidiCharacterTest.txt, it should be removed before committing the new
|
||||
version.
|
||||
|
||||
src/macuvs.h is a generated file, but if it has changed as a result
|
||||
of the updates, please commit it as well (see
|
||||
admin/unidata/Makefile.in for an explanation).
|
||||
|
||||
Visit "emoji-data.txt" with the rebuilt Emacs, and check that an
|
||||
appropriate font is being used for the emoji (by default Emacs uses
|
||||
"Noto Color Emoji"). Running the following command in that buffer
|
||||
will give you an idea of which codepoints are not supported by
|
||||
whichever font Emacs is using.
|
||||
|
||||
(defun check-emoji-coverage (font-name-regexp)
|
||||
"Display a buffer containing emoji codepoints for which FONT-NAME is not used.
|
||||
This must be run from a buffer in the format of emoji-data.txt.
|
||||
FONT-NAME-REGEXP is checked using `string-match'."
|
||||
(interactive "MFont Name: ")
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(let (res char name ifont)
|
||||
(while (re-search-forward "; Emoji_Presentation [^(]+(\\(.\\)[).]" nil t)
|
||||
(setq char (aref (match-string 1) 0))
|
||||
(setq ifont (car (internal-char-font nil char)))
|
||||
(when ifont
|
||||
(setq name (font-xlfd-name ifont)))
|
||||
(if (or (not ifont) (not (string-match font-name-regexp name)))
|
||||
(setq res (concat (string char) res))))
|
||||
(when res
|
||||
(with-output-to-temp-buffer "*Check-Emoji-Coverage*"
|
||||
(princ (format "Font not matching '%s' was used for the following characters:\n%s"
|
||||
font-name-regexp (reverse res))))))))
|
||||
|
||||
Visit "emoji-zwj-sequences.txt" and "emoji-sequences.txt" with the
|
||||
rebuilt Emacs, and check that the sample sequences are composed
|
||||
properly. Also check the Unicode style chart file available at
|
||||
https://unicode.org/emoji/charts/emoji-style.txt for any issues
|
||||
involving VS-15 and VS-16, if so you may need to update the value
|
||||
generated for auto-composition-emoji-eligible-codepoints by
|
||||
admin/unidata/emoji-zwj.awk. Note that your emoji font might not have
|
||||
glyphs for the newest codepoints yet.
|
||||
|
||||
Finally, etc/NEWS should be updated to announce the support for the
|
||||
new Unicode version.
|
||||
modified to follow suit.
|
||||
|
||||
Problems, fixmes and other unicode-related issues
|
||||
-------------------------------------------------------------
|
||||
|
|
@ -322,6 +244,7 @@ nontrivial changes to the build process.
|
|||
|
||||
These files contain characters that cannot be encoded in UTF-8.
|
||||
|
||||
lisp/international/titdic-cnv.el
|
||||
lisp/language/ethio-util.el
|
||||
lisp/language/ethiopic.el
|
||||
lisp/language/ind-util.el
|
||||
|
|
@ -329,7 +252,6 @@ nontrivial changes to the build process.
|
|||
lisp/language/tibetan.el
|
||||
lisp/leim/quail/ethiopic.el
|
||||
lisp/leim/quail/tibetan.el
|
||||
lisp/international/titdic-cnv.el
|
||||
|
||||
* binary files
|
||||
|
||||
|
|
|
|||
|
|
@ -1,33 +1,10 @@
|
|||
-*- outline -*-
|
||||
|
||||
Copyright (C) 2013-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2013-2019 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
NOTES FOR EMACS WWW PAGES
|
||||
|
||||
* Access
|
||||
|
||||
Anyone with write access to the Emacs code repository has the same
|
||||
access to the web pages. See <https://savannah.gnu.org/cvs/?group=emacs>
|
||||
for instructions. After you commit a change to the CVS repository,
|
||||
it normally appears automatically on www.gnu.org within a few minutes.
|
||||
The basic procedure is:
|
||||
|
||||
Initial checkout:
|
||||
cvs -z3 -d:ext:<membername>@cvs.savannah.gnu.org:/web/emacs co emacs
|
||||
|
||||
Update from repository:
|
||||
cvs up -dP
|
||||
|
||||
You can use Emacs's VC mode to commit files without having to worry
|
||||
about knowing CVS syntax. You may find M-x cvs-examine a useful,
|
||||
more specialized, alternative to M-x vc-dir.
|
||||
|
||||
* Manual pages
|
||||
|
||||
The scripts admin/make-manuals, admin/upload-manuals can be used to do
|
||||
a complete update of the on-line manual pages (e.g. after a release).
|
||||
|
||||
* Renaming pages, redirects
|
||||
|
||||
Sometimes you want to move a page to a new location.
|
||||
|
|
@ -87,21 +64,6 @@ work; see manual/.htaccess in the repository. You only have to add a
|
|||
single redirect for every given external manual, you can redirect
|
||||
html_node to hmtl_node and html_mono to html_mono.
|
||||
|
||||
* Why CVS?
|
||||
|
||||
Savannah supports other VCS, and no-one is especially attached to CVS.
|
||||
Rather, CVS is the only supported mechanism for getting the changes
|
||||
onto www.gnu.org. See eg
|
||||
https://lists.gnu.org/r/bug-gnulib/2012-12/msg00072.html
|
||||
|
||||
* CVS alternatives
|
||||
|
||||
To use something other than CVS, convert the web-pages CVS repository
|
||||
to the other VCS, then set up a two-way sync between them.
|
||||
It needs to be two-way in case eg GNU webmasters make a change to the CVS.
|
||||
Ref e.g.
|
||||
https://github.com/mikjo/bigitr
|
||||
https://lists.gnu.org/r/savannah-hackers-public/2013-04/msg00022.html
|
||||
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
|
|
|||
|
|
@ -3,38 +3,7 @@ HOW TO MAINTAIN COPYRIGHT YEARS FOR GNU EMACS
|
|||
Maintaining copyright years is now very simple: every time a new year
|
||||
rolls around, add that year to every FSF (and AIST) copyright notice.
|
||||
Do this by running the 'admin/update-copyright' script on a fresh repo
|
||||
checkout, redirecting its output to a file, so that you could later
|
||||
examine the files that don't have copyright notices. Inspect the
|
||||
results for plausibility, then commit them.
|
||||
|
||||
A few known problems with the build-aux/update-copyright script:
|
||||
|
||||
. it doesn't update config.bat, msdos/depfiles.bat,
|
||||
nt/configure.bat, etc/tutorials/TUTORIAL.cn,
|
||||
etc/tutorials/TUTORIAL.el_GR, and etc/tutorials/TUTORIAL.he
|
||||
because the "Copyright" statement begins in these files
|
||||
after a prefix that is more than 5 characters long
|
||||
. it doesn't update etc/tutorials/TUTORIAL.nl and
|
||||
etc/tutorials/TUTORIAL.ro for some reason
|
||||
. it doesn't update the second Copyright notice, the one that gets
|
||||
output into PDF and PS, in etc/refcards/ru-refcard.tex
|
||||
. it doesn't update etc/refcards/gnus-refcard.tex and
|
||||
doc/misc/org.org because their Copyright statements have a
|
||||
non-standard format
|
||||
. several README and XPM files under etc/images/, and also
|
||||
etc/refcards/README, msdos/README, and nt/icons/README aren't
|
||||
updated either
|
||||
|
||||
These files need to be updated by hand.
|
||||
|
||||
Next, run "M-x set-copyright" from admin.el, which updates several
|
||||
copyright notices in the Emacs sources.
|
||||
|
||||
You should also run the etags test suite in test/manual/etags/. It
|
||||
will most probably fail because the contents of the test files changes
|
||||
due to copyright years update, so you need to move each ETAGS and
|
||||
CTAGS file produced by the test runs into the corresponding
|
||||
ETAGS.good* and CTAGS.good files, and then commit the new test files.
|
||||
checkout. Inspect the results for plausibility, then commit them.
|
||||
|
||||
There's no need to worry about whether an individual file has changed
|
||||
in a given year - it's sufficient that Emacs as a whole has changed.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001-2019 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
Emacs for Windows
|
||||
|
|
|
|||
277
admin/nt/README-ftp-server
Normal file
277
admin/nt/README-ftp-server
Normal file
|
|
@ -0,0 +1,277 @@
|
|||
Copyright (C) 2001-2019 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
Precompiled Distributions of
|
||||
Emacs for Windows
|
||||
|
||||
Version 24.3
|
||||
|
||||
March 18, 2013
|
||||
|
||||
This directory contains precompiled distributions for GNU Emacs on
|
||||
Windows (versions before Windows 95 and NT4 are not supported).
|
||||
This port is a part of the standard GNU Emacs distribution from the
|
||||
Free Software Foundation; the precompiled distributions are provided
|
||||
here for convenience since the majority of Windows users are not
|
||||
accustomed to compiling programs themselves. Corresponding source
|
||||
can be found in the parent directory in emacs-24.3.tar.gz.
|
||||
|
||||
* IMPORTANT LEGAL REMINDER
|
||||
|
||||
If you want to redistribute any of the precompiled distributions of
|
||||
Emacs, be careful to check the implications of the GPL. For instance,
|
||||
if you put the emacs-24.3-bin-i386.zip file from this directory on
|
||||
an Internet site, you must arrange to distribute the source files of
|
||||
the SAME version (i.e. ../emacs-24.3.tar.gz).
|
||||
|
||||
Making a link to our copy of the source is NOT sufficient, since we
|
||||
might upgrade to a new version while you are still distributing the
|
||||
old binaries.
|
||||
|
||||
|
||||
* Files in this directory
|
||||
|
||||
+ emacs-24.3-bin-i386.zip
|
||||
Windows binaries of Emacs-24.3, with all lisp code and documentation
|
||||
included.
|
||||
|
||||
Download this file if you want a single installation package, and
|
||||
are not interested in the C source code for Emacs. After
|
||||
unpacking, you can optionally run the file bin/addpm.exe to have
|
||||
Emacs add icons to the Start Menu.
|
||||
|
||||
If you need the C source code at a later date, it will be safe to
|
||||
unpack the source distribution on top of this installation.
|
||||
|
||||
+ libXpm-3.5.8-w32-src.zip
|
||||
Source code required to compile libXpm-3.5.8 on Windows. Contains
|
||||
a basic Makefile for compiling with mingw32 and a .def file for
|
||||
generating a DLL with the appropriate exports in addition to the
|
||||
source code to provide the subset of functionality Emacs uses from
|
||||
libXpm. This corresponds to the libXpm.dll in emacs-24.3-bin-i386.zip.
|
||||
|
||||
* Prerequisites for running Emacs on Windows 9X
|
||||
|
||||
Using Emacs in GUI mode on Windows 95/98/Me requires the UNICOWS.DLL
|
||||
dynamic library, which provides MSLU, the Microsoft Unicode Layer
|
||||
for Windows 9X. You can freely download it from the Microsoft site.
|
||||
|
||||
* Image support
|
||||
|
||||
Emacs 24.3 contains support for images, however for most image
|
||||
formats supporting libraries are required. This distribution has
|
||||
been tested with the libraries that are distributed with GTK for
|
||||
Windows (http://www.gtk.org/download/win32.php), and the libraries
|
||||
found at http://gnuwin32.sourceforge.net/. The following image
|
||||
formats are supported:
|
||||
|
||||
PBM/PGM/PPM: Supported natively by Emacs. This format is used for
|
||||
the black and white versions of the toolbar icons.
|
||||
|
||||
XPM: a Windows port of the XPM library corresponding to the x.org
|
||||
release of X11R7.3 is included with the binary distribution, but
|
||||
can be replaced by other versions with the name xpm4.dll,
|
||||
libxpm-nox4.dll or libxpm.dll.
|
||||
|
||||
PNG: requires the PNG reference library 1.4 or later, which will
|
||||
be named libpng14.dll or libpng14-14.dll. LibPNG requires zlib,
|
||||
which should come from the same source as you got libpng.
|
||||
Starting with Emacs 23.3, the precompiled Emacs binaries are
|
||||
built with libpng 1.4.x and later, and are incompatible with
|
||||
earlier versions of libpng DLLs. So if you have libpng 1.2.x,
|
||||
the PNG support will not work, and you will have to download
|
||||
newer versions.
|
||||
|
||||
JPEG: requires the Independent JPEG Group's libjpeg 6b or later,
|
||||
which will be called jpeg62.dll, libjpeg.dll, jpeg-62.dll or jpeg.dll.
|
||||
|
||||
TIFF: requires libTIFF 3.0 or later, which will be called libtiff3.dll
|
||||
or libtiff.dll.
|
||||
|
||||
GIF: requires libungif or giflib 4.1 or later, which will be
|
||||
called giflib4.dll, libungif4.dll or libungif.dll.
|
||||
|
||||
SVG: not compiled into the binary release, but available if you
|
||||
compile Emacs yourself if you have development packages for all the
|
||||
dependencies. Requires many libraries from GTK and Gnome
|
||||
as well as the base librsvg library. Known to crash Emacs on many
|
||||
sample images.
|
||||
|
||||
* XML support
|
||||
|
||||
In order to support XML via libxml2 at runtime, a libxml2-enabled
|
||||
Emacs must be able to find the relevant DLLs during startup; failure
|
||||
to do so is not an error, but libxml2 features won't be available to
|
||||
the running session.
|
||||
|
||||
You can get pre-built binaries (including any required DLL and the
|
||||
header files) at http://sourceforge.net/projects/ezwinports/files/.
|
||||
|
||||
* Distributions in .tar.gz and .zip format
|
||||
|
||||
Emacs is distributed primarily as source code in a large gzipped tar
|
||||
file (*.tar.gz). Because Emacs is quite large and therefore
|
||||
difficult to download over unreliable connections, the Windows
|
||||
binaries are provided in two combinations. The complete lisp source
|
||||
plus executables (bin), and executables only (barebin) for unpacking
|
||||
over the top of the source distribution. Formerly, we used the same
|
||||
.tar.gz format but since there are no longer legal problems with
|
||||
.zip files, and the latest versions of Windows support these
|
||||
natively, the Windows binaries of Emacs are now distributed as .zip
|
||||
files.
|
||||
|
||||
* Distributions for non-x86 platforms
|
||||
|
||||
Distributions for non-x86 platforms are no longer supplied. Older
|
||||
platforms supported by Windows NT no longer seem to be in demand,
|
||||
and Emacs is yet to be ported to 64 bit Windows platforms. If you
|
||||
are willing to help port Emacs 24 to 64 bit versions of Windows,
|
||||
your contribution will be welcome on the emacs-devel mailing list.
|
||||
|
||||
* Unpacking distributions
|
||||
|
||||
Ports of GNU gzip and GNU tar for handling the source distribution file
|
||||
format can be found in several places that distribute ports of GNU
|
||||
programs, for example:
|
||||
|
||||
Cygwin: http://www.cygwin.com/
|
||||
GnuWin32: http://gnuwin32.sourceforge.net/
|
||||
|
||||
Many other popular file compression utilities for Windows are also
|
||||
able to handle gzipped tar files. 7zip is one free Windows graphical
|
||||
program that is able to handle many archive formats.
|
||||
|
||||
Open a command prompt (MSDOS) window. Decide on a directory in which
|
||||
to place Emacs. Move the distribution to that directory, and then
|
||||
unpack it as follows.
|
||||
|
||||
If you have the gzipped tar version, use gunzip to uncompress the tar
|
||||
file on the fly, and pipe the output through tar with the "xvf" flags
|
||||
to extract the files from the tar file:
|
||||
|
||||
% gunzip -c some.tar.gz | tar xvf -
|
||||
|
||||
You may see messages from tar about not being able to change the
|
||||
modification time on directories, and from gunzip complaining about a
|
||||
broken pipe. These messages are harmless and you can ignore them. On
|
||||
Windows NT, unpacking tarballs this way leaves them in compressed
|
||||
form, taking up less space on disk. Unfortunately, on Windows 95 and
|
||||
98, a large temporary file is created, so it is better to use the
|
||||
djtarnt.exe program, which performs the equivalent operation in one
|
||||
step:
|
||||
|
||||
% djtarnt -x some.tar.gz
|
||||
|
||||
You may be prompted to rename or overwrite directories when using
|
||||
djtarnt: simply type return to continue (this is harmless).
|
||||
|
||||
Zip files can be unpacked using unzip.exe from info-zip.org
|
||||
if you do not already have other tools to do this.
|
||||
|
||||
% unzip some.zip
|
||||
|
||||
The precompiled binaries can be unpacked using unzip.exe from info-zip.org
|
||||
if you do not already have other tools to do this.
|
||||
|
||||
% unzip some.zip
|
||||
|
||||
Once you have unpacked a precompiled distribution of Emacs, it should
|
||||
have the following subdirectories:
|
||||
|
||||
bin etc info lisp site-lisp
|
||||
|
||||
|
||||
* Unpacking with other tools
|
||||
|
||||
If you do use other utility programs to unpack the distribution, check
|
||||
the following to be sure the distribution was not corrupted:
|
||||
|
||||
+ Be sure to disable the CR/LF translation or the executables will
|
||||
be unusable. Older versions of WinZip would enable this
|
||||
translation by default when unpacking .tar files. If you are
|
||||
using WinZip, disable it. (I don't have WinZip myself, and I do
|
||||
not know the specific commands necessary to disable it.)
|
||||
|
||||
+ Check that filenames were not truncated to 8.3. For example, there
|
||||
should be a file lisp/abbrevlist.el; if this has been truncated to
|
||||
abbrevli.el, your distribution has been corrupted while unpacking
|
||||
and Emacs will not start.
|
||||
|
||||
+ Check that filenames were not changed by your web-browser. Some
|
||||
proprietary web-browsers save .tar.gz files as .tar.tar. You might
|
||||
like to consider switching to a Free modern browser if your browser
|
||||
has this bug.
|
||||
|
||||
+ I've also had reports that some older "gnuwin32" port of tar
|
||||
corrupts the executables. Use the latest version from the gnuwin32
|
||||
site or another port of tar instead.
|
||||
|
||||
If you believe you have unpacked the distributions correctly and are
|
||||
still encountering problems, see the section on Further Information
|
||||
below.
|
||||
|
||||
|
||||
* Compiling from source
|
||||
|
||||
If you would like to compile Emacs from source, download the source
|
||||
distribution, unpack it in the same manner as a precompiled
|
||||
distribution, and look in the file nt/INSTALL for detailed
|
||||
directions. It is recommended to use GCC 2.95 or later with MinGW
|
||||
support to compile the source. The port of GCC included in Cygwin
|
||||
is supported, but check the nt/INSTALL file if you have trouble
|
||||
since some builds of GNU make aren't supported.
|
||||
|
||||
|
||||
* Further information
|
||||
|
||||
The Emacs on MS Windows FAQ is distributed with Emacs (info
|
||||
manual "efaq-w32"), and at
|
||||
|
||||
https://www.gnu.org/software/emacs/manual/efaq-w32.html
|
||||
|
||||
In addition to the FAQ, there is a mailing list for discussing issues
|
||||
related to the Windows port of Emacs. For information about the
|
||||
list, see this Web page:
|
||||
|
||||
https://lists.gnu.org/mailman/listinfo/help-emacs-windows
|
||||
|
||||
To ask questions on the mailing list, send email to
|
||||
help-emacs-windows@gnu.org. (You don't need to subscribe for that.)
|
||||
To subscribe to the list or unsubscribe from it, fill the form you
|
||||
find at https://mail.gnu.org/mailman/listinfo/help-emacs-windows as
|
||||
explained there.
|
||||
|
||||
Another valuable source of information and help which should not be
|
||||
overlooked is the various Usenet news groups dedicated to Emacs.
|
||||
These are particularly good for help with general issues which aren't
|
||||
specific to the Windows port of Emacs. The main news groups to use
|
||||
for seeking help are:
|
||||
|
||||
gnu.emacs.help
|
||||
comp.emacs
|
||||
|
||||
There are also fairly regular postings and announcements of new or
|
||||
updated Emacs packages on this group:
|
||||
|
||||
gnu.emacs.sources
|
||||
|
||||
Enjoy!
|
||||
|
||||
Most of this README was contributed by former maintainers Andrew Innes
|
||||
(andrewi@gnu.org) and Jason Rumney (jasonr@gnu.org).
|
||||
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
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/.
|
||||
|
|
@ -3,15 +3,6 @@ Distribution Build Scripts for Windows
|
|||
|
||||
The scripts are used to build the binary distribution zip files for windows.
|
||||
|
||||
Environment
|
||||
-----------
|
||||
|
||||
A full installation of msys2 is required along for the build. The
|
||||
various dependencies of Emacs need to be installed also. These change
|
||||
over time, but are listed in build-deps-zips.py.
|
||||
|
||||
|
||||
|
||||
File System Organization
|
||||
------------------------
|
||||
|
||||
|
|
@ -24,19 +15,15 @@ The file system needs to be organized like so:
|
|||
|
||||
~/emacs-build/git
|
||||
|
||||
Contains checkouts and worktrees of the Emacs git repository,
|
||||
organized according to branches.
|
||||
Contains a checkout of the Emacs git repository, organized according
|
||||
to branches, with git worktree
|
||||
|
||||
~/emacs-build/git/master
|
||||
~/emacs-build/git/emacs-$branch
|
||||
|
||||
A checkout out of the master branch of the Emacs git repository.
|
||||
|
||||
~/emacs-build/git/emacs-$major-version
|
||||
|
||||
A worktree of the git repository containing the current release
|
||||
A branch of the git repository containing the current release
|
||||
branch. This has to be created by hand.
|
||||
|
||||
~/emacs-build/git/emacs-$release-version
|
||||
~/emacs-build/git/emacs-$version
|
||||
|
||||
A branch of the git repository containing the last release. The
|
||||
build-zips.sh file will create this for you.
|
||||
|
|
@ -46,21 +33,26 @@ build-zips.sh file will create this for you.
|
|||
A location for the dependencies. This needs to contain two zip files
|
||||
with the dependencies. build-dep-zips.py will create these files for you.
|
||||
|
||||
~/emacs-build/deps/libXpm
|
||||
~/emacs-build/deps/libXpm/i686
|
||||
~/emacs-build/deps/libXpm/x86_64
|
||||
|
||||
Contain libXpm-noX4.dll. This file is used to load images for the
|
||||
splash screen, menu items and so on. Emacs runs without it, but looks
|
||||
horrible. The files came original from msys2, and contains no
|
||||
dependencies. It has to be placed manually (but probably never
|
||||
need updating).
|
||||
horrible. The x86_64 comes from msys2, while the i686 comes from
|
||||
ezwinports because it itself has no dependencies. These have to be
|
||||
placed manually (but probably never need updating).
|
||||
|
||||
~/emacs-build/build/$version
|
||||
|
||||
~/emacs-build/build/$version/i686
|
||||
~/emacs-build/build/$version/x86_64
|
||||
|
||||
We build Emacs out-of-source here. This directory is created by
|
||||
build-zips.sh. This directory can be freely deleted after zips have
|
||||
been created
|
||||
|
||||
~/emacs-build/install/$version
|
||||
|
||||
~/emacs-build/install/$version/i686
|
||||
~/emacs-build/install/$version/x86_64
|
||||
|
||||
We install Emacs here. This directory is created by build-zips.sh.
|
||||
This directory can and *should* be deleted after zips have been
|
||||
|
|
@ -76,8 +68,7 @@ uploaded.
|
|||
Build Process
|
||||
-------------
|
||||
|
||||
|
||||
### For each major version
|
||||
For each major version:
|
||||
|
||||
The dependencies files need to be created. This can be around the time
|
||||
of the pre-tests, then used for all releases of that version, to
|
||||
|
|
@ -87,8 +78,8 @@ To do this:
|
|||
|
||||
Update msys to the latest version with `pacman -Syu`.
|
||||
|
||||
Then run build-dep-zips.py, in the ~/emacs-build/deps directory. Two
|
||||
zips will be created, containing the dependencies, as well as the
|
||||
Then run build-dep-zips.py, in this directory. Three zips will be
|
||||
created, containing the 64bit and 32bit dependencies, as well as the
|
||||
source for these.
|
||||
|
||||
For emacs release or pre-test version:
|
||||
|
|
@ -99,46 +90,3 @@ with the tag of the last version.
|
|||
Then run `build-zips.sh` in this worktree. Eventually, four new zip
|
||||
files will be created in ~/emacs-upload from where they can be signed
|
||||
and uploaded with `gnupload`.
|
||||
|
||||
|
||||
### For snapshots from Master
|
||||
|
||||
Snapshots are generally created from master when there is a release
|
||||
branch on which a release has already been created. At this point,
|
||||
only pre-tests or full releases need to happen from the release
|
||||
branch.
|
||||
|
||||
To do this:
|
||||
|
||||
Update msys to the latest version with `pacman -Syu`.
|
||||
|
||||
Then run build-dep-zips.py, in ~/emacs-build/deps directory. Two zips
|
||||
will be created, containing the dependencies, as well as the source
|
||||
for these. These deps files contain the date of creation in their
|
||||
name. The deps file can be reused as desired, or a new version
|
||||
created. Where multiple deps files exist, the most recent will be
|
||||
used.
|
||||
|
||||
Now, run `build-zips.sh -s` to build a snapshot release.
|
||||
|
||||
|
||||
### For snapshots from a Release Branch
|
||||
|
||||
Snapshots can be built from a release branch; this is really only
|
||||
useful before a pre-test has happened.
|
||||
|
||||
The process is the same as for building from the master branch, except
|
||||
that the release branch should already exist as a worktree, and the
|
||||
version number must be added to the command line with `build-zips.sh
|
||||
-V 27 -s`. The final zips will be named after the branch rather than
|
||||
the version (e.g emacs-27-2019-12-26.zip) rather than the Emacs
|
||||
version (e.g emacs-27.0.50.zip).
|
||||
|
||||
|
||||
### For snapshots from another branch
|
||||
|
||||
Snapshots can be build from any other branch. There is rarely a need
|
||||
to do this, except where some significant, wide-ranging feature is
|
||||
being added on a feature branch. In this case, the branch can be
|
||||
given using `build-zips.sh -b pdumper -s` for example. Any "/"
|
||||
characters in the branch title are replaced.
|
||||
|
|
|
|||
|
|
@ -1,94 +1,45 @@
|
|||
Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
Precompiled Distributions of
|
||||
Emacs for Windows
|
||||
|
||||
Jan 14, 2021
|
||||
|
||||
This directory contains precompiled distributions for GNU Emacs on
|
||||
Windows
|
||||
|
||||
IMPORTANT LEGAL REMINDER
|
||||
========================
|
||||
|
||||
If you want to redistribute any of the precompiled distributions of
|
||||
Emacs, be careful to check the implications of the GPL. For instance,
|
||||
if you put the compiled file from this directory on an Internet site,
|
||||
you must arrange to distribute the source files of the SAME version.
|
||||
|
||||
Making a link to our copy of the source is NOT sufficient, since we
|
||||
might upgrade to a new version while you are still distributing the
|
||||
old binaries.
|
||||
|
||||
|
||||
Windows Binaries
|
||||
================
|
||||
|
||||
Currently, we provide three different binary packages for Emacs, which
|
||||
Currently, we provide four different binary packages for Emacs, which
|
||||
are:
|
||||
|
||||
emacs-$VERSION-installer.exe
|
||||
emacs-$VERSION-x86_64.zip
|
||||
|
||||
Contains Emacs with dependencies as an installer
|
||||
package. Mostly, this is the best one to install.
|
||||
Contains a 64-bit build of Emacs with dependencies. Mostly, this is
|
||||
the best one to install.
|
||||
|
||||
emacs-$VERSION.zip
|
||||
emacs-$VERSION-x86_64-no-deps.zip
|
||||
|
||||
Contains Emacs with dependencies. This contains the same files as the
|
||||
installer but as a zip file which some users may prefer.
|
||||
Contains a 64-bit build of Emacs without any dependencies. This may be
|
||||
useful if you wish to install where the dependencies are already
|
||||
available, or if you want the small possible Emacs.
|
||||
|
||||
emacs-$VERSION-no-deps.zip
|
||||
emacs-$VERSION-i686.zip
|
||||
|
||||
Contains Emacs without any dependencies. This may be useful if you
|
||||
wish to install where the dependencies are already available, or if
|
||||
you want the small possible Emacs.
|
||||
Contains a 32-bit build of Emacs with dependencies. This is useful for
|
||||
running on a 32-bit machine.
|
||||
|
||||
emacs-$VERSION-i686-no-deps.zip
|
||||
|
||||
Contains a 32-bit build of Emacs without dependencies
|
||||
|
||||
In addition, we provide the following files which will not be useful
|
||||
for most end-users.
|
||||
|
||||
emacs-$VERSION-deps.zip
|
||||
emacs-27-x86_64-deps.zip
|
||||
|
||||
The dependencies. Unzipping this file on top of
|
||||
emacs-$VERSION-no-deps.zip should result in the same install as
|
||||
emacs-$VERSION.zip.
|
||||
emacs-$VERSION-x86_64-no-deps.zip should result in the same install as
|
||||
emacs-$VERSION-x86_64.zip.
|
||||
|
||||
emacs-$VERSION-deps-mingw-w64-src.zip
|
||||
emacs-27-i686-deps.zip
|
||||
|
||||
The source for the dependencies. Source for Emacs itself is available
|
||||
in the main distribution tarball. These dependencies were produced
|
||||
from an updated msys2 at the point of the first pre-test. It is not
|
||||
intended that these will be updated after that point.
|
||||
The 32-bit version of the dependencies.
|
||||
|
||||
Source for Emacs itself is found in the directory above.
|
||||
emacs-27-deps-mingw-w64-src.zip
|
||||
|
||||
Snapshots
|
||||
=========
|
||||
|
||||
We also distribute "snapshots" of Emacs built at points throughout the
|
||||
development cycle, for those interested in following this cycle. They
|
||||
are not recommended for normal users; however, they are useful for
|
||||
people who want to report bugs against the current master.
|
||||
|
||||
The files follow the same naming convention, but also include a date
|
||||
(and sometimes information about their branch). The Emacs source at
|
||||
the time of these builds is also distributed.
|
||||
|
||||
|
||||
LICENSE
|
||||
======
|
||||
|
||||
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/.
|
||||
The source for the dependencies. Source for Emacs itself is available
|
||||
in the main distribution tarball. These dependencies were produced
|
||||
from an updated msys2 at the point of the first pre-test. It is not
|
||||
intended that these will be updated after that point.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
## Copyright (C) 2017-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2017-2019 Free Software Foundation, Inc.
|
||||
|
||||
## This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -17,46 +17,29 @@
|
|||
## You should have received a copy of the GNU General Public License
|
||||
## along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
import argparse
|
||||
import multiprocessing as mp
|
||||
import glob
|
||||
import os
|
||||
import shutil
|
||||
import re
|
||||
import functools
|
||||
import operator
|
||||
|
||||
from subprocess import check_output
|
||||
|
||||
## Constants
|
||||
EMACS_MAJOR_VERSION="28"
|
||||
|
||||
# This list derives from the features we want Emacs to compile with.
|
||||
PKG_REQ='''mingw-w64-x86_64-giflib
|
||||
mingw-w64-x86_64-gnutls
|
||||
mingw-w64-x86_64-harfbuzz
|
||||
mingw-w64-x86_64-jansson
|
||||
mingw-w64-x86_64-lcms2
|
||||
mingw-w64-x86_64-libjpeg-turbo
|
||||
mingw-w64-x86_64-libpng
|
||||
mingw-w64-x86_64-librsvg
|
||||
mingw-w64-x86_64-libtiff
|
||||
mingw-w64-x86_64-libxml2
|
||||
mingw-w64-x86_64-xpm-nox'''.split()
|
||||
|
||||
DLL_REQ='''libgif
|
||||
libgnutls
|
||||
libharfbuzz
|
||||
libjansson
|
||||
liblcms2
|
||||
libturbojpeg
|
||||
libpng
|
||||
librsvg
|
||||
libtiff
|
||||
libxml
|
||||
libXpm'''.split()
|
||||
EMACS_MAJOR_VERSION="27"
|
||||
|
||||
|
||||
## Options
|
||||
DRY_RUN=False
|
||||
|
||||
## Packages to fiddle with
|
||||
SKIP_PKGS=["mingw-w64-gcc-libs"]
|
||||
MUNGE_PKGS ={"mingw-w64-libwinpthread-git":"mingw-w64-winpthreads-git"}
|
||||
|
||||
## Currently no packages seem to require this!
|
||||
ARCH_PKGS=[]
|
||||
SRC_REPO="https://sourceforge.net/projects/msys2/files/REPOS/MINGW/Sources"
|
||||
|
||||
|
||||
def check_output_maybe(*args,**kwargs):
|
||||
if(DRY_RUN):
|
||||
|
|
@ -64,131 +47,91 @@ def check_output_maybe(*args,**kwargs):
|
|||
else:
|
||||
return check_output(*args,**kwargs)
|
||||
|
||||
## DLL Capture
|
||||
def gather_deps():
|
||||
|
||||
os.mkdir("x86_64")
|
||||
os.chdir("x86_64")
|
||||
|
||||
for dep in full_dll_dependency():
|
||||
check_output_maybe(["cp /mingw64/bin/{}*.dll .".format(dep)],
|
||||
shell=True)
|
||||
|
||||
print("Zipping")
|
||||
check_output_maybe("zip -9r ../emacs-{}-{}deps.zip *"
|
||||
.format(EMACS_MAJOR_VERSION, DATE),
|
||||
shell=True)
|
||||
os.chdir("../")
|
||||
|
||||
## Return all Emacs dependencies
|
||||
def full_dll_dependency():
|
||||
deps = [dll_dependency(dep) for dep in DLL_REQ]
|
||||
return set(sum(deps, []) + DLL_REQ)
|
||||
|
||||
## Dependencies for a given DLL
|
||||
def dll_dependency(dll):
|
||||
output = check_output(["/mingw64/bin/ntldd", "--recursive",
|
||||
"/mingw64/bin/{}*.dll".format(dll)]).decode("utf-8")
|
||||
## munge output
|
||||
return ntldd_munge(output)
|
||||
|
||||
def ntldd_munge(out):
|
||||
deps = out.splitlines()
|
||||
rtn = []
|
||||
for dep in deps:
|
||||
## Output looks something like this
|
||||
|
||||
## KERNEL32.dll => C:\Windows\SYSTEM32\KERNEL32.dll (0x0000000002a30000)
|
||||
## libwinpthread-1.dll => C:\msys64\mingw64\bin\libwinpthread-1.dll (0x0000000000090000)
|
||||
|
||||
## if it's the former, we want it, if its the later we don't
|
||||
splt = dep.split()
|
||||
if len(splt) > 2 and "msys64" in splt[2]:
|
||||
print("Adding dep", splt[0])
|
||||
rtn.append(splt[0].split(".")[0])
|
||||
|
||||
return rtn
|
||||
|
||||
#### Source Capture
|
||||
|
||||
## Packages to fiddle with
|
||||
## Source for gcc-libs is part of gcc
|
||||
SKIP_SRC_PKGS=["mingw-w64-gcc-libs"]
|
||||
SKIP_DEP_PKGS=frozenset(["mingw-w64-x86_64-glib2"])
|
||||
MUNGE_SRC_PKGS={"mingw-w64-libwinpthread-git":"mingw-w64-winpthreads-git"}
|
||||
MUNGE_DEP_PKGS={
|
||||
"mingw-w64-x86_64-libwinpthread":"mingw-w64-x86_64-libwinpthread-git",
|
||||
"mingw-w64-x86_64-libtre": "mingw-w64-x86_64-libtre-git",
|
||||
}
|
||||
|
||||
## Currently no packages seem to require this!
|
||||
ARCH_PKGS=[]
|
||||
SRC_REPO="https://repo.msys2.org/mingw/sources"
|
||||
|
||||
|
||||
def immediate_deps(pkgs):
|
||||
package_info = check_output(["pacman", "-Si"] + pkgs).decode("utf-8").splitlines()
|
||||
|
||||
## Extract the packages listed for "Depends On:" lines.
|
||||
dependencies = [line.split(":")[1].split() for line in package_info
|
||||
if line.startswith("Depends On")]
|
||||
## Flatten dependency lists from multiple packages into one list.
|
||||
dependencies = functools.reduce(operator.iconcat, dependencies, [])
|
||||
|
||||
## Remove > signs TODO can we get any other punctuation here?
|
||||
dependencies = [d.split(">")[0] for d in dependencies if d]
|
||||
dependencies = [d for d in dependencies if not d == "None"]
|
||||
|
||||
dependencies = [MUNGE_DEP_PKGS.get(d, d) for d in dependencies]
|
||||
return dependencies
|
||||
|
||||
|
||||
## Extract all the msys2 packages that are dependencies of our direct dependencies
|
||||
def extract_deps():
|
||||
|
||||
print( "Extracting deps" )
|
||||
# This list derives from the features we want Emacs to compile with.
|
||||
PKG_REQ='''mingw-w64-x86_64-giflib
|
||||
mingw-w64-x86_64-gnutls
|
||||
mingw-w64-x86_64-libjpeg-turbo
|
||||
mingw-w64-x86_64-libpng
|
||||
mingw-w64-x86_64-librsvg
|
||||
mingw-w64-x86_64-libtiff
|
||||
mingw-w64-x86_64-libxml2
|
||||
mingw-w64-x86_64-xpm-nox
|
||||
mingw-w64-x86_64-lcms2'''.split()
|
||||
|
||||
# Get a list of all dependencies needed for packages mentioned above.
|
||||
pkgs = set(PKG_REQ)
|
||||
newdeps = pkgs
|
||||
print("adding...")
|
||||
while True:
|
||||
subdeps = frozenset(immediate_deps(list(newdeps)))
|
||||
newdeps = subdeps - SKIP_DEP_PKGS - pkgs
|
||||
if not newdeps:
|
||||
break
|
||||
print('\n'.join(newdeps))
|
||||
pkgs |= newdeps
|
||||
# Run `pactree -lu' for each element of $PKG_REQ.
|
||||
pkgs = set()
|
||||
for x in PKG_REQ:
|
||||
pkgs.update(
|
||||
check_output(["pactree", "-lu", x]).decode("utf-8").split()
|
||||
)
|
||||
|
||||
return list(pkgs)
|
||||
return sorted(pkgs)
|
||||
|
||||
def gather_deps(deps, arch, directory):
|
||||
|
||||
os.mkdir(arch)
|
||||
os.chdir(arch)
|
||||
|
||||
## Replace the architecture with the correct one
|
||||
deps = [re.sub(r"x86_64",arch,x) for x in deps]
|
||||
|
||||
## find all files the transitive dependencies
|
||||
deps_files = check_output(
|
||||
["pacman", "-Ql"] + deps
|
||||
).decode("utf-8").split("\n")
|
||||
|
||||
## Produces output like
|
||||
## mingw-w64-x86_64-zlib /mingw64/lib/libminizip.a
|
||||
|
||||
## drop the package name
|
||||
tmp = deps_files.copy()
|
||||
deps_files=[]
|
||||
for d in tmp:
|
||||
slt = d.split()
|
||||
if(not slt==[]):
|
||||
deps_files.append(slt[1])
|
||||
|
||||
## sort uniq
|
||||
deps_files = sorted(list(set(deps_files)))
|
||||
## copy all files into local
|
||||
print("Copying dependencies: {}".format(arch))
|
||||
check_output_maybe(["rsync", "-R"] + deps_files + ["."])
|
||||
|
||||
## And package them up
|
||||
os.chdir(directory)
|
||||
print("Zipping: {}".format(arch))
|
||||
check_output_maybe("zip -9r ../../emacs-{}-{}{}-deps.zip *"
|
||||
.format(EMACS_MAJOR_VERSION, DATE, arch),
|
||||
shell=True)
|
||||
os.chdir("../../")
|
||||
|
||||
|
||||
def download_source(tarball):
|
||||
print("Acquiring {}...".format(tarball))
|
||||
print("Downloading {}...".format(tarball))
|
||||
check_output_maybe(
|
||||
"wget -a ../download.log -O {} {}/{}/download"
|
||||
.format(tarball, SRC_REPO, tarball),
|
||||
shell=True
|
||||
)
|
||||
print("Downloading {}... done".format(tarball))
|
||||
|
||||
if not os.path.exists("../emacs-src-cache/{}".format(tarball)):
|
||||
print("Downloading {}...".format(tarball))
|
||||
check_output_maybe(
|
||||
"wget -a ../download.log -O ../emacs-src-cache/{} {}/{}"
|
||||
.format(tarball, SRC_REPO, tarball),
|
||||
shell=True
|
||||
)
|
||||
print("Downloading {}... done".format(tarball))
|
||||
|
||||
print("Copying {} from local".format(tarball))
|
||||
shutil.copyfile("../emacs-src-cache/{}".format(tarball),
|
||||
"{}".format(tarball))
|
||||
|
||||
|
||||
## Fetch all the source code
|
||||
def gather_source(deps):
|
||||
|
||||
if not os.path.exists("emacs-src-cache"):
|
||||
os.mkdir("emacs-src-cache")
|
||||
|
||||
## Source for gcc-libs is part of gcc
|
||||
## Source for libwinpthread is in libwinpthreads
|
||||
## mpc, termcap, xpm -- has x86_64, and i686 versions
|
||||
|
||||
## This needs to have been run first at the same time as the
|
||||
## system was updated.
|
||||
os.mkdir("emacs-src")
|
||||
os.chdir("emacs-src")
|
||||
|
||||
to_download = []
|
||||
for pkg in deps:
|
||||
pkg_name_and_version= \
|
||||
check_output(["pacman","-Q", pkg]).decode("utf-8").strip()
|
||||
|
|
@ -199,18 +142,31 @@ def gather_source(deps):
|
|||
pkg_name=pkg_name_components[0]
|
||||
pkg_version=pkg_name_components[1]
|
||||
|
||||
## source pkgs don't have an architecture in them
|
||||
pkg_name = re.sub(r"x86_64-","",pkg_name)
|
||||
## make a simple name to make lookup easier
|
||||
simple_pkg_name = re.sub(r"x86_64-","",pkg_name)
|
||||
|
||||
if(pkg_name in SKIP_SRC_PKGS):
|
||||
if(simple_pkg_name in SKIP_PKGS):
|
||||
continue
|
||||
|
||||
## Switch names if necessary
|
||||
pkg_name = MUNGE_SRC_PKGS.get(pkg_name,pkg_name)
|
||||
## Some packages have different source files for different
|
||||
## architectures. For these we need two downloads.
|
||||
if(simple_pkg_name in ARCH_PKGS):
|
||||
downloads = [pkg_name,
|
||||
re.sub(r"x86_64","i686",pkg_name)]
|
||||
else:
|
||||
downloads = [simple_pkg_name]
|
||||
|
||||
tarball = "{}-{}.src.tar.gz".format(pkg_name,pkg_version)
|
||||
for d in downloads:
|
||||
## Switch names if necessary
|
||||
d = MUNGE_PKGS.get(d,d)
|
||||
|
||||
download_source(tarball)
|
||||
tarball = "{}-{}.src.tar.gz".format(d,pkg_version)
|
||||
|
||||
to_download.append(tarball)
|
||||
|
||||
## Download in parallel or it is just too slow
|
||||
p = mp.Pool(16)
|
||||
p.map(download_source,to_download)
|
||||
|
||||
print("Zipping")
|
||||
check_output_maybe("zip -9 ../emacs-{}-{}deps-mingw-w64-src.zip *"
|
||||
|
|
@ -223,6 +179,7 @@ def gather_source(deps):
|
|||
def clean():
|
||||
print("Cleaning")
|
||||
os.path.isdir("emacs-src") and shutil.rmtree("emacs-src")
|
||||
os.path.isdir("i686") and shutil.rmtree("i686")
|
||||
os.path.isdir("x86_64") and shutil.rmtree("x86_64")
|
||||
os.path.isfile("download.log") and os.remove("download.log")
|
||||
|
||||
|
|
@ -236,6 +193,12 @@ def clean():
|
|||
parser.add_argument("-s", help="snapshot build",
|
||||
action="store_true")
|
||||
|
||||
parser.add_argument("-t", help="32 bit deps only",
|
||||
action="store_true")
|
||||
|
||||
parser.add_argument("-f", help="64 bit deps only",
|
||||
action="store_true")
|
||||
|
||||
parser.add_argument("-r", help="source code only",
|
||||
action="store_true")
|
||||
|
||||
|
|
@ -245,31 +208,25 @@ def clean():
|
|||
parser.add_argument("-d", help="dry run",
|
||||
action="store_true")
|
||||
|
||||
parser.add_argument("-l", help="list dependencies only",
|
||||
action="store_true")
|
||||
|
||||
args = parser.parse_args()
|
||||
do_all=not (args.c or args.r)
|
||||
|
||||
do_all=not (args.c or args.r or args.f or args.t)
|
||||
|
||||
deps=extract_deps()
|
||||
|
||||
DRY_RUN=args.d
|
||||
|
||||
if( args.l ):
|
||||
print("List of dependencies")
|
||||
print( deps )
|
||||
exit(0)
|
||||
|
||||
if args.s:
|
||||
DATE="{}-".format(check_output(["date", "+%Y-%m-%d"]).decode("utf-8").strip())
|
||||
else:
|
||||
DATE=""
|
||||
|
||||
if( do_all):
|
||||
gather_deps()
|
||||
if( do_all or args.t ):
|
||||
gather_deps(deps,"i686","mingw32")
|
||||
|
||||
if( do_all or args.f ):
|
||||
gather_deps(deps,"x86_64","mingw64")
|
||||
|
||||
if( do_all or args.r ):
|
||||
deps=extract_deps()
|
||||
gather_source(deps)
|
||||
|
||||
if( args.c ):
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
## Copyright (C) 2017-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2017-2019 Free Software Foundation, Inc.
|
||||
|
||||
## This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
function git_up {
|
||||
echo [build] Making git worktree for Emacs $VERSION
|
||||
cd $REPO_DIR/emacs-$MAJOR_VERSION
|
||||
cd $HOME/emacs-build/git/emacs-$MAJOR_VERSION
|
||||
git pull
|
||||
git worktree add ../$BRANCH $BRANCH
|
||||
|
||||
|
|
@ -29,62 +29,72 @@ function git_up {
|
|||
}
|
||||
|
||||
function build_zip {
|
||||
echo [build] Building Emacs-$VERSION
|
||||
|
||||
ARCH=$1
|
||||
PKG=$2
|
||||
HOST=$3
|
||||
|
||||
echo [build] Building Emacs-$VERSION for $ARCH
|
||||
if [ $ARCH == "i686" ]
|
||||
then
|
||||
PATH=/mingw32/bin:$PATH
|
||||
MSYSTEM=MINGW32
|
||||
fi
|
||||
|
||||
## Clean the install location because we use it twice
|
||||
rm -rf $HOME/emacs-build/install/emacs-$VERSION
|
||||
mkdir --parents $HOME/emacs-build/build/emacs-$VERSION
|
||||
cd $HOME/emacs-build/build/emacs-$VERSION
|
||||
|
||||
## Do we need this or is it the default?
|
||||
export PKG_CONFIG_PATH=/mingw64/lib/pkgconfig
|
||||
rm -rf $HOME/emacs-build/install/emacs-$VERSION/$ARCH
|
||||
mkdir --parents $HOME/emacs-build/build/emacs-$VERSION/$ARCH
|
||||
cd $HOME/emacs-build/build/emacs-$VERSION/$ARCH
|
||||
|
||||
export PKG_CONFIG_PATH=$PKG
|
||||
|
||||
## Running configure forces a rebuild of the C core which takes
|
||||
## time that is not always needed, so do not do it unless we have
|
||||
## to.
|
||||
if [ ! -f Makefile ] || (($CONFIG))
|
||||
then
|
||||
echo [build] Configuring Emacs
|
||||
$REPO_DIR/$BRANCH/configure \
|
||||
echo [build] Configuring Emacs $ARCH
|
||||
../../../git/$BRANCH/configure \
|
||||
--without-dbus \
|
||||
--without-compress-install \
|
||||
--host=$HOST --without-compress-install \
|
||||
$CACHE \
|
||||
CFLAGS="$CFLAGS"
|
||||
CFLAGS="-O2 -static -g3"
|
||||
fi
|
||||
|
||||
make -j 4 $INSTALL_TARGET \
|
||||
prefix=$HOME/emacs-build/install/emacs-$VERSION
|
||||
cd $HOME/emacs-build/install/emacs-$VERSION
|
||||
zip -r -9 emacs-$OF_VERSION-no-deps.zip *
|
||||
mv emacs-$OF_VERSION-no-deps.zip $HOME/emacs-upload
|
||||
make -j 2 install \
|
||||
prefix=$HOME/emacs-build/install/emacs-$VERSION/$ARCH
|
||||
cd $HOME/emacs-build/install/emacs-$VERSION/$ARCH
|
||||
cp $HOME/emacs-build/deps/libXpm/$ARCH/libXpm-noX4.dll bin
|
||||
zip -r -9 emacs-$OF_VERSION-$ARCH-no-deps.zip *
|
||||
mv emacs-$OF_VERSION-$ARCH-no-deps.zip $HOME/emacs-upload
|
||||
rm bin/libXpm-noX4.dll
|
||||
|
||||
if [ -z $SNAPSHOT ];
|
||||
then
|
||||
DEPS_FILE=$HOME/emacs-build/deps/emacs-$MAJOR_VERSION-deps.zip
|
||||
DEPS_FILE=$HOME/emacs-build/deps/emacs-$MAJOR_VERSION-$ARCH-deps.zip
|
||||
else
|
||||
## Pick the most recent snapshot whatever that is
|
||||
DEPS_FILE=`ls $HOME/emacs-build/deps/emacs-$MAJOR_VERSION-*-deps.zip | tail -n 1`
|
||||
DEPS_FILE=`ls $HOME/emacs-build/deps/emacs-$MAJOR_VERSION-*-$ARCH-deps.zip | tail -n 1`
|
||||
fi
|
||||
|
||||
echo [build] Using $DEPS_FILE
|
||||
unzip -d bin $DEPS_FILE
|
||||
unzip $DEPS_FILE
|
||||
|
||||
zip -r -9 emacs-$OF_VERSION.zip *
|
||||
mv emacs-$OF_VERSION.zip ~/emacs-upload
|
||||
zip -r -9 emacs-$OF_VERSION-$ARCH.zip *
|
||||
mv emacs-$OF_VERSION-$ARCH.zip ~/emacs-upload
|
||||
}
|
||||
|
||||
function build_installer {
|
||||
cd $HOME/emacs-build/install/
|
||||
ARCH=$1
|
||||
cd $HOME/emacs-build/install/emacs-$VERSION
|
||||
echo [build] Calling makensis in `pwd`
|
||||
cp $REPO_DIR/$BRANCH/admin/nt/dist-build/emacs.nsi .
|
||||
cp ../../git/$BRANCH/admin/nt/dist-build/emacs.nsi .
|
||||
|
||||
makensis -v4 \
|
||||
-DEMACS_VERSION=$ACTUAL_VERSION \
|
||||
-DVERSION_BRANCH=$VERSION \
|
||||
-DARCH=$ARCH -DEMACS_VERSION=$ACTUAL_VERSION \
|
||||
-DOUT_VERSION=$OF_VERSION emacs.nsi
|
||||
rm emacs.nsi
|
||||
mv emacs-$OF_VERSION-installer.exe ~/emacs-upload
|
||||
mv emacs-$OF_VERSION-$ARCH-installer.exe ~/emacs-upload
|
||||
}
|
||||
|
||||
set -o errexit
|
||||
|
|
@ -93,18 +103,24 @@ SNAPSHOT=
|
|||
CACHE=
|
||||
|
||||
BUILD=1
|
||||
BUILD_32=1
|
||||
BUILD_64=1
|
||||
GIT_UP=0
|
||||
CONFIG=1
|
||||
CFLAGS="-O2 -static"
|
||||
INSTALL_TARGET="install-strip"
|
||||
|
||||
## The location of the git repo
|
||||
REPO_DIR=$HOME/emacs-build/git/
|
||||
|
||||
|
||||
while getopts "gb:hnsiV:" opt; do
|
||||
while getopts "36gb:hnsiV:" opt; do
|
||||
case $opt in
|
||||
3)
|
||||
BUILD_32=1
|
||||
BUILD_64=0
|
||||
GIT_UP=0
|
||||
;;
|
||||
6)
|
||||
BUILD_32=0
|
||||
BUILD_64=1
|
||||
GIT_UP=0
|
||||
;;
|
||||
|
||||
g)
|
||||
BUILD_32=0
|
||||
BUILD_64=0
|
||||
|
|
@ -125,16 +141,13 @@ while getopts "gb:hnsiV:" opt; do
|
|||
;;
|
||||
s)
|
||||
SNAPSHOT="-snapshot"
|
||||
CFLAGS="-O2 -static -g3"
|
||||
INSTALL_TARGET="install"
|
||||
;;
|
||||
h)
|
||||
echo "build-zips.sh"
|
||||
echo " -b args -- build args branch"
|
||||
echo " -3 32 bit build only"
|
||||
echo " -6 64 bit build only"
|
||||
echo " -g git update and worktree only"
|
||||
echo " -i build installer only"
|
||||
echo " -n do not configure"
|
||||
echo " -s snapshot build"
|
||||
exit 0
|
||||
;;
|
||||
\?)
|
||||
|
|
@ -143,27 +156,23 @@ while getopts "gb:hnsiV:" opt; do
|
|||
esac
|
||||
done
|
||||
|
||||
|
||||
## ACTUAL_VERSION is the version declared by emacs
|
||||
if [ -z $ACTUAL_VERSION ];
|
||||
if [ -z $VERSION ];
|
||||
then
|
||||
ACTUAL_VERSION=`
|
||||
sed -n 's/^AC_INIT(\[*GNU Emacs]*,[ ]*\[*\([^] ,)]*\).*/\1/p' < ../../../configure.ac
|
||||
VERSION=`
|
||||
sed -n 's/^AC_INIT(GNU Emacs,[ ]*\([^ ,)]*\).*/\1/p' < ../../../configure.ac
|
||||
`
|
||||
fi
|
||||
|
||||
if [ -z $ACTUAL_VERSION ];
|
||||
if [ -z $VERSION ];
|
||||
then
|
||||
echo [build] Cannot determine Emacs version
|
||||
exit 1
|
||||
fi
|
||||
|
||||
## VERSION is the version that we want to call Emacs
|
||||
VERSION=$ACTUAL_VERSION
|
||||
|
||||
|
||||
MAJOR_VERSION="$(echo $VERSION | cut -d'.' -f1)"
|
||||
|
||||
## ACTUAL VERSION is the version declared by emacs
|
||||
ACTUAL_VERSION=$VERSION
|
||||
|
||||
## VERSION includes the word snapshot if necessary
|
||||
VERSION=$VERSION$SNAPSHOT
|
||||
|
|
@ -187,12 +196,10 @@ then
|
|||
else
|
||||
BRANCH=$REQUIRED_BRANCH
|
||||
echo [build] Building from Branch $BRANCH
|
||||
VERSION=$VERSION-${BRANCH/\//_}
|
||||
VERSION=$VERSION-$BRANCH
|
||||
OF_VERSION="$VERSION-`date +%Y-%m-%d`"
|
||||
## Use snapshot dependencies
|
||||
SNAPSHOT=1
|
||||
CFLAGS="-O2 -static -g3"
|
||||
INSTALL_TARGET="install"
|
||||
fi
|
||||
|
||||
if (($GIT_UP))
|
||||
|
|
@ -204,7 +211,18 @@ if (($BUILD_64))
|
|||
then
|
||||
if (($BUILD))
|
||||
then
|
||||
build_zip
|
||||
build_zip x86_64 /mingw64/lib/pkgconfig x86_64-w64-mingw32
|
||||
fi
|
||||
build_installer
|
||||
build_installer x86_64
|
||||
fi
|
||||
|
||||
## Do the 64 bit build first, because we reset some environment
|
||||
## variables during the 32 bit which will break the build.
|
||||
if (($BUILD_32))
|
||||
then
|
||||
if (($BUILD))
|
||||
then
|
||||
build_zip i686 /mingw32/lib/pkgconfig i686-w64-mingw32
|
||||
fi
|
||||
build_installer i686
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
!include LogicLib.nsh
|
||||
!include x64.nsh
|
||||
|
||||
Outfile "emacs-${OUT_VERSION}-installer.exe"
|
||||
Outfile "emacs-${OUT_VERSION}-${ARCH}-installer.exe"
|
||||
|
||||
|
||||
SetCompressor /solid lzma
|
||||
|
|
@ -14,15 +14,15 @@ Var StartMenuFolder
|
|||
!define MUI_WELCOMEPAGE_TITLE_3LINES
|
||||
!define MUI_WELCOMEPAGE_TEXT "Welcome to Emacs -- the editor of a lifetime."
|
||||
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP "emacs-${VERSION_BRANCH}\share\emacs\${EMACS_VERSION}\etc\images\splash.bmp"
|
||||
!define MUI_ICON "emacs-${VERSION_BRANCH}\share\emacs\${EMACS_VERSION}\etc\images\icons\hicolor\scalable\apps\emacs.ico"
|
||||
!define MUI_UNICON "emacs-${VERSION_BRANCH}\share\emacs\${EMACS_VERSION}\etc\images\icons\hicolor\scalable\apps\emacs.ico"
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP "${ARCH}\share\emacs\${EMACS_VERSION}\etc\images\splash.bmp"
|
||||
!define MUI_ICON "${ARCH}\share\emacs\${EMACS_VERSION}\etc\images\icons\hicolor\scalable\apps\emacs.ico"
|
||||
!define MUI_UNICON "${ARCH}\share\emacs\${EMACS_VERSION}\etc\images\icons\hicolor\scalable\apps\emacs.ico"
|
||||
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
|
||||
|
||||
!define MUI_LICENSEPAGE_TEXT_TOP "The GNU General Public License"
|
||||
!insertmacro MUI_PAGE_LICENSE "emacs-${VERSION_BRANCH}\share\emacs\${EMACS_VERSION}\lisp\COPYING"
|
||||
!insertmacro MUI_PAGE_LICENSE "${ARCH}\share\emacs\${EMACS_VERSION}\lisp\COPYING"
|
||||
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
|
@ -36,7 +36,19 @@ Var StartMenuFolder
|
|||
Name Emacs-${EMACS_VERSION}
|
||||
|
||||
function .onInit
|
||||
StrCpy $INSTDIR "$PROGRAMFILES64\Emacs"
|
||||
${If} ${RunningX64}
|
||||
${If} ${ARCH} == "x86_64"
|
||||
StrCpy $INSTDIR "$PROGRAMFILES64\Emacs"
|
||||
${Else}
|
||||
StrCpy $INSTDIR "$PROGRAMFILES32\Emacs"
|
||||
${Endif}
|
||||
${Else}
|
||||
${If} ${ARCH} == "x86_64"
|
||||
Quit
|
||||
${Else}
|
||||
StrCpy $INSTDIR "$PROGRAMFILES\Emacs"
|
||||
${Endif}
|
||||
${EndIf}
|
||||
functionend
|
||||
|
||||
|
||||
|
|
@ -44,8 +56,7 @@ Section
|
|||
|
||||
SetOutPath $INSTDIR
|
||||
|
||||
File /r emacs-${VERSION_BRANCH}
|
||||
|
||||
File /r ${ARCH}
|
||||
# define uninstaller name
|
||||
WriteUninstaller $INSTDIR\Uninstall.exe
|
||||
|
||||
|
|
@ -55,7 +66,7 @@ Section
|
|||
CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
|
||||
|
||||
!insertmacro MUI_STARTMENU_WRITE_END
|
||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Emacs.lnk" "$INSTDIR\emacs-${VERSION_BRANCH}\bin\runemacs.exe"
|
||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Emacs.lnk" "$INSTDIR\${ARCH}\bin\runemacs.exe"
|
||||
SectionEnd
|
||||
|
||||
|
||||
|
|
@ -67,7 +78,7 @@ Section "Uninstall"
|
|||
Delete "$INSTDIR\Uninstall.exe"
|
||||
|
||||
# now delete installed directory
|
||||
RMDir /r "$INSTDIR"
|
||||
RMDir /r "$INSTDIR\${ARCH}"
|
||||
RMDir "$INSTDIR"
|
||||
|
||||
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
### quick-install-emacs --- do a halfway-decent job of installing emacs quickly
|
||||
|
||||
## Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2001-2019 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Miles Bader <miles@gnu.org>
|
||||
|
||||
|
|
@ -172,10 +172,10 @@ test x"$prefix" = x && { prefix="`get_config_var prefix`" || exit 4 ; }
|
|||
test x"$ARCH" = x && { ARCH="`get_config_var host`" || exit 4 ; }
|
||||
|
||||
VERSION=`
|
||||
sed -n 's/^AC_INIT([ ]*\[*emacs]*[ ]*,[ ]*\[*\([^] ),]*\).*/\1/p' <$SRC/configure.ac
|
||||
sed -n 's/^AC_INIT([ ]*emacs[ ]*,[ ]*\([^ ),]*\).*/\1/p' <$SRC/configure.ac
|
||||
` || exit 4
|
||||
test -n "$VERSION" || VERSION=`
|
||||
sed -n 's/^AC_INIT([ ]*\[*GNU Emacs]*[ ]*,[ ]*\[*\([^] ),]*\).*/\1/p' <$SRC/configure.ac
|
||||
sed -n 's/^AC_INIT([ ]*GNU Emacs[ ]*,[ ]*\([^ ),]*\).*/\1/p' <$SRC/configure.ac
|
||||
` || exit 4
|
||||
test -n "$VERSION" || { printf '%s\n' >&2 "$me: no version in configure.ac"; exit 4; }
|
||||
|
||||
|
|
|
|||
|
|
@ -1,76 +0,0 @@
|
|||
Instructions for cutting the Emacs release branch
|
||||
|
||||
1. In the clone of the Emacs Git repository, switch to the 'master'
|
||||
branch, "git pull", and build it (using 'make bootstrap') to make
|
||||
sure it's not broken. Run 'make check-expensive' and ensure all
|
||||
tests pass. (Alternatively, verify that the automated build
|
||||
servers are showing success for the latest revision.)
|
||||
|
||||
2. Create the release branch and switch to it. Assuming that it is
|
||||
for releasing Emacs versions XY.1, XY.2, etc., the command is:
|
||||
|
||||
git checkout -b emacs-XY
|
||||
|
||||
3. Switch the release branch to the suitable version. The convention
|
||||
is that release branches start with version XY.0.60, whereas the
|
||||
master branch from which the release branch was cut was at the
|
||||
version XY.0.50. To change the version, do the following inside
|
||||
Emacs:
|
||||
|
||||
M-x load-file RET admin/admin.el RET
|
||||
M-x set-version RET XY.0.60 RET
|
||||
|
||||
Change the value of 'customize-changed-options-previous-release'
|
||||
in cus-edit.el to reference the last release from the emacs-XY-1
|
||||
branch (last release for the previous major version).
|
||||
|
||||
The above modifies several files in the tree; commit the changes
|
||||
with the appropriate log message, something like "Bump Emacs
|
||||
version to XY.0.60", and with header saying "Cut the emacs-XY
|
||||
release branch". Then push the changes:
|
||||
|
||||
git push --set-upstream origin emacs-XY
|
||||
|
||||
The "push" command should show the new branch just created.
|
||||
|
||||
4. Switch back to the master branch.
|
||||
|
||||
git checkout master
|
||||
git pull
|
||||
|
||||
Set the version on the master branch to the next major release:
|
||||
|
||||
M-x set-version RET XY+1.0.50 RET
|
||||
|
||||
This creates a new file etc/NEWS.XY. "git add" it.
|
||||
|
||||
Change the value of 'customize-changed-options-previous-release'
|
||||
in cus-edit.el to reference emacs-XY.1, the next version to be
|
||||
released from the newly-committed release branch.
|
||||
|
||||
Update the emacs-module sources for the new version XY+1. This
|
||||
entails:
|
||||
|
||||
. adding a new file src/module-env-XY+1.h, with contents just the
|
||||
comment taken from the beginning of src/module-env-XY.h
|
||||
. removing the comment from the beginning of src/module-env-XY.h
|
||||
. adding two lines to configure.ac:
|
||||
|
||||
AC_SUBST_FILE([module_env_snippet_XY+1])
|
||||
module_env_snippet_XY+1="$srcdir/src/module-env-XY+1.h"
|
||||
|
||||
. adding a new 'struct emacs_env_XY+1' to src/emacs-module.h.in,
|
||||
with the contents identical to'struct emacs_env_XY', with one
|
||||
line added:
|
||||
|
||||
@module_env_snippet_XY+1@
|
||||
|
||||
(FIXME: "M-x set-version" should do this emacs-module stuff
|
||||
automatically when the version is NN.0.60, or when there's no
|
||||
src/module-env-NN.h file.)
|
||||
|
||||
"git add" the new src/module-env-XY+1.h file.
|
||||
|
||||
Then rebuild Emacs. Then commit the new/changed files and push.
|
||||
|
||||
5. Announce the new release branch on emacs-devel.
|
||||
|
|
@ -41,35 +41,23 @@ released in the next release cycle. From time to time, the master
|
|||
branches merges bugfix commits from the "emacs-NN" branch.
|
||||
See admin/gitmerge.el.
|
||||
|
||||
* RELEASE-BLOCKING BUGS
|
||||
* RELEASE-CRITICAL BUGS
|
||||
|
||||
Emacs uses the "blocking" feature of Debbugs for bugs that need to be
|
||||
addressed in the next release.
|
||||
|
||||
Currently, bug#43018 is the tracking bug for release of 27.2 and
|
||||
bug#39202 is the tracking bug for release 28.1. Say bug#123 needs
|
||||
to be fixed for Emacs 27.2. Send a message to control@debbugs.gnu.org
|
||||
Currently, bug#21966 is the tracking bug for release of 25.2 and
|
||||
bug#24655 is the tracking bug for release 26.1. Say bug#123 needs
|
||||
to be fixed for Emacs 26.1. Send a message to control@debbugs.gnu.org
|
||||
that says:
|
||||
|
||||
block 43018 by 123
|
||||
block 24655 by 123
|
||||
|
||||
Change "block" to "unblock" to remove a bug from the list. Closed
|
||||
bugs are not listed as blockers, so you do not need to explicitly
|
||||
unblock one that has been closed. You may need to force an update of
|
||||
the tracking bug with ctrl-f5/shift-reload to see the latest version.
|
||||
|
||||
If you use the debbugs package from GNU ELPA, you can apply the
|
||||
following command to see all bugs which block a given release:
|
||||
|
||||
(debbugs-gnu-emacs-release-blocking-reports "27.2")
|
||||
|
||||
The following command from admin/admin.el sends a reminder message
|
||||
about release-blocking bugs to the <emacs-devel@gnu.org> mailing list:
|
||||
|
||||
(reminder-for-release-blocking-bugs "27.2")
|
||||
|
||||
It is recommended to send this reminder message once a month. Once the
|
||||
pretest has started, a reminder message once a week is appropriate.
|
||||
|
||||
* TO BE DONE SHORTLY BEFORE RELEASE
|
||||
|
||||
|
|
@ -179,9 +167,8 @@ What paper size are the English versions supposed to be on?
|
|||
On Debian testing, the packages texlive-lang-czechslovak and
|
||||
texlive-lang-polish will let you generate the cs-* and sk-* pdfs.
|
||||
(You may need texlive-lang-cyrillic, texlive-lang-german,
|
||||
and texlive-fonts-extra for others.) Gnus refcards need
|
||||
texlive-latex-extra and/or texlive-latex-recommended. On Fedora-like
|
||||
systems, texlive-lh may help.
|
||||
and texlive-fonts-extra for others.) On Fedora-like systems,
|
||||
texlive-lh may help.
|
||||
|
||||
** Ask maintainers of refcard translations to update them.
|
||||
|
||||
|
|
@ -196,30 +183,26 @@ pt-br Rodrigo Real
|
|||
ru Alex Ott
|
||||
sk Miroslav Vaško
|
||||
|
||||
** Update some files from their upstream.
|
||||
|
||||
Some files in Emacs are copies of data files maintained elsewhere.
|
||||
Make sure that they are reasonably up-to-date.
|
||||
|
||||
- etc/publicsuffix.txt
|
||||
https://publicsuffix.org/list/public_suffix_list.dat
|
||||
|
||||
- leim/SKK-DIC/SKK-JISYO.L
|
||||
https://raw.githubusercontent.com/skk-dev/dict/master/SKK-JISYO.L
|
||||
|
||||
* BUGS
|
||||
|
||||
** Check for modes which bind M-s that conflicts with a new global binding M-s
|
||||
and change key bindings where necessary. The current list of modes:
|
||||
|
||||
1. Minibuffer binds 'M-s' to 'next-matching-history-element'
|
||||
1. Gnus binds 'M-s' to 'gnus-summary-search-article-forward'.
|
||||
|
||||
2. Minibuffer binds 'M-s' to 'next-matching-history-element'
|
||||
(not useful any more since C-s can now search in the history).
|
||||
|
||||
2. PCL-CVS binds 'M-s' to 'cvs-status', and log-edit-mode binds it to
|
||||
3. 'center-line' in Text mode was already moved to the text formatting
|
||||
keymap as 'M-o M-s' (thus this binding is not necessary any more
|
||||
in 'nroff-mode-map' too and can be removed now from the nroff mode
|
||||
because it can now use the global key binding 'M-o M-s' 'center-line').
|
||||
|
||||
4. PCL-CVS binds 'M-s' to 'cvs-status', and log-edit-mode binds it to
|
||||
'log-edit-comment-search-forward'. Perhaps search commands
|
||||
on the global key binding 'M-s' are useless in these modes.
|
||||
|
||||
3. Rmail binds '\es' to 'rmail-search'/'rmail-summary-search'.
|
||||
5. Rmail binds '\es' to 'rmail-search'/'rmail-summary-search'.
|
||||
|
||||
|
||||
* DOCUMENTATION
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
# BidiBrackets-15.0.0.txt
|
||||
# Date: 2022-05-03, 18:42:00 GMT [AG, LI, KW]
|
||||
# © 2022 Unicode®, Inc.
|
||||
# BidiBrackets-11.0.0.txt
|
||||
# Date: 2018-02-18, 05:50:00 GMT [AG, LI, KW]
|
||||
# © 2018 Unicode®, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see https://www.unicode.org/terms_of_use.html
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Unicode Character Database
|
||||
# For documentation, see https://www.unicode.org/reports/tr44/
|
||||
# For documentation, see http://www.unicode.org/reports/tr44/
|
||||
#
|
||||
# Bidi_Paired_Bracket and Bidi_Paired_Bracket_Type Properties
|
||||
#
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
# of each line.
|
||||
#
|
||||
# For information on bidirectional paired brackets, see UAX #9: Unicode
|
||||
# Bidirectional Algorithm, at https://www.unicode.org/reports/tr9/
|
||||
# Bidirectional Algorithm, at http://www.unicode.org/unicode/reports/tr9/
|
||||
#
|
||||
# This file was originally created by Andrew Glass and Laurentiu Iancu
|
||||
# for Unicode 6.3.
|
||||
|
|
@ -147,14 +147,6 @@
|
|||
2E27; 2E26; c # RIGHT SIDEWAYS U BRACKET
|
||||
2E28; 2E29; o # LEFT DOUBLE PARENTHESIS
|
||||
2E29; 2E28; c # RIGHT DOUBLE PARENTHESIS
|
||||
2E55; 2E56; o # LEFT SQUARE BRACKET WITH STROKE
|
||||
2E56; 2E55; c # RIGHT SQUARE BRACKET WITH STROKE
|
||||
2E57; 2E58; o # LEFT SQUARE BRACKET WITH DOUBLE STROKE
|
||||
2E58; 2E57; c # RIGHT SQUARE BRACKET WITH DOUBLE STROKE
|
||||
2E59; 2E5A; o # TOP HALF LEFT PARENTHESIS
|
||||
2E5A; 2E59; c # TOP HALF RIGHT PARENTHESIS
|
||||
2E5B; 2E5C; o # BOTTOM HALF LEFT PARENTHESIS
|
||||
2E5C; 2E5B; c # BOTTOM HALF RIGHT PARENTHESIS
|
||||
3008; 3009; o # LEFT ANGLE BRACKET
|
||||
3009; 3008; c # RIGHT ANGLE BRACKET
|
||||
300A; 300B; o # LEFT DOUBLE ANGLE BRACKET
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
# BidiMirroring-15.0.0.txt
|
||||
# Date: 2022-05-03, 18:47:00 GMT [KW, RP]
|
||||
# © 2022 Unicode®, Inc.
|
||||
# For terms of use, see https://www.unicode.org/terms_of_use.html
|
||||
# BidiMirroring-11.0.0.txt
|
||||
# Date: 2018-05-07, 18:02:00 GMT [KW, LI, RP]
|
||||
# © 2018 Unicode®, Inc.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Unicode Character Database
|
||||
# For documentation, see https://www.unicode.org/reports/tr44/
|
||||
# For documentation, see http://www.unicode.org/reports/tr44/
|
||||
#
|
||||
# Bidi_Mirroring_Glyph Property
|
||||
#
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
# value, for which there is another Unicode character that typically has a glyph
|
||||
# that is the mirror image of the original character's glyph.
|
||||
#
|
||||
# The repertoire covered by the file is Unicode 15.0.0.
|
||||
# The repertoire covered by the file is Unicode 11.0.0.
|
||||
#
|
||||
# The file contains a list of lines with mappings from one code point
|
||||
# to another one for character-based mirroring.
|
||||
|
|
@ -40,7 +40,7 @@
|
|||
# for character-based mirroring.
|
||||
#
|
||||
# For information on bidi mirroring, see UAX #9: Unicode Bidirectional Algorithm,
|
||||
# at https://www.unicode.org/reports/tr9/
|
||||
# at http://www.unicode.org/unicode/reports/tr9/
|
||||
#
|
||||
# This file was originally created by Markus Scherer.
|
||||
# Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler,
|
||||
|
|
@ -96,10 +96,10 @@
|
|||
208D; 208E # SUBSCRIPT LEFT PARENTHESIS
|
||||
208E; 208D # SUBSCRIPT RIGHT PARENTHESIS
|
||||
2208; 220B # ELEMENT OF
|
||||
2209; 220C # [BEST FIT] NOT AN ELEMENT OF
|
||||
2209; 220C # NOT AN ELEMENT OF
|
||||
220A; 220D # SMALL ELEMENT OF
|
||||
220B; 2208 # CONTAINS AS MEMBER
|
||||
220C; 2209 # [BEST FIT] DOES NOT CONTAIN AS MEMBER
|
||||
220C; 2209 # DOES NOT CONTAIN AS MEMBER
|
||||
220D; 220A # SMALL CONTAINS AS MEMBER
|
||||
2215; 29F5 # DIVISION SLASH
|
||||
221F; 2BFE # RIGHT ANGLE
|
||||
|
|
@ -453,14 +453,6 @@
|
|||
2E27; 2E26 # RIGHT SIDEWAYS U BRACKET
|
||||
2E28; 2E29 # LEFT DOUBLE PARENTHESIS
|
||||
2E29; 2E28 # RIGHT DOUBLE PARENTHESIS
|
||||
2E55; 2E56 # LEFT SQUARE BRACKET WITH STROKE
|
||||
2E56; 2E55 # RIGHT SQUARE BRACKET WITH STROKE
|
||||
2E57; 2E58 # LEFT SQUARE BRACKET WITH DOUBLE STROKE
|
||||
2E58; 2E57 # RIGHT SQUARE BRACKET WITH DOUBLE STROKE
|
||||
2E59; 2E5A # TOP HALF LEFT PARENTHESIS
|
||||
2E5A; 2E59 # TOP HALF RIGHT PARENTHESIS
|
||||
2E5B; 2E5C # BOTTOM HALF LEFT PARENTHESIS
|
||||
2E5C; 2E5B # BOTTOM HALF RIGHT PARENTHESIS
|
||||
3008; 3009 # LEFT ANGLE BRACKET
|
||||
3009; 3008 # RIGHT ANGLE BRACKET
|
||||
300A; 300B # LEFT DOUBLE ANGLE BRACKET
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
# Blocks-15.0.0.txt
|
||||
# Date: 2022-01-28, 20:58:00 GMT [KW]
|
||||
# © 2022 Unicode®, Inc.
|
||||
# For terms of use, see https://www.unicode.org/terms_of_use.html
|
||||
# Blocks-11.0.0.txt
|
||||
# Date: 2017-10-16, 24:39:00 GMT [KW]
|
||||
# © 2017 Unicode®, Inc.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Unicode Character Database
|
||||
# For documentation, see https://www.unicode.org/reports/tr44/
|
||||
# For documentation, see http://www.unicode.org/reports/tr44/
|
||||
#
|
||||
# Format:
|
||||
# Start Code..End Code; Block Name
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
# and underbars are ignored.
|
||||
# For example, "Latin Extended-A" and "latin extended a" are equivalent.
|
||||
# For more information on the comparison of property values,
|
||||
# see UAX #44: https://www.unicode.org/reports/tr44/
|
||||
# see UAX #44: http://www.unicode.org/reports/tr44/
|
||||
#
|
||||
# All block ranges start with a value where (cp MOD 16) = 0,
|
||||
# and end with a value where (cp MOD 16) = 15. In other words,
|
||||
|
|
@ -52,7 +52,6 @@
|
|||
0800..083F; Samaritan
|
||||
0840..085F; Mandaic
|
||||
0860..086F; Syriac Supplement
|
||||
0870..089F; Arabic Extended-B
|
||||
08A0..08FF; Arabic Extended-A
|
||||
0900..097F; Devanagari
|
||||
0980..09FF; Bengali
|
||||
|
|
@ -216,9 +215,7 @@ FFF0..FFFF; Specials
|
|||
104B0..104FF; Osage
|
||||
10500..1052F; Elbasan
|
||||
10530..1056F; Caucasian Albanian
|
||||
10570..105BF; Vithkuqi
|
||||
10600..1077F; Linear A
|
||||
10780..107BF; Latin Extended-F
|
||||
10800..1083F; Cypriot Syllabary
|
||||
10840..1085F; Imperial Aramaic
|
||||
10860..1087F; Palmyrene
|
||||
|
|
@ -240,13 +237,8 @@ FFF0..FFFF; Specials
|
|||
10C80..10CFF; Old Hungarian
|
||||
10D00..10D3F; Hanifi Rohingya
|
||||
10E60..10E7F; Rumi Numeral Symbols
|
||||
10E80..10EBF; Yezidi
|
||||
10EC0..10EFF; Arabic Extended-C
|
||||
10F00..10F2F; Old Sogdian
|
||||
10F30..10F6F; Sogdian
|
||||
10F70..10FAF; Old Uyghur
|
||||
10FB0..10FDF; Chorasmian
|
||||
10FE0..10FFF; Elymaic
|
||||
11000..1107F; Brahmi
|
||||
11080..110CF; Kaithi
|
||||
110D0..110FF; Sora Sompeng
|
||||
|
|
@ -264,34 +256,24 @@ FFF0..FFFF; Specials
|
|||
11600..1165F; Modi
|
||||
11660..1167F; Mongolian Supplement
|
||||
11680..116CF; Takri
|
||||
11700..1174F; Ahom
|
||||
11700..1173F; Ahom
|
||||
11800..1184F; Dogra
|
||||
118A0..118FF; Warang Citi
|
||||
11900..1195F; Dives Akuru
|
||||
119A0..119FF; Nandinagari
|
||||
11A00..11A4F; Zanabazar Square
|
||||
11A50..11AAF; Soyombo
|
||||
11AB0..11ABF; Unified Canadian Aboriginal Syllabics Extended-A
|
||||
11AC0..11AFF; Pau Cin Hau
|
||||
11B00..11B5F; Devanagari Extended-A
|
||||
11C00..11C6F; Bhaiksuki
|
||||
11C70..11CBF; Marchen
|
||||
11D00..11D5F; Masaram Gondi
|
||||
11D60..11DAF; Gunjala Gondi
|
||||
11EE0..11EFF; Makasar
|
||||
11F00..11F5F; Kawi
|
||||
11FB0..11FBF; Lisu Supplement
|
||||
11FC0..11FFF; Tamil Supplement
|
||||
12000..123FF; Cuneiform
|
||||
12400..1247F; Cuneiform Numbers and Punctuation
|
||||
12480..1254F; Early Dynastic Cuneiform
|
||||
12F90..12FFF; Cypro-Minoan
|
||||
13000..1342F; Egyptian Hieroglyphs
|
||||
13430..1345F; Egyptian Hieroglyph Format Controls
|
||||
14400..1467F; Anatolian Hieroglyphs
|
||||
16800..16A3F; Bamum Supplement
|
||||
16A40..16A6F; Mro
|
||||
16A70..16ACF; Tangsa
|
||||
16AD0..16AFF; Bassa Vah
|
||||
16B00..16B8F; Pahawh Hmong
|
||||
16E40..16E9F; Medefaidrin
|
||||
|
|
@ -299,37 +281,23 @@ FFF0..FFFF; Specials
|
|||
16FE0..16FFF; Ideographic Symbols and Punctuation
|
||||
17000..187FF; Tangut
|
||||
18800..18AFF; Tangut Components
|
||||
18B00..18CFF; Khitan Small Script
|
||||
18D00..18D7F; Tangut Supplement
|
||||
1AFF0..1AFFF; Kana Extended-B
|
||||
1B000..1B0FF; Kana Supplement
|
||||
1B100..1B12F; Kana Extended-A
|
||||
1B130..1B16F; Small Kana Extension
|
||||
1B170..1B2FF; Nushu
|
||||
1BC00..1BC9F; Duployan
|
||||
1BCA0..1BCAF; Shorthand Format Controls
|
||||
1CF00..1CFCF; Znamenny Musical Notation
|
||||
1D000..1D0FF; Byzantine Musical Symbols
|
||||
1D100..1D1FF; Musical Symbols
|
||||
1D200..1D24F; Ancient Greek Musical Notation
|
||||
1D2C0..1D2DF; Kaktovik Numerals
|
||||
1D2E0..1D2FF; Mayan Numerals
|
||||
1D300..1D35F; Tai Xuan Jing Symbols
|
||||
1D360..1D37F; Counting Rod Numerals
|
||||
1D400..1D7FF; Mathematical Alphanumeric Symbols
|
||||
1D800..1DAAF; Sutton SignWriting
|
||||
1DF00..1DFFF; Latin Extended-G
|
||||
1E000..1E02F; Glagolitic Supplement
|
||||
1E030..1E08F; Cyrillic Extended-D
|
||||
1E100..1E14F; Nyiakeng Puachue Hmong
|
||||
1E290..1E2BF; Toto
|
||||
1E2C0..1E2FF; Wancho
|
||||
1E4D0..1E4FF; Nag Mundari
|
||||
1E7E0..1E7FF; Ethiopic Extended-B
|
||||
1E800..1E8DF; Mende Kikakui
|
||||
1E900..1E95F; Adlam
|
||||
1EC70..1ECBF; Indic Siyaq Numbers
|
||||
1ED00..1ED4F; Ottoman Siyaq Numbers
|
||||
1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols
|
||||
1F000..1F02F; Mahjong Tiles
|
||||
1F030..1F09F; Domino Tiles
|
||||
|
|
@ -345,16 +313,12 @@ FFF0..FFFF; Specials
|
|||
1F800..1F8FF; Supplemental Arrows-C
|
||||
1F900..1F9FF; Supplemental Symbols and Pictographs
|
||||
1FA00..1FA6F; Chess Symbols
|
||||
1FA70..1FAFF; Symbols and Pictographs Extended-A
|
||||
1FB00..1FBFF; Symbols for Legacy Computing
|
||||
20000..2A6DF; CJK Unified Ideographs Extension B
|
||||
2A700..2B73F; CJK Unified Ideographs Extension C
|
||||
2B740..2B81F; CJK Unified Ideographs Extension D
|
||||
2B820..2CEAF; CJK Unified Ideographs Extension E
|
||||
2CEB0..2EBEF; CJK Unified Ideographs Extension F
|
||||
2F800..2FA1F; CJK Compatibility Ideographs Supplement
|
||||
30000..3134F; CJK Unified Ideographs Extension G
|
||||
31350..323AF; CJK Unified Ideographs Extension H
|
||||
E0000..E007F; Tags
|
||||
E0100..E01EF; Variation Selectors Supplement
|
||||
F0000..FFFFF; Supplementary Private Use Area-A
|
||||
|
|
|
|||
|
|
@ -2,12 +2,6 @@
|
|||
#
|
||||
# History:
|
||||
#
|
||||
# 2022-09-13 Registration of additional sequences in the Adobe-Japan1
|
||||
# collection.
|
||||
#
|
||||
# 2020-11-06 Registration of additional sequences in the MSARG
|
||||
# collection.
|
||||
#
|
||||
# 2017-12-12 Registration of additional sequences in the Adobe-Japan1
|
||||
# collection. Combined registration of the KRName collection
|
||||
# and of sequences in that collection. Registration of
|
||||
|
|
@ -33,10 +27,10 @@
|
|||
#
|
||||
# This file is part of the Unicode Ideographic Variation Database (IVD).
|
||||
# For more details on the IVD, see UTS #37:
|
||||
# https://www.unicode.org/reports/tr37/
|
||||
# http://www.unicode.org/reports/tr37/
|
||||
#
|
||||
# Copyright 2006-2022 Unicode, Inc.
|
||||
# For terms of use, see: https://www.unicode.org/copyright.html#8
|
||||
# Copyright 2006-2017 Unicode, Inc.
|
||||
# For terms of use, see: http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
3402 E0100; Adobe-Japan1; CID+13698
|
||||
3402 E0101; Adobe-Japan1; CID+13697
|
||||
|
|
@ -870,8 +864,6 @@
|
|||
4054 E0100; Hanyo-Denshi; IA3507
|
||||
4054 E0101; Hanyo-Denshi; TK01062970
|
||||
4058 E0100; Adobe-Japan1; CID+18198
|
||||
4058 E0101; MSARG; MD_4058
|
||||
4058 E0102; MSARG; ME_4058_001
|
||||
4071 E0100; Hanyo-Denshi; IA0509
|
||||
4071 E0100; Moji_Joho; MJ002897
|
||||
4071 E0101; Hanyo-Denshi; JTB661
|
||||
|
|
@ -1102,8 +1094,6 @@
|
|||
4359 E0101; Moji_Joho; MJ003650
|
||||
4395 E0100; Hanyo-Denshi; IA4278
|
||||
4395 E0101; Hanyo-Denshi; TK01074010
|
||||
4397 E0100; MSARG; MA_9967
|
||||
4397 E0101; MSARG; ME_4397_001
|
||||
43A8 E0100; Hanyo-Denshi; IA4294
|
||||
43A8 E0101; Hanyo-Denshi; TK01074340
|
||||
43A9 E0100; Hanyo-Denshi; IA0588
|
||||
|
|
@ -1417,8 +1407,6 @@
|
|||
460D E0101; Moji_Joho; MJ004388
|
||||
460F E0100; Adobe-Japan1; CID+18634
|
||||
4610 E0100; Adobe-Japan1; CID+19136
|
||||
4615 E0100; MSARG; MA_8FEB
|
||||
4615 E0101; MSARG; ME_4615_001
|
||||
462F E0100; Hanyo-Denshi; IA4925
|
||||
462F E0101; Hanyo-Denshi; TK01083800
|
||||
4635 E0100; Hanyo-Denshi; IA4929
|
||||
|
|
@ -1572,8 +1560,6 @@
|
|||
4921 E0101; Hanyo-Denshi; TK01092060
|
||||
4938 E0100; Hanyo-Denshi; IA5637
|
||||
4938 E0101; Hanyo-Denshi; TK01093220
|
||||
493E E0100; MSARG; MA_97E1
|
||||
493E E0101; MSARG; ME_493E_001
|
||||
493F E0100; Hanyo-Denshi; IA5643
|
||||
493F E0100; Moji_Joho; MJ005179
|
||||
493F E0101; Hanyo-Denshi; KS462830
|
||||
|
|
@ -1622,8 +1608,6 @@
|
|||
4A28 E0101; Hanyo-Denshi; IB1033
|
||||
4A28 E0101; Moji_Joho; MJ005391
|
||||
4A29 E0100; Adobe-Japan1; CID+18910
|
||||
4A29 E0101; MSARG; MD_4A29
|
||||
4A29 E0102; MSARG; ME_4A29_001
|
||||
4A3C E0100; Hanyo-Denshi; IB1041
|
||||
4A3C E0100; Moji_Joho; MJ005411
|
||||
4A3C E0101; Hanyo-Denshi; JTBEBD
|
||||
|
|
@ -2032,8 +2016,6 @@
|
|||
4E75 E0101; Moji_Joho; MJ006419
|
||||
4E75 E0102; Hanyo-Denshi; JTAD26
|
||||
4E75 E0102; Moji_Joho; MJ006420
|
||||
4E78 E0100; MSARG; MA_9AFB
|
||||
4E78 E0101; MSARG; ME_4E78_001
|
||||
4E79 E0100; Adobe-Japan1; CID+19143
|
||||
4E7E E0100; Adobe-Japan1; CID+1505
|
||||
4E7F E0100; Adobe-Japan1; CID+14306
|
||||
|
|
@ -2651,8 +2633,6 @@
|
|||
5029 E0101; Moji_Joho; MJ006862
|
||||
5029 E0102; Hanyo-Denshi; FT2068
|
||||
5029 E0102; Moji_Joho; MJ006863
|
||||
5029 E0103; MSARG; MB_ADC5
|
||||
5029 E0104; MSARG; ME_5029_001
|
||||
502A E0100; Adobe-Japan1; CID+4157
|
||||
502B E0100; Adobe-Japan1; CID+3993
|
||||
502B E0101; Hanyo-Denshi; JA4649
|
||||
|
|
@ -3531,8 +3511,6 @@
|
|||
51CD E0100; Adobe-Japan1; CID+3162
|
||||
51CF E0100; Adobe-Japan1; CID+19177
|
||||
51D1 E0100; Adobe-Japan1; CID+19178
|
||||
51D1 E0101; MSARG; MA_FAA4
|
||||
51D1 E0102; MSARG; ME_51D1_001
|
||||
51D2 E0100; Adobe-Japan1; CID+21186
|
||||
51D3 E0100; Adobe-Japan1; CID+19179
|
||||
51D4 E0100; Adobe-Japan1; CID+19180
|
||||
|
|
@ -4465,8 +4443,6 @@
|
|||
53D6 E0100; Adobe-Japan1; CID+2324
|
||||
53D7 E0100; Adobe-Japan1; CID+2337
|
||||
53D7 E0101; Adobe-Japan1; CID+13813
|
||||
53D8 E0100; MSARG; MA_895A
|
||||
53D8 E0101; MSARG; ME_53D8_001
|
||||
53D9 E0100; Adobe-Japan1; CID+2432
|
||||
53DA E0100; Adobe-Japan1; CID+14372
|
||||
53DB E0100; Adobe-Japan1; CID+3412
|
||||
|
|
@ -4967,8 +4943,6 @@
|
|||
555A E0102; Hanyo-Denshi; KS044550
|
||||
555A E0102; Moji_Joho; MJ008401
|
||||
555A E0103; Moji_Joho; MJ057180
|
||||
555A E0104; MSARG; MD_555A
|
||||
555A E0105; MSARG; ME_555A_001
|
||||
555B E0100; Adobe-Japan1; CID+21282
|
||||
555C E0100; Adobe-Japan1; CID+4392
|
||||
555D E0100; Adobe-Japan1; CID+4398
|
||||
|
|
@ -4977,8 +4951,6 @@
|
|||
555D E0102; Hanyo-Denshi; JTAEDA
|
||||
555D E0102; Moji_Joho; MJ008405
|
||||
555E E0100; Adobe-Japan1; CID+7633
|
||||
555F E0100; MSARG; MB_B1D2
|
||||
555F E0101; MSARG; ME_555F_001
|
||||
5560 E0100; Adobe-Japan1; CID+14392
|
||||
5561 E0100; Adobe-Japan1; CID+20308
|
||||
5561 E0101; Adobe-Japan1; CID+14393
|
||||
|
|
@ -4989,8 +4961,6 @@
|
|||
5568 E0100; Moji_Joho; MJ008415
|
||||
5568 E0101; Hanyo-Denshi; IB1035
|
||||
5568 E0101; Moji_Joho; MJ008416
|
||||
556B E0100; MSARG; MA_94DC
|
||||
556B E0101; MSARG; ME_556B_001
|
||||
557B E0100; Adobe-Japan1; CID+4404
|
||||
557C E0100; Adobe-Japan1; CID+4409
|
||||
557C E0101; Hanyo-Denshi; JA5138
|
||||
|
|
@ -5458,8 +5428,6 @@
|
|||
56A0 E0102; Hanyo-Denshi; JTAF22
|
||||
56A0 E0102; Moji_Joho; MJ008750
|
||||
56A2 E0100; Adobe-Japan1; CID+3311
|
||||
56A4 E0100; MSARG; MA_97A3
|
||||
56A4 E0101; MSARG; ME_56A4_001
|
||||
56A5 E0100; Adobe-Japan1; CID+4446
|
||||
56A5 E0101; Adobe-Japan1; CID+7822
|
||||
56A5 E0102; Hanyo-Denshi; JA5175
|
||||
|
|
@ -6686,8 +6654,6 @@
|
|||
59F6 E0100; Adobe-Japan1; CID+1132
|
||||
59F7 E0100; Adobe-Japan1; CID+21401
|
||||
59F8 E0100; Adobe-Japan1; CID+19312
|
||||
59F8 E0101; MSARG; MA_9D55
|
||||
59F8 E0102; MSARG; ME_59F8_001
|
||||
59FB E0100; Adobe-Japan1; CID+1213
|
||||
59FF E0100; Adobe-Japan1; CID+2207
|
||||
59FF E0101; Adobe-Japan1; CID+13792
|
||||
|
|
@ -6904,8 +6870,6 @@
|
|||
5ACC E0103; Hanyo-Denshi; FT1791S
|
||||
5ACC E0103; Moji_Joho; MJ009909
|
||||
5ACF E0100; Adobe-Japan1; CID+21424
|
||||
5ACF E0101; MSARG; MA_92F4
|
||||
5ACF E0102; MSARG; ME_5ACF_001
|
||||
5AD0 E0100; Adobe-Japan1; CID+4603
|
||||
5AD6 E0100; Adobe-Japan1; CID+4596
|
||||
5AD7 E0100; Adobe-Japan1; CID+4593
|
||||
|
|
@ -7576,8 +7540,6 @@
|
|||
5C8D E0100; Moji_Joho; MJ010418
|
||||
5C8D E0101; Hanyo-Denshi; JTB06C
|
||||
5C8D E0101; Moji_Joho; MJ010419
|
||||
5C8D E0102; MSARG; MB_CAC0
|
||||
5C8D E0103; MSARG; ME_5C8D_001
|
||||
5C8F E0100; Adobe-Japan1; CID+16840
|
||||
5C90 E0100; Adobe-Japan1; CID+1584
|
||||
5C91 E0100; Adobe-Japan1; CID+4663
|
||||
|
|
@ -7607,8 +7569,6 @@
|
|||
5CAB E0100; Adobe-Japan1; CID+4666
|
||||
5CAC E0100; Adobe-Japan1; CID+3764
|
||||
5CAD E0100; Adobe-Japan1; CID+17557
|
||||
5CAD E0101; MSARG; MB_CC64
|
||||
5CAD E0102; MSARG; ME_5CAD_001
|
||||
5CB1 E0100; Adobe-Japan1; CID+2866
|
||||
5CB2 E0100; Adobe-Japan1; CID+21464
|
||||
5CB3 E0100; Adobe-Japan1; CID+1463
|
||||
|
|
@ -10135,8 +10095,6 @@
|
|||
62D0 E0103; Moji_Joho; MJ012273
|
||||
62D0 E0104; Hanyo-Denshi; IB1917
|
||||
62D0 E0104; Moji_Joho; MJ012274
|
||||
62D0 E0105; MSARG; MB_A9E4
|
||||
62D0 E0106; MSARG; ME_62D0_001
|
||||
62D1 E0100; Adobe-Japan1; CID+4961
|
||||
62D2 E0100; Adobe-Japan1; CID+1675
|
||||
62D2 E0101; Adobe-Japan1; CID+13715
|
||||
|
|
@ -12675,8 +12633,6 @@
|
|||
690D E0104; Hanyo-Denshi; KS170180
|
||||
690D E0104; Moji_Joho; MJ057753
|
||||
690D E0105; Hanyo-Denshi; TK01044570
|
||||
690D E0106; MSARG; MB_B4D3
|
||||
690D E0107; MSARG; ME_690D_001
|
||||
690E E0100; Adobe-Japan1; CID+3043
|
||||
690F E0100; Adobe-Japan1; CID+5206
|
||||
6910 E0100; Adobe-Japan1; CID+21777
|
||||
|
|
@ -13082,8 +13038,6 @@
|
|||
6A0B E0102; Moji_Joho; MJ014416
|
||||
6A0B E0103; Hanyo-Denshi; FT1907
|
||||
6A0B E0103; Moji_Joho; MJ014417
|
||||
6A0B E0104; MSARG; MA_FD42
|
||||
6A0B E0105; MSARG; ME_6A0B_001
|
||||
6A0C E0100; Adobe-Japan1; CID+5295
|
||||
6A0F E0100; Adobe-Japan1; CID+14658
|
||||
6A11 E0100; Adobe-Japan1; CID+17851
|
||||
|
|
@ -13944,8 +13898,6 @@
|
|||
6C67 E0102; Hanyo-Denshi; IB2201
|
||||
6C67 E0102; Moji_Joho; MJ015090
|
||||
6C67 E0103; Hanyo-Denshi; TK01049100
|
||||
6C67 E0104; MSARG; MB_CB4C
|
||||
6C67 E0105; MSARG; ME_6C67_001
|
||||
6C68 E0100; Adobe-Japan1; CID+5392
|
||||
6C6A E0100; Adobe-Japan1; CID+5385
|
||||
6C6A E0101; Hanyo-Denshi; JA6174
|
||||
|
|
@ -14366,8 +14318,6 @@
|
|||
6DCD E0100; Hanyo-Denshi; IP6DCD
|
||||
6DCD E0101; Hanyo-Denshi; TK01050160
|
||||
6DCE E0100; Adobe-Japan1; CID+17952
|
||||
6DCE E0101; MSARG; MD_6DCE
|
||||
6DCE E0102; MSARG; ME_6DCE_001
|
||||
6DCF E0100; Adobe-Japan1; CID+8520
|
||||
6DCF E0101; Hanyo-Denshi; JB3957
|
||||
6DCF E0101; Moji_Joho; MJ015459
|
||||
|
|
@ -15320,8 +15270,6 @@
|
|||
701E E0106; Hanyo-Denshi; IB2283
|
||||
701E E0106; Moji_Joho; MJ016159
|
||||
701E E0107; Hanyo-Denshi; TK01053770
|
||||
701E E0108; MSARG; MA_96EE
|
||||
701E E0109; MSARG; ME_701E_001
|
||||
701F E0100; Adobe-Japan1; CID+5546
|
||||
701F E0101; Hanyo-Denshi; JA6347
|
||||
701F E0101; Moji_Joho; MJ016166
|
||||
|
|
@ -15744,8 +15692,6 @@
|
|||
71A8 E0100; Adobe-Japan1; CID+5580
|
||||
71AC E0100; Adobe-Japan1; CID+5581
|
||||
71AE E0100; Adobe-Japan1; CID+18037
|
||||
71AE E0101; MSARG; MD_71AE
|
||||
71AE E0102; MSARG; ME_71AE_001
|
||||
71AF E0100; Adobe-Japan1; CID+18038
|
||||
71B0 E0100; Adobe-Japan1; CID+21938
|
||||
71B1 E0100; Adobe-Japan1; CID+3300
|
||||
|
|
@ -15758,8 +15704,6 @@
|
|||
71B3 E0103; Moji_Joho; MJ016595
|
||||
71B9 E0100; Adobe-Japan1; CID+5583
|
||||
71BA E0100; Adobe-Japan1; CID+16965
|
||||
71BB E0100; MSARG; MD_71BB
|
||||
71BB E0101; MSARG; ME_71BB_001
|
||||
71BE E0100; Adobe-Japan1; CID+5584
|
||||
71BE E0101; Hanyo-Denshi; JA6385
|
||||
71BE E0101; Moji_Joho; MJ016605
|
||||
|
|
@ -15883,8 +15827,6 @@
|
|||
7210 E0100; Adobe-Japan1; CID+5597
|
||||
7213 E0100; Adobe-Japan1; CID+21946
|
||||
7215 E0100; Adobe-Japan1; CID+16967
|
||||
7215 E0101; MSARG; MA_FE41
|
||||
7215 E0102; MSARG; ME_7215_001
|
||||
7217 E0100; Adobe-Japan1; CID+19521
|
||||
7217 E0101; Hanyo-Denshi; JB4235
|
||||
7217 E0101; Moji_Joho; MJ016708
|
||||
|
|
@ -17746,8 +17688,6 @@
|
|||
771F E0105; Moji_Joho; MJ018174
|
||||
771F E0106; Hanyo-Denshi; TK01062480
|
||||
771F E0107; Moji_Joho; MJ018175
|
||||
771F E0108; MSARG; MB_AF75
|
||||
771F E0109; MSARG; ME_771F_001
|
||||
7720 E0100; Adobe-Japan1; CID+3774
|
||||
7722 E0100; Adobe-Japan1; CID+19578
|
||||
7724 E0100; Adobe-Japan1; CID+5815
|
||||
|
|
@ -18076,8 +18016,6 @@
|
|||
784F E0101; Moji_Joho; MJ018495
|
||||
784F E0102; Hanyo-Denshi; JTB674
|
||||
784F E0102; Moji_Joho; MJ018496
|
||||
784F E0103; MSARG; MD_784F
|
||||
784F E0104; MSARG; ME_784F_001
|
||||
7851 E0100; Adobe-Japan1; CID+15420
|
||||
7852 E0100; Adobe-Japan1; CID+22078
|
||||
785C E0100; Adobe-Japan1; CID+19603
|
||||
|
|
@ -19295,8 +19233,6 @@
|
|||
7AAE E0103; Moji_Joho; MJ019272
|
||||
7AAF E0100; Adobe-Japan1; CID+3900
|
||||
7AB0 E0100; Adobe-Japan1; CID+5938
|
||||
7AB0 E0101; MSARG; MA_8E50
|
||||
7AB0 E0102; MSARG; ME_7AB0_001
|
||||
7AB1 E0100; Hanyo-Denshi; IP7AB1
|
||||
7AB1 E0101; Hanyo-Denshi; TK01068710
|
||||
7AB3 E0100; Adobe-Japan1; CID+14931
|
||||
|
|
@ -19508,8 +19444,6 @@
|
|||
7B51 E0103; Moji_Joho; MJ019458
|
||||
7B51 E0104; Hanyo-Denshi; JTB7A5
|
||||
7B51 E0104; Moji_Joho; MJ019456
|
||||
7B51 E0105; MSARG; MB_B5AE
|
||||
7B51 E0106; MSARG; ME_7B51_001
|
||||
7B52 E0100; Adobe-Japan1; CID+3189
|
||||
7B53 E0100; Adobe-Japan1; CID+14173
|
||||
7B53 E0101; Hanyo-Denshi; IP7B53
|
||||
|
|
@ -20428,8 +20362,6 @@
|
|||
7D86 E0103; Moji_Joho; MJ020134
|
||||
7D88 E0100; Adobe-Japan1; CID+18353
|
||||
7D89 E0100; Adobe-Japan1; CID+6084
|
||||
7D89 E0101; MSARG; MA_8EA7
|
||||
7D89 E0102; MSARG; ME_7D89_001
|
||||
7D8B E0100; Adobe-Japan1; CID+14980
|
||||
7D8C E0100; Adobe-Japan1; CID+14981
|
||||
7D8D E0100; Adobe-Japan1; CID+19665
|
||||
|
|
@ -20495,8 +20427,6 @@
|
|||
7DAA E0102; Hanyo-Denshi; IB0846
|
||||
7DAA E0102; Moji_Joho; MJ020184
|
||||
7DAB E0100; Adobe-Japan1; CID+6095
|
||||
7DAB E0101; MSARG; MA_8EA8
|
||||
7DAB E0102; MSARG; ME_7DAB_001
|
||||
7DAC E0100; Adobe-Japan1; CID+2342
|
||||
7DAD E0100; Adobe-Japan1; CID+1185
|
||||
7DAD E0101; Hanyo-Denshi; JA1661
|
||||
|
|
@ -21296,8 +21226,6 @@
|
|||
7FEB E0103; Moji_Joho; MJ020716
|
||||
7FEB E0104; Moji_Joho; MJ020718
|
||||
7FEC E0100; Adobe-Japan1; CID+15007
|
||||
7FEC E0101; MSARG; MB_E6F8
|
||||
7FEC E0102; MSARG; ME_7FEC_001
|
||||
7FEE E0100; Adobe-Japan1; CID+15008
|
||||
7FEF E0100; Adobe-Japan1; CID+15009
|
||||
7FF0 E0100; Adobe-Japan1; CID+1545
|
||||
|
|
@ -21310,8 +21238,6 @@
|
|||
7FF0 E0104; Moji_Joho; MJ020725
|
||||
7FF0 E0105; Hanyo-Denshi; TK01074020
|
||||
7FF0 E0106; Hanyo-Denshi; TK01074040
|
||||
7FF1 E0100; MSARG; MB_BFAC
|
||||
7FF1 E0101; MSARG; ME_7FF1_001
|
||||
7FF2 E0100; Adobe-Japan1; CID+18402
|
||||
7FF3 E0100; Adobe-Japan1; CID+6199
|
||||
7FF3 E0101; Hanyo-Denshi; JA7042
|
||||
|
|
@ -21324,9 +21250,6 @@
|
|||
7FF9 E0102; Hanyo-Denshi; FT2443
|
||||
7FF9 E0102; Moji_Joho; MJ020737
|
||||
7FFA E0100; Adobe-Japan1; CID+15010
|
||||
7FFA E0101; MSARG; MA_8ECB
|
||||
7FFA E0102; MSARG; ME_7FFA_001
|
||||
7FFA E0103; MSARG; ME_7FFA_002
|
||||
7FFB E0100; Adobe-Japan1; CID+3723
|
||||
7FFB E0101; Adobe-Japan1; CID+14040
|
||||
7FFB E0102; Hanyo-Denshi; JA4361
|
||||
|
|
@ -23157,8 +23080,6 @@
|
|||
833A E0101; Moji_Joho; MJ021843
|
||||
833A E0102; Hanyo-Denshi; KS346690S
|
||||
833A E0102; Moji_Joho; MJ021844
|
||||
833A E0103; MSARG; MB_D072
|
||||
833A E0104; MSARG; ME_833A_001
|
||||
833C E0100; Adobe-Japan1; CID+18489
|
||||
833C E0101; Hanyo-Denshi; JB5581
|
||||
833C E0101; Moji_Joho; MJ021846
|
||||
|
|
@ -23622,8 +23543,6 @@
|
|||
83C1 E0104; Hanyo-Denshi; FT2479
|
||||
83C1 E0104; Moji_Joho; MJ022062
|
||||
83C1 E0105; Hanyo-Denshi; TK01078230
|
||||
83C1 E0106; MSARG; MB_B5D7
|
||||
83C1 E0107; MSARG; ME_83C1_001
|
||||
83C2 E0100; Hanyo-Denshi; KS350410
|
||||
83C2 E0101; Hanyo-Denshi; TK01078690
|
||||
83C5 E0100; Adobe-Japan1; CID+2625
|
||||
|
|
@ -24441,8 +24360,6 @@
|
|||
84A8 E0103; Hanyo-Denshi; IB0865
|
||||
84A8 E0103; Moji_Joho; MJ022481
|
||||
84A8 E0104; Hanyo-Denshi; TK01080090
|
||||
84A8 E0105; MSARG; MB_E3C8
|
||||
84A8 E0106; MSARG; ME_84A8_001
|
||||
84A9 E0100; Adobe-Japan1; CID+22350
|
||||
84A9 E0101; Hanyo-Denshi; JB5680
|
||||
84A9 E0101; Moji_Joho; MJ022484
|
||||
|
|
@ -24954,8 +24871,6 @@
|
|||
8534 E0101; Moji_Joho; MJ022738
|
||||
8534 E0102; Hanyo-Denshi; KS360300
|
||||
8534 E0102; Moji_Joho; MJ022739
|
||||
8534 E0103; MSARG; MA_8F77
|
||||
8534 E0104; MSARG; ME_8534_001
|
||||
8535 E0100; Adobe-Japan1; CID+2818
|
||||
8535 E0101; Hanyo-Denshi; JA3402
|
||||
8535 E0102; Hanyo-Denshi; TK01081050
|
||||
|
|
@ -26767,7 +26682,6 @@
|
|||
8846 E0106; Hanyo-Denshi; TK01083450
|
||||
8846 E0107; MSARG; MA_8FBC
|
||||
8846 E0108; MSARG; ME_8846_001
|
||||
8846 E0109; MSARG; ME_8846_002
|
||||
8848 E0100; Adobe-Japan1; CID+22465
|
||||
8849 E0100; Adobe-Japan1; CID+22466
|
||||
884A E0100; Adobe-Japan1; CID+18635
|
||||
|
|
@ -28055,8 +27969,6 @@
|
|||
8B66 E0101; Moji_Joho; MJ024795
|
||||
8B66 E0102; Hanyo-Denshi; KS408750S
|
||||
8B66 E0102; Moji_Joho; MJ024796
|
||||
8B67 E0100; MSARG; MB_F4D4
|
||||
8B67 E0101; MSARG; ME_8B67_001
|
||||
8B69 E0100; Adobe-Japan1; CID+17130
|
||||
8B69 E0101; Hanyo-Denshi; JC9220
|
||||
8B69 E0101; Moji_Joho; MJ024799
|
||||
|
|
@ -28752,8 +28664,6 @@
|
|||
8E26 E0100; Adobe-Japan1; CID+19850
|
||||
8E27 E0100; Adobe-Japan1; CID+18732
|
||||
8E2A E0100; Adobe-Japan1; CID+6824
|
||||
8E2D E0100; MSARG; MA_9E5A
|
||||
8E2D E0101; MSARG; ME_8E2D_001
|
||||
8E30 E0100; Adobe-Japan1; CID+6813
|
||||
8E30 E0101; Hanyo-Denshi; JA7692
|
||||
8E30 E0101; Moji_Joho; MJ025364
|
||||
|
|
@ -30430,8 +30340,6 @@
|
|||
90A8 E0103; Moji_Joho; MJ026250
|
||||
90A8 E0104; Hanyo-Denshi; TK01090660
|
||||
90A8 E0105; Hanyo-Denshi; TK01090690
|
||||
90A8 E0106; MSARG; MA_9068
|
||||
90A8 E0107; MSARG; ME_90A8_001
|
||||
90AA E0100; Adobe-Japan1; CID+2309
|
||||
90AA E0101; Adobe-Japan1; CID+13454
|
||||
90AA E0102; Adobe-Japan1; CID+13806
|
||||
|
|
@ -30707,8 +30615,6 @@
|
|||
9175 E0101; Moji_Joho; MJ026482
|
||||
9175 E0102; Hanyo-Denshi; JTBDA9
|
||||
9175 E0102; Moji_Joho; MJ026483
|
||||
9176 E0100; MSARG; MA_9E4A
|
||||
9176 E0101; MSARG; ME_9176_001
|
||||
9177 E0100; Adobe-Japan1; CID+2053
|
||||
9177 E0101; Adobe-Japan1; CID+13776
|
||||
9177 E0102; Hanyo-Denshi; JA2583
|
||||
|
|
@ -31167,8 +31073,6 @@
|
|||
92B7 E0102; Moji_Joho; MJ026858
|
||||
92B8 E0100; Adobe-Japan1; CID+22751
|
||||
92B9 E0100; Adobe-Japan1; CID+6997
|
||||
92B9 E0101; MSARG; MA_F9D7
|
||||
92B9 E0102; MSARG; ME_92B9_001
|
||||
92BA E0100; Adobe-Japan1; CID+22752
|
||||
92BB E0100; Adobe-Japan1; CID+19920
|
||||
92BC E0100; Adobe-Japan1; CID+19921
|
||||
|
|
@ -31406,8 +31310,6 @@
|
|||
936E E0101; Moji_Joho; MJ027061
|
||||
936E E0102; Hanyo-Denshi; FT2650
|
||||
936E E0102; Moji_Joho; MJ027062
|
||||
936E E0103; MSARG; MA_A05F
|
||||
936E E0104; MSARG; ME_936E_001
|
||||
936F E0100; Adobe-Japan1; CID+22777
|
||||
9370 E0100; Adobe-Japan1; CID+8676
|
||||
9371 E0100; Adobe-Japan1; CID+18852
|
||||
|
|
@ -32192,8 +32094,6 @@
|
|||
96B6 E0101; Moji_Joho; MJ027706
|
||||
96B6 E0102; Hanyo-Denshi; KS475490
|
||||
96B6 E0102; Moji_Joho; MJ027705
|
||||
96B6 E0103; MSARG; MA_90C4
|
||||
96B6 E0104; MSARG; ME_96B6_001
|
||||
96B7 E0100; Adobe-Japan1; CID+4020
|
||||
96B8 E0100; Adobe-Japan1; CID+7114
|
||||
96B9 E0100; Adobe-Japan1; CID+7115
|
||||
|
|
@ -32470,8 +32370,6 @@
|
|||
9759 E0102; Hanyo-Denshi; JA3237
|
||||
9759 E0103; Hanyo-Denshi; TK01097430
|
||||
9759 E0104; Hanyo-Denshi; TK01097490
|
||||
9759 E0105; MSARG; MD_9759
|
||||
9759 E0106; MSARG; ME_9759_001
|
||||
975A E0100; Adobe-Japan1; CID+15275
|
||||
975A E0101; Hanyo-Denshi; JB7121
|
||||
975A E0101; Moji_Joho; MJ027909
|
||||
|
|
@ -32494,8 +32392,6 @@
|
|||
975C E0105; Moji_Joho; MJ027915
|
||||
975C E0106; Hanyo-Denshi; TK01097530
|
||||
975C E0107; Hanyo-Denshi; TK01097550
|
||||
975C E0108; MSARG; MB_C052
|
||||
975C E0109; MSARG; ME_975C_001
|
||||
975D E0100; Hanyo-Denshi; IB1040
|
||||
975D E0100; Moji_Joho; MJ027919
|
||||
975D E0101; Hanyo-Denshi; IP975D
|
||||
|
|
@ -32543,8 +32439,6 @@
|
|||
976D E0103; Moji_Joho; MJ027942
|
||||
976D E0104; Hanyo-Denshi; HG1633
|
||||
976D E0104; Moji_Joho; MJ027941
|
||||
976D E0105; MSARG; MA_9E46
|
||||
976D E0106; MSARG; ME_976D_001
|
||||
976E E0100; Adobe-Japan1; CID+15277
|
||||
9771 E0100; Adobe-Japan1; CID+7152
|
||||
9771 E0101; Adobe-Japan1; CID+7710
|
||||
|
|
@ -32699,8 +32593,6 @@
|
|||
97C8 E0103; Moji_Joho; MJ028052
|
||||
97C8 E0104; Hanyo-Denshi; FT2682
|
||||
97C8 E0104; Moji_Joho; MJ028054
|
||||
97C8 E0105; MSARG; MA_9F76
|
||||
97C8 E0106; MSARG; ME_97C8_001
|
||||
97C9 E0100; Adobe-Japan1; CID+17192
|
||||
97C9 E0101; Hanyo-Denshi; JB7160
|
||||
97C9 E0101; Moji_Joho; MJ028055
|
||||
|
|
@ -33174,7 +33066,6 @@
|
|||
98EB E0103; Moji_Joho; MJ028358
|
||||
98EC E0100; MSARG; MA_914B
|
||||
98EC E0101; MSARG; ME_98EC_001
|
||||
98EC E0102; MSARG; ME_98EC_002
|
||||
98ED E0100; Adobe-Japan1; CID+4289
|
||||
98ED E0101; Hanyo-Denshi; JA5012
|
||||
98ED E0101; Moji_Joho; MJ028362
|
||||
|
|
@ -33475,8 +33366,6 @@
|
|||
9936 E0100; Moji_Joho; MJ028491
|
||||
9936 E0101; Hanyo-Denshi; IP9936
|
||||
9936 E0101; Moji_Joho; MJ028492
|
||||
9938 E0100; MSARG; MA_9652
|
||||
9938 E0101; MSARG; ME_9938_001
|
||||
9939 E0100; Adobe-Japan1; CID+22892
|
||||
9939 E0101; Hanyo-Denshi; JB7268
|
||||
9939 E0101; Moji_Joho; MJ028494
|
||||
|
|
@ -33955,8 +33844,6 @@
|
|||
9A5F E0103; Hanyo-Denshi; KS510550
|
||||
9A5F E0103; Moji_Joho; MJ028831
|
||||
9A62 E0100; Adobe-Japan1; CID+7261
|
||||
9A63 E0100; MSARG; MA_9557
|
||||
9A63 E0101; MSARG; ME_9A63_001
|
||||
9A64 E0100; Adobe-Japan1; CID+7263
|
||||
9A65 E0100; Adobe-Japan1; CID+7262
|
||||
9A65 E0101; Adobe-Japan1; CID+14268
|
||||
|
|
@ -35241,8 +35128,6 @@
|
|||
9ED8 E0102; Hanyo-Denshi; FT2329
|
||||
9ED8 E0102; Moji_Joho; MJ029902
|
||||
9ED9 E0100; Adobe-Japan1; CID+3815
|
||||
9ED9 E0101; MSARG; MD_9ED9
|
||||
9ED9 E0102; MSARG; ME_9ED9_001
|
||||
9EDB E0100; Adobe-Japan1; CID+2883
|
||||
9EDB E0101; Adobe-Japan1; CID+7729
|
||||
9EDB E0102; Hanyo-Denshi; JA3467
|
||||
|
|
@ -35928,8 +35813,6 @@ FA29 E0100; Adobe-Japan1; CID+8687
|
|||
206EE E0101; Moji_Joho; MJ031295
|
||||
206F9 E0100; Moji_Joho; MJ031302
|
||||
206F9 E0101; Moji_Joho; MJ031303
|
||||
2070E E0100; MSARG; MA_92C3
|
||||
2070E E0101; MSARG; ME_2070E_001
|
||||
2071B E0100; Hanyo-Denshi; KS023680
|
||||
2071B E0101; Hanyo-Denshi; TK01009920
|
||||
2074F E0100; Adobe-Japan1; CID+17312
|
||||
|
|
@ -36210,8 +36093,6 @@ FA29 E0100; Adobe-Japan1; CID+8687
|
|||
21764 E0100; Moji_Joho; MJ033638
|
||||
21764 E0101; Hanyo-Denshi; KS073700
|
||||
21764 E0101; Moji_Joho; MJ057303
|
||||
217B5 E0100; MSARG; MA_96FD
|
||||
217B5 E0101; MSARG; ME_217B5_001
|
||||
21800 E0100; Hanyo-Denshi; TK01020690
|
||||
21800 E0101; Hanyo-Denshi; TK01020760
|
||||
21898 E0100; Hanyo-Denshi; KS077190
|
||||
|
|
@ -36287,8 +36168,6 @@ FA29 E0100; Adobe-Japan1; CID+8687
|
|||
21D45 E0100; Adobe-Japan1; CID+17545
|
||||
21D58 E0100; Hanyo-Denshi; KS089870
|
||||
21D58 E0101; Hanyo-Denshi; TK01024500
|
||||
21D5E E0100; MSARG; MA_876E
|
||||
21D5E E0101; MSARG; ME_21D5E_001
|
||||
21D62 E0100; Adobe-Japan1; CID+17547
|
||||
21D78 E0100; Adobe-Japan1; CID+17546
|
||||
21D92 E0100; Adobe-Japan1; CID+17556
|
||||
|
|
@ -36781,8 +36660,6 @@ FA29 E0100; Adobe-Japan1; CID+8687
|
|||
23780 E0101; Hanyo-Denshi; JTB3B8
|
||||
23780 E0101; Moji_Joho; MJ038377
|
||||
23780 E0102; Hanyo-Denshi; TK01046760
|
||||
237C2 E0100; MSARG; MA_FCF0
|
||||
237C2 E0101; MSARG; ME_237C2_001
|
||||
237E7 E0100; Adobe-Japan1; CID+17875
|
||||
237E7 E0101; Hanyo-Denshi; JD1574
|
||||
237E7 E0101; Moji_Joho; MJ038420
|
||||
|
|
@ -37109,8 +36986,6 @@ FA29 E0100; Adobe-Japan1; CID+8687
|
|||
254C9 E0101; Hanyo-Denshi; TK01063840
|
||||
254D9 E0100; Adobe-Japan1; CID+18217
|
||||
2550E E0100; Adobe-Japan1; CID+17009
|
||||
25584 E0100; MSARG; MA_93C3
|
||||
25584 E0101; MSARG; ME_25584_001
|
||||
255A7 E0100; Adobe-Japan1; CID+18229
|
||||
25607 E0100; Hanyo-Denshi; IB0328
|
||||
25607 E0100; Moji_Joho; MJ042965
|
||||
|
|
@ -37422,8 +37297,6 @@ FA29 E0100; Adobe-Japan1; CID+8687
|
|||
263C1 E0101; Hanyo-Denshi; JTC0CA
|
||||
263C1 E0101; Moji_Joho; MJ045051
|
||||
263C1 E0102; Moji_Joho; MJ045050
|
||||
263F9 E0100; MSARG; MD_263F9
|
||||
263F9 E0101; MSARG; ME_263F9_001
|
||||
26402 E0100; Adobe-Japan1; CID+18398
|
||||
26405 E0100; Hanyo-Denshi; KS319810
|
||||
26405 E0101; Hanyo-Denshi; TK01073730
|
||||
|
|
@ -37438,18 +37311,12 @@ FA29 E0100; Adobe-Japan1; CID+8687
|
|||
26408 E0102; Hanyo-Denshi; TK01073790
|
||||
26409 E0100; Hanyo-Denshi; KS319910
|
||||
26409 E0101; Hanyo-Denshi; TK01073770
|
||||
26410 E0100; MSARG; MA_90CC
|
||||
26410 E0101; MSARG; ME_26410_001
|
||||
26439 E0100; MSARG; MD_26439
|
||||
26439 E0101; MSARG; ME_26439_001
|
||||
26462 E0100; Hanyo-Denshi; KS321040
|
||||
26462 E0100; Moji_Joho; MJ045176
|
||||
26462 E0101; Hanyo-Denshi; KS321270
|
||||
26462 E0101; Moji_Joho; MJ045177
|
||||
26489 E0100; Hanyo-Denshi; TK01007100
|
||||
26489 E0101; Hanyo-Denshi; TK01074030
|
||||
26489 E0102; MSARG; MA_8ECC
|
||||
26489 E0103; MSARG; ME_26489_001
|
||||
264B3 E0100; Hanyo-Denshi; KS322190
|
||||
264B3 E0100; Moji_Joho; MJ058361
|
||||
264B3 E0101; Hanyo-Denshi; KS322200S
|
||||
|
|
@ -37714,8 +37581,6 @@ FA29 E0100; Adobe-Japan1; CID+8687
|
|||
27088 E0101; Hanyo-Denshi; TK01082110
|
||||
270F0 E0100; Hanyo-Denshi; KS369820
|
||||
270F0 E0101; Hanyo-Denshi; TK01082380
|
||||
270F0 E0102; MSARG; MA_8FA8
|
||||
270F0 E0103; MSARG; ME_270F0_001
|
||||
270F4 E0100; Adobe-Japan1; CID+17103
|
||||
270F4 E0101; Hanyo-Denshi; JC9141
|
||||
270F4 E0101; Moji_Joho; MJ047259
|
||||
|
|
@ -37833,8 +37698,6 @@ FA29 E0100; Adobe-Japan1; CID+8687
|
|||
2770F E0100; Moji_Joho; MJ048373
|
||||
2770F E0101; Moji_Joho; MJ048374
|
||||
27723 E0100; Adobe-Japan1; CID+18652
|
||||
27741 E0100; MSARG; MA_94C7
|
||||
27741 E0101; MSARG; ME_27741_001
|
||||
27752 E0100; Adobe-Japan1; CID+18656
|
||||
27753 E0100; Hanyo-Denshi; KS393290
|
||||
27753 E0100; Moji_Joho; MJ048418
|
||||
|
|
@ -39156,8 +39019,6 @@ FA29 E0100; Adobe-Japan1; CID+8687
|
|||
2CF4C E0101; Moji_Joho; MJ056893
|
||||
2CF4C E0102; Moji_Joho; MJ056894
|
||||
2CF4C E0103; Moji_Joho; MJ056898
|
||||
2CF7A E0100; MSARG; MC_00045
|
||||
2CF7A E0101; MSARG; ME_2CF7A_001
|
||||
2D020 E0100; Moji_Joho; MJ056969
|
||||
2D020 E0101; Moji_Joho; MJ056970
|
||||
2D028 E0100; Moji_Joho; MJ059338
|
||||
|
|
@ -39340,5 +39201,4 @@ FA29 E0100; Adobe-Japan1; CID+8687
|
|||
2EB71 E0101; Moji_Joho; MJ059252
|
||||
2EB79 E0100; Moji_Joho; MJ059255
|
||||
2EB79 E0101; Moji_Joho; MJ059256
|
||||
31350 E0100; Adobe-Japan1; CID+19130
|
||||
# EOF
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,6 +1,6 @@
|
|||
### @configure_input@
|
||||
|
||||
# Copyright (C) 2012-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2012-2019 Free Software Foundation, Inc.
|
||||
|
||||
# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
# National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
|
|
@ -29,9 +29,6 @@ srcdir = @srcdir@
|
|||
top_srcdir = @top_srcdir@
|
||||
top_builddir = @top_builddir@
|
||||
|
||||
# Prevent any settings in the user environment causing problems.
|
||||
unexport EMACSDATA EMACSDOC EMACSLOADPATH EMACSPATH
|
||||
|
||||
EMACS = ${top_builddir}/src/emacs
|
||||
unidir = ${top_srcdir}/lisp/international
|
||||
emacs = "${EMACS}" -batch --no-site-file --no-site-lisp
|
||||
|
|
@ -39,14 +36,28 @@ emacs = "${EMACS}" -batch --no-site-file --no-site-lisp
|
|||
lparen = (
|
||||
unifiles = $(addprefix ${unidir}/,$(sort $(shell sed -n 's/^[ \t][ \t]*${lparen}"\(uni-[^"]*\)"$$/\1/p' ${srcdir}/unidata-gen.el)))
|
||||
|
||||
-include ${top_builddir}/src/verbose.mk
|
||||
# 'make' verbosity.
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
|
||||
AM_V_ELC = $(am__v_ELC_@AM_V@)
|
||||
am__v_ELC_ = $(am__v_ELC_@AM_DEFAULT_V@)
|
||||
am__v_ELC_0 = @echo " ELC " $@;
|
||||
am__v_ELC_1 =
|
||||
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
|
||||
.PHONY: all
|
||||
|
||||
all: ${top_srcdir}/src/macuvs.h ${unifiles} ${unidir}/charscript.el \
|
||||
${unidir}/charprop.el ${unidir}/emoji-zwj.el ${unidir}/emoji-labels.el \
|
||||
${unidir}/uni-scripts.el ${unidir}/uni-confusable.el \
|
||||
${unidir}/idna-mapping.el
|
||||
${unidir}/charprop.el
|
||||
|
||||
## Specify .elc as an order-only prereq so as to not needlessly rebuild
|
||||
## target just because the .elc is missing.
|
||||
|
|
@ -68,78 +79,43 @@ unidata.txt: ${srcdir}/UnicodeData.txt
|
|||
## pretend that it does since other Makefiles assume that if charprop
|
||||
## is up-to-date, the unifiles are too.
|
||||
${unidir}/charprop.el: ${unifiles} ${srcdir}/unidata-gen.el | ${srcdir}/unidata-gen.elc
|
||||
$(AM_V_GEN)[ ! -f $@ ] || chmod +w $@
|
||||
$(AM_V_at)${emacs} -L ${srcdir} -l unidata-gen \
|
||||
$(AM_V_at)[ ! -f $@ ] || chmod +w $@
|
||||
$(AM_V_GEN)${emacs} -L ${srcdir} -l unidata-gen \
|
||||
-f unidata-gen-charprop $@
|
||||
|
||||
${unifiles}: ${srcdir}/unidata-gen.el \
|
||||
${srcdir}/UnicodeData.txt ${srcdir}/BidiMirroring.txt \
|
||||
${srcdir}/BidiBrackets.txt | \
|
||||
${srcdir}/unidata-gen.elc unidata.txt
|
||||
$(AM_V_GEN)[ ! -f $@ ] || chmod +w $@
|
||||
$(AM_V_at)${emacs} -L ${srcdir} -l unidata-gen \
|
||||
$(AM_V_at)[ ! -f $@ ] || chmod +w $@
|
||||
$(AM_V_GEN)${emacs} -L ${srcdir} -l unidata-gen \
|
||||
-f unidata-gen-file $@ ${srcdir}
|
||||
|
||||
${unidir}/emoji-labels.el: ${unidir}/../international/emoji.el \
|
||||
${srcdir}/emoji-test.txt
|
||||
$(AM_V_GEN)${emacs} -l emoji.el -f emoji--generate-file $@
|
||||
|
||||
${unidir}/uni-scripts.el: ${srcdir}/unidata-gen.el \
|
||||
${srcdir}/Scripts.txt \
|
||||
${srcdir}/ScriptExtensions.txt \
|
||||
${srcdir}/PropertyValueAliases.txt
|
||||
$(AM_V_GEN)${emacs} -L ${srcdir} \
|
||||
-l unidata-gen.el -f unidata-gen-scripts $@
|
||||
|
||||
${unidir}/uni-confusable.el: ${srcdir}/unidata-gen.el \
|
||||
${srcdir}/confusables.txt
|
||||
$(AM_V_GEN)${emacs} -L ${srcdir} \
|
||||
-l unidata-gen.el -f unidata-gen-confusable $@
|
||||
|
||||
${unidir}/idna-mapping.el: ${srcdir}/unidata-gen.el \
|
||||
${srcdir}/IdnaMappingTable.txt
|
||||
$(AM_V_GEN)${emacs} -L ${srcdir} \
|
||||
-l unidata-gen.el -f unidata-gen-idna-mapping $@
|
||||
|
||||
.PHONY: charscript.el
|
||||
charscript.el: ${unidir}/charscript.el
|
||||
|
||||
blocks = ${srcdir}/blocks.awk
|
||||
|
||||
${unidir}/charscript.el: ${blocks}
|
||||
${unidir}/charscript.el: ${srcdir}/Blocks.txt ${blocks}
|
||||
$(AM_V_GEN)$(AWK) -f ${blocks} < $< > $@
|
||||
|
||||
${unidir}/charscript.el: ${srcdir}/Blocks.txt ${srcdir}/emoji-data.txt
|
||||
$(AM_V_GEN)$(AWK) -f ${blocks} $^ > $@
|
||||
|
||||
.PHONY: emoji-zwj.el
|
||||
emoji-zwj.el: ${unidir}/emoji-zwj.el
|
||||
|
||||
zwj = ${srcdir}/emoji-zwj.awk
|
||||
|
||||
${unidir}/emoji-zwj.el: ${srcdir}/emoji-zwj-sequences.txt $(srcdir)/emoji-sequences.txt ${zwj}
|
||||
$(AM_V_GEN)$(AWK) -f ${zwj} $^ > $@
|
||||
|
||||
.PHONY: clean bootstrap-clean distclean maintainer-clean gen-clean
|
||||
.PHONY: clean bootstrap-clean distclean maintainer-clean extraclean
|
||||
|
||||
clean:
|
||||
rm -f ${srcdir}/*.elc unidata.txt
|
||||
|
||||
## IMO this should also run gen-clean.
|
||||
bootstrap-clean: clean
|
||||
|
||||
distclean: clean
|
||||
rm -f Makefile
|
||||
|
||||
## macuvs.h is a generated file, but it's also checked in because
|
||||
## macOS builds would need to do a headless bootstrap without it,
|
||||
## which is currently awkward. To avoid changing checked-in files
|
||||
## from a make target, we don't delete it here.
|
||||
gen-clean:
|
||||
rm -f ${unidir}/charscript.el*
|
||||
rm -f ${unidir}/emoji-zwj.el*
|
||||
rm -f ${unifiles} ${unidir}/charprop.el
|
||||
rm -f ${unidir}/emoji-labels.el ${unidir}/idna-mapping.el \
|
||||
${unidir}/uni-confusable.el ${unidir}/uni-scripts.el
|
||||
## ref: https://lists.gnu.org/r/emacs-devel/2013-11/msg01029.html
|
||||
maintainer-clean: distclean
|
||||
|
||||
maintainer-clean: gen-clean distclean
|
||||
## Do not remove these files, even in a bootstrap, because they rarely
|
||||
## change and it slows down bootstrap (a tiny bit).
|
||||
## Cf leim/ja-dic (which is much slower).
|
||||
extraclean:
|
||||
rm -f ${top_srcdir}/src/macuvs.h ${unidir}/charscript.el*
|
||||
rm -f ${unifiles} ${unidir}/charprop.el
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -6,61 +6,29 @@ copyright.html.
|
|||
The names, URLs, and dates for these files are as follows.
|
||||
|
||||
BidiBrackets.txt
|
||||
https://www.unicode.org/Public/UNIDATA/BidiBrackets.txt
|
||||
2021-06-30
|
||||
http://www.unicode.org/Public/UNIDATA/BidiBrackets.txt
|
||||
2017-04-20
|
||||
|
||||
BidiMirroring.txt
|
||||
https://www.unicode.org/Public/UNIDATA/BidiMirroring.txt
|
||||
2021-08-08
|
||||
|
||||
Blocks.txt
|
||||
https://www.unicode.org/Public/8.0.0/ucd/Blocks.txt
|
||||
2021-01-22
|
||||
http://www.unicode.org/Public/UNIDATA/BidiMirroring.txt
|
||||
2017-04-20
|
||||
|
||||
IVD_Sequences.txt
|
||||
https://www.unicode.org/ivd/
|
||||
2020-11-06
|
||||
|
||||
NormalizationTest.txt
|
||||
https://www.unicode.org/Public/UNIDATA/NormalizationTest.txt
|
||||
2021-05-28
|
||||
|
||||
SpecialCasing.txt
|
||||
https://unicode.org/Public/UNIDATA/SpecialCasing.txt
|
||||
2021-03-08
|
||||
http://www.unicode.org/ivd/
|
||||
2016-08-15
|
||||
|
||||
UnicodeData.txt
|
||||
https://www.unicode.org/Public/UNIDATA/UnicodeData.txt
|
||||
2021-07-06
|
||||
http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
|
||||
2017-03-07
|
||||
|
||||
emoji-data.txt
|
||||
https://www.unicode.org/Public/14.0.0/ucd/emoji/emoji-data.txt
|
||||
2021-08-26
|
||||
Blocks.txt
|
||||
http://www.unicode.org/Public/8.0.0/ucd/Blocks.txt
|
||||
2017-04-20
|
||||
|
||||
emoji-zwj-sequences.txt
|
||||
https://www.unicode.org/Public/emoji/14.0/emoji-zwj-sequences.txt
|
||||
2021-06-08
|
||||
NormalizationTest.txt
|
||||
http://www.unicode.org/Public/UNIDATA/NormalizationTest.txt
|
||||
2017-03-08
|
||||
|
||||
emoji-sequences.txt
|
||||
https://www.unicode.org/Public/emoji/14.0/emoji-sequences.txt
|
||||
2020-08-26
|
||||
|
||||
emoji-test.txt
|
||||
https://unicode.org/Public/emoji/14.0/emoji-test.txt
|
||||
2021-10-28
|
||||
|
||||
ScriptExtensions.txt
|
||||
https://www.unicode.org/Public/UCD/latest/ucd/ScriptExtensions.txt
|
||||
2022-01-17
|
||||
|
||||
Scripts.txt
|
||||
https://www.unicode.org/Public/UCD/latest/ucd/Scripts.txt
|
||||
2022-01-17
|
||||
|
||||
PropertyValueAliases.txt
|
||||
https://www.unicode.org/Public/UCD/latest/ucd/PropertyValueAliases.txt
|
||||
2022-01-17
|
||||
|
||||
IdnaMappingTable.txt
|
||||
https://www.unicode.org/Public/idna/latest/IdnaMappingTable.txt
|
||||
2022-01-18
|
||||
SpecialCasing.txt
|
||||
http://unicode.org/Public/UNIDATA/SpecialCasing.txt
|
||||
2017-04-20
|
||||
|
|
|
|||
|
|
@ -1,628 +0,0 @@
|
|||
# ScriptExtensions-15.0.0.txt
|
||||
# Date: 2022-02-02, 00:57:11 GMT
|
||||
# © 2022 Unicode®, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see https://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Unicode Character Database
|
||||
# For documentation, see https://www.unicode.org/reports/tr44/
|
||||
#
|
||||
# The Script_Extensions property indicates which characters are commonly used
|
||||
# with more than one script, but with a limited number of scripts.
|
||||
# For each code point, there is one or more property values. Each such value is a Script property value.
|
||||
# For more information, see:
|
||||
# UAX #24, Unicode Script Property: https://www.unicode.org/reports/tr24/
|
||||
# Especially the sections:
|
||||
# https://www.unicode.org/reports/tr24/#Assignment_Script_Values
|
||||
# https://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values
|
||||
#
|
||||
# Each Script_Extensions value in this file consists of a set
|
||||
# of one or more abbreviated Script property values. The ordering of the
|
||||
# values in that set is not material, but for stability in presentation
|
||||
# it is given here as alphabetical.
|
||||
#
|
||||
# The Script_Extensions values are presented in sorted order in the file.
|
||||
# They are sorted first by the number of Script property values in their sets,
|
||||
# and then alphabetically by first differing Script property value.
|
||||
#
|
||||
# Following each distinct Script_Extensions value is the list of code
|
||||
# points associated with that value, listed in code point order.
|
||||
#
|
||||
# All code points not explicitly listed for Script_Extensions
|
||||
# have as their value the corresponding Script property value
|
||||
#
|
||||
# @missing: 0000..10FFFF; <script>
|
||||
|
||||
# ================================================
|
||||
|
||||
# Property: Script_Extensions
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Beng
|
||||
|
||||
1CF7 ; Beng # Mc VEDIC SIGN ATIKRAMA
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Deva
|
||||
|
||||
1CD1 ; Deva # Mn VEDIC TONE SHARA
|
||||
1CD4 ; Deva # Mn VEDIC SIGN YAJURVEDIC MIDLINE SVARITA
|
||||
1CDB ; Deva # Mn VEDIC TONE TRIPLE SVARITA
|
||||
1CDE..1CDF ; Deva # Mn [2] VEDIC TONE TWO DOTS BELOW..VEDIC TONE THREE DOTS BELOW
|
||||
1CE2..1CE8 ; Deva # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
|
||||
1CEB..1CEC ; Deva # Lo [2] VEDIC SIGN ANUSVARA VAMAGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
|
||||
1CEE..1CF1 ; Deva # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA
|
||||
|
||||
# Total code points: 18
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Dupl
|
||||
|
||||
1BCA0..1BCA3 ; Dupl # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
|
||||
|
||||
# Total code points: 4
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Grek
|
||||
|
||||
0342 ; Grek # Mn COMBINING GREEK PERISPOMENI
|
||||
0345 ; Grek # Mn COMBINING GREEK YPOGEGRAMMENI
|
||||
1DC0..1DC1 ; Grek # Mn [2] COMBINING DOTTED GRAVE ACCENT..COMBINING DOTTED ACUTE ACCENT
|
||||
|
||||
# Total code points: 4
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Hani
|
||||
|
||||
3006 ; Hani # Lo IDEOGRAPHIC CLOSING MARK
|
||||
303E..303F ; Hani # So [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE
|
||||
3190..3191 ; Hani # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
|
||||
3192..3195 ; Hani # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
|
||||
3196..319F ; Hani # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
|
||||
31C0..31E3 ; Hani # So [36] CJK STROKE T..CJK STROKE Q
|
||||
3220..3229 ; Hani # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
|
||||
322A..3247 ; Hani # So [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO
|
||||
3280..3289 ; Hani # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
|
||||
328A..32B0 ; Hani # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
|
||||
32C0..32CB ; Hani # So [12] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
|
||||
32FF ; Hani # So SQUARE ERA NAME REIWA
|
||||
3358..3370 ; Hani # So [25] IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO..IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
|
||||
337B..337F ; Hani # So [5] SQUARE ERA NAME HEISEI..SQUARE CORPORATION
|
||||
33E0..33FE ; Hani # So [31] IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
|
||||
1D360..1D371 ; Hani # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
|
||||
1F250..1F251 ; Hani # So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
|
||||
|
||||
# Total code points: 238
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Latn
|
||||
|
||||
0363..036F ; Latn # Mn [13] COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X
|
||||
|
||||
# Total code points: 13
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Nand
|
||||
|
||||
1CFA ; Nand # Lo VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Syrc
|
||||
|
||||
1DFA ; Syrc # Mn COMBINING DOT BELOW LEFT
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Arab Copt
|
||||
|
||||
102E0 ; Arab Copt # Mn COPTIC EPACT THOUSANDS MARK
|
||||
102E1..102FB ; Arab Copt # No [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED
|
||||
|
||||
# Total code points: 28
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Arab Rohg
|
||||
|
||||
06D4 ; Arab Rohg # Po ARABIC FULL STOP
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Arab Nkoo
|
||||
|
||||
FD3E ; Arab Nkoo # Pe ORNATE LEFT PARENTHESIS
|
||||
FD3F ; Arab Nkoo # Ps ORNATE RIGHT PARENTHESIS
|
||||
|
||||
# Total code points: 2
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Arab Syrc
|
||||
|
||||
064B..0655 ; Arab Syrc # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW
|
||||
0670 ; Arab Syrc # Mn ARABIC LETTER SUPERSCRIPT ALEF
|
||||
|
||||
# Total code points: 12
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Arab Thaa
|
||||
|
||||
FDF2 ; Arab Thaa # Lo ARABIC LIGATURE ALLAH ISOLATED FORM
|
||||
FDFD ; Arab Thaa # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
|
||||
|
||||
# Total code points: 2
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Beng Deva
|
||||
|
||||
1CD5..1CD6 ; Beng Deva # Mn [2] VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA..VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA
|
||||
1CD8 ; Beng Deva # Mn VEDIC TONE CANDRA BELOW
|
||||
1CE1 ; Beng Deva # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
|
||||
1CEA ; Beng Deva # Lo VEDIC SIGN ANUSVARA BAHIRGOMUKHA
|
||||
1CED ; Beng Deva # Mn VEDIC SIGN TIRYAK
|
||||
1CF5..1CF6 ; Beng Deva # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
|
||||
A8F1 ; Beng Deva # Mn COMBINING DEVANAGARI SIGN AVAGRAHA
|
||||
|
||||
# Total code points: 9
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Bopo Hani
|
||||
|
||||
302A..302D ; Bopo Hani # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
|
||||
|
||||
# Total code points: 4
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Bugi Java
|
||||
|
||||
A9CF ; Bugi Java # Lm JAVANESE PANGRANGKEP
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Cprt Linb
|
||||
|
||||
10102 ; Cprt Linb # Po AEGEAN CHECK MARK
|
||||
10137..1013F ; Cprt Linb # So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
|
||||
|
||||
# Total code points: 10
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Cyrl Glag
|
||||
|
||||
0484 ; Cyrl Glag # Mn COMBINING CYRILLIC PALATALIZATION
|
||||
0487 ; Cyrl Glag # Mn COMBINING CYRILLIC POKRYTIE
|
||||
2E43 ; Cyrl Glag # Po DASH WITH LEFT UPTURN
|
||||
A66F ; Cyrl Glag # Mn COMBINING CYRILLIC VZMET
|
||||
|
||||
# Total code points: 4
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Cyrl Latn
|
||||
|
||||
0485..0486 ; Cyrl Latn # Mn [2] COMBINING CYRILLIC DASIA PNEUMATA..COMBINING CYRILLIC PSILI PNEUMATA
|
||||
|
||||
# Total code points: 2
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Cyrl Perm
|
||||
|
||||
0483 ; Cyrl Perm # Mn COMBINING CYRILLIC TITLO
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Cyrl Syrc
|
||||
|
||||
1DF8 ; Cyrl Syrc # Mn COMBINING DOT ABOVE LEFT
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Deva Gran
|
||||
|
||||
1CD3 ; Deva Gran # Po VEDIC SIGN NIHSHVASA
|
||||
1CF3 ; Deva Gran # Lo VEDIC SIGN ROTATED ARDHAVISARGA
|
||||
1CF8..1CF9 ; Deva Gran # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
|
||||
|
||||
# Total code points: 4
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Deva Nand
|
||||
|
||||
1CE9 ; Deva Nand # Lo VEDIC SIGN ANUSVARA ANTARGOMUKHA
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Deva Shrd
|
||||
|
||||
1CD7 ; Deva Shrd # Mn VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA
|
||||
1CD9 ; Deva Shrd # Mn VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER
|
||||
1CDC..1CDD ; Deva Shrd # Mn [2] VEDIC TONE KATHAKA ANUDATTA..VEDIC TONE DOT BELOW
|
||||
1CE0 ; Deva Shrd # Mn VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
|
||||
|
||||
# Total code points: 5
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Deva Taml
|
||||
|
||||
A8F3 ; Deva Taml # Lo DEVANAGARI SIGN CANDRABINDU VIRAMA
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Geor Latn
|
||||
|
||||
10FB ; Geor Latn # Po GEORGIAN PARAGRAPH SEPARATOR
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Gran Taml
|
||||
|
||||
0BE6..0BEF ; Gran Taml # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
|
||||
0BF0..0BF2 ; Gran Taml # No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
|
||||
0BF3 ; Gran Taml # So TAMIL DAY SIGN
|
||||
11301 ; Gran Taml # Mn GRANTHA SIGN CANDRABINDU
|
||||
11303 ; Gran Taml # Mc GRANTHA SIGN VISARGA
|
||||
1133B..1133C ; Gran Taml # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
|
||||
11FD0..11FD1 ; Gran Taml # No [2] TAMIL FRACTION ONE QUARTER..TAMIL FRACTION ONE HALF-1
|
||||
11FD3 ; Gran Taml # No TAMIL FRACTION THREE QUARTERS
|
||||
|
||||
# Total code points: 21
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Gujr Khoj
|
||||
|
||||
0AE6..0AEF ; Gujr Khoj # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
|
||||
|
||||
# Total code points: 10
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Guru Mult
|
||||
|
||||
0A66..0A6F ; Guru Mult # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
|
||||
|
||||
# Total code points: 10
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Hani Latn
|
||||
|
||||
A700..A707 ; Hani Latn # Sk [8] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER CHINESE TONE YANG RU
|
||||
|
||||
# Total code points: 8
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Hira Kana
|
||||
|
||||
3031..3035 ; Hira Kana # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
|
||||
3099..309A ; Hira Kana # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
|
||||
309B..309C ; Hira Kana # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
|
||||
30A0 ; Hira Kana # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN
|
||||
30FC ; Hira Kana # Lm KATAKANA-HIRAGANA PROLONGED SOUND MARK
|
||||
FF70 ; Hira Kana # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
|
||||
FF9E..FF9F ; Hira Kana # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
|
||||
|
||||
# Total code points: 14
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Knda Nand
|
||||
|
||||
0CE6..0CEF ; Knda Nand # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
|
||||
|
||||
# Total code points: 10
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Latn Mong
|
||||
|
||||
202F ; Latn Mong # Zs NARROW NO-BREAK SPACE
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Mani Ougr
|
||||
|
||||
10AF2 ; Mani Ougr # Po MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Mong Phag
|
||||
|
||||
1802..1803 ; Mong Phag # Po [2] MONGOLIAN COMMA..MONGOLIAN FULL STOP
|
||||
1805 ; Mong Phag # Po MONGOLIAN FOUR DOTS
|
||||
|
||||
# Total code points: 3
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Arab Syrc Thaa
|
||||
|
||||
061C ; Arab Syrc Thaa # Cf ARABIC LETTER MARK
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Arab Thaa Yezi
|
||||
|
||||
0660..0669 ; Arab Thaa Yezi # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
|
||||
|
||||
# Total code points: 10
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Beng Cakm Sylo
|
||||
|
||||
09E6..09EF ; Beng Cakm Sylo # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
|
||||
|
||||
# Total code points: 10
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Cakm Mymr Tale
|
||||
|
||||
1040..1049 ; Cakm Mymr Tale # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
|
||||
|
||||
# Total code points: 10
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Cpmn Cprt Linb
|
||||
|
||||
10100..10101 ; Cpmn Cprt Linb # Po [2] AEGEAN WORD SEPARATOR LINE..AEGEAN WORD SEPARATOR DOT
|
||||
|
||||
# Total code points: 2
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Cprt Lina Linb
|
||||
|
||||
10107..10133 ; Cprt Lina Linb # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
|
||||
|
||||
# Total code points: 45
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Deva Gran Knda
|
||||
|
||||
1CF4 ; Deva Gran Knda # Mn VEDIC TONE CANDRA ABOVE
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Deva Gran Latn
|
||||
|
||||
20F0 ; Deva Gran Latn # Mn COMBINING ASTERISK ABOVE
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Hani Hira Kana
|
||||
|
||||
303C ; Hani Hira Kana # Lo MASU MARK
|
||||
303D ; Hani Hira Kana # Po PART ALTERNATION MARK
|
||||
|
||||
# Total code points: 2
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Kali Latn Mymr
|
||||
|
||||
A92E ; Kali Latn Mymr # Po KAYAH LI SIGN CWI
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Beng Deva Gran Knda
|
||||
|
||||
1CD0 ; Beng Deva Gran Knda # Mn VEDIC TONE KARSHANA
|
||||
1CD2 ; Beng Deva Gran Knda # Mn VEDIC TONE PRENKHA
|
||||
|
||||
# Total code points: 2
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Buhd Hano Tagb Tglg
|
||||
|
||||
1735..1736 ; Buhd Hano Tagb Tglg # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
|
||||
|
||||
# Total code points: 2
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Deva Dogr Kthi Mahj
|
||||
|
||||
0966..096F ; Deva Dogr Kthi Mahj # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
|
||||
|
||||
# Total code points: 10
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Bopo Hang Hani Hira Kana
|
||||
|
||||
3003 ; Bopo Hang Hani Hira Kana # Po DITTO MARK
|
||||
3013 ; Bopo Hang Hani Hira Kana # So GETA MARK
|
||||
301C ; Bopo Hang Hani Hira Kana # Pd WAVE DASH
|
||||
301D ; Bopo Hang Hani Hira Kana # Ps REVERSED DOUBLE PRIME QUOTATION MARK
|
||||
301E..301F ; Bopo Hang Hani Hira Kana # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
|
||||
3030 ; Bopo Hang Hani Hira Kana # Pd WAVY DASH
|
||||
3037 ; Bopo Hang Hani Hira Kana # So IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
|
||||
FE45..FE46 ; Bopo Hang Hani Hira Kana # Po [2] SESAME DOT..WHITE SESAME DOT
|
||||
|
||||
# Total code points: 10
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Arab Nkoo Rohg Syrc Thaa Yezi
|
||||
|
||||
060C ; Arab Nkoo Rohg Syrc Thaa Yezi # Po ARABIC COMMA
|
||||
061B ; Arab Nkoo Rohg Syrc Thaa Yezi # Po ARABIC SEMICOLON
|
||||
|
||||
# Total code points: 2
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Bopo Hang Hani Hira Kana Yiii
|
||||
|
||||
3001..3002 ; Bopo Hang Hani Hira Kana Yiii # Po [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP
|
||||
3008 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT ANGLE BRACKET
|
||||
3009 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT ANGLE BRACKET
|
||||
300A ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT DOUBLE ANGLE BRACKET
|
||||
300B ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT DOUBLE ANGLE BRACKET
|
||||
300C ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT CORNER BRACKET
|
||||
300D ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT CORNER BRACKET
|
||||
300E ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE CORNER BRACKET
|
||||
300F ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE CORNER BRACKET
|
||||
3010 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT BLACK LENTICULAR BRACKET
|
||||
3011 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT BLACK LENTICULAR BRACKET
|
||||
3014 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT TORTOISE SHELL BRACKET
|
||||
3015 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT TORTOISE SHELL BRACKET
|
||||
3016 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE LENTICULAR BRACKET
|
||||
3017 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE LENTICULAR BRACKET
|
||||
3018 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE TORTOISE SHELL BRACKET
|
||||
3019 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE TORTOISE SHELL BRACKET
|
||||
301A ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE SQUARE BRACKET
|
||||
301B ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE SQUARE BRACKET
|
||||
30FB ; Bopo Hang Hani Hira Kana Yiii # Po KATAKANA MIDDLE DOT
|
||||
FF61 ; Bopo Hang Hani Hira Kana Yiii # Po HALFWIDTH IDEOGRAPHIC FULL STOP
|
||||
FF62 ; Bopo Hang Hani Hira Kana Yiii # Ps HALFWIDTH LEFT CORNER BRACKET
|
||||
FF63 ; Bopo Hang Hani Hira Kana Yiii # Pe HALFWIDTH RIGHT CORNER BRACKET
|
||||
FF64..FF65 ; Bopo Hang Hani Hira Kana Yiii # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
|
||||
|
||||
# Total code points: 26
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Deva Knda Mlym Orya Taml Telu
|
||||
|
||||
1CDA ; Deva Knda Mlym Orya Taml Telu # Mn VEDIC TONE DOUBLE SVARITA
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Adlm Arab Nkoo Rohg Syrc Thaa Yezi
|
||||
|
||||
061F ; Adlm Arab Nkoo Rohg Syrc Thaa Yezi # Po ARABIC QUESTION MARK
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Beng Deva Gran Knda Nand Orya Telu Tirh
|
||||
|
||||
1CF2 ; Beng Deva Gran Knda Nand Orya Telu Tirh # Lo VEDIC SIGN ARDHAVISARGA
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Adlm Arab Mand Mani Ougr Phlp Rohg Sogd Syrc
|
||||
|
||||
0640 ; Adlm Arab Mand Mani Ougr Phlp Rohg Sogd Syrc # Lm ARABIC TATWEEL
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh
|
||||
|
||||
A836..A837 ; Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh # So [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK
|
||||
A838 ; Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh # Sc NORTH INDIC RUPEE MARK
|
||||
A839 ; Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh # So NORTH INDIC QUANTITY MARK
|
||||
|
||||
# Total code points: 4
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Taml Telu Tirh
|
||||
|
||||
0952 ; Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Taml Telu Tirh # Mn DEVANAGARI STRESS SIGN ANUDATTA
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Shrd Taml Telu Tirh
|
||||
|
||||
0951 ; Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Shrd Taml Telu Tirh # Mn DEVANAGARI STRESS SIGN UDATTA
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Modi Nand Sind Takr Tirh
|
||||
|
||||
A833..A835 ; Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Modi Nand Sind Takr Tirh # No [3] NORTH INDIC FRACTION ONE SIXTEENTH..NORTH INDIC FRACTION THREE SIXTEENTHS
|
||||
|
||||
# Total code points: 3
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Mlym Modi Nand Sind Takr Tirh
|
||||
|
||||
A830..A832 ; Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Mlym Modi Nand Sind Takr Tirh # No [3] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE QUARTERS
|
||||
|
||||
# Total code points: 3
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh
|
||||
|
||||
0964 ; Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh # Po DEVANAGARI DANDA
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# ================================================
|
||||
|
||||
# Script_Extensions=Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Limb Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh
|
||||
|
||||
0965 ; Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Limb Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh # Po DEVANAGARI DOUBLE DANDA
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# EOF
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue