diff options
| author | Michael R. Mauger | 2017-07-03 15:32:41 -0400 |
|---|---|---|
| committer | Michael R. Mauger | 2017-07-03 15:32:41 -0400 |
| commit | 776635c01abd4aa759e7aa9584b513146978568c (patch) | |
| tree | 554f444bc96cb6b05435e8bf195de4df1b00df8f /admin | |
| parent | 77083e2d34ba5559ae2899d3b03cf08c2e6c5ad4 (diff) | |
| parent | 4cd0db3d6e6e4d5bd49283483bdafbbfc0f583f1 (diff) | |
| download | emacs-776635c01abd4aa759e7aa9584b513146978568c.tar.gz emacs-776635c01abd4aa759e7aa9584b513146978568c.zip | |
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
Diffstat (limited to 'admin')
| -rw-r--r-- | admin/admin.el | 9 | ||||
| -rw-r--r-- | admin/authors.el | 127 | ||||
| -rwxr-xr-x | admin/merge-gnulib | 12 | ||||
| -rw-r--r-- | admin/notes/repo | 7 | ||||
| -rw-r--r-- | admin/unidata/Makefile.in | 45 | ||||
| -rw-r--r-- | admin/unidata/README | 4 | ||||
| -rw-r--r-- | admin/unidata/SpecialCasing.txt | 281 | ||||
| -rw-r--r-- | admin/unidata/unidata-gen.el | 603 | ||||
| -rwxr-xr-x | admin/update_autogen | 22 |
9 files changed, 775 insertions, 335 deletions
diff --git a/admin/admin.el b/admin/admin.el index 5428e3a10bc..e81e7f1e7e1 100644 --- a/admin/admin.el +++ b/admin/admin.el | |||
| @@ -655,7 +655,10 @@ style=\"text-align:left\">") | |||
| 655 | ("@GZIP_PROG@" . "gzip") | 655 | ("@GZIP_PROG@" . "gzip") |
| 656 | ("@INSTALL@" . "install -c") | 656 | ("@INSTALL@" . "install -c") |
| 657 | ("@INSTALL_DATA@" . "${INSTALL} -m 644") | 657 | ("@INSTALL_DATA@" . "${INSTALL} -m 644") |
| 658 | ("@configure_input@" . "")) | 658 | ("@configure_input@" . "") |
| 659 | ("@AM_DEFAULT_VERBOSITY@" . "0") | ||
| 660 | ("@AM_V@" . "${V}") | ||
| 661 | ("@AM_DEFAULT_V@" . "${AM_DEFAULT_VERBOSITY}")) | ||
| 659 | "Alist of (REGEXP . REPLACEMENT) pairs for `make-manuals-dist'.") | 662 | "Alist of (REGEXP . REPLACEMENT) pairs for `make-manuals-dist'.") |
| 660 | 663 | ||
| 661 | (defun make-manuals-dist--1 (root type) | 664 | (defun make-manuals-dist--1 (root type) |
| @@ -675,7 +678,9 @@ style=\"text-align:left\">") | |||
| 675 | (delete-directory stem t)) | 678 | (delete-directory stem t)) |
| 676 | (make-directory stem) | 679 | (make-directory stem) |
| 677 | (copy-file "../doc/misc/texinfo.tex" stem) | 680 | (copy-file "../doc/misc/texinfo.tex" stem) |
| 678 | (or (equal type "emacs") (copy-file "../doc/emacs/emacsver.texi" stem)) | 681 | (unless (equal type "emacs") |
| 682 | (copy-file "../doc/emacs/emacsver.texi" stem) | ||
| 683 | (copy-file "../doc/emacs/docstyle.texi" stem)) | ||
| 679 | (dolist (file (directory-files (format "../doc/%s" type) t)) | 684 | (dolist (file (directory-files (format "../doc/%s" type) t)) |
| 680 | (if (or (string-match-p "\\(\\.texi\\'\\|/README\\'\\)" file) | 685 | (if (or (string-match-p "\\(\\.texi\\'\\|/README\\'\\)" file) |
| 681 | (and (equal type "lispintro") | 686 | (and (equal type "lispintro") |
diff --git a/admin/authors.el b/admin/authors.el index d8f56fd9258..86d42be8dc6 100644 --- a/admin/authors.el +++ b/admin/authors.el | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | ;; Copyright (C) 2000-2017 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2000-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Gerd Moellmann <gerd@gnu.org> | 5 | ;; Author: Gerd Moellmann <gerd@gnu.org> |
| 6 | ;; Maintainer: Kim F. Storm <storm@cua.dk> | 6 | ;; Maintainer: emacs-devel@gnu.org |
| 7 | ;; Keywords: maint | 7 | ;; Keywords: maint |
| 8 | ;; Package: emacs | 8 | ;; Package: emacs |
| 9 | 9 | ||
| @@ -27,9 +27,6 @@ | |||
| 27 | ;; Use M-x authors RET to create an *Authors* buffer that can used as | 27 | ;; Use M-x authors RET to create an *Authors* buffer that can used as |
| 28 | ;; or merged with Emacs's AUTHORS file. | 28 | ;; or merged with Emacs's AUTHORS file. |
| 29 | 29 | ||
| 30 | ;; FIXME: This needs to modernized in the light of current practice, | ||
| 31 | ;; which generates a single top-level ChangeLog file from commit logs. | ||
| 32 | |||
| 33 | ;;; Code: | 30 | ;;; Code: |
| 34 | 31 | ||
| 35 | (defvar authors-coding-system 'utf-8 | 32 | (defvar authors-coding-system 'utf-8 |
| @@ -81,6 +78,7 @@ files.") | |||
| 81 | ("François Pinard" "Francois Pinard") | 78 | ("François Pinard" "Francois Pinard") |
| 82 | ("Francesco Potortì" "Francesco Potorti" "Francesco Potorti`") | 79 | ("Francesco Potortì" "Francesco Potorti" "Francesco Potorti`") |
| 83 | ("Frederic Pierresteguy" "Fred Pierresteguy") | 80 | ("Frederic Pierresteguy" "Fred Pierresteguy") |
| 81 | (nil "^FSF") | ||
| 84 | ("Gerd Möllmann" "Gerd Moellmann") | 82 | ("Gerd Möllmann" "Gerd Moellmann") |
| 85 | ("Hallvard B. Furuseth" "Hallvard B Furuseth" "Hallvard Furuseth") | 83 | ("Hallvard B. Furuseth" "Hallvard B Furuseth" "Hallvard Furuseth") |
| 86 | ("Hrvoje Nikšić" "Hrvoje Niksic") | 84 | ("Hrvoje Nikšić" "Hrvoje Niksic") |
| @@ -141,6 +139,7 @@ files.") | |||
| 141 | ("Peter J. Weisberg" "PJ Weisberg") | 139 | ("Peter J. Weisberg" "PJ Weisberg") |
| 142 | ("Peter S. Galbraith" "Peter S Galbraith" "Peter Galbraith") | 140 | ("Peter S. Galbraith" "Peter S Galbraith" "Peter Galbraith") |
| 143 | ("Peter Runestig" "Peter 'luna' Runestig") | 141 | ("Peter Runestig" "Peter 'luna' Runestig") |
| 142 | ("Philipp Stephani" "Philipp .*phst@google") | ||
| 144 | ("Piotr Zieliński" "Piotr Zielinski") | 143 | ("Piotr Zieliński" "Piotr Zielinski") |
| 145 | ("Przemysław Wojnowski" "Przemyslaw Wojnowski") | 144 | ("Przemysław Wojnowski" "Przemyslaw Wojnowski") |
| 146 | ("Rainer Schöpf" "Rainer Schoepf") | 145 | ("Rainer Schöpf" "Rainer Schoepf") |
| @@ -154,6 +153,7 @@ files.") | |||
| 154 | ("Roland B. Roberts" "Roland B Roberts" "Roland Roberts") | 153 | ("Roland B. Roberts" "Roland B Roberts" "Roland Roberts") |
| 155 | ("Ron Schnell" "Ronnie Schnell") | 154 | ("Ron Schnell" "Ronnie Schnell") |
| 156 | ("Rui-Tao Dong" "Rui-Tao Dong ~{6-HpLN~}") | 155 | ("Rui-Tao Dong" "Rui-Tao Dong ~{6-HpLN~}") |
| 156 | ("Ryan Thompson" "Ryan .*rct@thompsonclan") | ||
| 157 | ("Sacha Chua" "Sandra Jean Chua") | 157 | ("Sacha Chua" "Sandra Jean Chua") |
| 158 | ("Sam Steingold" "Sam Shteingold") | 158 | ("Sam Steingold" "Sam Shteingold") |
| 159 | ("Satyaki Das" "Indexed search by Satyaki Das") | 159 | ("Satyaki Das" "Indexed search by Satyaki Das") |
| @@ -170,6 +170,7 @@ files.") | |||
| 170 | ("Takaaki Ota" "Tak Ota") | 170 | ("Takaaki Ota" "Tak Ota") |
| 171 | ("Takahashi Naoto" "Naoto Takahashi") | 171 | ("Takahashi Naoto" "Naoto Takahashi") |
| 172 | ("Teodor Zlatanov" "Ted Zlatanov") | 172 | ("Teodor Zlatanov" "Ted Zlatanov") |
| 173 | (nil "The PCL-CVS Trust") | ||
| 173 | ("Thomas Dye" "Tom Dye") | 174 | ("Thomas Dye" "Tom Dye") |
| 174 | ("Thomas Horsley" "Tom Horsley") ; FIXME ? | 175 | ("Thomas Horsley" "Tom Horsley") ; FIXME ? |
| 175 | ("Thomas Wurgler" "Tom Wurgler") | 176 | ("Thomas Wurgler" "Tom Wurgler") |
| @@ -209,7 +210,7 @@ If REALNAME is nil, ignore that author.") | |||
| 209 | "David O'Toole" | 210 | "David O'Toole" |
| 210 | "Devon Sean McCullough" | 211 | "Devon Sean McCullough" |
| 211 | "Dominique de Waleffe" | 212 | "Dominique de Waleffe" |
| 212 | "Edward O'Connor" | 213 | "Theresa O'Connor" |
| 213 | "Exal de Jesus Garcia Carrillo" | 214 | "Exal de Jesus Garcia Carrillo" |
| 214 | "George McNinch" | 215 | "George McNinch" |
| 215 | "Greg McGary" | 216 | "Greg McGary" |
| @@ -261,7 +262,13 @@ If REALNAME is nil, ignore that author.") | |||
| 261 | "\\.\\(bzr\\|cvs\\|git\\)ignore$" ; obsolete or uninteresting | 262 | "\\.\\(bzr\\|cvs\\|git\\)ignore$" ; obsolete or uninteresting |
| 262 | "\\.arch-inventory$" | 263 | "\\.arch-inventory$" |
| 263 | "ChangeLog\\(\\.[0-9]+\\)?\\'" | 264 | "ChangeLog\\(\\.[0-9]+\\)?\\'" |
| 264 | "automated/data/" ; not interesting | 265 | "\\(automated\\|test\\)/data/" ; not interesting |
| 266 | "cedet/tests/" | ||
| 267 | "test/etags/" | ||
| 268 | "\\`\\(indent\\|automated\\)\\'" "indent/" "mod-test/" | ||
| 269 | "-resources/" | ||
| 270 | "unidata/.*\\.txt\\'" | ||
| 271 | "BidiCharacterTest.txt" | ||
| 265 | ;; TODO lib/? Matches other things? | 272 | ;; TODO lib/? Matches other things? |
| 266 | "build-aux/" "m4/" "Emacs.xcodeproj" "mapfiles" "\\.map\\'" | 273 | "build-aux/" "m4/" "Emacs.xcodeproj" "mapfiles" "\\.map\\'" |
| 267 | "preferences\\.\\(nib\\|gorm\\)" | 274 | "preferences\\.\\(nib\\|gorm\\)" |
| @@ -273,7 +280,8 @@ Changes to files matching one of the regexps in this list are not listed.") | |||
| 273 | 280 | ||
| 274 | (defconst authors-no-scan-regexps | 281 | (defconst authors-no-scan-regexps |
| 275 | '("etc/nxml/" | 282 | '("etc/nxml/" |
| 276 | "automated/data/") | 283 | "test/data/" |
| 284 | "test/.*-resources/") | ||
| 277 | "Lists of regexps matching files not to scan for authorship.") | 285 | "Lists of regexps matching files not to scan for authorship.") |
| 278 | 286 | ||
| 279 | (defconst authors-ignored-files | 287 | (defconst authors-ignored-files |
| @@ -315,6 +323,7 @@ Changes to files matching one of the regexps in this list are not listed.") | |||
| 315 | "*.el" | 323 | "*.el" |
| 316 | ;; Autogen: | 324 | ;; Autogen: |
| 317 | "cus-load.el" "finder-inf.el" "ldefs-boot.el" "loaddefs-boot.el" | 325 | "cus-load.el" "finder-inf.el" "ldefs-boot.el" "loaddefs-boot.el" |
| 326 | "lisp/ldefs-boot-manual.el" "lisp/ldefs-boot-auto.el" | ||
| 318 | "compile" "config.guess" "config.sub" "depcomp" | 327 | "compile" "config.guess" "config.sub" "depcomp" |
| 319 | "autogen/compile" "autogen/config.guess" "autogen/config.in" | 328 | "autogen/compile" "autogen/config.guess" "autogen/config.in" |
| 320 | "autogen/config.sub" "autogen/depcomp" "autogen/install-sh" | 329 | "autogen/config.sub" "autogen/depcomp" "autogen/install-sh" |
| @@ -384,10 +393,12 @@ Changes to files matching one of the regexps in this list are not listed.") | |||
| 384 | ;; Not in gnulib anymore | 393 | ;; Not in gnulib anymore |
| 385 | "lib/qset-acl.c" "lib/qcopy-acl.c" "lib/file-has-acl.c" | 394 | "lib/qset-acl.c" "lib/qcopy-acl.c" "lib/file-has-acl.c" |
| 386 | ;; files from old MS Windows build procedures | 395 | ;; files from old MS Windows build procedures |
| 396 | "nt/gnulib-modules-to-delete.cfg" | ||
| 387 | "makefile.w32-in" | 397 | "makefile.w32-in" |
| 388 | "admin/unidata/makefile.w32-in" | 398 | "admin/unidata/makefile.w32-in" |
| 389 | "unidata/makefile.w32-in" | 399 | "unidata/makefile.w32-in" |
| 390 | "lib/makefile.w32-in" | 400 | "lib/makefile.w32-in" |
| 401 | "lib-src/makefile.w32-in" | ||
| 391 | "leim/makefile.w32-in" | 402 | "leim/makefile.w32-in" |
| 392 | "lisp/makefile.w32-in" | 403 | "lisp/makefile.w32-in" |
| 393 | "src/makefile.w32-in" | 404 | "src/makefile.w32-in" |
| @@ -401,12 +412,13 @@ Changes to files matching one of the regexps in this list are not listed.") | |||
| 401 | "src/paths.h" | 412 | "src/paths.h" |
| 402 | "envadd.bat" | 413 | "envadd.bat" |
| 403 | "multi-install-info.bat" | 414 | "multi-install-info.bat" |
| 404 | "INSTALL.OLD" | 415 | "INSTALL.OLD" "nt/INSTALL.OLD" |
| 405 | "nt/src/paths.h" | 416 | "nt/src/paths.h" |
| 406 | "nmake.defs" | 417 | "nmake.defs" |
| 407 | "gmake.defs" | 418 | "gmake.defs" |
| 408 | "zipdist.bat" | 419 | "zipdist.bat" |
| 409 | "nt/makefile.w32-in" | 420 | "nt/makefile.w32-in" |
| 421 | "nt/subdirs.el" | ||
| 410 | "config.nt" | 422 | "config.nt" |
| 411 | "nextstep/WISHLIST" | 423 | "nextstep/WISHLIST" |
| 412 | ) | 424 | ) |
| @@ -652,9 +664,11 @@ Changes to files in this list are not listed.") | |||
| 652 | "configure" "config.h" | 664 | "configure" "config.h" |
| 653 | "is_exec.c" "sigaction.c" | 665 | "is_exec.c" "sigaction.c" |
| 654 | ;; nt/ | 666 | ;; nt/ |
| 655 | "ebuild.bat" "install.bat" "fast-install.bat" | 667 | "config.nt" "gmake.defs" "gnulib.mk" "nmake.defs" |
| 668 | "ebuild.bat" "envadd.bat" "fast-install.bat" "install.bat" | ||
| 669 | "multi-install-info.bat" "zipdist.bat" | ||
| 656 | "debug.bat.in" "emacs.bat.in" "addsection.c" | 670 | "debug.bat.in" "emacs.bat.in" "addsection.c" |
| 657 | "inc/sys/dir.h" "inc/gettext.h" | 671 | "inc/sys/dir.h" "inc/gettext.h" "nt/inc/socket.h" |
| 658 | "time.h" | 672 | "time.h" |
| 659 | ".gdbinit-union" | 673 | ".gdbinit-union" |
| 660 | "alloca.s" | 674 | "alloca.s" |
| @@ -693,6 +707,7 @@ Changes to files in this list are not listed.") | |||
| 693 | "images/gnus/reverse-smile.xpm" | 707 | "images/gnus/reverse-smile.xpm" |
| 694 | "notes/commits" "notes/changelogs" | 708 | "notes/commits" "notes/changelogs" |
| 695 | "revdiff" ; admin/ | 709 | "revdiff" ; admin/ |
| 710 | "admin/ldefs-clean.el" | ||
| 696 | "vcdiff" "rcs-checkin" "tindex.pl" | 711 | "vcdiff" "rcs-checkin" "tindex.pl" |
| 697 | "mainmake" "sed1.inp" "sed2.inp" "sed3.inp" ; msdos/ | 712 | "mainmake" "sed1.inp" "sed2.inp" "sed3.inp" ; msdos/ |
| 698 | "mac-fix-env.m" | 713 | "mac-fix-env.m" |
| @@ -733,7 +748,10 @@ Changes to files in this list are not listed.") | |||
| 733 | "dns-mode.el" "run-at-time.el" "gnus-encrypt.el" "sha1-el.el" | 748 | "dns-mode.el" "run-at-time.el" "gnus-encrypt.el" "sha1-el.el" |
| 734 | "gnus-gl.el" "gnus.sum.el" "proto-stream.el" "color.el" "color-lab.el" | 749 | "gnus-gl.el" "gnus.sum.el" "proto-stream.el" "color.el" "color-lab.el" |
| 735 | "eww.el" "shr-color.el" "shr.el" "earcon.el" "gnus-audio.el" "encrypt.el" | 750 | "eww.el" "shr-color.el" "shr.el" "earcon.el" "gnus-audio.el" "encrypt.el" |
| 736 | "format-spec.el" "gnus-move.el" | 751 | "format-spec.el" "gnus-move.el" "gnus-sync.el" |
| 752 | "auth-source.el" "ecomplete.el" "gravatar.el" "mailcap.el" "plstore.el" | ||
| 753 | "pop3.el" "qp.el" "registry.el" "rfc2231.el" "rtree.el" | ||
| 754 | "sieve.el" "sieve-mode.el" | ||
| 737 | ;; doc | 755 | ;; doc |
| 738 | "getopt.c" "texindex.c" "news.texi" "vc.texi" "vc2-xtra.texi" | 756 | "getopt.c" "texindex.c" "news.texi" "vc.texi" "vc2-xtra.texi" |
| 739 | "back.texi" "vol1.texi" "vol2.texi" "elisp-covers.texi" "two.el" | 757 | "back.texi" "vol1.texi" "vol2.texi" "elisp-covers.texi" "two.el" |
| @@ -747,7 +765,11 @@ Changes to files in this list are not listed.") | |||
| 747 | ;; lib/ | 765 | ;; lib/ |
| 748 | "lib/stdio.c" "lib/gl_openssl.h" "lib/sigprocmask.c" | 766 | "lib/stdio.c" "lib/gl_openssl.h" "lib/sigprocmask.c" |
| 749 | "lib/pthread_sigprocmask.c" "lib/ldtoastr.c" "lib/dummy.c" | 767 | "lib/pthread_sigprocmask.c" "lib/ldtoastr.c" "lib/dummy.c" |
| 750 | "lib/ignore-value.h" | 768 | "lib/ignore-value.h" "lib/Makefile.am" |
| 769 | "lib/pathmax.h" "lib/stat.c" "lib/strtoul.c" "lib/strtoull.c" | ||
| 770 | "lib/strtoumax.c" "lib/unsetenv.c" | ||
| 771 | "lib/getopt_cdefs.in.h" "lib/getopt_core.h" "lib/getopt_ext.h" | ||
| 772 | "lib/getopt_pfx_core.h" "lib/getopt_pfx_ext.h" | ||
| 751 | ;; lib-src/ | 773 | ;; lib-src/ |
| 752 | "cvtmail.c" "digest-doc.c" "emacsserver.c" "emacstool.c" "env.c" | 774 | "cvtmail.c" "digest-doc.c" "emacsserver.c" "emacstool.c" "env.c" |
| 753 | "etags-vmslib.c" "fakemail.c" "getdate.c" "getopt.h" "getopt1.c" | 775 | "etags-vmslib.c" "fakemail.c" "getdate.c" "getopt.h" "getopt1.c" |
| @@ -763,11 +785,22 @@ Changes to files in this list are not listed.") | |||
| 763 | "emacsclient.c" "etags.c" "hexl.c" "make-docfile.c" "movemail.c" | 785 | "emacsclient.c" "etags.c" "hexl.c" "make-docfile.c" "movemail.c" |
| 764 | "test-distrib.c" "testfile" | 786 | "test-distrib.c" "testfile" |
| 765 | "tpu-edt.doc" ; see below | 787 | "tpu-edt.doc" ; see below |
| 788 | "iso-swed.el" | ||
| 789 | "lisp/obsolete/vc-mcvs.el" | ||
| 766 | "obsolete/vc-mcvs.el" | 790 | "obsolete/vc-mcvs.el" |
| 767 | "nnwarchive.el" | 791 | "nnwarchive.el" |
| 768 | "nnultimate.el" | 792 | "nnultimate.el" |
| 769 | "nnslashdot.el" | 793 | "nnslashdot.el" |
| 794 | "keyswap.el" | ||
| 795 | "mouse-sel.el" | ||
| 796 | "nxml-glyph.el" | ||
| 797 | "tramp-gw.el" | ||
| 770 | "webmail.el" | 798 | "webmail.el" |
| 799 | "biditest.el" | ||
| 800 | "redisplay-testsuite.el" | ||
| 801 | "cedet-utests.el" "ede-tests.el" "semantic-ia-utest.el" | ||
| 802 | "semantic-tests.el" "semantic-utest-c.el" "semantic-utest.el" | ||
| 803 | "srecode-tests.el" "make-test-deps.emacs-lisp" | ||
| 771 | ) | 804 | ) |
| 772 | "File names which are valid, but no longer exist (or cannot be found) | 805 | "File names which are valid, but no longer exist (or cannot be found) |
| 773 | in the repository.") | 806 | in the repository.") |
| @@ -879,11 +912,16 @@ in the repository.") | |||
| 879 | ;; From lisp/ to etc/nxml. | 912 | ;; From lisp/ to etc/nxml. |
| 880 | ("nxml/test.invalid.xml" . "test-invalid.xml") | 913 | ("nxml/test.invalid.xml" . "test-invalid.xml") |
| 881 | ("nxml/test.valid.xml" . "test-valid.xml") | 914 | ("nxml/test.valid.xml" . "test-valid.xml") |
| 915 | ("automated/Makefile.in" . "test/Makefile.in") | ||
| 916 | ("rmailmm.el" . "test/rmailmm.el") | ||
| 882 | ;; The one in lisp is eshell/eshell.el. | 917 | ;; The one in lisp is eshell/eshell.el. |
| 883 | ("eshell.el" . "automated/eshell.el") | 918 | ("eshell.el" . "eshell-tests.el") |
| 884 | ("eshell/esh-test.el" . "automated/eshell.el") | 919 | ("automated/eshell.el" . "eshell-tests.el") |
| 885 | ("automated/cl-lib.el" . "automated/cl-lib-tests.el") | 920 | ("eshell/esh-test.el" . "eshell-tests.el") |
| 886 | ("automated/package-x-test.el" . "automated/package-test.el") | 921 | ("automated/cl-lib.el" . "cl-lib-tests.el") |
| 922 | ("automated/cl-lib-tests.el" . "cl-lib-tests.el") | ||
| 923 | ("automated/package-x-test.el" . "package-tests.el") | ||
| 924 | ("automated/package-test.el" . "package-tests.el") | ||
| 887 | ("indent/js-indent-first-initialiser-t.js" . "indent/js-indent-init-t.js") | 925 | ("indent/js-indent-first-initialiser-t.js" . "indent/js-indent-init-t.js") |
| 888 | ("indent/js-indent-first-initialiser-dynamic.js" . | 926 | ("indent/js-indent-first-initialiser-dynamic.js" . |
| 889 | "indent/js-indent-init-dynamic.js") | 927 | "indent/js-indent-init-dynamic.js") |
| @@ -930,7 +968,20 @@ in the repository.") | |||
| 930 | ("GNU.JOKES" . "JOKES") | 968 | ("GNU.JOKES" . "JOKES") |
| 931 | ("CHARACTERS" . "TODO") | 969 | ("CHARACTERS" . "TODO") |
| 932 | ("lisp/character-fold.el" . "lisp/char-fold.el") | 970 | ("lisp/character-fold.el" . "lisp/char-fold.el") |
| 933 | ("test/automated/character-fold-tests.el" . "test/automated/char-fold-tests.el") | 971 | ("test/automated/character-fold-tests.el" . "char-fold-tests.el") |
| 972 | ("test/automated/char-fold-tests.el" . "char-fold-tests.el") | ||
| 973 | ("test/lisp/character-fold-tests.el" . "char-fold-tests.el") | ||
| 974 | ("test/manual/cycle-tests.el" . "fns-tests.el") | ||
| 975 | ("test/manual/cyclic-tests.el" . "fns-tests.el") | ||
| 976 | ("test/lisp/dns-mode-tests.el" . "dns-mode-tests.el") | ||
| 977 | ("test/lisp/legacy/core-elisp-tests.el" . "lisp-tests.el") | ||
| 978 | ("test/lisp/legacy/decoder-test.el" . "coding-tests.el") | ||
| 979 | ("test/lisp/legacy/files-tests.el" . "files-tests.el") | ||
| 980 | ("test/lisp/legacy/font-parse-tests.el" . "font-tests.el") | ||
| 981 | ("test/lisp/legacy/lexbind-tests.el" . "bytecomp-test.el") | ||
| 982 | ("test/lisp/legacy/occur-tests.el" . "replace-tests.el") | ||
| 983 | ("test/lisp/legacy/syntax-tests.el" . "syntax-tests.el") | ||
| 984 | ("test/file-organisation.org" . "file-organization.org") | ||
| 934 | ("images/gnus/mail_send.xpm" . "mail-send.xpm") ; still in images/gnus | 985 | ("images/gnus/mail_send.xpm" . "mail-send.xpm") ; still in images/gnus |
| 935 | ("schema/xhtml-basic-form.rnc" . "xhtml-bform.rnc" ) | 986 | ("schema/xhtml-basic-form.rnc" . "xhtml-bform.rnc" ) |
| 936 | ("schema/xhtml-basic-table.rnc" . "xhtml-btable.rnc") | 987 | ("schema/xhtml-basic-table.rnc" . "xhtml-btable.rnc") |
| @@ -950,6 +1001,7 @@ in the repository.") | |||
| 950 | ("icons/emacs21.ico" . "emacs21.ico") | 1001 | ("icons/emacs21.ico" . "emacs21.ico") |
| 951 | ("ja-dic" . "leim/ja-dic") | 1002 | ("ja-dic" . "leim/ja-dic") |
| 952 | ("quail" . "leim/quail") | 1003 | ("quail" . "leim/quail") |
| 1004 | ("admin/notes/triage" . "bug-triage") | ||
| 953 | ;; Moved from autogen/ to admin/. | 1005 | ;; Moved from autogen/ to admin/. |
| 954 | ("autogen/update_autogen" . "update_autogen") | 1006 | ("autogen/update_autogen" . "update_autogen") |
| 955 | ;; Moved from etc/ to admin/. | 1007 | ;; Moved from etc/ to admin/. |
| @@ -1040,9 +1092,13 @@ ediff\\|emerge\\|log-edit\\|log-view\\|pcvs\\|smerge-mode\\|vc\\)\\.el\\'" | |||
| 1040 | ;; From test/ to test/automated/. | 1092 | ;; From test/ to test/automated/. |
| 1041 | ("comint-testsuite.el" "automated/\\&") | 1093 | ("comint-testsuite.el" "automated/\\&") |
| 1042 | ("\\`\\(bytecomp\\|font-parse\\|icalendar\\|occur\\|newsticker\\)\ | 1094 | ("\\`\\(bytecomp\\|font-parse\\|icalendar\\|occur\\|newsticker\\)\ |
| 1043 | -testsuite\\.el" "automated/\\1-tests.el") | 1095 | -testsuite\\.el" "\\1-tests.el") |
| 1044 | ("automated/flymake/warnpred/\\(Makefile\\|test\\.\\(?:c\\|pl\\)\\)\\'" | 1096 | ("automated/flymake/warnpred/\\(Makefile\\|test\\.\\(?:c\\|pl\\)\\)\\'" |
| 1045 | "automated/data/flymake/\\1") | 1097 | "automated/data/flymake/\\1") |
| 1098 | ;; More complicated than this, but we only use the basename of the RHS. | ||
| 1099 | ("automated/\\([^/]*-test[^/]*\\.el\\)\\'" "\\1") | ||
| 1100 | ;; Maybe not the exact new name, but disambiguates from lisp/. | ||
| 1101 | ("automated/\\([^/]*\\)\\.el\\'" "\\1-tests.el") | ||
| 1046 | ;; NB lax rules should come last. | 1102 | ;; NB lax rules should come last. |
| 1047 | ("^m/m-\\(.*\\.h\\)$" "m/\\1" t) | 1103 | ("^m/m-\\(.*\\.h\\)$" "m/\\1" t) |
| 1048 | ("^m-\\(.*\\.h\\)$" "\\1" t) | 1104 | ("^m-\\(.*\\.h\\)$" "\\1" t) |
| @@ -1076,6 +1132,7 @@ Additionally, for these logs we apply the `lax' elements of | |||
| 1076 | 1132 | ||
| 1077 | (defvar authors-checked-files-alist) | 1133 | (defvar authors-checked-files-alist) |
| 1078 | (defvar authors-invalid-file-names) | 1134 | (defvar authors-invalid-file-names) |
| 1135 | (defvar authors-ignored-names) | ||
| 1079 | 1136 | ||
| 1080 | ;; This has become rather yucky. :( | 1137 | ;; This has become rather yucky. :( |
| 1081 | (defun authors-disambiguate-file-name (fullname) | 1138 | (defun authors-disambiguate-file-name (fullname) |
| @@ -1218,7 +1275,7 @@ author and what he did in hash table TABLE. See the description of | |||
| 1218 | (nconc entry (list (cons action 1)))))))) | 1275 | (nconc entry (list (cons action 1)))))))) |
| 1219 | 1276 | ||
| 1220 | 1277 | ||
| 1221 | (defun authors-canonical-author-name (author) | 1278 | (defun authors-canonical-author-name (author file pos) |
| 1222 | "Return a canonicalized form of AUTHOR, an author name. | 1279 | "Return a canonicalized form of AUTHOR, an author name. |
| 1223 | If AUTHOR has an entry in `authors-aliases', use that. Remove | 1280 | If AUTHOR has an entry in `authors-aliases', use that. Remove |
| 1224 | email addresses. Capitalize words in the author's name, unless | 1281 | email addresses. Capitalize words in the author's name, unless |
| @@ -1240,7 +1297,11 @@ it is found in `authors-fixed-case'." | |||
| 1240 | (setq author (replace-regexp-in-string "\\`[ \t]+" "" author)) | 1297 | (setq author (replace-regexp-in-string "\\`[ \t]+" "" author)) |
| 1241 | (setq author (replace-regexp-in-string "[ \t]+$" "" author)) | 1298 | (setq author (replace-regexp-in-string "[ \t]+$" "" author)) |
| 1242 | (setq author (replace-regexp-in-string "[ \t]+" " " author)) | 1299 | (setq author (replace-regexp-in-string "[ \t]+" " " author)) |
| 1300 | ;; NB this ignores the first name only case. | ||
| 1243 | (unless (string-match "[-, \t]" author) | 1301 | (unless (string-match "[-, \t]" author) |
| 1302 | (push (format-message "%s:%d: ignored `%s'" | ||
| 1303 | file (1+ (count-lines (point-min) pos)) author) | ||
| 1304 | authors-ignored-names) | ||
| 1244 | (setq author "")) | 1305 | (setq author "")) |
| 1245 | (or (car (member author authors-fixed-case)) | 1306 | (or (car (member author authors-fixed-case)) |
| 1246 | (capitalize author)))) | 1307 | (capitalize author)))) |
| @@ -1282,7 +1343,7 @@ with the file and the number of each action: | |||
| 1282 | Suggested\\|Trivial\\|Version\\|Originally\\|From:\\|Patch[ \t]+[Bb]y\\)"))) | 1343 | Suggested\\|Trivial\\|Version\\|Originally\\|From:\\|Patch[ \t]+[Bb]y\\)"))) |
| 1283 | (push (authors-canonical-author-name | 1344 | (push (authors-canonical-author-name |
| 1284 | (buffer-substring-no-properties | 1345 | (buffer-substring-no-properties |
| 1285 | (point) (line-end-position))) authors) | 1346 | (point) (line-end-position)) log-file pos) authors) |
| 1286 | (forward-line 1))) | 1347 | (forward-line 1))) |
| 1287 | ((looking-at "^[ \t]+\\*") | 1348 | ((looking-at "^[ \t]+\\*") |
| 1288 | (let ((line (buffer-substring-no-properties | 1349 | (let ((line (buffer-substring-no-properties |
| @@ -1315,7 +1376,7 @@ TABLE is a hash table to add author information to." | |||
| 1315 | (enable-local-variables :safe) ; for find-file, hence let* | 1376 | (enable-local-variables :safe) ; for find-file, hence let* |
| 1316 | (enable-local-eval nil) | 1377 | (enable-local-eval nil) |
| 1317 | (buffer (find-file-noselect file))) | 1378 | (buffer (find-file-noselect file))) |
| 1318 | (setq file (authors-disambiguate-file-name (expand-file-name file))) | 1379 | (setq file (expand-file-name file)) |
| 1319 | (with-current-buffer buffer | 1380 | (with-current-buffer buffer |
| 1320 | (save-restriction | 1381 | (save-restriction |
| 1321 | (widen) | 1382 | (widen) |
| @@ -1332,7 +1393,8 @@ TABLE is a hash table to add author information to." | |||
| 1332 | (skip-chars-forward "-0-9 \t") | 1393 | (skip-chars-forward "-0-9 \t") |
| 1333 | (push (authors-canonical-author-name | 1394 | (push (authors-canonical-author-name |
| 1334 | (buffer-substring-no-properties | 1395 | (buffer-substring-no-properties |
| 1335 | (point) (line-end-position))) authors) | 1396 | (point) (line-end-position)) |
| 1397 | file (line-beginning-position)) authors) | ||
| 1336 | ;; tips.texi says the continuation line should begin | 1398 | ;; tips.texi says the continuation line should begin |
| 1337 | ;; with a tab, but often spaces are used. | 1399 | ;; with a tab, but often spaces are used. |
| 1338 | (setq continue | 1400 | (setq continue |
| @@ -1343,7 +1405,9 @@ TABLE is a hash table to add author information to." | |||
| 1343 | (and (> (length authors) 1) | 1405 | (and (> (length authors) 1) |
| 1344 | (setq action :cowrote)) | 1406 | (setq action :cowrote)) |
| 1345 | (mapc (lambda (author) | 1407 | (mapc (lambda (author) |
| 1346 | (authors-add author file action table)) | 1408 | (authors-add |
| 1409 | author | ||
| 1410 | (authors-disambiguate-file-name file) action table)) | ||
| 1347 | authors))))) | 1411 | authors))))) |
| 1348 | (unless existing-buffer | 1412 | (unless existing-buffer |
| 1349 | (kill-buffer buffer)))) | 1413 | (kill-buffer buffer)))) |
| @@ -1434,7 +1498,8 @@ and a buffer *Authors Errors* containing references to unknown files." | |||
| 1434 | (table (make-hash-table :test 'equal)) | 1498 | (table (make-hash-table :test 'equal)) |
| 1435 | (buffer-name "*Authors*") | 1499 | (buffer-name "*Authors*") |
| 1436 | authors-checked-files-alist | 1500 | authors-checked-files-alist |
| 1437 | authors-invalid-file-names) | 1501 | authors-invalid-file-names |
| 1502 | authors-ignored-names) | ||
| 1438 | (authors-add-fixed-entries table) | 1503 | (authors-add-fixed-entries table) |
| 1439 | (dolist (log logs) | 1504 | (dolist (log logs) |
| 1440 | (when (string-match "ChangeLog\\(.[0-9]+\\)?$" log) | 1505 | (when (string-match "ChangeLog\\(.[0-9]+\\)?$" log) |
| @@ -1498,14 +1563,20 @@ list of their contributions.\n") | |||
| 1498 | (symbol-name authors-coding-system) "\nEnd:\n") | 1563 | (symbol-name authors-coding-system) "\nEnd:\n") |
| 1499 | (message "Generating buffer %s... done" buffer-name) | 1564 | (message "Generating buffer %s... done" buffer-name) |
| 1500 | (unless noninteractive | 1565 | (unless noninteractive |
| 1501 | (when authors-invalid-file-names | 1566 | (when (or authors-invalid-file-names authors-ignored-names) |
| 1502 | (with-current-buffer (get-buffer-create "*Authors Errors*") | 1567 | (with-current-buffer (get-buffer-create "*Authors Errors*") |
| 1503 | (setq buffer-read-only nil) | 1568 | (setq buffer-read-only nil) |
| 1504 | (erase-buffer) | 1569 | (erase-buffer) |
| 1505 | (set-buffer-file-coding-system authors-coding-system) | 1570 | (set-buffer-file-coding-system authors-coding-system) |
| 1506 | (insert "Unrecognized file entries found:\n\n") | 1571 | (when authors-invalid-file-names |
| 1507 | (mapc (lambda (f) (if (not (string-match "^[A-Za-z]+$" f)) (insert f "\n"))) | 1572 | (insert "Unrecognized file entries found:\n\n") |
| 1508 | (sort authors-invalid-file-names 'string-lessp)) | 1573 | (mapc (lambda (f) (if (not (string-match "^[A-Za-z]+$" f)) (insert f "\n"))) |
| 1574 | (sort authors-invalid-file-names 'string-lessp))) | ||
| 1575 | (when authors-ignored-names | ||
| 1576 | (insert "\n\nThese authors were ignored:\n\n" | ||
| 1577 | (mapconcat | ||
| 1578 | 'identity | ||
| 1579 | (sort authors-ignored-names 'string-lessp) "\n"))) | ||
| 1509 | (goto-char (point-min)) | 1580 | (goto-char (point-min)) |
| 1510 | (compilation-mode) | 1581 | (compilation-mode) |
| 1511 | (message "Errors were found. See buffer %s" (buffer-name)))) | 1582 | (message "Errors were found. See buffer %s" (buffer-name)))) |
diff --git a/admin/merge-gnulib b/admin/merge-gnulib index 52fcd41b1cd..85921ba1ba6 100755 --- a/admin/merge-gnulib +++ b/admin/merge-gnulib | |||
| @@ -30,17 +30,17 @@ GNULIB_MODULES=' | |||
| 30 | careadlinkat close-stream | 30 | careadlinkat close-stream |
| 31 | count-leading-zeros count-one-bits count-trailing-zeros | 31 | count-leading-zeros count-one-bits count-trailing-zeros |
| 32 | crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 | 32 | crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 |
| 33 | dtoastr dtotimespec dup2 environ execinfo faccessat | 33 | diffseq dtoastr dtotimespec dup2 environ execinfo faccessat |
| 34 | fcntl fcntl-h fdatasync fdopendir | 34 | fcntl fcntl-h fdatasync fdopendir |
| 35 | filemode filevercmp flexmember fstatat fsync | 35 | filemode filevercmp flexmember fstatat fsync |
| 36 | getloadavg getopt-gnu gettime gettimeofday gitlog-to-changelog | 36 | getloadavg getopt-gnu gettime gettimeofday gitlog-to-changelog |
| 37 | ignore-value intprops largefile lstat | 37 | ignore-value intprops largefile lstat |
| 38 | manywarnings memrchr mkostemp mktime | 38 | manywarnings memrchr minmax mkostemp mktime |
| 39 | pipe2 pselect pthread_sigmask putenv qcopy-acl readlink readlinkat | 39 | pipe2 pselect pthread_sigmask putenv qcopy-acl readlink readlinkat |
| 40 | sig2str socklen stat-time std-gnu11 stdalign stddef stdio | 40 | sig2str socklen stat-time std-gnu11 stdalign stddef stdio |
| 41 | stpcpy strftime strtoimax strtoumax symlink sys_stat | 41 | stpcpy strftime strtoimax symlink sys_stat |
| 42 | sys_time time time_r time_rz timegm timer-time timespec-add timespec-sub | 42 | sys_time time time_r time_rz timegm timer-time timespec-add timespec-sub |
| 43 | update-copyright utimens | 43 | update-copyright unlocked-io utimens |
| 44 | vla warnings | 44 | vla warnings |
| 45 | ' | 45 | ' |
| 46 | 46 | ||
| @@ -48,8 +48,8 @@ AVOIDED_MODULES=' | |||
| 48 | close dup fchdir fstat | 48 | close dup fchdir fstat |
| 49 | malloc-posix msvc-inval msvc-nothrow | 49 | malloc-posix msvc-inval msvc-nothrow |
| 50 | open openat-die opendir raise | 50 | open openat-die opendir raise |
| 51 | save-cwd select setenv sigprocmask stdarg stdbool | 51 | save-cwd select setenv sigprocmask stat stdarg stdbool |
| 52 | threadlib unsetenv | 52 | threadlib tzset unsetenv utime utime-h |
| 53 | ' | 53 | ' |
| 54 | 54 | ||
| 55 | GNULIB_TOOL_FLAGS=' | 55 | GNULIB_TOOL_FLAGS=' |
diff --git a/admin/notes/repo b/admin/notes/repo index 3ab3da78071..0da1e1e227a 100644 --- a/admin/notes/repo +++ b/admin/notes/repo | |||
| @@ -1,12 +1,5 @@ | |||
| 1 | NOTES ON COMMITTING TO EMACS'S REPOSITORY -*- outline -*- | 1 | NOTES ON COMMITTING TO EMACS'S REPOSITORY -*- outline -*- |
| 2 | 2 | ||
| 3 | ** elpa | ||
| 4 | |||
| 5 | This branch does not contain a copy of Emacs, but of the Emacs Lisp | ||
| 6 | package archive (elpa.gnu.org). See admin/notes/elpa for further | ||
| 7 | explanation, and the README file in the branch for usage | ||
| 8 | instructions. | ||
| 9 | |||
| 10 | * Install changes only on one branch, let them get merged elsewhere if needed. | 3 | * Install changes only on one branch, let them get merged elsewhere if needed. |
| 11 | 4 | ||
| 12 | In particular, install bug-fixes only on the release branch (if there | 5 | In particular, install bug-fixes only on the release branch (if there |
diff --git a/admin/unidata/Makefile.in b/admin/unidata/Makefile.in index f58303b6d76..5cc43bc3718 100644 --- a/admin/unidata/Makefile.in +++ b/admin/unidata/Makefile.in | |||
| @@ -33,6 +33,9 @@ EMACS = ${top_builddir}/src/emacs | |||
| 33 | unidir = ${top_srcdir}/lisp/international | 33 | unidir = ${top_srcdir}/lisp/international |
| 34 | emacs = "${EMACS}" -batch --no-site-file --no-site-lisp | 34 | emacs = "${EMACS}" -batch --no-site-file --no-site-lisp |
| 35 | 35 | ||
| 36 | lparen = ( | ||
| 37 | unifiles = $(addprefix ${unidir}/,$(sort $(shell sed -n 's/^[ \t][ \t]*${lparen}"\(uni-[^"]*\)"$$/\1/p' ${srcdir}/unidata-gen.el))) | ||
| 38 | |||
| 36 | # 'make' verbosity. | 39 | # 'make' verbosity. |
| 37 | AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ | 40 | AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ |
| 38 | 41 | ||
| @@ -51,9 +54,10 @@ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) | |||
| 51 | am__v_at_0 = @ | 54 | am__v_at_0 = @ |
| 52 | am__v_at_1 = | 55 | am__v_at_1 = |
| 53 | 56 | ||
| 54 | .PHONY: all unifiles | 57 | .PHONY: all |
| 55 | 58 | ||
| 56 | all: ${top_srcdir}/src/macuvs.h unifiles ${unidir}/charscript.el | 59 | all: ${top_srcdir}/src/macuvs.h ${unifiles} ${unidir}/charscript.el \ |
| 60 | ${unidir}/charprop.el | ||
| 57 | 61 | ||
| 58 | ## Specify .elc as an order-only prereq so as to not needlessly rebuild | 62 | ## Specify .elc as an order-only prereq so as to not needlessly rebuild |
| 59 | ## target just because the .elc is missing. | 63 | ## target just because the .elc is missing. |
| @@ -71,30 +75,21 @@ unidata.txt: ${srcdir}/UnicodeData.txt | |||
| 71 | $(AM_V_GEN)sed -e 's/\([^;]*\);\(.*\)/(#x\1 "\2")/' -e 's/;/" "/g' \ | 75 | $(AM_V_GEN)sed -e 's/\([^;]*\);\(.*\)/(#x\1 "\2")/' -e 's/;/" "/g' \ |
| 72 | < $< > $@ | 76 | < $< > $@ |
| 73 | 77 | ||
| 74 | PHONY_EXTRAS = | 78 | ## charprop doesn't actually depend on unifiles, but for now at least |
| 75 | .PHONY: $(PHONY_EXTRAS) | 79 | ## pretend that it does since other Makefiles assume that if charprop |
| 80 | ## is up-to-date, the unifiles are too. | ||
| 81 | ${unidir}/charprop.el: ${unifiles} ${srcdir}/unidata-gen.el | ${srcdir}/unidata-gen.elc | ||
| 82 | $(AM_V_at)[ ! -f $@ ] || chmod +w $@ | ||
| 83 | $(AM_V_GEN)${emacs} -L ${srcdir} -l unidata-gen \ | ||
| 84 | -f unidata-gen-charprop $@ | ||
| 76 | 85 | ||
| 77 | ${unidir}/charprop.el: ${srcdir}/unidata-gen.el \ | 86 | ${unifiles}: ${srcdir}/unidata-gen.el \ |
| 78 | ${srcdir}/UnicodeData.txt ${srcdir}/BidiMirroring.txt \ | 87 | ${srcdir}/UnicodeData.txt ${srcdir}/BidiMirroring.txt \ |
| 79 | ${srcdir}/BidiBrackets.txt | \ | 88 | ${srcdir}/BidiBrackets.txt | \ |
| 80 | ${srcdir}/unidata-gen.elc unidata.txt | 89 | ${srcdir}/unidata-gen.elc unidata.txt |
| 81 | ifneq (,$(wildcard $@)) | 90 | $(AM_V_at)[ ! -f $@ ] || chmod +w $@ |
| 82 | $(AM_V_at)cd $(unidir) && \ | 91 | $(AM_V_GEN)${emacs} -L ${srcdir} -l unidata-gen \ |
| 83 | for f in charprop.el `sed -n 's/^;; FILE: //p' < charprop.el`; do \ | 92 | -f unidata-gen-file $@ ${srcdir} |
| 84 | [ ! -f $$f ] || [ -w $$f ] || chmod +w $$f || exit; \ | ||
| 85 | done | ||
| 86 | endif | ||
| 87 | $(AM_V_GEN)${emacs} -L ${srcdir} -l unidata-gen -f unidata-gen-files \ | ||
| 88 | ${srcdir} "${unidir}" | ||
| 89 | |||
| 90 | ## Check for deleted uni- files, and if any such, force a rebuild. | ||
| 91 | ## Perhaps a more elegant way would be for the previous rule | ||
| 92 | ## to generate a Makefile fragment explicitly listing the uni- files, | ||
| 93 | ## which this file could include. If no fragment, rebuild everything. | ||
| 94 | unifiles: ${unidir}/charprop.el | ||
| 95 | $(AM_V_at)for f in `sed -n 's/^;; FILE: //p' < $<`; do \ | ||
| 96 | [ -f $(unidir)/$$f ] || exec $(MAKE) PHONY_EXTRAS=$< $<; \ | ||
| 97 | done | ||
| 98 | 93 | ||
| 99 | 94 | ||
| 100 | .PHONY: charscript.el | 95 | .PHONY: charscript.el |
| @@ -123,7 +118,5 @@ maintainer-clean: distclean | |||
| 123 | ## Cf leim/ja-dic (which is much slower). | 118 | ## Cf leim/ja-dic (which is much slower). |
| 124 | extraclean: | 119 | extraclean: |
| 125 | rm -f ${top_srcdir}/src/macuvs.h ${unidir}/charscript.el* | 120 | rm -f ${top_srcdir}/src/macuvs.h ${unidir}/charscript.el* |
| 126 | ifneq (,$(wildcard $(unidir)/charprop.el)) | 121 | rm -f ${unifiles} ${unidir}/charprop.el |
| 127 | cd $(unidir) && \ | 122 | |
| 128 | rm -f `sed -n 's/^;; FILE: //p' < charprop.el` charprop.el | ||
| 129 | endif | ||
diff --git a/admin/unidata/README b/admin/unidata/README index 534670ce6db..06a66663a72 100644 --- a/admin/unidata/README +++ b/admin/unidata/README | |||
| @@ -24,3 +24,7 @@ http://www.unicode.org/Public/8.0.0/ucd/Blocks.txt | |||
| 24 | NormalizationTest.txt | 24 | NormalizationTest.txt |
| 25 | http://www.unicode.org/Public/UNIDATA/NormalizationTest.txt | 25 | http://www.unicode.org/Public/UNIDATA/NormalizationTest.txt |
| 26 | 2016-07-16 | 26 | 2016-07-16 |
| 27 | |||
| 28 | SpecialCasing.txt | ||
| 29 | http://unicode.org/Public/UNIDATA/SpecialCasing.txt | ||
| 30 | 2016-03-03 | ||
diff --git a/admin/unidata/SpecialCasing.txt b/admin/unidata/SpecialCasing.txt new file mode 100644 index 00000000000..b23fa7f7680 --- /dev/null +++ b/admin/unidata/SpecialCasing.txt | |||
| @@ -0,0 +1,281 @@ | |||
| 1 | # SpecialCasing-9.0.0.txt | ||
| 2 | # Date: 2016-03-02, 18:55:13 GMT | ||
| 3 | # © 2016 Unicode®, Inc. | ||
| 4 | # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. | ||
| 5 | # For terms of use, see http://www.unicode.org/terms_of_use.html | ||
| 6 | # | ||
| 7 | # Unicode Character Database | ||
| 8 | # For documentation, see http://www.unicode.org/reports/tr44/ | ||
| 9 | # | ||
| 10 | # Special Casing | ||
| 11 | # | ||
| 12 | # This file is a supplement to the UnicodeData.txt file. It does not define any | ||
| 13 | # properties, but rather provides additional information about the casing of | ||
| 14 | # Unicode characters, for situations when casing incurs a change in string length | ||
| 15 | # or is dependent on context or locale. For compatibility, the UnicodeData.txt | ||
| 16 | # file only contains simple case mappings for characters where they are one-to-one | ||
| 17 | # and independent of context and language. The data in this file, combined with | ||
| 18 | # the simple case mappings in UnicodeData.txt, defines the full case mappings | ||
| 19 | # Lowercase_Mapping (lc), Titlecase_Mapping (tc), and Uppercase_Mapping (uc). | ||
| 20 | # | ||
| 21 | # Note that the preferred mechanism for defining tailored casing operations is | ||
| 22 | # the Unicode Common Locale Data Repository (CLDR). For more information, see the | ||
| 23 | # discussion of case mappings and case algorithms in the Unicode Standard. | ||
| 24 | # | ||
| 25 | # All code points not listed in this file that do not have a simple case mappings | ||
| 26 | # in UnicodeData.txt map to themselves. | ||
| 27 | # ================================================================================ | ||
| 28 | # Format | ||
| 29 | # ================================================================================ | ||
| 30 | # The entries in this file are in the following machine-readable format: | ||
| 31 | # | ||
| 32 | # <code>; <lower>; <title>; <upper>; (<condition_list>;)? # <comment> | ||
| 33 | # | ||
| 34 | # <code>, <lower>, <title>, and <upper> provide the respective full case mappings | ||
| 35 | # of <code>, expressed as character values in hex. If there is more than one character, | ||
| 36 | # they are separated by spaces. Other than as used to separate elements, spaces are | ||
| 37 | # to be ignored. | ||
| 38 | # | ||
| 39 | # The <condition_list> is optional. Where present, it consists of one or more language IDs | ||
| 40 | # or casing contexts, separated by spaces. In these conditions: | ||
| 41 | # - A condition list overrides the normal behavior if all of the listed conditions are true. | ||
| 42 | # - The casing context is always the context of the characters in the original string, | ||
| 43 | # NOT in the resulting string. | ||
| 44 | # - Case distinctions in the condition list are not significant. | ||
| 45 | # - Conditions preceded by "Not_" represent the negation of the condition. | ||
| 46 | # The condition list is not represented in the UCD as a formal property. | ||
| 47 | # | ||
| 48 | # A language ID is defined by BCP 47, with '-' and '_' treated equivalently. | ||
| 49 | # | ||
| 50 | # A casing context for a character is defined by Section 3.13 Default Case Algorithms | ||
| 51 | # of The Unicode Standard. | ||
| 52 | # | ||
| 53 | # Parsers of this file must be prepared to deal with future additions to this format: | ||
| 54 | # * Additional contexts | ||
| 55 | # * Additional fields | ||
| 56 | # ================================================================================ | ||
| 57 | |||
| 58 | # ================================================================================ | ||
| 59 | # Unconditional mappings | ||
| 60 | # ================================================================================ | ||
| 61 | |||
| 62 | # The German es-zed is special--the normal mapping is to SS. | ||
| 63 | # Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>)) | ||
| 64 | |||
| 65 | 00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S | ||
| 66 | |||
| 67 | # Preserve canonical equivalence for I with dot. Turkic is handled below. | ||
| 68 | |||
| 69 | 0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE | ||
| 70 | |||
| 71 | # Ligatures | ||
| 72 | |||
| 73 | FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF | ||
| 74 | FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI | ||
| 75 | FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL | ||
| 76 | FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI | ||
| 77 | FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL | ||
| 78 | FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T | ||
| 79 | FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST | ||
| 80 | |||
| 81 | 0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN | ||
| 82 | FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW | ||
| 83 | FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH | ||
| 84 | FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI | ||
| 85 | FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW | ||
| 86 | FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH | ||
| 87 | |||
| 88 | # No corresponding uppercase precomposed character | ||
| 89 | |||
| 90 | 0149; 0149; 02BC 004E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE | ||
| 91 | 0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS | ||
| 92 | 03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS | ||
| 93 | 01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON | ||
| 94 | 1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW | ||
| 95 | 1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS | ||
| 96 | 1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE | ||
| 97 | 1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE | ||
| 98 | 1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING | ||
| 99 | 1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI | ||
| 100 | 1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA | ||
| 101 | 1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA | ||
| 102 | 1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI | ||
| 103 | 1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI | ||
| 104 | 1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI | ||
| 105 | 1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA | ||
| 106 | 1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA | ||
| 107 | 1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI | ||
| 108 | 1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI | ||
| 109 | 1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA | ||
| 110 | 1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA | ||
| 111 | 1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI | ||
| 112 | 1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI | ||
| 113 | 1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI | ||
| 114 | 1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI | ||
| 115 | |||
| 116 | # IMPORTANT-when iota-subscript (0345) is uppercased or titlecased, | ||
| 117 | # the result will be incorrect unless the iota-subscript is moved to the end | ||
| 118 | # of any sequence of combining marks. Otherwise, the accents will go on the capital iota. | ||
| 119 | # This process can be achieved by first transforming the text to NFC before casing. | ||
| 120 | # E.g. <alpha><iota_subscript><acute> is uppercased to <ALPHA><acute><IOTA> | ||
| 121 | |||
| 122 | # The following cases are already in the UnicodeData.txt file, so are only commented here. | ||
| 123 | |||
| 124 | # 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI | ||
| 125 | |||
| 126 | # All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript) | ||
| 127 | # have special uppercases. | ||
| 128 | # Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase! | ||
| 129 | |||
| 130 | 1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI | ||
| 131 | 1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI | ||
| 132 | 1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI | ||
| 133 | 1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI | ||
| 134 | 1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI | ||
| 135 | 1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI | ||
| 136 | 1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI | ||
| 137 | 1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI | ||
| 138 | 1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI | ||
| 139 | 1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI | ||
| 140 | 1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI | ||
| 141 | 1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI | ||
| 142 | 1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI | ||
| 143 | 1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI | ||
| 144 | 1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI | ||
| 145 | 1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI | ||
| 146 | 1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI | ||
| 147 | 1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI | ||
| 148 | 1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI | ||
| 149 | 1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI | ||
| 150 | 1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI | ||
| 151 | 1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI | ||
| 152 | 1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI | ||
| 153 | 1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI | ||
| 154 | 1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI | ||
| 155 | 1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI | ||
| 156 | 1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI | ||
| 157 | 1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI | ||
| 158 | 1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI | ||
| 159 | 1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI | ||
| 160 | 1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI | ||
| 161 | 1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI | ||
| 162 | 1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI | ||
| 163 | 1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI | ||
| 164 | 1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI | ||
| 165 | 1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI | ||
| 166 | 1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI | ||
| 167 | 1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI | ||
| 168 | 1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI | ||
| 169 | 1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI | ||
| 170 | 1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI | ||
| 171 | 1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI | ||
| 172 | 1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI | ||
| 173 | 1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI | ||
| 174 | 1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI | ||
| 175 | 1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI | ||
| 176 | 1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI | ||
| 177 | 1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI | ||
| 178 | 1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI | ||
| 179 | 1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI | ||
| 180 | 1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI | ||
| 181 | 1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI | ||
| 182 | 1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI | ||
| 183 | 1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI | ||
| 184 | |||
| 185 | # Some characters with YPOGEGRAMMENI also have no corresponding titlecases | ||
| 186 | |||
| 187 | 1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI | ||
| 188 | 1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI | ||
| 189 | 1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI | ||
| 190 | 1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI | ||
| 191 | 1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI | ||
| 192 | 1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI | ||
| 193 | |||
| 194 | 1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI | ||
| 195 | 1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI | ||
| 196 | 1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI | ||
| 197 | |||
| 198 | # ================================================================================ | ||
| 199 | # Conditional Mappings | ||
| 200 | # The remainder of this file provides conditional casing data used to produce | ||
| 201 | # full case mappings. | ||
| 202 | # ================================================================================ | ||
| 203 | # Language-Insensitive Mappings | ||
| 204 | # These are characters whose full case mappings do not depend on language, but do | ||
| 205 | # depend on context (which characters come before or after). For more information | ||
| 206 | # see the header of this file and the Unicode Standard. | ||
| 207 | # ================================================================================ | ||
| 208 | |||
| 209 | # Special case for final form of sigma | ||
| 210 | |||
| 211 | 03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA | ||
| 212 | |||
| 213 | # Note: the following cases for non-final are already in the UnicodeData.txt file. | ||
| 214 | |||
| 215 | # 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA | ||
| 216 | # 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA | ||
| 217 | # 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA | ||
| 218 | |||
| 219 | # Note: the following cases are not included, since they would case-fold in lowercasing | ||
| 220 | |||
| 221 | # 03C3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK SMALL LETTER SIGMA | ||
| 222 | # 03C2; 03C3; 03A3; 03A3; Not_Final_Sigma; # GREEK SMALL LETTER FINAL SIGMA | ||
| 223 | |||
| 224 | # ================================================================================ | ||
| 225 | # Language-Sensitive Mappings | ||
| 226 | # These are characters whose full case mappings depend on language and perhaps also | ||
| 227 | # context (which characters come before or after). For more information | ||
| 228 | # see the header of this file and the Unicode Standard. | ||
| 229 | # ================================================================================ | ||
| 230 | |||
| 231 | # Lithuanian | ||
| 232 | |||
| 233 | # Lithuanian retains the dot in a lowercase i when followed by accents. | ||
| 234 | |||
| 235 | # Remove DOT ABOVE after "i" with upper or titlecase | ||
| 236 | |||
| 237 | 0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE | ||
| 238 | |||
| 239 | # Introduce an explicit dot above when lowercasing capital I's and J's | ||
| 240 | # whenever there are more accents above. | ||
| 241 | # (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek) | ||
| 242 | |||
| 243 | 0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I | ||
| 244 | 004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J | ||
| 245 | 012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK | ||
| 246 | 00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE | ||
| 247 | 00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE | ||
| 248 | 0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE | ||
| 249 | |||
| 250 | # ================================================================================ | ||
| 251 | |||
| 252 | # Turkish and Azeri | ||
| 253 | |||
| 254 | # I and i-dotless; I-dot and i are case pairs in Turkish and Azeri | ||
| 255 | # The following rules handle those cases. | ||
| 256 | |||
| 257 | 0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE | ||
| 258 | 0130; 0069; 0130; 0130; az; # LATIN CAPITAL LETTER I WITH DOT ABOVE | ||
| 259 | |||
| 260 | # When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i. | ||
| 261 | # This matches the behavior of the canonically equivalent I-dot_above | ||
| 262 | |||
| 263 | 0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE | ||
| 264 | 0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE | ||
| 265 | |||
| 266 | # When lowercasing, unless an I is before a dot_above, it turns into a dotless i. | ||
| 267 | |||
| 268 | 0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I | ||
| 269 | 0049; 0131; 0049; 0049; az Not_Before_Dot; # LATIN CAPITAL LETTER I | ||
| 270 | |||
| 271 | # When uppercasing, i turns into a dotted capital I | ||
| 272 | |||
| 273 | 0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I | ||
| 274 | 0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I | ||
| 275 | |||
| 276 | # Note: the following case is already in the UnicodeData.txt file. | ||
| 277 | |||
| 278 | # 0131; 0131; 0049; 0049; tr; # LATIN SMALL LETTER DOTLESS I | ||
| 279 | |||
| 280 | # EOF | ||
| 281 | |||
diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el index 3c5119a8a3d..478099c831a 100644 --- a/admin/unidata/unidata-gen.el +++ b/admin/unidata/unidata-gen.el | |||
| @@ -26,12 +26,12 @@ | |||
| 26 | ;; SPECIAL NOTICE | 26 | ;; SPECIAL NOTICE |
| 27 | ;; | 27 | ;; |
| 28 | ;; This file must be byte-compilable/loadable by `temacs' and also | 28 | ;; This file must be byte-compilable/loadable by `temacs' and also |
| 29 | ;; the entry function `unidata-gen-files' must be runnable by `temacs'. | 29 | ;; the entry function `unidata-gen-file' must be runnable by `temacs'. |
| 30 | 30 | ||
| 31 | ;; FILES TO BE GENERATED | 31 | ;; FILES TO BE GENERATED |
| 32 | ;; | 32 | ;; |
| 33 | ;; The entry function `unidata-gen-files' generates these files in | 33 | ;; The entry functions `unidata-gen-file' and `unidata-gen-charprop' |
| 34 | ;; in directory specified by its dest-dir argument. | 34 | ;; generate these files: |
| 35 | ;; | 35 | ;; |
| 36 | ;; charprop.el | 36 | ;; charprop.el |
| 37 | ;; It contains a series of forms of this format: | 37 | ;; It contains a series of forms of this format: |
| @@ -94,7 +94,7 @@ | |||
| 94 | 94 | ||
| 95 | ;; Name of the directory containing files of Unicode Character Database. | 95 | ;; Name of the directory containing files of Unicode Character Database. |
| 96 | 96 | ||
| 97 | ;; Dynamically bound in unidata-gen-files. | 97 | ;; Dynamically bound in unidata-gen-file. |
| 98 | (defvar unidata-dir nil) | 98 | (defvar unidata-dir nil) |
| 99 | 99 | ||
| 100 | (defun unidata-setup-list (unidata-text-file) | 100 | (defun unidata-setup-list (unidata-text-file) |
| @@ -149,14 +149,14 @@ | |||
| 149 | (setq unidata-list (cdr table)))) | 149 | (setq unidata-list (cdr table)))) |
| 150 | 150 | ||
| 151 | ;; Alist of this form: | 151 | ;; Alist of this form: |
| 152 | ;; (PROP INDEX GENERATOR FILENAME DOCSTRING DESCRIBER DEFAULT VAL-LIST) | 152 | ;; (FILENAME (PROP INDEX GENERATOR DOCSTRING DESCRIBER DEFAULT VAL-LIST) ...) |
| 153 | ;; FILENAME: filename to store the char-table(s) | ||
| 153 | ;; PROP: character property | 154 | ;; PROP: character property |
| 154 | ;; INDEX: index to each element of unidata-list for PROP. | 155 | ;; INDEX: index to each element of unidata-list for PROP. |
| 155 | ;; It may be a function that generates an alist of character codes | 156 | ;; It may be a function that generates an alist of character codes |
| 156 | ;; vs. the corresponding property values. Currently, only character | 157 | ;; vs. the corresponding property values. Currently, only character |
| 157 | ;; codepoints or symbol values are supported in this case. | 158 | ;; codepoints or symbol values are supported in this case. |
| 158 | ;; GENERATOR: function to generate a char-table | 159 | ;; GENERATOR: function to generate a char-table |
| 159 | ;; FILENAME: filename to store the char-table | ||
| 160 | ;; DOCSTRING: docstring for the property | 160 | ;; DOCSTRING: docstring for the property |
| 161 | ;; DESCRIBER: function to call to get a description string of property value | 161 | ;; DESCRIBER: function to call to get a description string of property value |
| 162 | ;; DEFAULT: the default value of the property. It may have the form | 162 | ;; DEFAULT: the default value of the property. It may have the form |
| @@ -166,139 +166,196 @@ | |||
| 166 | ;; between FROMn and TOn is VALn. | 166 | ;; between FROMn and TOn is VALn. |
| 167 | ;; VAL-LIST: list of specially ordered property values | 167 | ;; VAL-LIST: list of specially ordered property values |
| 168 | 168 | ||
| 169 | (defconst unidata-prop-alist | 169 | (defconst unidata-file-alist |
| 170 | '((name | 170 | '( |
| 171 | 1 unidata-gen-table-name "uni-name.el" | 171 | ;; NB this list is parsed by the Makefile to extract the names of |
| 172 | "Unicode character name. | 172 | ;; the uni-*.el files, so preserve the formatting of those lines. |
| 173 | ("uni-name.el" | ||
| 174 | (name | ||
| 175 | 1 unidata-gen-table-name | ||
| 176 | "Unicode character name. | ||
| 173 | Property value is a string or nil. | 177 | Property value is a string or nil. |
| 174 | The value nil stands for the default value \"null string\")." | 178 | The value nil stands for the default value \"null string\")." |
| 175 | nil | 179 | nil |
| 176 | nil) | 180 | nil)) |
| 177 | (general-category | 181 | ("uni-category.el" |
| 178 | 2 unidata-gen-table-symbol "uni-category.el" | 182 | (general-category |
| 179 | "Unicode general category. | 183 | 2 unidata-gen-table-symbol |
| 184 | "Unicode general category. | ||
| 180 | Property value is one of the following symbols: | 185 | Property value is one of the following symbols: |
| 181 | Lu, Ll, Lt, Lm, Lo, Mn, Mc, Me, Nd, Nl, No, Pc, Pd, Ps, Pe, Pi, Pf, Po, | 186 | Lu, Ll, Lt, Lm, Lo, Mn, Mc, Me, Nd, Nl, No, Pc, Pd, Ps, Pe, Pi, Pf, Po, |
| 182 | Sm, Sc, Sk, So, Zs, Zl, Zp, Cc, Cf, Cs, Co, Cn" | 187 | Sm, Sc, Sk, So, Zs, Zl, Zp, Cc, Cf, Cs, Co, Cn" |
| 183 | unidata-describe-general-category | 188 | unidata-describe-general-category |
| 184 | Cn | 189 | Cn |
| 185 | ;; The order of elements must be in sync with unicode_category_t | 190 | ;; The order of elements must be in sync with |
| 186 | ;; in src/character.h. | 191 | ;; unicode_category_t in src/character.h. |
| 187 | (Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pc Pd Ps Pe Pi Pf Po | 192 | (Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pc Pd Ps Pe Pi Pf Po |
| 188 | Sm Sc Sk So Zs Zl Zp Cc Cf Cs Co Cn)) | 193 | Sm Sc Sk So Zs Zl Zp Cc Cf Cs Co Cn))) |
| 189 | (canonical-combining-class | 194 | ("uni-combining.el" |
| 190 | 3 unidata-gen-table-integer "uni-combining.el" | 195 | (canonical-combining-class |
| 191 | "Unicode canonical combining class. | 196 | 3 unidata-gen-table-integer |
| 197 | "Unicode canonical combining class. | ||
| 192 | Property value is an integer." | 198 | Property value is an integer." |
| 193 | unidata-describe-canonical-combining-class | 199 | unidata-describe-canonical-combining-class |
| 194 | 0) | 200 | 0)) |
| 195 | (bidi-class | 201 | ("uni-bidi.el" |
| 196 | 4 unidata-gen-table-symbol "uni-bidi.el" | 202 | (bidi-class |
| 197 | "Unicode bidi class. | 203 | 4 unidata-gen-table-symbol |
| 204 | "Unicode bidi class. | ||
| 198 | Property value is one of the following symbols: | 205 | Property value is one of the following symbols: |
| 199 | L, LRE, LRO, LRI, R, AL, RLE, RLO, RLI, FSI, PDF, PDI, | 206 | L, LRE, LRO, LRI, R, AL, RLE, RLO, RLI, FSI, PDF, PDI, |
| 200 | EN, ES, ET, AN, CS, NSM, BN, B, S, WS, ON" | 207 | EN, ES, ET, AN, CS, NSM, BN, B, S, WS, ON" |
| 201 | unidata-describe-bidi-class | 208 | unidata-describe-bidi-class |
| 202 | ;; The assignment of default values to blocks of code points | 209 | ;; The assignment of default values to blocks of code points |
| 203 | ;; follows the file DerivedBidiClass.txt from the Unicode | 210 | ;; follows the file DerivedBidiClass.txt from the Unicode |
| 204 | ;; Character Database (UCD). | 211 | ;; Character Database (UCD). |
| 205 | (L (#x0600 #x06FF AL) (#xFB50 #xFDFF AL) (#xFE70 #xFEFF AL) | 212 | (L (#x0600 #x06FF AL) (#xFB50 #xFDFF AL) (#xFE70 #xFEFF AL) |
| 206 | (#x0590 #x05FF R) (#x07C0 #x08FF R) | 213 | (#x0590 #x05FF R) (#x07C0 #x08FF R) |
| 207 | (#xFB1D #xFB4F R) (#x10800 #x10FFF R) (#x1E800 #x1EFFF R)) | 214 | (#xFB1D #xFB4F R) (#x10800 #x10FFF R) (#x1E800 #x1EFFF R)) |
| 208 | ;; The order of elements must be in sync with bidi_type_t in | 215 | ;; The order of elements must be in sync with bidi_type_t in |
| 209 | ;; src/dispextern.h. | 216 | ;; src/dispextern.h. |
| 210 | (L R EN AN BN B AL LRE LRO RLE RLO PDF LRI RLI FSI PDI | 217 | (L R EN AN BN B AL LRE LRO RLE RLO PDF LRI RLI FSI PDI |
| 211 | ES ET CS NSM S WS ON)) | 218 | ES ET CS NSM S WS ON))) |
| 212 | (decomposition | 219 | ("uni-decomposition.el" |
| 213 | 5 unidata-gen-table-decomposition "uni-decomposition.el" | 220 | (decomposition |
| 214 | "Unicode decomposition mapping. | 221 | 5 unidata-gen-table-decomposition |
| 222 | "Unicode decomposition mapping. | ||
| 215 | Property value is a list of characters. The first element may be | 223 | Property value is a list of characters. The first element may be |
| 216 | one of these symbols representing compatibility formatting tag: | 224 | one of these symbols representing compatibility formatting tag: |
| 217 | font, noBreak, initial, medial, final, isolated, circle, super, | 225 | font, noBreak, initial, medial, final, isolated, circle, super, |
| 218 | sub, vertical, wide, narrow, small, square, fraction, compat" | 226 | sub, vertical, wide, narrow, small, square, fraction, compat" |
| 219 | unidata-describe-decomposition) | 227 | unidata-describe-decomposition)) |
| 220 | (decimal-digit-value | 228 | ("uni-decimal.el" |
| 221 | 6 unidata-gen-table-integer "uni-decimal.el" | 229 | (decimal-digit-value |
| 222 | "Unicode numeric value (decimal digit). | 230 | 6 unidata-gen-table-integer |
| 231 | "Unicode numeric value (decimal digit). | ||
| 223 | Property value is an integer 0..9, or nil. | 232 | Property value is an integer 0..9, or nil. |
| 224 | The value nil stands for NaN \"Numeric_Value\".") | 233 | The value nil stands for NaN \"Numeric_Value\".")) |
| 225 | (digit-value | 234 | ("uni-digit.el" |
| 226 | 7 unidata-gen-table-integer "uni-digit.el" | 235 | (digit-value |
| 227 | "Unicode numeric value (digit). | 236 | 7 unidata-gen-table-integer |
| 237 | "Unicode numeric value (digit). | ||
| 228 | Property value is an integer 0..9, or nil. | 238 | Property value is an integer 0..9, or nil. |
| 229 | The value nil stands for NaN \"Numeric_Value\".") | 239 | The value nil stands for NaN \"Numeric_Value\".")) |
| 230 | (numeric-value | 240 | ("uni-numeric.el" |
| 231 | 8 unidata-gen-table-numeric "uni-numeric.el" | 241 | (numeric-value |
| 232 | "Unicode numeric value (numeric). | 242 | 8 unidata-gen-table-numeric |
| 243 | "Unicode numeric value (numeric). | ||
| 233 | Property value is an integer, a floating point, or nil. | 244 | Property value is an integer, a floating point, or nil. |
| 234 | The value nil stands for NaN \"Numeric_Value\".") | 245 | The value nil stands for NaN \"Numeric_Value\".")) |
| 235 | (mirrored | 246 | ("uni-mirrored.el" |
| 236 | 9 unidata-gen-table-symbol "uni-mirrored.el" | 247 | (mirrored |
| 237 | "Unicode bidi mirrored flag. | 248 | 9 unidata-gen-table-symbol |
| 249 | "Unicode bidi mirrored flag. | ||
| 238 | Property value is a symbol `Y' or `N'. See also the property `mirroring'." | 250 | Property value is a symbol `Y' or `N'. See also the property `mirroring'." |
| 239 | nil | 251 | nil |
| 240 | N) | 252 | N) |
| 241 | (old-name | 253 | (mirroring |
| 242 | 10 unidata-gen-table-name "uni-old-name.el" | 254 | unidata-gen-mirroring-list unidata-gen-table-character |
| 243 | "Unicode old names as published in Unicode 1.0. | 255 | "Unicode bidi-mirroring characters. |
| 256 | Property value is a character that has the corresponding mirroring image or nil. | ||
| 257 | The value nil means that the actual property value of a character | ||
| 258 | is the character itself.")) | ||
| 259 | ("uni-old-name.el" | ||
| 260 | (old-name | ||
| 261 | 10 unidata-gen-table-name | ||
| 262 | "Unicode old names as published in Unicode 1.0. | ||
| 244 | Property value is a string or nil. | 263 | Property value is a string or nil. |
| 245 | The value nil stands for the default value \"null string\").") | 264 | The value nil stands for the default value \"null string\").")) |
| 246 | (iso-10646-comment | 265 | ("uni-comment.el" |
| 247 | 11 unidata-gen-table-name "uni-comment.el" | 266 | (iso-10646-comment |
| 248 | "Unicode ISO 10646 comment. | 267 | 11 unidata-gen-table-name |
| 249 | Property value is a string.") | 268 | "Unicode ISO 10646 comment. |
| 250 | (uppercase | 269 | Property value is a string.")) |
| 251 | 12 unidata-gen-table-character "uni-uppercase.el" | 270 | ("uni-uppercase.el" |
| 252 | "Unicode simple uppercase mapping. | 271 | (uppercase |
| 272 | 12 unidata-gen-table-character | ||
| 273 | "Unicode simple uppercase mapping. | ||
| 253 | Property value is a character or nil. | 274 | Property value is a character or nil. |
| 254 | The value nil means that the actual property value of a character | 275 | The value nil means that the actual property value of a character |
| 255 | is the character itself." | 276 | is the character itself." |
| 256 | string) | 277 | string)) |
| 257 | (lowercase | 278 | ("uni-lowercase.el" |
| 258 | 13 unidata-gen-table-character "uni-lowercase.el" | 279 | (lowercase |
| 259 | "Unicode simple lowercase mapping. | 280 | 13 unidata-gen-table-character |
| 281 | "Unicode simple lowercase mapping. | ||
| 260 | Property value is a character or nil. | 282 | Property value is a character or nil. |
| 261 | The value nil means that the actual property value of a character | 283 | The value nil means that the actual property value of a character |
| 262 | is the character itself." | 284 | is the character itself." |
| 263 | string) | 285 | string)) |
| 264 | (titlecase | 286 | ("uni-titlecase.el" |
| 265 | 14 unidata-gen-table-character "uni-titlecase.el" | 287 | (titlecase |
| 266 | "Unicode simple titlecase mapping. | 288 | 14 unidata-gen-table-character |
| 289 | "Unicode simple titlecase mapping. | ||
| 267 | Property value is a character or nil. | 290 | Property value is a character or nil. |
| 268 | The value nil means that the actual property value of a character | 291 | The value nil means that the actual property value of a character |
| 269 | is the character itself." | 292 | is the character itself." |
| 270 | string) | 293 | string)) |
| 271 | (mirroring | 294 | ("uni-special-uppercase.el" |
| 272 | unidata-gen-mirroring-list unidata-gen-table-character "uni-mirrored.el" | 295 | (special-uppercase |
| 273 | "Unicode bidi-mirroring characters. | 296 | 2 unidata-gen-table-special-casing |
| 274 | Property value is a character that has the corresponding mirroring image or nil. | 297 | "Unicode unconditional special casing mapping. |
| 275 | The value nil means that the actual property value of a character | 298 | |
| 276 | is the character itself.") | 299 | Property value is (possibly empty) string or nil. The value nil denotes that |
| 277 | (paired-bracket | 300 | `uppercase' property should be consulted instead. A string denotes what |
| 278 | unidata-gen-brackets-list unidata-gen-table-character "uni-brackets.el" | 301 | sequence of characters given character maps into. |
| 279 | "Unicode bidi paired-bracket characters. | 302 | |
| 303 | This mapping includes language- and context-independent special casing rules | ||
| 304 | defined by Unicode only. It also does not include association which would | ||
| 305 | duplicate information from `uppercase' property." | ||
| 306 | nil)) | ||
| 307 | ("uni-special-lowercase.el" | ||
| 308 | (special-lowercase | ||
| 309 | 0 unidata-gen-table-special-casing | ||
| 310 | "Unicode unconditional special casing mapping. | ||
| 311 | |||
| 312 | Property value is (possibly empty) string or nil. The value nil denotes that | ||
| 313 | `lowercase' property should be consulted instead. A string denotes what | ||
| 314 | sequence of characters given character maps into. | ||
| 315 | |||
| 316 | This mapping includes language- and context-independent special casing rules | ||
| 317 | defined by Unicode only. It also does not include association which would | ||
| 318 | duplicate information from `lowercase' property." | ||
| 319 | nil)) | ||
| 320 | ("uni-special-titlecase.el" | ||
| 321 | (special-titlecase | ||
| 322 | 1 unidata-gen-table-special-casing | ||
| 323 | "Unicode unconditional special casing mapping. | ||
| 324 | |||
| 325 | Property value is (possibly empty) string or nil. The value nil denotes that | ||
| 326 | `titlecase' property should be consulted instead. A string denotes what | ||
| 327 | sequence of characters given character maps into. | ||
| 328 | |||
| 329 | This mapping includes language- and context-independent special casing rules | ||
| 330 | defined by Unicode only. It also does not include association which would | ||
| 331 | duplicate information from `titlecase' property." | ||
| 332 | nil)) | ||
| 333 | ("uni-brackets.el" | ||
| 334 | (paired-bracket | ||
| 335 | unidata-gen-brackets-list unidata-gen-table-character | ||
| 336 | "Unicode bidi paired-bracket characters. | ||
| 280 | Property value is the paired bracket character, or nil. | 337 | Property value is the paired bracket character, or nil. |
| 281 | The value nil means that the character is neither an opening nor | 338 | The value nil means that the character is neither an opening nor |
| 282 | a closing paired bracket." | 339 | a closing paired bracket." |
| 283 | string) | 340 | string) |
| 284 | (bracket-type | 341 | (bracket-type |
| 285 | unidata-gen-bracket-type-list unidata-gen-table-symbol "uni-brackets.el" | 342 | unidata-gen-bracket-type-list unidata-gen-table-symbol |
| 286 | "Unicode bidi paired-bracket type. | 343 | "Unicode bidi paired-bracket type. |
| 287 | Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." | 344 | Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." |
| 288 | unidata-describe-bidi-bracket-type | 345 | unidata-describe-bidi-bracket-type |
| 289 | n | 346 | n |
| 290 | ;; The order of elements must be in sync with bidi_bracket_type_t | 347 | ;; The order of elements must be in sync with bidi_bracket_type_t |
| 291 | ;; in src/dispextern.h. | 348 | ;; in src/dispextern.h. |
| 292 | (n o c)))) | 349 | (n o c))))) |
| 293 | 350 | ||
| 294 | ;; Functions to access the above data. | 351 | ;; Functions to access the above data. |
| 295 | (defsubst unidata-prop-index (prop) (nth 1 (assq prop unidata-prop-alist))) | 352 | (defsubst unidata-prop-prop (proplist) (nth 0 proplist)) |
| 296 | (defsubst unidata-prop-generator (prop) (nth 2 (assq prop unidata-prop-alist))) | 353 | (defsubst unidata-prop-index (proplist) (nth 1 proplist)) |
| 297 | (defsubst unidata-prop-file (prop) (nth 3 (assq prop unidata-prop-alist))) | 354 | (defsubst unidata-prop-generator (proplist) (nth 2 proplist)) |
| 298 | (defsubst unidata-prop-docstring (prop) (nth 4 (assq prop unidata-prop-alist))) | 355 | (defsubst unidata-prop-docstring (proplist) (nth 3 proplist)) |
| 299 | (defsubst unidata-prop-describer (prop) (nth 5 (assq prop unidata-prop-alist))) | 356 | (defsubst unidata-prop-describer (proplist) (nth 4 proplist)) |
| 300 | (defsubst unidata-prop-default (prop) (nth 6 (assq prop unidata-prop-alist))) | 357 | (defsubst unidata-prop-default (proplist) (nth 5 proplist)) |
| 301 | (defsubst unidata-prop-val-list (prop) (nth 7 (assq prop unidata-prop-alist))) | 358 | (defsubst unidata-prop-val-list (proplist) (nth 6 proplist)) |
| 302 | 359 | ||
| 303 | 360 | ||
| 304 | ;; SIMPLE TABLE | 361 | ;; SIMPLE TABLE |
| @@ -326,9 +383,8 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." | |||
| 326 | ;; 3rd: 0 (corresponding to uniprop_encode_character in chartab.c) | 383 | ;; 3rd: 0 (corresponding to uniprop_encode_character in chartab.c) |
| 327 | ;; 4th to 5th: nil | 384 | ;; 4th to 5th: nil |
| 328 | 385 | ||
| 329 | (defun unidata-gen-table-character (prop &rest ignore) | 386 | (defun unidata-gen-table-character (prop prop-idx &rest ignore) |
| 330 | (let ((table (make-char-table 'char-code-property-table)) | 387 | (let ((table (make-char-table 'char-code-property-table)) |
| 331 | (prop-idx (unidata-prop-index prop)) | ||
| 332 | (vec (make-vector 128 0)) | 388 | (vec (make-vector 128 0)) |
| 333 | (tail unidata-list) | 389 | (tail unidata-list) |
| 334 | elt range val idx slot) | 390 | elt range val idx slot) |
| @@ -433,13 +489,12 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." | |||
| 433 | 489 | ||
| 434 | ;; Generate a char-table for the character property PROP. | 490 | ;; Generate a char-table for the character property PROP. |
| 435 | 491 | ||
| 436 | (defun unidata-gen-table (prop val-func default-value val-list) | 492 | (defun unidata-gen-table (prop prop-idx val-func default-value val-list) |
| 437 | (let ((table (make-char-table 'char-code-property-table)) | 493 | (let ((table (make-char-table 'char-code-property-table)) |
| 438 | (prop-idx (unidata-prop-index prop)) | ||
| 439 | (vec (make-vector 128 0)) | 494 | (vec (make-vector 128 0)) |
| 440 | ;; When this warning is printed, there's a need to make the | 495 | ;; When this warning is printed, there's a need to make the |
| 441 | ;; following changes: | 496 | ;; following changes: |
| 442 | ;; (1) update unidata-prop-alist with the new bidi-class values; | 497 | ;; (1) update unidata-file-alist with the new bidi-class values; |
| 443 | ;; (2) extend bidi_type_t enumeration on src/dispextern.h to | 498 | ;; (2) extend bidi_type_t enumeration on src/dispextern.h to |
| 444 | ;; include the new classes; | 499 | ;; include the new classes; |
| 445 | ;; (3) possibly update the assertion in bidi.c:bidi_check_type; and | 500 | ;; (3) possibly update the assertion in bidi.c:bidi_check_type; and |
| @@ -560,8 +615,8 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." | |||
| 560 | (set-char-table-extra-slot table 4 (vconcat (mapcar 'car val-list))) | 615 | (set-char-table-extra-slot table 4 (vconcat (mapcar 'car val-list))) |
| 561 | table)) | 616 | table)) |
| 562 | 617 | ||
| 563 | (defun unidata-gen-table-symbol (prop default-value val-list) | 618 | (defun unidata-gen-table-symbol (prop index default-value val-list) |
| 564 | (let ((table (unidata-gen-table prop | 619 | (let ((table (unidata-gen-table prop index |
| 565 | #'(lambda (x) (and (> (length x) 0) | 620 | #'(lambda (x) (and (> (length x) 0) |
| 566 | (intern x))) | 621 | (intern x))) |
| 567 | default-value val-list))) | 622 | default-value val-list))) |
| @@ -569,8 +624,8 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." | |||
| 569 | (set-char-table-extra-slot table 2 1) | 624 | (set-char-table-extra-slot table 2 1) |
| 570 | table)) | 625 | table)) |
| 571 | 626 | ||
| 572 | (defun unidata-gen-table-integer (prop default-value val-list) | 627 | (defun unidata-gen-table-integer (prop index default-value val-list) |
| 573 | (let ((table (unidata-gen-table prop | 628 | (let ((table (unidata-gen-table prop index |
| 574 | #'(lambda (x) (and (> (length x) 0) | 629 | #'(lambda (x) (and (> (length x) 0) |
| 575 | (string-to-number x))) | 630 | (string-to-number x))) |
| 576 | default-value val-list))) | 631 | default-value val-list))) |
| @@ -578,8 +633,8 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." | |||
| 578 | (set-char-table-extra-slot table 2 1) | 633 | (set-char-table-extra-slot table 2 1) |
| 579 | table)) | 634 | table)) |
| 580 | 635 | ||
| 581 | (defun unidata-gen-table-numeric (prop default-value val-list) | 636 | (defun unidata-gen-table-numeric (prop index default-value val-list) |
| 582 | (let ((table (unidata-gen-table prop | 637 | (let ((table (unidata-gen-table prop index |
| 583 | #'(lambda (x) | 638 | #'(lambda (x) |
| 584 | (if (string-match "/" x) | 639 | (if (string-match "/" x) |
| 585 | (/ (float (string-to-number x)) | 640 | (/ (float (string-to-number x)) |
| @@ -885,9 +940,8 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." | |||
| 885 | 940 | ||
| 886 | ;; Generate a char-table for character names. | 941 | ;; Generate a char-table for character names. |
| 887 | 942 | ||
| 888 | (defun unidata-gen-table-word-list (prop val-func) | 943 | (defun unidata-gen-table-word-list (prop prop-idx val-func) |
| 889 | (let ((table (make-char-table 'char-code-property-table)) | 944 | (let ((table (make-char-table 'char-code-property-table)) |
| 890 | (prop-idx (unidata-prop-index prop)) | ||
| 891 | (word-list (list nil)) | 945 | (word-list (list nil)) |
| 892 | word-table | 946 | word-table |
| 893 | block-list block-word-table block-end | 947 | block-list block-word-table block-end |
| @@ -1032,8 +1086,8 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." | |||
| 1032 | (or (byte-code-function-p (symbol-function fun)) | 1086 | (or (byte-code-function-p (symbol-function fun)) |
| 1033 | (byte-compile fun)))) | 1087 | (byte-compile fun)))) |
| 1034 | 1088 | ||
| 1035 | (defun unidata-gen-table-name (prop &rest ignore) | 1089 | (defun unidata-gen-table-name (prop index &rest ignore) |
| 1036 | (let* ((table (unidata-gen-table-word-list prop 'unidata-split-name)) | 1090 | (let* ((table (unidata-gen-table-word-list prop index 'unidata-split-name)) |
| 1037 | (word-tables (char-table-extra-slot table 4))) | 1091 | (word-tables (char-table-extra-slot table 4))) |
| 1038 | (unidata--ensure-compiled 'unidata-get-name 'unidata-put-name) | 1092 | (unidata--ensure-compiled 'unidata-get-name 'unidata-put-name) |
| 1039 | (set-char-table-extra-slot table 1 (symbol-function 'unidata-get-name)) | 1093 | (set-char-table-extra-slot table 1 (symbol-function 'unidata-get-name)) |
| @@ -1070,8 +1124,8 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." | |||
| 1070 | (nreverse l))))) | 1124 | (nreverse l))))) |
| 1071 | 1125 | ||
| 1072 | 1126 | ||
| 1073 | (defun unidata-gen-table-decomposition (prop &rest ignore) | 1127 | (defun unidata-gen-table-decomposition (prop index &rest ignore) |
| 1074 | (let* ((table (unidata-gen-table-word-list prop 'unidata-split-decomposition)) | 1128 | (let* ((table (unidata-gen-table-word-list prop index 'unidata-split-decomposition)) |
| 1075 | (word-tables (char-table-extra-slot table 4))) | 1129 | (word-tables (char-table-extra-slot table 4))) |
| 1076 | (unidata--ensure-compiled 'unidata-get-decomposition | 1130 | (unidata--ensure-compiled 'unidata-get-decomposition |
| 1077 | 'unidata-put-decomposition) | 1131 | 'unidata-put-decomposition) |
| @@ -1084,6 +1138,50 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." | |||
| 1084 | 1138 | ||
| 1085 | 1139 | ||
| 1086 | 1140 | ||
| 1141 | |||
| 1142 | (defvar unidata-gen-table-special-casing--cache nil | ||
| 1143 | "Cached value for `unidata-gen-table-special-casing' function.") | ||
| 1144 | |||
| 1145 | (defun unidata-gen-table-special-casing--do-load () | ||
| 1146 | (let (result) | ||
| 1147 | (with-temp-buffer | ||
| 1148 | (insert-file-contents (expand-file-name "SpecialCasing.txt" unidata-dir)) | ||
| 1149 | (goto-char (point-min)) | ||
| 1150 | (while (not (eobp)) | ||
| 1151 | ;; Ignore empty lines and comments. | ||
| 1152 | (unless (or (eq (char-after) ?\n) (eq (char-after) ?#)) | ||
| 1153 | (let ((line (split-string | ||
| 1154 | (buffer-substring (point) (progn (end-of-line) (point))) | ||
| 1155 | ";" ""))) | ||
| 1156 | ;; Ignore entries with conditions, i.e. those with six values. | ||
| 1157 | (when (= (length line) 5) | ||
| 1158 | (let ((ch (string-to-number (pop line) 16))) | ||
| 1159 | (setcdr (cddr line) nil) ; strip comment | ||
| 1160 | (push | ||
| 1161 | (cons ch | ||
| 1162 | (mapcar (lambda (entry) | ||
| 1163 | (mapcar (lambda (n) (string-to-number n 16)) | ||
| 1164 | (split-string entry))) | ||
| 1165 | line)) | ||
| 1166 | result))))) | ||
| 1167 | (forward-line))) | ||
| 1168 | result)) | ||
| 1169 | |||
| 1170 | (defun unidata-gen-table-special-casing (prop prop-idx &rest ignore) | ||
| 1171 | (let ((table (make-char-table 'char-code-property-table))) | ||
| 1172 | (set-char-table-extra-slot table 0 prop) | ||
| 1173 | (mapc (lambda (entry) | ||
| 1174 | (let ((ch (car entry)) (v (nth prop-idx (cdr entry)))) | ||
| 1175 | ;; If character maps to a single character, the mapping is already | ||
| 1176 | ;; covered by regular casing property. Don’t store those. | ||
| 1177 | (when (/= (length v) 1) | ||
| 1178 | (set-char-table-range table ch (apply 'string v))))) | ||
| 1179 | (or unidata-gen-table-special-casing--cache | ||
| 1180 | (setq unidata-gen-table-special-casing--cache | ||
| 1181 | (unidata-gen-table-special-casing--do-load)))) | ||
| 1182 | table)) | ||
| 1183 | |||
| 1184 | |||
| 1087 | (defun unidata-describe-general-category (val) | 1185 | (defun unidata-describe-general-category (val) |
| 1088 | (cdr (assq val | 1186 | (cdr (assq val |
| 1089 | '((nil . "Uknown") | 1187 | '((nil . "Uknown") |
| @@ -1241,137 +1339,142 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." | |||
| 1241 | ;; (unidata-check)) | 1339 | ;; (unidata-check)) |
| 1242 | 1340 | ||
| 1243 | (defun unidata-check () | 1341 | (defun unidata-check () |
| 1244 | (dolist (elt unidata-prop-alist) | 1342 | (dolist (elt unidata-file-alist) |
| 1245 | (let* ((prop (car elt)) | 1343 | (dolist (proplist (cdr elt)) |
| 1246 | (index (unidata-prop-index prop)) | 1344 | (let* ((prop (unidata-prop-prop proplist)) |
| 1247 | (generator (unidata-prop-generator prop)) | 1345 | (index (unidata-prop-index proplist)) |
| 1248 | (default-value (unidata-prop-default prop)) | 1346 | (generator (unidata-prop-generator proplist)) |
| 1249 | (val-list (unidata-prop-val-list prop)) | 1347 | (default-value (unidata-prop-default proplist)) |
| 1250 | (table (progn | 1348 | (val-list (unidata-prop-val-list proplist)) |
| 1251 | (message "Generating %S table..." prop) | 1349 | (check #x400) |
| 1252 | (funcall generator prop default-value val-list))) | 1350 | table decoder alist) |
| 1253 | (decoder (char-table-extra-slot table 1)) | 1351 | ;; We compare values in unidata.txt with the ones returned by various |
| 1254 | (alist (and (functionp index) | 1352 | ;; generator functions. However, SpecialCasing.txt is read directly by |
| 1255 | (funcall index))) | 1353 | ;; unidata-gen-table-special-casing--do-load and there is no other file |
| 1256 | (check #x400)) | 1354 | ;; to compare those values with. This is why we’re skipping the check |
| 1257 | (dolist (e unidata-list) | 1355 | ;; for special casing properties. |
| 1258 | (let* ((char (car e)) | 1356 | (unless (eq generator 'unidata-gen-table-special-casing) |
| 1259 | (val1 | 1357 | (setq table (progn |
| 1260 | (if alist (nth 1 (assoc char alist)) | 1358 | (message "Generating %S table..." prop) |
| 1261 | (nth index e))) | 1359 | (funcall generator prop index default-value val-list)) |
| 1262 | val2) | 1360 | decoder (char-table-extra-slot table 1)) |
| 1263 | (if (and (stringp val1) (= (length val1) 0)) | 1361 | (unless (integerp decoder) |
| 1264 | (setq val1 nil)) | 1362 | (setq alist (and (functionp index) (funcall index))) |
| 1265 | (unless (or (consp char) | 1363 | (dolist (e unidata-list) |
| 1266 | (integerp decoder)) | 1364 | (let ((char (car e)) val1 val2) |
| 1267 | (setq val2 | 1365 | (unless (consp char) |
| 1268 | (cond ((functionp decoder) | 1366 | (setq val1 (if alist |
| 1269 | (funcall decoder char (aref table char) table)) | 1367 | (nth 1 (assoc char alist)) |
| 1270 | (t ; must be nil | 1368 | (nth index e))) |
| 1271 | (aref table char)))) | 1369 | (and (stringp val1) |
| 1272 | (if val1 | 1370 | (= (length val1) 0) |
| 1273 | (cond ((eq generator 'unidata-gen-table-symbol) | 1371 | (setq val1 nil)) |
| 1274 | (setq val1 (intern val1))) | 1372 | (if val1 |
| 1275 | ((eq generator 'unidata-gen-table-integer) | 1373 | (cond ((eq generator 'unidata-gen-table-symbol) |
| 1276 | (setq val1 (string-to-number val1))) | 1374 | (setq val1 (intern val1))) |
| 1277 | ((eq generator 'unidata-gen-table-character) | 1375 | ((eq generator 'unidata-gen-table-integer) |
| 1278 | (setq val1 (string-to-number val1 16))) | 1376 | (setq val1 (string-to-number val1))) |
| 1279 | ((eq generator 'unidata-gen-table-decomposition) | 1377 | ((eq generator 'unidata-gen-table-character) |
| 1280 | (setq val1 (unidata-split-decomposition val1)))) | 1378 | (setq val1 (string-to-number val1 16))) |
| 1281 | (cond ((eq prop 'decomposition) | 1379 | ((eq generator 'unidata-gen-table-decomposition) |
| 1282 | (setq val1 (list char))) | 1380 | (setq val1 (unidata-split-decomposition val1)))) |
| 1283 | ((eq prop 'bracket-type) | 1381 | (cond ((eq prop 'decomposition) |
| 1284 | (setq val1 'n)))) | 1382 | (setq val1 (list char))) |
| 1285 | (when (>= char check) | 1383 | ((eq prop 'bracket-type) |
| 1286 | (message "%S %04X" prop check) | 1384 | (setq val1 'n)))) |
| 1287 | (setq check (+ check #x400))) | 1385 | (setq val2 (aref table char)) |
| 1288 | (or (equal val1 val2) | 1386 | (when decoder |
| 1289 | ;; <control> characters get a 'name' property of nil | 1387 | (setq val2 (funcall decoder char val2 table))) |
| 1290 | (and (eq prop 'name) (string= val1 "<control>") (null val2)) | 1388 | (when (>= char check) |
| 1291 | (insert (format "> %04X %S\n< %04X %S\n" | 1389 | (message "%S %04X" prop check) |
| 1292 | char val1 char val2))) | 1390 | (setq check (+ check #x400))) |
| 1293 | (sit-for 0))))))) | 1391 | (or (equal val1 val2) |
| 1294 | 1392 | ;; <control> characters get a 'name' property of nil | |
| 1295 | ;; The entry function. It generates files described in the header | 1393 | (and (eq prop 'name) |
| 1394 | (string= val1 "<control>") | ||
| 1395 | (null val2)) | ||
| 1396 | (insert (format "> %04X %S\n< %04X %S\n" | ||
| 1397 | char val1 char val2))) | ||
| 1398 | (sit-for 0)))))))))) | ||
| 1399 | |||
| 1400 | ;; The entry functions. They generate files described in the header | ||
| 1296 | ;; comment of this file. | 1401 | ;; comment of this file. |
| 1297 | 1402 | ||
| 1298 | ;; Write files (charprop.el, uni-*.el) to dest-dir (default PWD), | 1403 | (defun unidata-gen-file (&optional file data-dir unidata-text-file) |
| 1299 | ;; using as input files from data-dir, and | 1404 | "Generate lisp file FILE from Unicode data." |
| 1300 | ;; unidata-text-file (default "unidata.txt" in PWD). | 1405 | (or file |
| 1301 | (defun unidata-gen-files (&optional data-dir dest-dir unidata-text-file) | 1406 | (setq file (pop command-line-args-left) |
| 1302 | (or data-dir | 1407 | data-dir (or (pop command-line-args-left) default-directory) |
| 1303 | (setq data-dir (pop command-line-args-left) | ||
| 1304 | dest-dir (or (pop command-line-args-left) default-directory) | ||
| 1305 | unidata-text-file (or (pop command-line-args-left) | 1408 | unidata-text-file (or (pop command-line-args-left) |
| 1306 | (expand-file-name "unidata.txt")))) | 1409 | (expand-file-name "unidata.txt")))) |
| 1307 | (let ((coding-system-for-write 'utf-8-unix) | 1410 | (let* ((coding-system-for-write 'utf-8-unix) |
| 1308 | (coding-system-for-read 'utf-8) | 1411 | (coding-system-for-read 'utf-8) |
| 1309 | (charprop-file (expand-file-name "charprop.el" dest-dir)) | 1412 | (unidata-dir data-dir) |
| 1310 | (unidata-dir data-dir)) | 1413 | (copyright (with-temp-buffer |
| 1311 | (dolist (elt unidata-prop-alist) | 1414 | (insert-file-contents |
| 1312 | (let* ((prop (car elt)) | 1415 | (expand-file-name "copyright.html" unidata-dir)) |
| 1313 | (file (expand-file-name (unidata-prop-file prop) dest-dir))) | 1416 | (re-search-forward "^Copyright .*Unicode, Inc.") |
| 1314 | (if (file-exists-p file) | 1417 | (match-string 0)))) |
| 1315 | (delete-file file)))) | 1418 | (or unidata-list (unidata-setup-list unidata-text-file)) |
| 1316 | (unidata-setup-list unidata-text-file) | 1419 | (let* ((basename (file-name-nondirectory file)) |
| 1317 | (with-temp-file charprop-file | 1420 | (elt (assoc basename unidata-file-alist))) |
| 1318 | (insert ";; Automatically generated by unidata-gen.el.\n") | 1421 | (or elt (user-error "Unknown output file: %s" basename)) |
| 1319 | (dolist (elt unidata-prop-alist) | 1422 | (or noninteractive (message "Generating %s..." file)) |
| 1320 | (let* ((prop (car elt)) | 1423 | (with-temp-file file |
| 1321 | (generator (unidata-prop-generator prop)) | 1424 | (insert ";; " copyright " |
| 1322 | (file (expand-file-name (unidata-prop-file prop) dest-dir)) | 1425 | ;; Generated from Unicode data files by unidata-gen.el. |
| 1323 | (basename (file-name-nondirectory file)) | 1426 | ;; The sources for this file are found in the admin/unidata/ directory in |
| 1324 | (docstring (unidata-prop-docstring prop)) | 1427 | ;; the Emacs sources. The Unicode data files are used under the |
| 1325 | (describer (unidata-prop-describer prop)) | 1428 | ;; Unicode Terms of Use, as contained in the file copyright.html in that |
| 1326 | (default-value (unidata-prop-default prop)) | 1429 | ;; same directory.\n") |
| 1327 | (val-list (unidata-prop-val-list prop)) | 1430 | (dolist (proplist (cdr elt)) |
| 1328 | ;; Avoid creating backup files for those uni-*.el files | 1431 | (let ((prop (unidata-prop-prop proplist)) |
| 1329 | ;; that hold more than one table. | 1432 | (index (unidata-prop-index proplist)) |
| 1330 | (backup-inhibited t) | 1433 | (generator (unidata-prop-generator proplist)) |
| 1331 | table) | 1434 | (docstring (unidata-prop-docstring proplist)) |
| 1332 | ;; Filename in this comment line is extracted by sed in | 1435 | (describer (unidata-prop-describer proplist)) |
| 1333 | ;; Makefile. | 1436 | (default-value (unidata-prop-default proplist)) |
| 1334 | (insert (format ";; FILE: %s\n" basename)) | 1437 | (val-list (unidata-prop-val-list proplist)) |
| 1335 | (insert (format "(define-char-code-property '%S %S\n %S)\n" | 1438 | table) |
| 1336 | prop basename docstring)) | 1439 | (setq table (funcall generator prop index default-value val-list)) |
| 1337 | (with-temp-buffer | 1440 | (when describer |
| 1338 | (or noninteractive (message "Generating %s..." file)) | 1441 | (unless (subrp (symbol-function describer)) |
| 1339 | (when (file-exists-p file) | 1442 | (unidata--ensure-compiled describer) |
| 1340 | (insert-file-contents file) | 1443 | (setq describer (symbol-function describer))) |
| 1341 | (goto-char (point-max)) | 1444 | (set-char-table-extra-slot table 3 describer)) |
| 1342 | (search-backward ";; Local Variables:")) | 1445 | (insert (format "(define-char-code-property '%S\n %S\n %S)\n" |
| 1343 | (setq table (funcall generator prop default-value val-list)) | 1446 | prop table docstring)))) |
| 1344 | (when describer | 1447 | (insert ";; Local Variables:\n" |
| 1345 | (unless (subrp (symbol-function describer)) | 1448 | ";; coding: utf-8\n" |
| 1346 | (unidata--ensure-compiled describer) | 1449 | ";; version-control: never\n" |
| 1347 | (setq describer (symbol-function describer))) | 1450 | ";; no-byte-compile: t\n" |
| 1348 | (set-char-table-extra-slot table 3 describer)) | 1451 | ";; no-update-autoloads: t\n" |
| 1349 | (if (bobp) | 1452 | ";; End:\n\n" |
| 1350 | (insert ";; Copyright (C) 1991-2014 Unicode, Inc. | 1453 | (format ";; %s ends here\n" basename))))) |
| 1351 | ;; This file was generated from the Unicode data files at | 1454 | (or noninteractive (message "Generating %s...done" file))) |
| 1352 | ;; http://www.unicode.org/Public/UNIDATA/. | 1455 | |
| 1353 | ;; See lisp/international/README for the copyright and permission notice.\n")) | 1456 | (defun unidata-gen-charprop (&optional charprop-file) |
| 1354 | (insert (format "(define-char-code-property '%S\n %S\n %S)\n" | 1457 | (or charprop-file (setq charprop-file (pop command-line-args-left))) |
| 1355 | prop table docstring)) | 1458 | (with-temp-file charprop-file |
| 1356 | (if (eobp) | 1459 | (insert ";; Automatically generated by unidata-gen.el.\n" |
| 1357 | (insert ";; Local Variables:\n" | 1460 | ";; See the admin/unidata/ directory in the Emacs sources.\n") |
| 1358 | ";; coding: utf-8\n" | 1461 | (dolist (elt unidata-file-alist) |
| 1359 | ";; version-control: never\n" | 1462 | (dolist (proplist (cdr elt)) |
| 1360 | ";; no-byte-compile: t\n" | 1463 | (insert (format "(define-char-code-property '%S %S\n %S)\n" |
| 1361 | ";; no-update-autoloads: t\n" | 1464 | (unidata-prop-prop proplist) (car elt) |
| 1362 | ";; End:\n\n" | 1465 | (unidata-prop-docstring proplist))))) |
| 1363 | (format ";; %s ends here\n" basename))) | 1466 | (or noninteractive (message "Writing %s..." charprop-file)) |
| 1364 | (write-file file) | 1467 | (insert "\n" |
| 1365 | (or noninteractive (message "Generating %s...done" file))))) | 1468 | "(provide 'charprop)\n" |
| 1366 | (message "Writing %s..." charprop-file) | 1469 | "\n" |
| 1367 | (insert ";; Local Variables:\n" | 1470 | ";; Local Variables:\n" |
| 1368 | ";; coding: utf-8\n" | 1471 | ";; coding: utf-8\n" |
| 1369 | ";; version-control: never\n" | 1472 | ";; version-control: never\n" |
| 1370 | ";; no-byte-compile: t\n" | 1473 | ";; no-byte-compile: t\n" |
| 1371 | ";; no-update-autoloads: t\n" | 1474 | ";; no-update-autoloads: t\n" |
| 1372 | ";; End:\n\n" | 1475 | ";; End:\n\n" |
| 1373 | (format ";; %s ends here\n" | 1476 | (format ";; %s ends here\n" |
| 1374 | (file-name-nondirectory charprop-file)))))) | 1477 | (file-name-nondirectory charprop-file))))) |
| 1375 | 1478 | ||
| 1376 | 1479 | ||
| 1377 | 1480 | ||
diff --git a/admin/update_autogen b/admin/update_autogen index 898432eae60..ba4ed00fa39 100755 --- a/admin/update_autogen +++ b/admin/update_autogen | |||
| @@ -47,14 +47,7 @@ cd $PD | |||
| 47 | cd ../ | 47 | cd ../ |
| 48 | [ -d admin ] || die "Could not locate admin directory" | 48 | [ -d admin ] || die "Could not locate admin directory" |
| 49 | 49 | ||
| 50 | if [ -d .bzr ]; then | 50 | [ -d .git ] || die "No .git directory" |
| 51 | vcs=bzr | ||
| 52 | elif [ -e .git ]; then | ||
| 53 | vcs=git | ||
| 54 | else | ||
| 55 | die "Cannot determine vcs" | ||
| 56 | fi | ||
| 57 | |||
| 58 | 51 | ||
| 59 | usage () | 52 | usage () |
| 60 | { | 53 | { |
| @@ -157,10 +150,7 @@ OPTIND=1 | |||
| 157 | ## Run status on inputs, list modified files on stdout. | 150 | ## Run status on inputs, list modified files on stdout. |
| 158 | status () | 151 | status () |
| 159 | { | 152 | { |
| 160 | local statflag="-S" | 153 | git status -s "$@" >| $tempfile || die "git status error for $@" |
| 161 | [ "$vcs" = "git" ] && statflag="-s" | ||
| 162 | |||
| 163 | $vcs status $statflag "$@" >| $tempfile || die "$vcs status error for $@" | ||
| 164 | 154 | ||
| 165 | local stat file modified | 155 | local stat file modified |
| 166 | 156 | ||
| @@ -234,11 +224,11 @@ commit () | |||
| 234 | 224 | ||
| 235 | echo "Committing..." | 225 | echo "Committing..." |
| 236 | 226 | ||
| 237 | $vcs commit -m "; Auto-commit of $type files." "$@" || return $? | 227 | git commit -m "; Auto-commit of $type files." "$@" || return $? |
| 238 | 228 | ||
| 239 | [ "$vcs" = "git" ] && { | 229 | ## In case someone else pushed something while we were working. |
| 240 | $vcs push || return $? | 230 | git pull --rebase || return $? |
| 241 | } | 231 | git push || return $? |
| 242 | 232 | ||
| 243 | echo "Committed files: $@" | 233 | echo "Committed files: $@" |
| 244 | } # function commit | 234 | } # function commit |