From c6896e20f8e7e8d9fe0fd1ad333aae1130d714e1 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 30 May 2019 22:32:34 +0200 Subject: [PATCH] patch 8.1.1431: popup window listed as "Scratch" Problem: Popup window listed as "Scratch". Solution: List them as "Popup". --- runtime/doc/popup.txt | 8 ++++---- runtime/doc/windows.txt | 9 ++++++++- src/buffer.c | 4 ++++ src/popupwin.c | 2 ++ src/testdir/test_popupwin.vim | 4 ++++ src/version.c | 2 ++ 6 files changed, 24 insertions(+), 5 deletions(-) diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt index ad30e58270..add61acbf1 100644 --- a/runtime/doc/popup.txt +++ b/runtime/doc/popup.txt @@ -85,11 +85,11 @@ Probably 2. is the best choice. IMPLEMENTATION: - Code is in popupwin.c -- Implement the "pos" option. - Implement filter. Check that popup_close() works in the filter. +- Implement padding +- Implement border - Handle screen resize in screenalloc(). -- show [Popup] instead of [Scratch] in ":ls!" - Make redrawing more efficient and avoid flicker. Store popup info in a mask, use the mask in screen_line() Fix redrawing problem with completion. @@ -287,6 +287,8 @@ Options can be set on the window with `setwinvar()`, e.g.: > call setwinvar(winid, '&wrap', 0) And options can be set on the buffer with `setbufvar()`, e.g.: > call setbufvar(winbufnr(winid), '&filetype', 'java') +Note that this does not trigger autocommands. Use `win_execute()` if you do +need them. POPUP_CREATE() ARGUMENTS *popup_create-usage* @@ -320,7 +322,6 @@ The second argument of |popup_create()| is a dictionary with options: Alternatively "center" can be used to position the popup in the center of the Vim window, in which case "line" and "col" are ignored. - {not implemented yet} flip when TRUE (the default) and the position is relative to the cursor, flip to below or above the cursor to avoid overlap with the |popupmenu-completion| or @@ -342,7 +343,6 @@ The second argument of |popup_create()| is a dictionary with options: popup, on top of any border {not implemented yet} wrap TRUE to make the lines wrap (default TRUE) - {not implemented yet} highlight highlight group name to use for the text, stored in the 'wincolor' option padding list with numbers, defining the padding diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt index 187d00e4d9..dca9dbf7ed 100644 --- a/runtime/doc/windows.txt +++ b/runtime/doc/windows.txt @@ -1,4 +1,4 @@ -*windows.txt* For Vim version 8.1. Last change: 2019 May 18 +*windows.txt* For Vim version 8.1. Last change: 2019 May 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1030,6 +1030,13 @@ list of buffers. |unlisted-buffer| thus you can always go to a specific buffer with ":buffer N" or "N CTRL-^", where N is the buffer number. + For the file name these special values are used: + [Prompt] |prompt-buffer| + [Popup] buffer of a |popup-window| + [Scratch] 'buftype' is "nofile" + [No Name] no file name specified + For a |terminal-window| buffer the status is used. + Indicators (chars in the same column are mutually exclusive): u an unlisted buffer (only displayed when [!] is used) |unlisted-buffer| diff --git a/src/buffer.c b/src/buffer.c index ea61c5ad03..3bfb6396ba 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -5781,6 +5781,10 @@ buf_spname(buf_T *buf) #ifdef FEAT_JOB_CHANNEL if (bt_prompt(buf)) return (char_u *)_("[Prompt]"); +#endif +#ifdef FEAT_TEXT_PROP + if (bt_popup(buf)) + return (char_u *)_("[Popup]"); #endif return (char_u *)_("[Scratch]"); } diff --git a/src/popupwin.c b/src/popupwin.c index ef4609add9..f828d91878 100644 --- a/src/popupwin.c +++ b/src/popupwin.c @@ -550,6 +550,7 @@ f_popup_hide(typval_T *argvars, typval_T *rettv UNUSED) if (wp != NULL && (wp->w_popup_flags & POPF_HIDDEN) == 0) { wp->w_popup_flags |= POPF_HIDDEN; + --wp->w_buffer->b_nwindows; redraw_all_later(NOT_VALID); } } @@ -566,6 +567,7 @@ f_popup_show(typval_T *argvars, typval_T *rettv UNUSED) if (wp != NULL && (wp->w_popup_flags & POPF_HIDDEN) != 0) { wp->w_popup_flags &= ~POPF_HIDDEN; + ++wp->w_buffer->b_nwindows; redraw_all_later(NOT_VALID); } } diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim index c5fdb6e875..29d4c15316 100644 --- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -196,12 +196,16 @@ func Test_popup_hide() let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '') call assert_equal('world', line) call assert_equal(1, popup_getpos(winid).visible) + " buffer is still listed and active + call assert_match(winbufnr(winid) .. 'u a.*\[Popup\]', execute('ls u')) call popup_hide(winid) redraw let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '') call assert_equal('hello', line) call assert_equal(0, popup_getpos(winid).visible) + " buffer is still listed but hidden + call assert_match(winbufnr(winid) .. 'u h.*\[Popup\]', execute('ls u')) call popup_show(winid) redraw diff --git a/src/version.c b/src/version.c index 2f05cea8e7..9b20fb75ac 100644 --- a/src/version.c +++ b/src/version.c @@ -767,6 +767,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1431, /**/ 1430, /**/