summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-08-17 16:55:13 +0200
committerBram Moolenaar <Bram@vim.org>2017-08-17 16:55:13 +0200
commitf5be7cd01642fafc4b7d68894eb60cca60c7a405 (patch)
treebcbb7f2839092ec9b2d68b4d30b2678efff71d99
parenta83e3962ac0e4bbfef15a072ad9a7390fc255409 (diff)
patch 8.0.0953: get "no write since last change" error in terminal windowv8.0.0953
Problem: Get "no write since last change" error in terminal window. Solution: Use another message when closing a terminal window. Make ":quit!" also end the job.
-rw-r--r--src/buffer.c28
-rw-r--r--src/ex_cmds.c2
-rw-r--r--src/ex_cmds2.c4
-rw-r--r--src/ex_docmd.c2
-rw-r--r--src/globals.h2
-rw-r--r--src/proto/buffer.pro2
-rw-r--r--src/quickfix.c2
-rw-r--r--src/terminal.c2
-rw-r--r--src/version.c2
9 files changed, 35 insertions, 11 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 3934941565..f64255d785 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -473,8 +473,8 @@ close_buffer(
{
if (term_job_running(buf->b_term))
{
- if (wipe_buf)
- /* Wiping out a terminal buffer kills the job. */
+ if (wipe_buf || unload_buf)
+ /* Wiping out or unloading a terminal buffer kills the job. */
free_terminal(buf);
else
{
@@ -1648,7 +1648,7 @@ do_buffer(
if (bufIsChanged(curbuf))
#endif
{
- EMSG(_(e_nowrtmsg));
+ no_write_message();
return FAIL;
}
}
@@ -1897,6 +1897,28 @@ do_autochdir(void)
}
#endif
+ void
+no_write_message(void)
+{
+#ifdef FEAT_TERMINAL
+ if (term_job_running(curbuf->b_term))
+ EMSG(_("E948: Job still running (add ! to end the job)"));
+ else
+#endif
+ EMSG(_("E37: No write since last change (add ! to override)"));
+}
+
+ void
+no_write_message_nobang(void)
+{
+#ifdef FEAT_TERMINAL
+ if (term_job_running(curbuf->b_term))
+ EMSG(_("E948: Job still running"));
+ else
+#endif
+ EMSG(_("E37: No write since last change"));
+}
+
/*
* functions for dealing with the buffer list
*/
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 61c85a917f..8b21b81f2a 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -3572,7 +3572,7 @@ getfile(
{
if (other)
--no_wait_return;
- EMSG(_(e_nowrtmsg));
+ no_write_message();
retval = GETFILE_NOT_WRITTEN; /* file has been changed */
goto theend;
}
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index 8a11fbbe9f..8ca11f0663 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -1934,9 +1934,9 @@ check_changed(buf_T *buf, int flags)
}
#endif
if (flags & CCGD_EXCMD)
- EMSG(_(e_nowrtmsg));
+ no_write_message();
else
- EMSG(_(e_nowrtmsg_nobang));
+ no_write_message_nobang();
return TRUE;
}
return FALSE;
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index fa5a888d4e..70f3e573d9 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -7468,7 +7468,7 @@ ex_win_close(
else
# endif
{
- EMSG(_(e_nowrtmsg));
+ no_write_message();
return;
}
}
diff --git a/src/globals.h b/src/globals.h
index 7f2875b05e..0b887d35bb 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1516,8 +1516,6 @@ EXTERN char_u e_notcreate[] INIT(= N_("E482: Can't create file %s"));
EXTERN char_u e_notmp[] INIT(= N_("E483: Can't get temp file name"));
EXTERN char_u e_notopen[] INIT(= N_("E484: Can't open file %s"));
EXTERN char_u e_notread[] INIT(= N_("E485: Can't read file %s"));
-EXTERN char_u e_nowrtmsg[] INIT(= N_("E37: No write since last change (add ! to override)"));
-EXTERN char_u e_nowrtmsg_nobang[] INIT(= N_("E37: No write since last change"));
EXTERN char_u e_null[] INIT(= N_("E38: Null argument"));
#if defined(FEAT_DIGRAPHS) || defined(FEAT_TIMERS)
EXTERN char_u e_number_exp[] INIT(= N_("E39: Number expected"));
diff --git a/src/proto/buffer.pro b/src/proto/buffer.pro
index d70981dac0..485eb027de 100644
--- a/src/proto/buffer.pro
+++ b/src/proto/buffer.pro
@@ -13,6 +13,8 @@ int do_buffer(int action, int start, int dir, int count, int forceit);
void set_curbuf(buf_T *buf, int action);
void enter_buffer(buf_T *buf);
void do_autochdir(void);
+void no_write_message(void);
+void no_write_message_nobang(void);
buf_T *buflist_new(char_u *ffname, char_u *sfname, linenr_T lnum, int flags);
void free_buf_options(buf_T *buf, int free_p_ff);
int buflist_getfile(int n, linenr_T lnum, int options, int forceit);
diff --git a/src/quickfix.c b/src/quickfix.c
index 8c55a16c7f..42077c2a3c 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -2327,7 +2327,7 @@ win_found:
* set b_p_ro flag). */
if (!can_abandon(curbuf, forceit))
{
- EMSG(_(e_nowrtmsg));
+ no_write_message();
ok = FALSE;
}
else
diff --git a/src/terminal.c b/src/terminal.c
index d482d19525..304a7ba43b 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -267,7 +267,7 @@ term_start(typval_T *argvar, jobopt_T *opt, int forceit)
/* Create a new buffer in the current window. */
if (!can_abandon(curbuf, forceit))
{
- EMSG(_(e_nowrtmsg));
+ no_write_message();
vim_free(term);
return;
}
diff --git a/src/version.c b/src/version.c
index 545204cf16..352e0a9fef 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 953,
+/**/
952,
/**/
951,