forked from aniani/vim
patch 8.0.0396: 'balloonexpr' only works synchronously
Problem: 'balloonexpr' only works synchronously. Solution: Add balloon_show(). (Jusufadis Bakamovic, closes #1449)
This commit is contained in:
@@ -1981,19 +1981,20 @@ argidx() Number current index in the argument list
|
|||||||
arglistid([{winnr} [, {tabnr}]]) Number argument list id
|
arglistid([{winnr} [, {tabnr}]]) Number argument list id
|
||||||
argv({nr}) String {nr} entry of the argument list
|
argv({nr}) String {nr} entry of the argument list
|
||||||
argv() List the argument list
|
argv() List the argument list
|
||||||
assert_equal({exp}, {act} [, {msg}]) none assert {exp} is equal to {act}
|
assert_equal({exp}, {act} [, {msg}]) none assert {exp} is equal to {act}
|
||||||
assert_exception({error} [, {msg}]) none assert {error} is in v:exception
|
assert_exception({error} [, {msg}]) none assert {error} is in v:exception
|
||||||
assert_fails({cmd} [, {error}]) none assert {cmd} fails
|
assert_fails({cmd} [, {error}]) none assert {cmd} fails
|
||||||
assert_false({actual} [, {msg}]) none assert {actual} is false
|
assert_false({actual} [, {msg}]) none assert {actual} is false
|
||||||
assert_inrange({lower}, {upper}, {actual} [, {msg}])
|
assert_inrange({lower}, {upper}, {actual} [, {msg}])
|
||||||
none assert {actual} is inside the range
|
none assert {actual} is inside the range
|
||||||
assert_match({pat}, {text} [, {msg}]) none assert {pat} matches {text}
|
assert_match({pat}, {text} [, {msg}]) none assert {pat} matches {text}
|
||||||
assert_notequal({exp}, {act} [, {msg}]) none assert {exp} is not equal {act}
|
assert_notequal({exp}, {act} [, {msg}]) none assert {exp} is not equal {act}
|
||||||
assert_notmatch({pat}, {text} [, {msg}]) none assert {pat} not matches {text}
|
assert_notmatch({pat}, {text} [, {msg}]) none assert {pat} not matches {text}
|
||||||
assert_true({actual} [, {msg}]) none assert {actual} is true
|
assert_true({actual} [, {msg}]) none assert {actual} is true
|
||||||
asin({expr}) Float arc sine of {expr}
|
asin({expr}) Float arc sine of {expr}
|
||||||
atan({expr}) Float arc tangent of {expr}
|
atan({expr}) Float arc tangent of {expr}
|
||||||
atan2({expr1}, {expr2}) Float arc tangent of {expr1} / {expr2}
|
atan2({expr1}, {expr2}) Float arc tangent of {expr1} / {expr2}
|
||||||
|
balloon_show({msg}) none show {msg} inside the balloon
|
||||||
browse({save}, {title}, {initdir}, {default})
|
browse({save}, {title}, {initdir}, {default})
|
||||||
String put up a file requester
|
String put up a file requester
|
||||||
browsedir({title}, {initdir}) String put up a directory requester
|
browsedir({title}, {initdir}) String put up a directory requester
|
||||||
@@ -2619,6 +2620,25 @@ atan2({expr1}, {expr2}) *atan2()*
|
|||||||
< 2.356194
|
< 2.356194
|
||||||
{only available when compiled with the |+float| feature}
|
{only available when compiled with the |+float| feature}
|
||||||
|
|
||||||
|
balloon_show({msg}) *balloon_show()*
|
||||||
|
Show {msg} inside the balloon.
|
||||||
|
Example: >
|
||||||
|
func GetBalloonContent()
|
||||||
|
" initiate getting the content
|
||||||
|
return ''
|
||||||
|
endfunc
|
||||||
|
set balloonexpr=GetBalloonContent()
|
||||||
|
|
||||||
|
func BalloonCallback(result)
|
||||||
|
call balloon_show(a:result)
|
||||||
|
endfunc
|
||||||
|
<
|
||||||
|
The intended use is that fetching the content of the balloon
|
||||||
|
is initiated from 'balloonexpr'. It will invoke an
|
||||||
|
asynchronous method, in which a callback invokes
|
||||||
|
balloon_show(). The 'balloonexpr' itself can return an
|
||||||
|
empty string or a placeholder.
|
||||||
|
{only available when compiled with the +beval feature}
|
||||||
|
|
||||||
*browse()*
|
*browse()*
|
||||||
browse({save}, {title}, {initdir}, {default})
|
browse({save}, {title}, {initdir}, {default})
|
||||||
|
@@ -58,6 +58,9 @@ static void f_asin(typval_T *argvars, typval_T *rettv);
|
|||||||
static void f_atan(typval_T *argvars, typval_T *rettv);
|
static void f_atan(typval_T *argvars, typval_T *rettv);
|
||||||
static void f_atan2(typval_T *argvars, typval_T *rettv);
|
static void f_atan2(typval_T *argvars, typval_T *rettv);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef FEAT_BEVAL
|
||||||
|
static void f_balloon_show(typval_T *argvars, typval_T *rettv);
|
||||||
|
#endif
|
||||||
static void f_browse(typval_T *argvars, typval_T *rettv);
|
static void f_browse(typval_T *argvars, typval_T *rettv);
|
||||||
static void f_browsedir(typval_T *argvars, typval_T *rettv);
|
static void f_browsedir(typval_T *argvars, typval_T *rettv);
|
||||||
static void f_bufexists(typval_T *argvars, typval_T *rettv);
|
static void f_bufexists(typval_T *argvars, typval_T *rettv);
|
||||||
@@ -483,6 +486,9 @@ static struct fst
|
|||||||
#ifdef FEAT_FLOAT
|
#ifdef FEAT_FLOAT
|
||||||
{"atan", 1, 1, f_atan},
|
{"atan", 1, 1, f_atan},
|
||||||
{"atan2", 2, 2, f_atan2},
|
{"atan2", 2, 2, f_atan2},
|
||||||
|
#endif
|
||||||
|
#ifdef FEAT_BEVAL
|
||||||
|
{"balloon_show", 1, 1, f_balloon_show},
|
||||||
#endif
|
#endif
|
||||||
{"browse", 4, 4, f_browse},
|
{"browse", 4, 4, f_browse},
|
||||||
{"browsedir", 2, 2, f_browsedir},
|
{"browsedir", 2, 2, f_browsedir},
|
||||||
@@ -1362,6 +1368,17 @@ f_atan2(typval_T *argvars, typval_T *rettv)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "balloon_show()" function
|
||||||
|
*/
|
||||||
|
#ifdef FEAT_BEVAL
|
||||||
|
static void
|
||||||
|
f_balloon_show(typval_T *argvars, typval_T *rettv UNUSED)
|
||||||
|
{
|
||||||
|
gui_mch_post_balloon(balloonEval, get_tv_string_chk(&argvars[0]));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "browse(save, title, initdir, default)" function
|
* "browse(save, title, initdir, default)" function
|
||||||
*/
|
*/
|
||||||
|
@@ -467,6 +467,12 @@ mch_inchar(
|
|||||||
if ((wait_time < 0 || wait_time > 100L) && channel_any_readahead())
|
if ((wait_time < 0 || wait_time > 100L) && channel_any_readahead())
|
||||||
wait_time = 10L;
|
wait_time = 10L;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef FEAT_BEVAL
|
||||||
|
if (p_beval && wait_time > 100L)
|
||||||
|
/* The 'balloonexpr' may indirectly invoke a callback while waiting
|
||||||
|
* for a character, need to check often. */
|
||||||
|
wait_time = 100L;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We want to be interrupted by the winch signal
|
* We want to be interrupted by the winch signal
|
||||||
|
@@ -1467,6 +1467,12 @@ WaitForChar(long msec)
|
|||||||
dwWaitTime = 10;
|
dwWaitTime = 10;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef FEAT_BEVAL
|
||||||
|
if (p_beval && dwWaitTime > 100)
|
||||||
|
/* The 'balloonexpr' may indirectly invoke a callback while
|
||||||
|
* waiting for a character, need to check often. */
|
||||||
|
dwWaitTime = 100;
|
||||||
|
#endif
|
||||||
#ifdef FEAT_MZSCHEME
|
#ifdef FEAT_MZSCHEME
|
||||||
if (mzthreads_allowed() && p_mzq > 0
|
if (mzthreads_allowed() && p_mzq > 0
|
||||||
&& (msec < 0 || (long)dwWaitTime > p_mzq))
|
&& (msec < 0 || (long)dwWaitTime > p_mzq))
|
||||||
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
396,
|
||||||
/**/
|
/**/
|
||||||
395,
|
395,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user