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
|
#endif
|
||||||
&& !VIsual_active
|
&& !VIsual_active
|
||||||
&& no_reason)
|
&& no_reason)
|
||||||
|
{
|
||||||
|
if (anyBufIsChanged())
|
||||||
msg(_("Type :qa! and press <Enter> to abandon all changes and exit Vim"));
|
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
|
/* Don't reset "restart_edit" when 'insertmode' is set, it won't be
|
||||||
* set again below when halfway a mapping. */
|
* set again below when halfway a mapping. */
|
||||||
|
@@ -25,6 +25,7 @@ void u_clearline(void);
|
|||||||
void u_undoline(void);
|
void u_undoline(void);
|
||||||
void u_blockfree(buf_T *buf);
|
void u_blockfree(buf_T *buf);
|
||||||
int bufIsChanged(buf_T *buf);
|
int bufIsChanged(buf_T *buf);
|
||||||
|
int anyBufIsChanged(void);
|
||||||
int bufIsChangedNotTerm(buf_T *buf);
|
int bufIsChangedNotTerm(buf_T *buf);
|
||||||
int curbufIsChanged(void);
|
int curbufIsChanged(void);
|
||||||
void u_eval_tree(u_header_T *first_uhp, list_T *list);
|
void u_eval_tree(u_header_T *first_uhp, list_T *list);
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
" Test for various Normal mode commands
|
" Test for various Normal mode commands
|
||||||
|
|
||||||
|
source shared.vim
|
||||||
|
|
||||||
func Setup_NewWindow()
|
func Setup_NewWindow()
|
||||||
10new
|
10new
|
||||||
call setline(1, range(1,100))
|
call setline(1, range(1,100))
|
||||||
@@ -2542,3 +2544,13 @@ func Test_nv_hat_count()
|
|||||||
|
|
||||||
%bwipeout!
|
%bwipeout!
|
||||||
endfunc
|
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 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.
|
* Like bufIsChanged() but ignoring a terminal window.
|
||||||
*/
|
*/
|
||||||
|
@@ -775,6 +775,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1049,
|
||||||
/**/
|
/**/
|
||||||
1048,
|
1048,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user