From 121f5c90374c6ba8a3fb33787ca508e8694b7d02 Mon Sep 17 00:00:00 2001 From: Xavier Young <45989017+younger-1@users.noreply.github.com> Date: Tue, 15 Feb 2022 15:36:53 +0800 Subject: [PATCH] fix: use canonical path in windows (#977) --- lua/nvim-tree.lua | 2 +- lua/nvim-tree/utils.lua | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lua/nvim-tree.lua b/lua/nvim-tree.lua index c95902d2..518df34c 100644 --- a/lua/nvim-tree.lua +++ b/lua/nvim-tree.lua @@ -118,7 +118,7 @@ function M.find_file(with_open) local bufname = vim.fn.bufname() local bufnr = api.nvim_get_current_buf() - local filepath = vim.fn.fnamemodify(bufname, ':p') + local filepath = utils.canonical_path(vim.fn.fnamemodify(bufname, ':p')) if not is_file_readable(filepath) then return end diff --git a/lua/nvim-tree/utils.lua b/lua/nvim-tree/utils.lua index 27a827b5..e05d64b9 100644 --- a/lua/nvim-tree/utils.lua +++ b/lua/nvim-tree/utils.lua @@ -3,6 +3,8 @@ local uv = vim.loop local M = {} +M.is_windows = vim.fn.has("win32") == 1 or vim.fn.has("win32unix") == 1 + function M.path_to_matching_str(path) return path:gsub('(%-)', '(%%-)'):gsub('(%.)', '(%%.)'):gsub('(%_)', '(%%_)') end @@ -208,4 +210,13 @@ function M.file_exists(path) return error == nil end +--- @param path string +--- @return string +function M.canonical_path(path) + if M.is_windows and path:match '^%a:' then + return path:sub(1, 1):upper() .. path:sub(2) + end + return path +end + return M