0
0
mirror of https://github.com/vim/vim.git synced 2025-09-30 04:44:14 -04:00

patch 8.1.1049: when user tries to exit with CTRL-C message is confusing

Problem:    When user tries to exit with CTRL-C message is confusing.
Solution:   Only mention ":qa!" when there is a changed buffer. (closes #4163)
This commit is contained in:
Bram Moolenaar
2019-03-25 22:21:24 +01:00
parent b45125b374
commit a84a3dd663
5 changed files with 34 additions and 1 deletions

View File

@@ -8886,7 +8886,12 @@ nv_esc(cmdarg_T *cap)
#endif
&& !VIsual_active
&& no_reason)
{
if (anyBufIsChanged())
msg(_("Type :qa! and press <Enter> to abandon all changes and exit Vim"));
else
msg(_("Type :qa and press <Enter> to exit Vim"));
}
/* Don't reset "restart_edit" when 'insertmode' is set, it won't be
* set again below when halfway a mapping. */

View File

@@ -25,6 +25,7 @@ void u_clearline(void);
void u_undoline(void);
void u_blockfree(buf_T *buf);
int bufIsChanged(buf_T *buf);
int anyBufIsChanged(void);
int bufIsChangedNotTerm(buf_T *buf);
int curbufIsChanged(void);
void u_eval_tree(u_header_T *first_uhp, list_T *list);

View File

@@ -1,5 +1,7 @@
" Test for various Normal mode commands
source shared.vim
func Setup_NewWindow()
10new
call setline(1, range(1,100))
@@ -2542,3 +2544,13 @@ func Test_nv_hat_count()
%bwipeout!
endfunc
func Test_message_when_using_ctrl_c()
exe "normal \<C-C>"
call assert_match("Type :qa and press <Enter> to exit Vim", 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 Vim", Screenline(&lines))
bwipe!
endfunc

View File

@@ -3530,6 +3530,19 @@ bufIsChanged(buf_T *buf)
return bufIsChangedNotTerm(buf);
}
/*
* Return TRUE if any buffer has changes. Also buffers that are not written.
*/
int
anyBufIsChanged(void)
{
buf_T *buf;
FOR_ALL_BUFFERS(buf)
if (bufIsChanged(buf))
return TRUE;
}
/*
* Like bufIsChanged() but ignoring a terminal window.
*/

View File

@@ -775,6 +775,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1049,
/**/
1048,
/**/