diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-12-09 19:51:49 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-12-09 19:51:49 +0100 |
commit | f405c8fe85bba6dc96a68a12ab976f745fc51a38 (patch) | |
tree | 88916960c439cc73774c8c9d0d030ea33b510bbd /src/undo.c | |
parent | 620ca2da372dc9c892022faff83d363c67cc5c45 (diff) | |
download | vim-git-f405c8fe85bba6dc96a68a12ab976f745fc51a38.tar.gz |
patch 8.0.1382: get "no write since last change" message if terminal is openv8.0.1382
Problem: Get "no write since last change" message if a terminal is open.
(Fritz mehner)
Solution: Don't consider a buffer changed if it's a terminal window.
Diffstat (limited to 'src/undo.c')
-rw-r--r-- | src/undo.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/undo.c b/src/undo.c index 435decc3a..69d4fc603 100644 --- a/src/undo.c +++ b/src/undo.c @@ -3523,6 +3523,8 @@ u_save_line(linenr_T lnum) * Check if the 'modified' flag is set, or 'ff' has changed (only need to * check the first character, because it can only be "dos", "unix" or "mac"). * "nofile" and "scratch" type buffers are considered to always be unchanged. + * Also considers a buffer changed when a terminal window contains a running + * job. */ int bufIsChanged(buf_T *buf) @@ -3531,6 +3533,15 @@ bufIsChanged(buf_T *buf) if (term_job_running(buf->b_term)) return TRUE; #endif + return bufIsChangedNotTerm(buf); +} + +/* + * Like bufIsChanged() but ignoring a terminal window. + */ + int +bufIsChangedNotTerm(buf_T *buf) +{ return !bt_dontwrite(buf) && (buf->b_changed || file_ff_differs(buf, TRUE)); } |