summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1364
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1364')
-rw-r--r--data/vim/patches/8.1.1364469
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 ///