mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-12 08:20:05 -04:00
Add Windows support (mingw)
This commit is contained in:
parent
34160bb6f2
commit
ce7efd34c6
2 changed files with 20 additions and 15 deletions
|
|
@ -58,6 +58,10 @@ local function iter_cmd_sync(cmd_list)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function select_executable(executables)
|
||||||
|
return vim.tbl_filter(function(c) return fn.executable(c) == 1 end, executables)[1]
|
||||||
|
end
|
||||||
|
|
||||||
local function run_install(cache_folder, package_path, lang, repo, with_sync)
|
local function run_install(cache_folder, package_path, lang, repo, with_sync)
|
||||||
parsers.reset_cache()
|
parsers.reset_cache()
|
||||||
|
|
||||||
|
|
@ -66,6 +70,14 @@ local function run_install(cache_folder, package_path, lang, repo, with_sync)
|
||||||
-- compile_location only needed for typescript installs.
|
-- compile_location only needed for typescript installs.
|
||||||
local compile_location = cache_folder..'/'..(repo.location or project_name)
|
local compile_location = cache_folder..'/'..(repo.location or project_name)
|
||||||
local parser_lib_name = package_path.."/parser/"..lang..".so"
|
local parser_lib_name = package_path.."/parser/"..lang..".so"
|
||||||
|
|
||||||
|
local compilers = { "cc", "gcc", "clang" }
|
||||||
|
local cc = select_executable(compilers)
|
||||||
|
if not cc then
|
||||||
|
api.nvim_err_writeln('No C compiler found! "'..table.concat(compilers, '", "')..'" are not executable.')
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local command_list = {
|
local command_list = {
|
||||||
{
|
{
|
||||||
cmd = 'rm',
|
cmd = 'rm',
|
||||||
|
|
@ -83,7 +95,7 @@ local function run_install(cache_folder, package_path, lang, repo, with_sync)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
cmd = 'cc',
|
cmd = cc,
|
||||||
info = 'Compiling...',
|
info = 'Compiling...',
|
||||||
err = 'Error during compilation',
|
err = 'Error during compilation',
|
||||||
opts = {
|
opts = {
|
||||||
|
|
@ -148,12 +160,8 @@ local function install_lang(lang, ask_reinstall, cache_folder, package_path, wit
|
||||||
run_install(cache_folder, package_path, lang, install_info, with_sync)
|
run_install(cache_folder, package_path, lang, install_info, with_sync)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- TODO(kyazdani): this should work on windows too
|
|
||||||
local function install(with_sync, ask_reinstall)
|
local function install(with_sync, ask_reinstall)
|
||||||
return function (...)
|
return function (...)
|
||||||
if fn.has('win32') == 1 then
|
|
||||||
return api.nvim_err_writeln('This command is not available on windows at the moment.')
|
|
||||||
end
|
|
||||||
|
|
||||||
if fn.executable('git') == 0 then
|
if fn.executable('git') == 0 then
|
||||||
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')
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,9 @@ end
|
||||||
|
|
||||||
function M.get_package_path()
|
function M.get_package_path()
|
||||||
for _, path in pairs(api.nvim_list_runtime_paths()) do
|
for _, path in pairs(api.nvim_list_runtime_paths()) do
|
||||||
if string.match(path, '.*/nvim%-treesitter') then
|
local last_segment = vim.fn.fnamemodify(path, ":t")
|
||||||
|
local penultimate_segment = vim.fn.fnamemodify(path, ":t:t")
|
||||||
|
if last_segment == "nvim-treesitter" or (last_segment == "" and penultimate_segment == "nvim-treesitter") then
|
||||||
return path
|
return path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -28,20 +30,15 @@ function M.get_package_path()
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.get_cache_dir()
|
function M.get_cache_dir()
|
||||||
local home = fn.get(fn.environ(), 'HOME')
|
local cache_dir = fn.stdpath('data')
|
||||||
local xdg_cache = fn.get(fn.environ(), 'XDG_CACHE_HOME')
|
|
||||||
|
|
||||||
if xdg_cache == 0 then
|
if luv.fs_access(cache_dir, 'RW') then
|
||||||
xdg_cache = home .. '/.cache'
|
return cache_dir
|
||||||
end
|
|
||||||
|
|
||||||
if luv.fs_access(xdg_cache, 'RW') then
|
|
||||||
return xdg_cache
|
|
||||||
elseif luv.fs_access('/tmp', 'RW') then
|
elseif luv.fs_access('/tmp', 'RW') then
|
||||||
return '/tmp'
|
return '/tmp'
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil, 'Invalid cache rights, $XDG_CACHE_HOME or /tmp should be read/write'
|
return nil, 'Invalid cache rights, '..fn.stdpath('data')..' or /tmp should be read/write'
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Gets a property at path
|
-- Gets a property at path
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue