diff options
Diffstat (limited to 'data/vim/patches/8.1.1016')
-rw-r--r-- | data/vim/patches/8.1.1016 | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1016 b/data/vim/patches/8.1.1016 new file mode 100644 index 000000000..b4ce829da --- /dev/null +++ b/data/vim/patches/8.1.1016 @@ -0,0 +1,189 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.1016 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.1016 +Problem: MS-Windows: No color in shell when using "!" in 'guioptions. +Solution: Don't stop termcap when using a terminal window for the shell. + (vim-jp, closes #4117) +Files: src/ex_cmds.c + + +*** ../vim-8.1.1015/src/ex_cmds.c 2019-02-20 22:18:59.990044254 +0100 +--- src/ex_cmds.c 2019-03-17 16:56:37.691336310 +0100 +*************** +*** 1542,1547 **** +--- 1542,1548 ---- + #endif + #ifdef MSWIN + int winstart = FALSE; ++ int keep_termcap = FALSE; + #endif + + /* +*************** +*** 1557,1604 **** + + #ifdef MSWIN + /* +! * Check if ":!start" is used. + */ + if (cmd != NULL) +! winstart = (STRNICMP(cmd, "start ", 6) == 0); + #endif + + /* + * For autocommands we want to get the output on the current screen, to + * avoid having to type return below. + */ +! msg_putchar('\r'); /* put cursor at start of line */ + if (!autocmd_busy) + { + #ifdef MSWIN +! if (!winstart) + #endif + stoptermcap(); + } + #ifdef MSWIN + if (!winstart) + #endif +! msg_putchar('\n'); /* may shift screen one line up */ + +! /* warning message before calling the shell */ + if (p_warn && !autocmd_busy && msg_silent == 0) + FOR_ALL_BUFFERS(buf) + if (bufIsChangedNotTerm(buf)) + { + #ifdef FEAT_GUI_MSWIN +! if (!winstart) +! starttermcap(); /* don't want a message box here */ + #endif + msg_puts(_("[No write since last change]\n")); + #ifdef FEAT_GUI_MSWIN +! if (!winstart) + stoptermcap(); + #endif + break; + } + +! /* This windgoto is required for when the '\n' resulted in a "delete line +! * 1" command to the terminal. */ + if (!swapping_screen()) + windgoto(msg_row, msg_col); + cursor_on(); +--- 1558,1611 ---- + + #ifdef MSWIN + /* +! * Check if ":!start" is used. This implies not stopping termcap mode. + */ + if (cmd != NULL) +! keep_termcap = winstart = (STRNICMP(cmd, "start ", 6) == 0); +! +! # if defined(FEAT_GUI) && defined(FEAT_TERMINAL) +! // Don't stop termcap mode when using a terminal window for the shell. +! if (gui.in_use && vim_strchr(p_go, GO_TERMINAL) != NULL) +! keep_termcap = TRUE; +! # endif + #endif + + /* + * For autocommands we want to get the output on the current screen, to + * avoid having to type return below. + */ +! msg_putchar('\r'); // put cursor at start of line + if (!autocmd_busy) + { + #ifdef MSWIN +! if (!keep_termcap) + #endif + stoptermcap(); + } + #ifdef MSWIN + if (!winstart) + #endif +! msg_putchar('\n'); // may shift screen one line up + +! // warning message before calling the shell + if (p_warn && !autocmd_busy && msg_silent == 0) + FOR_ALL_BUFFERS(buf) + if (bufIsChangedNotTerm(buf)) + { + #ifdef FEAT_GUI_MSWIN +! if (!keep_termcap) +! starttermcap(); // don't want a message box here + #endif + msg_puts(_("[No write since last change]\n")); + #ifdef FEAT_GUI_MSWIN +! if (!keep_termcap) + stoptermcap(); + #endif + break; + } + +! // This windgoto is required for when the '\n' resulted in a "delete line +! // 1" command to the terminal. + if (!swapping_screen()) + windgoto(msg_row, msg_col); + cursor_on(); +*************** +*** 1632,1638 **** + #ifndef FEAT_GUI_MSWIN + if (cmd == NULL + # ifdef MSWIN +! || (winstart && !need_wait_return) + # endif + ) + { +--- 1639,1645 ---- + #ifndef FEAT_GUI_MSWIN + if (cmd == NULL + # ifdef MSWIN +! || (keep_termcap && !need_wait_return) + # endif + ) + { +*************** +*** 1659,1667 **** + #endif /* FEAT_GUI_MSWIN */ + + #ifdef MSWIN +! if (!winstart) /* if winstart==TRUE, never stopped termcap! */ + #endif +! starttermcap(); /* start termcap if not done by wait_return() */ + + /* + * In an Amiga window redrawing is caused by asking the window size. +--- 1666,1674 ---- + #endif /* FEAT_GUI_MSWIN */ + + #ifdef MSWIN +! if (!keep_termcap) // if keep_termcap is TRUE didn't stop termcap + #endif +! starttermcap(); // start termcap if not done by wait_return() + + /* + * In an Amiga window redrawing is caused by asking the window size. +*** ../vim-8.1.1015/src/version.c 2019-03-17 16:39:01.566006172 +0100 +--- src/version.c 2019-03-17 16:58:06.018782269 +0100 +*************** +*** 781,782 **** +--- 781,784 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1016, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +80. At parties, you introduce your spouse as your "service provider." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |