To: vim_dev@googlegroups.com Subject: Patch 8.0.0771 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.0.0771 Problem: Cursor in a terminal window not always updated in the GUI. Solution: Call gui_update_cursor(). (Yasuhiro Matsumoto, closes #1868) Files: src/terminal.c *** ../vim-8.0.0770/src/terminal.c 2017-07-24 22:26:39.761774842 +0200 --- src/terminal.c 2017-07-24 23:35:32.135424640 +0200 *************** *** 33,39 **** * while, if the terminal window is visible, the screen contents is drawn. * * TODO: ! * - do not store terminal buffer in viminfo * - Add a scrollback buffer (contains lines to scroll off the top). * Can use the buf_T lines, store attributes somewhere else? * - When the job ends: --- 33,40 ---- * while, if the terminal window is visible, the screen contents is drawn. * * TODO: ! * - include functions from #1871 ! * - do not store terminal buffer in viminfo. Or prefix term:// ? * - Add a scrollback buffer (contains lines to scroll off the top). * Can use the buf_T lines, store attributes somewhere else? * - When the job ends: *************** *** 314,319 **** --- 315,332 ---- vterm_screen_flush_damage(vterm_obtain_screen(vterm)); } + static void + update_cursor() + { + /* TODO: this should not always be needed */ + setcursor(); + out_flush(); + #ifdef FEAT_GUI + if (gui.in_use) + gui_update_cursor(FALSE, FALSE); + #endif + } + /* * Invoked when "msg" output from a job was received. Write it to the terminal * of "buffer". *************** *** 329,336 **** /* TODO: only update once in a while. */ update_screen(0); ! setcursor(); ! out_flush(); } /* --- 342,348 ---- /* TODO: only update once in a while. */ update_screen(0); ! update_cursor(); } /* *************** *** 461,468 **** { /* TODO: skip screen update when handling a sequence of keys. */ update_screen(0); ! setcursor(); ! out_flush(); ++no_mapping; ++allow_keys; got_int = FALSE; --- 473,479 ---- { /* TODO: skip screen update when handling a sequence of keys. */ update_screen(0); ! update_cursor(); ++no_mapping; ++allow_keys; got_int = FALSE; *************** *** 550,557 **** if (did_one) { redraw_statuslines(); ! setcursor(); ! out_flush(); } if (curbuf->b_term != NULL && curbuf->b_term->tl_job == job) maketitle(); --- 561,567 ---- if (did_one) { redraw_statuslines(); ! update_cursor(); } if (curbuf->b_term != NULL && curbuf->b_term->tl_job == job) maketitle(); *************** *** 616,625 **** } if (is_current) ! { ! setcursor(); ! out_flush(); ! } return 1; } --- 626,632 ---- } if (is_current) ! update_cursor(); return 1; } *** ../vim-8.0.0770/src/version.c 2017-07-24 23:05:31.164530169 +0200 --- src/version.c 2017-07-24 23:33:26.360340009 +0200 *************** *** 771,772 **** --- 771,774 ---- { /* Add new patch number below this line */ + /**/ + 771, /**/ -- hundred-and-one symptoms of being an internet addict: 242. You turn down a better-paying job because it doesn't come with a free e-mail account. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///