Compare commits

..

11 commits

Author SHA1 Message Date
João Távora
a2df797f83 Add mechanism for escaping shorthand substitution
* src/lread.c (read1): Add skip_shorthand variable.  Add a '#\'
case.  Sometimes call oblookup instead of
oblookup_considering_shorthand.
2021-09-22 23:53:15 +01:00
João Távora
881478bca9 Consider shorthands in Elisp's elisp-completion-at-point
* lisp/progmodes/elisp-mode.el : new helper.
(elisp-completion-at-point): Use new helpers.
(elisp--completion-local-symbols)
(elisp--fboundp-considering-shorthands)
(elisp--bboundp-considering-shorthands): New helpers

* src/lread.c (intern_driver): Nullify Qobarray_cache.
(syms_of_lread): Add Qobarray_cache.

* test/lisp/progmodes/elisp-resources/magnars-string-user.el: New
file to play around with `magnars-string` library.
2021-09-22 18:05:35 +01:00
João Távora
39a63cda6d * lisp/emacs-lisp/magnars-string.el: New file. 2021-09-22 11:33:56 +01:00
João Távora
eed51f26c5 Adjust C style and add comments to shorthand code
* src/lread.c (oblookup_considering_shorthand): Adjust
declaration.
(read1, Fintern_soft): Adjust C style.
(oblookup_considering_shorthand): Adjust C style.  Add comments.
2021-09-22 11:33:56 +01:00
João Távora
d102e30618 Rework docstring of hack-elisp-shorthands
* lisp/international/mule.el (hack-elisp-shorthands): Rework
docstring.
2021-09-22 11:33:56 +01:00
João Távora
62523a0009 Rework elisp-shorthands to only allow only prefix substitution
This simplification in requirements makes for more complex C code but
that code is much less wasteful in Lisp strings than the previous
implementation.

* src/lread.c (read1): Rework.
(Fintern): Rework.
(Fintern_soft): Rework.
(Funintern): Rework.
(oblookup_considering_shorthand): Rewrite.

* test/lisp/progmodes/elisp-mode-tests.el (elisp-shorthand-read-buffer)
(elisp-shorthand-read-from-string): Use new format of
shorthand-longhand-.

* test/lisp/progmodes/elisp-resources/simple-shorthand-test.el (f-test)
(f-test2, f-test3): Use new form of elisp-shorthands.
2021-09-22 11:33:56 +01:00
João Távora
2f95a95041 Add a test for byte-compilation
* test/lisp/progmodes/elisp-mode-tests.el
(elisp-shorthand-byte-compile-a-file): New test.
(elisp-shorthand-load-a-file): Simplify.
2021-09-22 11:33:56 +01:00
João Távora
fe4e4c28ec Integrate shorthand functionality into elisp-mode.el
Also rename the main variable to elisp-shorthands, from the
silly pleonastic shorthand-shorthands.

For some reason, I had to stick the new source-file loading functions
in lisp/international/mule.el, otherwise lisp/loadup.el wouldn't see
them.  This should probably be fixed.

* lisp/shorthand.el: Remove.

* lisp/progmodes/elisp-mode.el (elisp--shorthand-load-wrapper):
Move here.

* src/lread.c (oblookup_considering_shorthand, syms_of_lread):
Rename variable elisp-shorthand, from shorthand-shorthands.

* test/lisp/shorthand-tests.el: Remove.

* test/lisp/progmodes/elisp-mode-tests.el (elisp-shorthand-read-buffer)
(elisp-shorthand-read-from-string)
(elisp-shorthand-load-a-file): New tests.

* test/lisp/progmodes/elisp-resources/simple-shorthand-test.el: New file

* lisp/loadup.el (load-source-file-function): Set to
  load-with-shorthands-and-code-conversion.

* lisp/international/mule.el (hack-elisp-shorthands): Move here.
(load-with-shorthands-and-code-conversion): And here.
2021-09-22 11:33:55 +01:00
João Távora
82528bcb59 Robustify checking of shorthand-shorthands
* src/lread.c (oblookup_considering_shorthand): Maybe warn when we
find fishy shorthand-shorthands.
2021-09-22 11:33:55 +01:00
João Távora
5811e055c0 Move most of the shorthand implementation to C code
This very likely isn't the final form of the implementation.  For one,
the reader is much slower and allocates a Lisp string for every atom
read, regardless if its already interned or not, which perhaps has the
potential to be catastrophic in terms of GC.

But it passes the tests.

The solution to this, is probably to simplify the semantics of
shorthand-shorthands.  Instead of making it a regexp-to-longhand
alist, make it just prefix-to-longhand.  Then we wouldn't need to call
Fstring_match in oblookup_considering_shorthand, meaning we wouldn't
need a Lisp string there.

* lisp/shorthand.el (shorthand-shorthands): Move to C code.
(shorthand--expand-shorthand): Remove.
(shorthand-read-wrapper): Remove.
(shorthand-intern-soft-wrapper): Remove.
(read, intern-soft): No longer advise.

* src/lread.c:
(read1, Fintern, Fintern_soft, Funintern): Use
oblookup_considering_shorthand.
(oblookup_considering_shorthand): New helper.
(syms_of_lread): Declare shorthand-shorthands.
2021-09-22 11:33:55 +01:00
João Távora
d9cab4177b First Elisp version of lisp/shorthand.el, failing some tests
* lisp/shorthand.el: New file

* test/lisp/shorthand-tests.el: New file
2021-09-22 11:33:55 +01:00
3795 changed files with 166753 additions and 696303 deletions

View file

@ -1,20 +1,12 @@
Language: Cpp
BasedOnStyle: GNU
AlignEscapedNewlinesLeft: true
AlignOperands: Align
AlwaysBreakAfterReturnType: TopLevelDefinitions
BreakBeforeBinaryOperators: All
BreakBeforeBraces: GNU
ColumnLimit: 70
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

View file

@ -1,18 +1,12 @@
;;; Directory Local Variables -*- no-byte-compile: t; -*-
;;; Directory Local Variables
;;; 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)))
(bug-reference-url-format . "https://debbugs.gnu.org/%s")))
(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 . ("INLINE" "ATTRIBUTE_NO_SANITIZE_UNDEFINED" "UNINIT" "CALLBACK" "ALIGN_STACK"))
(electric-quote-comment . nil)
(electric-quote-string . nil)
(indent-tabs-mode . t)
@ -21,12 +15,8 @@
(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)))
(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)
(mode . bug-reference)))
@ -35,7 +25,6 @@
(electric-quote-comment . nil)
(electric-quote-string . nil)
(mode . bug-reference-prog)))
(lisp-data-mode . ((indent-tabs-mode . nil)))
(texinfo-mode . ((electric-quote-comment . nil)
(electric-quote-string . nil)
(mode . bug-reference-prog)))

2
.gitattributes vendored
View file

@ -1,6 +1,6 @@
# Attributes of Emacs files in the Git repository.
# Copyright 2015-2023 Free Software Foundation, Inc.
# Copyright 2015-2021 Free Software Foundation, Inc.
# This file is part of GNU Emacs.

29
.gitignore vendored
View file

@ -1,6 +1,6 @@
# Files that Git should ignore in the Emacs source directory.
# Copyright 2009-2023 Free Software Foundation, Inc.
# Copyright 2009-2021 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@ -25,7 +25,6 @@
# Personal customization.
.dir-locals-2.el
.no-advice-on-failure
# Built by 'autogen.sh'.
/aclocal.m4
@ -54,7 +53,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
@ -67,7 +65,6 @@ 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
@ -146,7 +143,6 @@ src/gl-stamp
core
core.*[0-9]
gmon.out
native-lisp/
oo/
oo-spd/
src/*.map
@ -158,11 +154,9 @@ 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
@ -186,7 +180,6 @@ ID
# Executables.
*.exe
a.out
lib-src/be-resources
lib-src/blessmail
lib-src/ctags
lib-src/ebrowse
@ -208,7 +201,6 @@ nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist
src/bootstrap-emacs
src/emacs
src/emacs-[0-9]*
src/Emacs
src/temacs
src/dmpstruct.h
src/*.pdmp
@ -221,10 +213,8 @@ 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.
@ -321,20 +311,3 @@ 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

View file

@ -1,4 +1,4 @@
# Copyright (C) 2021-2023 Free Software Foundation, Inc.
# Copyright (C) 2021 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@ -15,7 +15,7 @@
# 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

197
.mailmap
View file

@ -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 Prudhomme <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>

View file

@ -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
@ -18,7 +15,7 @@ To configure Git for Emacs development, you can run the following:
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
@ -61,7 +58,7 @@ 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
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
@ -110,7 +107,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 +120,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
@ -188,27 +185,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
@ -318,45 +308,11 @@ them right the first time, so here are guidelines for formatting them:
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 +342,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 +354,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 +387,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

View file

@ -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>
@ -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>
@ -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-2021 Free Software Foundation, Inc.
This file is part of GNU Emacs.

View file

@ -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
@ -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>
@ -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>
@ -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>
@ -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.
@ -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
@ -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.
@ -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.
@ -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.
@ -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-2021 Free Software Foundation, Inc.
This file is part of GNU Emacs.

92954
ChangeLog.3

File diff suppressed because it is too large Load diff

114348
ChangeLog.4

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
# Build Emacs from a fresh tarball or version-control checkout.
# Copyright (C) 2011-2023 Free Software Foundation, Inc.
# Copyright (C) 2011-2021 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@ -36,31 +36,31 @@
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 )
@:
@echo "NOTE: This is a brief summary of some common make targets."
@echo "For more detailed information, please read the files INSTALL,"
@echo "INSTALL.REPO, Makefile or visit this URL:"
@echo "https://www.gnu.org/prep/standards/html_node/Standard-Targets.html"
@echo ""
@echo "make all -- compile and build Emacs"
@echo "make install -- install Emacs"
@echo "make TAGS -- update tags tables"
@echo "make clean -- delete built files but preserve configuration"
@echo "make mostlyclean -- like 'make clean', but leave those files that"
@echo " usually do not need to be recompiled"
@echo "make distclean -- delete all build and configuration files,"
@echo " leave only files included in source distribution"
@echo "make maintainer-clean -- delete almost everything that can be regenerated"
@echo "make extraclean -- like maintainer-clean, and also delete"
@echo " backup and autosave files"
@echo "make bootstrap -- delete all compiled files to force a new bootstrap"
@echo " from a clean slate, then build in the normal way"
@echo "make uninstall -- remove files installed by 'make install'"
@echo "make check -- run the Emacs test suite"
@echo "make docs -- generate Emacs documentation in info format"
@echo "make html -- generate documentation in html format"
@echo "make ps -- generate documentation in ps format"
@echo "make pdf -- generate documentation in pdf format "
@exit
.PHONY: help
@ -79,7 +79,7 @@ else
ifeq ($(filter-out %clean,$(or $(MAKECMDGOALS),default)),)
$(MAKECMDGOALS):
$(warning No Makefile; skipping $@.)
@echo >&2 'No Makefile; skipping $@.'
else
@ -97,25 +97,20 @@ 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)

63
INSTALL
View file

@ -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-2021 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
@ -187,9 +185,8 @@ X11 is being used.
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/
X libgif for GIF: http://giflib.sourceforge.net/
librsvg2 for SVG: https://wiki.gnome.org/Projects/LibRsvg
libwebp for WebP: https://developers.google.com/speed/webp/
If you supply the appropriate --without-LIB option, 'configure' will
omit the corresponding library from Emacs, even if that makes for a
@ -223,43 +220,11 @@ 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:
@ -348,7 +313,6 @@ 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.
@ -358,15 +322,8 @@ 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.

View file

@ -4,19 +4,13 @@ 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
git clone git://git.sv.gnu.org/emacs.git
To build the repository code, simply run 'make' in the 'emacs'
directory. This should work if your files are freshly checked out
from the repository, and if you have the proper tools installed; the
default configuration options will be used. Other configuration
options can be specified by setting a 'configure' variable, for
example:
$ make configure="--prefix=/opt/emacs CFLAGS='-O0 -g3'"
If the above doesn't work, or if you have special build requirements,
the following information may be helpful.
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:
@ -64,16 +58,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 +83,7 @@ never platform-specific.
Copyright (C) 2002-2023 Free Software Foundation, Inc.
Copyright (C) 2002-2021 Free Software Foundation, Inc.
This file is part of GNU Emacs.

View file

@ -1,6 +1,6 @@
### @configure_input@
# Copyright (C) 1992-2023 Free Software Foundation, Inc.
# Copyright (C) 1992-2021 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@ -51,15 +51,7 @@
#
# 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.
@ -110,11 +102,6 @@ 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@
# ==================== Where To Install Things ====================
# Location to install Emacs.app under GNUstep / macOS.
@ -223,9 +210,6 @@ 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
@ -301,16 +285,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 +298,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
@ -364,81 +336,10 @@ BIN_DESTDIR='${ns_appbindir}/'
ELN_DESTDIR = ${ns_applibdir}/
endif
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
all: ${SUBDIR} info
.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)'
# If configure were to just generate emacsver.tex from emacsver.tex.in
# in the normal way, the timestamp of emacsver.tex would always be
# newer than that of the pdf files, which are prebuilt in release tarfiles.
@ -517,10 +418,6 @@ epaths-force-ns-self-contained: epaths-force
-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,16 +429,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)' \
$(MAKE) -C $@ VCSWITNESS='$(VCSWITNESS)' BIN_DESTDIR='$(BIN_DESTDIR)' \
ELN_DESTDIR='$(ELN_DESTDIR)' all
blessmail: Makefile src
@ -589,7 +488,7 @@ $(srcdir)/configure: $(srcdir)/configure.ac $(srcdir)/m4/*.m4
## 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 install-eln
@true
## Ensure that $subdir contains a subdirs.el file.
@ -615,14 +514,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 +598,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,13 +655,15 @@ 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:
@ -778,9 +673,9 @@ install-etcdoc: src install-arch-indep
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" ] || \
@ -809,7 +704,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; \
@ -841,7 +736,7 @@ install-etc:
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}|" \
sed -e "/^Exec=emacsclient/ s|emacsclient|${bindir}/$${client_name}|" \
-e "/^Icon=emacs/ s/emacs/${EMACS_NAME}/" \
$(USE_STARTUP_NOTIFICATION_SED_CMD) \
${srcdir}/etc/emacsclient.desktop > $${tmp}; \
@ -855,7 +750,7 @@ install-etc:
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}|" \
sed -e "/^Exec=emacsclient/ 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"; \
@ -876,7 +771,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 ; \
@ -896,7 +791,7 @@ 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){}" \;
find native-lisp -type f -exec ${INSTALL_DATA} "{}" "$(ELN_DESTDIR){}" \;
endif
### Build Emacs and install it, stripping binaries while installing them.
@ -907,14 +802,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,7 +820,7 @@ uninstall: uninstall-$(NTDIR) uninstall-doc uninstall-gsettings-schemas
fi ; \
done
-rm -rf "$(DESTDIR)${libexecdir}/emacs/${version}"
thisdir=`pwd -P`; \
thisdir=`/bin/pwd`; \
(info_misc=`MAKEFLAGS= $(MAKE) --no-print-directory -s -C doc/misc echo-info`; \
if cd "$(DESTDIR)${infodir}"; then \
for elt in ${INFO_NONMISC} $${info_misc}; do \
@ -1003,7 +898,7 @@ clean_dirs = $(mostlyclean_dirs) nextstep admin/charsets admin/unidata
$(foreach dir,$(clean_dirs),$(eval $(call submake_template,$(dir),clean)))
clean: $(clean_dirs:=_clean) clean-gsettings-schemas
clean: $(clean_dirs:=_clean)
-rm -f ./*.tmp etc/*.tmp*
-rm -rf info-dir.*
-rm -rf native-lisp
@ -1011,7 +906,7 @@ clean: $(clean_dirs:=_clean) clean-gsettings-schemas
### '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 +916,15 @@ top_bootclean=\
### distribution.
top_distclean=\
${top_bootclean}; \
rm -f config.cache config.status config.log~ \
rm -f config.status config.log~ \
Makefile makefile lib/gnulib.mk ${SUBDIR_MAKEFILES}
distclean_dirs = $(clean_dirs) leim lisp admin/grammars
$(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),distclean)))
distclean: $(distclean_dirs:=_distclean) clean-gsettings-schemas
distclean: $(distclean_dirs:=_distclean)
${top_distclean}
ifeq ($(HAVE_NATIVE_COMP),yes)
rm -rf native-lisp
endif
### 'bootstrap-clean'
### Delete everything that can be reconstructed by 'make' and that
@ -1043,10 +935,6 @@ bootstrap-clean: $(distclean_dirs:=_bootstrap-clean)
[ ! -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'
@ -1160,8 +1048,8 @@ info_dir_deps = \
## but then we would need to depend on ${INFOS}, 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 $@
@ -1240,30 +1128,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 +1158,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-27
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 +1209,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
View file

@ -1,8 +1,8 @@
Copyright (C) 2001-2023 Free Software Foundation, Inc.
Copyright (C) 2001-2021 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 28.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

View file

@ -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 **
@ -310,8 +287,6 @@ HAVE_UTIMENSAT
HAVE_UTMP_H
HAVE_VFORK
HAVE_VFORK_H
HAVE_WEBP
HAVE_SQLITE3
HAVE_WCHAR_H
HAVE_WCHAR_T
HAVE_WINDOW_SYSTEM

View file

@ -2577,7 +2577,7 @@
;; coding: utf-8
;; End:
Copyright (C) 2001-2023 Free Software Foundation, Inc.
Copyright (C) 2001-2021 Free Software Foundation, Inc.
This file is part of GNU Emacs.

View file

@ -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
@ -135,31 +138,6 @@ Andrea Corallo
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.
@ -250,7 +228,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,60 +253,19 @@ Vibhav Pant
lisp/net/browse-url.el
lisp/erc/*
Alan Third
The NS port:
nextstep/*
src/ns*
src/*.m
lisp/term/ns-win.el
doc/emacs/macos.texi
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
;;; Local Variables:
;;; coding: utf-8

View file

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

View file

@ -1,6 +1,6 @@
;;; admin.el --- utilities for Emacs administration -*- lexical-binding: t; -*-
;; Copyright (C) 2001-2023 Free Software Foundation, Inc.
;; Copyright (C) 2001-2021 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")))
@ -159,13 +157,7 @@ Root must be the root of an Emacs source tree."
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
@ -348,13 +340,11 @@ Optional argument TYPE is type of output (nil means all)."
\"https://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 +475,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))
@ -608,81 +591,76 @@ 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
@ -778,207 +756,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 &amp; GNU inquiries to
<a href=\"mailto:gnu@gnu.org\">&lt;gnu@gnu.org&gt;</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\">&lt;bug-gnu-emacs@gnu.org&gt;</a>.
</p>
</div>
<p>
Copyright &copy; %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:&dollar;@@" (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>&nbsp;</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.

View file

@ -1,6 +1,6 @@
/* Allocate X colors. Used for testing with dense colormaps.
Copyright (C) 2001-2023 Free Software Foundation, Inc.
Copyright (C) 2001-2021 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, ...)

View file

@ -1,6 +1,6 @@
;;; authors.el --- utility for maintaining Emacs's AUTHORS file -*- lexical-binding: t; -*-
;; Copyright (C) 2000-2023 Free Software Foundation, Inc.
;; Copyright (C) 2000-2021 Free Software Foundation, Inc.
;; Author: Gerd Moellmann <gerd@gnu.org>
;; Maintainer: emacs-devel@gnu.org
@ -41,16 +41,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 +55,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 +70,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 PrudHomme" "Etienne Prud'Homme")
("Fabián Ezequiel Gallina" "Fabian Ezequiel Gallina" "Fabi.n E\\. Gallina")
(nil "felix.*EmacsWiki")
(nil "foudfou")
@ -100,37 +89,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 +126,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 +137,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 +151,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 +187,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 ?
@ -244,14 +213,10 @@ files.")
("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.")
@ -358,12 +323,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 +349,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,19 +359,9 @@ 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"
@ -469,10 +421,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"
@ -504,7 +452,6 @@ Changes to files matching one of the regexps in this list are not listed.")
"nextstep/WISHLIST"
;; Removed, replaced by gitmerge.el
"admin/bzrmerge.el"
"bzrmerge.el"
;; Removed in commit f5090b91299
"lib/fdatasync.c"
;; Removed as obsolete
@ -518,12 +465,6 @@ Changes to files matching one of the regexps in this list are not listed.")
"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"
@ -541,18 +482,6 @@ Changes to files matching one of the regexps in this list are not listed.")
"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.")
@ -884,9 +813,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"
@ -967,43 +898,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 +905,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 +929,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 +944,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 +998,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 +1005,8 @@ 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" . "test/manual/rmailmm.el")
("rmailmm.el" . "test/manual/rmailmm.el")
;; The one in lisp is eshell/eshell.el.
("eshell.el" . "eshell-tests.el")
("automated/eshell.el" . "eshell-tests.el")
@ -1158,79 +1038,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 +1068,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 +1110,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 +1118,25 @@ 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")
("src/module.h" . "src/emacs-module.h")
("src/module.c" . "src/emacs-module.c")
;; gnulib
("lib/strftime.c" . "lib/nstrftime.c")
("test/src/regex-tests.el" . "test/src/regex-emacs-tests.el")
("test/lisp/emacs-lisp/cl-tests.el" . "test/lisp/obsolete/cl-tests.el")
("lisp/net/starttls.el" . "lisp/obsolete/starttls.el")
("url-ns.el" . "lisp/obsolete/url-ns.el")
("gnus-news.texi" . "doc/misc/gnus.texi")
("lisp/multifile.el" . "lisp/fileloop.el")
("lisp/emacs-lisp/thread.el" . "lisp/thread.el")
("lisp/emacs-lisp/cl.el" . "lisp/emacs-lisp/cl-lib.el")
("lisp/progmodes/mantemp.el" . "lisp/obsolete/mantemp.el")
("src/mini-gmp.c" . "lib/mini-gmp.c")
("src/mini-gmp.h" . "lib/mini-gmp.h")
("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")
)
"Alist of files which have been renamed during their lifetime.
Elements are (OLDNAME . NEWNAME).")
@ -1491,14 +1291,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 +1304,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)
@ -1816,8 +1610,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, try \"C-u M-x authors RET\""))
(let ((logs (process-lines find-program root "-name" "ChangeLog*"))
(table (make-hash-table :test 'equal))
(buffer-name "*Authors*")
@ -1883,7 +1676,7 @@ list of their contributions.\n")
(insert "\n "))
(insert " " file))
(insert "\n")))))
(insert "\nLocal" " Variables:\nmode: emacs-authors\ncoding: "
(insert "\nLocal" " Variables:\nmode: etc-authors\ncoding: "
(symbol-name authors-coding-system) "\nEnd:\n")
(message "Generating buffer %s... done" buffer-name)
(unless noninteractive

View file

@ -1,10 +1,10 @@
#!/bin/bash
### automerge - automatically merge the Emacs release branch to master
## Copyright (C) 2018-2023 Free Software Foundation, Inc.
## Copyright (C) 2018-2021 Free Software Foundation, Inc.
## Author: Glenn Morris <rgm@gnu.org>
## Maintainer: Stefan Kangas <stefankangas@gmail.com>
## Maintainer: emacs-devel@gnu.org
## This file is part of GNU Emacs.
@ -35,7 +35,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 +108,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 +126,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 +148,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 +157,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 +186,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,7 +231,7 @@ 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"
@ -230,7 +240,7 @@ git fetch || die "fetch error"
## Ref eg https://lists.gnu.org/r/emacs-devel/2014-12/msg01435.html
## Instead, we throw away what we just did, and do the merge again.
echo "Resetting..."
git reset --hard "$rev"
git reset --hard $rev
echo "Pulling..."
git pull --ff-only || die "pull error"
@ -246,3 +256,5 @@ git push || die "push error"
exit 0
### automerge ends here

View file

@ -1,7 +1,7 @@
#! /usr/bin/perl
# Build Emacs in several different configurations.
# Copyright (C) 2001-2023 Free Software Foundation, Inc.
# Copyright (C) 2001-2021 Free Software Foundation, Inc.
# This file is part of GNU Emacs.

View file

@ -1,6 +1,6 @@
### @configure_input@
# Copyright (C) 2015-2023 Free Software Foundation, Inc.
# Copyright (C) 2015-2021 Free Software Foundation, Inc.
# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
@ -181,7 +181,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" ) > $@

View file

@ -1,6 +1,6 @@
#!/bin/sh
# Copyright (C) 2015-2023 Free Software Foundation, Inc.
# Copyright (C) 2015-2021 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"

View file

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

View file

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

View file

@ -1,4 +1,4 @@
Copyright (C) 2009-2023 Free Software Foundation, Inc.
Copyright (C) 2009-2021 Free Software Foundation, Inc.
Copyright (C) 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H13PRO009

View file

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

View file

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

View file

@ -290,7 +290,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;

View 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

View file

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

View file

@ -1,6 +1,6 @@
;;; cus-test.el --- tests for custom types and load problems -*- lexical-binding: t; -*-
;; Copyright (C) 1998, 2000, 2002-2023 Free Software Foundation, Inc.
;; Copyright (C) 1998, 2000, 2002-2021 Free Software Foundation, Inc.
;; Author: Markus Rost <rost@math.uni-bielefeld.de>
;; Created: 13 Sep 1998
@ -131,7 +131,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 +145,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 +156,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 +181,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,7 +200,8 @@ 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))
@ -224,9 +215,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.
@ -242,12 +231,13 @@ The detected problematic options are stored in `cus-test-errors'."
(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))))
(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"
@ -282,7 +272,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,7 +292,7 @@ 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."
@ -409,7 +399,7 @@ Returns a list of variables with suspicious types."
(message "No problems found")
nil)
(message "The following options might have problems:")
(cus-test-message (mapcar #'cus-test--format-error cus-test-errors))
(cus-test-message cus-test-errors)
cus-test-errors))
(defun cus-test-deps ()

View file

@ -1,6 +1,6 @@
#!/bin/bash
#! /bin/sh
# Copyright (C) 2001-2023 Free Software Foundation, Inc.
# Copyright (C) 2001-2021 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

View file

@ -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"
}

View file

@ -1,22 +1,5 @@
#!/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
@ -30,27 +13,14 @@ cores=1
# Determine the number of cores.
if [ -f /proc/cpuinfo ]; then
cores=$(($(grep -E "^physical id|^cpu cores" /proc/cpuinfo |\
cores=$(($(egrep "^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 | \
make -j$cores "$@" 2>&1 | \
sed -u 's# \.\./\.\./# #
s# \.\./# #
s#^Configuring local git # Configuring local git #
@ -58,23 +28,20 @@ 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|\
egrep --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|\
^Dumping under the name|\
^Byte counts|\
^Reloc counts|\
^Pure-hashed|\
@ -111,42 +78,18 @@ 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|\
^\[ \"\.\" = \"\.\" \]\
^'build-aux/git-hooks\
" | \
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
[[ "X${REPLY:0:1}" != "X " ]] && C="\033[1;31m"
[[ "X${REPLY:0:3}" == "X " ]] && C="\033[1;31m"
[[ "X$C" == "X" ]] && printf "%s\n" "$REPLY" || printf "$C%s\033[0m\n" "$REPLY"
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"
egrep --line-buffered -v "^make"

View file

@ -1,6 +1,6 @@
;;; find-gc.el --- detect functions that call the garbage collector -*- lexical-binding: t; -*-
;; Copyright (C) 1992, 2001-2023 Free Software Foundation, Inc.
;; Copyright (C) 1992, 2001-2021 Free Software Foundation, Inc.
;; Maintainer: emacs-devel@gnu.org
@ -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)

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
;;; gitmerge.el --- help merge one Emacs branch into another -*- lexical-binding: t; -*-
;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
;; Authors: David Engster <deng@randomsample.de>
;; Stefan Monnier <monnier@iro.umontreal.ca>
@ -37,10 +37,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.
@ -68,7 +68,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 +98,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 +122,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 +148,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 +160,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 +173,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 +183,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 +191,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 +216,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 +241,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 +284,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))
@ -335,8 +326,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
@ -402,10 +392,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 +408,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 +423,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 +436,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 +479,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 +599,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))))))

View file

@ -1,6 +1,6 @@
### @configure_input@
## Copyright (C) 2013-2023 Free Software Foundation, Inc.
## Copyright (C) 2013-2021 Free Software Foundation, Inc.
## This file is part of GNU Emacs.
@ -31,11 +31,10 @@ top_builddir = @top_builddir@
-include ${top_builddir}/src/verbose.mk
# 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 --eval '(setq load-prefer-newer t)'
make_bovine = ${emacs} -l semantic/bovine/grammar -f bovine-batch-make-parser
make_wisent = ${emacs} -l semantic/wisent/grammar -f wisent-batch-make-parser

View file

@ -1,5 +1,5 @@
;;; c.by -- LL grammar for C/C++ language specification
;; Copyright (C) 1999-2023 Free Software Foundation, Inc.
;; Copyright (C) 1999-2021 Free Software Foundation, Inc.
;;
;; Author: Eric M. Ludlam <zappo@gnu.org>
;; David Ponce <david@dponce.com>

View file

@ -1,6 +1,6 @@
;;; semantic-grammar.wy -- LALR grammar of Semantic input grammars
;;
;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
;; Copyright (C) 2002-2021 Free Software Foundation, Inc.
;;
;; Author: David Ponce <david@dponce.com>
;; Created: 26 Aug 2002

View file

@ -1,6 +1,6 @@
;;; java-tags.wy -- Semantic LALR grammar for Java
;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
;; Copyright (C) 2002-2021 Free Software Foundation, Inc.
;;
;; Author: David Ponce <david@dponce.com>
;; Created: 26 Aug 2002

View file

@ -1,6 +1,6 @@
;;; javascript-jv.wy -- LALR grammar for Javascript
;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
;; Copyright (C) 2005-2021 Free Software Foundation, Inc.
;; Copyright (C) 1998-2011 Ecma International.
;; Author: Joakim Verona

View file

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

View file

@ -1,6 +1,6 @@
;;; python.wy -- LALR grammar for Python
;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
;; Copyright (C) 2002-2021 Free Software Foundation, Inc.
;; Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
;; 2009, 2010 Python Software Foundation; All Rights Reserved

View file

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

View file

@ -1,6 +1,6 @@
;;; srecode-template.wy --- Semantic Recoder Template parser
;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
;; Copyright (C) 2005-2021 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <zappo@gnu.org>
;; Keywords: syntax
@ -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

View file

@ -1,6 +1,6 @@
;;; last-chance.el --- dangling deterrence -*- lexical-binding: t; -*-
;; Copyright (C) 2016-2023 Free Software Foundation, Inc.
;; Copyright (C) 2016-2021 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.
;;

View file

@ -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-2021 Free Software Foundation, Inc.
# This file is part of GNU Emacs.

View file

@ -1,7 +1,7 @@
#!/bin/bash
### make-manuals - create the Emacs manuals to upload to the gnu.org website
## Copyright 2018-2023 Free Software Foundation, Inc.
## Copyright 2018-2021 Free Software Foundation, Inc.
## Author: Glenn Morris <rgm@gnu.org>
## Maintainer: emacs-devel@gnu.org
@ -33,7 +33,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 +94,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

View file

@ -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,
@ -43,56 +42,12 @@ General steps (for each step, check for possible errors):
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
(This first updates the current versioned ChangeLog.N)
If this says "Problem updating ChangeLog", find the reason for the
failure of the command it runs, viz.:
@ -108,12 +63,11 @@ General steps (for each step, check for possible errors):
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.
authors.el.
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.
@ -129,14 +83,13 @@ General steps (for each step, check for possible errors):
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
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.
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 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
@ -160,13 +113,6 @@ General steps (for each step, check for possible errors):
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.
./admin/check-man-pages
Then do this:
make -C etc/refcards
make -C etc/refcards clean
@ -179,26 +125,15 @@ General steps (for each step, check for possible errors):
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
5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el.
;; 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. 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.
If someone else made a commit between step 1 and now,
you need to repeat from step 4 onwards. (You can commit the files
@ -212,10 +147,9 @@ 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
./admin/diff-tar-files emacs-OLD.tar.gz emacs-NEW.tar.gz
Alternatively, if you want to use the compressed tarballs (which
diff-tar-files doesn't understand):
Alternatively:
tar tJf emacs-OLD.tar.xz | sed -e 's,^[^/]*,,' | sort > old_tmp
tar tJf emacs-NEW.tar.xz | sed -e 's,^[^/]*,,' | sort > new_tmp
@ -223,17 +157,10 @@ General steps (for each step, check for possible errors):
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:
something like 'find . | sort' in a clean repository, and compare the
results against the new tar contents.
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
7. tar -xf emacs-NEW.tar; cd emacs-NEW
./configure --prefix=/tmp/emacs && make check && make install
Use 'script' or M-x compile to save the compilation log in
@ -261,14 +188,6 @@ General steps (for each step, check for possible errors):
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"
9. Decide what compression schemes to offer.
For a release, at least gz and xz:
gzip --best --no-name -c emacs-NEW.tar > emacs-NEW.tar.gz
@ -291,9 +210,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 +234,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,22 +250,9 @@ 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:
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.
13. Bump the Emacs version on the release branch.
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.
@ -357,8 +260,8 @@ General steps (for each step, check for possible errors):
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.)
https://www.gnu.org/software/emacs/ should be updated. (See
admin/notes/www for general information.)
The pages to update are:
@ -374,81 +277,21 @@ looks like this:
<div class="release-banner">
<div class="container">
<h2><em>Emacs 28.1 is out</em>, download it <a href="download.html">here</a>!</h2>
<h2><em>Emacs 27.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.
Regenerate the various manuals in manual/.
The scripts admin/make-manuals and admin/upload-manuals summarize the process.
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.
If you have Texinfo installed locally, make-manuals might fail if it
cannot find epsf.tex. In that case define in the environment
Next, regenerate the various manuals in HTML, PDF, and PS formats:
TEXINPUTS=:/path/to/texinfo-tree/doc
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.
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.
Browsing <https://web.cvs.savannah.gnu.org/viewvc/?root=emacs> is one
way to check for any files that still need updating.

View file

@ -4,7 +4,7 @@
#
# admin/merge-gnulib
# Copyright 2012-2023 Free Software Foundation, Inc.
# Copyright 2012-2021 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@ -23,39 +23,36 @@
# 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
alloca-opt binary-io byteswap c-ctype c-strcase
canonicalize-lgpl
careadlinkat close-stream copy-file-range
count-leading-zeros count-one-bits count-trailing-zeros
crypto/md5 crypto/md5-buffer
crypto/sha1-buffer crypto/sha256-buffer crypto/sha512-buffer
crypto/md5-buffer crypto/sha1-buffer crypto/sha256-buffer crypto/sha512-buffer
d-type diffseq double-slash-root dtoastr dtotimespec dup2
environ execinfo faccessat
environ execinfo explicit_bzero 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
manywarnings memmem-simple mempcpy memrchr minmax mkostemp mktime nstrftime
pathmax pipe2 pselect pthread_sigmask
qcopy-acl readlink readlinkat regex
sig2str sigdescr_np socklen stat-time std-gnu11 stdbool stddef stdio
sig2str sigdescr_np socklen stat-time std-gnu11 stdalign stddef stdio
stpcpy strnlen strtoimax symlink sys_stat sys_time
tempname time-h time_r time_rz timegm timer-time timespec-add timespec-sub
tempname time time_r time_rz timegm timer-time timespec-add timespec-sub
update-copyright unlocked-io utimensat
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
btowc close dup fchdir fstat langinfo lock
malloc-posix mbrtowc mbsinit memchr mkdir msvc-inval msvc-nothrow nl_langinfo
openat-die opendir pthread-h raise
save-cwd select setenv sigprocmask stat stdarg
save-cwd select setenv sigprocmask stat stdarg stdbool
threadlib tzset unsetenv utime utime-h
wchar wcrtomb wctype-h
'
@ -103,12 +100,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 +107,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 +118,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

View file

@ -4,7 +4,7 @@
#
# admin/merge-pkg-config
# Copyright 2014-2023 Free Software Foundation, Inc.
# Copyright 2014-2021 Free Software Foundation, Inc.
# This file is part of GNU Emacs.

View file

@ -73,7 +73,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

View file

@ -84,7 +84,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"

View file

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

View file

@ -3,7 +3,7 @@ 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

View file

@ -1,6 +1,6 @@
-*- mode: outline; coding: utf-8 -*-
Copyright (C) 2019-2023 Free Software Foundation, Inc.
Copyright (C) 2019-2021 Free Software Foundation, Inc.
See the end of the file for license conditions.
NOTES FOR EMACS CONTINUOUS BUILD ON EMBA
@ -8,8 +8,7 @@ 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).
changes. This happens for all Emacs branches.
* Mail notifications
@ -29,49 +28,29 @@ The messages contain a URL to the log file of the failed job, like
* 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
'.gitlab-ci.yml'. It 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,
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.
There are different types of jobs: 'prep-image-base' is responsible to
prepare the environment for the following jobs. 'build-image-*' jobs
are responsible to compile Emacs in different configuration. The
corresponding 'test-*' jobs run the ert tests.
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.
A special job is 'test-all-inotify', which runs 'make check-expensive'.
While most of the jobs run as soon as a respective file has been
committed into the Emacs git repository, this test job runs scheduled,
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
@ -83,46 +62,6 @@ 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.

View file

@ -16,14 +16,14 @@ 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).
(eg emacs-27).
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
git worktree add ../emacs-27 emacs-27
You now have both branches conveniently accessible, and you can do
"git pull" in them once in a while to keep updated.
@ -67,7 +67,7 @@ which will look like
commit 958b768a6534ae6e77a8547a56fc31b46b63710b
cd ~/emacs/emacs-29
cd ~/emacs/emacs-27
git cherry-pick -xe 958b768a6534ae6e77a8547a56fc31b46b63710b
and add "Backport:" to the commit string. Then
@ -109,7 +109,7 @@ 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
(eg) 'origin/emacs-27', 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.

View file

@ -1,6 +1,6 @@
-*- mode: outline; coding: utf-8 -*-
Copyright (C) 2013-2023 Free Software Foundation, Inc.
Copyright (C) 2013-2021 Free Software Foundation, Inc.
See the end of the file for license conditions.
NOTES FOR EMACS CONTINUOUS BUILD ON HYDRA

View file

@ -1,6 +1,6 @@
-*- coding: utf-8; mode: text; -*-
Copyright (C) 2007-2023 Free Software Foundation, Inc.
Copyright (C) 2007-2021 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.

View file

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

View file

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

View file

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

View file

@ -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}"

View file

@ -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 doesnt 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, Pythons
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 PARENTs type matches TYPE as regexp
(node-is TYPE) => matches NODEs 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, dont 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 (dont 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 nodes 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 imenus 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 dont 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
}

View file

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

View file

@ -1,6 +1,6 @@
-*-mode: text; coding: utf-8;-*-
Copyright (C) 2002-2023 Free Software Foundation, Inc.
Copyright (C) 2002-2021 Free Software Foundation, Inc.
See the end of the file for license conditions.
Importing a new Unicode Standard version into Emacs
@ -15,33 +15,18 @@ Emacs uses the following files from the Unicode Character Database
. BidiMirroring.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
First, the first 10 files 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
Emacs updates several derived files elsewhere in the Emacs source
tree, mainly in lisp/international/.
@ -103,10 +88,6 @@ 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
@ -135,12 +116,8 @@ FONT-NAME-REGEXP is checked using `string-match'."
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.
properly. 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.

View file

@ -1,6 +1,6 @@
-*- outline -*-
Copyright (C) 2013-2023 Free Software Foundation, Inc.
Copyright (C) 2013-2021 Free Software Foundation, Inc.
See the end of the file for license conditions.
NOTES FOR EMACS WWW PAGES
@ -26,7 +26,7 @@ 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).
a complete update of the on-line manual pages (eg after a release).
* Renaming pages, redirects
@ -99,7 +99,7 @@ https://lists.gnu.org/r/bug-gnulib/2012-12/msg00072.html
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.
Ref eg
https://github.com/mikjo/bigitr
https://lists.gnu.org/r/savannah-hackers-public/2013-04/msg00022.html

View file

@ -3,32 +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.
checkout. Inspect the results for plausibility, then commit them.
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

View file

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

View file

@ -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.
@ -76,8 +63,8 @@ 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
@ -101,7 +88,8 @@ files will be created in ~/emacs-upload from where they can be signed
and uploaded with `gnupload`.
### For snapshots from Master
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,
@ -122,7 +110,8 @@ used.
Now, run `build-zips.sh -s` to build a snapshot release.
### For snapshots from a Release Branch
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.
@ -131,11 +120,11 @@ 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
the version (e.g emacs-27-2019-12-26.zip) rather than than the Emacs
version (e.g emacs-27.0.50.zip).
### For snapshots from another branch
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

View file

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

View file

@ -1,6 +1,6 @@
#!/usr/bin/python3
## Copyright (C) 2017-2023 Free Software Foundation, Inc.
## Copyright (C) 2017-2021 Free Software Foundation, Inc.
## This file is part of GNU Emacs.
@ -20,8 +20,6 @@
import os
import shutil
import re
import functools
import operator
from subprocess import check_output
@ -114,7 +112,7 @@ def ntldd_munge(out):
## 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"])
SKIP_DEP_PKGS=["mingw-w64-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",
@ -123,17 +121,19 @@ def ntldd_munge(out):
## Currently no packages seem to require this!
ARCH_PKGS=[]
SRC_REPO="https://repo.msys2.org/mingw/sources"
SRC_REPO="https://sourceforge.net/projects/msys2/files/REPOS/MINGW/Sources"
def immediate_deps(pkgs):
package_info = check_output(["pacman", "-Si"] + pkgs).decode("utf-8").splitlines()
def immediate_deps(pkg):
package_info = check_output(["pacman", "-Si", pkg]).decode("utf-8").split("\n")
## 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, [])
## Extract the "Depends On" line
depends_on = [x for x in package_info if x.startswith("Depends On")][0]
## Remove "Depends On" prefix
dependencies = depends_on.split(":")[1]
## Split into dependencies
dependencies = dependencies.strip().split(" ")
## Remove > signs TODO can we get any other punctuation here?
dependencies = [d.split(">")[0] for d in dependencies if d]
@ -149,18 +149,16 @@ def extract_deps():
print( "Extracting deps" )
# 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
pkgs = PKG_REQ[:]
n = 0
while n < len(pkgs):
subdeps = immediate_deps(pkgs[n])
for p in subdeps:
if not (p in pkgs or p in SKIP_DEP_PKGS):
pkgs.append(p)
n = n + 1
return list(pkgs)
return sorted(pkgs)
def download_source(tarball):
@ -169,7 +167,7 @@ def download_source(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/{} {}/{}"
"wget -a ../download.log -O ../emacs-src-cache/{} {}/{}/download"
.format(tarball, SRC_REPO, tarball),
shell=True
)
@ -257,7 +255,7 @@ def clean():
if( args.l ):
print("List of dependencies")
print( deps )
print( extract_deps() )
exit(0)
if args.s:

View file

@ -1,6 +1,6 @@
#!/bin/bash
## Copyright (C) 2017-2023 Free Software Foundation, Inc.
## Copyright (C) 2017-2021 Free Software Foundation, Inc.
## This file is part of GNU Emacs.
@ -148,7 +148,7 @@ done
if [ -z $ACTUAL_VERSION ];
then
ACTUAL_VERSION=`
sed -n 's/^AC_INIT(\[*GNU Emacs]*,[ ]*\[*\([^] ,)]*\).*/\1/p' < ../../../configure.ac
sed -n 's/^AC_INIT(GNU Emacs,[ ]*\([^ ,)]*\).*/\1/p' < ../../../configure.ac
`
fi

View file

@ -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-2021 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; }

View file

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

View file

@ -1,6 +1,6 @@
# BidiBrackets-15.0.0.txt
# Date: 2022-05-03, 18:42:00 GMT [AG, LI, KW]
# © 2022 Unicode®, Inc.
# BidiBrackets-14.0.0.txt
# Date: 2021-06-30, 23:59:00 GMT [AG, LI, KW]
# © 2021 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
#

View file

@ -1,6 +1,6 @@
# BidiMirroring-15.0.0.txt
# Date: 2022-05-03, 18:47:00 GMT [KW, RP]
# © 2022 Unicode®, Inc.
# BidiMirroring-14.0.0.txt
# Date: 2021-08-08, 22:55:00 GMT [KW, RP]
# © 2021 Unicode®, Inc.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
@ -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 14.0.0.
#
# The file contains a list of lines with mappings from one code point
# to another one for character-based mirroring.

View file

@ -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-14.0.0.txt
# Date: 2021-01-22, 23:29:00 GMT [KW]
# © 2021 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,
@ -241,7 +241,6 @@ FFF0..FFFF; Specials
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
@ -273,13 +272,11 @@ FFF0..FFFF; Specials
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
@ -287,7 +284,7 @@ FFF0..FFFF; Specials
12480..1254F; Early Dynastic Cuneiform
12F90..12FFF; Cypro-Minoan
13000..1342F; Egyptian Hieroglyphs
13430..1345F; Egyptian Hieroglyph Format Controls
13430..1343F; Egyptian Hieroglyph Format Controls
14400..1467F; Anatolian Hieroglyphs
16800..16A3F; Bamum Supplement
16A40..16A6F; Mro
@ -312,7 +309,6 @@ FFF0..FFFF; Specials
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
@ -320,11 +316,9 @@ FFF0..FFFF; Specials
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
@ -354,7 +348,6 @@ FFF0..FFFF; Specials
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

View file

@ -2,9 +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.
#
@ -35,7 +32,7 @@
# For more details on the IVD, see UTS #37:
# https://www.unicode.org/reports/tr37/
#
# Copyright 2006-2022 Unicode, Inc.
# Copyright 2006-2020 Unicode, Inc.
# For terms of use, see: https://www.unicode.org/copyright.html#8
#
3402 E0100; Adobe-Japan1; CID+13698
@ -39340,5 +39337,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

View file

@ -1,6 +1,6 @@
### @configure_input@
# Copyright (C) 2012-2023 Free Software Foundation, Inc.
# Copyright (C) 2012-2021 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
@ -44,9 +41,7 @@ unifiles = $(addprefix ${unidir}/,$(sort $(shell sed -n 's/^[ \t][ \t]*${lparen}
.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 ${unidir}/emoji-zwj.el
## Specify .elc as an order-only prereq so as to not needlessly rebuild
## target just because the .elc is missing.
@ -68,38 +63,18 @@ 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
@ -116,8 +91,8 @@ 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} $^ > $@
${unidir}/emoji-zwj.el: ${srcdir}/emoji-zwj-sequences.txt ${zwj}
$(AM_V_GEN)$(AWK) -f ${zwj} < $< > $@
.PHONY: clean bootstrap-clean distclean maintainer-clean gen-clean
@ -138,8 +113,7 @@ 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: gen-clean distclean

View file

@ -1,11 +1,11 @@
# NormalizationTest-15.0.0.txt
# Date: 2022-04-02, 01:29:09 GMT
# © 2022 Unicode®, Inc.
# NormalizationTest-14.0.0.txt
# Date: 2021-05-28, 21:49:12 GMT
# © 2021 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/
#
# Normalization Test Suite
# Format:
@ -16208,68 +16208,6 @@ FFEE;FFEE;FFEE;25CB;25CB; # (○; ○; ○; ○; ○; ) HALFWIDTH WHITE CIRCLE
1D7FD;1D7FD;1D7FD;0037;0037; # (𝟽; 𝟽; 𝟽; 7; 7; ) MATHEMATICAL MONOSPACE DIGIT SEVEN
1D7FE;1D7FE;1D7FE;0038;0038; # (𝟾; 𝟾; 𝟾; 8; 8; ) MATHEMATICAL MONOSPACE DIGIT EIGHT
1D7FF;1D7FF;1D7FF;0039;0039; # (𝟿; 𝟿; 𝟿; 9; 9; ) MATHEMATICAL MONOSPACE DIGIT NINE
1E030;1E030;1E030;0430;0430; # (𞀰; 𞀰; 𞀰; а; а; ) MODIFIER LETTER CYRILLIC SMALL A
1E031;1E031;1E031;0431;0431; # (𞀱; 𞀱; 𞀱; б; б; ) MODIFIER LETTER CYRILLIC SMALL BE
1E032;1E032;1E032;0432;0432; # (𞀲; 𞀲; 𞀲; в; в; ) MODIFIER LETTER CYRILLIC SMALL VE
1E033;1E033;1E033;0433;0433; # (𞀳; 𞀳; 𞀳; г; г; ) MODIFIER LETTER CYRILLIC SMALL GHE
1E034;1E034;1E034;0434;0434; # (𞀴; 𞀴; 𞀴; д; д; ) MODIFIER LETTER CYRILLIC SMALL DE
1E035;1E035;1E035;0435;0435; # (𞀵; 𞀵; 𞀵; е; е; ) MODIFIER LETTER CYRILLIC SMALL IE
1E036;1E036;1E036;0436;0436; # (𞀶; 𞀶; 𞀶; ж; ж; ) MODIFIER LETTER CYRILLIC SMALL ZHE
1E037;1E037;1E037;0437;0437; # (𞀷; 𞀷; 𞀷; з; з; ) MODIFIER LETTER CYRILLIC SMALL ZE
1E038;1E038;1E038;0438;0438; # (𞀸; 𞀸; 𞀸; и; и; ) MODIFIER LETTER CYRILLIC SMALL I
1E039;1E039;1E039;043A;043A; # (𞀹; 𞀹; 𞀹; к; к; ) MODIFIER LETTER CYRILLIC SMALL KA
1E03A;1E03A;1E03A;043B;043B; # (𞀺; 𞀺; 𞀺; л; л; ) MODIFIER LETTER CYRILLIC SMALL EL
1E03B;1E03B;1E03B;043C;043C; # (𞀻; 𞀻; 𞀻; м; м; ) MODIFIER LETTER CYRILLIC SMALL EM
1E03C;1E03C;1E03C;043E;043E; # (𞀼; 𞀼; 𞀼; о; о; ) MODIFIER LETTER CYRILLIC SMALL O
1E03D;1E03D;1E03D;043F;043F; # (𞀽; 𞀽; 𞀽; п; п; ) MODIFIER LETTER CYRILLIC SMALL PE
1E03E;1E03E;1E03E;0440;0440; # (𞀾; 𞀾; 𞀾; р; р; ) MODIFIER LETTER CYRILLIC SMALL ER
1E03F;1E03F;1E03F;0441;0441; # (𞀿; 𞀿; 𞀿; с; с; ) MODIFIER LETTER CYRILLIC SMALL ES
1E040;1E040;1E040;0442;0442; # (𞁀; 𞁀; 𞁀; т; т; ) MODIFIER LETTER CYRILLIC SMALL TE
1E041;1E041;1E041;0443;0443; # (𞁁; 𞁁; 𞁁; у; у; ) MODIFIER LETTER CYRILLIC SMALL U
1E042;1E042;1E042;0444;0444; # (𞁂; 𞁂; 𞁂; ф; ф; ) MODIFIER LETTER CYRILLIC SMALL EF
1E043;1E043;1E043;0445;0445; # (𞁃; 𞁃; 𞁃; х; х; ) MODIFIER LETTER CYRILLIC SMALL HA
1E044;1E044;1E044;0446;0446; # (𞁄; 𞁄; 𞁄; ц; ц; ) MODIFIER LETTER CYRILLIC SMALL TSE
1E045;1E045;1E045;0447;0447; # (𞁅; 𞁅; 𞁅; ч; ч; ) MODIFIER LETTER CYRILLIC SMALL CHE
1E046;1E046;1E046;0448;0448; # (𞁆; 𞁆; 𞁆; ш; ш; ) MODIFIER LETTER CYRILLIC SMALL SHA
1E047;1E047;1E047;044B;044B; # (𞁇; 𞁇; 𞁇; ы; ы; ) MODIFIER LETTER CYRILLIC SMALL YERU
1E048;1E048;1E048;044D;044D; # (𞁈; 𞁈; 𞁈; э; э; ) MODIFIER LETTER CYRILLIC SMALL E
1E049;1E049;1E049;044E;044E; # (𞁉; 𞁉; 𞁉; ю; ю; ) MODIFIER LETTER CYRILLIC SMALL YU
1E04A;1E04A;1E04A;A689;A689; # (𞁊; 𞁊; 𞁊; ꚉ; ꚉ; ) MODIFIER LETTER CYRILLIC SMALL DZZE
1E04B;1E04B;1E04B;04D9;04D9; # (𞁋; 𞁋; 𞁋; ә; ә; ) MODIFIER LETTER CYRILLIC SMALL SCHWA
1E04C;1E04C;1E04C;0456;0456; # (𞁌; 𞁌; 𞁌; і; і; ) MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I
1E04D;1E04D;1E04D;0458;0458; # (𞁍; 𞁍; 𞁍; ј; ј; ) MODIFIER LETTER CYRILLIC SMALL JE
1E04E;1E04E;1E04E;04E9;04E9; # (𞁎; 𞁎; 𞁎; ө; ө; ) MODIFIER LETTER CYRILLIC SMALL BARRED O
1E04F;1E04F;1E04F;04AF;04AF; # (𞁏; 𞁏; 𞁏; ү; ү; ) MODIFIER LETTER CYRILLIC SMALL STRAIGHT U
1E050;1E050;1E050;04CF;04CF; # (𞁐; 𞁐; 𞁐; ӏ; ӏ; ) MODIFIER LETTER CYRILLIC SMALL PALOCHKA
1E051;1E051;1E051;0430;0430; # (𞁑; 𞁑; 𞁑; а; а; ) CYRILLIC SUBSCRIPT SMALL LETTER A
1E052;1E052;1E052;0431;0431; # (𞁒; 𞁒; 𞁒; б; б; ) CYRILLIC SUBSCRIPT SMALL LETTER BE
1E053;1E053;1E053;0432;0432; # (𞁓; 𞁓; 𞁓; в; в; ) CYRILLIC SUBSCRIPT SMALL LETTER VE
1E054;1E054;1E054;0433;0433; # (𞁔; 𞁔; 𞁔; г; г; ) CYRILLIC SUBSCRIPT SMALL LETTER GHE
1E055;1E055;1E055;0434;0434; # (𞁕; 𞁕; 𞁕; д; д; ) CYRILLIC SUBSCRIPT SMALL LETTER DE
1E056;1E056;1E056;0435;0435; # (𞁖; 𞁖; 𞁖; е; е; ) CYRILLIC SUBSCRIPT SMALL LETTER IE
1E057;1E057;1E057;0436;0436; # (𞁗; 𞁗; 𞁗; ж; ж; ) CYRILLIC SUBSCRIPT SMALL LETTER ZHE
1E058;1E058;1E058;0437;0437; # (𞁘; 𞁘; 𞁘; з; з; ) CYRILLIC SUBSCRIPT SMALL LETTER ZE
1E059;1E059;1E059;0438;0438; # (𞁙; 𞁙; 𞁙; и; и; ) CYRILLIC SUBSCRIPT SMALL LETTER I
1E05A;1E05A;1E05A;043A;043A; # (𞁚; 𞁚; 𞁚; к; к; ) CYRILLIC SUBSCRIPT SMALL LETTER KA
1E05B;1E05B;1E05B;043B;043B; # (𞁛; 𞁛; 𞁛; л; л; ) CYRILLIC SUBSCRIPT SMALL LETTER EL
1E05C;1E05C;1E05C;043E;043E; # (𞁜; 𞁜; 𞁜; о; о; ) CYRILLIC SUBSCRIPT SMALL LETTER O
1E05D;1E05D;1E05D;043F;043F; # (𞁝; 𞁝; 𞁝; п; п; ) CYRILLIC SUBSCRIPT SMALL LETTER PE
1E05E;1E05E;1E05E;0441;0441; # (𞁞; 𞁞; 𞁞; с; с; ) CYRILLIC SUBSCRIPT SMALL LETTER ES
1E05F;1E05F;1E05F;0443;0443; # (𞁟; 𞁟; 𞁟; у; у; ) CYRILLIC SUBSCRIPT SMALL LETTER U
1E060;1E060;1E060;0444;0444; # (𞁠; 𞁠; 𞁠; ф; ф; ) CYRILLIC SUBSCRIPT SMALL LETTER EF
1E061;1E061;1E061;0445;0445; # (𞁡; 𞁡; 𞁡; х; х; ) CYRILLIC SUBSCRIPT SMALL LETTER HA
1E062;1E062;1E062;0446;0446; # (𞁢; 𞁢; 𞁢; ц; ц; ) CYRILLIC SUBSCRIPT SMALL LETTER TSE
1E063;1E063;1E063;0447;0447; # (𞁣; 𞁣; 𞁣; ч; ч; ) CYRILLIC SUBSCRIPT SMALL LETTER CHE
1E064;1E064;1E064;0448;0448; # (𞁤; 𞁤; 𞁤; ш; ш; ) CYRILLIC SUBSCRIPT SMALL LETTER SHA
1E065;1E065;1E065;044A;044A; # (𞁥; 𞁥; 𞁥; ъ; ъ; ) CYRILLIC SUBSCRIPT SMALL LETTER HARD SIGN
1E066;1E066;1E066;044B;044B; # (𞁦; 𞁦; 𞁦; ы; ы; ) CYRILLIC SUBSCRIPT SMALL LETTER YERU
1E067;1E067;1E067;0491;0491; # (𞁧; 𞁧; 𞁧; ґ; ґ; ) CYRILLIC SUBSCRIPT SMALL LETTER GHE WITH UPTURN
1E068;1E068;1E068;0456;0456; # (𞁨; 𞁨; 𞁨; і; і; ) CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I
1E069;1E069;1E069;0455;0455; # (𞁩; 𞁩; 𞁩; ѕ; ѕ; ) CYRILLIC SUBSCRIPT SMALL LETTER DZE
1E06A;1E06A;1E06A;045F;045F; # (𞁪; 𞁪; 𞁪; џ; џ; ) CYRILLIC SUBSCRIPT SMALL LETTER DZHE
1E06B;1E06B;1E06B;04AB;04AB; # (𞁫; 𞁫; 𞁫; ҫ; ҫ; ) MODIFIER LETTER CYRILLIC SMALL ES WITH DESCENDER
1E06C;1E06C;1E06C;A651;A651; # (𞁬; 𞁬; 𞁬; ꙑ; ꙑ; ) MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER
1E06D;1E06D;1E06D;04B1;04B1; # (𞁭; 𞁭; 𞁭; ұ; ұ; ) MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
1EE00;1EE00;1EE00;0627;0627; # (𞸀; 𞸀; 𞸀; ا; ا; ) ARABIC MATHEMATICAL ALEF
1EE01;1EE01;1EE01;0628;0628; # (𞸁; 𞸁; 𞸁; ب; ب; ) ARABIC MATHEMATICAL BEH
1EE02;1EE02;1EE02;062C;062C; # (𞸂; 𞸂; 𞸂; ج; ج; ) ARABIC MATHEMATICAL JEEM
@ -18558,12 +18496,6 @@ FFEE;FFEE;FFEE;25CB;25CB; # (○; ○; ○; ○; ○; ) HALFWIDTH WHITE CIRCLE
0061 10EAB 0315 0300 05AE 0062;0061 05AE 10EAB 0300 0315 0062;0061 05AE 10EAB 0300 0315 0062;0061 05AE 10EAB 0300 0315 0062;0061 05AE 10EAB 0300 0315 0062; # (a◌𐺫◌̕◌̀◌֮b; a◌֮◌𐺫◌̀◌̕b; a◌֮◌𐺫◌̀◌̕b; a◌֮◌𐺫◌̀◌̕b; a◌֮◌𐺫◌̀◌̕b; ) LATIN SMALL LETTER A, YEZIDI COMBINING HAMZA MARK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
0061 0315 0300 05AE 10EAC 0062;00E0 05AE 10EAC 0315 0062;0061 05AE 0300 10EAC 0315 0062;00E0 05AE 10EAC 0315 0062;0061 05AE 0300 10EAC 0315 0062; # (a◌̕◌̀◌֮◌𐺬b; à◌֮◌𐺬◌̕b; a◌֮◌̀◌𐺬◌̕b; à◌֮◌𐺬◌̕b; a◌֮◌̀◌𐺬◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, YEZIDI COMBINING MADDA MARK, LATIN SMALL LETTER B
0061 10EAC 0315 0300 05AE 0062;0061 05AE 10EAC 0300 0315 0062;0061 05AE 10EAC 0300 0315 0062;0061 05AE 10EAC 0300 0315 0062;0061 05AE 10EAC 0300 0315 0062; # (a◌𐺬◌̕◌̀◌֮b; a◌֮◌𐺬◌̀◌̕b; a◌֮◌𐺬◌̀◌̕b; a◌֮◌𐺬◌̀◌̕b; a◌֮◌𐺬◌̀◌̕b; ) LATIN SMALL LETTER A, YEZIDI COMBINING MADDA MARK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
0061 059A 0316 1DFA 10EFD 0062;0061 1DFA 0316 10EFD 059A 0062;0061 1DFA 0316 10EFD 059A 0062;0061 1DFA 0316 10EFD 059A 0062;0061 1DFA 0316 10EFD 059A 0062; # (a◌֚◌̖◌᷺◌𐻽b; a◌᷺◌̖◌𐻽◌֚b; a◌᷺◌̖◌𐻽◌֚b; a◌᷺◌̖◌𐻽◌֚b; a◌᷺◌̖◌𐻽◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, COMBINING DOT BELOW LEFT, ARABIC SMALL LOW WORD SAKTA, LATIN SMALL LETTER B
0061 10EFD 059A 0316 1DFA 0062;0061 1DFA 10EFD 0316 059A 0062;0061 1DFA 10EFD 0316 059A 0062;0061 1DFA 10EFD 0316 059A 0062;0061 1DFA 10EFD 0316 059A 0062; # (a◌𐻽◌֚◌̖◌᷺b; a◌᷺◌𐻽◌̖◌֚b; a◌᷺◌𐻽◌̖◌֚b; a◌᷺◌𐻽◌̖◌֚b; a◌᷺◌𐻽◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC SMALL LOW WORD SAKTA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, COMBINING DOT BELOW LEFT, LATIN SMALL LETTER B
0061 059A 0316 1DFA 10EFE 0062;0061 1DFA 0316 10EFE 059A 0062;0061 1DFA 0316 10EFE 059A 0062;0061 1DFA 0316 10EFE 059A 0062;0061 1DFA 0316 10EFE 059A 0062; # (a◌֚◌̖◌᷺◌𐻾b; a◌᷺◌̖◌𐻾◌֚b; a◌᷺◌̖◌𐻾◌֚b; a◌᷺◌̖◌𐻾◌֚b; a◌᷺◌̖◌𐻾◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, COMBINING DOT BELOW LEFT, ARABIC SMALL LOW WORD QASR, LATIN SMALL LETTER B
0061 10EFE 059A 0316 1DFA 0062;0061 1DFA 10EFE 0316 059A 0062;0061 1DFA 10EFE 0316 059A 0062;0061 1DFA 10EFE 0316 059A 0062;0061 1DFA 10EFE 0316 059A 0062; # (a◌𐻾◌֚◌̖◌᷺b; a◌᷺◌𐻾◌̖◌֚b; a◌᷺◌𐻾◌̖◌֚b; a◌᷺◌𐻾◌̖◌֚b; a◌᷺◌𐻾◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC SMALL LOW WORD QASR, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, COMBINING DOT BELOW LEFT, LATIN SMALL LETTER B
0061 059A 0316 1DFA 10EFF 0062;0061 1DFA 0316 10EFF 059A 0062;0061 1DFA 0316 10EFF 059A 0062;0061 1DFA 0316 10EFF 059A 0062;0061 1DFA 0316 10EFF 059A 0062; # (a◌֚◌̖◌᷺◌𐻿b; a◌᷺◌̖◌𐻿◌֚b; a◌᷺◌̖◌𐻿◌֚b; a◌᷺◌̖◌𐻿◌֚b; a◌᷺◌̖◌𐻿◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, COMBINING DOT BELOW LEFT, ARABIC SMALL LOW WORD MADDA, LATIN SMALL LETTER B
0061 10EFF 059A 0316 1DFA 0062;0061 1DFA 10EFF 0316 059A 0062;0061 1DFA 10EFF 0316 059A 0062;0061 1DFA 10EFF 0316 059A 0062;0061 1DFA 10EFF 0316 059A 0062; # (a◌𐻿◌֚◌̖◌᷺b; a◌᷺◌𐻿◌̖◌֚b; a◌᷺◌𐻿◌̖◌֚b; a◌᷺◌𐻿◌̖◌֚b; a◌᷺◌𐻿◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC SMALL LOW WORD MADDA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, COMBINING DOT BELOW LEFT, LATIN SMALL LETTER B
0061 059A 0316 1DFA 10F46 0062;0061 1DFA 0316 10F46 059A 0062;0061 1DFA 0316 10F46 059A 0062;0061 1DFA 0316 10F46 059A 0062;0061 1DFA 0316 10F46 059A 0062; # (a◌֚◌̖◌᷺◌𐽆b; a◌᷺◌̖◌𐽆◌֚b; a◌᷺◌̖◌𐽆◌֚b; a◌᷺◌̖◌𐽆◌֚b; a◌᷺◌̖◌𐽆◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, COMBINING DOT BELOW LEFT, SOGDIAN COMBINING DOT BELOW, LATIN SMALL LETTER B
0061 10F46 059A 0316 1DFA 0062;0061 1DFA 10F46 0316 059A 0062;0061 1DFA 10F46 0316 059A 0062;0061 1DFA 10F46 0316 059A 0062;0061 1DFA 10F46 0316 059A 0062; # (a◌𐽆◌֚◌̖◌᷺b; a◌᷺◌𐽆◌̖◌֚b; a◌᷺◌𐽆◌̖◌֚b; a◌᷺◌𐽆◌̖◌֚b; a◌᷺◌𐽆◌̖◌֚b; ) LATIN SMALL LETTER A, SOGDIAN COMBINING DOT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, COMBINING DOT BELOW LEFT, LATIN SMALL LETTER B
0061 059A 0316 1DFA 10F47 0062;0061 1DFA 0316 10F47 059A 0062;0061 1DFA 0316 10F47 059A 0062;0061 1DFA 0316 10F47 059A 0062;0061 1DFA 0316 10F47 059A 0062; # (a◌֚◌̖◌᷺◌𐽇b; a◌᷺◌̖◌𐽇◌֚b; a◌᷺◌̖◌𐽇◌֚b; a◌᷺◌̖◌𐽇◌֚b; a◌᷺◌̖◌𐽇◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, COMBINING DOT BELOW LEFT, SOGDIAN COMBINING TWO DOTS BELOW, LATIN SMALL LETTER B
@ -18708,10 +18640,6 @@ FFEE;FFEE;FFEE;25CB;25CB; # (○; ○; ○; ○; ○; ) HALFWIDTH WHITE CIRCLE
0061 11D45 05B0 094D 3099 0062;0061 3099 11D45 094D 05B0 0062;0061 3099 11D45 094D 05B0 0062;0061 3099 11D45 094D 05B0 0062;0061 3099 11D45 094D 05B0 0062; # (a◌𑵅◌ְ◌्◌゙b; a◌゙◌𑵅◌्◌ְb; a◌゙◌𑵅◌्◌ְb; a◌゙◌𑵅◌्◌ְb; a◌゙◌𑵅◌्◌ְb; ) LATIN SMALL LETTER A, MASARAM GONDI VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
0061 05B0 094D 3099 11D97 0062;0061 3099 094D 11D97 05B0 0062;0061 3099 094D 11D97 05B0 0062;0061 3099 094D 11D97 05B0 0062;0061 3099 094D 11D97 05B0 0062; # (a◌ְ◌्◌゙◌𑶗b; a◌゙◌्◌𑶗◌ְb; a◌゙◌्◌𑶗◌ְb; a◌゙◌्◌𑶗◌ְb; a◌゙◌्◌𑶗◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, GUNJALA GONDI VIRAMA, LATIN SMALL LETTER B
0061 11D97 05B0 094D 3099 0062;0061 3099 11D97 094D 05B0 0062;0061 3099 11D97 094D 05B0 0062;0061 3099 11D97 094D 05B0 0062;0061 3099 11D97 094D 05B0 0062; # (a◌𑶗◌ְ◌्◌゙b; a◌゙◌𑶗◌्◌ְb; a◌゙◌𑶗◌्◌ְb; a◌゙◌𑶗◌्◌ְb; a◌゙◌𑶗◌्◌ְb; ) LATIN SMALL LETTER A, GUNJALA GONDI VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
0061 05B0 094D 3099 11F41 0062;0061 3099 094D 11F41 05B0 0062;0061 3099 094D 11F41 05B0 0062;0061 3099 094D 11F41 05B0 0062;0061 3099 094D 11F41 05B0 0062; # (a◌ְ◌्◌゙𑽁b; a◌゙◌्𑽁◌ְb; a◌゙◌्𑽁◌ְb; a◌゙◌्𑽁◌ְb; a◌゙◌्𑽁◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KAWI SIGN KILLER, LATIN SMALL LETTER B
0061 11F41 05B0 094D 3099 0062;0061 3099 11F41 094D 05B0 0062;0061 3099 11F41 094D 05B0 0062;0061 3099 11F41 094D 05B0 0062;0061 3099 11F41 094D 05B0 0062; # (a𑽁◌ְ◌्◌゙b; a◌゙𑽁◌्◌ְb; a◌゙𑽁◌्◌ְb; a◌゙𑽁◌्◌ְb; a◌゙𑽁◌्◌ְb; ) LATIN SMALL LETTER A, KAWI SIGN KILLER, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
0061 05B0 094D 3099 11F42 0062;0061 3099 094D 11F42 05B0 0062;0061 3099 094D 11F42 05B0 0062;0061 3099 094D 11F42 05B0 0062;0061 3099 094D 11F42 05B0 0062; # (a◌ְ◌्◌゙◌𑽂b; a◌゙◌्◌𑽂◌ְb; a◌゙◌्◌𑽂◌ְb; a◌゙◌्◌𑽂◌ְb; a◌゙◌्◌𑽂◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KAWI CONJOINER, LATIN SMALL LETTER B
0061 11F42 05B0 094D 3099 0062;0061 3099 11F42 094D 05B0 0062;0061 3099 11F42 094D 05B0 0062;0061 3099 11F42 094D 05B0 0062;0061 3099 11F42 094D 05B0 0062; # (a◌𑽂◌ְ◌्◌゙b; a◌゙◌𑽂◌्◌ְb; a◌゙◌𑽂◌्◌ְb; a◌゙◌𑽂◌्◌ְb; a◌゙◌𑽂◌्◌ְb; ) LATIN SMALL LETTER A, KAWI CONJOINER, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
0061 16FF0 0334 16AF0 0062;0061 0334 16AF0 16FF0 0062;0061 0334 16AF0 16FF0 0062;0061 0334 16AF0 16FF0 0062;0061 0334 16AF0 16FF0 0062; # (a𖿰◌̴◌𖫰b; a◌̴◌𖫰𖿰b; a◌̴◌𖫰𖿰b; a◌̴◌𖫰𖿰b; a◌̴◌𖫰𖿰b; ) LATIN SMALL LETTER A, VIETNAMESE ALTERNATE READING MARK CA, COMBINING TILDE OVERLAY, BASSA VAH COMBINING HIGH TONE, LATIN SMALL LETTER B
0061 16AF0 16FF0 0334 0062;0061 16AF0 0334 16FF0 0062;0061 16AF0 0334 16FF0 0062;0061 16AF0 0334 16FF0 0062;0061 16AF0 0334 16FF0 0062; # (a◌𖫰𖿰◌̴b; a◌𖫰◌̴𖿰b; a◌𖫰◌̴𖿰b; a◌𖫰◌̴𖿰b; a◌𖫰◌̴𖿰b; ) LATIN SMALL LETTER A, BASSA VAH COMBINING HIGH TONE, VIETNAMESE ALTERNATE READING MARK CA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
0061 16FF0 0334 16AF1 0062;0061 0334 16AF1 16FF0 0062;0061 0334 16AF1 16FF0 0062;0061 0334 16AF1 16FF0 0062;0061 0334 16AF1 16FF0 0062; # (a𖿰◌̴◌𖫱b; a◌̴◌𖫱𖿰b; a◌̴◌𖫱𖿰b; a◌̴◌𖫱𖿰b; a◌̴◌𖫱𖿰b; ) LATIN SMALL LETTER A, VIETNAMESE ALTERNATE READING MARK CA, COMBINING TILDE OVERLAY, BASSA VAH COMBINING LOW TONE, LATIN SMALL LETTER B
@ -18884,8 +18812,6 @@ FFEE;FFEE;FFEE;25CB;25CB; # (○; ○; ○; ○; ○; ) HALFWIDTH WHITE CIRCLE
0061 1E029 0315 0300 05AE 0062;0061 05AE 1E029 0300 0315 0062;0061 05AE 1E029 0300 0315 0062;0061 05AE 1E029 0300 0315 0062;0061 05AE 1E029 0300 0315 0062; # (a◌𞀩◌̕◌̀◌֮b; a◌֮◌𞀩◌̀◌̕b; a◌֮◌𞀩◌̀◌̕b; a◌֮◌𞀩◌̀◌̕b; a◌֮◌𞀩◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER IOTATED BIG YUS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
0061 0315 0300 05AE 1E02A 0062;00E0 05AE 1E02A 0315 0062;0061 05AE 0300 1E02A 0315 0062;00E0 05AE 1E02A 0315 0062;0061 05AE 0300 1E02A 0315 0062; # (a◌̕◌̀◌֮◌𞀪b; à◌֮◌𞀪◌̕b; a◌֮◌̀◌𞀪◌̕b; à◌֮◌𞀪◌̕b; a◌֮◌̀◌𞀪◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER FITA, LATIN SMALL LETTER B
0061 1E02A 0315 0300 05AE 0062;0061 05AE 1E02A 0300 0315 0062;0061 05AE 1E02A 0300 0315 0062;0061 05AE 1E02A 0300 0315 0062;0061 05AE 1E02A 0300 0315 0062; # (a◌𞀪◌̕◌̀◌֮b; a◌֮◌𞀪◌̀◌̕b; a◌֮◌𞀪◌̀◌̕b; a◌֮◌𞀪◌̀◌̕b; a◌֮◌𞀪◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER FITA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
0061 0315 0300 05AE 1E08F 0062;00E0 05AE 1E08F 0315 0062;0061 05AE 0300 1E08F 0315 0062;00E0 05AE 1E08F 0315 0062;0061 05AE 0300 1E08F 0315 0062; # (a◌̕◌̀◌֮◌𞂏b; à◌֮◌𞂏◌̕b; a◌֮◌̀◌𞂏◌̕b; à◌֮◌𞂏◌̕b; a◌֮◌̀◌𞂏◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I, LATIN SMALL LETTER B
0061 1E08F 0315 0300 05AE 0062;0061 05AE 1E08F 0300 0315 0062;0061 05AE 1E08F 0300 0315 0062;0061 05AE 1E08F 0300 0315 0062;0061 05AE 1E08F 0300 0315 0062; # (a◌𞂏◌̕◌̀◌֮b; a◌֮◌𞂏◌̀◌̕b; a◌֮◌𞂏◌̀◌̕b; a◌֮◌𞂏◌̀◌̕b; a◌֮◌𞂏◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
0061 0315 0300 05AE 1E130 0062;00E0 05AE 1E130 0315 0062;0061 05AE 0300 1E130 0315 0062;00E0 05AE 1E130 0315 0062;0061 05AE 0300 1E130 0315 0062; # (a◌̕◌̀◌֮◌𞄰b; à◌֮◌𞄰◌̕b; a◌֮◌̀◌𞄰◌̕b; à◌֮◌𞄰◌̕b; a◌֮◌̀◌𞄰◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NYIAKENG PUACHUE HMONG TONE-B, LATIN SMALL LETTER B
0061 1E130 0315 0300 05AE 0062;0061 05AE 1E130 0300 0315 0062;0061 05AE 1E130 0300 0315 0062;0061 05AE 1E130 0300 0315 0062;0061 05AE 1E130 0300 0315 0062; # (a◌𞄰◌̕◌̀◌֮b; a◌֮◌𞄰◌̀◌̕b; a◌֮◌𞄰◌̀◌̕b; a◌֮◌𞄰◌̀◌̕b; a◌֮◌𞄰◌̀◌̕b; ) LATIN SMALL LETTER A, NYIAKENG PUACHUE HMONG TONE-B, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
0061 0315 0300 05AE 1E131 0062;00E0 05AE 1E131 0315 0062;0061 05AE 0300 1E131 0315 0062;00E0 05AE 1E131 0315 0062;0061 05AE 0300 1E131 0315 0062; # (a◌̕◌̀◌֮◌𞄱b; à◌֮◌𞄱◌̕b; a◌֮◌̀◌𞄱◌̕b; à◌֮◌𞄱◌̕b; a◌֮◌̀◌𞄱◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NYIAKENG PUACHUE HMONG TONE-M, LATIN SMALL LETTER B
@ -18910,14 +18836,6 @@ FFEE;FFEE;FFEE;25CB;25CB; # (○; ○; ○; ○; ○; ) HALFWIDTH WHITE CIRCLE
0061 1E2EE 0315 0300 05AE 0062;0061 05AE 1E2EE 0300 0315 0062;0061 05AE 1E2EE 0300 0315 0062;0061 05AE 1E2EE 0300 0315 0062;0061 05AE 1E2EE 0300 0315 0062; # (a◌𞋮◌̕◌̀◌֮b; a◌֮◌𞋮◌̀◌̕b; a◌֮◌𞋮◌̀◌̕b; a◌֮◌𞋮◌̀◌̕b; a◌֮◌𞋮◌̀◌̕b; ) LATIN SMALL LETTER A, WANCHO TONE KOI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
0061 0315 0300 05AE 1E2EF 0062;00E0 05AE 1E2EF 0315 0062;0061 05AE 0300 1E2EF 0315 0062;00E0 05AE 1E2EF 0315 0062;0061 05AE 0300 1E2EF 0315 0062; # (a◌̕◌̀◌֮◌𞋯b; à◌֮◌𞋯◌̕b; a◌֮◌̀◌𞋯◌̕b; à◌֮◌𞋯◌̕b; a◌֮◌̀◌𞋯◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, WANCHO TONE KOINI, LATIN SMALL LETTER B
0061 1E2EF 0315 0300 05AE 0062;0061 05AE 1E2EF 0300 0315 0062;0061 05AE 1E2EF 0300 0315 0062;0061 05AE 1E2EF 0300 0315 0062;0061 05AE 1E2EF 0300 0315 0062; # (a◌𞋯◌̕◌̀◌֮b; a◌֮◌𞋯◌̀◌̕b; a◌֮◌𞋯◌̀◌̕b; a◌֮◌𞋯◌̀◌̕b; a◌֮◌𞋯◌̀◌̕b; ) LATIN SMALL LETTER A, WANCHO TONE KOINI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
0061 035C 0315 0300 1E4EC 0062;00E0 0315 1E4EC 035C 0062;0061 0300 0315 1E4EC 035C 0062;00E0 0315 1E4EC 035C 0062;0061 0300 0315 1E4EC 035C 0062; # (a◌͜◌̕◌̀◌𞓬b; à◌̕◌𞓬◌͜b; a◌̀◌̕◌𞓬◌͜b; à◌̕◌𞓬◌͜b; a◌̀◌̕◌𞓬◌͜b; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, NAG MUNDARI SIGN MUHOR, LATIN SMALL LETTER B
0061 1E4EC 035C 0315 0300 0062;00E0 1E4EC 0315 035C 0062;0061 0300 1E4EC 0315 035C 0062;00E0 1E4EC 0315 035C 0062;0061 0300 1E4EC 0315 035C 0062; # (a◌𞓬◌͜◌̕◌̀b; à◌𞓬◌̕◌͜b; a◌̀◌𞓬◌̕◌͜b; à◌𞓬◌̕◌͜b; a◌̀◌𞓬◌̕◌͜b; ) LATIN SMALL LETTER A, NAG MUNDARI SIGN MUHOR, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, LATIN SMALL LETTER B
0061 035C 0315 0300 1E4ED 0062;00E0 0315 1E4ED 035C 0062;0061 0300 0315 1E4ED 035C 0062;00E0 0315 1E4ED 035C 0062;0061 0300 0315 1E4ED 035C 0062; # (a◌͜◌̕◌̀◌𞓭b; à◌̕◌𞓭◌͜b; a◌̀◌̕◌𞓭◌͜b; à◌̕◌𞓭◌͜b; a◌̀◌̕◌𞓭◌͜b; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, NAG MUNDARI SIGN TOYOR, LATIN SMALL LETTER B
0061 1E4ED 035C 0315 0300 0062;00E0 1E4ED 0315 035C 0062;0061 0300 1E4ED 0315 035C 0062;00E0 1E4ED 0315 035C 0062;0061 0300 1E4ED 0315 035C 0062; # (a◌𞓭◌͜◌̕◌̀b; à◌𞓭◌̕◌͜b; a◌̀◌𞓭◌̕◌͜b; à◌𞓭◌̕◌͜b; a◌̀◌𞓭◌̕◌͜b; ) LATIN SMALL LETTER A, NAG MUNDARI SIGN TOYOR, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, LATIN SMALL LETTER B
0061 059A 0316 1DFA 1E4EE 0062;0061 1DFA 0316 1E4EE 059A 0062;0061 1DFA 0316 1E4EE 059A 0062;0061 1DFA 0316 1E4EE 059A 0062;0061 1DFA 0316 1E4EE 059A 0062; # (a◌֚◌̖◌᷺◌𞓮b; a◌᷺◌̖◌𞓮◌֚b; a◌᷺◌̖◌𞓮◌֚b; a◌᷺◌̖◌𞓮◌֚b; a◌᷺◌̖◌𞓮◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, COMBINING DOT BELOW LEFT, NAG MUNDARI SIGN IKIR, LATIN SMALL LETTER B
0061 1E4EE 059A 0316 1DFA 0062;0061 1DFA 1E4EE 0316 059A 0062;0061 1DFA 1E4EE 0316 059A 0062;0061 1DFA 1E4EE 0316 059A 0062;0061 1DFA 1E4EE 0316 059A 0062; # (a◌𞓮◌֚◌̖◌᷺b; a◌᷺◌𞓮◌̖◌֚b; a◌᷺◌𞓮◌̖◌֚b; a◌᷺◌𞓮◌̖◌֚b; a◌᷺◌𞓮◌̖◌֚b; ) LATIN SMALL LETTER A, NAG MUNDARI SIGN IKIR, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, COMBINING DOT BELOW LEFT, LATIN SMALL LETTER B
0061 0315 0300 05AE 1E4EF 0062;00E0 05AE 1E4EF 0315 0062;0061 05AE 0300 1E4EF 0315 0062;00E0 05AE 1E4EF 0315 0062;0061 05AE 0300 1E4EF 0315 0062; # (a◌̕◌̀◌֮◌𞓯b; à◌֮◌𞓯◌̕b; a◌֮◌̀◌𞓯◌̕b; à◌֮◌𞓯◌̕b; a◌֮◌̀◌𞓯◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NAG MUNDARI SIGN SUTUH, LATIN SMALL LETTER B
0061 1E4EF 0315 0300 05AE 0062;0061 05AE 1E4EF 0300 0315 0062;0061 05AE 1E4EF 0300 0315 0062;0061 05AE 1E4EF 0300 0315 0062;0061 05AE 1E4EF 0300 0315 0062; # (a◌𞓯◌̕◌̀◌֮b; a◌֮◌𞓯◌̀◌̕b; a◌֮◌𞓯◌̀◌̕b; a◌֮◌𞓯◌̀◌̕b; a◌֮◌𞓯◌̀◌̕b; ) LATIN SMALL LETTER A, NAG MUNDARI SIGN SUTUH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
0061 059A 0316 1DFA 1E8D0 0062;0061 1DFA 0316 1E8D0 059A 0062;0061 1DFA 0316 1E8D0 059A 0062;0061 1DFA 0316 1E8D0 059A 0062;0061 1DFA 0316 1E8D0 059A 0062; # (a◌֚◌̖◌᷺◌𞣐b; a◌᷺◌̖◌𞣐◌֚b; a◌᷺◌̖◌𞣐◌֚b; a◌᷺◌̖◌𞣐◌֚b; a◌᷺◌̖◌𞣐◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, COMBINING DOT BELOW LEFT, MENDE KIKAKUI COMBINING NUMBER TEENS, LATIN SMALL LETTER B
0061 1E8D0 059A 0316 1DFA 0062;0061 1DFA 1E8D0 0316 059A 0062;0061 1DFA 1E8D0 0316 059A 0062;0061 1DFA 1E8D0 0316 059A 0062;0061 1DFA 1E8D0 0316 059A 0062; # (a◌𞣐◌֚◌̖◌᷺b; a◌᷺◌𞣐◌̖◌֚b; a◌᷺◌𞣐◌̖◌֚b; a◌᷺◌𞣐◌̖◌֚b; a◌᷺◌𞣐◌̖◌֚b; ) LATIN SMALL LETTER A, MENDE KIKAKUI COMBINING NUMBER TEENS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, COMBINING DOT BELOW LEFT, LATIN SMALL LETTER B
0061 059A 0316 1DFA 1E8D1 0062;0061 1DFA 0316 1E8D1 059A 0062;0061 1DFA 0316 1E8D1 059A 0062;0061 1DFA 0316 1E8D1 059A 0062;0061 1DFA 0316 1E8D1 059A 0062; # (a◌֚◌̖◌᷺◌𞣑b; a◌᷺◌̖◌𞣑◌֚b; a◌᷺◌̖◌𞣑◌֚b; a◌᷺◌̖◌𞣑◌֚b; a◌᷺◌̖◌𞣑◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, COMBINING DOT BELOW LEFT, MENDE KIKAKUI COMBINING NUMBER TENS, LATIN SMALL LETTER B

File diff suppressed because it is too large Load diff

View file

@ -6,31 +6,31 @@ copyright.html.
The names, URLs, and dates for these files are as follows.
BidiBrackets.txt
https://www.unicode.org/Public/UNIDATA/BidiBrackets.txt
http://www.unicode.org/Public/UNIDATA/BidiBrackets.txt
2021-06-30
BidiMirroring.txt
https://www.unicode.org/Public/UNIDATA/BidiMirroring.txt
http://www.unicode.org/Public/UNIDATA/BidiMirroring.txt
2021-08-08
Blocks.txt
https://www.unicode.org/Public/8.0.0/ucd/Blocks.txt
http://www.unicode.org/Public/8.0.0/ucd/Blocks.txt
2021-01-22
IVD_Sequences.txt
https://www.unicode.org/ivd/
http://www.unicode.org/ivd/
2020-11-06
NormalizationTest.txt
https://www.unicode.org/Public/UNIDATA/NormalizationTest.txt
http://www.unicode.org/Public/UNIDATA/NormalizationTest.txt
2021-05-28
SpecialCasing.txt
https://unicode.org/Public/UNIDATA/SpecialCasing.txt
http://unicode.org/Public/UNIDATA/SpecialCasing.txt
2021-03-08
UnicodeData.txt
https://www.unicode.org/Public/UNIDATA/UnicodeData.txt
http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
2021-07-06
emoji-data.txt
@ -44,23 +44,3 @@ https://www.unicode.org/Public/emoji/14.0/emoji-zwj-sequences.txt
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

View file

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

File diff suppressed because it is too large Load diff

View file

@ -1,11 +1,11 @@
# SpecialCasing-15.0.0.txt
# Date: 2022-02-02, 23:35:52 GMT
# © 2022 Unicode®, Inc.
# SpecialCasing-14.0.0.txt
# Date: 2021-03-08, 19:35:55 GMT
# © 2021 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/
#
# Special Casing
#

View file

@ -2975,7 +2975,6 @@
0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0CF1;KANNADA SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;;
0CF2;KANNADA SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;;
0CF3;KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT;Mc;0;L;;;;;N;;;;;
0D00;MALAYALAM SIGN COMBINING ANUSVARA ABOVE;Mn;0;NSM;;;;;N;;;;;
0D01;MALAYALAM SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
@ -3340,7 +3339,6 @@
0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
0ECE;LAO YAMAKKAN;Mn;0;NSM;;;;;N;;;;;
0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
@ -19395,9 +19393,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
10EAD;YEZIDI HYPHENATION MARK;Pd;0;R;;;;;N;;;;;
10EB0;YEZIDI LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
10EB1;YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE;Lo;0;R;;;;;N;;;;;
10EFD;ARABIC SMALL LOW WORD SAKTA;Mn;220;NSM;;;;;N;;;;;
10EFE;ARABIC SMALL LOW WORD QASR;Mn;220;NSM;;;;;N;;;;;
10EFF;ARABIC SMALL LOW WORD MADDA;Mn;220;NSM;;;;;N;;;;;
10F00;OLD SOGDIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;
10F01;OLD SOGDIAN LETTER FINAL ALEPH;Lo;0;R;;;;;N;;;;;
10F02;OLD SOGDIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
@ -20063,9 +20058,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1123C;KHOJKI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;;
1123D;KHOJKI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
1123E;KHOJKI SIGN SUKUN;Mn;0;NSM;;;;;N;;;;;
1123F;KHOJKI LETTER QA;Lo;0;L;;;;;N;;;;;
11240;KHOJKI LETTER SHORT I;Lo;0;L;;;;;N;;;;;
11241;KHOJKI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
11280;MULTANI LETTER A;Lo;0;L;;;;;N;;;;;
11281;MULTANI LETTER I;Lo;0;L;;;;;N;;;;;
11282;MULTANI LETTER U;Lo;0;L;;;;;N;;;;;
@ -21264,16 +21256,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11AF6;PAU CIN HAU LOW-FALLING TONE LONG FINAL;Lo;0;L;;;;;N;;;;;
11AF7;PAU CIN HAU LOW-FALLING TONE FINAL;Lo;0;L;;;;;N;;;;;
11AF8;PAU CIN HAU GLOTTAL STOP FINAL;Lo;0;L;;;;;N;;;;;
11B00;DEVANAGARI HEAD MARK;Po;0;L;;;;;N;;;;;
11B01;DEVANAGARI HEAD MARK WITH HEADSTROKE;Po;0;L;;;;;N;;;;;
11B02;DEVANAGARI SIGN BHALE;Po;0;L;;;;;N;;;;;
11B03;DEVANAGARI SIGN BHALE WITH HOOK;Po;0;L;;;;;N;;;;;
11B04;DEVANAGARI SIGN EXTENDED BHALE;Po;0;L;;;;;N;;;;;
11B05;DEVANAGARI SIGN EXTENDED BHALE WITH HOOK;Po;0;L;;;;;N;;;;;
11B06;DEVANAGARI SIGN WESTERN FIVE-LIKE BHALE;Po;0;L;;;;;N;;;;;
11B07;DEVANAGARI SIGN WESTERN NINE-LIKE BHALE;Po;0;L;;;;;N;;;;;
11B08;DEVANAGARI SIGN REVERSED NINE-LIKE BHALE;Po;0;L;;;;;N;;;;;
11B09;DEVANAGARI SIGN MINDU;Po;0;L;;;;;N;;;;;
11C00;BHAIKSUKI LETTER A;Lo;0;L;;;;;N;;;;;
11C01;BHAIKSUKI LETTER AA;Lo;0;L;;;;;N;;;;;
11C02;BHAIKSUKI LETTER I;Lo;0;L;;;;;N;;;;;
@ -21602,92 +21584,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11EF6;MAKASAR VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
11EF7;MAKASAR PASSIMBANG;Po;0;L;;;;;N;;;;;
11EF8;MAKASAR END OF SECTION;Po;0;L;;;;;N;;;;;
11F00;KAWI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
11F01;KAWI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
11F02;KAWI SIGN REPHA;Lo;0;L;;;;;N;;;;;
11F03;KAWI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
11F04;KAWI LETTER A;Lo;0;L;;;;;N;;;;;
11F05;KAWI LETTER AA;Lo;0;L;;;;;N;;;;;
11F06;KAWI LETTER I;Lo;0;L;;;;;N;;;;;
11F07;KAWI LETTER II;Lo;0;L;;;;;N;;;;;
11F08;KAWI LETTER U;Lo;0;L;;;;;N;;;;;
11F09;KAWI LETTER UU;Lo;0;L;;;;;N;;;;;
11F0A;KAWI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
11F0B;KAWI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
11F0C;KAWI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
11F0D;KAWI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
11F0E;KAWI LETTER E;Lo;0;L;;;;;N;;;;;
11F0F;KAWI LETTER AI;Lo;0;L;;;;;N;;;;;
11F10;KAWI LETTER O;Lo;0;L;;;;;N;;;;;
11F12;KAWI LETTER KA;Lo;0;L;;;;;N;;;;;
11F13;KAWI LETTER KHA;Lo;0;L;;;;;N;;;;;
11F14;KAWI LETTER GA;Lo;0;L;;;;;N;;;;;
11F15;KAWI LETTER GHA;Lo;0;L;;;;;N;;;;;
11F16;KAWI LETTER NGA;Lo;0;L;;;;;N;;;;;
11F17;KAWI LETTER CA;Lo;0;L;;;;;N;;;;;
11F18;KAWI LETTER CHA;Lo;0;L;;;;;N;;;;;
11F19;KAWI LETTER JA;Lo;0;L;;;;;N;;;;;
11F1A;KAWI LETTER JHA;Lo;0;L;;;;;N;;;;;
11F1B;KAWI LETTER NYA;Lo;0;L;;;;;N;;;;;
11F1C;KAWI LETTER TTA;Lo;0;L;;;;;N;;;;;
11F1D;KAWI LETTER TTHA;Lo;0;L;;;;;N;;;;;
11F1E;KAWI LETTER DDA;Lo;0;L;;;;;N;;;;;
11F1F;KAWI LETTER DDHA;Lo;0;L;;;;;N;;;;;
11F20;KAWI LETTER NNA;Lo;0;L;;;;;N;;;;;
11F21;KAWI LETTER TA;Lo;0;L;;;;;N;;;;;
11F22;KAWI LETTER THA;Lo;0;L;;;;;N;;;;;
11F23;KAWI LETTER DA;Lo;0;L;;;;;N;;;;;
11F24;KAWI LETTER DHA;Lo;0;L;;;;;N;;;;;
11F25;KAWI LETTER NA;Lo;0;L;;;;;N;;;;;
11F26;KAWI LETTER PA;Lo;0;L;;;;;N;;;;;
11F27;KAWI LETTER PHA;Lo;0;L;;;;;N;;;;;
11F28;KAWI LETTER BA;Lo;0;L;;;;;N;;;;;
11F29;KAWI LETTER BHA;Lo;0;L;;;;;N;;;;;
11F2A;KAWI LETTER MA;Lo;0;L;;;;;N;;;;;
11F2B;KAWI LETTER YA;Lo;0;L;;;;;N;;;;;
11F2C;KAWI LETTER RA;Lo;0;L;;;;;N;;;;;
11F2D;KAWI LETTER LA;Lo;0;L;;;;;N;;;;;
11F2E;KAWI LETTER WA;Lo;0;L;;;;;N;;;;;
11F2F;KAWI LETTER SHA;Lo;0;L;;;;;N;;;;;
11F30;KAWI LETTER SSA;Lo;0;L;;;;;N;;;;;
11F31;KAWI LETTER SA;Lo;0;L;;;;;N;;;;;
11F32;KAWI LETTER HA;Lo;0;L;;;;;N;;;;;
11F33;KAWI LETTER JNYA;Lo;0;L;;;;;N;;;;;
11F34;KAWI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
11F35;KAWI VOWEL SIGN ALTERNATE AA;Mc;0;L;;;;;N;;;;;
11F36;KAWI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
11F37;KAWI VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
11F38;KAWI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
11F39;KAWI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
11F3A;KAWI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
11F3E;KAWI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
11F3F;KAWI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
11F40;KAWI VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;;
11F41;KAWI SIGN KILLER;Mc;9;L;;;;;N;;;;;
11F42;KAWI CONJOINER;Mn;9;NSM;;;;;N;;;;;
11F43;KAWI DANDA;Po;0;L;;;;;N;;;;;
11F44;KAWI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
11F45;KAWI PUNCTUATION SECTION MARKER;Po;0;L;;;;;N;;;;;
11F46;KAWI PUNCTUATION ALTERNATE SECTION MARKER;Po;0;L;;;;;N;;;;;
11F47;KAWI PUNCTUATION FLOWER;Po;0;L;;;;;N;;;;;
11F48;KAWI PUNCTUATION SPACE FILLER;Po;0;L;;;;;N;;;;;
11F49;KAWI PUNCTUATION DOT;Po;0;L;;;;;N;;;;;
11F4A;KAWI PUNCTUATION DOUBLE DOT;Po;0;L;;;;;N;;;;;
11F4B;KAWI PUNCTUATION TRIPLE DOT;Po;0;L;;;;;N;;;;;
11F4C;KAWI PUNCTUATION CIRCLE;Po;0;L;;;;;N;;;;;
11F4D;KAWI PUNCTUATION FILLED CIRCLE;Po;0;L;;;;;N;;;;;
11F4E;KAWI PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;;
11F4F;KAWI PUNCTUATION CLOSING SPIRAL;Po;0;L;;;;;N;;;;;
11F50;KAWI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
11F51;KAWI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
11F52;KAWI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
11F53;KAWI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
11F54;KAWI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
11F55;KAWI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
11F56;KAWI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
11F57;KAWI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
11F58;KAWI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
11F59;KAWI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
11FB0;LISU LETTER YHA;Lo;0;L;;;;;N;;;;;
11FC0;TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH;No;0;L;;;;1/320;N;;;;;
11FC1;TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;;
@ -24144,7 +24040,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;;
1342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;;
1342E;EGYPTIAN HIEROGLYPH AA032;Lo;0;L;;;;;N;;;;;
1342F;EGYPTIAN HIEROGLYPH V011D;Lo;0;L;;;;;N;;;;;
13430;EGYPTIAN HIEROGLYPH VERTICAL JOINER;Cf;0;L;;;;;N;;;;;
13431;EGYPTIAN HIEROGLYPH HORIZONTAL JOINER;Cf;0;L;;;;;N;;;;;
13432;EGYPTIAN HIEROGLYPH INSERT AT TOP START;Cf;0;L;;;;;N;;;;;
@ -24154,35 +24049,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
13436;EGYPTIAN HIEROGLYPH OVERLAY MIDDLE;Cf;0;L;;;;;N;;;;;
13437;EGYPTIAN HIEROGLYPH BEGIN SEGMENT;Cf;0;L;;;;;N;;;;;
13438;EGYPTIAN HIEROGLYPH END SEGMENT;Cf;0;L;;;;;N;;;;;
13439;EGYPTIAN HIEROGLYPH INSERT AT MIDDLE;Cf;0;L;;;;;N;;;;;
1343A;EGYPTIAN HIEROGLYPH INSERT AT TOP;Cf;0;L;;;;;N;;;;;
1343B;EGYPTIAN HIEROGLYPH INSERT AT BOTTOM;Cf;0;L;;;;;N;;;;;
1343C;EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE;Cf;0;L;;;;;N;;;;;
1343D;EGYPTIAN HIEROGLYPH END ENCLOSURE;Cf;0;L;;;;;N;;;;;
1343E;EGYPTIAN HIEROGLYPH BEGIN WALLED ENCLOSURE;Cf;0;L;;;;;N;;;;;
1343F;EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE;Cf;0;L;;;;;N;;;;;
13440;EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY;Mn;0;NSM;;;;;N;;;;;
13441;EGYPTIAN HIEROGLYPH FULL BLANK;Lo;0;L;;;;;N;;;;;
13442;EGYPTIAN HIEROGLYPH HALF BLANK;Lo;0;L;;;;;N;;;;;
13443;EGYPTIAN HIEROGLYPH LOST SIGN;Lo;0;L;;;;;N;;;;;
13444;EGYPTIAN HIEROGLYPH HALF LOST SIGN;Lo;0;L;;;;;N;;;;;
13445;EGYPTIAN HIEROGLYPH TALL LOST SIGN;Lo;0;L;;;;;N;;;;;
13446;EGYPTIAN HIEROGLYPH WIDE LOST SIGN;Lo;0;L;;;;;N;;;;;
13447;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START;Mn;0;NSM;;;;;N;;;;;
13448;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START;Mn;0;NSM;;;;;N;;;;;
13449;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START;Mn;0;NSM;;;;;N;;;;;
1344A;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP END;Mn;0;NSM;;;;;N;;;;;
1344B;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP;Mn;0;NSM;;;;;N;;;;;
1344C;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START AND TOP END;Mn;0;NSM;;;;;N;;;;;
1344D;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND TOP;Mn;0;NSM;;;;;N;;;;;
1344E;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM END;Mn;0;NSM;;;;;N;;;;;
1344F;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START AND BOTTOM END;Mn;0;NSM;;;;;N;;;;;
13450;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM;Mn;0;NSM;;;;;N;;;;;
13451;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND BOTTOM;Mn;0;NSM;;;;;N;;;;;
13452;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT END;Mn;0;NSM;;;;;N;;;;;
13453;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP AND END;Mn;0;NSM;;;;;N;;;;;
13454;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM AND END;Mn;0;NSM;;;;;N;;;;;
13455;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED;Mn;0;NSM;;;;;N;;;;;
14400;ANATOLIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;;
14401;ANATOLIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;;
14402;ANATOLIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;;
@ -27423,11 +27289,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1B120;KATAKANA LETTER ARCHAIC YI;Lo;0;L;;;;;N;;;;;
1B121;KATAKANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;;
1B122;KATAKANA LETTER ARCHAIC WU;Lo;0;L;;;;;N;;;;;
1B132;HIRAGANA LETTER SMALL KO;Lo;0;L;;;;;N;;;;;
1B150;HIRAGANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;;
1B151;HIRAGANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;;
1B152;HIRAGANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;;
1B155;KATAKANA LETTER SMALL KO;Lo;0;L;;;;;N;;;;;
1B164;KATAKANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;;
1B165;KATAKANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;;
1B166;KATAKANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;;
@ -28709,26 +28573,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;;
1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;;
1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;;
1D2C0;KAKTOVIK NUMERAL ZERO;No;0;L;;;;0;N;;;;;
1D2C1;KAKTOVIK NUMERAL ONE;No;0;L;;;;1;N;;;;;
1D2C2;KAKTOVIK NUMERAL TWO;No;0;L;;;;2;N;;;;;
1D2C3;KAKTOVIK NUMERAL THREE;No;0;L;;;;3;N;;;;;
1D2C4;KAKTOVIK NUMERAL FOUR;No;0;L;;;;4;N;;;;;
1D2C5;KAKTOVIK NUMERAL FIVE;No;0;L;;;;5;N;;;;;
1D2C6;KAKTOVIK NUMERAL SIX;No;0;L;;;;6;N;;;;;
1D2C7;KAKTOVIK NUMERAL SEVEN;No;0;L;;;;7;N;;;;;
1D2C8;KAKTOVIK NUMERAL EIGHT;No;0;L;;;;8;N;;;;;
1D2C9;KAKTOVIK NUMERAL NINE;No;0;L;;;;9;N;;;;;
1D2CA;KAKTOVIK NUMERAL TEN;No;0;L;;;;10;N;;;;;
1D2CB;KAKTOVIK NUMERAL ELEVEN;No;0;L;;;;11;N;;;;;
1D2CC;KAKTOVIK NUMERAL TWELVE;No;0;L;;;;12;N;;;;;
1D2CD;KAKTOVIK NUMERAL THIRTEEN;No;0;L;;;;13;N;;;;;
1D2CE;KAKTOVIK NUMERAL FOURTEEN;No;0;L;;;;14;N;;;;;
1D2CF;KAKTOVIK NUMERAL FIFTEEN;No;0;L;;;;15;N;;;;;
1D2D0;KAKTOVIK NUMERAL SIXTEEN;No;0;L;;;;16;N;;;;;
1D2D1;KAKTOVIK NUMERAL SEVENTEEN;No;0;L;;;;17;N;;;;;
1D2D2;KAKTOVIK NUMERAL EIGHTEEN;No;0;L;;;;18;N;;;;;
1D2D3;KAKTOVIK NUMERAL NINETEEN;No;0;L;;;;19;N;;;;;
1D2E0;MAYAN NUMERAL ZERO;No;0;L;;;;0;N;;;;;
1D2E1;MAYAN NUMERAL ONE;No;0;L;;;;1;N;;;;;
1D2E2;MAYAN NUMERAL TWO;No;0;L;;;;2;N;;;;;
@ -30560,12 +30404,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1DF1C;LATIN SMALL LETTER TESH DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
1DF1D;LATIN SMALL LETTER C WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
1DF1E;LATIN SMALL LETTER S WITH CURL;Ll;0;L;;;;;N;;;;;
1DF25;LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
1DF26;LATIN SMALL LETTER L WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
1DF27;LATIN SMALL LETTER N WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
1DF28;LATIN SMALL LETTER R WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
1DF29;LATIN SMALL LETTER S WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
1DF2A;LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
1E000;COMBINING GLAGOLITIC LETTER AZU;Mn;230;NSM;;;;;N;;;;;
1E001;COMBINING GLAGOLITIC LETTER BUKY;Mn;230;NSM;;;;;N;;;;;
1E002;COMBINING GLAGOLITIC LETTER VEDE;Mn;230;NSM;;;;;N;;;;;
@ -30604,69 +30442,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1E028;COMBINING GLAGOLITIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;;
1E029;COMBINING GLAGOLITIC LETTER IOTATED BIG YUS;Mn;230;NSM;;;;;N;;;;;
1E02A;COMBINING GLAGOLITIC LETTER FITA;Mn;230;NSM;;;;;N;;;;;
1E030;MODIFIER LETTER CYRILLIC SMALL A;Lm;0;L;<super> 0430;;;;N;;;;;
1E031;MODIFIER LETTER CYRILLIC SMALL BE;Lm;0;L;<super> 0431;;;;N;;;;;
1E032;MODIFIER LETTER CYRILLIC SMALL VE;Lm;0;L;<super> 0432;;;;N;;;;;
1E033;MODIFIER LETTER CYRILLIC SMALL GHE;Lm;0;L;<super> 0433;;;;N;;;;;
1E034;MODIFIER LETTER CYRILLIC SMALL DE;Lm;0;L;<super> 0434;;;;N;;;;;
1E035;MODIFIER LETTER CYRILLIC SMALL IE;Lm;0;L;<super> 0435;;;;N;;;;;
1E036;MODIFIER LETTER CYRILLIC SMALL ZHE;Lm;0;L;<super> 0436;;;;N;;;;;
1E037;MODIFIER LETTER CYRILLIC SMALL ZE;Lm;0;L;<super> 0437;;;;N;;;;;
1E038;MODIFIER LETTER CYRILLIC SMALL I;Lm;0;L;<super> 0438;;;;N;;;;;
1E039;MODIFIER LETTER CYRILLIC SMALL KA;Lm;0;L;<super> 043A;;;;N;;;;;
1E03A;MODIFIER LETTER CYRILLIC SMALL EL;Lm;0;L;<super> 043B;;;;N;;;;;
1E03B;MODIFIER LETTER CYRILLIC SMALL EM;Lm;0;L;<super> 043C;;;;N;;;;;
1E03C;MODIFIER LETTER CYRILLIC SMALL O;Lm;0;L;<super> 043E;;;;N;;;;;
1E03D;MODIFIER LETTER CYRILLIC SMALL PE;Lm;0;L;<super> 043F;;;;N;;;;;
1E03E;MODIFIER LETTER CYRILLIC SMALL ER;Lm;0;L;<super> 0440;;;;N;;;;;
1E03F;MODIFIER LETTER CYRILLIC SMALL ES;Lm;0;L;<super> 0441;;;;N;;;;;
1E040;MODIFIER LETTER CYRILLIC SMALL TE;Lm;0;L;<super> 0442;;;;N;;;;;
1E041;MODIFIER LETTER CYRILLIC SMALL U;Lm;0;L;<super> 0443;;;;N;;;;;
1E042;MODIFIER LETTER CYRILLIC SMALL EF;Lm;0;L;<super> 0444;;;;N;;;;;
1E043;MODIFIER LETTER CYRILLIC SMALL HA;Lm;0;L;<super> 0445;;;;N;;;;;
1E044;MODIFIER LETTER CYRILLIC SMALL TSE;Lm;0;L;<super> 0446;;;;N;;;;;
1E045;MODIFIER LETTER CYRILLIC SMALL CHE;Lm;0;L;<super> 0447;;;;N;;;;;
1E046;MODIFIER LETTER CYRILLIC SMALL SHA;Lm;0;L;<super> 0448;;;;N;;;;;
1E047;MODIFIER LETTER CYRILLIC SMALL YERU;Lm;0;L;<super> 044B;;;;N;;;;;
1E048;MODIFIER LETTER CYRILLIC SMALL E;Lm;0;L;<super> 044D;;;;N;;;;;
1E049;MODIFIER LETTER CYRILLIC SMALL YU;Lm;0;L;<super> 044E;;;;N;;;;;
1E04A;MODIFIER LETTER CYRILLIC SMALL DZZE;Lm;0;L;<super> A689;;;;N;;;;;
1E04B;MODIFIER LETTER CYRILLIC SMALL SCHWA;Lm;0;L;<super> 04D9;;;;N;;;;;
1E04C;MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I;Lm;0;L;<super> 0456;;;;N;;;;;
1E04D;MODIFIER LETTER CYRILLIC SMALL JE;Lm;0;L;<super> 0458;;;;N;;;;;
1E04E;MODIFIER LETTER CYRILLIC SMALL BARRED O;Lm;0;L;<super> 04E9;;;;N;;;;;
1E04F;MODIFIER LETTER CYRILLIC SMALL STRAIGHT U;Lm;0;L;<super> 04AF;;;;N;;;;;
1E050;MODIFIER LETTER CYRILLIC SMALL PALOCHKA;Lm;0;L;<super> 04CF;;;;N;;;;;
1E051;CYRILLIC SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0430;;;;N;;;;;
1E052;CYRILLIC SUBSCRIPT SMALL LETTER BE;Lm;0;L;<sub> 0431;;;;N;;;;;
1E053;CYRILLIC SUBSCRIPT SMALL LETTER VE;Lm;0;L;<sub> 0432;;;;N;;;;;
1E054;CYRILLIC SUBSCRIPT SMALL LETTER GHE;Lm;0;L;<sub> 0433;;;;N;;;;;
1E055;CYRILLIC SUBSCRIPT SMALL LETTER DE;Lm;0;L;<sub> 0434;;;;N;;;;;
1E056;CYRILLIC SUBSCRIPT SMALL LETTER IE;Lm;0;L;<sub> 0435;;;;N;;;;;
1E057;CYRILLIC SUBSCRIPT SMALL LETTER ZHE;Lm;0;L;<sub> 0436;;;;N;;;;;
1E058;CYRILLIC SUBSCRIPT SMALL LETTER ZE;Lm;0;L;<sub> 0437;;;;N;;;;;
1E059;CYRILLIC SUBSCRIPT SMALL LETTER I;Lm;0;L;<sub> 0438;;;;N;;;;;
1E05A;CYRILLIC SUBSCRIPT SMALL LETTER KA;Lm;0;L;<sub> 043A;;;;N;;;;;
1E05B;CYRILLIC SUBSCRIPT SMALL LETTER EL;Lm;0;L;<sub> 043B;;;;N;;;;;
1E05C;CYRILLIC SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 043E;;;;N;;;;;
1E05D;CYRILLIC SUBSCRIPT SMALL LETTER PE;Lm;0;L;<sub> 043F;;;;N;;;;;
1E05E;CYRILLIC SUBSCRIPT SMALL LETTER ES;Lm;0;L;<sub> 0441;;;;N;;;;;
1E05F;CYRILLIC SUBSCRIPT SMALL LETTER U;Lm;0;L;<sub> 0443;;;;N;;;;;
1E060;CYRILLIC SUBSCRIPT SMALL LETTER EF;Lm;0;L;<sub> 0444;;;;N;;;;;
1E061;CYRILLIC SUBSCRIPT SMALL LETTER HA;Lm;0;L;<sub> 0445;;;;N;;;;;
1E062;CYRILLIC SUBSCRIPT SMALL LETTER TSE;Lm;0;L;<sub> 0446;;;;N;;;;;
1E063;CYRILLIC SUBSCRIPT SMALL LETTER CHE;Lm;0;L;<sub> 0447;;;;N;;;;;
1E064;CYRILLIC SUBSCRIPT SMALL LETTER SHA;Lm;0;L;<sub> 0448;;;;N;;;;;
1E065;CYRILLIC SUBSCRIPT SMALL LETTER HARD SIGN;Lm;0;L;<sub> 044A;;;;N;;;;;
1E066;CYRILLIC SUBSCRIPT SMALL LETTER YERU;Lm;0;L;<sub> 044B;;;;N;;;;;
1E067;CYRILLIC SUBSCRIPT SMALL LETTER GHE WITH UPTURN;Lm;0;L;<sub> 0491;;;;N;;;;;
1E068;CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Lm;0;L;<sub> 0456;;;;N;;;;;
1E069;CYRILLIC SUBSCRIPT SMALL LETTER DZE;Lm;0;L;<sub> 0455;;;;N;;;;;
1E06A;CYRILLIC SUBSCRIPT SMALL LETTER DZHE;Lm;0;L;<sub> 045F;;;;N;;;;;
1E06B;MODIFIER LETTER CYRILLIC SMALL ES WITH DESCENDER;Lm;0;L;<super> 04AB;;;;N;;;;;
1E06C;MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER;Lm;0;L;<super> A651;;;;N;;;;;
1E06D;MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE;Lm;0;L;<super> 04B1;;;;N;;;;;
1E08F;COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Mn;230;NSM;;;;;N;;;;;
1E100;NYIAKENG PUACHUE HMONG LETTER MA;Lo;0;L;;;;;N;;;;;
1E101;NYIAKENG PUACHUE HMONG LETTER TSA;Lo;0;L;;;;;N;;;;;
1E102;NYIAKENG PUACHUE HMONG LETTER NTA;Lo;0;L;;;;;N;;;;;
@ -30828,48 +30603,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1E2F8;WANCHO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
1E2F9;WANCHO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
1E2FF;WANCHO NGUN SIGN;Sc;0;ET;;;;;N;;;;;
1E4D0;NAG MUNDARI LETTER O;Lo;0;L;;;;;N;;;;;
1E4D1;NAG MUNDARI LETTER OP;Lo;0;L;;;;;N;;;;;
1E4D2;NAG MUNDARI LETTER OL;Lo;0;L;;;;;N;;;;;
1E4D3;NAG MUNDARI LETTER OY;Lo;0;L;;;;;N;;;;;
1E4D4;NAG MUNDARI LETTER ONG;Lo;0;L;;;;;N;;;;;
1E4D5;NAG MUNDARI LETTER A;Lo;0;L;;;;;N;;;;;
1E4D6;NAG MUNDARI LETTER AJ;Lo;0;L;;;;;N;;;;;
1E4D7;NAG MUNDARI LETTER AB;Lo;0;L;;;;;N;;;;;
1E4D8;NAG MUNDARI LETTER ANY;Lo;0;L;;;;;N;;;;;
1E4D9;NAG MUNDARI LETTER AH;Lo;0;L;;;;;N;;;;;
1E4DA;NAG MUNDARI LETTER I;Lo;0;L;;;;;N;;;;;
1E4DB;NAG MUNDARI LETTER IS;Lo;0;L;;;;;N;;;;;
1E4DC;NAG MUNDARI LETTER IDD;Lo;0;L;;;;;N;;;;;
1E4DD;NAG MUNDARI LETTER IT;Lo;0;L;;;;;N;;;;;
1E4DE;NAG MUNDARI LETTER IH;Lo;0;L;;;;;N;;;;;
1E4DF;NAG MUNDARI LETTER U;Lo;0;L;;;;;N;;;;;
1E4E0;NAG MUNDARI LETTER UC;Lo;0;L;;;;;N;;;;;
1E4E1;NAG MUNDARI LETTER UD;Lo;0;L;;;;;N;;;;;
1E4E2;NAG MUNDARI LETTER UK;Lo;0;L;;;;;N;;;;;
1E4E3;NAG MUNDARI LETTER UR;Lo;0;L;;;;;N;;;;;
1E4E4;NAG MUNDARI LETTER E;Lo;0;L;;;;;N;;;;;
1E4E5;NAG MUNDARI LETTER ENN;Lo;0;L;;;;;N;;;;;
1E4E6;NAG MUNDARI LETTER EG;Lo;0;L;;;;;N;;;;;
1E4E7;NAG MUNDARI LETTER EM;Lo;0;L;;;;;N;;;;;
1E4E8;NAG MUNDARI LETTER EN;Lo;0;L;;;;;N;;;;;
1E4E9;NAG MUNDARI LETTER ETT;Lo;0;L;;;;;N;;;;;
1E4EA;NAG MUNDARI LETTER ELL;Lo;0;L;;;;;N;;;;;
1E4EB;NAG MUNDARI SIGN OJOD;Lm;0;L;;;;;N;;;;;
1E4EC;NAG MUNDARI SIGN MUHOR;Mn;232;NSM;;;;;N;;;;;
1E4ED;NAG MUNDARI SIGN TOYOR;Mn;232;NSM;;;;;N;;;;;
1E4EE;NAG MUNDARI SIGN IKIR;Mn;220;NSM;;;;;N;;;;;
1E4EF;NAG MUNDARI SIGN SUTUH;Mn;230;NSM;;;;;N;;;;;
1E4F0;NAG MUNDARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
1E4F1;NAG MUNDARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
1E4F2;NAG MUNDARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
1E4F3;NAG MUNDARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
1E4F4;NAG MUNDARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
1E4F5;NAG MUNDARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
1E4F6;NAG MUNDARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
1E4F7;NAG MUNDARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
1E4F8;NAG MUNDARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
1E4F9;NAG MUNDARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
1E7E0;ETHIOPIC SYLLABLE HHYA;Lo;0;L;;;;;N;;;;;
1E7E1;ETHIOPIC SYLLABLE HHYU;Lo;0;L;;;;;N;;;;;
1E7E2;ETHIOPIC SYLLABLE HHYI;Lo;0;L;;;;;N;;;;;
@ -32945,7 +32678,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1F6D5;HINDU TEMPLE;So;0;ON;;;;;N;;;;;
1F6D6;HUT;So;0;ON;;;;;N;;;;;
1F6D7;ELEVATOR;So;0;ON;;;;;N;;;;;
1F6DC;WIRELESS;So;0;ON;;;;;N;;;;;
1F6DD;PLAYGROUND SLIDE;So;0;ON;;;;;N;;;;;
1F6DE;WHEEL;So;0;ON;;;;;N;;;;;
1F6DF;RING BUOY;So;0;ON;;;;;N;;;;;
@ -33091,14 +32823,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1F771;ALCHEMICAL SYMBOL FOR MONTH;So;0;ON;;;;;N;;;;;
1F772;ALCHEMICAL SYMBOL FOR HALF DRAM;So;0;ON;;;;;N;;;;;
1F773;ALCHEMICAL SYMBOL FOR HALF OUNCE;So;0;ON;;;;;N;;;;;
1F774;LOT OF FORTUNE;So;0;ON;;;;;N;;;;;
1F775;OCCULTATION;So;0;ON;;;;;N;;;;;
1F776;LUNAR ECLIPSE;So;0;ON;;;;;N;;;;;
1F77B;HAUMEA;So;0;ON;;;;;N;;;;;
1F77C;MAKEMAKE;So;0;ON;;;;;N;;;;;
1F77D;GONGGONG;So;0;ON;;;;;N;;;;;
1F77E;QUAOAR;So;0;ON;;;;;N;;;;;
1F77F;ORCUS;So;0;ON;;;;;N;;;;;
1F780;BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
1F781;BLACK UP-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
1F782;BLACK RIGHT-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
@ -33188,7 +32912,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1F7D6;NEGATIVE CIRCLED TRIANGLE;So;0;ON;;;;;N;;;;;
1F7D7;CIRCLED SQUARE;So;0;ON;;;;;N;;;;;
1F7D8;NEGATIVE CIRCLED SQUARE;So;0;ON;;;;;N;;;;;
1F7D9;NINE POINTED WHITE STAR;So;0;ON;;;;;N;;;;;
1F7E0;LARGE ORANGE CIRCLE;So;0;ON;;;;;N;;;;;
1F7E1;LARGE YELLOW CIRCLE;So;0;ON;;;;;N;;;;;
1F7E2;LARGE GREEN CIRCLE;So;0;ON;;;;;N;;;;;
@ -33711,9 +33434,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FA72;BRIEFS;So;0;ON;;;;;N;;;;;
1FA73;SHORTS;So;0;ON;;;;;N;;;;;
1FA74;THONG SANDAL;So;0;ON;;;;;N;;;;;
1FA75;LIGHT BLUE HEART;So;0;ON;;;;;N;;;;;
1FA76;GREY HEART;So;0;ON;;;;;N;;;;;
1FA77;PINK HEART;So;0;ON;;;;;N;;;;;
1FA78;DROP OF BLOOD;So;0;ON;;;;;N;;;;;
1FA79;ADHESIVE BANDAGE;So;0;ON;;;;;N;;;;;
1FA7A;STETHOSCOPE;So;0;ON;;;;;N;;;;;
@ -33726,8 +33446,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FA84;MAGIC WAND;So;0;ON;;;;;N;;;;;
1FA85;PINATA;So;0;ON;;;;;N;;;;;
1FA86;NESTING DOLLS;So;0;ON;;;;;N;;;;;
1FA87;MARACAS;So;0;ON;;;;;N;;;;;
1FA88;FLUTE;So;0;ON;;;;;N;;;;;
1FA90;RINGED PLANET;So;0;ON;;;;;N;;;;;
1FA91;CHAIR;So;0;ON;;;;;N;;;;;
1FA92;RAZOR;So;0;ON;;;;;N;;;;;
@ -33757,9 +33475,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAAA;IDENTIFICATION CARD;So;0;ON;;;;;N;;;;;
1FAAB;LOW BATTERY;So;0;ON;;;;;N;;;;;
1FAAC;HAMSA;So;0;ON;;;;;N;;;;;
1FAAD;FOLDING HAND FAN;So;0;ON;;;;;N;;;;;
1FAAE;HAIR PICK;So;0;ON;;;;;N;;;;;
1FAAF;KHANDA;So;0;ON;;;;;N;;;;;
1FAB0;FLY;So;0;ON;;;;;N;;;;;
1FAB1;WORM;So;0;ON;;;;;N;;;;;
1FAB2;BEETLE;So;0;ON;;;;;N;;;;;
@ -33771,18 +33486,12 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAB8;CORAL;So;0;ON;;;;;N;;;;;
1FAB9;EMPTY NEST;So;0;ON;;;;;N;;;;;
1FABA;NEST WITH EGGS;So;0;ON;;;;;N;;;;;
1FABB;HYACINTH;So;0;ON;;;;;N;;;;;
1FABC;JELLYFISH;So;0;ON;;;;;N;;;;;
1FABD;WING;So;0;ON;;;;;N;;;;;
1FABF;GOOSE;So;0;ON;;;;;N;;;;;
1FAC0;ANATOMICAL HEART;So;0;ON;;;;;N;;;;;
1FAC1;LUNGS;So;0;ON;;;;;N;;;;;
1FAC2;PEOPLE HUGGING;So;0;ON;;;;;N;;;;;
1FAC3;PREGNANT MAN;So;0;ON;;;;;N;;;;;
1FAC4;PREGNANT PERSON;So;0;ON;;;;;N;;;;;
1FAC5;PERSON WITH CROWN;So;0;ON;;;;;N;;;;;
1FACE;MOOSE;So;0;ON;;;;;N;;;;;
1FACF;DONKEY;So;0;ON;;;;;N;;;;;
1FAD0;BLUEBERRIES;So;0;ON;;;;;N;;;;;
1FAD1;BELL PEPPER;So;0;ON;;;;;N;;;;;
1FAD2;OLIVE;So;0;ON;;;;;N;;;;;
@ -33793,8 +33502,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAD7;POURING LIQUID;So;0;ON;;;;;N;;;;;
1FAD8;BEANS;So;0;ON;;;;;N;;;;;
1FAD9;JAR;So;0;ON;;;;;N;;;;;
1FADA;GINGER ROOT;So;0;ON;;;;;N;;;;;
1FADB;PEA POD;So;0;ON;;;;;N;;;;;
1FAE0;MELTING FACE;So;0;ON;;;;;N;;;;;
1FAE1;SALUTING FACE;So;0;ON;;;;;N;;;;;
1FAE2;FACE WITH OPEN EYES AND HAND OVER MOUTH;So;0;ON;;;;;N;;;;;
@ -33803,7 +33510,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAE5;DOTTED LINE FACE;So;0;ON;;;;;N;;;;;
1FAE6;BITING LIP;So;0;ON;;;;;N;;;;;
1FAE7;BUBBLES;So;0;ON;;;;;N;;;;;
1FAE8;SHAKING FACE;So;0;ON;;;;;N;;;;;
1FAF0;HAND WITH INDEX FINGER AND THUMB CROSSED;So;0;ON;;;;;N;;;;;
1FAF1;RIGHTWARDS HAND;So;0;ON;;;;;N;;;;;
1FAF2;LEFTWARDS HAND;So;0;ON;;;;;N;;;;;
@ -33811,8 +33517,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAF4;PALM UP HAND;So;0;ON;;;;;N;;;;;
1FAF5;INDEX POINTING AT THE VIEWER;So;0;ON;;;;;N;;;;;
1FAF6;HEART HANDS;So;0;ON;;;;;N;;;;;
1FAF7;LEFTWARDS PUSHING HAND;So;0;ON;;;;;N;;;;;
1FAF8;RIGHTWARDS PUSHING HAND;So;0;ON;;;;;N;;;;;
1FB00;BLOCK SEXTANT-1;So;0;ON;;;;;N;;;;;
1FB01;BLOCK SEXTANT-2;So;0;ON;;;;;N;;;;;
1FB02;BLOCK SEXTANT-12;So;0;ON;;;;;N;;;;;
@ -34028,7 +33732,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
2A6DF;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
2A700;<CJK Ideograph Extension C, First>;Lo;0;L;;;;;N;;;;;
2B739;<CJK Ideograph Extension C, Last>;Lo;0;L;;;;;N;;;;;
2B738;<CJK Ideograph Extension C, Last>;Lo;0;L;;;;;N;;;;;
2B740;<CJK Ideograph Extension D, First>;Lo;0;L;;;;;N;;;;;
2B81D;<CJK Ideograph Extension D, Last>;Lo;0;L;;;;;N;;;;;
2B820;<CJK Ideograph Extension E, First>;Lo;0;L;;;;;N;;;;;
@ -34579,8 +34283,6 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;
30000;<CJK Ideograph Extension G, First>;Lo;0;L;;;;;N;;;;;
3134A;<CJK Ideograph Extension G, Last>;Lo;0;L;;;;;N;;;;;
31350;<CJK Ideograph Extension H, First>;Lo;0;L;;;;;N;;;;;
323AF;<CJK Ideograph Extension H, Last>;Lo;0;L;;;;;N;;;;;
E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;;
E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;;
E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;;

View file

@ -1,6 +1,6 @@
#!/usr/bin/awk -f
## Copyright (C) 2015-2023 Free Software Foundation, Inc.
## Copyright (C) 2015-2021 Free Software Foundation, Inc.
## Author: Glenn Morris <rgm@gnu.org>
## Maintainer: emacs-devel@gnu.org
@ -23,7 +23,7 @@
### Commentary:
## This script takes as input Unicode's Blocks.txt
## (https://www.unicode.org/Public/UNIDATA/Blocks.txt)
## (http://www.unicode.org/Public/UNIDATA/Blocks.txt)
## and produces output for Emacs's lisp/international/charscript.el.
## It lumps together all the blocks belonging to the same language.
@ -98,7 +98,7 @@ function name2alias(name , w, w2) {
else if (name ~ /arabic/) return "arabic"
else if (name ~ /^greek/) return "greek"
else if (name ~ /^coptic/) return "coptic"
else if (name ~ /cuneiform number/) return "cuneiform"
else if (name ~ /cuneiform number/) return "cuneiform-numbers-and-punctuation"
else if (name ~ /cuneiform/) return "cuneiform"
else if (name ~ /mathematical alphanumeric symbol/) return "mathematical"
else if (name ~ /punctuation|mathematical|arrows|currency|superscript|small form variants|geometric|dingbats|enclosed|alchemical|pictograph|emoticon|transport/) return "symbol"
@ -113,11 +113,9 @@ function name2alias(name , w, w2) {
else if (name ~/^(specials|tags)$/) return 0
else if (name ~ /linear b/) return "linear-b"
else if (name ~ /aramaic/) return "aramaic"
else if (name ~ /rumi num/) return "arabic"
else if (name ~ /rumi num/) return "rumi-number"
else if (name ~ /duployan|shorthand/) return "duployan-shorthand"
else if (name ~ /sutton signwriting/) return "sutton-sign-writing"
else if (name ~ /sinhala archaic number/) return "sinhala"
else if (name ~ /tangut components/) return "tangut"
sub(/^small /, "", name)
sub(/ (extended|extensions*|supplement).*/, "", name)
@ -223,16 +221,24 @@ FILENAME ~ "emoji-data.txt" && /^[0-9A-F].*; Emoji_Presentation / {
}
END {
## These codepoints have Emoji_Presentation = No, but they are
## used in emoji-sequences.txt and emoji-zwj-sequences.txt (with a
## Variation Selector), so force them into the emoji script so
## they will get composed correctly. FIXME: delete this when we
## can change the font used for a codepoint based on whether it's
## followed by a VS (usually VS-16)
idx = 0
## This is here so that font_range can choose Emoji presentation
## for the preceding codepoint when it encounters a VS-16
## (U+FE0F). See also font_range and the comments in composite.el
## around the setup of `composition-function-table' for
## U+FE00..U+FE0E.
## It originally covered the whole FE00-FE0F range, but that
## turned out to be a mistake.
override_start[idx] = "FE0F"
override_end[idx] = "FE0F"
override_start[idx] = "1F3CB"
override_end[idx] = "1F3CC"
idx++
override_start[idx] = "1F3F3"
override_end[idx] = "1F3F4"
idx++
override_start[idx] = "1F441"
override_end[idx] = "1F441"
idx++
override_start[idx] = "1F575"
override_end[idx] = "1F575"
for (k in override_start)
{
@ -244,7 +250,7 @@ END {
}
print ";;; charscript.el --- character script table -*- lexical-binding:t -*-"
print ";;; Automatically generated from admin/unidata/{Blocks,emoji-data}.txt"
print ";;; Automatically generated from admin/unidata/Blocks.txt"
print "(let (script-list)"
print " (dolist (elt '("

File diff suppressed because it is too large Load diff

View file

@ -13,7 +13,7 @@
<title>Unicode Terms of Use</title>
<link rel="stylesheet" type="text/css"
href="https://www.unicode.org/webscripts/standard_styles.css">
href="http://www.unicode.org/webscripts/standard_styles.css">
<style type="text/css">
pre {
@ -32,8 +32,8 @@
<td colspan="2">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="icon" style="width:38px; height:35px"><a href="https://www.unicode.org/"><img border="0"
src="https://www.unicode.org/webscripts/logo60s2.gif" align="middle" alt="[Unicode]" width="34" height="33"></a></td>
<td class="icon" style="width:38px; height:35px"><a href="http://www.unicode.org/"><img border="0"
src="http://www.unicode.org/webscripts/logo60s2.gif" align="middle" alt="[Unicode]" width="34" height="33"></a></td>
<td class="icon" style="vertical-align:middle;"> &nbsp;<a class="bar"
href="https://www.unicode.org/copyright.html"><font size="3">Terms of Use</font></a></td>
<td class="bar"><a href="https://www.unicode.org/main.html" class="bar">Tech Site</a>
@ -82,7 +82,7 @@
</tr>
<tr>
<td valign="top" class="navColCell">
<a href="https://www.unicode.org/license.txt">Unicode Data Files and Software License</a></td>
<a href="https://www.unicode.org/license.html">Unicode Data Files and Software License</a></td>
</tr>
<tr>
<td class="navColTitle">Related Links</td>
@ -112,13 +112,13 @@ <h1>Unicode® Copyright and Terms of Use</h1>
<p>For the general privacy policy governing access to this site, see
the&nbsp;
<a href="https://www.unicode.org/policies/privacy_policy.html">
<a href="http://www.unicode.org/policies/privacy_policy.html">
Unicode Privacy Policy</a>.</p>
<ol type="A">
<li><u><a name="1"></a>Unicode Copyright</u>
<ol>
<li>Copyright © 1991-2022 Unicode, Inc. All rights reserved.</li>
<li>Copyright © 1991-2021 Unicode, Inc. All rights reserved.</li>
</ol>
</li>
@ -153,12 +153,12 @@ <h1>Unicode® Copyright and Terms of Use</h1>
herein.</li>
<li>Further specifications of rights and restrictions pertaining
to the use of the Unicode DATA FILES and SOFTWARE can be found in the
<a href="https://www.unicode.org/license.txt">Unicode Data Files and Software License</a>.</li>
<a href="https://www.unicode.org/license.html">Unicode Data Files and Software License</a>.</li>
<li>Each version of the Unicode Standard has further
specifications of rights and restrictions of use. For the book
editions (Unicode 5.0 and earlier), these are found on the back
of the
<a href="https://www.unicode.org/versions/Unicode5.0.0/Title.pdf">title page</a>.</li>
<a href="http://www.unicode.org/versions/Unicode5.0.0/Title.pdf">title page</a>.</li>
<li>
The Unicode PDF <a href="https://www.unicode.org/charts/">online code charts</a> carry specific restrictions. Those restrictions are incorporated as the
first page of each PDF code chart.</li>
@ -224,7 +224,7 @@ <h1>Unicode® Copyright and Terms of Use</h1>
<li><u><a name="5"></a>Trademarks &amp; Logos</u>
<ol>
<li>The Unicode Word Mark and the Unicode Logo are trademarks of Unicode, Inc. “The Unicode Consortium” and “Unicode, Inc.” are trade names of Unicode, Inc. Use of the information and materials found on this website indicates your acknowledgement of Unicode, Inc.s exclusive worldwide rights in the Unicode Word Mark, the Unicode Logo, and the Unicode trade names.</li>
<li><a href="https://www.unicode.org/policies/logo_policy.html">The Unicode Consortium Name and Trademark Usage Policy</a> (“Trademark Policy”) are incorporated herein by reference and you agree to abide by the provisions of the Trademark Policy, which may be changed from time to time in the sole discretion of Unicode, Inc.</li>
<li><a href="http://www.unicode.org/policies/logo_policy.html">The Unicode Consortium Name and Trademark Usage Policy</a> (“Trademark Policy”) are incorporated herein by reference and you agree to abide by the provisions of the Trademark Policy, which may be changed from time to time in the sole discretion of Unicode, Inc.</li>
<li>All third party trademarks referenced herein are the property of their respective owners.</li>
</ol>
</li>
@ -270,15 +270,15 @@ <h1>Unicode® Copyright and Terms of Use</h1>
<center>
<table cellspacing="0" cellpadding="0" border="0" id="table2">
<tr>
<td><a href="https://www.unicode.org/copyright.html">
<img src="https://www.unicode.org/img/hb_notice.gif"
<td><a href="http://www.unicode.org/copyright.html">
<img src="http://www.unicode.org/img/hb_notice.gif"
border="0" alt="Access to Copyright and terms of use"
width="216" height="50"></a></td>
</tr>
</table>
<script language="Javascript" type="text/javascript"
src="https://www.unicode.org/webscripts/lastModified.js">
src="http://www.unicode.org/webscripts/lastModified.js">
</script>
</center>

View file

@ -1,13 +1,13 @@
# emoji-data.txt
# Date: 2022-08-02, 00:26:10 GMT
# © 2022 Unicode®, Inc.
# emoji-data-14.0.0.txt
# Date: 2021-08-26, 17:22:22 GMT
# © 2021 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
#
# Emoji Data for UTS #51
# Used with Emoji Version 15.0 and subsequent minor revisions (if any)
# Used with Emoji Version 14.0 and subsequent minor revisions (if any)
#
# For documentation and usage, see https://www.unicode.org/reports/tr51
# For documentation and usage, see http://www.unicode.org/reports/tr51
#
# Format:
# <codepoint(s)> ; <property> # <comments>
@ -20,6 +20,7 @@
# ================================================
# All omitted code points have Emoji=No
# @missing: 0000..10FFFF ; Emoji ; No
0023 ; Emoji # E0.0 [1] (#) hash sign
002A ; Emoji # E0.0 [1] (*) asterisk
@ -340,7 +341,6 @@
1F6D1..1F6D2 ; Emoji # E3.0 [2] (🛑..🛒) stop sign..shopping cart
1F6D5 ; Emoji # E12.0 [1] (🛕) hindu temple
1F6D6..1F6D7 ; Emoji # E13.0 [2] (🛖..🛗) hut..elevator
1F6DC ; Emoji # E15.0 [1] (🛜) wireless
1F6DD..1F6DF ; Emoji # E14.0 [3] (🛝..🛟) playground slide..ring buoy
1F6E0..1F6E5 ; Emoji # E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat
1F6E9 ; Emoji # E0.7 [1] (🛩️) small airplane
@ -401,36 +401,28 @@
1F9E7..1F9FF ; Emoji # E11.0 [25] (🧧..🧿) red envelope..nazar amulet
1FA70..1FA73 ; Emoji # E12.0 [4] (🩰..🩳) ballet shoes..shorts
1FA74 ; Emoji # E13.0 [1] (🩴) thong sandal
1FA75..1FA77 ; Emoji # E15.0 [3] (🩵..🩷) light blue heart..pink heart
1FA78..1FA7A ; Emoji # E12.0 [3] (🩸..🩺) drop of blood..stethoscope
1FA7B..1FA7C ; Emoji # E14.0 [2] (🩻..🩼) x-ray..crutch
1FA80..1FA82 ; Emoji # E12.0 [3] (🪀..🪂) yo-yo..parachute
1FA83..1FA86 ; Emoji # E13.0 [4] (🪃..🪆) boomerang..nesting dolls
1FA87..1FA88 ; Emoji # E15.0 [2] (🪇..🪈) maracas..flute
1FA90..1FA95 ; Emoji # E12.0 [6] (🪐..🪕) ringed planet..banjo
1FA96..1FAA8 ; Emoji # E13.0 [19] (🪖..🪨) military helmet..rock
1FAA9..1FAAC ; Emoji # E14.0 [4] (🪩..🪬) mirror ball..hamsa
1FAAD..1FAAF ; Emoji # E15.0 [3] (🪭..🪯) folding hand fan..khanda
1FAB0..1FAB6 ; Emoji # E13.0 [7] (🪰..🪶) fly..feather
1FAB7..1FABA ; Emoji # E14.0 [4] (🪷..🪺) lotus..nest with eggs
1FABB..1FABD ; Emoji # E15.0 [3] (🪻..🪽) hyacinth..wing
1FABF ; Emoji # E15.0 [1] (🪿) goose
1FAC0..1FAC2 ; Emoji # E13.0 [3] (🫀..🫂) anatomical heart..people hugging
1FAC3..1FAC5 ; Emoji # E14.0 [3] (🫃..🫅) pregnant man..person with crown
1FACE..1FACF ; Emoji # E15.0 [2] (🫎..🫏) moose..donkey
1FAD0..1FAD6 ; Emoji # E13.0 [7] (🫐..🫖) blueberries..teapot
1FAD7..1FAD9 ; Emoji # E14.0 [3] (🫗..🫙) pouring liquid..jar
1FADA..1FADB ; Emoji # E15.0 [2] (🫚..🫛) ginger root..pea pod
1FAE0..1FAE7 ; Emoji # E14.0 [8] (🫠..🫧) melting face..bubbles
1FAE8 ; Emoji # E15.0 [1] (🫨) shaking face
1FAF0..1FAF6 ; Emoji # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
1FAF7..1FAF8 ; Emoji # E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
# Total elements: 1424
# Total elements: 1404
# ================================================
# All omitted code points have Emoji_Presentation=No
# @missing: 0000..10FFFF ; Emoji_Presentation ; No
231A..231B ; Emoji_Presentation # E0.6 [2] (⌚..⌛) watch..hourglass done
23E9..23EC ; Emoji_Presentation # E0.6 [4] (⏩..⏬) fast-forward button..fast down button
@ -633,7 +625,6 @@
1F6D1..1F6D2 ; Emoji_Presentation # E3.0 [2] (🛑..🛒) stop sign..shopping cart
1F6D5 ; Emoji_Presentation # E12.0 [1] (🛕) hindu temple
1F6D6..1F6D7 ; Emoji_Presentation # E13.0 [2] (🛖..🛗) hut..elevator
1F6DC ; Emoji_Presentation # E15.0 [1] (🛜) wireless
1F6DD..1F6DF ; Emoji_Presentation # E14.0 [3] (🛝..🛟) playground slide..ring buoy
1F6EB..1F6EC ; Emoji_Presentation # E1.0 [2] (🛫..🛬) airplane departure..airplane arrival
1F6F4..1F6F6 ; Emoji_Presentation # E3.0 [3] (🛴..🛶) kick scooter..canoe
@ -690,36 +681,28 @@
1F9E7..1F9FF ; Emoji_Presentation # E11.0 [25] (🧧..🧿) red envelope..nazar amulet
1FA70..1FA73 ; Emoji_Presentation # E12.0 [4] (🩰..🩳) ballet shoes..shorts
1FA74 ; Emoji_Presentation # E13.0 [1] (🩴) thong sandal
1FA75..1FA77 ; Emoji_Presentation # E15.0 [3] (🩵..🩷) light blue heart..pink heart
1FA78..1FA7A ; Emoji_Presentation # E12.0 [3] (🩸..🩺) drop of blood..stethoscope
1FA7B..1FA7C ; Emoji_Presentation # E14.0 [2] (🩻..🩼) x-ray..crutch
1FA80..1FA82 ; Emoji_Presentation # E12.0 [3] (🪀..🪂) yo-yo..parachute
1FA83..1FA86 ; Emoji_Presentation # E13.0 [4] (🪃..🪆) boomerang..nesting dolls
1FA87..1FA88 ; Emoji_Presentation # E15.0 [2] (🪇..🪈) maracas..flute
1FA90..1FA95 ; Emoji_Presentation # E12.0 [6] (🪐..🪕) ringed planet..banjo
1FA96..1FAA8 ; Emoji_Presentation # E13.0 [19] (🪖..🪨) military helmet..rock
1FAA9..1FAAC ; Emoji_Presentation # E14.0 [4] (🪩..🪬) mirror ball..hamsa
1FAAD..1FAAF ; Emoji_Presentation # E15.0 [3] (🪭..🪯) folding hand fan..khanda
1FAB0..1FAB6 ; Emoji_Presentation # E13.0 [7] (🪰..🪶) fly..feather
1FAB7..1FABA ; Emoji_Presentation # E14.0 [4] (🪷..🪺) lotus..nest with eggs
1FABB..1FABD ; Emoji_Presentation # E15.0 [3] (🪻..🪽) hyacinth..wing
1FABF ; Emoji_Presentation # E15.0 [1] (🪿) goose
1FAC0..1FAC2 ; Emoji_Presentation # E13.0 [3] (🫀..🫂) anatomical heart..people hugging
1FAC3..1FAC5 ; Emoji_Presentation # E14.0 [3] (🫃..🫅) pregnant man..person with crown
1FACE..1FACF ; Emoji_Presentation # E15.0 [2] (🫎..🫏) moose..donkey
1FAD0..1FAD6 ; Emoji_Presentation # E13.0 [7] (🫐..🫖) blueberries..teapot
1FAD7..1FAD9 ; Emoji_Presentation # E14.0 [3] (🫗..🫙) pouring liquid..jar
1FADA..1FADB ; Emoji_Presentation # E15.0 [2] (🫚..🫛) ginger root..pea pod
1FAE0..1FAE7 ; Emoji_Presentation # E14.0 [8] (🫠..🫧) melting face..bubbles
1FAE8 ; Emoji_Presentation # E15.0 [1] (🫨) shaking face
1FAF0..1FAF6 ; Emoji_Presentation # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
1FAF7..1FAF8 ; Emoji_Presentation # E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
# Total elements: 1205
# Total elements: 1185
# ================================================
# All omitted code points have Emoji_Modifier=No
# @missing: 0000..10FFFF ; Emoji_Modifier ; No
1F3FB..1F3FF ; Emoji_Modifier # E1.0 [5] (🏻..🏿) light skin tone..dark skin tone
@ -728,6 +711,7 @@
# ================================================
# All omitted code points have Emoji_Modifier_Base=No
# @missing: 0000..10FFFF ; Emoji_Modifier_Base ; No
261D ; Emoji_Modifier_Base # E0.6 [1] (☝️) index pointing up
26F9 ; Emoji_Modifier_Base # E0.7 [1] (⛹️) person bouncing ball
@ -778,13 +762,13 @@
1F9D1..1F9DD ; Emoji_Modifier_Base # E5.0 [13] (🧑..🧝) person..elf
1FAC3..1FAC5 ; Emoji_Modifier_Base # E14.0 [3] (🫃..🫅) pregnant man..person with crown
1FAF0..1FAF6 ; Emoji_Modifier_Base # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
1FAF7..1FAF8 ; Emoji_Modifier_Base # E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
# Total elements: 134
# Total elements: 132
# ================================================
# All omitted code points have Emoji_Component=No
# @missing: 0000..10FFFF ; Emoji_Component ; No
0023 ; Emoji_Component # E0.0 [1] (#) hash sign
002A ; Emoji_Component # E0.0 [1] (*) asterisk
@ -802,6 +786,7 @@ E0020..E007F ; Emoji_Component # E0.0 [96] (󠀠..󠁿) tag space..c
# ================================================
# All omitted code points have Extended_Pictographic=No
# @missing: 0000..10FFFF ; Extended_Pictographic ; No
00A9 ; Extended_Pictographic# E0.6 [1] (©️) copyright
00AE ; Extended_Pictographic# E0.6 [1] (®️) registered
@ -1205,8 +1190,7 @@ E0020..E007F ; Emoji_Component # E0.0 [96] (󠀠..󠁿) tag space..c
1F6D3..1F6D4 ; Extended_Pictographic# E0.0 [2] (🛓..🛔) STUPA..PAGODA
1F6D5 ; Extended_Pictographic# E12.0 [1] (🛕) hindu temple
1F6D6..1F6D7 ; Extended_Pictographic# E13.0 [2] (🛖..🛗) hut..elevator
1F6D8..1F6DB ; Extended_Pictographic# E0.0 [4] (🛘..🛛) <reserved-1F6D8>..<reserved-1F6DB>
1F6DC ; Extended_Pictographic# E15.0 [1] (🛜) wireless
1F6D8..1F6DC ; Extended_Pictographic# E0.0 [5] (🛘..🛜) <reserved-1F6D8>..<reserved-1F6DC>
1F6DD..1F6DF ; Extended_Pictographic# E14.0 [3] (🛝..🛟) playground slide..ring buoy
1F6E0..1F6E5 ; Extended_Pictographic# E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat
1F6E6..1F6E8 ; Extended_Pictographic# E0.0 [3] (🛦..🛨) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE
@ -1223,7 +1207,7 @@ E0020..E007F ; Emoji_Component # E0.0 [96] (󠀠..󠁿) tag space..c
1F6FA ; Extended_Pictographic# E12.0 [1] (🛺) auto rickshaw
1F6FB..1F6FC ; Extended_Pictographic# E13.0 [2] (🛻..🛼) pickup truck..roller skate
1F6FD..1F6FF ; Extended_Pictographic# E0.0 [3] (🛽..🛿) <reserved-1F6FD>..<reserved-1F6FF>
1F774..1F77F ; Extended_Pictographic# E0.0 [12] (🝴..🝿) LOT OF FORTUNE..ORCUS
1F774..1F77F ; Extended_Pictographic# E0.0 [12] (🝴..🝿) <reserved-1F774>..<reserved-1F77F>
1F7D5..1F7DF ; Extended_Pictographic# E0.0 [11] (🟕..🟟) CIRCLED TRIANGLE..<reserved-1F7DF>
1F7E0..1F7EB ; Extended_Pictographic# E12.0 [12] (🟠..🟫) orange circle..brown square
1F7EC..1F7EF ; Extended_Pictographic# E0.0 [4] (🟬..🟯) <reserved-1F7EC>..<reserved-1F7EF>
@ -1282,37 +1266,30 @@ E0020..E007F ; Emoji_Component # E0.0 [96] (󠀠..󠁿) tag space..c
1FA00..1FA6F ; Extended_Pictographic# E0.0 [112] (🨀..🩯) NEUTRAL CHESS KING..<reserved-1FA6F>
1FA70..1FA73 ; Extended_Pictographic# E12.0 [4] (🩰..🩳) ballet shoes..shorts
1FA74 ; Extended_Pictographic# E13.0 [1] (🩴) thong sandal
1FA75..1FA77 ; Extended_Pictographic# E15.0 [3] (🩵..🩷) light blue heart..pink heart
1FA75..1FA77 ; Extended_Pictographic# E0.0 [3] (🩵..🩷) <reserved-1FA75>..<reserved-1FA77>
1FA78..1FA7A ; Extended_Pictographic# E12.0 [3] (🩸..🩺) drop of blood..stethoscope
1FA7B..1FA7C ; Extended_Pictographic# E14.0 [2] (🩻..🩼) x-ray..crutch
1FA7D..1FA7F ; Extended_Pictographic# E0.0 [3] (🩽..🩿) <reserved-1FA7D>..<reserved-1FA7F>
1FA80..1FA82 ; Extended_Pictographic# E12.0 [3] (🪀..🪂) yo-yo..parachute
1FA83..1FA86 ; Extended_Pictographic# E13.0 [4] (🪃..🪆) boomerang..nesting dolls
1FA87..1FA88 ; Extended_Pictographic# E15.0 [2] (🪇..🪈) maracas..flute
1FA89..1FA8F ; Extended_Pictographic# E0.0 [7] (🪉..🪏) <reserved-1FA89>..<reserved-1FA8F>
1FA87..1FA8F ; Extended_Pictographic# E0.0 [9] (🪇..🪏) <reserved-1FA87>..<reserved-1FA8F>
1FA90..1FA95 ; Extended_Pictographic# E12.0 [6] (🪐..🪕) ringed planet..banjo
1FA96..1FAA8 ; Extended_Pictographic# E13.0 [19] (🪖..🪨) military helmet..rock
1FAA9..1FAAC ; Extended_Pictographic# E14.0 [4] (🪩..🪬) mirror ball..hamsa
1FAAD..1FAAF ; Extended_Pictographic# E15.0 [3] (🪭..🪯) folding hand fan..khanda
1FAAD..1FAAF ; Extended_Pictographic# E0.0 [3] (🪭..🪯) <reserved-1FAAD>..<reserved-1FAAF>
1FAB0..1FAB6 ; Extended_Pictographic# E13.0 [7] (🪰..🪶) fly..feather
1FAB7..1FABA ; Extended_Pictographic# E14.0 [4] (🪷..🪺) lotus..nest with eggs
1FABB..1FABD ; Extended_Pictographic# E15.0 [3] (🪻..🪽) hyacinth..wing
1FABE ; Extended_Pictographic# E0.0 [1] (🪾) <reserved-1FABE>
1FABF ; Extended_Pictographic# E15.0 [1] (🪿) goose
1FABB..1FABF ; Extended_Pictographic# E0.0 [5] (🪻..🪿) <reserved-1FABB>..<reserved-1FABF>
1FAC0..1FAC2 ; Extended_Pictographic# E13.0 [3] (🫀..🫂) anatomical heart..people hugging
1FAC3..1FAC5 ; Extended_Pictographic# E14.0 [3] (🫃..🫅) pregnant man..person with crown
1FAC6..1FACD ; Extended_Pictographic# E0.0 [8] (🫆..🫍) <reserved-1FAC6>..<reserved-1FACD>
1FACE..1FACF ; Extended_Pictographic# E15.0 [2] (🫎..🫏) moose..donkey
1FAC6..1FACF ; Extended_Pictographic# E0.0 [10] (🫆..🫏) <reserved-1FAC6>..<reserved-1FACF>
1FAD0..1FAD6 ; Extended_Pictographic# E13.0 [7] (🫐..🫖) blueberries..teapot
1FAD7..1FAD9 ; Extended_Pictographic# E14.0 [3] (🫗..🫙) pouring liquid..jar
1FADA..1FADB ; Extended_Pictographic# E15.0 [2] (🫚..🫛) ginger root..pea pod
1FADC..1FADF ; Extended_Pictographic# E0.0 [4] (🫜..🫟) <reserved-1FADC>..<reserved-1FADF>
1FADA..1FADF ; Extended_Pictographic# E0.0 [6] (🫚..🫟) <reserved-1FADA>..<reserved-1FADF>
1FAE0..1FAE7 ; Extended_Pictographic# E14.0 [8] (🫠..🫧) melting face..bubbles
1FAE8 ; Extended_Pictographic# E15.0 [1] (🫨) shaking face
1FAE9..1FAEF ; Extended_Pictographic# E0.0 [7] (🫩..🫯) <reserved-1FAE9>..<reserved-1FAEF>
1FAE8..1FAEF ; Extended_Pictographic# E0.0 [8] (🫨..🫯) <reserved-1FAE8>..<reserved-1FAEF>
1FAF0..1FAF6 ; Extended_Pictographic# E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
1FAF7..1FAF8 ; Extended_Pictographic# E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
1FAF9..1FAFF ; Extended_Pictographic# E0.0 [7] (🫹..🫿) <reserved-1FAF9>..<reserved-1FAFF>
1FAF7..1FAFF ; Extended_Pictographic# E0.0 [9] (🫷..🫿) <reserved-1FAF7>..<reserved-1FAFF>
1FC00..1FFFD ; Extended_Pictographic# E0.0[1022] (🰀..🿽) <reserved-1FC00>..<reserved-1FFFD>
# Total elements: 3537

View file

@ -1,13 +1,13 @@
# emoji-sequences.txt
# Date: 2022-08-15, 23:13:41 GMT
# © 2022 Unicode®, Inc.
# Date: 2021-08-26, 17:22:22 GMT
# © 2021 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
#
# Emoji Sequence Data for UTS #51
# Version: 15.0
# Version: 14.0
#
# For documentation and usage, see https://www.unicode.org/reports/tr51
# For documentation and usage, see http://www.unicode.org/reports/tr51
#
# Format:
# code_point(s) ; type_field ; description # comments
@ -38,145 +38,144 @@
# Basic_Emoji
231A..231B ; Basic_Emoji ; watch..hourglass done # E0.6 [2] (⌚..⌛)
23E9..23EC ; Basic_Emoji ; fast-forward button..fast down button # E0.6 [4] (⏩..⏬)
231A..231B ; Basic_Emoji ; watch # E0.6 [2] (⌚..⌛)
23E9..23EC ; Basic_Emoji ; fast-forward button # E0.6 [4] (⏩..⏬)
23F0 ; Basic_Emoji ; alarm clock # E0.6 [1] (⏰)
23F3 ; Basic_Emoji ; hourglass not done # E0.6 [1] (⏳)
25FD..25FE ; Basic_Emoji ; white medium-small square..black medium-small square # E0.6 [2] (◽..◾)
2614..2615 ; Basic_Emoji ; umbrella with rain drops..hot beverage # E0.6 [2] (☔..☕)
2648..2653 ; Basic_Emoji ; Aries..Pisces # E0.6 [12] (♈..♓)
25FD..25FE ; Basic_Emoji ; white medium-small square # E0.6 [2] (◽..◾)
2614..2615 ; Basic_Emoji ; umbrella with rain drops # E0.6 [2] (☔..☕)
2648..2653 ; Basic_Emoji ; Aries # E0.6 [12] (♈..♓)
267F ; Basic_Emoji ; wheelchair symbol # E0.6 [1] (♿)
2693 ; Basic_Emoji ; anchor # E0.6 [1] (⚓)
26A1 ; Basic_Emoji ; high voltage # E0.6 [1] (⚡)
26AA..26AB ; Basic_Emoji ; white circle..black circle # E0.6 [2] (⚪..⚫)
26BD..26BE ; Basic_Emoji ; soccer ball..baseball # E0.6 [2] (⚽..⚾)
26C4..26C5 ; Basic_Emoji ; snowman without snow..sun behind cloud # E0.6 [2] (⛄..⛅)
26AA..26AB ; Basic_Emoji ; white circle # E0.6 [2] (⚪..⚫)
26BD..26BE ; Basic_Emoji ; soccer ball # E0.6 [2] (⚽..⚾)
26C4..26C5 ; Basic_Emoji ; snowman without snow # E0.6 [2] (⛄..⛅)
26CE ; Basic_Emoji ; Ophiuchus # E0.6 [1] (⛎)
26D4 ; Basic_Emoji ; no entry # E0.6 [1] (⛔)
26EA ; Basic_Emoji ; church # E0.6 [1] (⛪)
26F2..26F3 ; Basic_Emoji ; fountain..flag in hole # E0.6 [2] (⛲..⛳)
26F2..26F3 ; Basic_Emoji ; fountain # E0.6 [2] (⛲..⛳)
26F5 ; Basic_Emoji ; sailboat # E0.6 [1] (⛵)
26FA ; Basic_Emoji ; tent # E0.6 [1] (⛺)
26FD ; Basic_Emoji ; fuel pump # E0.6 [1] (⛽)
2705 ; Basic_Emoji ; check mark button # E0.6 [1] (✅)
270A..270B ; Basic_Emoji ; raised fist..raised hand # E0.6 [2] (✊..✋)
270A..270B ; Basic_Emoji ; raised fist # E0.6 [2] (✊..✋)
2728 ; Basic_Emoji ; sparkles # E0.6 [1] (✨)
274C ; Basic_Emoji ; cross mark # E0.6 [1] (❌)
274E ; Basic_Emoji ; cross mark button # E0.6 [1] (❎)
2753..2755 ; Basic_Emoji ; red question mark..white exclamation mark # E0.6 [3] (❓..❕)
2753..2755 ; Basic_Emoji ; red question mark # E0.6 [3] (❓..❕)
2757 ; Basic_Emoji ; red exclamation mark # E0.6 [1] (❗)
2795..2797 ; Basic_Emoji ; plus..divide # E0.6 [3] (..➗)
2795..2797 ; Basic_Emoji ; plus # E0.6 [3] (..➗)
27B0 ; Basic_Emoji ; curly loop # E0.6 [1] (➰)
27BF ; Basic_Emoji ; double curly loop # E1.0 [1] (➿)
2B1B..2B1C ; Basic_Emoji ; black large square..white large square # E0.6 [2] (⬛..⬜)
2B1B..2B1C ; Basic_Emoji ; black large square # E0.6 [2] (⬛..⬜)
2B50 ; Basic_Emoji ; star # E0.6 [1] (⭐)
2B55 ; Basic_Emoji ; hollow red circle # E0.6 [1] (⭕)
1F004 ; Basic_Emoji ; mahjong red dragon # E0.6 [1] (🀄)
1F0CF ; Basic_Emoji ; joker # E0.6 [1] (🃏)
1F18E ; Basic_Emoji ; AB button (blood type) # E0.6 [1] (🆎)
1F191..1F19A ; Basic_Emoji ; CL button..VS button # E0.6 [10] (🆑..🆚)
1F191..1F19A ; Basic_Emoji ; CL button # E0.6 [10] (🆑..🆚)
1F201 ; Basic_Emoji ; Japanese “here” button # E0.6 [1] (🈁)
1F21A ; Basic_Emoji ; Japanese “free of charge” button # E0.6 [1] (🈚)
1F22F ; Basic_Emoji ; Japanese “reserved” button # E0.6 [1] (🈯)
1F232..1F236 ; Basic_Emoji ; Japanese “prohibited” button..Japanese “not free of charge” button#E0.6 [5] (🈲..🈶)
1F238..1F23A ; Basic_Emoji ; Japanese “application” button..Japanese “open for business” button#E0.6 [3] (🈸..🈺)
1F250..1F251 ; Basic_Emoji ; Japanese “bargain” button..Japanese “acceptable” button # E0.6 [2] (🉐..🉑)
1F300..1F30C ; Basic_Emoji ; cyclone..milky way # E0.6 [13] (🌀..🌌)
1F30D..1F30E ; Basic_Emoji ; globe showing Europe-Africa..globe showing Americas # E0.7 [2] (🌍..🌎)
1F232..1F236 ; Basic_Emoji ; Japanese “prohibited” button # E0.6 [5] (🈲..🈶)
1F238..1F23A ; Basic_Emoji ; Japanese “application” button # E0.6 [3] (🈸..🈺)
1F250..1F251 ; Basic_Emoji ; Japanese “bargain” button # E0.6 [2] (🉐..🉑)
1F300..1F30C ; Basic_Emoji ; cyclone # E0.6 [13] (🌀..🌌)
1F30D..1F30E ; Basic_Emoji ; globe showing Europe-Africa # E0.7 [2] (🌍..🌎)
1F30F ; Basic_Emoji ; globe showing Asia-Australia # E0.6 [1] (🌏)
1F310 ; Basic_Emoji ; globe with meridians # E1.0 [1] (🌐)
1F311 ; Basic_Emoji ; new moon # E0.6 [1] (🌑)
1F312 ; Basic_Emoji ; waxing crescent moon # E1.0 [1] (🌒)
1F313..1F315 ; Basic_Emoji ; first quarter moon..full moon # E0.6 [3] (🌓..🌕)
1F316..1F318 ; Basic_Emoji ; waning gibbous moon..waning crescent moon # E1.0 [3] (🌖..🌘)
1F313..1F315 ; Basic_Emoji ; first quarter moon # E0.6 [3] (🌓..🌕)
1F316..1F318 ; Basic_Emoji ; waning gibbous moon # E1.0 [3] (🌖..🌘)
1F319 ; Basic_Emoji ; crescent moon # E0.6 [1] (🌙)
1F31A ; Basic_Emoji ; new moon face # E1.0 [1] (🌚)
1F31B ; Basic_Emoji ; first quarter moon face # E0.6 [1] (🌛)
1F31C ; Basic_Emoji ; last quarter moon face # E0.7 [1] (🌜)
1F31D..1F31E ; Basic_Emoji ; full moon face..sun with face # E1.0 [2] (🌝..🌞)
1F31F..1F320 ; Basic_Emoji ; glowing star..shooting star # E0.6 [2] (🌟..🌠)
1F32D..1F32F ; Basic_Emoji ; hot dog..burrito # E1.0 [3] (🌭..🌯)
1F330..1F331 ; Basic_Emoji ; chestnut..seedling # E0.6 [2] (🌰..🌱)
1F332..1F333 ; Basic_Emoji ; evergreen tree..deciduous tree # E1.0 [2] (🌲..🌳)
1F334..1F335 ; Basic_Emoji ; palm tree..cactus # E0.6 [2] (🌴..🌵)
1F337..1F34A ; Basic_Emoji ; tulip..tangerine # E0.6 [20] (🌷..🍊)
1F31D..1F31E ; Basic_Emoji ; full moon face # E1.0 [2] (🌝..🌞)
1F31F..1F320 ; Basic_Emoji ; glowing star # E0.6 [2] (🌟..🌠)
1F32D..1F32F ; Basic_Emoji ; hot dog # E1.0 [3] (🌭..🌯)
1F330..1F331 ; Basic_Emoji ; chestnut # E0.6 [2] (🌰..🌱)
1F332..1F333 ; Basic_Emoji ; evergreen tree # E1.0 [2] (🌲..🌳)
1F334..1F335 ; Basic_Emoji ; palm tree # E0.6 [2] (🌴..🌵)
1F337..1F34A ; Basic_Emoji ; tulip # E0.6 [20] (🌷..🍊)
1F34B ; Basic_Emoji ; lemon # E1.0 [1] (🍋)
1F34C..1F34F ; Basic_Emoji ; banana..green apple # E0.6 [4] (🍌..🍏)
1F34C..1F34F ; Basic_Emoji ; banana # E0.6 [4] (🍌..🍏)
1F350 ; Basic_Emoji ; pear # E1.0 [1] (🍐)
1F351..1F37B ; Basic_Emoji ; peach..clinking beer mugs # E0.6 [43] (🍑..🍻)
1F351..1F37B ; Basic_Emoji ; peach # E0.6 [43] (🍑..🍻)
1F37C ; Basic_Emoji ; baby bottle # E1.0 [1] (🍼)
1F37E..1F37F ; Basic_Emoji ; bottle with popping cork..popcorn # E1.0 [2] (🍾..🍿)
1F380..1F393 ; Basic_Emoji ; ribbon..graduation cap # E0.6 [20] (🎀..🎓)
1F3A0..1F3C4 ; Basic_Emoji ; carousel horse..person surfing # E0.6 [37] (🎠..🏄)
1F37E..1F37F ; Basic_Emoji ; bottle with popping cork # E1.0 [2] (🍾..🍿)
1F380..1F393 ; Basic_Emoji ; ribbon # E0.6 [20] (🎀..🎓)
1F3A0..1F3C4 ; Basic_Emoji ; carousel horse # E0.6 [37] (🎠..🏄)
1F3C5 ; Basic_Emoji ; sports medal # E1.0 [1] (🏅)
1F3C6 ; Basic_Emoji ; trophy # E0.6 [1] (🏆)
1F3C7 ; Basic_Emoji ; horse racing # E1.0 [1] (🏇)
1F3C8 ; Basic_Emoji ; american football # E0.6 [1] (🏈)
1F3C9 ; Basic_Emoji ; rugby football # E1.0 [1] (🏉)
1F3CA ; Basic_Emoji ; person swimming # E0.6 [1] (🏊)
1F3CF..1F3D3 ; Basic_Emoji ; cricket game..ping pong # E1.0 [5] (🏏..🏓)
1F3E0..1F3E3 ; Basic_Emoji ; house..Japanese post office # E0.6 [4] (🏠..🏣)
1F3CF..1F3D3 ; Basic_Emoji ; cricket game # E1.0 [5] (🏏..🏓)
1F3E0..1F3E3 ; Basic_Emoji ; house # E0.6 [4] (🏠..🏣)
1F3E4 ; Basic_Emoji ; post office # E1.0 [1] (🏤)
1F3E5..1F3F0 ; Basic_Emoji ; hospital..castle # E0.6 [12] (🏥..🏰)
1F3E5..1F3F0 ; Basic_Emoji ; hospital # E0.6 [12] (🏥..🏰)
1F3F4 ; Basic_Emoji ; black flag # E1.0 [1] (🏴)
1F3F8..1F407 ; Basic_Emoji ; badminton..rabbit # E1.0 [16] (🏸..🐇)
1F3F8..1F407 ; Basic_Emoji ; badminton # E1.0 [16] (🏸..🐇)
1F408 ; Basic_Emoji ; cat # E0.7 [1] (🐈)
1F409..1F40B ; Basic_Emoji ; dragon..whale # E1.0 [3] (🐉..🐋)
1F40C..1F40E ; Basic_Emoji ; snail..horse # E0.6 [3] (🐌..🐎)
1F40F..1F410 ; Basic_Emoji ; ram..goat # E1.0 [2] (🐏..🐐)
1F411..1F412 ; Basic_Emoji ; ewe..monkey # E0.6 [2] (🐑..🐒)
1F409..1F40B ; Basic_Emoji ; dragon # E1.0 [3] (🐉..🐋)
1F40C..1F40E ; Basic_Emoji ; snail # E0.6 [3] (🐌..🐎)
1F40F..1F410 ; Basic_Emoji ; ram # E1.0 [2] (🐏..🐐)
1F411..1F412 ; Basic_Emoji ; ewe # E0.6 [2] (🐑..🐒)
1F413 ; Basic_Emoji ; rooster # E1.0 [1] (🐓)
1F414 ; Basic_Emoji ; chicken # E0.6 [1] (🐔)
1F415 ; Basic_Emoji ; dog # E0.7 [1] (🐕)
1F416 ; Basic_Emoji ; pig # E1.0 [1] (🐖)
1F417..1F429 ; Basic_Emoji ; boar..poodle # E0.6 [19] (🐗..🐩)
1F417..1F429 ; Basic_Emoji ; boar # E0.6 [19] (🐗..🐩)
1F42A ; Basic_Emoji ; camel # E1.0 [1] (🐪)
1F42B..1F43E ; Basic_Emoji ; two-hump camel..paw prints # E0.6 [20] (🐫..🐾)
1F42B..1F43E ; Basic_Emoji ; two-hump camel # E0.6 [20] (🐫..🐾)
1F440 ; Basic_Emoji ; eyes # E0.6 [1] (👀)
1F442..1F464 ; Basic_Emoji ; ear..bust in silhouette # E0.6 [35] (👂..👤)
1F442..1F464 ; Basic_Emoji ; ear # E0.6 [35] (👂..👤)
1F465 ; Basic_Emoji ; busts in silhouette # E1.0 [1] (👥)
1F466..1F46B ; Basic_Emoji ; boy..woman and man holding hands # E0.6 [6] (👦..👫)
1F46C..1F46D ; Basic_Emoji ; men holding hands..women holding hands # E1.0 [2] (👬..👭)
1F46E..1F4AC ; Basic_Emoji ; police officer..speech balloon # E0.6 [63] (👮..💬)
1F466..1F46B ; Basic_Emoji ; boy # E0.6 [6] (👦..👫)
1F46C..1F46D ; Basic_Emoji ; men holding hands # E1.0 [2] (👬..👭)
1F46E..1F4AC ; Basic_Emoji ; police officer # E0.6 [63] (👮..💬)
1F4AD ; Basic_Emoji ; thought balloon # E1.0 [1] (💭)
1F4AE..1F4B5 ; Basic_Emoji ; white flower..dollar banknote # E0.6 [8] (💮..💵)
1F4B6..1F4B7 ; Basic_Emoji ; euro banknote..pound banknote # E1.0 [2] (💶..💷)
1F4B8..1F4EB ; Basic_Emoji ; money with wings..closed mailbox with raised flag # E0.6 [52] (💸..📫)
1F4EC..1F4ED ; Basic_Emoji ; open mailbox with raised flag..open mailbox with lowered flag # E0.7 [2] (📬..📭)
1F4AE..1F4B5 ; Basic_Emoji ; white flower # E0.6 [8] (💮..💵)
1F4B6..1F4B7 ; Basic_Emoji ; euro banknote # E1.0 [2] (💶..💷)
1F4B8..1F4EB ; Basic_Emoji ; money with wings # E0.6 [52] (💸..📫)
1F4EC..1F4ED ; Basic_Emoji ; open mailbox with raised flag # E0.7 [2] (📬..📭)
1F4EE ; Basic_Emoji ; postbox # E0.6 [1] (📮)
1F4EF ; Basic_Emoji ; postal horn # E1.0 [1] (📯)
1F4F0..1F4F4 ; Basic_Emoji ; newspaper..mobile phone off # E0.6 [5] (📰..📴)
1F4F0..1F4F4 ; Basic_Emoji ; newspaper # E0.6 [5] (📰..📴)
1F4F5 ; Basic_Emoji ; no mobile phones # E1.0 [1] (📵)
1F4F6..1F4F7 ; Basic_Emoji ; antenna bars..camera # E0.6 [2] (📶..📷)
1F4F6..1F4F7 ; Basic_Emoji ; antenna bars # E0.6 [2] (📶..📷)
1F4F8 ; Basic_Emoji ; camera with flash # E1.0 [1] (📸)
1F4F9..1F4FC ; Basic_Emoji ; video camera..videocassette # E0.6 [4] (📹..📼)
1F4FF..1F502 ; Basic_Emoji ; prayer beads..repeat single button # E1.0 [4] (📿..🔂)
1F4F9..1F4FC ; Basic_Emoji ; video camera # E0.6 [4] (📹..📼)
1F4FF..1F502 ; Basic_Emoji ; prayer beads # E1.0 [4] (📿..🔂)
1F503 ; Basic_Emoji ; clockwise vertical arrows # E0.6 [1] (🔃)
1F504..1F507 ; Basic_Emoji ; counterclockwise arrows button..muted speaker # E1.0 [4] (🔄..🔇)
1F504..1F507 ; Basic_Emoji ; counterclockwise arrows button # E1.0 [4] (🔄..🔇)
1F508 ; Basic_Emoji ; speaker low volume # E0.7 [1] (🔈)
1F509 ; Basic_Emoji ; speaker medium volume # E1.0 [1] (🔉)
1F50A..1F514 ; Basic_Emoji ; speaker high volume..bell # E0.6 [11] (🔊..🔔)
1F50A..1F514 ; Basic_Emoji ; speaker high volume # E0.6 [11] (🔊..🔔)
1F515 ; Basic_Emoji ; bell with slash # E1.0 [1] (🔕)
1F516..1F52B ; Basic_Emoji ; bookmark..water pistol # E0.6 [22] (🔖..🔫)
1F52C..1F52D ; Basic_Emoji ; microscope..telescope # E1.0 [2] (🔬..🔭)
1F52E..1F53D ; Basic_Emoji ; crystal ball..downwards button # E0.6 [16] (🔮..🔽)
1F54B..1F54E ; Basic_Emoji ; kaaba..menorah # E1.0 [4] (🕋..🕎)
1F550..1F55B ; Basic_Emoji ; one oclock..twelve oclock # E0.6 [12] (🕐..🕛)
1F55C..1F567 ; Basic_Emoji ; one-thirty..twelve-thirty # E0.7 [12] (🕜..🕧)
1F516..1F52B ; Basic_Emoji ; bookmark # E0.6 [22] (🔖..🔫)
1F52C..1F52D ; Basic_Emoji ; microscope # E1.0 [2] (🔬..🔭)
1F52E..1F53D ; Basic_Emoji ; crystal ball # E0.6 [16] (🔮..🔽)
1F54B..1F54E ; Basic_Emoji ; kaaba # E1.0 [4] (🕋..🕎)
1F550..1F55B ; Basic_Emoji ; one oclock # E0.6 [12] (🕐..🕛)
1F55C..1F567 ; Basic_Emoji ; one-thirty # E0.7 [12] (🕜..🕧)
1F57A ; Basic_Emoji ; man dancing # E3.0 [1] (🕺)
1F595..1F596 ; Basic_Emoji ; middle finger..vulcan salute # E1.0 [2] (🖕..🖖)
1F595..1F596 ; Basic_Emoji ; middle finger # E1.0 [2] (🖕..🖖)
1F5A4 ; Basic_Emoji ; black heart # E3.0 [1] (🖤)
1F5FB..1F5FF ; Basic_Emoji ; mount fuji..moai # E0.6 [5] (🗻..🗿)
1F5FB..1F5FF ; Basic_Emoji ; mount fuji # E0.6 [5] (🗻..🗿)
1F600 ; Basic_Emoji ; grinning face # E1.0 [1] (😀)
1F601..1F606 ; Basic_Emoji ; beaming face with smiling eyes..grinning squinting face # E0.6 [6] (😁..😆)
1F607..1F608 ; Basic_Emoji ; smiling face with halo..smiling face with horns # E1.0 [2] (😇..😈)
1F609..1F60D ; Basic_Emoji ; winking face..smiling face with heart-eyes # E0.6 [5] (😉..😍)
1F601..1F606 ; Basic_Emoji ; beaming face with smiling eyes # E0.6 [6] (😁..😆)
1F607..1F608 ; Basic_Emoji ; smiling face with halo # E1.0 [2] (😇..😈)
1F609..1F60D ; Basic_Emoji ; winking face # E0.6 [5] (😉..😍)
1F60E ; Basic_Emoji ; smiling face with sunglasses # E1.0 [1] (😎)
1F60F ; Basic_Emoji ; smirking face # E0.6 [1] (😏)
1F610 ; Basic_Emoji ; neutral face # E0.7 [1] (😐)
1F611 ; Basic_Emoji ; expressionless face # E1.0 [1] (😑)
1F612..1F614 ; Basic_Emoji ; unamused face..pensive face # E0.6 [3] (😒..😔)
1F612..1F614 ; Basic_Emoji ; unamused face # E0.6 [3] (😒..😔)
1F615 ; Basic_Emoji ; confused face # E1.0 [1] (😕)
1F616 ; Basic_Emoji ; confounded face # E0.6 [1] (😖)
1F617 ; Basic_Emoji ; kissing face # E1.0 [1] (😗)
@ -184,142 +183,132 @@
1F619 ; Basic_Emoji ; kissing face with smiling eyes # E1.0 [1] (😙)
1F61A ; Basic_Emoji ; kissing face with closed eyes # E0.6 [1] (😚)
1F61B ; Basic_Emoji ; face with tongue # E1.0 [1] (😛)
1F61C..1F61E ; Basic_Emoji ; winking face with tongue..disappointed face # E0.6 [3] (😜..😞)
1F61C..1F61E ; Basic_Emoji ; winking face with tongue # E0.6 [3] (😜..😞)
1F61F ; Basic_Emoji ; worried face # E1.0 [1] (😟)
1F620..1F625 ; Basic_Emoji ; angry face..sad but relieved face # E0.6 [6] (😠..😥)
1F626..1F627 ; Basic_Emoji ; frowning face with open mouth..anguished face # E1.0 [2] (😦..😧)
1F628..1F62B ; Basic_Emoji ; fearful face..tired face # E0.6 [4] (😨..😫)
1F620..1F625 ; Basic_Emoji ; angry face # E0.6 [6] (😠..😥)
1F626..1F627 ; Basic_Emoji ; frowning face with open mouth # E1.0 [2] (😦..😧)
1F628..1F62B ; Basic_Emoji ; fearful face # E0.6 [4] (😨..😫)
1F62C ; Basic_Emoji ; grimacing face # E1.0 [1] (😬)
1F62D ; Basic_Emoji ; loudly crying face # E0.6 [1] (😭)
1F62E..1F62F ; Basic_Emoji ; face with open mouth..hushed face # E1.0 [2] (😮..😯)
1F630..1F633 ; Basic_Emoji ; anxious face with sweat..flushed face # E0.6 [4] (😰..😳)
1F62E..1F62F ; Basic_Emoji ; face with open mouth # E1.0 [2] (😮..😯)
1F630..1F633 ; Basic_Emoji ; anxious face with sweat # E0.6 [4] (😰..😳)
1F634 ; Basic_Emoji ; sleeping face # E1.0 [1] (😴)
1F635 ; Basic_Emoji ; face with crossed-out eyes # E0.6 [1] (😵)
1F636 ; Basic_Emoji ; face without mouth # E1.0 [1] (😶)
1F637..1F640 ; Basic_Emoji ; face with medical mask..weary cat # E0.6 [10] (😷..🙀)
1F641..1F644 ; Basic_Emoji ; slightly frowning face..face with rolling eyes # E1.0 [4] (🙁..🙄)
1F645..1F64F ; Basic_Emoji ; person gesturing NO..folded hands # E0.6 [11] (🙅..🙏)
1F637..1F640 ; Basic_Emoji ; face with medical mask # E0.6 [10] (😷..🙀)
1F641..1F644 ; Basic_Emoji ; slightly frowning face # E1.0 [4] (🙁..🙄)
1F645..1F64F ; Basic_Emoji ; person gesturing NO # E0.6 [11] (🙅..🙏)
1F680 ; Basic_Emoji ; rocket # E0.6 [1] (🚀)
1F681..1F682 ; Basic_Emoji ; helicopter..locomotive # E1.0 [2] (🚁..🚂)
1F683..1F685 ; Basic_Emoji ; railway car..bullet train # E0.6 [3] (🚃..🚅)
1F681..1F682 ; Basic_Emoji ; helicopter # E1.0 [2] (🚁..🚂)
1F683..1F685 ; Basic_Emoji ; railway car # E0.6 [3] (🚃..🚅)
1F686 ; Basic_Emoji ; train # E1.0 [1] (🚆)
1F687 ; Basic_Emoji ; metro # E0.6 [1] (🚇)
1F688 ; Basic_Emoji ; light rail # E1.0 [1] (🚈)
1F689 ; Basic_Emoji ; station # E0.6 [1] (🚉)
1F68A..1F68B ; Basic_Emoji ; tram..tram car # E1.0 [2] (🚊..🚋)
1F68A..1F68B ; Basic_Emoji ; tram # E1.0 [2] (🚊..🚋)
1F68C ; Basic_Emoji ; bus # E0.6 [1] (🚌)
1F68D ; Basic_Emoji ; oncoming bus # E0.7 [1] (🚍)
1F68E ; Basic_Emoji ; trolleybus # E1.0 [1] (🚎)
1F68F ; Basic_Emoji ; bus stop # E0.6 [1] (🚏)
1F690 ; Basic_Emoji ; minibus # E1.0 [1] (🚐)
1F691..1F693 ; Basic_Emoji ; ambulance..police car # E0.6 [3] (🚑..🚓)
1F691..1F693 ; Basic_Emoji ; ambulance # E0.6 [3] (🚑..🚓)
1F694 ; Basic_Emoji ; oncoming police car # E0.7 [1] (🚔)
1F695 ; Basic_Emoji ; taxi # E0.6 [1] (🚕)
1F696 ; Basic_Emoji ; oncoming taxi # E1.0 [1] (🚖)
1F697 ; Basic_Emoji ; automobile # E0.6 [1] (🚗)
1F698 ; Basic_Emoji ; oncoming automobile # E0.7 [1] (🚘)
1F699..1F69A ; Basic_Emoji ; sport utility vehicle..delivery truck # E0.6 [2] (🚙..🚚)
1F69B..1F6A1 ; Basic_Emoji ; articulated lorry..aerial tramway # E1.0 [7] (🚛..🚡)
1F699..1F69A ; Basic_Emoji ; sport utility vehicle # E0.6 [2] (🚙..🚚)
1F69B..1F6A1 ; Basic_Emoji ; articulated lorry # E1.0 [7] (🚛..🚡)
1F6A2 ; Basic_Emoji ; ship # E0.6 [1] (🚢)
1F6A3 ; Basic_Emoji ; person rowing boat # E1.0 [1] (🚣)
1F6A4..1F6A5 ; Basic_Emoji ; speedboat..horizontal traffic light # E0.6 [2] (🚤..🚥)
1F6A4..1F6A5 ; Basic_Emoji ; speedboat # E0.6 [2] (🚤..🚥)
1F6A6 ; Basic_Emoji ; vertical traffic light # E1.0 [1] (🚦)
1F6A7..1F6AD ; Basic_Emoji ; construction..no smoking # E0.6 [7] (🚧..🚭)
1F6AE..1F6B1 ; Basic_Emoji ; litter in bin sign..non-potable water # E1.0 [4] (🚮..🚱)
1F6A7..1F6AD ; Basic_Emoji ; construction # E0.6 [7] (🚧..🚭)
1F6AE..1F6B1 ; Basic_Emoji ; litter in bin sign # E1.0 [4] (🚮..🚱)
1F6B2 ; Basic_Emoji ; bicycle # E0.6 [1] (🚲)
1F6B3..1F6B5 ; Basic_Emoji ; no bicycles..person mountain biking # E1.0 [3] (🚳..🚵)
1F6B3..1F6B5 ; Basic_Emoji ; no bicycles # E1.0 [3] (🚳..🚵)
1F6B6 ; Basic_Emoji ; person walking # E0.6 [1] (🚶)
1F6B7..1F6B8 ; Basic_Emoji ; no pedestrians..children crossing # E1.0 [2] (🚷..🚸)
1F6B9..1F6BE ; Basic_Emoji ; mens room..water closet # E0.6 [6] (🚹..🚾)
1F6B7..1F6B8 ; Basic_Emoji ; no pedestrians # E1.0 [2] (🚷..🚸)
1F6B9..1F6BE ; Basic_Emoji ; mens room # E0.6 [6] (🚹..🚾)
1F6BF ; Basic_Emoji ; shower # E1.0 [1] (🚿)
1F6C0 ; Basic_Emoji ; person taking bath # E0.6 [1] (🛀)
1F6C1..1F6C5 ; Basic_Emoji ; bathtub..left luggage # E1.0 [5] (🛁..🛅)
1F6C1..1F6C5 ; Basic_Emoji ; bathtub # E1.0 [5] (🛁..🛅)
1F6CC ; Basic_Emoji ; person in bed # E1.0 [1] (🛌)
1F6D0 ; Basic_Emoji ; place of worship # E1.0 [1] (🛐)
1F6D1..1F6D2 ; Basic_Emoji ; stop sign..shopping cart # E3.0 [2] (🛑..🛒)
1F6D1..1F6D2 ; Basic_Emoji ; stop sign # E3.0 [2] (🛑..🛒)
1F6D5 ; Basic_Emoji ; hindu temple # E12.0 [1] (🛕)
1F6D6..1F6D7 ; Basic_Emoji ; hut..elevator # E13.0 [2] (🛖..🛗)
1F6DC ; Basic_Emoji ; wireless # E15.0 [1] (🛜)
1F6DD..1F6DF ; Basic_Emoji ; playground slide..ring buoy # E14.0 [3] (🛝..🛟)
1F6EB..1F6EC ; Basic_Emoji ; airplane departure..airplane arrival # E1.0 [2] (🛫..🛬)
1F6F4..1F6F6 ; Basic_Emoji ; kick scooter..canoe # E3.0 [3] (🛴..🛶)
1F6F7..1F6F8 ; Basic_Emoji ; sled..flying saucer # E5.0 [2] (🛷..🛸)
1F6D6..1F6D7 ; Basic_Emoji ; hut # E13.0 [2] (🛖..🛗)
1F6DD..1F6DF ; Basic_Emoji ; playground slide # E14.0 [3] (🛝..🛟)
1F6EB..1F6EC ; Basic_Emoji ; airplane departure # E1.0 [2] (🛫..🛬)
1F6F4..1F6F6 ; Basic_Emoji ; kick scooter # E3.0 [3] (🛴..🛶)
1F6F7..1F6F8 ; Basic_Emoji ; sled # E5.0 [2] (🛷..🛸)
1F6F9 ; Basic_Emoji ; skateboard # E11.0 [1] (🛹)
1F6FA ; Basic_Emoji ; auto rickshaw # E12.0 [1] (🛺)
1F6FB..1F6FC ; Basic_Emoji ; pickup truck..roller skate # E13.0 [2] (🛻..🛼)
1F7E0..1F7EB ; Basic_Emoji ; orange circle..brown square # E12.0 [12] (🟠..🟫)
1F6FB..1F6FC ; Basic_Emoji ; pickup truck # E13.0 [2] (🛻..🛼)
1F7E0..1F7EB ; Basic_Emoji ; orange circle # E12.0 [12] (🟠..🟫)
1F7F0 ; Basic_Emoji ; heavy equals sign # E14.0 [1] (🟰)
1F90C ; Basic_Emoji ; pinched fingers # E13.0 [1] (🤌)
1F90D..1F90F ; Basic_Emoji ; white heart..pinching hand # E12.0 [3] (🤍..🤏)
1F910..1F918 ; Basic_Emoji ; zipper-mouth face..sign of the horns # E1.0 [9] (🤐..🤘)
1F919..1F91E ; Basic_Emoji ; call me hand..crossed fingers # E3.0 [6] (🤙..🤞)
1F90D..1F90F ; Basic_Emoji ; white heart # E12.0 [3] (🤍..🤏)
1F910..1F918 ; Basic_Emoji ; zipper-mouth face # E1.0 [9] (🤐..🤘)
1F919..1F91E ; Basic_Emoji ; call me hand # E3.0 [6] (🤙..🤞)
1F91F ; Basic_Emoji ; love-you gesture # E5.0 [1] (🤟)
1F920..1F927 ; Basic_Emoji ; cowboy hat face..sneezing face # E3.0 [8] (🤠..🤧)
1F928..1F92F ; Basic_Emoji ; face with raised eyebrow..exploding head # E5.0 [8] (🤨..🤯)
1F920..1F927 ; Basic_Emoji ; cowboy hat face # E3.0 [8] (🤠..🤧)
1F928..1F92F ; Basic_Emoji ; face with raised eyebrow # E5.0 [8] (🤨..🤯)
1F930 ; Basic_Emoji ; pregnant woman # E3.0 [1] (🤰)
1F931..1F932 ; Basic_Emoji ; breast-feeding..palms up together # E5.0 [2] (🤱..🤲)
1F933..1F93A ; Basic_Emoji ; selfie..person fencing # E3.0 [8] (🤳..🤺)
1F93C..1F93E ; Basic_Emoji ; people wrestling..person playing handball # E3.0 [3] (🤼..🤾)
1F931..1F932 ; Basic_Emoji ; breast-feeding # E5.0 [2] (🤱..🤲)
1F933..1F93A ; Basic_Emoji ; selfie # E3.0 [8] (🤳..🤺)
1F93C..1F93E ; Basic_Emoji ; people wrestling # E3.0 [3] (🤼..🤾)
1F93F ; Basic_Emoji ; diving mask # E12.0 [1] (🤿)
1F940..1F945 ; Basic_Emoji ; wilted flower..goal net # E3.0 [6] (🥀..🥅)
1F947..1F94B ; Basic_Emoji ; 1st place medal..martial arts uniform # E3.0 [5] (🥇..🥋)
1F940..1F945 ; Basic_Emoji ; wilted flower # E3.0 [6] (🥀..🥅)
1F947..1F94B ; Basic_Emoji ; 1st place medal # E3.0 [5] (🥇..🥋)
1F94C ; Basic_Emoji ; curling stone # E5.0 [1] (🥌)
1F94D..1F94F ; Basic_Emoji ; lacrosse..flying disc # E11.0 [3] (🥍..🥏)
1F950..1F95E ; Basic_Emoji ; croissant..pancakes # E3.0 [15] (🥐..🥞)
1F95F..1F96B ; Basic_Emoji ; dumpling..canned food # E5.0 [13] (🥟..🥫)
1F96C..1F970 ; Basic_Emoji ; leafy green..smiling face with hearts # E11.0 [5] (🥬..🥰)
1F94D..1F94F ; Basic_Emoji ; lacrosse # E11.0 [3] (🥍..🥏)
1F950..1F95E ; Basic_Emoji ; croissant # E3.0 [15] (🥐..🥞)
1F95F..1F96B ; Basic_Emoji ; dumpling # E5.0 [13] (🥟..🥫)
1F96C..1F970 ; Basic_Emoji ; leafy green # E11.0 [5] (🥬..🥰)
1F971 ; Basic_Emoji ; yawning face # E12.0 [1] (🥱)
1F972 ; Basic_Emoji ; smiling face with tear # E13.0 [1] (🥲)
1F973..1F976 ; Basic_Emoji ; partying face..cold face # E11.0 [4] (🥳..🥶)
1F977..1F978 ; Basic_Emoji ; ninja..disguised face # E13.0 [2] (🥷..🥸)
1F973..1F976 ; Basic_Emoji ; partying face # E11.0 [4] (🥳..🥶)
1F977..1F978 ; Basic_Emoji ; ninja # E13.0 [2] (🥷..🥸)
1F979 ; Basic_Emoji ; face holding back tears # E14.0 [1] (🥹)
1F97A ; Basic_Emoji ; pleading face # E11.0 [1] (🥺)
1F97B ; Basic_Emoji ; sari # E12.0 [1] (🥻)
1F97C..1F97F ; Basic_Emoji ; lab coat..flat shoe # E11.0 [4] (🥼..🥿)
1F980..1F984 ; Basic_Emoji ; crab..unicorn # E1.0 [5] (🦀..🦄)
1F985..1F991 ; Basic_Emoji ; eagle..squid # E3.0 [13] (🦅..🦑)
1F992..1F997 ; Basic_Emoji ; giraffe..cricket # E5.0 [6] (🦒..🦗)
1F998..1F9A2 ; Basic_Emoji ; kangaroo..swan # E11.0 [11] (🦘..🦢)
1F9A3..1F9A4 ; Basic_Emoji ; mammoth..dodo # E13.0 [2] (🦣..🦤)
1F9A5..1F9AA ; Basic_Emoji ; sloth..oyster # E12.0 [6] (🦥..🦪)
1F9AB..1F9AD ; Basic_Emoji ; beaver..seal # E13.0 [3] (🦫..🦭)
1F9AE..1F9AF ; Basic_Emoji ; guide dog..white cane # E12.0 [2] (🦮..🦯)
1F9B0..1F9B9 ; Basic_Emoji ; red hair..supervillain # E11.0 [10] (🦰..🦹)
1F9BA..1F9BF ; Basic_Emoji ; safety vest..mechanical leg # E12.0 [6] (🦺..🦿)
1F97C..1F97F ; Basic_Emoji ; lab coat # E11.0 [4] (🥼..🥿)
1F980..1F984 ; Basic_Emoji ; crab # E1.0 [5] (🦀..🦄)
1F985..1F991 ; Basic_Emoji ; eagle # E3.0 [13] (🦅..🦑)
1F992..1F997 ; Basic_Emoji ; giraffe # E5.0 [6] (🦒..🦗)
1F998..1F9A2 ; Basic_Emoji ; kangaroo # E11.0 [11] (🦘..🦢)
1F9A3..1F9A4 ; Basic_Emoji ; mammoth # E13.0 [2] (🦣..🦤)
1F9A5..1F9AA ; Basic_Emoji ; sloth # E12.0 [6] (🦥..🦪)
1F9AB..1F9AD ; Basic_Emoji ; beaver # E13.0 [3] (🦫..🦭)
1F9AE..1F9AF ; Basic_Emoji ; guide dog # E12.0 [2] (🦮..🦯)
1F9B0..1F9B9 ; Basic_Emoji ; red hair # E11.0 [10] (🦰..🦹)
1F9BA..1F9BF ; Basic_Emoji ; safety vest # E12.0 [6] (🦺..🦿)
1F9C0 ; Basic_Emoji ; cheese wedge # E1.0 [1] (🧀)
1F9C1..1F9C2 ; Basic_Emoji ; cupcake..salt # E11.0 [2] (🧁..🧂)
1F9C3..1F9CA ; Basic_Emoji ; beverage box..ice # E12.0 [8] (🧃..🧊)
1F9C1..1F9C2 ; Basic_Emoji ; cupcake # E11.0 [2] (🧁..🧂)
1F9C3..1F9CA ; Basic_Emoji ; beverage box # E12.0 [8] (🧃..🧊)
1F9CB ; Basic_Emoji ; bubble tea # E13.0 [1] (🧋)
1F9CC ; Basic_Emoji ; troll # E14.0 [1] (🧌)
1F9CD..1F9CF ; Basic_Emoji ; person standing..deaf person # E12.0 [3] (🧍..🧏)
1F9D0..1F9E6 ; Basic_Emoji ; face with monocle..socks # E5.0 [23] (🧐..🧦)
1F9E7..1F9FF ; Basic_Emoji ; red envelope..nazar amulet # E11.0 [25] (🧧..🧿)
1FA70..1FA73 ; Basic_Emoji ; ballet shoes..shorts # E12.0 [4] (🩰..🩳)
1F9CD..1F9CF ; Basic_Emoji ; person standing # E12.0 [3] (🧍..🧏)
1F9D0..1F9E6 ; Basic_Emoji ; face with monocle # E5.0 [23] (🧐..🧦)
1F9E7..1F9FF ; Basic_Emoji ; red envelope # E11.0 [25] (🧧..🧿)
1FA70..1FA73 ; Basic_Emoji ; ballet shoes # E12.0 [4] (🩰..🩳)
1FA74 ; Basic_Emoji ; thong sandal # E13.0 [1] (🩴)
1FA75..1FA77 ; Basic_Emoji ; light blue heart..pink heart # E15.0 [3] (🩵..🩷)
1FA78..1FA7A ; Basic_Emoji ; drop of blood..stethoscope # E12.0 [3] (🩸..🩺)
1FA7B..1FA7C ; Basic_Emoji ; x-ray..crutch # E14.0 [2] (🩻..🩼)
1FA80..1FA82 ; Basic_Emoji ; yo-yo..parachute # E12.0 [3] (🪀..🪂)
1FA83..1FA86 ; Basic_Emoji ; boomerang..nesting dolls # E13.0 [4] (🪃..🪆)
1FA87..1FA88 ; Basic_Emoji ; maracas..flute # E15.0 [2] (🪇..🪈)
1FA90..1FA95 ; Basic_Emoji ; ringed planet..banjo # E12.0 [6] (🪐..🪕)
1FA96..1FAA8 ; Basic_Emoji ; military helmet..rock # E13.0 [19] (🪖..🪨)
1FAA9..1FAAC ; Basic_Emoji ; mirror ball..hamsa # E14.0 [4] (🪩..🪬)
1FAAD..1FAAF ; Basic_Emoji ; folding hand fan..khanda # E15.0 [3] (🪭..🪯)
1FAB0..1FAB6 ; Basic_Emoji ; fly..feather # E13.0 [7] (🪰..🪶)
1FAB7..1FABA ; Basic_Emoji ; lotus..nest with eggs # E14.0 [4] (🪷..🪺)
1FABB..1FABD ; Basic_Emoji ; hyacinth..wing # E15.0 [3] (🪻..🪽)
1FABF ; Basic_Emoji ; goose # E15.0 [1] (🪿)
1FAC0..1FAC2 ; Basic_Emoji ; anatomical heart..people hugging # E13.0 [3] (🫀..🫂)
1FAC3..1FAC5 ; Basic_Emoji ; pregnant man..person with crown # E14.0 [3] (🫃..🫅)
1FACE..1FACF ; Basic_Emoji ; moose..donkey # E15.0 [2] (🫎..🫏)
1FAD0..1FAD6 ; Basic_Emoji ; blueberries..teapot # E13.0 [7] (🫐..🫖)
1FAD7..1FAD9 ; Basic_Emoji ; pouring liquid..jar # E14.0 [3] (🫗..🫙)
1FADA..1FADB ; Basic_Emoji ; ginger root..pea pod # E15.0 [2] (🫚..🫛)
1FAE0..1FAE7 ; Basic_Emoji ; melting face..bubbles # E14.0 [8] (🫠..🫧)
1FAE8 ; Basic_Emoji ; shaking face # E15.0 [1] (🫨)
1FAF0..1FAF6 ; Basic_Emoji ; hand with index finger and thumb crossed..heart hands # E14.0 [7] (🫰..🫶)
1FAF7..1FAF8 ; Basic_Emoji ; leftwards pushing hand..rightwards pushing hand # E15.0 [2] (🫷..🫸)
1FA78..1FA7A ; Basic_Emoji ; drop of blood # E12.0 [3] (🩸..🩺)
1FA7B..1FA7C ; Basic_Emoji ; x-ray # E14.0 [2] (🩻..🩼)
1FA80..1FA82 ; Basic_Emoji ; yo-yo # E12.0 [3] (🪀..🪂)
1FA83..1FA86 ; Basic_Emoji ; boomerang # E13.0 [4] (🪃..🪆)
1FA90..1FA95 ; Basic_Emoji ; ringed planet # E12.0 [6] (🪐..🪕)
1FA96..1FAA8 ; Basic_Emoji ; military helmet # E13.0 [19] (🪖..🪨)
1FAA9..1FAAC ; Basic_Emoji ; mirror ball # E14.0 [4] (🪩..🪬)
1FAB0..1FAB6 ; Basic_Emoji ; fly # E13.0 [7] (🪰..🪶)
1FAB7..1FABA ; Basic_Emoji ; lotus # E14.0 [4] (🪷..🪺)
1FAC0..1FAC2 ; Basic_Emoji ; anatomical heart # E13.0 [3] (🫀..🫂)
1FAC3..1FAC5 ; Basic_Emoji ; pregnant man # E14.0 [3] (🫃..🫅)
1FAD0..1FAD6 ; Basic_Emoji ; blueberries # E13.0 [7] (🫐..🫖)
1FAD7..1FAD9 ; Basic_Emoji ; pouring liquid # E14.0 [3] (🫗..🫙)
1FAE0..1FAE7 ; Basic_Emoji ; melting face # E14.0 [8] (🫠..🫧)
1FAF0..1FAF6 ; Basic_Emoji ; hand with index finger and thumb crossed # E14.0 [7] (🫰..🫶)
00A9 FE0F ; Basic_Emoji ; copyright # E0.6 [1] (©️)
00AE FE0F ; Basic_Emoji ; registered # E0.6 [1] (®️)
203C FE0F ; Basic_Emoji ; double exclamation mark # E0.6 [1] (‼️)
@ -528,13 +517,12 @@
1F6F0 FE0F ; Basic_Emoji ; satellite # E0.7 [1] (🛰️)
1F6F3 FE0F ; Basic_Emoji ; passenger ship # E0.7 [1] (🛳️)
# Total elements: 1386
# Total elements: 1366
# ================================================
# Emoji_Keycap_Sequence
0023 FE0F 20E3; Emoji_Keycap_Sequence ; keycap: \x{23} # E0.6 [1] (#️⃣)
002A FE0F 20E3; Emoji_Keycap_Sequence ; keycap: * # E2.0 [1] (*️⃣)
0030 FE0F 20E3; Emoji_Keycap_Sequence ; keycap: 0 # E0.6 [1] (0⃣)
@ -555,7 +543,6 @@
# RGI_Emoji_Flag_Sequence: This list does not include deprecated or macroregion flags, except for UN and EU.
# See Annex B of TR51 for more information.
1F1E6 1F1E8 ; RGI_Emoji_Flag_Sequence ; flag: Ascension Island # E2.0 [1] (🇦🇨)
1F1E6 1F1E9 ; RGI_Emoji_Flag_Sequence ; flag: Andorra # E2.0 [1] (🇦🇩)
1F1E6 1F1EA ; RGI_Emoji_Flag_Sequence ; flag: United Arab Emirates # E2.0 [1] (🇦🇪)
@ -821,7 +808,6 @@
# RGI_Emoji_Tag_Sequence: See Annex C of TR51 for more information.
1F3F4 E0067 E0062 E0065 E006E E0067 E007F; RGI_Emoji_Tag_Sequence; flag: England # E5.0 [1] (🏴󠁧󠁢󠁥󠁮󠁧󠁿)
1F3F4 E0067 E0062 E0073 E0063 E0074 E007F; RGI_Emoji_Tag_Sequence; flag: Scotland # E5.0 [1] (🏴󠁧󠁢󠁳󠁣󠁴󠁿)
1F3F4 E0067 E0062 E0077 E006C E0073 E007F; RGI_Emoji_Tag_Sequence; flag: Wales # E5.0 [1] (🏴󠁧󠁢󠁷󠁬󠁳󠁿)
@ -832,7 +818,6 @@
# RGI_Emoji_Modifier_Sequence
261D 1F3FB ; RGI_Emoji_Modifier_Sequence ; index pointing up: light skin tone # E1.0 [1] (☝🏻)
261D 1F3FC ; RGI_Emoji_Modifier_Sequence ; index pointing up: medium-light skin tone # E1.0 [1] (☝🏼)
261D 1F3FD ; RGI_Emoji_Modifier_Sequence ; index pointing up: medium skin tone # E1.0 [1] (☝🏽)
@ -1238,11 +1223,11 @@
1F91C 1F3FD ; RGI_Emoji_Modifier_Sequence ; right-facing fist: medium skin tone # E3.0 [1] (🤜🏽)
1F91C 1F3FE ; RGI_Emoji_Modifier_Sequence ; right-facing fist: medium-dark skin tone # E3.0 [1] (🤜🏾)
1F91C 1F3FF ; RGI_Emoji_Modifier_Sequence ; right-facing fist: dark skin tone # E3.0 [1] (🤜🏿)
1F91D 1F3FB ; RGI_Emoji_Modifier_Sequence ; handshake: light skin tone # E14.0 [1] (🤝🏻)
1F91D 1F3FC ; RGI_Emoji_Modifier_Sequence ; handshake: medium-light skin tone # E14.0 [1] (🤝🏼)
1F91D 1F3FD ; RGI_Emoji_Modifier_Sequence ; handshake: medium skin tone # E14.0 [1] (🤝🏽)
1F91D 1F3FE ; RGI_Emoji_Modifier_Sequence ; handshake: medium-dark skin tone # E14.0 [1] (🤝🏾)
1F91D 1F3FF ; RGI_Emoji_Modifier_Sequence ; handshake: dark skin tone # E14.0 [1] (🤝🏿)
1F91D 1F3FB ; RGI_Emoji_Modifier_Sequence ; handshake: light skin tone # E3.0 [1] (🤝🏻)
1F91D 1F3FC ; RGI_Emoji_Modifier_Sequence ; handshake: medium-light skin tone # E3.0 [1] (🤝🏼)
1F91D 1F3FD ; RGI_Emoji_Modifier_Sequence ; handshake: medium skin tone # E3.0 [1] (🤝🏽)
1F91D 1F3FE ; RGI_Emoji_Modifier_Sequence ; handshake: medium-dark skin tone # E3.0 [1] (🤝🏾)
1F91D 1F3FF ; RGI_Emoji_Modifier_Sequence ; handshake: dark skin tone # E3.0 [1] (🤝🏿)
1F91E 1F3FB ; RGI_Emoji_Modifier_Sequence ; crossed fingers: light skin tone # E3.0 [1] (🤞🏻)
1F91E 1F3FC ; RGI_Emoji_Modifier_Sequence ; crossed fingers: medium-light skin tone # E3.0 [1] (🤞🏼)
1F91E 1F3FD ; RGI_Emoji_Modifier_Sequence ; crossed fingers: medium skin tone # E3.0 [1] (🤞🏽)
@ -1478,17 +1463,7 @@
1FAF6 1F3FD ; RGI_Emoji_Modifier_Sequence ; heart hands: medium skin tone # E14.0 [1] (🫶🏽)
1FAF6 1F3FE ; RGI_Emoji_Modifier_Sequence ; heart hands: medium-dark skin tone # E14.0 [1] (🫶🏾)
1FAF6 1F3FF ; RGI_Emoji_Modifier_Sequence ; heart hands: dark skin tone # E14.0 [1] (🫶🏿)
1FAF7 1F3FB ; RGI_Emoji_Modifier_Sequence ; leftwards pushing hand: light skin tone # E15.0 [1] (🫷🏻)
1FAF7 1F3FC ; RGI_Emoji_Modifier_Sequence ; leftwards pushing hand: medium-light skin tone # E15.0 [1] (🫷🏼)
1FAF7 1F3FD ; RGI_Emoji_Modifier_Sequence ; leftwards pushing hand: medium skin tone # E15.0 [1] (🫷🏽)
1FAF7 1F3FE ; RGI_Emoji_Modifier_Sequence ; leftwards pushing hand: medium-dark skin tone # E15.0 [1] (🫷🏾)
1FAF7 1F3FF ; RGI_Emoji_Modifier_Sequence ; leftwards pushing hand: dark skin tone # E15.0 [1] (🫷🏿)
1FAF8 1F3FB ; RGI_Emoji_Modifier_Sequence ; rightwards pushing hand: light skin tone # E15.0 [1] (🫸🏻)
1FAF8 1F3FC ; RGI_Emoji_Modifier_Sequence ; rightwards pushing hand: medium-light skin tone # E15.0 [1] (🫸🏼)
1FAF8 1F3FD ; RGI_Emoji_Modifier_Sequence ; rightwards pushing hand: medium skin tone # E15.0 [1] (🫸🏽)
1FAF8 1F3FE ; RGI_Emoji_Modifier_Sequence ; rightwards pushing hand: medium-dark skin tone # E15.0 [1] (🫸🏾)
1FAF8 1F3FF ; RGI_Emoji_Modifier_Sequence ; rightwards pushing hand: dark skin tone # E15.0 [1] (🫸🏿)
# Total elements: 655
# Total elements: 645
#EOF

File diff suppressed because it is too large Load diff

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