windows path fix: issue #20

neovim_0_5
ray-x 3 years ago
parent b68340a467
commit 95b45a6cf6

@ -4,6 +4,9 @@ local log = util.log
local partial = util.partial local partial = util.partial
local lsphelper = require "navigator.lspwrapper" local lsphelper = require "navigator.lspwrapper"
local cwd = vim.fn.getcwd(0) local cwd = vim.fn.getcwd(0)
local path_sep = require"navigator.util".path_sep()
local path_cur = require"navigator.util".path_cur()
local M = {} local M = {}
local function call_hierarchy_handler(direction, err, api, result, _, _, error_message) local function call_hierarchy_handler(direction, err, api, result, _, _, error_message)
@ -23,7 +26,8 @@ local function call_hierarchy_handler(direction, err, api, result, _, _, error_m
local kind = '' local kind = ''
range = call_hierarchy.range range = call_hierarchy.range
local filename = assert(vim.uri_to_fname(call_hierarchy.uri)) local filename = assert(vim.uri_to_fname(call_hierarchy.uri))
local display_filename = filename:gsub(cwd .. "/", "./", 1)
local display_filename = filename:gsub(cwd .. path_sep, path_cur, 1)
local bufnr = vim.uri_to_bufnr(call_hierarchy.uri) local bufnr = vim.uri_to_bufnr(call_hierarchy.uri)
local row = range.start.line local row = range.start.line
@ -35,7 +39,6 @@ local function call_hierarchy_handler(direction, err, api, result, _, _, error_m
table.insert(items, { table.insert(items, {
uri = call_hierarchy.uri, uri = call_hierarchy.uri,
filename = filename, filename = filename,
-- display_filename = filename:gsub(cwd .. "/", "./", 1),
display_filename = display_filename, display_filename = display_filename,
text = kind .. fn, text = kind .. fn,
range = range, range = range,

@ -5,6 +5,8 @@ local util = require "navigator.util"
local log = util.log local log = util.log
local error = util.error local error = util.error
local path_sep = require"navigator.util".path_sep()
local path_cur = require"navigator.util".path_cur()
diagnostic_list[vim.bo.filetype] = {} diagnostic_list[vim.bo.filetype] = {}
local diag_hdlr = function(err, method, result, client_id, br, config) local diag_hdlr = function(err, method, result, client_id, br, config)
@ -27,7 +29,7 @@ local diag_hdlr = function(err, method, result, client_id, br, config)
for _, v in ipairs(result.diagnostics) do for _, v in ipairs(result.diagnostics) do
local item = v local item = v
item.filename = assert(vim.uri_to_fname(uri)) item.filename = assert(vim.uri_to_fname(uri))
item.display_filename = item.filename:gsub(cwd .. "/", "./", 1) item.display_filename = item.filename:gsub(cwd .. path_sep, path_cur, 1)
item.lnum = v.range.start.line + 1 item.lnum = v.range.start.line + 1
item.col = v.range.start.character + 1 item.col = v.range.start.character + 1
item.uri = uri item.uri = uri

@ -8,6 +8,8 @@ local api = vim.api
local top_center = require"guihua.location".top_center local top_center = require"guihua.location".top_center
local path_sep = require"navigator.util".path_sep()
local path_cur = require"navigator.util".path_cur()
function M._preview_location(opts) -- location, width, pos_x, pos_y function M._preview_location(opts) -- location, width, pos_x, pos_y
local uri = opts.uri local uri = opts.uri
if uri == nil then if uri == nil then

@ -3,6 +3,9 @@ local util = require "navigator.util"
local log = util.log local log = util.log
local partial = util.partial local partial = util.partial
local lsphelper = require "navigator.lspwrapper" local lsphelper = require "navigator.lspwrapper"
local path_sep = require"navigator.util".path_sep()
local path_cur = require"navigator.util".path_cur()
local cwd = vim.fn.getcwd(0) local cwd = vim.fn.getcwd(0)
local M = {} local M = {}
@ -25,11 +28,10 @@ local function call_hierarchy_handler(direction, err, _, result, _, _, error_mes
end end
for _, range in pairs(call_hierarchy_call.fromRanges) do for _, range in pairs(call_hierarchy_call.fromRanges) do
local filename = assert(vim.uri_to_fname(call_hierarchy_item.uri)) local filename = assert(vim.uri_to_fname(call_hierarchy_item.uri))
local display_filename = filename:gsub(cwd .. "/", "./", 1) local display_filename = filename:gsub(cwd .. path_sep, path_cur, 1)
table.insert(items, { table.insert(items, {
uri = call_hierarchy_item.uri, uri = call_hierarchy_item.uri,
filename = filename, filename = filename,
-- display_filename = filename:gsub(cwd .. "/", "./", 1),
display_filename = call_hierarchy_item.detail or display_filename, display_filename = call_hierarchy_item.detail or display_filename,
text = kind .. call_hierarchy_item.name, text = kind .. call_hierarchy_item.name,
range = range, range = range,

@ -72,8 +72,7 @@ library[vim.fn.expand("$VIMRUNTIME/lua/vim/lsp")] = true
-- [vim.fn.expand("~/repos/nvim/lua")] = true -- [vim.fn.expand("~/repos/nvim/lua")] = true
-- TODO remove onece PR #944 merged to lspconfig -- TODO remove onece PR #944 merged to lspconfig
local is_windows = uv.os_uname().version:match("Windows") local path_sep = require"navigator.util".path_sep()
local path_sep = is_windows and "\\" or "/"
local strip_dir_pat = path_sep .. "([^" .. path_sep .. "]+)$" local strip_dir_pat = path_sep .. "([^" .. path_sep .. "]+)$"
local strip_sep_pat = path_sep .. "$" local strip_sep_pat = path_sep .. "$"
local dirname = function(path) local dirname = function(path)

@ -8,9 +8,13 @@ local lerr = require"navigator.util".error
local trace = require"navigator.util".trace local trace = require"navigator.util".trace
local symbol_kind = require"navigator.lspclient.lspkind".symbol_kind local symbol_kind = require"navigator.lspclient.lspkind".symbol_kind
local cwd = vim.fn.getcwd(0) local cwd = vim.fn.getcwd(0)
local path_sep = require"navigator.util".path_sep()
local path_cur = require"navigator.util".path_cur()
cwd = gutil.add_pec(cwd) cwd = gutil.add_pec(cwd)
ts_nodes = {} ts_nodes = {}
ts_nodes_time = {} ts_nodes_time = {}
local ts_enabled, _ = pcall(require, "nvim-treesitter.locals") local ts_enabled, _ = pcall(require, "nvim-treesitter.locals")
local TS_analysis_enabled = require"navigator".config_values().treesitter_analysis local TS_analysis_enabled = require"navigator".config_values().treesitter_analysis
@ -81,7 +85,7 @@ function M.symbols_to_items(result)
end end
item.filename = vim.uri_to_fname(item.uri) item.filename = vim.uri_to_fname(item.uri)
item.display_filename = item.filename:gsub(cwd .. "/", "./", 1) item.display_filename = item.filename:gsub(cwd .. path_sep, path_cur, 1)
if item.range == nil or item.range.start == nil then if item.range == nil or item.range.start == nil then
log("range not set", result[i], item) log("range not set", result[i], item)
end end
@ -287,7 +291,7 @@ function M.locations_to_items(locations)
end end
item.filename = assert(vim.uri_to_fname(item.uri)) item.filename = assert(vim.uri_to_fname(item.uri))
local filename = item.filename:gsub(cwd .. "/", "./", 1) local filename = item.filename:gsub(cwd .. path_sep, path_cur, 1)
item.display_filename = filename or item.filename item.display_filename = filename or item.filename
item.call_by = find_ts_func_by_range(funcs, item.range) item.call_by = find_ts_func_by_range(funcs, item.range)
item.rpath = util.get_relative_path(cwd, item.filename) item.rpath = util.get_relative_path(cwd, item.filename)
@ -324,7 +328,7 @@ function M.symbol_to_items(locations)
item.uri = locations[i].uri item.uri = locations[i].uri
item.range = locations[i].range item.range = locations[i].range
item.filename = assert(vim.uri_to_fname(item.uri)) item.filename = assert(vim.uri_to_fname(item.uri))
local filename = item.filename:gsub(cwd .. "/", "./", 1) local filename = item.filename:gsub(cwd .. path_sep, path_cur, 1)
item.display_filename = filename or item.filename item.display_filename = filename or item.filename
item.rpath = util.get_relative_path(cwd, item.filename) item.rpath = util.get_relative_path(cwd, item.filename)

@ -247,7 +247,9 @@ local function get_all_nodes(bufnr, filter, summary)
uri = vim.uri_from_bufnr(bufnr) uri = vim.uri_from_bufnr(bufnr)
fname = vim.uri_to_fname(uri) fname = vim.uri_to_fname(uri)
end end
local display_filename = fname:gsub(cwd .. "/", "./", 1) path_sep = require"navigator.util".path_sep()
path_cur = require"navigator.util".path_cur()
local display_filename = fname:gsub(cwd .. path_sep, path_cur, 1)
local all_nodes = {} local all_nodes = {}
-- Support completion-nvim customized label map -- Support completion-nvim customized label map

@ -2,6 +2,16 @@
-- and line to highlight -- and line to highlight
-- Some of function copied from https://github.com/RishabhRD/nvim-lsputils -- Some of function copied from https://github.com/RishabhRD/nvim-lsputils
local M = {log_path = vim.lsp.get_log_path()} local M = {log_path = vim.lsp.get_log_path()}
local path_sep = vim.loop.os_uname().sysname == "Windows" and "\\" or "/"
-- local is_windows = uv.os_uname().version:match("Windows")
M.path_sep = function()
return vim.loop.os_uname().sysname == "Windows" and "\\" or "/"
end
M.path_cur = function()
return vim.loop.os_uname().sysname == "Windows" and ".\\" or "./"
end
function M.get_data_from_file(filename, startLine) function M.get_data_from_file(filename, startLine)
local displayLine local displayLine
if startLine < 3 then if startLine < 3 then
@ -58,7 +68,7 @@ end
function M.get_base(path) function M.get_base(path)
local len = #path local len = #path
for i = len, 1, -1 do for i = len, 1, -1 do
if path:sub(i, i) == "/" then if path:sub(i, i) == path_sep then
local ret = path:sub(i + 1, len) local ret = path:sub(i + 1, len)
return ret return ret
end end
@ -74,7 +84,7 @@ local function getDir(path)
local last_index = 1 local last_index = 1
for i = 2, len do for i = 2, len do
local cur_char = path:sub(i, i) local cur_char = path:sub(i, i)
if cur_char == "/" then if cur_char == path_sep then
local my_data = path:sub(last_index + 1, i - 1) local my_data = path:sub(last_index + 1, i - 1)
table.insert(data, my_data) table.insert(data, my_data)
last_index = i last_index = i
@ -106,7 +116,7 @@ function M.get_relative_path(base_path, my_path)
end end
local data = "" local data = ""
for i = cur + 1, my_len do for i = cur + 1, my_len do
data = data .. my_data[i] .. "/" data = data .. my_data[i] .. path_sep
end end
data = data .. M.get_base(my_path) data = data .. M.get_base(my_path)
return data return data

Loading…
Cancel
Save