summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-08-29 22:44:59 +0200
committerBram Moolenaar <Bram@vim.org>2017-08-29 22:44:59 +0200
commite561a7e2fa511d643c9692d26f4cf65378fd1983 (patch)
treecf6dc86878bcd2fa7a9d8baf467e66e3427f390c
parent48340b62e812dc9280f621a2eb6db76d43555c66 (diff)
downloadvim-git-e561a7e2fa511d643c9692d26f4cf65378fd1983.tar.gz
patch 8.0.1013: terminal window behaves different from a buffer with changesv8.0.1013
Problem: A terminal window with a running job behaves different from a window containing a changed buffer. Solution: Do not set 'bufhidden' to "hide". Fix that a buffer where a terminal used to run is listed as "[Scratch]".
-rw-r--r--runtime/doc/terminal.txt18
-rw-r--r--src/buffer.c4
-rw-r--r--src/terminal.c7
-rw-r--r--src/version.c2
4 files changed, 16 insertions, 15 deletions
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index fd0a0ace4..9e903d26a 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -1,4 +1,4 @@
-*terminal.txt* For Vim version 8.0. Last change: 2017 Aug 26
+*terminal.txt* For Vim version 8.0. Last change: 2017 Aug 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -140,11 +140,17 @@ Syntax ~
When the buffer associated with the terminal is unloaded or wiped out the job
is killed, similar to calling `job_stop(job, "kill")`
-By default the 'bufhidden' option of the buffer will be set to "hide".
-So long as the job is running: If the window is closed the buffer becomes
-hidden. The command will not be stopped. The `:buffer` command can be used
-to turn the current window into a terminal window. If there are unsaved
-changes this fails, use ! to force, as usual.
+So long as the job is running the window behaves like it contains a modified
+buffer. Trying to close the window with `CTRL-W :close` or `CTRL-W :hide`
+fails, unless "!" is added, in which case the job is ended. The text in the
+window is lost. The buffer still exists, but getting it in a window with
+`:buffer` will show an
+empty buffer.
+
+You can use `CTRL-W :hide` to close the terminal window and make the buffer
+hidden, the job keeps running. The `:buffer` command can be used to turn the
+current window into a terminal window. If there are unsaved changes this
+fails, use ! to force, as usual.
To have a background job run without a window, and open the window when it's
done, use options like this: >
diff --git a/src/buffer.c b/src/buffer.c
index f64255d78..e95abfa5a 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5825,8 +5825,8 @@ buf_spname(buf_T *buf)
if (buf->b_term != NULL)
return term_get_status_text(buf->b_term);
#endif
- if (buf->b_sfname != NULL)
- return buf->b_sfname;
+ if (buf->b_fname != NULL)
+ return buf->b_fname;
return (char_u *)_("[Scratch]");
}
diff --git a/src/terminal.c b/src/terminal.c
index 288ad28eb..b2a3e7f3d 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -44,10 +44,7 @@
* - add test for giving error for invalid 'termsize' value.
* - support minimal size when 'termsize' is "rows*cols".
* - support minimal size when 'termsize' is empty?
- * - do not set bufhidden to "hide"? works like a buffer with changes.
- * document that CTRL-W :hide can be used.
* - GUI: when using tabs, focus in terminal, click on tab does not work.
- * - When $HOME was set by Vim (MS-Windows), do not pass it to the job.
* - GUI: when 'confirm' is set and trying to exit Vim, dialog offers to save
* changes to "!shell".
* (justrajdeep, 2017 Aug 22)
@@ -399,10 +396,6 @@ term_start(typval_T *argvar, jobopt_T *opt, int forceit)
* the job finished. */
curbuf->b_p_ma = FALSE;
- /* Set 'bufhidden' to "hide": allow closing the window. */
- set_string_option_direct((char_u *)"bufhidden", -1,
- (char_u *)"hide", OPT_FREE|OPT_LOCAL, 0);
-
set_term_and_win_size(term);
setup_job_options(opt, term->tl_rows, term->tl_cols);
diff --git a/src/version.c b/src/version.c
index 3be91c249..26604fd13 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 */
/**/
+ 1013,
+/**/
1012,
/**/
1011,