changeset 16859:0154363d3b98 v8.1.1431

patch 8.1.1431: popup window listed as "Scratch" commit https://github.com/vim/vim/commit/c6896e20f8e7e8d9fe0fd1ad333aae1130d714e1 Author: Bram Moolenaar <Bram@vim.org> Date: Thu May 30 22:32:34 2019 +0200 patch 8.1.1431: popup window listed as "Scratch" Problem: Popup window listed as "Scratch". Solution: List them as "Popup".
author Bram Moolenaar <Bram@vim.org>
date Thu, 30 May 2019 22:45:04 +0200
parents b1c49e3da5f6
children 5d3f648fcf6c
files runtime/doc/popup.txt runtime/doc/windows.txt src/buffer.c src/popupwin.c src/testdir/test_popupwin.vim src/version.c
diffstat 6 files changed, 24 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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 `s
 	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()| 
 			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()| 
 			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
--- 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|
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5782,6 +5782,10 @@ buf_spname(buf_T *buf)
 	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]");
     }
 
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -550,6 +550,7 @@ f_popup_hide(typval_T *argvars, typval_T
     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
     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);
     }
 }
--- 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
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1431,
+/**/
     1430,
 /**/
     1429,