From 13819623265686706b36308ede8d107e74ed1b37 Mon Sep 17 00:00:00 2001 From: sjcobb Date: Tue, 3 Jun 2025 00:03:28 +0100 Subject: [PATCH] convert clojure module --- modules/plugins/languages/clojure.nix | 36 +++++++++++++++------------ 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/modules/plugins/languages/clojure.nix b/modules/plugins/languages/clojure.nix index 0b932708..cba3bcf7 100644 --- a/modules/plugins/languages/clojure.nix +++ b/modules/plugins/languages/clojure.nix @@ -13,6 +13,16 @@ inherit (lib.nvim.lua) expToLua; cfg = config.vim.languages.clojure; + + defaultServers = ["clojure-lsp"]; + servers = { + clojure-lsp = { + enable = true; + cmd = [(getExe pkgs.clojure-lsp)]; + filetypes = ["clojure" "edn"]; + root_markers = ["project.clj" "deps.edn" "build.boot" "shadow-cljs.edn" ".git" "bb.edn"]; + }; + }; in { options.vim.languages.clojure = { enable = mkEnableOption "Clojure language support"; @@ -24,28 +34,22 @@ in { lsp = { enable = mkEnableOption "Clojure LSP support" // {default = config.vim.lsp.enable;}; - package = mkOption { - type = either package (listOf str); - default = pkgs.clojure-lsp; - description = "Clojure LSP"; + servers = mkOption { + description = "Clojure LSP server to use"; + type = listOf (enum (attrNames servers)); + default = defaultServers; }; }; }; config = mkIf cfg.enable (mkMerge [ (mkIf cfg.lsp.enable { - vim.lsp.lspconfig.enable = true; - vim.lsp.lspconfig.sources.clojure-lsp = '' - lspconfig.clojure_lsp.setup { - capabilities = capabilities; - on_attach = default_on_attach; - cmd = ${ - if isList cfg.lsp.package - then expToLua cfg.lsp.package - else ''{"${getExe cfg.lsp.package}"}'' - }; - } - ''; + vim.lsp.servers = + mapListToAttrs (n: { + name = n; + value = servers.${n}; + }) + cfg.lsp.servers; }) (mkIf cfg.treesitter.enable {