Find package path based on the Lua source file

This is more robust compared to the previous method where we walked
up the tree and matched on the directory name, which also required
that the repository was cloned in a directory named `nvim-treesitter`.
This commit is contained in:
Markus Koller 2020-09-10 14:18:15 +02:00 committed by Thomas Vigouroux
parent 10848ca5bd
commit fd6d09fd1f
2 changed files with 6 additions and 15 deletions

View file

@ -200,9 +200,7 @@ local function install(with_sync, ask_reinstall)
return api.nvim_err_writeln('Git is required on your system to run this command') return api.nvim_err_writeln('Git is required on your system to run this command')
end end
local package_path, err = utils.get_package_path() local package_path = utils.get_package_path()
if err then return api.nvim_err_writeln(err) end
local cache_folder, err = utils.get_cache_dir() local cache_folder, err = utils.get_cache_dir()
if err then return api.nvim_err_writeln(err) end if err then return api.nvim_err_writeln(err) end
@ -267,11 +265,7 @@ function M.uninstall(lang)
M.uninstall(lang) M.uninstall(lang)
end end
elseif lang then elseif lang then
local package_path, err = utils.get_package_path() local package_path = utils.get_package_path()
if err then
print(err)
return
end
local parser_lib = package_path..path_sep.."parser"..path_sep..lang..".so" local parser_lib = package_path..path_sep.."parser"..path_sep..lang..".so"
local command_list = { local command_list = {

View file

@ -18,14 +18,11 @@ function M.setup_commands(mod, commands)
end end
function M.get_package_path() function M.get_package_path()
for _, path in pairs(api.nvim_list_runtime_paths()) do -- Path to this source file, removing the leading '@'
local last_segment = vim.fn.fnamemodify(path, ":p:h:t") local source = string.sub(debug.getinfo(1, 'S').source, 2)
if last_segment == "nvim-treesitter" then
return path
end
end
return nil, 'Plugin runtime path not found.' -- Path to the package root
return fn.fnamemodify(source, ":p:h:h:h")
end end
function M.get_cache_dir() function M.get_cache_dir()