aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorChad Condon <thetic@users.noreply.github.com>2021-12-06 07:03:58 -0800
committerGitHub <noreply@github.com>2021-12-06 16:03:58 +0100
commit17d7c3294b56b9d138ed8b55bd773123f3d9b92a (patch)
tree335e965fc4a559ef2e5eebdd44a29919f82a93da /lua
parentfeat: use vim.ui.select to prompt which server to install (diff)
downloadmason-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')
-rw-r--r--lua/nvim-lsp-installer/_generated/filetype_map.lua1
-rw-r--r--lua/nvim-lsp-installer/_generated/metadata.lua3
-rw-r--r--lua/nvim-lsp-installer/servers/arduino_language_server/init.lua85
-rw-r--r--lua/nvim-lsp-installer/servers/init.lua1
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",