-- Workflow (c): follow a [[link]] under the cursor on to the target doc. local h = require("e2e.helpers") describe("follow link", function() local ctx before_each(function() ctx = h.start() end) after_each(function() h.stop(ctx) end) it("follows [[B]] under the cursor to doc B", function() local b = h.create_doc("B", "the B doc") local a = h.create_doc("A", "see [[B]] here") local buf = h.open(a.id) local line = vim.api.nvim_buf_get_lines(buf, 0, 1, false)[1] local open_at = line:find("%[%[B") -- start of "[[B" assert.is_truthy(open_at) -- Put the cursor on the target inside the brackets. vim.api.nvim_win_set_cursor(0, { 1, open_at + 1 }) require("heph.link").follow() local cur = vim.api.nvim_get_current_buf() assert.are.equal("heph://node/" .. b.id, vim.api.nvim_buf_get_name(cur)) assert.are.equal(b.id, vim.b[cur].heph_node_id) end) it("leaves an unresolved [[link]] in place without erroring", function() local a = h.create_doc("Lonely", "points to [[Nowhere]]") local buf = h.open(a.id) vim.api.nvim_win_set_cursor(0, { 1, 12 }) -- inside [[Nowhere]] require("heph.link").follow() -- Still on the same buffer; no jump happened. assert.are.equal(buf, vim.api.nvim_get_current_buf()) end) end)