1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-24 07:20:37 +00:00
emacs/doc/lispref
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
..
abbrevs.texi
anti.texi
back.texi
backups.texi Merge from origin/emacs-25 2017-03-19 12:29:06 -07:00
book-spine.texi
buffers.texi
ChangeLog.1
commands.texi Merge from origin/emacs-25 2017-03-19 12:34:05 -07:00
compile.texi Index byte-compile-debug 2017-01-31 22:36:02 +02:00
control.texi
customize.texi
debugging.texi
display.texi Merge from origin/emacs-25 2017-03-19 12:34:04 -07:00
doclicense.texi
edebug.texi Change edebug-max-depth from defconst to defcustom 2017-02-04 12:56:19 +02:00
elisp.texi Update documentation for type semantics of records. 2017-04-06 20:30:28 +02:00
errors.texi Throw a `search-failed' derived error in Info search 2017-04-03 19:36:14 -04:00
eval.texi
files.texi Merge from origin/emacs-25 2017-03-19 12:29:06 -07:00
frames.texi
functions.texi [doc elisp] Add some index entries for "old" advice mechanism 2017-03-08 09:37:01 +01:00
gpl.texi
hash.texi Use float instead of Lisp_Object for rehash_size 2017-02-21 15:39:17 -08:00
help.texi
hooks.texi
index.texi
internals.texi Replace QUIT with maybe_quit 2017-01-25 21:25:37 -08:00
intro.texi Remove the build number from emacs-version variable 2017-02-17 20:15:21 -05:00
keymaps.texi
lay-flat.texi
lists.texi ; * doc/lispref/lists.texi (List Elements): Fix last change. 2017-01-25 22:49:35 +02:00
loading.texi
macros.texi Documentation fix in elisp reference manual 2017-02-24 10:21:31 +09:00
Makefile.in
maps.texi
markers.texi
minibuf.texi
modes.texi Merge from origin/emacs-25 2017-03-19 12:34:03 -07:00
nonascii.texi Support casing characters which map into multiple code points (bug#24603) 2017-04-06 20:54:58 +02:00
numbers.texi min and max now return one of their arguments 2017-03-06 17:26:55 -08:00
objects.texi Update documentation for type semantics of records. 2017-04-06 20:30:28 +02:00
os.texi * doc/lispref/os.texi (File Notifications): 2017-03-23 17:07:55 +01:00
package.texi * doc/lispref/package.texi (Package Archives): Mention https. 2017-04-04 20:17:54 -04:00
positions.texi
processes.texi ; * doc/lispref/processes.texi: Restore deleted FIXME comment. 2017-03-10 15:39:52 -05:00
README
records.texi Update documentation for type semantics of records. 2017-04-06 20:30:28 +02:00
searching.texi Add support for Unicode whitespace in [:blank:] 2017-01-06 20:12:48 +01:00
sequences.texi
spellfile
streams.texi
strings.texi Support casing characters which map into multiple code points (bug#24603) 2017-04-06 20:54:58 +02:00
symbols.texi
syntax.texi
text.texi Document fill-separate-heterogeneous-words-with-space (bug#25685) 2017-02-15 05:59:29 +00:00
threads.texi Rudimentary error handling for non-main threads 2017-01-18 18:00:16 +02:00
tips.texi
two-volume-cross-refs.txt
two-volume.make
variables.texi Rework connection local variables 2017-02-19 17:14:35 +01:00
windows.texi Expand manual section on quitting windows 2017-03-25 09:56:28 -07: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.  -*- outline -*-
See the end of the file for license conditions.


README for the Emacs Lisp Reference Manual.

* This directory contains the texinfo source files for the Emacs Lisp
Reference Manual.

* Report bugs in the Lisp Manual (or in Emacs) using M-x report-emacs-bug.
To ask questions, use the help-gnu-emacs mailing list.

* The Emacs Lisp Reference Manual is quite large.  It totals around
1100 pages in smallbook format; the info files total around 3.0 megabytes.

* You can format this manual for Info, for printing hardcopy using TeX,
or for HTML.

* You can buy nicely printed copies from the Free Software Foundation.
Buying a manual from the Free Software Foundation helps support our GNU
development work.  See <http://shop.fsf.org/>.
(At time of writing, this manual is out of print.)

* The master file for formatting this manual for Tex is called 'elisp.texi'.
It contains @include commands to include all the chapters that make up
the manual.

* This distribution contains a Makefile that you can use with GNU Make.

** To make an Info file, you need to install Texinfo, then run 'make info'.

** Use 'make elisp.pdf' or 'make elisp.html' to create PDF or HTML versions.

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