diff options
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/mason-registry/ccls/common.lua | 47 | ||||
| -rw-r--r-- | lua/mason-registry/ccls/init.lua | 17 | ||||
| -rw-r--r-- | lua/mason-registry/ccls/linux.lua | 73 | ||||
| -rw-r--r-- | lua/mason-registry/ccls/mac.lua | 22 | ||||
| -rw-r--r-- | lua/mason-registry/index.lua | 1 | ||||
| -rw-r--r-- | lua/mason/mappings/language.lua | 5 |
6 files changed, 2 insertions, 163 deletions
diff --git a/lua/mason-registry/ccls/common.lua b/lua/mason-registry/ccls/common.lua deleted file mode 100644 index 7393a0b5..00000000 --- a/lua/mason-registry/ccls/common.lua +++ /dev/null @@ -1,47 +0,0 @@ -local path = require "mason-core.path" -local platform = require "mason-core.platform" -local installer = require "mason-core.installer" -local git = require "mason-core.managers.git" -local github = require "mason-core.managers.github" -local Optional = require "mason-core.optional" - ----@async ----@param opts {llvm_dir: string} -return function(opts) - local ctx = installer.context() - local clang_resource_dir = path.concat { ctx.package:get_install_path(), "clang-resource" } - local install_prefix = ctx.cwd:get() - - local source = github.tag { repo = "MaskRay/ccls" } - source.with_receipt() - - ctx.fs:mkdir "ccls-git" - ctx:chdir("ccls-git", function() - git.clone { "https://github.com/MaskRay/ccls", recursive = true, version = Optional.of(source.tag) } - ctx.spawn.cmake { - "-DCMAKE_BUILD_TYPE=Release", - "-DUSE_SYSTEM_RAPIDJSON=OFF", - "-DCMAKE_FIND_FRAMEWORK=LAST", - "-Wno-dev", - ("-DCMAKE_INSTALL_PREFIX=%s"):format(install_prefix), - Optional.of_nilable(opts.llvm_dir) - :map(function(llvm_dir) - return { - ("-DCMAKE_PREFIX_PATH=%s"):format(llvm_dir), - -- On Mac we use Homebrew LLVM which will persist after installation. - -- On Linux, and when a custom llvm_dir is provided, its clang resource dir will be the only - -- artifact persisted after installation, as the locally installed llvm installation will be - -- cleaned up after compilation. - not platform.is_mac and ("-DCLANG_RESOURCE_DIR=%s"):format(clang_resource_dir) or vim.NIL, - } - end) - :or_else(vim.NIL), - platform.is_mac and "-DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk" or vim.NIL, - } - - ctx.spawn.make { "install" } - end) - ctx.fs:rmrf "ccls-git" - - ctx:link_bin("ccls", path.concat { "bin", "ccls" }) -end diff --git a/lua/mason-registry/ccls/init.lua b/lua/mason-registry/ccls/init.lua deleted file mode 100644 index cacbebb5..00000000 --- a/lua/mason-registry/ccls/init.lua +++ /dev/null @@ -1,17 +0,0 @@ -local Pkg = require "mason-core.package" -local platform = require "mason-core.platform" - -return Pkg.new { - name = "ccls", - desc = [[C/C++/ObjC language server supporting cross references, hierarchies, completion and semantic highlighting]], - homepage = "https://github.com/MaskRay/ccls", - languages = { Pkg.Lang.C, Pkg.Lang["C++"], Pkg.Lang["Obective-C"] }, - categories = { Pkg.Cat.LSP }, - ---@async - install = function() - platform.when { - mac = require "mason-registry.ccls.mac", - linux = require "mason-registry.ccls.linux", - } - end, -} diff --git a/lua/mason-registry/ccls/linux.lua b/lua/mason-registry/ccls/linux.lua deleted file mode 100644 index fa735266..00000000 --- a/lua/mason-registry/ccls/linux.lua +++ /dev/null @@ -1,73 +0,0 @@ -local path = require "mason-core.path" -local platform = require "mason-core.platform" -local installer = require "mason-core.installer" -local github = require "mason-core.managers.github" -local _ = require "mason-core.functional" -local Result = require "mason-core.result" -local Optional = require "mason-core.optional" - -local ccls_installer = require "mason-registry.ccls.common" - -local coalesce, when = _.coalesce, _.when - ----@param release string -local function normalize_llvm_release(release) - -- Strip the "llvmorg-" prefix from tags (llvm releases tags like llvmorg-13.0.0) - local normalized_release = release:gsub("^llvmorg%-", "") - return normalized_release -end - ----@async -local function llvm_installer() - local ctx = installer.context() - local os_dist = platform.os_distribution() - - local asset_name = coalesce( - when( - platform.arch == "x64", - coalesce( - when( - os_dist.id == "ubuntu" and os_dist.version.major >= 20, - "clang+llvm-%s-x86_64-linux-gnu-ubuntu-20.04" - ), - when( - os_dist.id == "ubuntu" and os_dist.version.major >= 16, - "clang+llvm-%s-x86_64-linux-gnu-ubuntu-16.04" - ) - ) - ), - when(platform.arch == "arm64", "clang+llvm-%s-aarch64-linux-gnu"), - when(platform.arch == "armv7", "clang+llvm-%s-armv7a-linux-gnueabihf") - ) - - local source = github.untarxz_release_file { - repo = "llvm/llvm-project", - version = Optional.of "llvmorg-13.0.0", - asset_file = function(release) - local normalized_release = normalize_llvm_release(release) - return asset_name and ("%s.tar.xz"):format(asset_name):format(normalized_release) - end, - } - - ctx.fs:rename(asset_name:format(normalize_llvm_release(source.release)), "llvm") - -- We move the clang headers out, because they need to be persisted - ctx.fs:rename(path.concat { "llvm", "lib", "clang", normalize_llvm_release(source.release) }, "clang-resource") - - return path.concat { ctx.cwd:get(), "llvm" } -end - ----@async -return function() - local ctx = installer.context() - Result.run_catching(llvm_installer) - :map(function(llvm_dir) - ccls_installer { llvm_dir = llvm_dir } - ctx.fs:rmrf "llvm" - end) - :recover(function() - pcall(function() - ctx.fs:rmrf "llvm" - end) - ccls_installer {} - end) -end diff --git a/lua/mason-registry/ccls/mac.lua b/lua/mason-registry/ccls/mac.lua deleted file mode 100644 index bd2efe0a..00000000 --- a/lua/mason-registry/ccls/mac.lua +++ /dev/null @@ -1,22 +0,0 @@ -local path = require "mason-core.path" -local platform = require "mason-core.platform" -local installer = require "mason-core.installer" -local fs = require "mason-core.fs" - -local ccls_installer = require "mason-registry.ccls.common" - ----@async -return function() - local ctx = installer.context() - local homebrew_prefix = platform.get_homebrew_prefix():get_or_throw() - local llvm_dir = path.concat { homebrew_prefix, "opt", "llvm", "lib", "cmake" } - if not fs.async.dir_exists(llvm_dir) then - ctx.stdio_sink.stderr( - ( - "LLVM does not seem to be installed on this system (looked in %q). Please install LLVM via Homebrew:\n $ brew install llvm\n" - ):format(llvm_dir) - ) - error "Unable to find LLVM." - end - ccls_installer { llvm_dir = llvm_dir } -end diff --git a/lua/mason-registry/index.lua b/lua/mason-registry/index.lua index 799f4dad..c6886c01 100644 --- a/lua/mason-registry/index.lua +++ b/lua/mason-registry/index.lua @@ -13,7 +13,6 @@ return { ["bicep-lsp"] = "mason-registry.bicep-lsp", black = "mason-registry.black", ["bsl-language-server"] = "mason-registry.bsl-language-server", - ccls = "mason-registry.ccls", ["chrome-debug-adapter"] = "mason-registry.chrome-debug-adapter", clangd = "mason-registry.clangd", ["clarity-lsp"] = "mason-registry.clarity-lsp", diff --git a/lua/mason/mappings/language.lua b/lua/mason/mappings/language.lua index b94d2b33..20325c1c 100644 --- a/lua/mason/mappings/language.lua +++ b/lua/mason/mappings/language.lua @@ -13,9 +13,9 @@ return { bash = { "bash-language-server", "shellcheck", "shfmt" }, beancount = { "beancount-language-server" }, bicep = { "bicep-lsp" }, - c = { "ccls", "clangd", "codelldb", "cpplint", "cpptools" }, + c = { "clangd", "codelldb", "cpplint", "cpptools" }, ["c#"] = { "csharp-language-server", "netcoredbg", "omnisharp-roslyn" }, - ["c++"] = { "ccls", "clangd", "codelldb", "cpplint", "cpptools" }, + ["c++"] = { "clangd", "codelldb", "cpplint", "cpptools" }, clarity = { "clarity-lsp" }, clojure = { "clojure-lsp" }, clojurescript = { "clojure-lsp" }, @@ -62,7 +62,6 @@ return { nickel = { "nickel-lang-lsp" }, nim = { "nimlsp" }, nix = { "rnix-lsp" }, - ["obective-c"] = { "ccls" }, ocaml = { "ocaml-lsp" }, onescript = { "bsl-language-server" }, opencl = { "opencl-language-server" }, |
