comparison runtime/doc/popup.txt @ 16654:7d54a66c95d7 v8.1.1329

patch 8.1.1329: plans for popup window support are spread out commit https://github.com/vim/vim/commit/957f85d54ebd5a3bd0d930de9603190f0876f977 Author: Bram Moolenaar <Bram@vim.org> Date: Sun May 12 21:43:48 2019 +0200 patch 8.1.1329: plans for popup window support are spread out Problem: Plans for popup window support are spread out. Solution: Add a first version of the popup window help.
author Bram Moolenaar <Bram@vim.org>
date Sun, 12 May 2019 21:45:05 +0200
parents
children 6030631a1541
comparison
equal deleted inserted replaced
16653:8011a4319da6 16654:7d54a66c95d7
1 *popup.txt* For Vim version 8.1. Last change: 2019 May 12
2
3
4 VIM REFERENCE MANUAL by Bram Moolenaar
5
6
7 Displaying text with properties attached. *popup* *popup-window*
8
9 THIS IS UNDER DESIGN - ANYTHING MAY STILL CHANGE
10
11 1. Introduction |popup-intro|
12 2. Functions |popup-functions|
13 3. Examples |popup-examples|
14
15
16 {not able to use text properties when the |+textprop| feature was
17 disabled at compile time}
18
19 ==============================================================================
20 1. Introduction *popup-intro*
21
22 We are talking about popup windows here, text that goes on top of the buffer
23 text and is under control of a plugin. Other popup functionality:
24 - popup menu, see |popup-menu|
25 - balloon, see |balloon-eval|
26
27 TODO
28
29 ==============================================================================
30 2. Functions *popup-functions*
31
32 THIS IS UNDER DESIGN - ANYTHING MAY STILL CHANGE
33
34 Proposal and discussion on issue #4063: https://github.com/vim/vim/issues/4063
35
36 [to be moved to eval.txt later]
37
38 popup_show({lines}, {options}) *popup_show()*
39 Open a popup window showing {lines}, which is a list of lines,
40 where each line has text and text properties.
41
42 {options} is a dictionary with many possible entries.
43
44 Returns a unique ID to be used with |popup_close()|.
45
46 See |popup_show-usage| for details.
47
48
49 popup_dialog({lines}, {options}) *popup_dialog()*
50 Just like |popup_show()| but with different default options:
51 pos "center"
52 zindex 200
53 border []
54
55
56 popup_notification({text}, {options}) *popup_notification()*
57 Show the string {text} for 3 seconds at the top of the Vim
58 window. This works like: >
59 call popup_show([{'text': {text}}], {
60 \ 'line': 1,
61 \ 'col': 10,
62 \ 'time': 3000,
63 \ 'zindex': 200,
64 \ 'highlight': 'WarningMsg',
65 \ 'border: [],
66 \ })
67 < Use {options} to change the properties.
68
69 popup_atcursor({text}, {options}) *popup_atcursor()*
70 Show the string {text} above the cursor, and close it when the
71 cursor moves. This works like: >
72 call popup_show([{'text': {text}}], {
73 \ 'line': 'cursor-1',
74 \ 'col': 'cursor',
75 \ 'zindex': 50,
76 \ 'moved': 'WORD',
77 \ })
78 < Use {options} to change the properties.
79
80
81 popup_menu({lines}, {options}) *popup_atcursor()*
82 Show the {lines} near the cursor, handle selecting one of the
83 items with cursorkeys, and close it an item is selected with
84 Space or Enter. This works like: >
85 call popup_show({lines}, {
86 \ 'pos': 'center',
87 \ 'zindex': 200,
88 \ 'wrap': 0,
89 \ 'border': [],
90 \ 'filter': 'popup_filter_menu',
91 \ })
92 < Use {options} to change the properties. Should at least set
93 "callback" to a function that handles the selected item.
94
95
96 popup_move({id}, {options}) *popup_move()*
97 Move popup {id} to the position speficied with {options}.
98 {options} may contain the items from |popup_show()| that
99 specify the popup position: "line", "col", "pos", "maxheight",
100 "minheight", "maxwidth" and "minwidth".
101
102
103 popup_filter_menu({id}, {key}) *popup_filter_menu()*
104 Filter that can be used for a popup. It handles the cursor
105 keys to move the selected index in the popup. Space and Enter
106 can be used to select an item. Invokes the "callback" of the
107 popup menu with the index of the selected line as the second
108 argument.
109
110
111 popup_filter_yesno({id}, {key}) *popup_filter_yesno()*
112 Filter that can be used for a popup. It handles only the keys
113 'y', 'Y' and 'n' or 'N'. Invokes the "callback" of the
114 popup menu with the 1 for 'y' or 'Y' and zero for 'n' or 'N'
115 as the second argument. Pressing Esc and CTRL-C works like
116 pressing 'n'.
117
118
119 popup_setlines({id}, {lnum}, {lines}) *popup_setlines()*
120 In popup {id} set line {lnum} and following to {lines}.
121
122 {lnum} is one-based and must be either an existing line or
123 just one below the last line, in which case the line gets
124 appended.
125
126 {lines} has the same format as one item in {lines} of
127 |popup_show()|. Existing lines are replaced. When {lines}
128 extends below the last line of the popup lines are appended.
129
130 popup_getlines({id}) *popup_getlines()*
131 Return the {lines} for popup {id}.
132
133
134 popup_setoptions({id}, {options}) *popup_setoptions()*
135 Override options in popup {id} with entries in {options}.
136
137
138 popup_getoptions({id}) *popup_getoptions()*
139 Return the {options} for popup {id}.
140
141
142 popup_close({id}) *popup_close()*
143 Close popup {id}.
144
145
146 POPUP_SHOW() ARGUMENTS *popup_show-usage*
147
148 The first argument of |popup_show()| is a list of text lines. Each item in
149 the list is a dictionary with these entries:
150 text The text to display.
151 props A list of text properties. Optional.
152 Each entry is a dictionary, like the third argument of
153 |prop_add()|, but specifying the column in the
154 dictionary with a "col" entry, see below:
155 |popup-props|.
156
157 The second argument of |popup_show()| is a dictionary with options:
158 line screen line where to position the popup; can use
159 "cursor", "cursor+1" or "cursor-1" to use the line of
160 the cursor and add or subtract a number of lines;
161 default is "cursor-1".
162 col screen column where to position the popup; can use
163 "cursor" to use the column of the cursor, "cursor+99"
164 and "cursor-99" to add or subtract a number of
165 columns; default is "cursor"
166 pos "topleft", "topright", "botleft" or "botright":
167 defines what corner of the popup "line" and "col" are
168 used for. Default is "botleft". Alternatively
169 "center" can be used to position the popup somewhere
170 near the cursor.
171 maxheight maximum height
172 minheight minimum height
173 maxwidth maximum width
174 minwidth minimum width
175 title text to be displayed above the first item in the
176 popup, on top of any border
177 wrap TRUE to make the lines wrap (default TRUE)
178 highlight highlight group name to use for the text, defines the
179 background and foreground color
180 border list with numbers, defining the border thickness
181 above/right/below/left of the popup; an empty list
182 uses a border of 1 all around
183 borderhighlight highlight group name to use for the border
184 borderchars list with characters, defining the character to use
185 for the top/right/bottom/left border; optionally
186 followed by the character to use for the
187 topright/botright/botleft/topleft corner; an empty
188 list can be used to show a double line all around
189 zindex priority for the popup, default 50
190 time time in milliseconds after which the popup will close;
191 when omitted |popup_close()| must be used.
192 moved "cell": close the popup if the cursor moved at least
193 one screen cell; "word" allows for moving within
194 |<cword>|, "WORD" allows for moving within |<cWORD>|,
195 a list with two numbers specifies the start and end
196 column
197 filter a callback that can filter typed characters, see
198 |popup-filter|
199 callback a callback to be used when the popup closes, e.g. when
200 using |popup_filter_menu()|, see |popup-callback|.
201
202 Depending on the "zindex" the popup goes under or above other popups. The
203 completion menu (|popup-menu|) has zindex 100. For messages that occur for a
204 short time the suggestion is to use zindex 1000.
205
206 By default text wraps, which causes a line in {lines} to occupy more than one
207 screen line. When "wrap" is FALSE then the text outside of the popup or
208 outside of the Vim window will not be displayed, thus truncated.
209
210
211 POPUP TEXT PROPERTIES *popup-props*
212
213 These are similar to the third argument of |prop_add()|, but not exactly the
214 same, since they only apply to one line.
215 col starting column, counted in bytes, use one for the
216 first column.
217 length length of text in bytes; can be zero
218 end_col column just after the text; not used when "length" is
219 present; when {col} and "end_col" are equal, this is a
220 zero-width text property
221 id user defined ID for the property; when omitted zero is
222 used
223 type name of the text property type, as added with
224 |prop_type_add()|
225 transparent do not show these characters, show the text under it;
226 if there is an border character to the right or below
227 it will be made transparent as well
228
229
230 POPUP FILTER *popup-filter*
231
232 A callback that gets any typed keys while a popup is displayed. It can return
233 TRUE to indicate the key has been handled and is to be discarded, or FALSE to
234 let Vim handle the key as usual in the current state.
235
236 The filter function is called with two arguments: the ID of the popup and the
237 key.
238
239 Some common key actions:
240 Esc close the popup
241 cursor keys select another entry
242 Tab accept current suggestion
243
244 Vim provides standard filters |popup_filter_menu()| and
245 |popup_filter_yesno()|.
246
247
248 POPUP CALLBACK *popup-callback*
249
250 A callback that is invoked when the popup closes. Used by
251 |popup_filter_menu()|. Invoked with two arguments: the ID of the popup and
252 the result, which would usually be an index in the popup lines, or whatever
253 the filter wants to pass.
254
255 ==============================================================================
256 3. Examples *popup-examples*
257
258 TODO
259
260 Prompt the user to press y/Y or n/N: >
261
262 func MyDialogHandler(id, result)
263 if a:result
264 " ... 'y' or 'Y' was pressed
265 endif
266 endfunc
267
268 call popup_show([{'text': 'Continue? y/n'}], {
269 \ 'filter': 'popup_filter_yesno',
270 \ 'callback': 'MyDialogHandler',
271 \ })
272 <
273
274 vim:tw=78:ts=8:noet:ft=help:norl: