libbb/lineedit: add support for preserving "broken" (non-unicode) chars
Signed-off-by: Tomas Heinrich <heinrich.tomas@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
25b10d97e6
commit
a659b81dfa
4 changed files with 89 additions and 20 deletions
|
@ -423,7 +423,6 @@ static int wcwidth(unsigned ucs)
|
|||
# if LAST_SUPPORTED_WCHAR >= 0x300
|
||||
/* sorted list of non-overlapping intervals of non-spacing characters */
|
||||
/* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */
|
||||
static const struct interval combining[] = {
|
||||
# define BIG_(a,b) { a, b },
|
||||
# define PAIR(a,b)
|
||||
# define ARRAY /* PAIR if < 0x4000 and no more than 4 chars big */ \
|
||||
|
@ -557,10 +556,9 @@ static int wcwidth(unsigned ucs)
|
|||
BIG_(0xFE20, 0xFE23) \
|
||||
BIG_(0xFEFF, 0xFEFF) \
|
||||
BIG_(0xFFF9, 0xFFFB)
|
||||
ARRAY
|
||||
static const struct interval combining[] = { ARRAY };
|
||||
# undef BIG_
|
||||
# undef PAIR
|
||||
};
|
||||
# define BIG_(a,b)
|
||||
# define PAIR(a,b) (a << 2) | (b-a),
|
||||
static const uint16_t combining1[] = { ARRAY };
|
||||
|
@ -668,7 +666,6 @@ int FAST_FUNC unicode_bidi_isrtl(wint_t wc)
|
|||
* http://www.unicode.org/Public/5.2.0/ucd/extracted/DerivedBidiClass.txt
|
||||
* Bidi_Class=Left_To_Right | Bidi_Class=Arabic_Letter
|
||||
*/
|
||||
static const struct interval rtl_b[] = {
|
||||
# define BIG_(a,b) { a, b },
|
||||
# define PAIR(a,b)
|
||||
# define ARRAY \
|
||||
|
@ -723,10 +720,9 @@ int FAST_FUNC unicode_bidi_isrtl(wint_t wc)
|
|||
{0x10E7F, 0x10FFF},
|
||||
{0x1E800, 0x1EFFF}
|
||||
*/
|
||||
ARRAY
|
||||
static const struct interval rtl_b[] = { ARRAY };
|
||||
# undef BIG_
|
||||
# undef PAIR
|
||||
};
|
||||
# define BIG_(a,b)
|
||||
# define PAIR(a,b) (a << 2) | (b-a),
|
||||
static const uint16_t rtl_p[] = { ARRAY };
|
||||
|
@ -755,7 +751,6 @@ int FAST_FUNC unicode_bidi_is_neutral_wchar(wint_t wc)
|
|||
* White_Space, Other_Neutral, European_Number, European_Separator,
|
||||
* European_Terminator, Arabic_Number, Common_Separator
|
||||
*/
|
||||
static const struct interval neutral_b[] = {
|
||||
# define BIG_(a,b) { a, b },
|
||||
# define PAIR(a,b)
|
||||
# define ARRAY \
|
||||
|
@ -929,10 +924,9 @@ int FAST_FUNC unicode_bidi_is_neutral_wchar(wint_t wc)
|
|||
{0x1F030, 0x1F093},
|
||||
{0x1F100, 0x1F10A}
|
||||
*/
|
||||
ARRAY
|
||||
static const struct interval neutral_b[] = { ARRAY };
|
||||
# undef BIG_
|
||||
# undef PAIR
|
||||
};
|
||||
# define BIG_(a,b)
|
||||
# define PAIR(a,b) (a << 2) | (b-a),
|
||||
static const uint16_t neutral_p[] = { ARRAY };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue