diff options
| author | Chad Condon <thetic@users.noreply.github.com> | 2021-12-06 07:03:58 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-06 16:03:58 +0100 |
| commit | 17d7c3294b56b9d138ed8b55bd773123f3d9b92a (patch) | |
| tree | 335e965fc4a559ef2e5eebdd44a29919f82a93da /lua | |
| parent | feat: use vim.ui.select to prompt which server to install (diff) | |
| download | mason-17d7c3294b56b9d138ed8b55bd773123f3d9b92a.tar mason-17d7c3294b56b9d138ed8b55bd773123f3d9b92a.tar.gz mason-17d7c3294b56b9d138ed8b55bd773123f3d9b92a.tar.bz2 mason-17d7c3294b56b9d138ed8b55bd773123f3d9b92a.tar.lz mason-17d7c3294b56b9d138ed8b55bd773123f3d9b92a.tar.xz mason-17d7c3294b56b9d138ed8b55bd773123f3d9b92a.tar.zst mason-17d7c3294b56b9d138ed8b55bd773123f3d9b92a.zip | |
Add arduino-language-server support (#298)
Diffstat (limited to 'lua')
4 files changed, 90 insertions, 0 deletions
diff --git a/lua/nvim-lsp-installer/_generated/filetype_map.lua b/lua/nvim-lsp-installer/_generated/filetype_map.lua index 3ca0be4a..b88bc2a8 100644 --- a/lua/nvim-lsp-installer/_generated/filetype_map.lua +++ b/lua/nvim-lsp-installer/_generated/filetype_map.lua @@ -1,6 +1,7 @@ -- THIS FILE IS GENERATED. DO NOT EDIT MANUALLY. -- stylua: ignore start return { + arduino = { "arduino_language_server" }, aspnetcorerazor = { "tailwindcss" }, astro = { "tailwindcss" }, ["astro-markdown"] = { "tailwindcss" }, diff --git a/lua/nvim-lsp-installer/_generated/metadata.lua b/lua/nvim-lsp-installer/_generated/metadata.lua index 9a0f039f..ef766355 100644 --- a/lua/nvim-lsp-installer/_generated/metadata.lua +++ b/lua/nvim-lsp-installer/_generated/metadata.lua @@ -7,6 +7,9 @@ return { ansiblels = { filetypes = { "yaml", "yaml.ansible" } }, + arduino_language_server = { + filetypes = { "arduino" } + }, bashls = { filetypes = { "sh" } }, diff --git a/lua/nvim-lsp-installer/servers/arduino_language_server/init.lua b/lua/nvim-lsp-installer/servers/arduino_language_server/init.lua new file mode 100644 index 00000000..e0c13626 --- /dev/null +++ b/lua/nvim-lsp-installer/servers/arduino_language_server/init.lua @@ -0,0 +1,85 @@ +local path = require "nvim-lsp-installer.path" +local std = require "nvim-lsp-installer.installers.std" +local installers = require "nvim-lsp-installer.installers" +local server = require "nvim-lsp-installer.server" +local go = require "nvim-lsp-installer.installers.go" +local process = require "nvim-lsp-installer.process" +local platform = require "nvim-lsp-installer.platform" +local context = require "nvim-lsp-installer.installers.context" +local Data = require "nvim-lsp-installer.data" + +local coalesce, when = Data.coalesce, Data.when + +return function(name, root_dir) + local arduino_cli_installer = installers.branch_context { + context.set_working_dir "arduino-cli", + context.set(function(ctx) + -- The user's requested version should not apply to the CLI. + ctx.requested_server_version = nil + end), + context.use_github_release_file("arduino/arduino-cli", function(version) + local target_file = coalesce( + when(platform.is_mac, "arduino-cli_%s_macOS_64bit.tar.gz"), + when( + platform.is_linux, + coalesce( + when(platform.arch == "x64", "arduino-cli_%s_Linux_64bit.tar.gz"), + when(platform.arch == "x86", "arduino-cli_%s_Linux_32bit.tar.gz"), + when(platform.arch == "arm64", "arduino-cli_%s_Linux_ARM64.tar.gz"), + when(platform.arch == "armv6", "arduino-cli_%s_Linux_ARMv6.tar.gz"), + when(platform.arch == "armv7", "arduino-cli_%s_Linux_ARMv7.tar.gz") + ) + ), + when( + platform.is_win, + coalesce( + when(platform.arch == "x64", "arduino-cli_%s_Windows_64bit.zip"), + when(platform.arch == "x86", "arduino-cli_%s_Windows_32bit.zip") + ) + ) + ) + return target_file and target_file:format(version) + end), + context.capture(function(ctx) + if platform.is_win then + return std.unzip_remote(ctx.github_release_file, "arduino-cli.exe") + else + return std.untargz_remote(ctx.github_release_file) + end + end), + std.chmod("+x", { "arduino-cli" }), + ---@type ServerInstallerFunction + function(_, callback, ctx) + process.spawn(path.concat { ctx.install_dir, "arduino-cli" }, { + args = { "config", "init", "--dest-file", "arduino-cli.yaml", "--overwrite" }, + cwd = ctx.install_dir, + stdio_sink = ctx.stdio_sink, + }, callback) + end, + } + + local arduino_language_server_installer = installers.branch_context { + context.set_working_dir "arduino-language-server", + go.packages { "github.com/arduino/arduino-language-server" }, + } + + return server.Server:new { + name = name, + root_dir = root_dir, + homepage = "https://github.com/arduino/arduino-language-server", + languages = { "arduino" }, + installer = { + arduino_cli_installer, + arduino_language_server_installer, + }, + default_options = { + cmd = { + go.executable(path.concat { root_dir, "arduino-language-server" }, "arduino-language-server"), + "-cli", + path.concat { root_dir, "arduino-cli", platform.is_win and "arduino-cli.exe" or "arduino-cli" }, + "-cli-config", + path.concat { root_dir, "arduino-cli", "arduino-cli.yaml" }, + }, + }, + } +end diff --git a/lua/nvim-lsp-installer/servers/init.lua b/lua/nvim-lsp-installer/servers/init.lua index 0f66d64c..f92b7ade 100644 --- a/lua/nvim-lsp-installer/servers/init.lua +++ b/lua/nvim-lsp-installer/servers/init.lua @@ -33,6 +33,7 @@ local INSTALL_DIRS = { local CORE_SERVERS = Data.set_of { "angularls", "ansiblels", + "arduino_language_server", "bashls", "bicep", "ccls", |
