mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
patch 8.0.1596: no autocommand specifically for opening a terminal window
Problem: No autocommand specifically for opening a terminal window. Solution: Add TerminalOpen. (?, closes #2484)
This commit is contained in:
@@ -257,6 +257,7 @@ Name triggered by ~
|
|||||||
|BufCreate| just after adding a buffer to the buffer list
|
|BufCreate| just after adding a buffer to the buffer list
|
||||||
|BufDelete| before deleting a buffer from the buffer list
|
|BufDelete| before deleting a buffer from the buffer list
|
||||||
|BufWipeout| before completely deleting a buffer
|
|BufWipeout| before completely deleting a buffer
|
||||||
|
|TerminalOpen| after a terminal buffer was created
|
||||||
|
|
||||||
|BufFilePre| before changing the name of the current buffer
|
|BufFilePre| before changing the name of the current buffer
|
||||||
|BufFilePost| after changing the name of the current buffer
|
|BufFilePost| after changing the name of the current buffer
|
||||||
@@ -328,6 +329,10 @@ Name triggered by ~
|
|||||||
|CmdlineEnter| after the cursor moves to the command line
|
|CmdlineEnter| after the cursor moves to the command line
|
||||||
|CmdlineLeave| before the cursor leaves the command line
|
|CmdlineLeave| before the cursor leaves the command line
|
||||||
|
|
||||||
|
|CmdlineChanged| after a change was made to the command-line text
|
||||||
|
|CmdlineEnter| after the cursor moves to the command line
|
||||||
|
|CmdlineLeave| before the cursor leaves the command line
|
||||||
|
|
||||||
|InsertEnter| starting Insert mode
|
|InsertEnter| starting Insert mode
|
||||||
|InsertChange| when typing <Insert> while in Insert or Replace mode
|
|InsertChange| when typing <Insert> while in Insert or Replace mode
|
||||||
|InsertLeave| when leaving Insert mode
|
|InsertLeave| when leaving Insert mode
|
||||||
@@ -968,6 +973,11 @@ TermChanged After the value of 'term' has changed. Useful
|
|||||||
for re-loading the syntax file to update the
|
for re-loading the syntax file to update the
|
||||||
colors, fonts and other terminal-dependent
|
colors, fonts and other terminal-dependent
|
||||||
settings. Executed for all loaded buffers.
|
settings. Executed for all loaded buffers.
|
||||||
|
*TerminalOpen*
|
||||||
|
TerminalOpen Just after a terminal buffer was created, with
|
||||||
|
`:terminal` or |term_start()|. This event is
|
||||||
|
triggered even if the buffer is created
|
||||||
|
without a window, with the ++hidden option.
|
||||||
*TermResponse*
|
*TermResponse*
|
||||||
TermResponse After the response to |t_RV| is received from
|
TermResponse After the response to |t_RV| is received from
|
||||||
the terminal. The value of |v:termresponse|
|
the terminal. The value of |v:termresponse|
|
||||||
|
@@ -7773,6 +7773,7 @@ static struct event_name
|
|||||||
{"TabEnter", EVENT_TABENTER},
|
{"TabEnter", EVENT_TABENTER},
|
||||||
{"TabLeave", EVENT_TABLEAVE},
|
{"TabLeave", EVENT_TABLEAVE},
|
||||||
{"TermChanged", EVENT_TERMCHANGED},
|
{"TermChanged", EVENT_TERMCHANGED},
|
||||||
|
{"TerminalOpen", EVENT_TERMINALOPEN},
|
||||||
{"TermResponse", EVENT_TERMRESPONSE},
|
{"TermResponse", EVENT_TERMRESPONSE},
|
||||||
{"TextChanged", EVENT_TEXTCHANGED},
|
{"TextChanged", EVENT_TEXTCHANGED},
|
||||||
{"TextChangedI", EVENT_TEXTCHANGEDI},
|
{"TextChangedI", EVENT_TEXTCHANGEDI},
|
||||||
|
@@ -38,45 +38,36 @@
|
|||||||
* in tl_scrollback are no longer used.
|
* in tl_scrollback are no longer used.
|
||||||
*
|
*
|
||||||
* TODO:
|
* TODO:
|
||||||
* - Add a flag to kill the job when Vim is exiting. Useful when it's showing
|
* - if the job in the terminal does not support the mouse, we can use the
|
||||||
* a logfile. Or send keys there to make it quit: "exit\r" for a shell.
|
* mouse in the Terminal window for copy/paste and scrolling.
|
||||||
* - When using 'termguicolors' still use the 16 ANSI colors as-is. Helps for
|
* - When using 'termguicolors' still use the 16 ANSI colors as-is. Helps for
|
||||||
|
* - In the GUI use a terminal emulator for :!cmd. Make the height the same as
|
||||||
|
* the window and position it higher up when it gets filled, so it looks like
|
||||||
|
* the text scrolls up.
|
||||||
|
* - implement term_setsize()
|
||||||
|
* - Copy text in the vterm to the Vim buffer once in a while, so that
|
||||||
|
* completion works.
|
||||||
* - Adding WinBar to terminal window doesn't display, text isn't shifted down.
|
* - Adding WinBar to terminal window doesn't display, text isn't shifted down.
|
||||||
* a job that uses 16 colors while Vim is using > 256.
|
* a job that uses 16 colors while Vim is using > 256.
|
||||||
* - in GUI vertical split causes problems. Cursor is flickering. (Hirohito
|
* - in GUI vertical split causes problems. Cursor is flickering. (Hirohito
|
||||||
* Higashi, 2017 Sep 19)
|
* Higashi, 2017 Sep 19)
|
||||||
* - Trigger TerminalOpen event? #2422 patch in #2484
|
|
||||||
* - after resizing windows overlap. (Boris Staletic, #2164)
|
* - after resizing windows overlap. (Boris Staletic, #2164)
|
||||||
* - Redirecting output does not work on MS-Windows, Test_terminal_redir_file()
|
* - Redirecting output does not work on MS-Windows, Test_terminal_redir_file()
|
||||||
* is disabled.
|
* is disabled.
|
||||||
* - if the job in the terminal does not support the mouse, we can use the
|
|
||||||
* mouse in the Terminal window for copy/paste and scrolling.
|
|
||||||
* - cursor blinks in terminal on widows with a timer. (xtal8, #2142)
|
* - cursor blinks in terminal on widows with a timer. (xtal8, #2142)
|
||||||
* - When closing gvim with an active terminal buffer, the dialog suggests
|
|
||||||
* saving the buffer. Should say something else. (Manas Thakur, #2215)
|
|
||||||
* Also: #2223
|
|
||||||
* - Termdebug does not work when Vim build with mzscheme. gdb hangs.
|
* - Termdebug does not work when Vim build with mzscheme. gdb hangs.
|
||||||
* - MS-Windows GUI: WinBar has tearoff item
|
* - MS-Windows GUI: WinBar has tearoff item
|
||||||
* - MS-Windows GUI: still need to type a key after shell exits? #1924
|
* - MS-Windows GUI: still need to type a key after shell exits? #1924
|
||||||
* - After executing a shell command the status line isn't redraw.
|
* - After executing a shell command the status line isn't redraw.
|
||||||
* - implement term_setsize()
|
|
||||||
* - 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?
|
||||||
* - 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.
|
||||||
* - GUI: when 'confirm' is set and trying to exit Vim, dialog offers to save
|
|
||||||
* changes to "!shell".
|
|
||||||
* (justrajdeep, 2017 Aug 22)
|
|
||||||
* - Redrawing is slow with Athena and Motif. Also other GUI? (Ramel Eshed)
|
* - Redrawing is slow with Athena and Motif. Also other GUI? (Ramel Eshed)
|
||||||
* - For the GUI fill termios with default values, perhaps like pangoterm:
|
* - For the GUI fill termios with default values, perhaps like pangoterm:
|
||||||
* http://bazaar.launchpad.net/~leonerd/pangoterm/trunk/view/head:/main.c#L134
|
* http://bazaar.launchpad.net/~leonerd/pangoterm/trunk/view/head:/main.c#L134
|
||||||
* - when 'encoding' is not utf-8, or the job is using another encoding, setup
|
* - when 'encoding' is not utf-8, or the job is using another encoding, setup
|
||||||
* conversions.
|
* conversions.
|
||||||
* - In the GUI use a terminal emulator for :!cmd. Make the height the same as
|
|
||||||
* the window and position it higher up when it gets filled, so it looks like
|
|
||||||
* the text scrolls up.
|
|
||||||
* - Copy text in the vterm to the Vim buffer once in a while, so that
|
|
||||||
* completion works.
|
|
||||||
* - add an optional limit for the scrollback size. When reaching it remove
|
* - add an optional limit for the scrollback size. When reaching it remove
|
||||||
* 10% at the start.
|
* 10% at the start.
|
||||||
*/
|
*/
|
||||||
@@ -582,6 +573,8 @@ term_start(typval_T *argvar, jobopt_T *opt, int without_job, int forceit)
|
|||||||
term_close_buffer(curbuf, old_curbuf);
|
term_close_buffer(curbuf, old_curbuf);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply_autocmds(EVENT_TERMINALOPEN, NULL, NULL, FALSE, curbuf);
|
||||||
return newbuf;
|
return newbuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -908,3 +908,37 @@ func Test_terminal_qall_prompt()
|
|||||||
" close the terminal window where Vim was running
|
" close the terminal window where Vim was running
|
||||||
quit
|
quit
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_terminalopen_autocmd()
|
||||||
|
augroup repro
|
||||||
|
au!
|
||||||
|
au TerminalOpen * let s:called += 1
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
let s:called = 0
|
||||||
|
|
||||||
|
" Open a terminal window with :terminal
|
||||||
|
terminal
|
||||||
|
call assert_equal(1, s:called)
|
||||||
|
bwipe!
|
||||||
|
|
||||||
|
" Open a terminal window with term_start()
|
||||||
|
call term_start(&shell)
|
||||||
|
call assert_equal(2, s:called)
|
||||||
|
bwipe!
|
||||||
|
|
||||||
|
" Open a hidden terminal buffer with :terminal
|
||||||
|
terminal ++hidden
|
||||||
|
call assert_equal(3, s:called)
|
||||||
|
for buf in term_list()
|
||||||
|
exe buf . "bwipe!"
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" Open a hidden terminal buffer with term_start()
|
||||||
|
let buf = term_start(&shell, {'hidden': 1})
|
||||||
|
call assert_equal(4, s:called)
|
||||||
|
exe buf . "bwipe!"
|
||||||
|
|
||||||
|
unlet s:called
|
||||||
|
au! repro
|
||||||
|
endfunction
|
||||||
|
@@ -766,6 +766,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 */
|
||||||
|
/**/
|
||||||
|
1596,
|
||||||
/**/
|
/**/
|
||||||
1595,
|
1595,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -1346,6 +1346,7 @@ enum auto_event
|
|||||||
EVENT_CMDUNDEFINED, /* command undefined */
|
EVENT_CMDUNDEFINED, /* command undefined */
|
||||||
EVENT_OPTIONSET, /* option was set */
|
EVENT_OPTIONSET, /* option was set */
|
||||||
EVENT_TEXTYANKPOST, /* after some text was yanked */
|
EVENT_TEXTYANKPOST, /* after some text was yanked */
|
||||||
|
EVENT_TERMINALOPEN, /* after a terminal buffer was created */
|
||||||
NUM_EVENTS /* MUST be the last one */
|
NUM_EVENTS /* MUST be the last one */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user