patch 8.2.2541: popup_create() does not allow boolean for "cursorline"
Problem: Popup_create() does not allow boolean for "cursorline".
Solution: Use dict_get_bool(). (issue #7869)
diff --git a/src/popupwin.c b/src/popupwin.c
index 1122f48..335345f 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -873,18 +873,13 @@
handle_moved_argument(wp, di, TRUE);
}
- di = dict_find(dict, (char_u *)"cursorline", -1);
- if (di != NULL)
+ nr = dict_get_bool(dict, (char_u *)"cursorline", -1);
+ if (nr != -1)
{
- if (di->di_tv.v_type == VAR_NUMBER)
- {
- if (di->di_tv.vval.v_number != 0)
- wp->w_popup_flags |= POPF_CURSORLINE;
- else
- wp->w_popup_flags &= ~POPF_CURSORLINE;
- }
+ if (nr != 0)
+ wp->w_popup_flags |= POPF_CURSORLINE;
else
- semsg(_(e_invargval), "cursorline");
+ wp->w_popup_flags &= ~POPF_CURSORLINE;
}
di = dict_find(dict, (char_u *)"filter", -1);
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 44b1800..f1a4b52 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -2978,6 +2978,10 @@
call assert_equal(1, popup_getoptions(winid).cursorline)
call popup_close(winid)
+ let winid = popup_create('some text', #{ cursorline: v:true, })
+ call assert_equal(1, popup_getoptions(winid).cursorline)
+ call popup_close(winid)
+
let winid = popup_create('some text', #{ cursorline: 0, })
call assert_equal(0, popup_getoptions(winid).cursorline)
call popup_close(winid)
@@ -3112,6 +3116,15 @@
call delete('XtestPopupCursorLine')
endfunc
+def Test_popup_cursorline_vim9()
+ var winid = popup_create('some text', { cursorline: true, })
+ assert_equal(1, popup_getoptions(winid).cursorline)
+ popup_close(winid)
+
+ assert_fails("popup_create('some text', { cursorline: 2, })", 'E1023:')
+ popup_clear()
+enddef
+
func Test_previewpopup()
CheckScreendump
CheckFeature quickfix
diff --git a/src/version.c b/src/version.c
index 25ea70b..d6ee9bb 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2541,
+/**/
2540,
/**/
2539,