diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/functional/api/extmark_spec.lua | 7 | ||||
-rw-r--r-- | test/functional/terminal/tui_spec.lua | 31 | ||||
-rw-r--r-- | test/functional/ui/decorations_spec.lua | 35 | ||||
-rw-r--r-- | test/functional/ui/screen.lua | 1 |
4 files changed, 74 insertions, 0 deletions
diff --git a/test/functional/api/extmark_spec.lua b/test/functional/api/extmark_spec.lua index cb16f49e7c..0a286965f2 100644 --- a/test/functional/api/extmark_spec.lua +++ b/test/functional/api/extmark_spec.lua @@ -1791,6 +1791,13 @@ describe('API/extmarks', function() feed('vj2ed') eq({}, get_extmark_by_id(ns, 4, {})) end) + + it('can set a URL', function() + set_extmark(ns, 1, 0, 0, { url = 'https://example.com', end_col = 3 }) + local extmarks = get_extmarks(ns, 0, -1, { details = true }) + eq(1, #extmarks) + eq('https://example.com', extmarks[1][4].url) + end) end) describe('Extmarks buffer api with many marks', function() diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua index 46d3c98e07..5bfc7efbb3 100644 --- a/test/functional/terminal/tui_spec.lua +++ b/test/functional/terminal/tui_spec.lua @@ -1889,6 +1889,37 @@ describe('TUI', function() {3:-- TERMINAL --} | ]]) end) + + it('emits hyperlinks with OSC 8', function() + exec_lua([[ + local buf = vim.api.nvim_get_current_buf() + _G.urls = {} + vim.api.nvim_create_autocmd('TermRequest', { + buffer = buf, + callback = function(args) + local req = args.data + if not req then + return + end + local url = req:match('\027]8;;(.*)$') + if url ~= nil then + table.insert(_G.urls, url) + end + end, + }) + ]]) + child_exec_lua([[ + vim.api.nvim_buf_set_lines(0, 0, 0, true, {'Hello'}) + local ns = vim.api.nvim_create_namespace('test') + vim.api.nvim_buf_set_extmark(0, ns, 0, 1, { + end_col = 3, + url = 'https://example.com', + }) + ]]) + retry(nil, 1000, function() + eq({ 'https://example.com', '' }, exec_lua([[return _G.urls]])) + end) + end) end) describe('TUI', function() diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua index 1b3d4afd5f..7b3533454c 100644 --- a/test/functional/ui/decorations_spec.lua +++ b/test/functional/ui/decorations_spec.lua @@ -2205,6 +2205,41 @@ describe('extmark decorations', function() | ]]} end) + + it('supports URLs', function() + insert(example_text) + + local url = 'https://example.com' + + local attrs = screen:get_default_attr_ids() + table.insert(attrs, { + url = url, + }) + screen:set_default_attr_ids(attrs) + + api.nvim_buf_set_extmark(0, ns, 1, 4, { + end_col = 14, + url = url, + }) + + screen:expect{grid=[[ + for _,item in ipairs(items) do | + {44:local text}, hl_id_cell, count = unpack(item) | + if hl_id_cell ~= nil then | + hl_id = hl_id_cell | + end | + for _ = 1, (count or 1) do | + local cell = line[colpos] | + cell.text = text | + cell.hl_id = hl_id | + colpos = colpos+1 | + end | + en^d | + {1:~ }| + {1:~ }| + | + ]]} + end) end) describe('decorations: inline virtual text', function() diff --git a/test/functional/ui/screen.lua b/test/functional/ui/screen.lua index a02130276d..3043a3c60a 100644 --- a/test/functional/ui/screen.lua +++ b/test/functional/ui/screen.lua @@ -1890,6 +1890,7 @@ function Screen:_equal_attrs(a, b) and a.strikethrough == b.strikethrough and a.fg_indexed == b.fg_indexed and a.bg_indexed == b.bg_indexed + and a.url == b.url end function Screen:_equal_info(a, b) |