0
0
mirror of https://github.com/vim/vim.git synced 2025-10-12 06:44:06 -04:00

patch 8.1.1626: no test for closing a popup window with a modified buffer

Problem:    No test for closing a popup window with a modified buffer.
Solution:   Add a test.  Add "popups" to getbufinfo().
This commit is contained in:
Bram Moolenaar
2019-07-04 15:39:28 +02:00
parent bc2cfe4672
commit 5ca1ac373a
4 changed files with 56 additions and 4 deletions

View File

@@ -4509,10 +4509,10 @@ get_buffer_info(buf_T *buf)
dict_add_number(dict, "hidden",
buf->b_ml.ml_mfp != NULL && buf->b_nwindows == 0);
/* Get a reference to buffer variables */
// Get a reference to buffer variables
dict_add_dict(dict, "variables", buf->b_vars);
/* List of windows displaying this buffer */
// List of windows displaying this buffer
windows = list_alloc();
if (windows != NULL)
{
@@ -4522,6 +4522,23 @@ get_buffer_info(buf_T *buf)
dict_add_list(dict, "windows", windows);
}
#ifdef FEAT_TEXT_PROP
// List of popup windows displaying this buffer
windows = list_alloc();
if (windows != NULL)
{
for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
if (wp->w_buffer == buf)
list_append_number(windows, (varnumber_T)wp->w_id);
FOR_ALL_TABPAGES(tp)
for (wp = tp->tp_first_popupwin; wp != NULL; wp = wp->w_next)
if (wp->w_buffer == buf)
list_append_number(windows, (varnumber_T)wp->w_id);
dict_add_list(dict, "popups", windows);
}
#endif
#ifdef FEAT_SIGNS
if (buf->b_signlist != NULL)
{
@@ -5685,7 +5702,7 @@ get_tabpage_info(tabpage_T *tp, int tp_idx)
if (l != NULL)
{
for (wp = (tp == curtab) ? firstwin : tp->tp_firstwin;
wp; wp = wp->w_next)
wp != NULL; wp = wp->w_next)
list_append_number(l, (varnumber_T)wp->w_id);
dict_add_list(dict, "windows", l);
}

View File

@@ -1710,3 +1710,30 @@ func Test_popupwin_width()
endfor
call popup_clear()
endfunc
func Test_popupwin_buf_close()
let buf = bufadd('Xtestbuf')
call bufload(buf)
call setbufline(buf, 1, ['just', 'some', 'lines'])
let winid = popup_create(buf, {})
redraw
call assert_equal(3, popup_getpos(winid).height)
let bufinfo = getbufinfo(buf)[0]
call assert_equal(1, bufinfo.changed)
call assert_equal(0, bufinfo.hidden)
call assert_equal(0, bufinfo.listed)
call assert_equal(1, bufinfo.loaded)
call assert_equal([], bufinfo.windows)
call assert_equal([winid], bufinfo.popups)
call popup_close(winid)
call assert_equal({}, popup_getpos(winid))
let bufinfo = getbufinfo(buf)[0]
call assert_equal(1, bufinfo.changed)
call assert_equal(1, bufinfo.hidden)
call assert_equal(0, bufinfo.listed)
call assert_equal(1, bufinfo.loaded)
call assert_equal([], bufinfo.windows)
call assert_equal([], bufinfo.popups)
exe 'bwipe! ' .. buf
endfunc

View File

@@ -777,6 +777,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1626,
/**/
1625,
/**/