diff options
-rw-r--r-- | src/nvim/normal.c | 8 | ||||
-rw-r--r-- | src/nvim/testdir/test_normal.vim | 15 | ||||
-rw-r--r-- | src/nvim/undo.c | 13 | ||||
-rw-r--r-- | test/functional/eval/system_spec.lua | 4 | ||||
-rw-r--r-- | test/functional/ui/cmdline_highlight_spec.lua | 2 | ||||
-rw-r--r-- | test/functional/ui/messages_spec.lua | 4 |
6 files changed, 39 insertions, 7 deletions
diff --git a/src/nvim/normal.c b/src/nvim/normal.c index 2e4cdc1fe1..4cfd11ab7c 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -7465,8 +7465,12 @@ static void nv_esc(cmdarg_T *cap) && cmdwin_type == 0 && !VIsual_active && no_reason) { - MSG(_("Type :qa! and press <Enter> to abandon all changes" - " and exit Nvim")); + if (anyBufIsChanged()) { + MSG(_("Type :qa! and press <Enter> to abandon all changes" + " and exit Nvim")); + } else { + MSG(_("Type :qa and press <Enter> to exit Nvim")); + } } /* Don't reset "restart_edit" when 'insertmode' is set, it won't be diff --git a/src/nvim/testdir/test_normal.vim b/src/nvim/testdir/test_normal.vim index ef17209f74..945cd5a617 100644 --- a/src/nvim/testdir/test_normal.vim +++ b/src/nvim/testdir/test_normal.vim @@ -2552,6 +2552,21 @@ func Test_delete_until_paragraph() bwipe! endfunc +func Test_message_when_using_ctrl_c() + " Make sure no buffers are changed. + %bwipe! + + exe "normal \<C-C>" + call assert_match("Type :qa and press <Enter> to exit Nvim", Screenline(&lines)) + + new + cal setline(1, 'hi!') + exe "normal \<C-C>" + call assert_match("Type :qa! and press <Enter> to abandon all changes and exit Nvim", Screenline(&lines)) + + bwipe! +endfunc + " Test for '[m', ']m', '[M' and ']M' " Jumping to beginning and end of methods in Java-like languages func Test_java_motion() diff --git a/src/nvim/undo.c b/src/nvim/undo.c index c9b0d96866..1305e013ad 100644 --- a/src/nvim/undo.c +++ b/src/nvim/undo.c @@ -2961,10 +2961,23 @@ static char_u *u_save_line(linenr_T lnum) /// /// @return true if the buffer has changed bool bufIsChanged(buf_T *buf) + FUNC_ATTR_WARN_UNUSED_RESULT { return !bt_dontwrite(buf) && (buf->b_changed || file_ff_differs(buf, true)); } +// Return true if any buffer has changes. Also buffers that are not written. +bool anyBufIsChanged(void) + FUNC_ATTR_WARN_UNUSED_RESULT +{ + FOR_ALL_BUFFERS(buf) { + if (bufIsChanged(buf)) { + return true; + } + } + return false; +} + /// Check if the 'modified' flag is set, or 'ff' has changed (only need to /// check the first character, because it can only be "dos", "unix" or "mac"). /// "nofile" and "scratch" type buffers are considered to always be unchanged. diff --git a/test/functional/eval/system_spec.lua b/test/functional/eval/system_spec.lua index 865a890acf..13134bc6e7 100644 --- a/test/functional/eval/system_spec.lua +++ b/test/functional/eval/system_spec.lua @@ -275,7 +275,7 @@ describe('system()', function() ~ | ~ | ~ | - Type :qa! and press <E...all changes and exit Nvim | + Type :qa and press <Enter> to exit Nvim | ]]) end) end) @@ -481,7 +481,7 @@ describe('systemlist()', function() ~ | ~ | ~ | - Type :qa! and press <E...all changes and exit Nvim | + Type :qa and press <Enter> to exit Nvim | ]]) end) end) diff --git a/test/functional/ui/cmdline_highlight_spec.lua b/test/functional/ui/cmdline_highlight_spec.lua index 45808b3b1b..052414a43d 100644 --- a/test/functional/ui/cmdline_highlight_spec.lua +++ b/test/functional/ui/cmdline_highlight_spec.lua @@ -494,7 +494,7 @@ describe('Command-line coloring', function() {EOB:~ }| {EOB:~ }| {EOB:~ }| - Type :qa! and pr...nges and exit Nvim | + Type :qa and pre...nter> to exit Nvim | ]]) end) it('works fine with NUL, NL, CR', function() diff --git a/test/functional/ui/messages_spec.lua b/test/functional/ui/messages_spec.lua index 2857c2fe1e..9a1a0f66a2 100644 --- a/test/functional/ui/messages_spec.lua +++ b/test/functional/ui/messages_spec.lua @@ -631,7 +631,7 @@ describe('ui/ext_messages', function() {1:~ }| {1:~ }| ]], messages={{ - content = {{ "Type :qa! and press <Enter> to abandon all changes and exit Nvim" }}, + content = {{ "Type :qa and press <Enter> to exit Nvim" }}, kind = ""} }} @@ -678,7 +678,7 @@ describe('ui/ext_messages', function() {1:~ }| ]], messages={ {kind="echomsg", content={{"howdy"}}}, - {kind="", content={{"Type :qa! and press <Enter> to abandon all changes and exit Nvim"}}}, + {kind="", content={{"Type :qa and press <Enter> to exit Nvim"}}}, {kind="echoerr", content={{"bork", 2}}}, {kind="emsg", content={{"E117: Unknown function: nosuchfunction", 2}}} }} |