aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2019-09-12 16:43:52 -0700
committerJustin M. Keyes <justinkz@gmail.com>2019-09-12 17:04:05 -0700
commit492ac04f7e0ffcc5011d3604b234d149f8b0bb91 (patch)
treec028665f67fc7b9f9d8b576fa8c46157245016d3
parent589f612adfea22b688618fa90e011f5494ca5204 (diff)
downloadrneovim-492ac04f7e0ffcc5011d3604b234d149f8b0bb91.tar.gz
rneovim-492ac04f7e0ffcc5011d3604b234d149f8b0bb91.tar.bz2
rneovim-492ac04f7e0ffcc5011d3604b234d149f8b0bb91.zip
UIEnter/UILeave: fire for embedder UI, builtin TUI
Before this, --embed UIs (without --headless) would not trigger UIEnter. For TUI, maybe UIEnter isn't useful, but: - It is less "surprising"/special. - Makes documentation simpler. - When TUI becomes a coprocess, it will happen anyway.
-rw-r--r--src/nvim/main.c7
-rw-r--r--test/functional/api/ui_spec.lua14
-rw-r--r--test/functional/terminal/tui_spec.lua27
3 files changed, 40 insertions, 8 deletions
diff --git a/src/nvim/main.c b/src/nvim/main.c
index bca8991b0f..e7835ccbf1 100644
--- a/src/nvim/main.c
+++ b/src/nvim/main.c
@@ -12,6 +12,7 @@
#include "nvim/ascii.h"
#include "nvim/vim.h"
#include "nvim/main.h"
+#include "nvim/aucmd.h"
#include "nvim/buffer.h"
#include "nvim/charset.h"
#include "nvim/diff.h"
@@ -351,7 +352,7 @@ int main(int argc, char **argv)
bool use_remote_ui = (embedded_mode && !headless_mode);
bool use_builtin_ui = (!headless_mode && !embedded_mode && !silent_mode);
if (use_remote_ui || use_builtin_ui) {
- TIME_MSG("waiting for UI to make request");
+ TIME_MSG("waiting for UI");
if (use_remote_ui) {
remote_ui_wait_for_attach();
} else {
@@ -537,6 +538,10 @@ int main(int argc, char **argv)
set_vim_var_nr(VV_VIM_DID_ENTER, 1L);
apply_autocmds(EVENT_VIMENTER, NULL, NULL, false, curbuf);
TIME_MSG("VimEnter autocommands");
+ if (use_remote_ui || use_builtin_ui) {
+ do_autocmd_uienter(use_remote_ui ? CHAN_STDIO : 0, true);
+ TIME_MSG("UIEnter autocommands");
+ }
// Adjust default register name for "unnamed" in 'clipboard'. Can only be
// done after the clipboard is available and all initial commands that may
diff --git a/test/functional/api/ui_spec.lua b/test/functional/api/ui_spec.lua
index c5c3185eff..279cd1856d 100644
--- a/test/functional/api/ui_spec.lua
+++ b/test/functional/api/ui_spec.lua
@@ -37,12 +37,14 @@ describe('nvim_ui_attach()', function()
end)
it('autocmds UIEnter/UILeave', function()
- clear{args={
- '--cmd', 'let g:evs = []',
- '--cmd', 'autocmd UIEnter * :call add(g:evs, "UIEnter") | let g:uienter_ev = deepcopy(v:event)',
- '--cmd', 'autocmd UILeave * :call add(g:evs, "UILeave") | let g:uileave_ev = deepcopy(v:event)',
- '--cmd', 'autocmd VimEnter * :call add(g:evs, "VimEnter")',
- }}
+ clear{
+ args_rm={'--headless'},
+ args={
+ '--cmd', 'let g:evs = []',
+ '--cmd', 'autocmd UIEnter * :call add(g:evs, "UIEnter") | let g:uienter_ev = deepcopy(v:event)',
+ '--cmd', 'autocmd UILeave * :call add(g:evs, "UILeave") | let g:uileave_ev = deepcopy(v:event)',
+ '--cmd', 'autocmd VimEnter * :call add(g:evs, "VimEnter")',
+ }}
local screen = Screen.new()
screen:attach()
eq({chan=1}, eval('g:uienter_ev'))
diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua
index 725a6db225..c55093cb0f 100644
--- a/test/functional/terminal/tui_spec.lua
+++ b/test/functional/terminal/tui_spec.lua
@@ -767,11 +767,36 @@ describe('TUI', function()
end)
end)
+describe('TUI UIEnter/UILeave', function()
+ it('fires exactly once, after VimEnter', function()
+ clear()
+ local screen = thelpers.screen_setup(0,
+ '["'..nvim_prog..'", "-u", "NONE", "-i", "NONE"'
+ ..[[, "--cmd", "set noswapfile noshowcmd noruler"]]
+ ..[[, "--cmd", "let g:evs = []"]]
+ ..[[, "--cmd", "autocmd UIEnter * :call add(g:evs, 'UIEnter')"]]
+ ..[[, "--cmd", "autocmd UILeave * :call add(g:evs, 'UILeave')"]]
+ ..[[, "--cmd", "autocmd VimEnter * :call add(g:evs, 'VimEnter')"]]
+ ..']'
+ )
+ feed_data(":echo g:evs\n")
+ screen:expect{grid=[[
+ {1: } |
+ {4:~ }|
+ {4:~ }|
+ {4:~ }|
+ {5:[No Name] }|
+ ['VimEnter', 'UIEnter'] |
+ {3:-- TERMINAL --} |
+ ]]}
+ end)
+end)
+
describe('TUI FocusGained/FocusLost', function()
local screen
before_each(function()
- helpers.clear()
+ clear()
screen = thelpers.screen_setup(0, '["'..nvim_prog
..'", "-u", "NONE", "-i", "NONE", "--cmd", "set noswapfile noshowcmd noruler"]')
feed_data(":autocmd FocusGained * echo 'gained'\n")