diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/ex_docmd.c | 9 | ||||
-rw-r--r-- | src/nvim/option.c | 8 | ||||
-rw-r--r-- | src/nvim/screen.c | 4 | ||||
-rw-r--r-- | src/nvim/testdir/test_quickfix.vim | 27 |
4 files changed, 40 insertions, 8 deletions
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c index d65387f83b..0ffe67a4db 100644 --- a/src/nvim/ex_docmd.c +++ b/src/nvim/ex_docmd.c @@ -6317,17 +6317,14 @@ static void ex_quit(exarg_T *eap) } } -/* - * ":cquit". - */ +/// ":cquit". static void ex_cquit(exarg_T *eap) { + // this does not always pass on the exit code to the Manx compiler. why? getout(eap->addr_count > 0 ? (int)eap->line2 : EXIT_FAILURE); } -/* - * ":qall": try to quit all windows - */ +/// ":qall": try to quit all windows static void ex_quit_all(exarg_T *eap) { if (cmdwin_type != 0) { diff --git a/src/nvim/option.c b/src/nvim/option.c index 77a13b16b1..0034117ddc 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -342,6 +342,10 @@ static char_u SHM_ALL[] = { /// /// Called only once from main(), just after creating the first buffer. /// If "clean_arg" is true, Nvim was started with --clean. +/// +/// NOTE: ELOG() etc calls are not allowed here, as log location depends on +/// env var expansion which depends on expression evaluation and other +/// editor state initialized here. Do logging in set_init_2 or later. void set_init_1(bool clean_arg) { int opt_idx; @@ -494,7 +498,6 @@ void set_init_1(bool clean_arg) // this function. char *rtp = runtimepath_default(clean_arg); if (rtp) { - ILOG("startup runtimepart/packpath value: %s", rtp); set_string_default("runtimepath", rtp, true); // Make a copy of 'rtp' for 'packpath' set_string_default("packpath", rtp, false); @@ -751,6 +754,9 @@ void free_all_options(void) /// Initialize the options, part two: After getting Rows and Columns. void set_init_2(bool headless) { + // set in set_init_1 but logging is not allowed there + ILOG("startup runtimepath/packpath value: %s", p_rtp); + int idx; // 'scroll' defaults to half the window height. The stored default is zero, diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 4373d6d5a8..2eeeebb88d 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -2550,7 +2550,9 @@ static int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, */ cur = wp->w_match_head; shl_flag = false; - while ((cur != NULL || !shl_flag) && !number_only) { + while ((cur != NULL || !shl_flag) && !number_only + && foldinfo.fi_lines == 0 + ) { if (!shl_flag) { shl = &search_hl; shl_flag = true; diff --git a/src/nvim/testdir/test_quickfix.vim b/src/nvim/testdir/test_quickfix.vim index 9c5f0777c6..5c84e45a79 100644 --- a/src/nvim/testdir/test_quickfix.vim +++ b/src/nvim/testdir/test_quickfix.vim @@ -3,6 +3,8 @@ source check.vim CheckFeature quickfix +source screendump.vim + set encoding=utf-8 func s:setup_commands(cchar) @@ -4410,6 +4412,31 @@ func Test_search_in_dirstack() call delete('Xtestdir', 'rf') endfunc +" Test for :cquit +func Test_cquit() + " Exit Vim with a non-zero value + if RunVim([], ["cquit 7"], '') + call assert_equal(7, v:shell_error) + endif + + if RunVim([], ["50cquit"], '') + call assert_equal(50, v:shell_error) + endif + + " Exit Vim with default value + if RunVim([], ["cquit"], '') + call assert_equal(1, v:shell_error) + endif + + " Exit Vim with zero value + if RunVim([], ["cquit 0"], '') + call assert_equal(0, v:shell_error) + endif + + " Exit Vim with negative value + call assert_fails('-3cquit', 'E16:') +endfunc + " Test for adding an invalid entry with the quickfix window open and making " sure that the window contents are not changed func Test_add_invalid_entry_with_qf_window() |