1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-01 08:17:38 +00:00
emacs/admin
Michal Nazarewicz b3b9b258c4 Support casing characters which map into multiple code points (bug#24603)
Implement unconditional special casing rules defined in Unicode standard.

Among other things, they deal with cases when a single code point is
replaced by multiple ones because single character does not exist (e.g.
‘fi’ ligature turning into ‘FL’) or is not commonly used (e.g. ß turning
into SS).

* admin/unidata/SpecialCasing.txt: New data file pulled from Unicode
standard distribution.
* admin/unidata/README: Mention SpecialCasing.txt.

* admin/unidata/unidata-get.el (unidata-gen-table-special-casing,
unidata-gen-table-special-casing--do-load): New functions generating
‘special-uppercase’, ‘special-lowercase’ and ‘special-titlecase’
character Unicode properties built from the SpecialCasing.txt Unicode
data file.

* src/casefiddle.c (struct casing_str_buf): New structure for
representing short strings used to handle one-to-many character
mappings.

(case_character_imlp): New function which can handle one-to-many
character mappings.
(case_character, case_single_character): Wrappers for the above
functions.  The former may map one character to multiple (or no)
code points while the latter does what the former used to do (i.e.
handles one-to-one mappings only).

(do_casify_natnum, do_casify_unibyte_string,
do_casify_unibyte_region): Use case_single_character.
(do_casify_multibyte_string, do_casify_multibyte_region): Support new
features of case_character.
* (do_casify_region): Updated to reflact do_casify_multibyte_string
changes.

(casify_word): Handle situation when one character-length of a word
can change affecting where end of the word is.

(upcase, capitalize, upcase-initials): Update documentation to mention
limitations when working on characters.

* test/src/casefiddle-tests.el (casefiddle-tests-char-properties):
Add test cases for the newly introduced character properties.
(casefiddle-tests-casing): Update test cases which are now passing.

* test/lisp/char-fold-tests.el (char-fold--ascii-upcase,
char-fold--ascii-downcase): New functions which behave like old ‘upcase’
and ‘downcase’.
(char-fold--test-match-exactly): Use the new functions.  This is needed
because otherwise fi and similar characters are turned into their multi-
-character representation.

* doc/lispref/strings.texi: Describe issue with casing characters versus
strings.
* doc/lispref/nonascii.texi: Describe the new character properties.
2017-04-06 20:54:58 +02:00
..
charsets Update copyright year to 2017 2016-12-31 19:42:26 -08:00
coccinelle Minor quoting fixes in scripts and doc 2015-09-16 16:07:15 -07:00
grammars Update copyright year to 2017 2016-12-31 19:42:26 -08:00
notes Switch from Automake to GNU Make 2017-03-17 11:42:34 -07:00
nt Update copyright year to 2017 2016-12-31 19:42:26 -08:00
unidata Support casing characters which map into multiple code points (bug#24603) 2017-04-06 20:54:58 +02:00
admin.el Merge from origin/emacs-25 2017-03-19 12:29:06 -07:00
alloc-colors.c Update copyright year to 2017 2016-12-31 19:42:26 -08:00
authors.el Merge from gnulib 2017-03-14 14:50:02 -07:00
build-configs Update copyright year to 2017 2016-12-31 19:42:26 -08:00
bzrmerge.el Update copyright year to 2017 2016-12-31 19:42:26 -08:00
ChangeLog.1 Update copyright year to 2017 2016-12-31 19:42:26 -08:00
check-doc-strings Port "$@" to OpenIndiana ksh93 2016-01-24 17:29:01 -08:00
CPP-DEFINES Define copysign on all platforms 2017-03-07 08:32:04 -08:00
cus-test.el Update copyright year to 2017 2016-12-31 19:42:26 -08:00
diff-tar-files Update copyright year to 2017 2016-12-31 19:42:26 -08:00
find-gc.el Update copyright year to 2017 2016-12-31 19:42:26 -08:00
gitmerge.el Amend gitmerge to recognize the injunction "don't merge". 2017-03-29 17:58:37 +00:00
last-chance.el Update copyright year to 2017 in master 2017-01-01 01:48:59 -08:00
MAINTAINERS Fix obsolete ‘test/automated’ references 2017-03-27 11:30:08 -07:00
make-emacs Update copyright year to 2017 2016-12-31 19:42:26 -08:00
make-tarball.txt Merge from origin/emacs-25 2017-03-19 12:34:03 -07:00
merge-gnulib Switch from Automake to GNU Make 2017-03-17 11:42:34 -07:00
merge-pkg-config Update copyright year to 2017 2016-12-31 19:42:26 -08:00
quick-install-emacs Update copyright year to 2017 2016-12-31 19:42:26 -08:00
README Update copyright year to 2017 2016-12-31 19:42:26 -08:00
release-process * admin/release-process: Update versions and blocking bug numbers. 2016-11-19 09:23:33 +02:00
update_autogen Switch from Automake to GNU Make 2017-03-17 11:42:34 -07:00
update-copyright Update copyright year to 2017 2016-12-31 19:42:26 -08:00

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Copyright (C) 2001-2017 Free Software Foundation, Inc.
See the end of the file for license conditions.


			 The admin directory

This directory contains scripts and other things useful for developing
and maintaining Emacs.  These files are not part of Emacs releases
because they are not deemed generally useful, and you have to know
what you do when using them.


* Instructions and scripts used to prepare an Emacs release.

** release-process

The release process used by GNU Emacs.

** make-tarball.txt

Instructions to create pretest or release tarballs, announcements, etc.

** admin.el

Utilities for setting version numbers and alike.


* Scripts that can be used to build and test Emacs.

** build-configs

Build Emacs in various configurations.

** make-emacs

Build Emacs in various ways.

** quick-install-emacs

Install emacs quickly ("incrementally").

** alloc-colors.c

A utility program that allocates a given number of colors on X.  Can
be used to debug Emacs with dense colormaps (PseudoColor).

** check-doc-strings

Check doc strings against documentation.

** cus-test.el

Tests for custom types and load problems.

** diff-tar-files

Show files added/removed between two tar files.


Brief description of sub-directories:

charsets		scripts for generating charset map files
			in ../etc/charsets
unidata			scripts for generating character property files
			in ../lisp/international


This file is part of GNU Emacs.

GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.

Local variables:
mode: outline
paragraph-separate: "[ 	]*$"
end: