aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/normal.c8
-rw-r--r--src/nvim/testdir/test_normal.vim15
-rw-r--r--src/nvim/undo.c13
-rw-r--r--test/functional/eval/system_spec.lua4
-rw-r--r--test/functional/ui/cmdline_highlight_spec.lua2
-rw-r--r--test/functional/ui/messages_spec.lua4
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}}}
}}