summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-08-27 21:56:06 +0200
committerBram Moolenaar <Bram@vim.org>2019-08-27 21:56:06 +0200
commitd20070274c47668560e02db184e1f8e456c3c326 (patch)
treeb63afa5a15e57fe459ba5da10249d195255f6d00
parentea7a08a53ea0e8b4fe1592d9ae4d8f581fef46f8 (diff)
patch 8.1.1932: ml_get errors after using append()v8.1.1932
Problem: Ml_get errors after using append(). (Alex Genco) Solution: Do not update the cursor twice. (closes #1737)
-rw-r--r--src/evalfunc.c8
-rw-r--r--src/testdir/test_functions.vim9
-rw-r--r--src/version.c2
3 files changed, 18 insertions, 1 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 498e87f0d8..882bf09256 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -1440,8 +1440,14 @@ set_buffer_lines(
tabpage_T *tp;
appended_lines_mark(append_lnum, added);
+
+ // Only adjust the cursor for buffers other than the current, unless it
+ // is the current window. For curbuf and other windows it has been
+ // done in mark_adjust_internal().
FOR_ALL_TAB_WINDOWS(tp, wp)
- if (wp->w_buffer == buf && wp->w_cursor.lnum > append_lnum)
+ if (wp->w_buffer == buf
+ && (wp->w_buffer != curbuf || wp == curwin)
+ && wp->w_cursor.lnum > append_lnum)
wp->w_cursor.lnum += added;
check_cursor_col();
update_topline();
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index 027700be75..1352eaa5df 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -705,6 +705,15 @@ func Test_mode()
set complete&
endfunc
+func Test_append()
+ enew!
+ split
+ call append(0, ["foo"])
+ split
+ only
+ undo
+endfunc
+
func Test_getbufvar()
let bnr = bufnr('%')
let b:var_num = '1234'
diff --git a/src/version.c b/src/version.c
index 9c8ff7099d..412ae926f1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1932,
+/**/
1931,
/**/
1930,