mirror of
https://github.com/vim/vim
synced 2025-07-16 01:01:58 +00:00
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 long last_timer_id = 0;
|
||||
|
||||
/*
|
||||
* Return time left until "due". Negative if past "due".
|
||||
*/
|
||||
long
|
||||
proftime_time_left(proftime_T *due, proftime_T *now)
|
||||
{
|
||||
@ -445,7 +448,11 @@ check_due_timer(void)
|
||||
balloonEvalForTerm = TRUE;
|
||||
}
|
||||
if (balloonEval != NULL)
|
||||
{
|
||||
general_beval_cb(balloonEval, 0);
|
||||
setcursor();
|
||||
out_flush();
|
||||
}
|
||||
}
|
||||
else if (next_due == -1 || next_due > this_due)
|
||||
next_due = this_due;
|
||||
|
@ -2496,6 +2496,7 @@ static struct key_name_entry
|
||||
#endif
|
||||
{K_PLUG, (char_u *)"Plug"},
|
||||
{K_CURSORHOLD, (char_u *)"CursorHold"},
|
||||
{K_IGNORE, (char_u *)"Ignore"},
|
||||
{0, NULL}
|
||||
/* NOTE: When adding a long name update MAX_KEY_NAME_LEN. */
|
||||
};
|
||||
|
@ -68,6 +68,7 @@ NEW_TESTS = \
|
||||
test_autoload \
|
||||
test_backspace_opt \
|
||||
test_backup \
|
||||
test_balloon \
|
||||
test_behave \
|
||||
test_blob \
|
||||
test_blockedit \
|
||||
@ -294,6 +295,7 @@ NEW_TESTS_RES = \
|
||||
test_autocmd.res \
|
||||
test_autoload.res \
|
||||
test_backspace_opt.res \
|
||||
test_balloon.res \
|
||||
test_blob.res \
|
||||
test_blockedit.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[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1300,
|
||||
/**/
|
||||
1299,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user