vim-patch:9.1.0716: resetting setcellwidth() doesn't update the screen (#30274)

Problem:  resetting setcellwidth() doesn't update the screen
Solution: Redraw after clearing the cellwidth table (Ken Takata)

closes: vim/vim#15628

539e9b571a

Co-authored-by: Ken Takata <kentkt@csc.jp>
This commit is contained in:
zeertzjq 2024-09-06 06:52:13 +08:00 committed by GitHub
parent e36e68d35c
commit d60c753cff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 5 additions and 1 deletions

View File

@ -2926,7 +2926,7 @@ void f_setcellwidths(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
xfree(cw_table);
cw_table = NULL;
cw_table_size = 0;
return;
goto done;
}
// Note: use list_T instead of listitem_T so that TV_LIST_ITEM_NEXT can be used properly below.
@ -3023,6 +3023,7 @@ void f_setcellwidths(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
}
xfree(cw_table_save);
done:
changed_window_setting_all();
redraw_all_later(UPD_NOT_VALID);
}

View File

@ -228,6 +228,9 @@ func Test_setcellwidths()
call setcellwidths([[0x2103, 0x2103, 2]])
redraw
call assert_equal(19, wincol())
call setcellwidths([])
redraw
call assert_equal((aw == 'single') ? 10 : 19, wincol())
endfor
set ambiwidth& isprint&