mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -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:
parent
bc2cfe4672
commit
5ca1ac373a
@ -3140,7 +3140,11 @@ bufadd({name}) *bufadd()*
|
|||||||
number. Otherwise return the buffer number of the newly
|
number. Otherwise return the buffer number of the newly
|
||||||
created buffer. When {name} is an empty string then a new
|
created buffer. When {name} is an empty string then a new
|
||||||
buffer is always created.
|
buffer is always created.
|
||||||
The buffer will not have' 'buflisted' set.
|
The buffer will not have' 'buflisted' set and not be loaded
|
||||||
|
yet. To add some text to the buffer use this: >
|
||||||
|
let bufnr = bufadd('someName')
|
||||||
|
call bufload(bufnr)
|
||||||
|
call setbufline(bufnr, 1, ['some', 'text'])
|
||||||
|
|
||||||
bufexists({expr}) *bufexists()*
|
bufexists({expr}) *bufexists()*
|
||||||
The result is a Number, which is |TRUE| if a buffer called
|
The result is a Number, which is |TRUE| if a buffer called
|
||||||
@ -4744,6 +4748,8 @@ getbufinfo([{dict}])
|
|||||||
buffer-local variables.
|
buffer-local variables.
|
||||||
windows list of |window-ID|s that display this
|
windows list of |window-ID|s that display this
|
||||||
buffer
|
buffer
|
||||||
|
popups list of popup |window-ID|s that
|
||||||
|
display this buffer
|
||||||
|
|
||||||
Examples: >
|
Examples: >
|
||||||
for buf in getbufinfo()
|
for buf in getbufinfo()
|
||||||
|
@ -4509,10 +4509,10 @@ get_buffer_info(buf_T *buf)
|
|||||||
dict_add_number(dict, "hidden",
|
dict_add_number(dict, "hidden",
|
||||||
buf->b_ml.ml_mfp != NULL && buf->b_nwindows == 0);
|
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);
|
dict_add_dict(dict, "variables", buf->b_vars);
|
||||||
|
|
||||||
/* List of windows displaying this buffer */
|
// List of windows displaying this buffer
|
||||||
windows = list_alloc();
|
windows = list_alloc();
|
||||||
if (windows != NULL)
|
if (windows != NULL)
|
||||||
{
|
{
|
||||||
@ -4522,6 +4522,23 @@ get_buffer_info(buf_T *buf)
|
|||||||
dict_add_list(dict, "windows", windows);
|
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
|
#ifdef FEAT_SIGNS
|
||||||
if (buf->b_signlist != NULL)
|
if (buf->b_signlist != NULL)
|
||||||
{
|
{
|
||||||
@ -5685,7 +5702,7 @@ get_tabpage_info(tabpage_T *tp, int tp_idx)
|
|||||||
if (l != NULL)
|
if (l != NULL)
|
||||||
{
|
{
|
||||||
for (wp = (tp == curtab) ? firstwin : tp->tp_firstwin;
|
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);
|
list_append_number(l, (varnumber_T)wp->w_id);
|
||||||
dict_add_list(dict, "windows", l);
|
dict_add_list(dict, "windows", l);
|
||||||
}
|
}
|
||||||
|
@ -1710,3 +1710,30 @@ func Test_popupwin_width()
|
|||||||
endfor
|
endfor
|
||||||
call popup_clear()
|
call popup_clear()
|
||||||
endfunc
|
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
|
||||||
|
@ -777,6 +777,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1626,
|
||||||
/**/
|
/**/
|
||||||
1625,
|
1625,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user