From 842e9587772a34842c360db83155d0ac5770f4a8 Mon Sep 17 00:00:00 2001 From: QuiNzX Date: Sat, 18 Jan 2025 18:28:20 +0100 Subject: [PATCH] use ruff alongside other lsp servers --- configuration.nix | 2 +- modules/plugins/languages/python.nix | 41 +++++++++++++++------------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/configuration.nix b/configuration.nix index 5bd69fa0..babf0589 100644 --- a/configuration.nix +++ b/configuration.nix @@ -62,7 +62,7 @@ isMaximal: { python = { enable = true; format.type = "ruff"; - lsp.server = "ruff"; + lsp.servers = ["ruff" "basedpyright"]; }; typst.enable = isMaximal; rust = { diff --git a/modules/plugins/languages/python.nix b/modules/plugins/languages/python.nix index 56c5dc3a..625c26ab 100644 --- a/modules/plugins/languages/python.nix +++ b/modules/plugins/languages/python.nix @@ -14,7 +14,7 @@ cfg = config.vim.languages.python; - defaultServer = "basedpyright"; + defaultServer = ["basedpyright"]; servers = { pyright = { package = pkgs.pyright; @@ -23,9 +23,9 @@ capabilities = capabilities; on_attach = default_on_attach; cmd = ${ - if isList cfg.lsp.package - then expToLua cfg.lsp.package - else ''{"${cfg.lsp.package}/bin/pyright-langserver", "--stdio"}'' + if isList cfg.lsp.packages.pyright + then expToLua cfg.lsp.packages.pyright + else ''{"${cfg.lsp.packages.pyright}/bin/pyright-langserver", "--stdio"}'' } } ''; @@ -38,9 +38,9 @@ capabilities = capabilities; on_attach = default_on_attach; cmd = ${ - if isList cfg.lsp.package - then expToLua cfg.lsp.package - else ''{"${cfg.lsp.package}/bin/basedpyright-langserver", "--stdio"}'' + if isList cfg.lsp.packages.basedpyright + then expToLua cfg.lsp.packages.basedpyright + else ''{"${cfg.lsp.packages.basedpyright}/bin/basedpyright-langserver", "--stdio"}'' } } ''; @@ -53,9 +53,9 @@ capabilities = capabilities; on_attach = default_on_attach; cmd = ${ - if isList cfg.lsp.package - then expToLua cfg.lsp.package - else ''{"${cfg.lsp.package}/bin/ruff", "server"}'' + if isList cfg.lsp.packages.ruff + then expToLua cfg.lsp.packages.ruff + else ''{"${cfg.lsp.packages.ruff}/bin/ruff", "server"}'' } } ''; @@ -68,9 +68,9 @@ capabilities = capabilities; on_attach = default_on_attach; cmd = ${ - if isList cfg.lsp.package - then expToLua cfg.lsp.package - else ''{"${cfg.lsp.package}/bin/pylsp"}'' + if isList cfg.lsp.packages.pylsp + then expToLua cfg.lsp.packages.pylsp + else ''{"${cfg.lsp.packages}/bin/pylsp"}'' } } ''; @@ -219,17 +219,17 @@ in { lsp = { enable = mkEnableOption "Python LSP support" // {default = config.vim.languages.enableLSP;}; - server = mkOption { + servers = mkOption { description = "Python LSP server to use"; - type = enum (attrNames servers); + type = listOf (enum (attrNames servers)); default = defaultServer; }; - package = mkOption { + packages = mkOption { description = "python LSP server package, or the command to run as a list of strings"; example = ''[lib.getExe pkgs.jdt-language-server "-data" "~/.cache/jdtls/workspace"]''; - type = either package (listOf str); - default = servers.${cfg.lsp.server}.package; + type = lib.types.attrsOf (either package (listOf str)); + default = lib.genAttrs cfg.lsp.servers (name: servers.${name}.package); }; }; @@ -283,7 +283,10 @@ in { (mkIf cfg.lsp.enable { vim.lsp.lspconfig.enable = true; - vim.lsp.lspconfig.sources.python-lsp = servers.${cfg.lsp.server}.lspConfig; + vim.lsp.lspconfig.sources = + lib.genAttrs + cfg.lsp.servers + (name: servers.${name}.lspConfig); }) (mkIf cfg.format.enable {