This commit is contained in:
QuiNz- 2025-04-11 15:10:23 +01:00 committed by GitHub
commit e661d87385
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 41 additions and 16 deletions

View file

@ -190,6 +190,11 @@
- Add [ruff] as a formatter option in `vim.languages.python.format.type`. - Add [ruff] as a formatter option in `vim.languages.python.format.type`.
- Add [cue] support under `vim.languages.cue`. - Add [cue] support under `vim.languages.cue`.
[QuiNzX](https://github.com/QuiNzX):
- Add ruff as lsp alongside other lsp servers in a list as an option. Under
`vim.languages.python.lsp.server`.
[ARCIII](https://github.com/ArmandoCIII): [ARCIII](https://github.com/ArmandoCIII):
[leetcode.nvim]: https://github.com/kawre/leetcode.nvim [leetcode.nvim]: https://github.com/kawre/leetcode.nvim

View file

@ -8,9 +8,10 @@
inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.options) mkEnableOption mkOption literalExpression;
inherit (lib.meta) getExe; inherit (lib.meta) getExe;
inherit (lib.modules) mkIf mkMerge; inherit (lib.modules) mkIf mkMerge;
inherit (lib.lists) isList; inherit (lib.lists) isList toList;
inherit (lib.types) enum either listOf package str bool; inherit (lib.types) enum either listOf package str bool attrsOf;
inherit (lib.nvim.lua) expToLua; inherit (lib.nvim.lua) expToLua;
inherit (lib) genAttrs;
cfg = config.vim.languages.python; cfg = config.vim.languages.python;
@ -23,9 +24,9 @@
capabilities = capabilities; capabilities = capabilities;
on_attach = default_on_attach; on_attach = default_on_attach;
cmd = ${ cmd = ${
if isList cfg.lsp.package if isList cfg.lsp.package.pyright
then expToLua cfg.lsp.package then expToLua cfg.lsp.package.pyright
else ''{"${cfg.lsp.package}/bin/pyright-langserver", "--stdio"}'' else ''{"${cfg.lsp.package.pyright}/bin/pyright-langserver", "--stdio"}''
} }
} }
''; '';
@ -38,9 +39,24 @@
capabilities = capabilities; capabilities = capabilities;
on_attach = default_on_attach; on_attach = default_on_attach;
cmd = ${ cmd = ${
if isList cfg.lsp.package if isList cfg.lsp.package.basedpyright
then expToLua cfg.lsp.package then expToLua cfg.lsp.package.basedpyright
else ''{"${cfg.lsp.package}/bin/basedpyright-langserver", "--stdio"}'' else ''{"${cfg.lsp.package.basedpyright}/bin/basedpyright-langserver", "--stdio"}''
}
}
'';
};
ruff = {
package = pkgs.ruff;
lspConfig = ''
lspconfig.ruff.setup{
capabilities = capabilities;
on_attach = default_on_attach;
cmd = ${
if isList cfg.lsp.package.ruff
then expToLua cfg.lsp.package.ruff
else ''{"${cfg.lsp.package.ruff}/bin/ruff", "server"}''
} }
} }
''; '';
@ -53,9 +69,9 @@
capabilities = capabilities; capabilities = capabilities;
on_attach = default_on_attach; on_attach = default_on_attach;
cmd = ${ cmd = ${
if isList cfg.lsp.package if isList cfg.lsp.package.pylsp
then expToLua cfg.lsp.package then expToLua cfg.lsp.package.pylsp
else ''{"${cfg.lsp.package}/bin/pylsp"}'' else ''{"${cfg.lsp.package.pylsp}/bin/pylsp"}''
} }
} }
''; '';
@ -172,16 +188,20 @@ in {
enable = mkEnableOption "Python LSP support" // {default = config.vim.languages.enableLSP;}; enable = mkEnableOption "Python LSP support" // {default = config.vim.languages.enableLSP;};
server = mkOption { server = mkOption {
description = "Python LSP server to use"; description = "Python LSP server to use either as a single server or a list of servers";
type = enum (attrNames servers); example = ''
server = "basedpyright;
server = ["basedpyright" "ruff"];
'';
type = either (enum (attrNames servers)) (listOf (enum (attrNames servers)));
default = defaultServer; default = defaultServer;
}; };
package = mkOption { package = mkOption {
description = "python LSP server package, or the command to run as a list of strings"; 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"]''; example = ''[lib.getExe pkgs.jdt-language-server "-data" "~/.cache/jdtls/workspace"]'';
type = either package (listOf str); type = attrsOf (either package (listOf str));
default = servers.${cfg.lsp.server}.package; default = genAttrs (toList cfg.lsp.server) (name: servers.${name}.package);
}; };
}; };
@ -235,7 +255,7 @@ in {
(mkIf cfg.lsp.enable { (mkIf cfg.lsp.enable {
vim.lsp.lspconfig.enable = true; vim.lsp.lspconfig.enable = true;
vim.lsp.lspconfig.sources.python-lsp = servers.${cfg.lsp.server}.lspConfig; vim.lsp.lspconfig.sources = genAttrs (toList cfg.lsp.server) (name: servers.${name}.lspConfig);
}) })
(mkIf cfg.format.enable { (mkIf cfg.format.enable {