From f405c8fe85bba6dc96a68a12ab976f745fc51a38 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 9 Dec 2017 19:51:49 +0100 Subject: patch 8.0.1382: get "no write since last change" message if terminal is open 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. --- src/undo.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/undo.c') 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)); } -- cgit v1.2.1