patch 8.1.1713: highlighting cursor line only works with popup_menu()
Problem: Highlighting cursor line only works with popup_menu().
Solution: Add the "cursorline" property. (Naruhiko Nishino, closes #4671)
diff --git a/src/popupwin.c b/src/popupwin.c
index f977517..4fe64fd 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -442,6 +442,34 @@
}
/*
+ * Highlight the line with the cursor.
+ * Also scrolls the text to put the cursor line in view.
+ */
+ static void
+popup_highlight_curline(win_T *wp)
+{
+ int id;
+ char buf[100];
+
+ match_delete(wp, 1, FALSE);
+
+ if ((wp->w_popup_flags & POPF_CURSORLINE) != 0)
+ {
+ // Scroll to show the line with the cursor. This assumes lines don't
+ // wrap.
+ while (wp->w_topline + wp->w_height - 1 < wp->w_cursor.lnum)
+ wp->w_topline++;
+ while (wp->w_cursor.lnum < wp->w_topline)
+ wp->w_topline--;
+
+ id = syn_name2id((char_u *)"PopupSelected");
+ vim_snprintf(buf, sizeof(buf), "\\%%%dl.*", (int)wp->w_cursor.lnum);
+ match_add(wp, (char_u *)(id == 0 ? "PmenuSel" : "PopupSelected"),
+ (char_u *)buf, 10, 1, NULL, NULL);
+ }
+}
+
+/*
* Shared between popup_create() and f_popup_setoptions().
*/
static void
@@ -635,6 +663,20 @@
handle_moved_argument(wp, di, TRUE);
}
+ di = dict_find(dict, (char_u *)"cursorline", -1);
+ if (di != NULL)
+ {
+ 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;
+ }
+ else
+ semsg(_(e_invargval), "cursorline");
+ }
+
di = dict_find(dict, (char_u *)"filter", -1);
if (di != NULL)
{
@@ -662,6 +704,7 @@
/*
* Go through the options in "dict" and apply them to popup window "wp".
+ * Only used when creating a new popup window.
*/
static void
apply_options(win_T *wp, dict_T *dict)
@@ -679,6 +722,7 @@
}
popup_mask_refresh = TRUE;
+ popup_highlight_curline(wp);
}
/*
@@ -1313,6 +1357,7 @@
set_callback(&wp->w_filter_cb, &callback);
wp->w_p_wrap = 0;
+ wp->w_popup_flags |= POPF_CURSORLINE;
}
for (i = 0; i < 4; ++i)
@@ -1502,26 +1547,6 @@
rettv->vval.v_number = 0;
}
- static void
-popup_highlight_curline(win_T *wp)
-{
- int id;
- char buf[100];
-
- match_delete(wp, 1, FALSE);
-
- // Scroll to show the line with the cursor. This assumes lines don't wrap.
- while (wp->w_topline + wp->w_height - 1 < wp->w_cursor.lnum)
- wp->w_topline++;
- while (wp->w_cursor.lnum < wp->w_topline)
- wp->w_topline--;
-
- id = syn_name2id((char_u *)"PopupSelected");
- vim_snprintf(buf, sizeof(buf), "\\%%%dl.*", (int)wp->w_cursor.lnum);
- match_add(wp, (char_u *)(id == 0 ? "PmenuSel" : "PopupSelected"),
- (char_u *)buf, 10, 1, NULL, NULL);
-}
-
/*
* popup_filter_menu({text}, {options})
*/
@@ -1630,10 +1655,7 @@
void
f_popup_menu(typval_T *argvars, typval_T *rettv)
{
- win_T *wp = popup_create(argvars, rettv, TYPE_MENU);
-
- if (wp != NULL)
- popup_highlight_curline(wp);
+ popup_create(argvars, rettv, TYPE_MENU);
}
/*
@@ -1858,6 +1880,7 @@
if (old_firstline != wp->w_firstline)
redraw_win_later(wp, NOT_VALID);
popup_mask_refresh = TRUE;
+ popup_highlight_curline(wp);
popup_adjust_position(wp);
}
@@ -2047,6 +2070,7 @@
dict_add_string(dict, "title", wp->w_popup_title);
dict_add_number(dict, "wrap", wp->w_p_wrap);
dict_add_number(dict, "drag", wp->w_popup_drag);
+ dict_add_number(dict, "cursorline", (wp->w_popup_flags & POPF_CURSORLINE) != 0);
dict_add_string(dict, "highlight", wp->w_p_wcr);
if (wp->w_scrollbar_highlight != NULL)
dict_add_string(dict, "scrollbarhighlight",
@@ -2181,6 +2205,7 @@
int dummy;
typval_T argv[3];
char_u buf[NUMBUFLEN];
+ linenr_T old_lnum = wp->w_cursor.lnum;
// Emergency exit: CTRL-C closes the popup.
if (c == Ctrl_C)
@@ -2205,6 +2230,9 @@
// NOTE: The callback might close the popup, thus make "wp" invalid.
call_callback(&wp->w_filter_cb, -1,
&rettv, 2, argv, NULL, 0L, 0L, &dummy, TRUE, NULL);
+ if (old_lnum != wp->w_cursor.lnum)
+ popup_highlight_curline(wp);
+
res = tv_get_number(&rettv);
vim_free(argv[1].vval.v_string);
clear_tv(&rettv);
diff --git a/src/testdir/dumps/Test_popupwin_cursorline_1.dump b/src/testdir/dumps/Test_popupwin_cursorline_1.dump
new file mode 100644
index 0000000..d73b149
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_cursorline_1.dump
@@ -0,0 +1,10 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @34|1+0#0000001#ffd7ff255@2| +0#4040ff13#ffffff0@35
+|~| @34|2+0#0000001#ffd7ff255@2| +0#4040ff13#ffffff0@35
+|~| @34|3+0#0000001#ffd7ff255@2| +0#4040ff13#ffffff0@35
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|0|,|0|-|1| @8|A|l@1|
diff --git a/src/testdir/dumps/Test_popupwin_cursorline_2.dump b/src/testdir/dumps/Test_popupwin_cursorline_2.dump
new file mode 100644
index 0000000..6c00f96
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_cursorline_2.dump
@@ -0,0 +1,10 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @34|1+0#0000001#e0e0e08@2| +0#4040ff13#ffffff0@35
+|~| @34|2+0#0000001#ffd7ff255@2| +0#4040ff13#ffffff0@35
+|~| @34|3+0#0000001#ffd7ff255@2| +0#4040ff13#ffffff0@35
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|0|,|0|-|1| @8|A|l@1|
diff --git a/src/testdir/dumps/Test_popupwin_cursorline_3.dump b/src/testdir/dumps/Test_popupwin_cursorline_3.dump
new file mode 100644
index 0000000..478c59d
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_cursorline_3.dump
@@ -0,0 +1,10 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @32|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |1@2| | +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |2@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@32
+|~| @73
+|~| @73
+| +0#0000000&@56|0|,|0|-|1| @8|A|l@1|
diff --git a/src/testdir/dumps/Test_popupwin_cursorline_4.dump b/src/testdir/dumps/Test_popupwin_cursorline_4.dump
new file mode 100644
index 0000000..85eef41
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_cursorline_4.dump
@@ -0,0 +1,10 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @32|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |2@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |3@2| | +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@32
+|~| @73
+|~| @73
+| +0#0000000&@56|0|,|0|-|1| @8|A|l@1|
diff --git a/src/testdir/dumps/Test_popupwin_cursorline_5.dump b/src/testdir/dumps/Test_popupwin_cursorline_5.dump
new file mode 100644
index 0000000..57d24aa
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_cursorline_5.dump
@@ -0,0 +1,10 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @32|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |1+0&#e0e0e08@2| +0&#ffd7ff255| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |2@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@32
+|~| @73
+|~| @73
+| +0#0000000&@56|0|,|0|-|1| @8|A|l@1|
diff --git a/src/testdir/dumps/Test_popupwin_cursorline_6.dump b/src/testdir/dumps/Test_popupwin_cursorline_6.dump
new file mode 100644
index 0000000..314c2d1
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_cursorline_6.dump
@@ -0,0 +1,10 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @32|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |2@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |3+0&#e0e0e08@2| +0&#ffd7ff255| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@32
+|~| @73
+|~| @73
+| +0#0000000&@56|0|,|0|-|1| @8|A|l@1|
diff --git a/src/testdir/dumps/Test_popupwin_menu_filter_1.dump b/src/testdir/dumps/Test_popupwin_menu_filter_1.dump
new file mode 100644
index 0000000..991ddec
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_menu_filter_1.dump
@@ -0,0 +1,10 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @32|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |1@2| | +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |2+0&#e0e0e08@2| +0&#ffd7ff255| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |3@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@32
+|~| @73
+|~| @73
+| +0#0000000&@56|0|,|0|-|1| @8|A|l@1|
diff --git a/src/testdir/dumps/Test_popupwin_menu_filter_2.dump b/src/testdir/dumps/Test_popupwin_menu_filter_2.dump
new file mode 100644
index 0000000..3862b92
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_menu_filter_2.dump
@@ -0,0 +1,10 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @32|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |1+0&#e0e0e08@2| +0&#ffd7ff255| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |2@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |3@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@32
+|~| @73
+|~| @73
+| +0#0000000&@56|0|,|0|-|1| @8|A|l@1|
diff --git a/src/testdir/dumps/Test_popupwin_menu_filter_3.dump b/src/testdir/dumps/Test_popupwin_menu_filter_3.dump
new file mode 100644
index 0000000..af0735c
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_menu_filter_3.dump
@@ -0,0 +1,10 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @32|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |7@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |8@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |9+0&#e0e0e08@2| +0&#ffd7ff255| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@32
+|~| @73
+|~| @73
+| +0#0000000&@56|0|,|0|-|1| @8|A|l@1|
diff --git a/src/testdir/dumps/Test_popupwin_menu_filter_4.dump b/src/testdir/dumps/Test_popupwin_menu_filter_4.dump
new file mode 100644
index 0000000..3862b92
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_menu_filter_4.dump
@@ -0,0 +1,10 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @32|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |1+0&#e0e0e08@2| +0&#ffd7ff255| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |2@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|║+0#0000001#ffd7ff255| |3@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@32
+|~| @32|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@32
+|~| @73
+|~| @73
+| +0#0000000&@56|0|,|0|-|1| @8|A|l@1|
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 740ac61..0ec901c 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -1921,4 +1921,176 @@
call delete('XtestPopupMenuScroll')
endfunc
+func Test_popup_menu_filter()
+ if !CanRunVimInTerminal()
+ throw 'Skipped: cannot make screendumps'
+ endif
+
+ let lines =<< trim END
+ function! MyFilter(winid, key) abort
+ if a:key == "0"
+ call win_execute(a:winid, "call setpos('.', [0, 1, 1, 0])")
+ return 1
+ endif
+ if a:key == "G"
+ call win_execute(a:winid, "call setpos('.', [0, line('$'), 1, 0])")
+ return 1
+ endif
+ if a:key == "j"
+ call win_execute(a:winid, "call setpos('.', [0, line('.') + 1, 1, 0])")
+ return 1
+ endif
+ if a:key == "k"
+ call win_execute(a:winid, "call setpos('.', [0, line('.') - 1, 1, 0])")
+ return 1
+ endif
+ if a:key == 'x'
+ call popup_close(a:winid)
+ return 1
+ endif
+ return 0
+ endfunction
+ call popup_menu(['111', '222', '333', '444', '555', '666', '777', '888', '999'], #{
+ \ maxheight : 3,
+ \ filter : 'MyFilter'
+ \ })
+ END
+ call writefile(lines, 'XtestPopupMenuFilter')
+ let buf = RunVimInTerminal('-S XtestPopupMenuFilter', #{rows: 10})
+
+ call term_sendkeys(buf, "j")
+ call VerifyScreenDump(buf, 'Test_popupwin_menu_filter_1', {})
+
+ call term_sendkeys(buf, "k")
+ call VerifyScreenDump(buf, 'Test_popupwin_menu_filter_2', {})
+
+ call term_sendkeys(buf, "G")
+ call VerifyScreenDump(buf, 'Test_popupwin_menu_filter_3', {})
+
+ call term_sendkeys(buf, "0")
+ call VerifyScreenDump(buf, 'Test_popupwin_menu_filter_4', {})
+
+ call term_sendkeys(buf, "x")
+
+ " clean up
+ call StopVimInTerminal(buf)
+ call delete('XtestPopupMenuFilter')
+endfunc
+
+func Test_popup_cursorline()
+ if !CanRunVimInTerminal()
+ throw 'Skipped: cannot make screendumps'
+ endif
+
+ let winid = popup_create('some text', {})
+ call assert_equal(0, popup_getoptions(winid).cursorline)
+ call popup_close(winid)
+
+ let winid = popup_create('some text', #{ cursorline: 1, })
+ 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)
+
+ let winid = popup_menu('some text', {})
+ call assert_equal(1, popup_getoptions(winid).cursorline)
+ call popup_close(winid)
+
+ let winid = popup_menu('some text', #{ cursorline: 1, })
+ call assert_equal(1, popup_getoptions(winid).cursorline)
+ call popup_close(winid)
+
+ let winid = popup_menu('some text', #{ cursorline: 0, })
+ call assert_equal(0, popup_getoptions(winid).cursorline)
+ call popup_close(winid)
+
+ " ---------
+ " Pattern 1
+ " ---------
+ let lines =<< trim END
+ call popup_create(['111', '222', '333'], #{ cursorline : 0 })
+ END
+ call writefile(lines, 'XtestPopupCursorLine')
+ let buf = RunVimInTerminal('-S XtestPopupCursorLine', #{rows: 10})
+ call VerifyScreenDump(buf, 'Test_popupwin_cursorline_1', {})
+ call term_sendkeys(buf, ":call popup_clear()\<cr>")
+ call StopVimInTerminal(buf)
+
+ " ---------
+ " Pattern 2
+ " ---------
+ let lines =<< trim END
+ call popup_create(['111', '222', '333'], #{ cursorline : 1 })
+ END
+ call writefile(lines, 'XtestPopupCursorLine')
+ let buf = RunVimInTerminal('-S XtestPopupCursorLine', #{rows: 10})
+ call VerifyScreenDump(buf, 'Test_popupwin_cursorline_2', {})
+ call term_sendkeys(buf, ":call popup_clear()\<cr>")
+ call StopVimInTerminal(buf)
+
+ " ---------
+ " Pattern 3
+ " ---------
+ let lines =<< trim END
+ function! MyFilter(winid, key) abort
+ if a:key == "j"
+ call win_execute(a:winid, "call setpos('.', [0, line('.') + 1, 1, 0]) | redraw")
+ return 1
+ endif
+ if a:key == 'x'
+ call popup_close(a:winid)
+ return 1
+ endif
+ return 0
+ endfunction
+ call popup_menu(['111', '222', '333'], #{
+ \ cursorline : 0,
+ \ maxheight : 2,
+ \ filter : 'MyFilter',
+ \ })
+ END
+ call writefile(lines, 'XtestPopupCursorLine')
+ let buf = RunVimInTerminal('-S XtestPopupCursorLine', #{rows: 10})
+ call VerifyScreenDump(buf, 'Test_popupwin_cursorline_3', {})
+ call term_sendkeys(buf, "j")
+ call term_sendkeys(buf, "j")
+ call VerifyScreenDump(buf, 'Test_popupwin_cursorline_4', {})
+ call term_sendkeys(buf, "x")
+ call StopVimInTerminal(buf)
+
+ " ---------
+ " Pattern 4
+ " ---------
+ let lines =<< trim END
+ function! MyFilter(winid, key) abort
+ if a:key == "j"
+ call win_execute(a:winid, "call setpos('.', [0, line('.') + 1, 1, 0]) | redraw")
+ return 1
+ endif
+ if a:key == 'x'
+ call popup_close(a:winid)
+ return 1
+ endif
+ return 0
+ endfunction
+ call popup_menu(['111', '222', '333'], #{
+ \ cursorline : 1,
+ \ maxheight : 2,
+ \ filter : 'MyFilter',
+ \ })
+ END
+ call writefile(lines, 'XtestPopupCursorLine')
+ let buf = RunVimInTerminal('-S XtestPopupCursorLine', #{rows: 10})
+ call VerifyScreenDump(buf, 'Test_popupwin_cursorline_5', {})
+ call term_sendkeys(buf, "j")
+ call term_sendkeys(buf, "j")
+ call VerifyScreenDump(buf, 'Test_popupwin_cursorline_6', {})
+ call term_sendkeys(buf, "x")
+ call StopVimInTerminal(buf)
+
+ call delete('XtestPopupCursorLine')
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index a6d1492..492e1ae 100644
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1713,
+/**/
1712,
/**/
1711,
diff --git a/src/vim.h b/src/vim.h
index 410d9d7..452a9b9 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -617,6 +617,7 @@
#define POPF_IS_POPUP 1 // this is a popup window
#define POPF_HIDDEN 2 // popup is not displayed
#define POPF_HANDLED 4 // popup was just redrawn or filtered
+#define POPF_CURSORLINE 8 // popup is highlighting at the cursorline
#ifdef FEAT_TEXT_PROP
# define WIN_IS_POPUP(wp) ((wp)->w_popup_flags != 0)
#else