diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-04-17 10:42:06 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-17 10:42:06 +0800 |
commit | ae325e627484fa0402a3fd8c75508c8c0f82a9c3 (patch) | |
tree | a1588250d2b570f9a4316c5dde3e4af0a8757865 | |
parent | 813ecdac795405565aab5cb61cb83b9ca1581b60 (diff) | |
parent | f823dce100abcc06a12258d92b792fe01d1fe398 (diff) | |
download | rneovim-ae325e627484fa0402a3fd8c75508c8c0f82a9c3.tar.gz rneovim-ae325e627484fa0402a3fd8c75508c8c0f82a9c3.tar.bz2 rneovim-ae325e627484fa0402a3fd8c75508c8c0f82a9c3.zip |
Merge pull request #18139 from zeertzjq/vim-8.2.0791
vim-patch:8.2.0791
-rw-r--r-- | src/nvim/ex_docmd.c | 9 | ||||
-rw-r--r-- | test/functional/ex_cmds/quickfix_commands_spec.lua | 13 |
2 files changed, 20 insertions, 2 deletions
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c index cbfe6e3789..fc0bb48803 100644 --- a/src/nvim/ex_docmd.c +++ b/src/nvim/ex_docmd.c @@ -2373,8 +2373,13 @@ int parse_cmd_address(exarg_T *eap, char **errormsg, bool silent) switch (eap->addr_type) { case ADDR_LINES: case ADDR_OTHER: - // default is current line number - eap->line2 = curwin->w_cursor.lnum; + // Default is the cursor line number. Avoid using an invalid + // line number though. + if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count) { + eap->line2 = curbuf->b_ml.ml_line_count; + } else { + eap->line2 = curwin->w_cursor.lnum; + } break; case ADDR_WINDOWS: eap->line2 = CURRENT_WIN_NR; diff --git a/test/functional/ex_cmds/quickfix_commands_spec.lua b/test/functional/ex_cmds/quickfix_commands_spec.lua index c956a2df2d..94b7fa1a84 100644 --- a/test/functional/ex_cmds/quickfix_commands_spec.lua +++ b/test/functional/ex_cmds/quickfix_commands_spec.lua @@ -109,4 +109,17 @@ describe('quickfix', function() ]]) eq({0, 6, 1, 0, 1}, funcs.getcurpos()) end) + + it('BufAdd does not cause E16 when reusing quickfix buffer #18135', function() + local file = file_base .. '_reuse_qfbuf_BufAdd' + write_file(file, ('\n'):rep(100) .. 'foo') + source([[ + set grepprg=internal + autocmd BufAdd * call and(0, 0) + autocmd QuickFixCmdPost grep ++nested cclose | cwindow + ]]) + command('grep foo ' .. file) + command('grep foo ' .. file) + os.remove(file) + end) end) |