aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-12-01 19:02:38 -0500
committerGitHub <noreply@github.com>2020-12-01 19:02:38 -0500
commitd80f262f894bfc1d8a8ba79fdc5d1c14f738a140 (patch)
tree28bae2d0a935a9e0fdd13f19c1dbaaec294fc73e
parent72c22862dc2199462aef0d450a49d29a9d0680b9 (diff)
parent518fe0e8a2de00ce6b7f62183dfa89b410378a89 (diff)
downloadrneovim-d80f262f894bfc1d8a8ba79fdc5d1c14f738a140.tar.gz
rneovim-d80f262f894bfc1d8a8ba79fdc5d1c14f738a140.tar.bz2
rneovim-d80f262f894bfc1d8a8ba79fdc5d1c14f738a140.zip
Merge pull request #13428 from janlazo/nvim-8.0.1525
vim-patch:8.0.{858,953,1525}
-rw-r--r--src/nvim/buffer.c17
-rw-r--r--src/nvim/ex_cmds.c7
-rw-r--r--src/nvim/ex_cmds2.c8
-rw-r--r--test/functional/eval/timer_spec.lua4
-rw-r--r--test/functional/terminal/buffer_spec.lua5
-rw-r--r--test/functional/terminal/scrollback_spec.lua1
-rw-r--r--test/functional/ui/wildmode_spec.lua1
7 files changed, 34 insertions, 9 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c
index ffa44c33cd..839d61cd2e 100644
--- a/src/nvim/buffer.c
+++ b/src/nvim/buffer.c
@@ -1637,12 +1637,23 @@ void do_autochdir(void)
void no_write_message(void)
{
- EMSG(_("E37: No write since last change (add ! to override)"));
+ if (curbuf->terminal
+ && channel_job_running((uint64_t)curbuf->b_p_channel)) {
+ EMSG(_("E948: Job still running (add ! to end the job)"));
+ } else {
+ EMSG(_("E37: No write since last change (add ! to override)"));
+ }
}
-void no_write_message_nobang(void)
+void no_write_message_nobang(const buf_T *const buf)
+ FUNC_ATTR_NONNULL_ALL
{
- EMSG(_("E37: No write since last change"));
+ if (buf->terminal
+ && channel_job_running((uint64_t)buf->b_p_channel)) {
+ EMSG(_("E948: Job still running"));
+ } else {
+ EMSG(_("E37: No write since last change"));
+ }
}
//
diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c
index d2ccbe3e6d..b0a51eaefd 100644
--- a/src/nvim/ex_cmds.c
+++ b/src/nvim/ex_cmds.c
@@ -1965,7 +1965,12 @@ void do_wqall(exarg_T *eap)
}
FOR_ALL_BUFFERS(buf) {
- if (!bufIsChanged(buf) || bt_dontwrite(buf)) {
+ if (exiting
+ && buf->terminal
+ && channel_job_running((uint64_t)buf->b_p_channel)) {
+ no_write_message_nobang(buf);
+ error++;
+ } else if (!bufIsChanged(buf) || bt_dontwrite(buf)) {
continue;
}
/*
diff --git a/src/nvim/ex_cmds2.c b/src/nvim/ex_cmds2.c
index 6b03117ff3..3b9c44c3cd 100644
--- a/src/nvim/ex_cmds2.c
+++ b/src/nvim/ex_cmds2.c
@@ -1297,7 +1297,7 @@ bool check_changed(buf_T *buf, int flags)
if (flags & CCGD_EXCMD) {
no_write_message();
} else {
- no_write_message_nobang();
+ no_write_message_nobang(curbuf);
}
return true;
}
@@ -1503,8 +1503,10 @@ bool check_changed_any(bool hidden, bool unload)
msg_col = 0;
msg_didout = false;
}
- if (EMSG2(_("E162: No write since last change for buffer \"%s\""),
- buf_spname(buf) != NULL ? buf_spname(buf) : buf->b_fname)) {
+ if ((buf->terminal && channel_job_running((uint64_t)buf->b_p_channel))
+ ? EMSG2(_("E947: Job still running in buffer \"%s\""), buf->b_fname)
+ : EMSG2(_("E162: No write since last change for buffer \"%s\""),
+ buf_spname(buf) != NULL ? buf_spname(buf) : buf->b_fname)) {
save = no_wait_return;
no_wait_return = false;
wait_return(false);
diff --git a/test/functional/eval/timer_spec.lua b/test/functional/eval/timer_spec.lua
index ef7df69fdb..9ee0735e40 100644
--- a/test/functional/eval/timer_spec.lua
+++ b/test/functional/eval/timer_spec.lua
@@ -215,8 +215,8 @@ describe('timers', function()
endfunc
]])
command("call timer_start(5, 'MyHandler', {'repeat': 1})")
- run(nil, nil, nil, load_adjust(10))
- retry(nil, load_adjust(100), function()
+ run(nil, nil, nil, load_adjust(20))
+ retry(nil, load_adjust(150), function()
eq(1, eval("g:val"))
end)
end)
diff --git a/test/functional/terminal/buffer_spec.lua b/test/functional/terminal/buffer_spec.lua
index 8e171d31aa..209537831f 100644
--- a/test/functional/terminal/buffer_spec.lua
+++ b/test/functional/terminal/buffer_spec.lua
@@ -6,6 +6,7 @@ local eval, feed_command, source = helpers.eval, helpers.feed_command, helpers.s
local eq, neq = helpers.eq, helpers.neq
local write_file = helpers.write_file
local command= helpers.command
+local exc_exec = helpers.exc_exec
describe(':terminal buffer', function()
local screen
@@ -253,6 +254,10 @@ describe(':terminal buffer', function()
]])
command('bdelete!')
end)
+
+ it('handles wqall', function()
+ eq('Vim(wqall):E948: Job still running', exc_exec('wqall'))
+ end)
end)
describe('No heap-buffer-overflow when using', function()
diff --git a/test/functional/terminal/scrollback_spec.lua b/test/functional/terminal/scrollback_spec.lua
index 77fdba7fc4..b932c58430 100644
--- a/test/functional/terminal/scrollback_spec.lua
+++ b/test/functional/terminal/scrollback_spec.lua
@@ -410,6 +410,7 @@ describe("'scrollback' option", function()
command([[let $PROMPT='$$']])
screen = thelpers.screen_setup(nil, "['cmd.exe']", 30)
else
+ command('let $PS1 = "$"')
screen = thelpers.screen_setup(nil, "['sh']", 30)
end
diff --git a/test/functional/ui/wildmode_spec.lua b/test/functional/ui/wildmode_spec.lua
index 85c3f8c2de..65c6fabfa8 100644
--- a/test/functional/ui/wildmode_spec.lua
+++ b/test/functional/ui/wildmode_spec.lua
@@ -161,6 +161,7 @@ describe("'wildmenu'", function()
if not iswin() then
command('set shell=sh') -- Need a predictable "$" prompt.
+ command('let $PS1 = "$"')
end
command('set laststatus=0')
command('vsplit')