# HG changeset patch # User Christian Brabandt # Date 1504040404 -7200 # Node ID e3bde71afff0e3693fb93b1c2d0a93ad9ee1225a # Parent f53e950a0414dfdf346e4a46fe3c4195ccd31039 patch 8.0.1013: terminal window behaves different from a buffer with changes commit https://github.com/vim/vim/commit/e561a7e2fa511d643c9692d26f4cf65378fd1983 Author: Bram Moolenaar Date: Tue Aug 29 22:44:59 2017 +0200 patch 8.0.1013: terminal window behaves different from a buffer with changes 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]". diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt --- 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 --- 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 --- 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 *o * 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 --- 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,