diff options
Diffstat (limited to 'src/nvim')
-rw-r--r-- | src/nvim/edit.c | 3 | ||||
-rw-r--r-- | src/nvim/eval.c | 8 | ||||
-rw-r--r-- | src/nvim/testdir/test_functions.vim | 9 |
3 files changed, 18 insertions, 2 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 52efd72797..1d795621e5 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -674,7 +674,8 @@ static int insert_execute(VimState *state, int key) // there is nothing to add, CTRL-L works like CTRL-P then. if (s->c == Ctrl_L && (!CTRL_X_MODE_LINE_OR_EVAL(ctrl_x_mode) - || (compl_shown_match->cp_str != NULL + || (compl_shown_match != NULL + && compl_shown_match->cp_str != NULL && (int)STRLEN(compl_shown_match->cp_str) > curwin->w_cursor.col - compl_col))) { ins_compl_addfrommatch(); 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' |