aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Hinz <mh.codebro@gmail.com>2019-08-27 23:50:55 +0200
committerJustin M. Keyes <justinkz@gmail.com>2019-08-27 23:50:55 +0200
commit09cbd6769b737e9de88e9885f19c2bd0f5fa5795 (patch)
tree0c7c7df9bb8ecc81a98fe29b49eaba1ab72cfee2
parent17f768ee9e8f572eece1ebda874e1b90cc0b9422 (diff)
downloadrneovim-09cbd6769b737e9de88e9885f19c2bd0f5fa5795.tar.gz
rneovim-09cbd6769b737e9de88e9885f19c2bd0f5fa5795.tar.bz2
rneovim-09cbd6769b737e9de88e9885f19c2bd0f5fa5795.zip
vim-patch:8.1.1932: ml_get errors after append() #10866
Problem: Ml_get errors after using append(). (Alex Genco) Solution: Do not update the cursor twice. https://github.com/vim/vim/commit/d20070274c47668560e02db184e1f8e456c3c326 fix #10847
-rw-r--r--src/nvim/eval.c8
-rw-r--r--src/nvim/testdir/test_functions.vim9
2 files changed, 16 insertions, 1 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 879600b9b1..d883b53ed2 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -15217,8 +15217,14 @@ static void set_buffer_lines(buf_T *buf, linenr_T lnum_arg, bool append,
if (added > 0) {
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;
}
}
diff --git a/src/nvim/testdir/test_functions.vim b/src/nvim/testdir/test_functions.vim
index fe3b8bef6e..6c3d944ad5 100644
--- a/src/nvim/testdir/test_functions.vim
+++ b/src/nvim/testdir/test_functions.vim
@@ -592,6 +592,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'