]> git.eshelyaron.com Git - emacs.git/commit
casing: don’t assume letters are *either* upper- or lower-case (bug#24603)
authorMichal Nazarewicz <mina86@mina86.com>
Wed, 7 Sep 2016 19:00:57 +0000 (21:00 +0200)
committerMichal Nazarewicz <mina86@mina86.com>
Wed, 15 Feb 2017 15:54:07 +0000 (16:54 +0100)
commit6220faeb4e9be16b9dec728e72ea8dff2cfe35ba
treed329bc3c65eb858ea8f03a2705ea5de696abac05
parent5ec3a58462e99533ea5200de356302181d634d0b
casing: don’t assume letters are *either* upper- or lower-case  (bug#24603)

A compatibility digraph characters, such as Dž, are neither upper- nor
lower-case.  At the moment however, those are reported as upper-case¹
despite the fact that they change when upper-cased.

Stop checking if a character is upper-case before trying to up-case it
so that title-case characters are handled correctly.  This fixes one of
the issues mentioned in bug#24603.

¹ Because they change when converted to lower-case.  Notice an asymmetry
  in that for a character to be considered lower-case it must not be
  upper-case (plus the usual condition of changing when upper-cased).

* src/buffer.h (upcase1): Delete.
(upcase): Change to upcase character unconditionally just like downcase
does it.  This is what upcase1 was.

* src/casefiddle.c (casify_object, casify_region): Use upcase instead
of upcase1 and don’t check !uppercasep(x) before calling upcase.

* src/keyboard.c (read_key_sequence): Don’t check if uppercase(x), just
downcase(x) and see if it changed.

* test/src/casefiddle-tests.el (casefiddle-tests--characters,
casefiddle-tests-casing): Update test cases which are now passing.
etc/NEWS
src/buffer.h
src/casefiddle.c
src/keyboard.c
test/src/casefiddle-tests.el