]> granicus.if.org Git - vim/commitdiff
patch 8.1.1431: popup window listed as "Scratch" v8.1.1431
authorBram Moolenaar <Bram@vim.org>
Thu, 30 May 2019 20:32:34 +0000 (22:32 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 30 May 2019 20:32:34 +0000 (22:32 +0200)
Problem:    Popup window listed as "Scratch".
Solution:   List them as "Popup".

runtime/doc/popup.txt
runtime/doc/windows.txt
src/buffer.c
src/popupwin.c
src/testdir/test_popupwin.vim
src/version.c

index ad30e582703875e9c69df82073c7a06226aae547..add61acbf133ab5ff0832f5ba1cc74ef130e1d11 100644 (file)
@@ -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
index 187d00e4d9eb5375dd54a25964618d22743c0dfe..dca9dbf7edf3beec180c7b6a08a4bf32b185a5c4 100644 (file)
@@ -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|
index ea61c5ad03649e8d0a7d195602f6cbc27fdbbfbc..3bfb6396ba976964fbbecc70e234ad0bf3271ae1 100644 (file)
@@ -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]");
     }
index ef4609add90f85fc4ca1d798668a8d568a7d9be2..f828d9187834b342b76a7cfdb6b0ec9fb2e2dbba 100644 (file)
@@ -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);
     }
 }
index c5fdb6e875d29c40ff8ec5ef4c3fe55504b5615e..29d4c1531662e8cc86bce6e157d68054a5f1e3f8 100644 (file)
@@ -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
index 2f05cea8e71f8347bc72cc44077af3b2284ff216..9b20fb75acd4bbbdc9b24acc6d7928696798ea24 100644 (file)
@@ -767,6 +767,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1431,
 /**/
     1430,
 /**/