mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-09-06 10:21:31 +00:00
102 lines
2.9 KiB
Nix
102 lines
2.9 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (lib.modules) mkIf;
|
|
inherit (lib.options) mkOption mkEnableOption literalExpression;
|
|
inherit (lib.types) attrsOf anything oneOf bool submodule;
|
|
inherit (lib.nvim.dag) entryAfter;
|
|
inherit (lib.nvim.types) luaInline;
|
|
inherit (lib.nvim.lua) toLuaObject;
|
|
|
|
cfg = config.vim.diagnostics;
|
|
|
|
diagnosticType = oneOf [(attrsOf anything) bool luaInline];
|
|
diagnosticsSubmodule = submodule {
|
|
freeformType = attrsOf diagnosticType;
|
|
underline = mkOption {
|
|
type = diagnosticType;
|
|
default = true;
|
|
description = "Use underline for diagnostics.";
|
|
};
|
|
|
|
virtual_text = mkOption {
|
|
type = diagnosticType;
|
|
default = false;
|
|
example = literalExpression ''
|
|
{
|
|
format = lib.generators.mkLuaInline '''
|
|
function(diagnostic)
|
|
return string.format("%s (%s)", diagnostic.message, diagnostic.source)
|
|
end
|
|
''';
|
|
}
|
|
'';
|
|
|
|
description = ''
|
|
Use virtual text for diagnostics. If multiple diagnostics are set for a namespace,
|
|
one prefix per diagnostic + the last diagnostic message are shown.
|
|
'';
|
|
};
|
|
|
|
virtual_lines = mkOption {
|
|
type = diagnosticType;
|
|
default = false;
|
|
description = ''
|
|
Use virtual lines for diagnostics.
|
|
'';
|
|
};
|
|
|
|
signs = mkOption {
|
|
type = diagnosticType;
|
|
default = false;
|
|
example = {
|
|
signs.text = {
|
|
"vim.diagnostic.severity.ERROR" = " ";
|
|
"vim.diagnostic.severity.WARN" = " ";
|
|
};
|
|
};
|
|
description = ''
|
|
Use signs for diagnostics. See {command}`:help diagnostic-signs`.
|
|
'';
|
|
};
|
|
|
|
update_in_insert = mkOption {
|
|
type = bool;
|
|
default = false;
|
|
description = ''
|
|
Update diagnostics in Insert mode. If `false`, diagnostics will
|
|
be updated on InsertLeave ({command}`:help InsertLeave`).
|
|
'';
|
|
};
|
|
};
|
|
in {
|
|
options.vim = {
|
|
diagnostics = {
|
|
enable = mkEnableOption "diagostics module for Neovim";
|
|
config = mkOption {
|
|
type = diagnosticsSubmodule;
|
|
default = {};
|
|
description = ''
|
|
Values that will be passed to `vim.diagnostic.config` after being converted
|
|
to a Lua table. Possible values for each key can be found in the help text
|
|
for `vim.diagnostics.Opts`. You may find more about the diagnostics API of
|
|
Neovim in {command}`:help diagnostic-api`.
|
|
|
|
:::{.note}
|
|
This option is freeform. You may set values that are not present in nvf
|
|
documentation, but those values will not be fully type checked. Please
|
|
refer to the help text for `vim.diagnostic.Opts` for appropriate values.
|
|
:::
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
|
|
config.vim = mkIf cfg.enable {
|
|
luaConfigRC.diagnostics = entryAfter ["basic"] ''
|
|
vim.diagnostic.config(${toLuaObject cfg.config})
|
|
'';
|
|
};
|
|
}
|