mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-11-04 20:52:21 +00:00
Compare commits
No commits in common. "11bb5982c5aae221a6f5e7c9643150810e8bf29a" and "36146ca31df8139861f6a15413da4ab73d580f3b" have entirely different histories.
11bb5982c5
...
36146ca31d
2 changed files with 79 additions and 147 deletions
|
|
@ -8,114 +8,57 @@
|
||||||
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.types) enum listOf package str bool;
|
inherit (lib.lists) isList;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.types) enum either listOf package str bool;
|
||||||
inherit (lib.generators) mkLuaInline;
|
inherit (lib.nvim.lua) expToLua;
|
||||||
inherit (lib.nvim.dag) entryBefore;
|
|
||||||
|
|
||||||
cfg = config.vim.languages.python;
|
cfg = config.vim.languages.python;
|
||||||
|
|
||||||
defaultServers = ["basedpyright"];
|
defaultServer = "basedpyright";
|
||||||
servers = {
|
servers = {
|
||||||
pyright = {
|
pyright = {
|
||||||
enable = true;
|
package = pkgs.pyright;
|
||||||
cmd = [(getExe pkgs.pyright) "--stdio"];
|
lspConfig = ''
|
||||||
filetypes = ["python"];
|
lspconfig.pyright.setup{
|
||||||
root_markers = [
|
capabilities = capabilities;
|
||||||
"pyproject.toml"
|
on_attach = default_on_attach;
|
||||||
"setup.py"
|
cmd = ${
|
||||||
"setup.cfg"
|
if isList cfg.lsp.package
|
||||||
"requirements.txt"
|
then expToLua cfg.lsp.package
|
||||||
"Pipfile"
|
else ''{"${cfg.lsp.package}/bin/pyright-langserver", "--stdio"}''
|
||||||
"pyrightconfig.json"
|
}
|
||||||
".git"
|
}
|
||||||
];
|
|
||||||
settings = {
|
|
||||||
python = {
|
|
||||||
analysis = {
|
|
||||||
autoSearchPaths = true;
|
|
||||||
useLibraryCodeForTypes = true;
|
|
||||||
diagnosticMode = "openFilesOnly";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
on_attach = mkLuaInline ''
|
|
||||||
function(client, bufnr)
|
|
||||||
vim.api.nvim_buf_create_user_command(bufnr, 'LspPyrightOrganizeImports', function()
|
|
||||||
client:exec_cmd({
|
|
||||||
command = 'pyright.organizeimports',
|
|
||||||
arguments = { vim.uri_from_bufnr(bufnr) },
|
|
||||||
})
|
|
||||||
end, {
|
|
||||||
desc = 'Organize Imports',
|
|
||||||
})
|
|
||||||
vim.api.nvim_buf_create_user_command(bufnr, 'LspPyrightSetPythonPath', function(opts)
|
|
||||||
set_python_path('pyright', opts.args)
|
|
||||||
end, {
|
|
||||||
desc = 'Reconfigure pyright with the provided python path',
|
|
||||||
nargs = 1,
|
|
||||||
complete = 'file',
|
|
||||||
})
|
|
||||||
end
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
basedpyright = {
|
basedpyright = {
|
||||||
enable = true;
|
package = pkgs.basedpyright;
|
||||||
cmd = [(getExe pkgs.basedpyright) "--stdio"];
|
lspConfig = ''
|
||||||
filetypes = ["python"];
|
lspconfig.basedpyright.setup{
|
||||||
root_markers = [
|
capabilities = capabilities;
|
||||||
"pyproject.toml"
|
on_attach = default_on_attach;
|
||||||
"setup.py"
|
cmd = ${
|
||||||
"setup.cfg"
|
if isList cfg.lsp.package
|
||||||
"requirements.txt"
|
then expToLua cfg.lsp.package
|
||||||
"Pipfile"
|
else ''{"${cfg.lsp.package}/bin/basedpyright-langserver", "--stdio"}''
|
||||||
"pyrightconfig.json"
|
}
|
||||||
".git"
|
}
|
||||||
];
|
|
||||||
settings = {
|
|
||||||
basedpyright = {
|
|
||||||
analysis = {
|
|
||||||
autoSearchPaths = true;
|
|
||||||
useLibraryCodeForTypes = true;
|
|
||||||
diagnosticMode = "openFilesOnly";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
on_attach = mkLuaInline ''
|
|
||||||
function(client, bufnr)
|
|
||||||
vim.api.nvim_buf_create_user_command(bufnr, 'LspPyrightOrganizeImports', function()
|
|
||||||
client:exec_cmd({
|
|
||||||
command = 'basedpyright.organizeimports',
|
|
||||||
arguments = { vim.uri_from_bufnr(bufnr) },
|
|
||||||
})
|
|
||||||
end, {
|
|
||||||
desc = 'Organize Imports',
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.api.nvim_buf_create_user_command(bufnr, 'LspPyrightSetPythonPath', function(opts)
|
|
||||||
set_python_path('basedpyright', opts.args)
|
|
||||||
end, {
|
|
||||||
desc = 'Reconfigure basedpyright with the provided python path',
|
|
||||||
nargs = 1,
|
|
||||||
complete = 'file',
|
|
||||||
})
|
|
||||||
end
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
python-lsp-server = {
|
python-lsp-server = {
|
||||||
enable = true;
|
package = pkgs.python3Packages.python-lsp-server;
|
||||||
cmd = [(getExe pkgs.python3Packages.python-lsp-server)];
|
lspConfig = ''
|
||||||
filetypes = ["python"];
|
lspconfig.pylsp.setup{
|
||||||
root_markers = [
|
capabilities = capabilities;
|
||||||
"pyproject.toml"
|
on_attach = default_on_attach;
|
||||||
"setup.py"
|
cmd = ${
|
||||||
"setup.cfg"
|
if isList cfg.lsp.package
|
||||||
"requirements.txt"
|
then expToLua cfg.lsp.package
|
||||||
"Pipfile"
|
else ''{"${cfg.lsp.package}/bin/pylsp"}''
|
||||||
".git"
|
}
|
||||||
];
|
}
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -228,10 +171,17 @@ in {
|
||||||
lsp = {
|
lsp = {
|
||||||
enable = mkEnableOption "Python LSP support" // {default = config.vim.lsp.enable;};
|
enable = mkEnableOption "Python LSP support" // {default = config.vim.lsp.enable;};
|
||||||
|
|
||||||
servers = mkOption {
|
server = mkOption {
|
||||||
description = "Python LSP server to use";
|
description = "Python LSP server to use";
|
||||||
type = listOf (enum (attrNames servers));
|
type = enum (attrNames servers);
|
||||||
default = defaultServers;
|
default = defaultServer;
|
||||||
|
};
|
||||||
|
|
||||||
|
package = 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;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -284,34 +234,8 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.lsp.enable {
|
(mkIf cfg.lsp.enable {
|
||||||
vim.luaConfigRC.python-util =
|
vim.lsp.lspconfig.enable = true;
|
||||||
entryBefore ["lsp-servers"]
|
vim.lsp.lspconfig.sources.python-lsp = servers.${cfg.lsp.server}.lspConfig;
|
||||||
/*
|
|
||||||
lua
|
|
||||||
*/
|
|
||||||
''
|
|
||||||
local function set_python_path(server_name, path)
|
|
||||||
local clients = vim.lsp.get_clients {
|
|
||||||
bufnr = vim.api.nvim_get_current_buf(),
|
|
||||||
name = server_name,
|
|
||||||
}
|
|
||||||
for _, client in ipairs(clients) do
|
|
||||||
if client.settings then
|
|
||||||
client.settings.python = vim.tbl_deep_extend('force', client.settings.python or {}, { pythonPath = path })
|
|
||||||
else
|
|
||||||
client.config.settings = vim.tbl_deep_extend('force', client.config.settings, { python = { pythonPath = path } })
|
|
||||||
end
|
|
||||||
client.notify('workspace/didChangeConfiguration', { settings = nil })
|
|
||||||
end
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
|
|
||||||
vim.lsp.servers =
|
|
||||||
mapListToAttrs (n: {
|
|
||||||
name = n;
|
|
||||||
value = servers.${n};
|
|
||||||
})
|
|
||||||
cfg.lsp.servers;
|
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.format.enable {
|
(mkIf cfg.format.enable {
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,10 @@
|
||||||
inherit (builtins) attrNames;
|
inherit (builtins) attrNames;
|
||||||
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.types) enum listOf package;
|
inherit (lib.lists) isList;
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.types) enum either listOf package str;
|
||||||
|
inherit (lib.nvim.lua) expToLua;
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
inherit (lib.nvim.types) mkGrammarOption;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
|
||||||
inherit (lib.generators) mkLuaInline;
|
|
||||||
|
|
||||||
cfg = config.vim.languages.r;
|
cfg = config.vim.languages.r;
|
||||||
|
|
||||||
|
|
@ -51,16 +50,22 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultServers = ["r_language_server"];
|
defaultServer = "r_language_server";
|
||||||
servers = {
|
servers = {
|
||||||
r_language_server = {
|
r_language_server = {
|
||||||
enable = true;
|
package = pkgs.writeShellScriptBin "r_lsp" ''
|
||||||
cmd = [(getExe r-with-languageserver) "--no-echo" "-e" "languageserver::run()"];
|
${r-with-languageserver}/bin/R --slave -e "languageserver::run()"
|
||||||
filetypes = ["r" "rmd" "quarto"];
|
'';
|
||||||
root_dir = mkLuaInline ''
|
lspConfig = ''
|
||||||
function(bufnr, on_dir)
|
lspconfig.r_language_server.setup{
|
||||||
on_dir(vim.fs.root(bufnr, '.git') or vim.uv.os_homedir())
|
capabilities = capabilities;
|
||||||
end
|
on_attach = default_on_attach;
|
||||||
|
cmd = ${
|
||||||
|
if isList cfg.lsp.package
|
||||||
|
then expToLua cfg.lsp.package
|
||||||
|
else ''{"${lib.getExe cfg.lsp.package}"}''
|
||||||
|
}
|
||||||
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -76,10 +81,17 @@ in {
|
||||||
lsp = {
|
lsp = {
|
||||||
enable = mkEnableOption "R LSP support" // {default = config.vim.lsp.enable;};
|
enable = mkEnableOption "R LSP support" // {default = config.vim.lsp.enable;};
|
||||||
|
|
||||||
servers = mkOption {
|
server = mkOption {
|
||||||
description = "R LSP server to use";
|
description = "R LSP server to use";
|
||||||
type = listOf (enum (attrNames servers));
|
type = enum (attrNames servers);
|
||||||
default = defaultServers;
|
default = defaultServer;
|
||||||
|
};
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
description = "R LSP server package, or the command to run as a list of strings";
|
||||||
|
example = literalExpression "[ (lib.getExe pkgs.jdt-language-server) \"-data\" \"~/.cache/jdtls/workspace\" ]";
|
||||||
|
type = either package (listOf str);
|
||||||
|
default = servers.${cfg.lsp.server}.package;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -115,12 +127,8 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.lsp.enable {
|
(mkIf cfg.lsp.enable {
|
||||||
vim.lsp.servers =
|
vim.lsp.lspconfig.enable = true;
|
||||||
mapListToAttrs (n: {
|
vim.lsp.lspconfig.sources.r-lsp = servers.${cfg.lsp.server}.lspConfig;
|
||||||
name = n;
|
|
||||||
value = servers.${n};
|
|
||||||
})
|
|
||||||
cfg.lsp.servers;
|
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue