mirror of
https://github.com/neovim/neovim.git
synced 2025-10-09 19:36:40 +00:00
vim-patch:9.0.1212: cannot read back what setcellwidths() has done (#21867)
Problem: Cannot read back what setcellwidths() has done.
Solution: Add getcellwidths(). (Kota Kato, closes vim/vim#11837)
66bb9ae70f
Co-authored-by: Kota Kato <github@kat0h.com>
This commit is contained in:
@@ -148,6 +148,7 @@ return {
|
||||
getbufline={args={2, 3}, base=1},
|
||||
getbufoneline={args=2, base=1},
|
||||
getbufvar={args={2, 3}, base=1},
|
||||
getcellwidths={},
|
||||
getchangelist={args={0, 1}, base=1},
|
||||
getchar={args={0, 1}},
|
||||
getcharmod={},
|
||||
|
@@ -2795,6 +2795,21 @@ void f_setcellwidths(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
||||
redraw_all_later(UPD_NOT_VALID);
|
||||
}
|
||||
|
||||
/// "getcellwidths()" function
|
||||
void f_getcellwidths(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
||||
{
|
||||
tv_list_alloc_ret(rettv, (ptrdiff_t)cw_table_size);
|
||||
|
||||
for (size_t i = 0; i < cw_table_size; i++) {
|
||||
list_T *entry = tv_list_alloc(3);
|
||||
tv_list_append_number(entry, (varnumber_T)cw_table[i].first);
|
||||
tv_list_append_number(entry, (varnumber_T)cw_table[i].last);
|
||||
tv_list_append_number(entry, (varnumber_T)cw_table[i].width);
|
||||
|
||||
tv_list_append_list(rettv->vval.v_list, entry);
|
||||
}
|
||||
}
|
||||
|
||||
void f_charclass(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
||||
{
|
||||
if (tv_check_for_string_arg(argvars, 0) == FAIL
|
||||
|
@@ -199,6 +199,26 @@ func Test_setcellwidths()
|
||||
call setcellwidths([])
|
||||
endfunc
|
||||
|
||||
func Test_getcellwidths()
|
||||
call setcellwidths([])
|
||||
call assert_equal([], getcellwidths())
|
||||
|
||||
let widthlist = [
|
||||
\ [0x1330, 0x1330, 2],
|
||||
\ [9999, 10000, 1],
|
||||
\ [0x1337, 0x1339, 2],
|
||||
\]
|
||||
let widthlistsorted = [
|
||||
\ [0x1330, 0x1330, 2],
|
||||
\ [0x1337, 0x1339, 2],
|
||||
\ [9999, 10000, 1],
|
||||
\]
|
||||
call setcellwidths(widthlist)
|
||||
call assert_equal(widthlistsorted, getcellwidths())
|
||||
|
||||
call setcellwidths([])
|
||||
endfunc
|
||||
|
||||
func Test_setcellwidths_dump()
|
||||
CheckRunVimInTerminal
|
||||
|
||||
|
Reference in New Issue
Block a user