Update runtime files
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
*popup.txt* For Vim version 8.2. Last change: 2022 Jun 06
|
||||
*popup.txt* For Vim version 8.2. Last change: 2022 Jun 16
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -1001,8 +1001,6 @@ To make the four corners transparent:
|
||||
|
||||
These examples use |Vim9| script.
|
||||
|
||||
TODO: more interesting examples
|
||||
|
||||
*popup_dialog-example*
|
||||
Prompt the user to press y/Y or n/N: >
|
||||
|
||||
@ -1015,89 +1013,87 @@ Prompt the user to press y/Y or n/N: >
|
||||
echomsg "'y' or 'Y' was NOT pressed"
|
||||
endif
|
||||
},
|
||||
padding: [2, 4, 2, 4],
|
||||
})
|
||||
<
|
||||
*popup_menu-shortcut-example*
|
||||
Extend popup_filter_menu() with shortcut keys: >
|
||||
|
||||
call popup_menu(['Save', 'Cancel', 'Discard'], #{
|
||||
\ filter: 'MyMenuFilter',
|
||||
\ callback: 'MyMenuHandler',
|
||||
\ })
|
||||
|
||||
func MyMenuFilter(id, key)
|
||||
" Handle shortcuts
|
||||
if a:key == 'S'
|
||||
call popup_close(a:id, 1)
|
||||
return 1
|
||||
endif
|
||||
if a:key == 'C'
|
||||
call popup_close(a:id, 2)
|
||||
return 1
|
||||
endif
|
||||
if a:key == 'D'
|
||||
call popup_close(a:id, 3)
|
||||
return 1
|
||||
endif
|
||||
|
||||
" No shortcut, pass to generic filter
|
||||
return popup_filter_menu(a:id, a:key)
|
||||
endfunc
|
||||
|
||||
func MyMenuHandler(id, result)
|
||||
echo $'Result: {a:result}'
|
||||
endfunc
|
||||
popup_menu(['Save', 'Cancel', 'Discard'], {
|
||||
callback: (_, result) => {
|
||||
echo 'dialog result is' result
|
||||
},
|
||||
filter: (id, key) => {
|
||||
# Handle shortcuts
|
||||
if key == 'S' || key == 's'
|
||||
popup_close(id, 1)
|
||||
elseif key == 'C' || key == 'c'
|
||||
popup_close(id, 2)
|
||||
elseif key == 'D' || key == 'd'
|
||||
popup_close(id, 3)
|
||||
else
|
||||
# No shortcut, pass to generic filter
|
||||
return popup_filter_menu(id, key)
|
||||
endif
|
||||
return true
|
||||
},
|
||||
})
|
||||
<
|
||||
*popup_beval_example*
|
||||
Example for using a popup window for 'ballooneval': >
|
||||
|
||||
set ballooneval balloonevalterm
|
||||
set balloonexpr=BalloonExpr()
|
||||
let s:winid = 0
|
||||
let s:last_text = ''
|
||||
var winid: number
|
||||
var last_text: string
|
||||
|
||||
func BalloonExpr()
|
||||
if s:winid && popup_getpos(s:winid) != {}
|
||||
" previous popup window still shows
|
||||
if v:beval_text == s:last_text
|
||||
" Still the same text, keep the existing popup
|
||||
return ''
|
||||
def BalloonExpr(): string
|
||||
# here you would use "v:beval_text" to lookup something interesting
|
||||
var text = v:beval_text
|
||||
if winid > 0 && popup_getpos(winid) != null_dict
|
||||
# previous popup window still shows
|
||||
if text == last_text
|
||||
# still the same text, keep the existing popup
|
||||
return null_string
|
||||
endif
|
||||
popup_close(winid)
|
||||
endif
|
||||
call popup_close(s:winid)
|
||||
endif
|
||||
let s:winid = popup_beval(v:beval_text, #{mousemoved: 'word'})
|
||||
let s:last_text = v:beval_text
|
||||
return ''
|
||||
endfunc
|
||||
<
|
||||
|
||||
winid = popup_beval(text, {})
|
||||
last_text = text
|
||||
return null_string
|
||||
enddef
|
||||
|
||||
If the text has to be obtained asynchronously return an empty string from the
|
||||
expression function and call popup_beval() once the text is available. In
|
||||
this example simulated with a timer callback: >
|
||||
|
||||
set ballooneval balloonevalterm
|
||||
set balloonexpr=BalloonExpr()
|
||||
let s:winid = 0
|
||||
let s:balloonText = ''
|
||||
var winid: number
|
||||
var last_text: string
|
||||
|
||||
func BalloonExpr()
|
||||
if s:winid && popup_getpos(s:winid) != {}
|
||||
" previous popup window still shows
|
||||
if v:beval_text == s:balloonText
|
||||
" Still the same text, keep the existing popup
|
||||
return ''
|
||||
def BalloonExpr(): string
|
||||
var text = v:beval_text
|
||||
if winid > 0 && popup_getpos(winid) != null_dict
|
||||
# previous popup window still shows
|
||||
if text == last_text
|
||||
# still the same text, keep the existing popup
|
||||
return null_string
|
||||
endif
|
||||
popup_close(winid)
|
||||
endif
|
||||
call popup_close(s:winid)
|
||||
let s:winid = 0
|
||||
endif
|
||||
" simulate an asynchronous lookup for the text to display
|
||||
let s:balloonText = v:beval_text
|
||||
call timer_start(100, 'ShowPopup')
|
||||
return ''
|
||||
endfunc
|
||||
|
||||
func ShowPopup(id)
|
||||
let s:winid = popup_beval(s:balloonText, #{mousemoved: 'word'})
|
||||
endfunc
|
||||
# Simulate an asynchronous lookup that takes half a second for the
|
||||
# text to display.
|
||||
last_text = text
|
||||
timer_start(500, 'ShowPopup')
|
||||
return null_string
|
||||
enddef
|
||||
|
||||
def ShowPopup(timerid: number)
|
||||
winid = popup_beval('Result: ' .. last_text, {})
|
||||
enddef
|
||||
<
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||
|
||||
Reference in New Issue
Block a user