mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-04-13 16:18:36 +00:00
Merge branch 'main' into fzf-lua-fix
This commit is contained in:
commit
6e82a568f2
4 changed files with 83 additions and 52 deletions
|
@ -301,6 +301,7 @@
|
|||
- Add more applicable filetypes to illuminate denylist.
|
||||
- Disable mini.indentscope for applicable filetypes.
|
||||
- Fix fzf-lua having a hard dependency on fzf.
|
||||
- Enable inlay hints support - `config.vim.lsp.inlayHints`.
|
||||
|
||||
[tebuevd](https://github.com/tebuevd):
|
||||
|
||||
|
|
|
@ -12,63 +12,70 @@
|
|||
|
||||
cfg = config.vim.diagnostics;
|
||||
|
||||
# Takes a boolean, a table, or a Lua list ({key = value}). We
|
||||
# would like to allow all of those types, while clearly expressing
|
||||
# them in the option's type. As such, this type is what it is.
|
||||
diagnosticType = oneOf [(attrsOf anything) bool luaInline];
|
||||
diagnosticsSubmodule = submodule {
|
||||
# The table might need to be extended, so let's allow that case
|
||||
# with a freeform type of what is supported by diagnostics opts.
|
||||
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" = " ";
|
||||
};
|
||||
options = {
|
||||
underline = mkOption {
|
||||
type = diagnosticType;
|
||||
default = true;
|
||||
description = "Use underline for diagnostics.";
|
||||
};
|
||||
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`).
|
||||
'';
|
||||
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 {
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.generators) mkLuaInline;
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (lib.strings) optionalString;
|
||||
inherit (lib.trivial) boolToString;
|
||||
|
@ -28,6 +29,25 @@ in {
|
|||
sourcePlugins = ["cmp-nvim-lsp"];
|
||||
};
|
||||
|
||||
autocmds =
|
||||
if cfg.inlayHints.enable
|
||||
then [
|
||||
{
|
||||
callback = mkLuaInline ''
|
||||
function(event)
|
||||
local bufnr = event.buf
|
||||
local client = vim.lsp.get_client_by_id(event.data.client_id)
|
||||
if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then
|
||||
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = bufnr }), { bufnr = bufnr })
|
||||
end
|
||||
end
|
||||
'';
|
||||
desc = "LSP on-attach enable inlay hints autocmd";
|
||||
event = ["LspAttach"];
|
||||
}
|
||||
]
|
||||
else [];
|
||||
|
||||
pluginRC.lsp-setup = ''
|
||||
vim.g.formatsave = ${boolToString cfg.formatOnSave};
|
||||
|
||||
|
|
|
@ -5,6 +5,9 @@ in {
|
|||
options.vim.lsp = {
|
||||
enable = mkEnableOption "LSP, also enabled automatically through null-ls and lspconfig options";
|
||||
formatOnSave = mkEnableOption "format on save";
|
||||
inlayHints = {
|
||||
enable = mkEnableOption "inlay hints";
|
||||
};
|
||||
mappings = {
|
||||
goToDefinition =
|
||||
mkMappingOption "Go to definition"
|
||||
|
|
Loading…
Add table
Reference in a new issue