diff options
| author | Harry Tran <huydtran19@gmail.com> | 2022-02-22 08:25:25 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-22 14:25:25 +0100 |
| commit | 43661e1485311102cabfb3afcd35cce54bae009f (patch) | |
| tree | 4d4b0be62a789db22cf40755b46529863af9982c /lua | |
| parent | run autogen_metadata.lua (diff) | |
| download | mason-43661e1485311102cabfb3afcd35cce54bae009f.tar mason-43661e1485311102cabfb3afcd35cce54bae009f.tar.gz mason-43661e1485311102cabfb3afcd35cce54bae009f.tar.bz2 mason-43661e1485311102cabfb3afcd35cce54bae009f.tar.lz mason-43661e1485311102cabfb3afcd35cce54bae009f.tar.xz mason-43661e1485311102cabfb3afcd35cce54bae009f.tar.zst mason-43661e1485311102cabfb3afcd35cce54bae009f.zip | |
add ocamllsp (#498)
Co-authored-by: William Boman <william@redwill.se>
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/nvim-lsp-installer/_generated/filetype_map.lua | 7 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/_generated/metadata.lua | 3 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/core/receipt.lua | 2 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/installers/opam.lua | 53 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/jobs/outdated-servers/init.lua | 1 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/init.lua | 1 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/ocamlls/init.lua | 4 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/ocamllsp/init.lua | 15 |
8 files changed, 84 insertions, 2 deletions
diff --git a/lua/nvim-lsp-installer/_generated/filetype_map.lua b/lua/nvim-lsp-installer/_generated/filetype_map.lua index 29740a93..fe21adbd 100644 --- a/lua/nvim-lsp-installer/_generated/filetype_map.lua +++ b/lua/nvim-lsp-installer/_generated/filetype_map.lua @@ -86,7 +86,10 @@ return { objcpp = { "ccls", "clangd" }, ["objective-c"] = { "sourcekit" }, ["objective-cpp"] = { "sourcekit" }, - ocaml = { "ocamlls" }, + ocaml = { "ocamlls", "ocamllsp" }, + ["ocaml.interface"] = { "ocamllsp" }, + ["ocaml.menhir"] = { "ocamllsp" }, + ["ocaml.ocamllex"] = { "ocamllsp" }, opencl = { "opencl_ls" }, org = { "ltex" }, os = { "bsl_ls" }, @@ -101,7 +104,7 @@ return { ql = { "codeqlls" }, r = { "r_language_server" }, razor = { "tailwindcss" }, - reason = { "ocamlls", "tailwindcss" }, + reason = { "ocamlls", "ocamllsp", "tailwindcss" }, rescript = { "rescriptls", "tailwindcss" }, rmd = { "r_language_server" }, rnoweb = { "ltex" }, diff --git a/lua/nvim-lsp-installer/_generated/metadata.lua b/lua/nvim-lsp-installer/_generated/metadata.lua index 5a263281..83e52353 100644 --- a/lua/nvim-lsp-installer/_generated/metadata.lua +++ b/lua/nvim-lsp-installer/_generated/metadata.lua @@ -172,6 +172,9 @@ return { ocamlls = { filetypes = { "ocaml", "reason" } }, + ocamllsp = { + filetypes = { "ocaml", "ocaml.menhir", "ocaml.interface", "ocaml.ocamllex", "reason" } + }, omnisharp = { filetypes = { "cs", "vb" } }, diff --git a/lua/nvim-lsp-installer/core/receipt.lua b/lua/nvim-lsp-installer/core/receipt.lua index 0c631c27..21600eae 100644 --- a/lua/nvim-lsp-installer/core/receipt.lua +++ b/lua/nvim-lsp-installer/core/receipt.lua @@ -10,6 +10,7 @@ local M = {} ---| '"gem"' ---| '"go"' ---| '"cargo"' +---| '"opam"' ---| '"dotnet"' ---| '"r_package"' ---| '"unmanaged"' @@ -120,6 +121,7 @@ InstallReceiptBuilder.dotnet = package_source "dotnet" InstallReceiptBuilder.cargo = package_source "cargo" InstallReceiptBuilder.composer = package_source "composer" InstallReceiptBuilder.r_package = package_source "r_package" +InstallReceiptBuilder.opam = package_source "opam" InstallReceiptBuilder.unmanaged = { type = "unmanaged" } diff --git a/lua/nvim-lsp-installer/installers/opam.lua b/lua/nvim-lsp-installer/installers/opam.lua new file mode 100644 index 00000000..a161028a --- /dev/null +++ b/lua/nvim-lsp-installer/installers/opam.lua @@ -0,0 +1,53 @@ +local std = require "nvim-lsp-installer.installers.std" +local installers = require "nvim-lsp-installer.installers" +local process = require "nvim-lsp-installer.process" +local path = require "nvim-lsp-installer.path" +local Data = require "nvim-lsp-installer.data" + +local list_copy = Data.list_copy + +local M = {} + +---@param packages string[] The OPAM packages to install. The first item in this list will be the recipient of the server version, should the user request a specific one. +function M.packages(packages) + return installers.pipe { + std.ensure_executables { + { "opam", "opam was not found in path, refer to https://opam.ocaml.org/doc/Install.html" }, + }, + ---@type ServerInstallerFunction + function(_, callback, ctx) + local pkgs = list_copy(packages) + + ctx.receipt:with_primary_source(ctx.receipt.opam(pkgs[1])) + for i = 2, #pkgs do + ctx.receipt:with_secondary_source(ctx.receipt.opam(pkgs[i])) + end + + if ctx.requested_server_version then + pkgs[1] = ("%s.%s"):format(pkgs[1], ctx.requested_server_version) + end + + local install_args = { + "install", + ("--destdir=%s"):format(ctx.install_dir), + "--yes", + "--verbose", + } + vim.list_extend(install_args, pkgs) + + process.spawn("opam", { + args = install_args, + cwd = ctx.install_dir, + stdio_sink = ctx.stdio_sink, + }, callback) + end, + } +end + +function M.env(root_dir) + return { + PATH = process.extend_path { path.concat { root_dir, "bin" } }, + } +end + +return M diff --git a/lua/nvim-lsp-installer/jobs/outdated-servers/init.lua b/lua/nvim-lsp-installer/jobs/outdated-servers/init.lua index e51fd44a..b892e847 100644 --- a/lua/nvim-lsp-installer/jobs/outdated-servers/init.lua +++ b/lua/nvim-lsp-installer/jobs/outdated-servers/init.lua @@ -38,6 +38,7 @@ local checkers = { ["git"] = git_check, ["github_release_file"] = github_release_file_check, ["github_tag"] = github_tag_check, + ["opam"] = noop, } local pending_servers = {} diff --git a/lua/nvim-lsp-installer/servers/init.lua b/lua/nvim-lsp-installer/servers/init.lua index 2e5d4278..d69db612 100644 --- a/lua/nvim-lsp-installer/servers/init.lua +++ b/lua/nvim-lsp-installer/servers/init.lua @@ -88,6 +88,7 @@ local CORE_SERVERS = Data.set_of { "nickel_ls", "nimls", "ocamlls", + "ocamllsp", "omnisharp", "opencl_ls", "phpactor", diff --git a/lua/nvim-lsp-installer/servers/ocamlls/init.lua b/lua/nvim-lsp-installer/servers/ocamlls/init.lua index fc86d267..80361b4c 100644 --- a/lua/nvim-lsp-installer/servers/ocamlls/init.lua +++ b/lua/nvim-lsp-installer/servers/ocamlls/init.lua @@ -5,6 +5,10 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + deprecated = { + message = "ocamlls is deprecated, use ocamllsp instead.", + replace_with = "ocamllsp", + }, homepage = "https://github.com/ocaml-lsp/ocaml-language-server", languages = { "ocaml" }, installer = npm.packages { "ocaml-language-server" }, diff --git a/lua/nvim-lsp-installer/servers/ocamllsp/init.lua b/lua/nvim-lsp-installer/servers/ocamllsp/init.lua new file mode 100644 index 00000000..73b6bab8 --- /dev/null +++ b/lua/nvim-lsp-installer/servers/ocamllsp/init.lua @@ -0,0 +1,15 @@ +local server = require "nvim-lsp-installer.server" +local opam = require "nvim-lsp-installer.installers.opam" + +return function(name, root_dir) + return server.Server:new { + name = name, + root_dir = root_dir, + homepage = "https://github.com/ocaml/ocaml-lsp", + languages = { "ocaml" }, + installer = opam.packages { "ocaml-lsp-server" }, + default_options = { + cmd_env = opam.env(root_dir), + }, + } +end |
