diff options
Diffstat (limited to 'data/vim/patches/8.1.1364')
-rw-r--r-- | data/vim/patches/8.1.1364 | 469 |
1 files changed, 469 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1364 b/data/vim/patches/8.1.1364 new file mode 100644 index 000000000..f7a19d8e8 --- /dev/null +++ b/data/vim/patches/8.1.1364 @@ -0,0 +1,469 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.1364 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.1364 +Problem: Design for popup window support needs more details. +Solution: Add details about using a window and buffer. Rename popup_show() + to popup_create() and add popup_show() and popup_hide(). +Files: runtime/doc/popup.txt + + +*** ../vim-8.1.1363/runtime/doc/popup.txt 2019-05-12 21:43:24.626559005 +0200 +--- runtime/doc/popup.txt 2019-05-21 23:06:22.550406101 +0200 +*************** +*** 1,10 **** +! *popup.txt* For Vim version 8.1. Last change: 2019 May 12 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +! Displaying text with properties attached. *popup* *popup-window* + + THIS IS UNDER DESIGN - ANYTHING MAY STILL CHANGE + +--- 1,10 ---- +! *popup.txt* For Vim version 8.1. Last change: 2019 May 21 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +! Displaying text in floating window. *popup* *popup-window* + + THIS IS UNDER DESIGN - ANYTHING MAY STILL CHANGE + +*************** +*** 13,30 **** + 3. Examples |popup-examples| + + +! {not able to use text properties when the |+textprop| feature was +! disabled at compile time} + + ============================================================================== + 1. Introduction *popup-intro* + +! We are talking about popup windows here, text that goes on top of the buffer +! text and is under control of a plugin. Other popup functionality: + - popup menu, see |popup-menu| + - balloon, see |balloon-eval| + +! TODO + + ============================================================================== + 2. Functions *popup-functions* +--- 13,79 ---- + 3. Examples |popup-examples| + + +! {not available if the |+eval| feature was disabled at compile time} +! {not able to use text properties if the |+textprop| feature was disabled at +! compile time} + + ============================================================================== + 1. Introduction *popup-intro* + +! We are talking about popup windows here, text that goes on top of the regular +! windows and is under control of a plugin. You cannot edit the text in the +! popup window like with regular windows. +! +! A popup window can be used for such things as: +! - briefly show a message without changing the command line +! - prompt the user with a dialog +! - display information while typing +! - give extra information for auto-completion +! +! The text in the popup window can be colored with |text-properties|. It is +! also possible to use syntax highlighting. +! +! A popup window has a window-ID like other windows, but behaves differently. +! The size can be up to the whole Vim window and it overlaps other windows. +! It contains a buffer, and that buffer is always associated with the popup +! window. The window cannot be used in Normal, Visual or Insert mode, it does +! not get keyboard focus. You can use functions like `setbufline()` to change +! the text in the buffer. There are more differences from how this window and +! buffer behave compared to regular windows and buffers, see |popup-buffer|. +! +! If this is not what you are looking for, check out other popup functionality: + - popup menu, see |popup-menu| + - balloon, see |balloon-eval| + +! +! TODO: +! +! Example how to use syntax highlighting of a code snippet. +! +! Scrolling: When the screen scrolls up for output of an Ex command, what +! happens with popups? +! 1. Stay where they are. Problem: listed text may go behind and can't be read. +! 2. Scroll with the page. What if they get updated? Either postpone, or take +! the scroll offset into account. +! Probably 2. is the best choice. +! +! Positioning relative to the popup-menu to avoid overlapping with it; add a +! function to get the position and size of the popup-menu. +! +! +! IMPLEMENTATION: +! - Put code in popupwin.c +! - Use win_update() for displaying +! - At first redraw all windows NOT_VALID when the popup moves or hides. +! - At first always display the popup windows at the end of update_screen(), +! lowest zindex first. +! - Later make it more efficient and avoid flicker +! - Use a separate list of windows, one for each tab and one global. Also put +! "aucmd_win" in there. +! - add optional {buf} command to execute(). Only works for a buffer that is +! visible in a window in the current tab or in a popup window. +! E.g. for execute('syntax enable', 'silent', bufnr) +! + + ============================================================================== + 2. Functions *popup-functions* +*************** +*** 33,88 **** + + Proposal and discussion on issue #4063: https://github.com/vim/vim/issues/4063 + +! [to be moved to eval.txt later] +! +! popup_show({lines}, {options}) *popup_show()* +! Open a popup window showing {lines}, which is a list of lines, +! where each line has text and text properties. + + {options} is a dictionary with many possible entries. + +! Returns a unique ID to be used with |popup_close()|. +! +! See |popup_show-usage| for details. + + +! popup_dialog({lines}, {options}) *popup_dialog()* +! Just like |popup_show()| but with different default options: +! pos "center" +! zindex 200 +! border [] + + + popup_notification({text}, {options}) *popup_notification()* +! Show the string {text} for 3 seconds at the top of the Vim +! window. This works like: > +! call popup_show([{'text': {text}}], { + \ 'line': 1, + \ 'col': 10, + \ 'time': 3000, + \ 'zindex': 200, + \ 'highlight': 'WarningMsg', + \ 'border: [], + \ }) + < Use {options} to change the properties. + + popup_atcursor({text}, {options}) *popup_atcursor()* +! Show the string {text} above the cursor, and close it when the +! cursor moves. This works like: > +! call popup_show([{'text': {text}}], { + \ 'line': 'cursor-1', + \ 'col': 'cursor', +- \ 'zindex': 50, + \ 'moved': 'WORD', + \ }) + < Use {options} to change the properties. + + +! popup_menu({lines}, {options}) *popup_atcursor()* +! Show the {lines} near the cursor, handle selecting one of the + items with cursorkeys, and close it an item is selected with +! Space or Enter. This works like: > +! call popup_show({lines}, { + \ 'pos': 'center', + \ 'zindex': 200, + \ 'wrap': 0, +--- 82,147 ---- + + Proposal and discussion on issue #4063: https://github.com/vim/vim/issues/4063 + +! [functions to be moved to eval.txt later, keep list of functions here] + ++ popup_create({text}, {options}) *popup_create()* ++ Open a popup window showing {text}, which is either: ++ - a string ++ - a list of strings ++ - a list of text lines with text properties + {options} is a dictionary with many possible entries. ++ See |popup_create-usage| for details. + +! Returns a window-ID, which can be used with other popup +! functions. Use `winbufnr()` to get the number of the buffer +! in the window: > +! let winid = popup_create('hello', {}) +! let bufnr = winbufnr(winid) +! call setbufline(bufnr, 2, 'second line') + + +! popup_dialog({text}, {options}) *popup_dialog()* +! Just like |popup_create()| but with these default options: > +! call popup_create({text}, { +! \ 'pos': 'center', +! \ 'zindex': 200, +! \ 'border': [], +! \}) +! < Use {options} to change the properties. + + + popup_notification({text}, {options}) *popup_notification()* +! Show the {text} for 3 seconds at the top of the Vim window. +! This works like: > +! call popup_create({text}, { + \ 'line': 1, + \ 'col': 10, + \ 'time': 3000, ++ \ 'tab': -1, + \ 'zindex': 200, + \ 'highlight': 'WarningMsg', + \ 'border: [], + \ }) + < Use {options} to change the properties. + ++ + popup_atcursor({text}, {options}) *popup_atcursor()* +! Show the {text} above the cursor, and close it when the cursor +! moves. This works like: > +! call popup_create({text}, { + \ 'line': 'cursor-1', + \ 'col': 'cursor', + \ 'moved': 'WORD', + \ }) + < Use {options} to change the properties. + + +! popup_menu({text}, {options}) *popup_menu()* +! Show the {text} near the cursor, handle selecting one of the + items with cursorkeys, and close it an item is selected with +! Space or Enter. {text} should have multiple lines to make this +! useful. This works like: > +! call popup_create({text}, { + \ 'pos': 'center', + \ 'zindex': 200, + \ 'wrap': 0, +*************** +*** 93,101 **** + "callback" to a function that handles the selected item. + + + popup_move({id}, {options}) *popup_move()* + Move popup {id} to the position speficied with {options}. +! {options} may contain the items from |popup_show()| that + specify the popup position: "line", "col", "pos", "maxheight", + "minheight", "maxwidth" and "minwidth". + +--- 152,168 ---- + "callback" to a function that handles the selected item. + + ++ popup_show({id}) *popup_show()* ++ If {id} is a hidden popup, show it now. ++ ++ popup_hide({id}) *popup_hide()* ++ If {id} is a displayed popup, hide it now. If the popup has a ++ filter it will not be invoked for so long as the popup is ++ hidden. ++ + popup_move({id}, {options}) *popup_move()* + Move popup {id} to the position speficied with {options}. +! {options} may contain the items from |popup_create()| that + specify the popup position: "line", "col", "pos", "maxheight", + "minheight", "maxwidth" and "minwidth". + +*************** +*** 116,136 **** + pressing 'n'. + + +- popup_setlines({id}, {lnum}, {lines}) *popup_setlines()* +- In popup {id} set line {lnum} and following to {lines}. +- +- {lnum} is one-based and must be either an existing line or +- just one below the last line, in which case the line gets +- appended. +- +- {lines} has the same format as one item in {lines} of +- |popup_show()|. Existing lines are replaced. When {lines} +- extends below the last line of the popup lines are appended. +- +- popup_getlines({id}) *popup_getlines()* +- Return the {lines} for popup {id}. +- +- + popup_setoptions({id}, {options}) *popup_setoptions()* + Override options in popup {id} with entries in {options}. + +--- 183,188 ---- +*************** +*** 142,160 **** + popup_close({id}) *popup_close()* + Close popup {id}. + +! +! POPUP_SHOW() ARGUMENTS *popup_show-usage* +! +! The first argument of |popup_show()| is a list of text lines. Each item in +! the list is a dictionary with these entries: +! text The text to display. + props A list of text properties. Optional. + Each entry is a dictionary, like the third argument of + |prop_add()|, but specifying the column in the + dictionary with a "col" entry, see below: + |popup-props|. + +! The second argument of |popup_show()| is a dictionary with options: + line screen line where to position the popup; can use + "cursor", "cursor+1" or "cursor-1" to use the line of + the cursor and add or subtract a number of lines; +--- 194,239 ---- + popup_close({id}) *popup_close()* + Close popup {id}. + +! *:popupclear* *:popupc* +! :popupc[lear] Emergency solution to a misbehaving plugin: close all popup +! windows. +! +! +! POPUP BUFFER AND WINDOW *popup-buffer* +! +! A new buffer is created to hold the text and text properties of the popup +! window. The buffer is always associated with the popup window and +! manipulation is restricted: +! - the buffer has no name +! - 'buftype' is "popup" +! - 'swapfile' is off +! - 'bufhidden' is "hide" +! - 'buflisted' is off +! TODO: more +! +! The window does have a cursor position, but the cursor is not displayed. +! +! 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') +! +! +! POPUP_CREATE() ARGUMENTS *popup_create-usage* +! +! The first argument of |popup_create()| specifies the text to be displayed, and +! optionally text properties. It is in one of three forms: +! - a string +! - a list of strings +! - a list of dictionaries, where each dictionary has these entries: +! text String with the text to display. + props A list of text properties. Optional. + Each entry is a dictionary, like the third argument of + |prop_add()|, but specifying the column in the + dictionary with a "col" entry, see below: + |popup-props|. + +! The second argument of |popup_create()| is a dictionary with options: + line screen line where to position the popup; can use + "cursor", "cursor+1" or "cursor-1" to use the line of + the cursor and add or subtract a number of lines; +*************** +*** 168,177 **** +--- 247,266 ---- + used for. Default is "botleft". Alternatively + "center" can be used to position the popup somewhere + near the cursor. ++ 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 ++ another popup with a higher "zindex" + maxheight maximum height + minheight minimum height + maxwidth maximum width + minwidth minimum width ++ hidden when TRUE the popup exists but is not displayed; use ++ `popup_show()` to unhide it. ++ tab when -1: display the popup on all tabs; when 0 (the ++ default): display the popup on the current tab; ++ otherwise the number of the tab page the popup is ++ displayed on; when invalid the current tab is used + title text to be displayed above the first item in the + popup, on top of any border + wrap TRUE to make the lines wrap (default TRUE) +*************** +*** 229,237 **** + + POPUP FILTER *popup-filter* + +! A callback that gets any typed keys while a popup is displayed. It can return +! TRUE to indicate the key has been handled and is to be discarded, or FALSE to +! let Vim handle the key as usual in the current state. + + The filter function is called with two arguments: the ID of the popup and the + key. +--- 318,328 ---- + + POPUP FILTER *popup-filter* + +! A callback that gets any typed keys while a popup is displayed. The filter is +! not invoked for as long as the popup is hidden. +! +! The filter can return TRUE to indicate the key has been handled and is to be +! discarded, or FALSE to let Vim handle the key as usual in the current state. + + The filter function is called with two arguments: the ID of the popup and the + key. +*************** +*** 241,246 **** +--- 332,341 ---- + cursor keys select another entry + Tab accept current suggestion + ++ A mouse click arrives as <LeftMouse>. The coordinates are in ++ v:mouse_popup_col and v:mouse_popup_row. The top-left screen cell of the ++ popup is col 1, row 1 (not counting the border). ++ + Vim provides standard filters |popup_filter_menu()| and + |popup_filter_yesno()|. + +*************** +*** 265,271 **** + endif + endfunc + +! call popup_show([{'text': 'Continue? y/n'}], { + \ 'filter': 'popup_filter_yesno', + \ 'callback': 'MyDialogHandler', + \ }) +--- 360,366 ---- + endif + endfunc + +! call popup_create(['Continue? y/n'], { + \ 'filter': 'popup_filter_yesno', + \ 'callback': 'MyDialogHandler', + \ }) +*** ../vim-8.1.1363/src/version.c 2019-05-21 20:54:42.078415244 +0200 +--- src/version.c 2019-05-21 23:08:15.613816651 +0200 +*************** +*** 769,770 **** +--- 769,772 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1364, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +6. You refuse to go to a vacation spot with no electricity and no phone lines. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |