aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormoxie <moxie@3kgcat.fi>2026-03-16 01:32:23 +0200
committermoxie <moxie@3kgcat.fi>2026-03-16 01:32:23 +0200
commitd4eec399dea52337e166b9cfd43f719433418cce (patch)
tree57213b425c37f268522566310fcbabcfbcdaaacf
parenta3bec7841215098ca4492a2a38336be76e7fbf4c (diff)
refactor: simplify resolve()
-rw-r--r--doc/muwiki.txt4
-rw-r--r--lua/muwiki/links.lua8
-rw-r--r--lua/muwiki/utils.lua18
3 files changed, 15 insertions, 15 deletions
diff --git a/doc/muwiki.txt b/doc/muwiki.txt
index 92750ae..02d6ced 100644
--- a/doc/muwiki.txt
+++ b/doc/muwiki.txt
@@ -256,13 +256,13 @@ Custom open handler using get_link()~ *muwiki-a
else
-- Open in Neovim for other file types
local utils = require('muwiki.utils')
- local file_path = utils.resolve(link.target, nil)
+ local file_path = utils.resolve(link.target)
vim.cmd('edit ' .. vim.fn.fnameescape(file_path))
end
else
-- Wiki link: open in Neovim
local utils = require('muwiki.utils')
- local file_path = utils.resolve(link.target, nil)
+ local file_path = utils.resolve(link.target)
vim.cmd('edit ' .. vim.fn.fnameescape(file_path))
end
end, { buffer = args.buf, desc = "Open link (custom handler)" })
diff --git a/lua/muwiki/links.lua b/lua/muwiki/links.lua
index 94b3efb..17fed65 100644
--- a/lua/muwiki/links.lua
+++ b/lua/muwiki/links.lua
@@ -83,7 +83,7 @@ function M.open_link()
end
if link.type == 'file' then
- local file_path = utils.resolve(link.target, nil)
+ local file_path = utils.resolve(link.target)
local ext = file_path:match('%.([^%.]+)$')
if ext and is_text_extension(ext) then
utils.open_in_buffer(file_path)
@@ -93,7 +93,7 @@ function M.open_link()
return
end
- local file_path = utils.resolve(link.target, nil)
+ local file_path = utils.resolve(link.target)
utils.open_in_buffer(file_path)
end
@@ -128,7 +128,7 @@ function M.open_with_menu(handlers, link)
local url = link.target
if link.type == 'file' then
- url = utils.resolve(url, nil)
+ url = utils.resolve(url)
end
local handler_names = {}
@@ -205,7 +205,7 @@ function M.create_link()
return
end
- local target_path = utils.resolve(link_target, wiki_root)
+ local target_path = utils.resolve(link_target)
utils.open_in_buffer(target_path)
end
diff --git a/lua/muwiki/utils.lua b/lua/muwiki/utils.lua
index 273a466..c3da4eb 100644
--- a/lua/muwiki/utils.lua
+++ b/lua/muwiki/utils.lua
@@ -57,17 +57,17 @@ function M.open_index(name)
M.open_in_buffer(index_path)
end
-function M.resolve(filepath, wiki_root)
+function M.resolve(filepath)
local path = filepath:gsub('^file://', '')
- local path_type = path:sub(1, 1)
- if path_type == '.' then
- local current_dir = vim.fs.dirname(vim.api.nvim_buf_get_name(0))
- path = vim.fs.joinpath(current_dir, path)
- elseif path_type ~= '/' and path_type ~= '~' then
- local base = wiki_root or vim.fs.dirname(vim.api.nvim_buf_get_name(0))
- path = vim.fs.joinpath(base, path)
+
+ -- Absolute paths: normalize directly
+ if path:sub(1, 1) == '/' or path:sub(1, 1) == '~' then
+ return vim.fs.normalize(path)
end
- return vim.fs.normalize(path)
+
+ -- Relative paths: resolve against current buffer's directory
+ local current_dir = vim.fs.dirname(vim.api.nvim_buf_get_name(0))
+ return vim.fs.normalize(vim.fs.joinpath(current_dir, path))
end
function M.normalize_filename(text)