forked from aniani/vim
patch 8.1.1300: in a terminal 'ballooneval' does not work right away
Problem: In a terminal 'ballooneval' does not work right away. Solution: Flush output after drawing the balloon. Add the <Ignore> key code. Add a test.
This commit is contained in:
@@ -229,6 +229,9 @@ profile_zero(proftime_T *tm)
|
|||||||
static timer_T *first_timer = NULL;
|
static timer_T *first_timer = NULL;
|
||||||
static long last_timer_id = 0;
|
static long last_timer_id = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return time left until "due". Negative if past "due".
|
||||||
|
*/
|
||||||
long
|
long
|
||||||
proftime_time_left(proftime_T *due, proftime_T *now)
|
proftime_time_left(proftime_T *due, proftime_T *now)
|
||||||
{
|
{
|
||||||
@@ -445,7 +448,11 @@ check_due_timer(void)
|
|||||||
balloonEvalForTerm = TRUE;
|
balloonEvalForTerm = TRUE;
|
||||||
}
|
}
|
||||||
if (balloonEval != NULL)
|
if (balloonEval != NULL)
|
||||||
|
{
|
||||||
general_beval_cb(balloonEval, 0);
|
general_beval_cb(balloonEval, 0);
|
||||||
|
setcursor();
|
||||||
|
out_flush();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (next_due == -1 || next_due > this_due)
|
else if (next_due == -1 || next_due > this_due)
|
||||||
next_due = this_due;
|
next_due = this_due;
|
||||||
|
@@ -2496,6 +2496,7 @@ static struct key_name_entry
|
|||||||
#endif
|
#endif
|
||||||
{K_PLUG, (char_u *)"Plug"},
|
{K_PLUG, (char_u *)"Plug"},
|
||||||
{K_CURSORHOLD, (char_u *)"CursorHold"},
|
{K_CURSORHOLD, (char_u *)"CursorHold"},
|
||||||
|
{K_IGNORE, (char_u *)"Ignore"},
|
||||||
{0, NULL}
|
{0, NULL}
|
||||||
/* NOTE: When adding a long name update MAX_KEY_NAME_LEN. */
|
/* NOTE: When adding a long name update MAX_KEY_NAME_LEN. */
|
||||||
};
|
};
|
||||||
|
@@ -68,6 +68,7 @@ NEW_TESTS = \
|
|||||||
test_autoload \
|
test_autoload \
|
||||||
test_backspace_opt \
|
test_backspace_opt \
|
||||||
test_backup \
|
test_backup \
|
||||||
|
test_balloon \
|
||||||
test_behave \
|
test_behave \
|
||||||
test_blob \
|
test_blob \
|
||||||
test_blockedit \
|
test_blockedit \
|
||||||
@@ -294,6 +295,7 @@ NEW_TESTS_RES = \
|
|||||||
test_autocmd.res \
|
test_autocmd.res \
|
||||||
test_autoload.res \
|
test_autoload.res \
|
||||||
test_backspace_opt.res \
|
test_backspace_opt.res \
|
||||||
|
test_balloon.res \
|
||||||
test_blob.res \
|
test_blob.res \
|
||||||
test_blockedit.res \
|
test_blockedit.res \
|
||||||
test_breakindent.res \
|
test_breakindent.res \
|
||||||
|
10
src/testdir/dumps/Test_balloon_eval_term_01.dump
Normal file
10
src/testdir/dumps/Test_balloon_eval_term_01.dump
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
>o+0&#ffffff0|n|e| |o|n|e| |o|n|e| @38
|
||||||
|
@2|o| |t|X|o| |t|w|o| @38
|
||||||
|
|t|h|r|e| +0#0000001#ffd7ff255@16| +0#0000000#ffffff0@28
|
||||||
|
|~+0#4040ff13&| @2| +0#0000001#ffd7ff255|l|i|n|e| |2| |c|o|l|u|m|n| |6| | +0#4040ff13#ffffff0@28
|
||||||
|
|~| @2| +0#0000001#ffd7ff255@16| +0#4040ff13#ffffff0@28
|
||||||
|
|~| @48
|
||||||
|
|~| @48
|
||||||
|
|~| @48
|
||||||
|
|~| @48
|
||||||
|
| +0#0000000&@31|1|,|1| @10|A|l@1|
|
32
src/testdir/test_balloon.vim
Normal file
32
src/testdir/test_balloon.vim
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
" Tests for 'balloonevalterm'.
|
||||||
|
|
||||||
|
if !has('balloon_eval_term') || has('gui_running')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
source screendump.vim
|
||||||
|
if !CanRunVimInTerminal()
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
func Test_balloon_eval_term()
|
||||||
|
call writefile([
|
||||||
|
\ 'call setline(1, ["one one one", "two tXo two", "three three three"])',
|
||||||
|
\ 'set balloonevalterm balloonexpr=MyBalloonExpr() balloondelay=100',
|
||||||
|
\ 'func MyBalloonExpr()',
|
||||||
|
\ ' return "line " . v:beval_lnum . " column " . v:beval_col',
|
||||||
|
\ 'endfun',
|
||||||
|
\ 'redraw',
|
||||||
|
\ 'call test_setmouse(2, 6)',
|
||||||
|
\ 'call feedkeys("\<MouseMove>\<Ignore>", "xt")',
|
||||||
|
\ ], 'XTest_beval')
|
||||||
|
|
||||||
|
" Check that the balloon shows up
|
||||||
|
let buf = RunVimInTerminal('-S XTest_beval', {'rows': 10, 'cols': 50})
|
||||||
|
call term_wait(buf, 100)
|
||||||
|
call VerifyScreenDump(buf, 'Test_balloon_eval_term_01', {})
|
||||||
|
|
||||||
|
" clean up
|
||||||
|
call StopVimInTerminal(buf)
|
||||||
|
call delete('XTest_beval')
|
||||||
|
endfunc
|
@@ -767,6 +767,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 */
|
||||||
|
/**/
|
||||||
|
1300,
|
||||||
/**/
|
/**/
|
||||||
1299,
|
1299,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user