diff options
author | Ghjuvan Lacambre <code@lacamb.re> | 2024-01-09 15:27:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-09 08:27:56 -0600 |
commit | beca827212b106114c371f8bb61aa1a50810062f (patch) | |
tree | 8c48282193fef8f58768a03663df94bf00b8aa29 /test | |
parent | f40df63bdca33d343cada6ceaafbc8b765ed7cc6 (diff) | |
download | rneovim-beca827212b106114c371f8bb61aa1a50810062f.tar.gz rneovim-beca827212b106114c371f8bb61aa1a50810062f.tar.bz2 rneovim-beca827212b106114c371f8bb61aa1a50810062f.zip |
feat(terminal): trigger TermRequest autocommand events (#22159)
This commit implements a new TermRequest autocommand event and has Neovim
emit this event when children of terminal buffers emit an OSC or DCS sequence
libvterm does not handle.
The TermRequest autocommand event has additional data in the
v:termrequest variable.
Co-authored-by: Gregory Anders <greg@gpanders.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/functional/terminal/buffer_spec.lua | 12 | ||||
-rw-r--r-- | test/functional/terminal/tui_spec.lua | 55 |
2 files changed, 67 insertions, 0 deletions
diff --git a/test/functional/terminal/buffer_spec.lua b/test/functional/terminal/buffer_spec.lua index 480ca96289..d0462b5619 100644 --- a/test/functional/terminal/buffer_spec.lua +++ b/test/functional/terminal/buffer_spec.lua @@ -317,6 +317,18 @@ describe(':terminal buffer', function() pcall_err(command, 'write test/functional/fixtures/tty-test.c') ) end) + + it('emits TermRequest events', function() + command('split') + command('enew') + local term = meths.open_term(0, {}) + -- cwd will be inserted in a file URI, which cannot contain backs + local cwd = funcs.getcwd():gsub('\\', '/') + local parent = cwd:match('^(.+/)') + local expected = '\027]7;file://host' .. parent + meths.chan_send(term, string.format('%s\027\\', expected)) + eq(expected, eval('v:termrequest')) + end) end) describe('No heap-buffer-overflow when using', function() diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua index f6ee0f9c77..e65e57bc7f 100644 --- a/test/functional/terminal/tui_spec.lua +++ b/test/functional/terminal/tui_spec.lua @@ -28,6 +28,7 @@ local new_pipename = helpers.new_pipename local spawn_argv = helpers.spawn_argv local set_session = helpers.set_session local write_file = helpers.write_file +local eval = helpers.eval if helpers.skip(is_os('win')) then return @@ -2736,6 +2737,42 @@ describe('TUI', function() unchanged = true, } end) + + it('queries the terminal for truecolor support', function() + clear() + exec_lua([[ + vim.api.nvim_create_autocmd('TermRequest', { + callback = function(args) + local req = args.data + local payload = req:match('^\027P%+q([%x;]+)$') + if payload then + vim.g.xtgettcap = true + return true + end + end, + }) + ]]) + screen = thelpers.setup_child_nvim({ + '-u', + 'NONE', + '-i', + 'NONE', + }, { + env = { + VIMRUNTIME = os.getenv('VIMRUNTIME'), + + -- Force COLORTERM to be unset and use a TERM that does not contain Tc or RGB in terminfo. + -- This will force the nested nvim instance to query with XTGETTCAP + COLORTERM = '', + TERM = 'xterm-256colors', + }, + }) + + retry(nil, 1000, function() + eq(true, eval("get(g:, 'xtgettcap', v:false)")) + eq(1, eval('&termguicolors')) + end) + end) end) describe('TUI bg color', function() @@ -2743,6 +2780,18 @@ describe('TUI bg color', function() local function setup_bg_test() clear() + exec_lua([[ + vim.api.nvim_create_autocmd('TermRequest', { + callback = function(args) + local req = args.data + if req == '\027]11;?' then + vim.g.oscrequest = true + return true + end + end, + }) + ]]) + screen = thelpers.setup_child_nvim({ '-u', 'NONE', @@ -2759,6 +2808,12 @@ describe('TUI bg color', function() before_each(setup_bg_test) + it('queries the terminal for background color', function() + retry(nil, 1000, function() + eq(true, eval("get(g:, 'oscrequest', v:false)")) + end) + end) + it('triggers OptionSet event on unsplit terminal-response', function() screen:expect([[ {1: } | |