diff options
Diffstat (limited to 'scripts/ci/install_treesitter_parsers.lua')
| -rw-r--r-- | scripts/ci/install_treesitter_parsers.lua | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/scripts/ci/install_treesitter_parsers.lua b/scripts/ci/install_treesitter_parsers.lua new file mode 100644 index 0000000..6393fd8 --- /dev/null +++ b/scripts/ci/install_treesitter_parsers.lua @@ -0,0 +1,72 @@ +local install_dir = vim.fn.stdpath("data") .. "/site" +local ok_setup, setup_err = pcall(function() + require("nvim-treesitter").setup({ + install_dir = install_dir, + }) +end) + +if not ok_setup then + vim.api.nvim_echo( + { { "Error: " .. tostring(setup_err), "ErrorMsg" } }, + true, + {} + ) + vim.cmd("cq") +end + +local ok_install, install_err = pcall(function() + require("nvim-treesitter").install({ + "c", + "cpp", + "go", + "lua", + "php", + "python", + "typescript", + "javascript", + "java", + "ruby", + "tsx", + "c_sharp", + "vue", + }):wait(300000) +end) + +if not ok_install then + vim.api.nvim_echo({ + { "Error: " .. tostring(install_err), "ErrorMsg" }, + }, true, {}) + vim.cmd("cq") +end + +local required_parsers = { + c = "c.so", + cpp = "cpp.so", + go = "go.so", + lua = "lua.so", + php = "php.so", + python = "python.so", + typescript = "typescript.so", + javascript = "javascript.so", + java = "java.so", + ruby = "ruby.so", + tsx = "tsx.so", + c_sharp = "c_sharp.so", + vue = "vue.so", +} + +for lang, filename in pairs(required_parsers) do + local parser_path = install_dir .. "/parser/" .. filename + if not vim.uv.fs_stat(parser_path) then + vim.api.nvim_echo({ + { + "Error: " + .. lang + .. " parser missing after install: " + .. parser_path, + "ErrorMsg", + }, + }, true, {}) + vim.cmd("cq") + end +end |
