From d4eec399dea52337e166b9cfd43f719433418cce Mon Sep 17 00:00:00 2001 From: moxie Date: Mon, 16 Mar 2026 01:32:23 +0200 Subject: refactor: simplify resolve() --- lua/muwiki/links.lua | 8 ++++---- lua/muwiki/utils.lua | 18 +++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) (limited to 'lua/muwiki') 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) -- cgit v1.2.3