diff options
| -rw-r--r-- | README.md | 153 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/_generated/filetype_map.lua | 1 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/_generated/metadata.lua | 3 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/arduino_language_server/init.lua | 85 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/init.lua | 1 |
5 files changed, 167 insertions, 76 deletions
@@ -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", |
