0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

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]".
This commit is contained in:
Bram Moolenaar 2017-08-29 22:44:59 +02:00
parent 48340b62e8
commit e561a7e2fa
4 changed files with 16 additions and 15 deletions

View File

@ -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 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 When the buffer associated with the terminal is unloaded or wiped out the job
is killed, similar to calling `job_stop(job, "kill")` 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 the window behaves like it contains a modified
So long as the job is running: If the window is closed the buffer becomes buffer. Trying to close the window with `CTRL-W :close` or `CTRL-W :hide`
hidden. The command will not be stopped. The `:buffer` command can be used fails, unless "!" is added, in which case the job is ended. The text in the
to turn the current window into a terminal window. If there are unsaved window is lost. The buffer still exists, but getting it in a window with
changes this fails, use ! to force, as usual. `: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 To have a background job run without a window, and open the window when it's
done, use options like this: > done, use options like this: >

View File

@ -5825,8 +5825,8 @@ buf_spname(buf_T *buf)
if (buf->b_term != NULL) if (buf->b_term != NULL)
return term_get_status_text(buf->b_term); return term_get_status_text(buf->b_term);
#endif #endif
if (buf->b_sfname != NULL) if (buf->b_fname != NULL)
return buf->b_sfname; return buf->b_fname;
return (char_u *)_("[Scratch]"); return (char_u *)_("[Scratch]");
} }

View File

@ -44,10 +44,7 @@
* - add test for giving error for invalid 'termsize' value. * - add test for giving error for invalid 'termsize' value.
* - support minimal size when 'termsize' is "rows*cols". * - support minimal size when 'termsize' is "rows*cols".
* - support minimal size when 'termsize' is empty? * - 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. * - 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 * - GUI: when 'confirm' is set and trying to exit Vim, dialog offers to save
* changes to "!shell". * changes to "!shell".
* (justrajdeep, 2017 Aug 22) * (justrajdeep, 2017 Aug 22)
@ -399,10 +396,6 @@ term_start(typval_T *argvar, jobopt_T *opt, int forceit)
* the job finished. */ * the job finished. */
curbuf->b_p_ma = FALSE; 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); set_term_and_win_size(term);
setup_job_options(opt, term->tl_rows, term->tl_cols); setup_job_options(opt, term->tl_rows, term->tl_cols);

View File

@ -769,6 +769,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1013,
/**/ /**/
1012, 1012,
/**/ /**/