mirror of
https://github.com/NotAShelf/nvf.git
synced 2026-01-17 23:58:40 +00:00
Compare commits
No commits in common. "efa859381f60132db976d2501bfdb4e6f8d5a8c5" and "3147ef13711464ec555f8897c1179c55ca76ec77" have entirely different histories.
efa859381f
...
3147ef1371
4 changed files with 4 additions and 140 deletions
|
|
@ -1,11 +1,10 @@
|
|||
# From home-manager: https://github.com/nix-community/home-manager/blob/master/modules/lib/booleans.nix
|
||||
{lib}: let
|
||||
inherit (builtins) isString getAttr;
|
||||
inherit (lib.options) mkOption;
|
||||
inherit (lib.types) listOf bool str submodule attrsOf anything either nullOr;
|
||||
inherit (lib.types) bool;
|
||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||
inherit (lib.nvim.types) luaInline;
|
||||
in {
|
||||
# TODO: remove
|
||||
diagnosticsToLua = {
|
||||
lang,
|
||||
config,
|
||||
|
|
@ -33,48 +32,4 @@ in {
|
|||
type = bool;
|
||||
description = "Turn on ${desc} for enabled languages by default";
|
||||
};
|
||||
|
||||
lspOptions = submodule {
|
||||
freeformType = attrsOf anything;
|
||||
options = {
|
||||
enable = mkOption {
|
||||
type = bool;
|
||||
default = true;
|
||||
description = "Whether to enable this LSP server.";
|
||||
};
|
||||
|
||||
capabilities = mkOption {
|
||||
type = nullOr (either luaInline (attrsOf anything));
|
||||
default = null;
|
||||
description = "LSP capabilitiess to pass to lspconfig";
|
||||
};
|
||||
|
||||
on_attach = mkOption {
|
||||
type = nullOr luaInline;
|
||||
default = null;
|
||||
description = "Function to execute when an LSP server attaches to a buffer";
|
||||
};
|
||||
|
||||
filetypes = mkOption {
|
||||
type = nullOr (listOf str);
|
||||
default = null;
|
||||
description = "Filetypes to auto-attach LSP in";
|
||||
};
|
||||
|
||||
cmd = mkOption {
|
||||
type = nullOr (listOf str);
|
||||
default = null;
|
||||
description = "Command used to start the LSP server";
|
||||
};
|
||||
|
||||
root_markers = mkOption {
|
||||
type = nullOr (listOf str);
|
||||
default = null;
|
||||
description = ''
|
||||
"root markers" used to determine the root directory of the workspace, and
|
||||
the filetypes associated with this LSP server.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
./debug.nix
|
||||
./diagnostics.nix
|
||||
./highlight.nix
|
||||
./lsp.nix
|
||||
./spellcheck.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,82 +0,0 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (builtins) filter;
|
||||
inherit (lib.modules) mkIf mkMerge mkDefault;
|
||||
inherit (lib.options) mkOption;
|
||||
inherit (lib.types) attrsOf;
|
||||
inherit (lib.strings) concatLines;
|
||||
inherit (lib.attrsets) mapAttrsToList attrNames filterAttrs;
|
||||
inherit (lib.generators) mkLuaInline;
|
||||
inherit (lib.nvim.languages) lspOptions;
|
||||
inherit (lib.nvim.dag) entryAnywhere;
|
||||
inherit (lib.nvim.lua) toLuaObject;
|
||||
|
||||
cfg = config.vim.lsp;
|
||||
|
||||
lspConfigurations =
|
||||
mapAttrsToList (
|
||||
name: value: ''
|
||||
vim.lsp.config["${name}"] = ${toLuaObject value}
|
||||
''
|
||||
)
|
||||
cfg.servers;
|
||||
|
||||
enabledServers = filterAttrs (_: u: u.enable) cfg.servers;
|
||||
in {
|
||||
options = {
|
||||
vim.lsp.servers = mkOption {
|
||||
type = attrsOf lspOptions;
|
||||
default = {};
|
||||
example = ''
|
||||
{
|
||||
"*" = {
|
||||
root_markers = [".git"];
|
||||
capabilities = {
|
||||
textDocument = {
|
||||
semanticTokens = {
|
||||
multilineTokenSupport = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
"clangd" = {
|
||||
filetypes = ["c"];
|
||||
};
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
LSP configurations that will be managed using `vim.lsp.config()` and
|
||||
related utilities added in Neovim 0.11. LSPs defined here will be
|
||||
added to the resulting {file}`init.lua` using `vim.lsp.config` and
|
||||
enabled through `vim.lsp.enable` below the configuration table.
|
||||
|
||||
You may review the generated configuration by running {command}`nvf-print-config`
|
||||
in a shell. Please see {command}`:help lsp-config` for more details
|
||||
on the underlying API.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkMerge [
|
||||
{
|
||||
vim.lsp.servers."*" = {
|
||||
capabilities = mkDefault (mkLuaInline "capabilities");
|
||||
on_attach = mkDefault (mkLuaInline "default_on_attach");
|
||||
};
|
||||
}
|
||||
|
||||
(mkIf (cfg.servers != {}) {
|
||||
vim.luaConfigRC.lsp-servers = entryAnywhere ''
|
||||
-- Individual LSP configurations managed by nvf.
|
||||
${concatLines lspConfigurations}
|
||||
|
||||
-- Enable configured LSPs explicitly
|
||||
vim.lsp.enable(${toLuaObject (filter (name: name != "*") (attrNames enabledServers))})
|
||||
'';
|
||||
})
|
||||
];
|
||||
}
|
||||
|
|
@ -1,8 +1,4 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
{lib, ...}: let
|
||||
inherit (lib.nvim.languages) mkEnable;
|
||||
in {
|
||||
imports = [
|
||||
|
|
@ -51,11 +47,7 @@ in {
|
|||
];
|
||||
|
||||
options.vim.languages = {
|
||||
# LSPs are now built into Neovim, and we should enable them by default
|
||||
# if `vim.lsp.enable` is true.
|
||||
enableLSP = mkEnable "LSP" // {default = config.vim.lsp.enable;};
|
||||
|
||||
# Those are still managed by plugins, and should be enabled here.
|
||||
enableLSP = mkEnable "LSP";
|
||||
enableDAP = mkEnable "Debug Adapter";
|
||||
enableTreesitter = mkEnable "Treesitter";
|
||||
enableFormat = mkEnable "Formatting";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue