Mercurial > vim
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