diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-08-08 14:59:07 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2022-08-08 20:03:40 +0800 |
commit | 603f7bd253e6dd3693e2957f0beb3223945fe705 (patch) | |
tree | 3b1bcf6bbb4d284c385c5afb412869fc993257d0 /src | |
parent | 9fedb6fd783b9ac48239bc7574779118eec3729a (diff) | |
download | rneovim-603f7bd253e6dd3693e2957f0beb3223945fe705.tar.gz rneovim-603f7bd253e6dd3693e2957f0beb3223945fe705.tar.bz2 rneovim-603f7bd253e6dd3693e2957f0beb3223945fe705.zip |
fix(fillchars): change fallback after setcellwidths()
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/mbyte.c | 5 | ||||
-rw-r--r-- | src/nvim/option.c | 32 |
2 files changed, 13 insertions, 24 deletions
diff --git a/src/nvim/mbyte.c b/src/nvim/mbyte.c index 5de7231a0a..e156fa58d1 100644 --- a/src/nvim/mbyte.c +++ b/src/nvim/mbyte.c @@ -2853,11 +2853,11 @@ void f_setcellwidths(typval_T *argvars, typval_T *rettv, FunPtr fptr) error = e_conflicts_with_value_of_listchars; } else { FOR_ALL_TAB_WINDOWS(tp, wp) { - if (set_chars_option(wp, &wp->w_p_lcs, false) != NULL) { + if (set_chars_option(wp, &wp->w_p_lcs, true) != NULL) { error = e_conflicts_with_value_of_listchars; break; } - if (set_chars_option(wp, &wp->w_p_fcs, false) != NULL) { + if (set_chars_option(wp, &wp->w_p_fcs, true) != NULL) { error = e_conflicts_with_value_of_fillchars; break; } @@ -2872,4 +2872,5 @@ void f_setcellwidths(typval_T *argvars, typval_T *rettv, FunPtr fptr) } xfree(cw_table_save); + redraw_all_later(NOT_VALID); } diff --git a/src/nvim/option.c b/src/nvim/option.c index 3ab1a32eeb..d7443bc593 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -3624,21 +3624,22 @@ char *set_chars_option(win_T *wp, char_u **varp, bool set) }; struct chars_tab *tab; + // XXX: Characters taking 2 columns is forbidden (TUI limitation?). Set old defaults in this case. struct chars_tab fcs_tab[] = { { &wp->w_p_fcs_chars.stl, "stl", ' ' }, { &wp->w_p_fcs_chars.stlnc, "stlnc", ' ' }, { &wp->w_p_fcs_chars.wbr, "wbr", ' ' }, - { &wp->w_p_fcs_chars.horiz, "horiz", 9472 }, // ─ - { &wp->w_p_fcs_chars.horizup, "horizup", 9524 }, // ┴ - { &wp->w_p_fcs_chars.horizdown, "horizdown", 9516 }, // ┬ - { &wp->w_p_fcs_chars.vert, "vert", 9474 }, // │ - { &wp->w_p_fcs_chars.vertleft, "vertleft", 9508 }, // ┤ - { &wp->w_p_fcs_chars.vertright, "vertright", 9500 }, // ├ - { &wp->w_p_fcs_chars.verthoriz, "verthoriz", 9532 }, // ┼ - { &wp->w_p_fcs_chars.fold, "fold", 183 }, // · + { &wp->w_p_fcs_chars.horiz, "horiz", char2cells(0x2500) == 1 ? 0x2500 : '-' }, // ─ + { &wp->w_p_fcs_chars.horizup, "horizup", char2cells(0x2534) == 1 ? 0x2534 : '-' }, // ┴ + { &wp->w_p_fcs_chars.horizdown, "horizdown", char2cells(0x252c) == 1 ? 0x252c : '-' }, // ┬ + { &wp->w_p_fcs_chars.vert, "vert", char2cells(0x2502) == 1 ? 0x2502 : '|' }, // │ + { &wp->w_p_fcs_chars.vertleft, "vertleft", char2cells(0x2524) == 1 ? 0x2524 : '|' }, // ┤ + { &wp->w_p_fcs_chars.vertright, "vertright", char2cells(0x251c) == 1 ? 0x251c : '|' }, // ├ + { &wp->w_p_fcs_chars.verthoriz, "verthoriz", char2cells(0x253c) == 1 ? 0x253c : '+' }, // ┼ + { &wp->w_p_fcs_chars.fold, "fold", char2cells(0x00b7) == 1 ? 0x00b7 : '-' }, // · { &wp->w_p_fcs_chars.foldopen, "foldopen", '-' }, { &wp->w_p_fcs_chars.foldclosed, "foldclose", '+' }, - { &wp->w_p_fcs_chars.foldsep, "foldsep", 9474 }, // │ + { &wp->w_p_fcs_chars.foldsep, "foldsep", char2cells(0x2502) == 1 ? 0x2502 : '|' }, // │ { &wp->w_p_fcs_chars.diff, "diff", '-' }, { &wp->w_p_fcs_chars.msgsep, "msgsep", ' ' }, { &wp->w_p_fcs_chars.eob, "eob", '~' }, @@ -3667,19 +3668,6 @@ char *set_chars_option(win_T *wp, char_u **varp, bool set) if (varp == &wp->w_p_fcs && wp->w_p_fcs[0] == NUL) { varp = &p_fcs; } - if (*p_ambw == 'd') { - // XXX: If ambiwidth=double then some characters take 2 columns, - // which is forbidden (TUI limitation?). Set old defaults. - fcs_tab[3].def = '-'; - fcs_tab[4].def = '-'; - fcs_tab[5].def = '-'; - fcs_tab[6].def = '|'; - fcs_tab[7].def = '|'; - fcs_tab[8].def = '|'; - fcs_tab[9].def = '+'; - fcs_tab[10].def = '-'; - fcs_tab[13].def = '|'; - } } // first round: check for valid value, second round: assign values |