From 7bc3ec6d98570f1c828036ceb47e6ecc1a40efbb Mon Sep 17 00:00:00 2001 From: Riyyi Date: Thu, 10 Apr 2025 17:33:33 +0200 Subject: [PATCH] Neovim: Attempt at Windows path support --- .config/nvim/lua/core/functions.lua | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/.config/nvim/lua/core/functions.lua b/.config/nvim/lua/core/functions.lua index 9d635f8..51ed474 100644 --- a/.config/nvim/lua/core/functions.lua +++ b/.config/nvim/lua/core/functions.lua @@ -6,13 +6,20 @@ M.is_buffer_a_file = function() return buffer_name ~= "" and vim.fn.filereadable(buffer_name) == 1 end +M.normalize_path = function(path) + if not path then return nil end + return vim.loop.os_uname().sysname == "Windows_NT" + and path:gsub("\\", "/") + or path +end + M.get_file_path = function() if not M.is_buffer_a_file() then return nil end local file_path = vim.fn.expand("%:p") - return vim.fn.fnamemodify(file_path, ":h") .. "/" + return M.normalize_path(vim.fn.fnamemodify(file_path, ":h")) .. "/" end M.get_netrw_path = function() -- b:netrw_curdir @@ -20,11 +27,11 @@ M.get_netrw_path = function() -- b:netrw_curdir return nil end - return vim.fn.fnamemodify(vim.fn.bufname(), ":p") + return M.normalize_path(vim.fn.fnamemodify(vim.fn.bufname(), ":p")) end M.get_current_directory = function() - return M.get_file_path() or M.get_netrw_path() or vim.fn.getcwd() + return M.get_file_path() or M.get_netrw_path() or M.normalize_path(vim.fn.getcwd()) end M.find_project_root = function() @@ -34,15 +41,15 @@ M.find_project_root = function() while directory ~= "/" do local git_path = vim.loop.fs_stat(directory .. "/.git") if git_path then - return directory:gsub("/$", "") -- remove trailing slash + return M.normalize_path(directory:gsub("/$", "")) -- remove trailing slash end local project_file = vim.loop.fs_stat(directory .. "/.project") if project_file and project_file.type == "file" then - return directory:gsub("/$", "") -- remove trailing slash + return M.normalize_path(directory:gsub("/$", "")) -- remove trailing slash end - directory = vim.fn.fnamemodify(directory, ":h") + directory = M.normalize_path(vim.fn.fnamemodify(directory, ":h")) end return nil, current_directory