mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-24 07:20:37 +00:00
b3b9b258c4
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. |
||
---|---|---|
.. | ||
abbrevs.texi | ||
anti.texi | ||
back.texi | ||
backups.texi | ||
book-spine.texi | ||
buffers.texi | ||
ChangeLog.1 | ||
commands.texi | ||
compile.texi | ||
control.texi | ||
customize.texi | ||
debugging.texi | ||
display.texi | ||
doclicense.texi | ||
edebug.texi | ||
elisp.texi | ||
errors.texi | ||
eval.texi | ||
files.texi | ||
frames.texi | ||
functions.texi | ||
gpl.texi | ||
hash.texi | ||
help.texi | ||
hooks.texi | ||
index.texi | ||
internals.texi | ||
intro.texi | ||
keymaps.texi | ||
lay-flat.texi | ||
lists.texi | ||
loading.texi | ||
macros.texi | ||
Makefile.in | ||
maps.texi | ||
markers.texi | ||
minibuf.texi | ||
modes.texi | ||
nonascii.texi | ||
numbers.texi | ||
objects.texi | ||
os.texi | ||
package.texi | ||
positions.texi | ||
processes.texi | ||
README | ||
records.texi | ||
searching.texi | ||
sequences.texi | ||
spellfile | ||
streams.texi | ||
strings.texi | ||
symbols.texi | ||
syntax.texi | ||
text.texi | ||
threads.texi | ||
tips.texi | ||
two-volume-cross-refs.txt | ||
two-volume.make | ||
variables.texi | ||
windows.texi |
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/>.