]> granicus.if.org Git - vim/commitdiff
patch 8.0.1838: cursor in wrong pos when switching to Terminal-Normal mode v8.0.1838
authorBram Moolenaar <Bram@vim.org>
Sun, 13 May 2018 17:06:12 +0000 (19:06 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 13 May 2018 17:06:12 +0000 (19:06 +0200)
Problem:    Cursor in wrong position when switching to Terminal-Normal mode.
            (Dominique Pelle)
Solution:   Move to the end of the line if coladvance() fails.  Do not take a
            snapshot a second time.

src/terminal.c
src/version.c

index e670161fbc7993e7c151c7353dd44c50bd6f5dd5..282f98102658f3ada5d2f0047e96080bb43d71c3 100644 (file)
@@ -1709,7 +1709,8 @@ term_enter_normal_mode(void)
     curwin->w_cursor.lnum = term->tl_scrollback_scrolled
                                             + term->tl_cursor_pos.row + 1;
     check_cursor();
-    coladvance(term->tl_cursor_pos.col);
+    if (coladvance(term->tl_cursor_pos.col) == FAIL)
+       coladvance(MAXCOL);
 
     /* Display the same lines as in the terminal. */
     curwin->w_topline = term->tl_scrollback_scrolled + 1;
@@ -2264,9 +2265,8 @@ theend:
 
     /* Move a snapshot of the screen contents to the buffer, so that completion
      * works in other buffers. */
-    if (curbuf->b_term != NULL)
-       may_move_terminal_to_buffer(
-                              curbuf->b_term, curbuf->b_term->tl_normal_mode);
+    if (curbuf->b_term != NULL && !curbuf->b_term->tl_normal_mode)
+       may_move_terminal_to_buffer(curbuf->b_term, FALSE);
 
     return ret;
 }
index 80121576eaafb8560af6978aef8afd4e178fa178..04d7814bc504b66b8ebe5370a468727f499f1cd4 100644 (file)
@@ -761,6 +761,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1838,
 /**/
     1837,
 /**/