diff options
-rw-r--r-- | runtime/doc/builtin.txt | 7 | ||||
-rw-r--r-- | src/nvim/mbyte.c | 6 | ||||
-rw-r--r-- | src/nvim/testdir/test_functions.vim | 2 |
3 files changed, 8 insertions, 7 deletions
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt index 719953bc22..291eea7263 100644 --- a/runtime/doc/builtin.txt +++ b/runtime/doc/builtin.txt @@ -6838,9 +6838,9 @@ setcellwidths({list}) *setcellwidths()* tells Vim how wide characters are, counted in screen cells. This overrides 'ambiwidth'. Example: > setcellwidths([[0xad, 0xad, 1], - \ [0x2194, 0x2199, 2]]) + \ [0x2194, 0x2199, 2]]) -< *E1109* *E1110* *E1111* *E1112* *E1113* +< *E1109* *E1110* *E1111* *E1112* *E1113* *E1114* The {list} argument is a list of lists with each three numbers. These three numbers are [low, high, width]. "low" and "high" can be the same, in which case this refers to one @@ -6856,7 +6856,8 @@ setcellwidths({list}) *setcellwidths()* To clear the overrides pass an empty list: > setcellwidths([]); - +< You can use the script $VIMRUNTIME/tools/emoji_list.vim to see + the effect for known emoji characters. setcharpos({expr}, {list}) *setcharpos()* Same as |setpos()| but uses the specified column number as the diff --git a/src/nvim/mbyte.c b/src/nvim/mbyte.c index 378a08131d..53bbaab694 100644 --- a/src/nvim/mbyte.c +++ b/src/nvim/mbyte.c @@ -2861,10 +2861,8 @@ void f_setcellwidths(typval_T *argvars, typval_T *rettv, FunPtr fptr) void f_charclass(typval_T *argvars, typval_T *rettv, FunPtr fptr) { - if (argvars[0].v_type != VAR_STRING - || argvars[0].vval.v_string == NULL - || *argvars[0].vval.v_string == NUL) { - emsg(_(e_stringreq)); + if (tv_check_for_string(&argvars[0]) == FAIL + || argvars[0].vval.v_string == NULL) { return; } rettv->vval.v_number = mb_get_class((const char_u *)argvars[0].vval.v_string); diff --git a/src/nvim/testdir/test_functions.vim b/src/nvim/testdir/test_functions.vim index e0e0c1ca38..44b6f0373e 100644 --- a/src/nvim/testdir/test_functions.vim +++ b/src/nvim/testdir/test_functions.vim @@ -1774,6 +1774,8 @@ func Test_charclass() call assert_equal(1, charclass('.')) call assert_equal(2, charclass('x')) call assert_equal(3, charclass("\u203c")) + " this used to crash vim + call assert_equal(0, "xxx"[-1]->charclass()) endfunc func Test_eventhandler() |