patch 9.1.0806: tests: no error check when setting global 'briopt' Commit: https://github.com/vim/vim/commit/b38700ac81d90a652e5c8495056dd78df5babdde Author: Milly <milly...@gmail.com> Date: Tue Oct 22 22:59:39 2024 +0200
patch 9.1.0806: tests: no error check when setting global 'briopt' Problem: tests: no error check when setting global 'briopt' Solution: also parse and check global 'briopt' value (Milly) closes: #15911 Signed-off-by: Milly <milly...@gmail.com> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/src/indent.c b/src/indent.c index 4ba31d2aa..e7de005ae 100644 --- a/src/indent.c +++ b/src/indent.c @@ -869,11 +869,15 @@ get_number_indent(linenr_T lnum) #if defined(FEAT_LINEBREAK) || defined(PROTO) /* + * Check "briopt" as 'breakindentopt' and update the members of "wp". * This is called when 'breakindentopt' is changed and when a window is * initialized. + * Returns FAIL for failure, OK otherwise. */ int -briopt_check(win_T *wp) +briopt_check( + char_u *briopt, // when NULL: use "wp->w_p_briopt" + win_T *wp) // when NULL: only check "briopt" { char_u *p; int bri_shift = 0; @@ -882,7 +886,11 @@ briopt_check(win_T *wp) int bri_list = 0; int bri_vcol = 0; - p = wp->w_p_briopt; + if (briopt != NULL) + p = briopt; + else + p = wp->w_p_briopt; + while (*p != NUL) { // Note: Keep this in sync with p_briopt_values @@ -918,6 +926,9 @@ briopt_check(win_T *wp) ++p; } + if (wp == NULL) + return OK; + wp->w_briopt_shift = bri_shift; wp->w_briopt_min = bri_min; wp->w_briopt_sbr = bri_sbr; diff --git a/src/option.c b/src/option.c index a55288a9e..179c61ea3 100644 --- a/src/option.c +++ b/src/option.c @@ -6751,7 +6751,7 @@ after_copy_winopt(win_T *wp) else wp->w_skipcol = 0; #ifdef FEAT_LINEBREAK - briopt_check(wp); + briopt_check(NULL, wp); #endif #ifdef FEAT_SYN_HL fill_culopt_flags(NULL, wp); diff --git a/src/optionstr.c b/src/optionstr.c index 17947460b..c45b3bce7 100644 --- a/src/optionstr.c +++ b/src/optionstr.c @@ -1235,17 +1235,19 @@ did_set_breakat(optset_T *args UNUSED) * The 'breakindentopt' option is changed. */ char * -did_set_breakindentopt(optset_T *args UNUSED) +did_set_breakindentopt(optset_T *args) { - char *errmsg = NULL; + char_u **varp = (char_u **)args->os_varp; + + if (briopt_check(*varp, varp == &curwin->w_p_briopt ? curwin : NULL) + == FAIL) + return e_invalid_argument; - if (briopt_check(curwin) == FAIL) - errmsg = e_invalid_argument; // list setting requires a redraw - if (curwin->w_briopt_list) + if (varp == &curwin->w_p_briopt && curwin->w_briopt_list) redraw_all_later(UPD_NOT_VALID); - return errmsg; + return NULL; } int diff --git a/src/proto/indent.pro b/src/proto/indent.pro index 6e56a0e37..f187ec5fc 100644 --- a/src/proto/indent.pro +++ b/src/proto/indent.pro @@ -18,7 +18,7 @@ int get_indent_str(char_u *ptr, int ts, int no_ts); int get_indent_str_vtab(char_u *ptr, int ts, int *vts, int no_ts); int set_indent(int size, int flags); int get_number_indent(linenr_T lnum); -int briopt_check(win_T *wp); +int briopt_check(char_u *briopt, win_T *wp); int get_breakindent_win(win_T *wp, char_u *line); int inindent(int extra); void op_reindent(oparg_T *oap, int (*how)(void)); diff --git a/src/testdir/gen_opt_test.vim b/src/testdir/gen_opt_test.vim index 5e582fa7a..9d942af04 100644 --- a/src/testdir/gen_opt_test.vim +++ b/src/testdir/gen_opt_test.vim @@ -45,7 +45,6 @@ endwhile let skip_setglobal_reasons = #{ \ iminsert: 'The global value is always overwritten by the local value', \ imsearch: 'The global value is always overwritten by the local value', - \ breakindentopt: 'TODO: fix missing error handling for setglobal', \ conceallevel: 'TODO: fix missing error handling for setglobal', \ foldcolumn: 'TODO: fix missing error handling for setglobal', \ numberwidth: 'TODO: fix missing error handling for setglobal', diff --git a/src/version.c b/src/version.c index 8f1d6066e..12f873227 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 806, /**/ 805, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/E1t3MDZ-000SZX-GE%40256bit.org.