aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/functional/api/extmark_spec.lua7
-rw-r--r--test/functional/terminal/tui_spec.lua31
-rw-r--r--test/functional/ui/decorations_spec.lua35
-rw-r--r--test/functional/ui/screen.lua1
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)