patch 9.1.0806: tests: no error check when setting global 'briopt'
Commit:
https://github.com/vim/vim/commit/b38700ac81d90a652e5c8495056dd78df5babdde
Author: Milly <[email protected]>
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 <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/E1t3MDZ-000SZX-GE%40256bit.org.