• Paul Eggert's avatar
    Improve character name escapes · bd1c7ca6
    Paul Eggert authored
    * doc/lispref/nonascii.texi (Character Properties):
    Avoid duplication of Unicode names.  Reformat examples to fit in
    narrow pages.
    * doc/lispref/objects.texi (General Escape Syntax):
    Simplify and better-organize explanation of \N{...} escapes.
    * src/character.h (CHAR_SURROGATE_PAIR_P): Remove; unused.
    (char_surrogate_p): New inline function.
    * src/lread.c: Do not include string.h; no longer needed.
    (invalid_character_name, check_scalar_value): Remove; the ideas
    behind these functions are now bundled into character_name_to_code.
    (character_name_to_code): Remove undocumented support for "CJK
    IDEOGRAPH-XXXX" names, as "U+XXXX" suffices.  Reject monstrosities
    like "\N{U+-0}" and null bytes in \N escapes.  Reject floating
    point in \N escapes instead of returning garbage.  Use
    AUTO_STRING_WITH_LEN to lessen pressure on the garbage collector.
    * test/src/lread-tests.el (lread-char-number, lread-char-name)
    (lread-string-char-number, lread-string-char-name):
    Test runtime behavior, not compile-time, as the test framework
    is not set up to test compile-time.
    (lread-char-surrogate-1, lread-char-surrogate-2)
    (lread-char-surrogate-3, lread-char-surrogate-4)
    (lread-string-char-number-2, lread-string-char-number-3):
    New tests.
    (lread-string-char-number-1): Rename from lread-string-char-number.
lread.c 140 KB