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:
@@ -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. */
|
||||
|
@@ -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);
|
||||
|
@@ -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
|
||||
|
13
src/undo.c
13
src/undo.c
@@ -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.
|
||||
*/
|
||||
|
@@ -775,6 +775,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1049,
|
||||
/**/
|
||||
1048,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user