# HG changeset patch # User Bram Moolenaar # Date 1557345605 -7200 # Node ID 6f52e82d9d4e08f0142829fab83fe6549146605f # Parent 2181d6152fd1c59e2ef31fef3d273c09dc5df362 patch 8.1.1300: in a terminal 'ballooneval' does not work right away commit https://github.com/vim/vim/commit/2f10658b06bbdd8f25c4ff152266c808234cee0a Author: Bram Moolenaar Date: Wed May 8 21:59:25 2019 +0200 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 key code. Add a test. diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c --- a/src/ex_cmds2.c +++ b/src/ex_cmds2.c @@ -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; diff --git a/src/misc2.c b/src/misc2.c --- a/src/misc2.c +++ b/src/misc2.c @@ -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. */ }; diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -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 \ diff --git a/src/testdir/dumps/Test_balloon_eval_term_01.dump b/src/testdir/dumps/Test_balloon_eval_term_01.dump new file mode 100644 --- /dev/null +++ b/src/testdir/dumps/Test_balloon_eval_term_01.dump @@ -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| diff --git a/src/testdir/test_balloon.vim b/src/testdir/test_balloon.vim new file mode 100644 --- /dev/null +++ b/src/testdir/test_balloon.vim @@ -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("\\", "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 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -768,6 +768,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1300, +/**/ 1299, /**/ 1298,