forked from aniani/vim
patch 9.0.1223: cannot use setcellwidths() below 0x100
Problem: Cannot use setcellwidths() below 0x100. Solution: Also accept characters between 0x80 and 0x100. (Ken Takata, closes #11834)
This commit is contained in:
25
src/mbyte.c
25
src/mbyte.c
@@ -1589,19 +1589,26 @@ utf_char2cells(int c)
|
||||
#endif
|
||||
};
|
||||
|
||||
if (c >= 0x100)
|
||||
{
|
||||
#if defined(FEAT_EVAL) || defined(USE_WCHAR_FUNCTIONS)
|
||||
int n;
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_EVAL
|
||||
n = cw_value(c);
|
||||
// Use the value from setcellwidths() at 0x80 and higher, unless the
|
||||
// character is not printable.
|
||||
if (c >= 0x80 &&
|
||||
# ifdef USE_WCHAR_FUNCTIONS
|
||||
wcwidth(c) >= 1 &&
|
||||
# endif
|
||||
vim_isprintc(c))
|
||||
{
|
||||
int n = cw_value(c);
|
||||
if (n != 0)
|
||||
return n;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (c >= 0x100)
|
||||
{
|
||||
#ifdef USE_WCHAR_FUNCTIONS
|
||||
int n;
|
||||
|
||||
/*
|
||||
* Assume the library function wcwidth() works better than our own
|
||||
* stuff. It should return 1 for ambiguous width chars!
|
||||
@@ -5661,9 +5668,9 @@ f_setcellwidths(typval_T *argvars, typval_T *rettv UNUSED)
|
||||
if (i == 0)
|
||||
{
|
||||
n1 = lili->li_tv.vval.v_number;
|
||||
if (n1 < 0x100)
|
||||
if (n1 < 0x80)
|
||||
{
|
||||
emsg(_(e_only_values_of_0x100_and_higher_supported));
|
||||
emsg(_(e_only_values_of_0x80_and_higher_supported));
|
||||
vim_free(ptrs);
|
||||
return;
|
||||
}
|
||||
|
Reference in New Issue
Block a user