aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md153
-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
5 files changed, 167 insertions, 76 deletions
diff --git a/README.md b/README.md
index 9d17b08a..9367490b 100644
--- a/README.md
+++ b/README.md
@@ -143,82 +143,83 @@ lsp_installer.settings({
## Available LSPs
-| Language | Server name |
-| ----------------------------------- | ------------------------ |
-| Angular | `angularls` |
-| Ansible | `ansiblels` |
-| Bash | `bashls` |
-| Bicep | `bicep` |
-| C | `ccls` |
-| C | `clangd` |
-| C# | `csharpls` |
-| C# | `omnisharp` |
-| C++ | `ccls` |
-| C++ | `clangd` |
-| CMake | `cmake` |
-| CSS | `cssls` |
-| Clojure | `clojure_lsp` |
-| CodeQL | `codeqlls` |
-| Dart | `dartls` |
-| Deno | `denols` |
-| Diagnostic (general purpose server) | `diagnosticls` |
-| Dlang | `serve_d` |
-| Docker | `dockerls` |
-| Dot | `dotls` |
-| EFM (general purpose server) | `efm` |
-| ESLint [(docs)][eslint] | `eslint` |
-| Elixir | `elixirls` |
-| Elm | `elmls` |
-| Ember | `ember` |
-| Emmet | `emmet_ls` |
-| Erlang | `erlangls` |
-| F# | `fsautocomplete` |
-| Fortran | `fortls` |
-| Go | `gopls` |
-| GraphQL | `graphql` |
-| Groovy | `groovyls` |
-| HTML | `html` |
-| Haskell | `hls` |
-| JSON | `jsonls` |
-| Java | `jdtls` |
-| Jsonnet | `jsonnet_ls` |
-| Kotlin | `kotlin_language_server` |
-| LaTeX | `ltex` |
-| LaTeX | `texlab` |
-| Lua | `sumneko_lua` |
-| OCaml | `ocamlls` |
-| Objective C | `ccls` |
-| PHP | `intelephense` |
-| PHP | `phpactor` |
-| Powershell | `powershell_es` |
-| Prisma | `prismals` |
-| Puppet | `puppet` |
-| PureScript | `purescriptls` |
-| Python | `jedi_language_server` |
-| Python | `pylsp` |
-| Python | `pyright` |
-| ReScript | `rescriptls` |
-| Rome | `rome` |
-| Ruby | `solargraph` |
-| Rust | `rust_analyzer` |
-| SQL | `sqlls` |
-| SQL | `sqls` |
-| Solang Solidity | `solang` |
-| Sorbet | `sorbet` |
-| Sphinx | `esbonio` |
-| Stylelint | `stylelint_lsp` |
-| Svelte | `svelte` |
-| Tailwind CSS | `tailwindcss` |
-| Terraform | `terraformls` |
-| Terraform [(docs)][tflint] | `tflint` |
-| TypeScript [(docs)][tsserver] | `tsserver` |
-| Vala | `vala_ls` |
-| VimL | `vimls` |
-| Vue | `volar` |
-| Vue | `vuels` |
-| XML | `lemminx` |
-| YAML | `yamlls` |
-| Zig | `zls` |
+| Language | Server name |
+| ----------------------------------- | ------------------------- |
+| Angular | `angularls` |
+| Ansible | `ansiblels` |
+| Arduino | `arduino_language_server` |
+| Bash | `bashls` |
+| Bicep | `bicep` |
+| C | `ccls` |
+| C | `clangd` |
+| C# | `csharpls` |
+| C# | `omnisharp` |
+| C++ | `ccls` |
+| C++ | `clangd` |
+| CMake | `cmake` |
+| CSS | `cssls` |
+| Clojure | `clojure_lsp` |
+| CodeQL | `codeqlls` |
+| Dart | `dartls` |
+| Deno | `denols` |
+| Diagnostic (general purpose server) | `diagnosticls` |
+| Dlang | `serve_d` |
+| Docker | `dockerls` |
+| Dot | `dotls` |
+| EFM (general purpose server) | `efm` |
+| ESLint [(docs)][eslint] | `eslint` |
+| Elixir | `elixirls` |
+| Elm | `elmls` |
+| Ember | `ember` |
+| Emmet | `emmet_ls` |
+| Erlang | `erlangls` |
+| F# | `fsautocomplete` |
+| Fortran | `fortls` |
+| Go | `gopls` |
+| GraphQL | `graphql` |
+| Groovy | `groovyls` |
+| HTML | `html` |
+| Haskell | `hls` |
+| JSON | `jsonls` |
+| Java | `jdtls` |
+| Jsonnet | `jsonnet_ls` |
+| Kotlin | `kotlin_language_server` |
+| LaTeX | `ltex` |
+| LaTeX | `texlab` |
+| Lua | `sumneko_lua` |
+| OCaml | `ocamlls` |
+| Objective C | `ccls` |
+| PHP | `intelephense` |
+| PHP | `phpactor` |
+| Powershell | `powershell_es` |
+| Prisma | `prismals` |
+| Puppet | `puppet` |
+| PureScript | `purescriptls` |
+| Python | `jedi_language_server` |
+| Python | `pylsp` |
+| Python | `pyright` |
+| ReScript | `rescriptls` |
+| Rome | `rome` |
+| Ruby | `solargraph` |
+| Rust | `rust_analyzer` |
+| SQL | `sqlls` |
+| SQL | `sqls` |
+| Solang Solidity | `solang` |
+| Sorbet | `sorbet` |
+| Sphinx | `esbonio` |
+| Stylelint | `stylelint_lsp` |
+| Svelte | `svelte` |
+| Tailwind CSS | `tailwindcss` |
+| Terraform | `terraformls` |
+| Terraform [(docs)][tflint] | `tflint` |
+| TypeScript [(docs)][tsserver] | `tsserver` |
+| Vala | `vala_ls` |
+| VimL | `vimls` |
+| Vue | `volar` |
+| Vue | `vuels` |
+| XML | `lemminx` |
+| YAML | `yamlls` |
+| Zig | `zls` |
[eslint]: ./lua/nvim-lsp-installer/servers/eslint/README.md
[tflint]: ./lua/nvim-lsp-installer/servers/tflint/README.md
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",