mirror of
https://github.com/NotAShelf/nvf.git
synced 2024-11-01 11:01:15 +00:00
lsp/lightbulb: convert to setupOpts
This commit is contained in:
parent
e31f7eb82f
commit
bd4a87a494
2 changed files with 213 additions and 5 deletions
|
@ -5,6 +5,7 @@
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.nvim.dag) entryAnywhere;
|
inherit (lib.nvim.dag) entryAnywhere;
|
||||||
|
inherit (lib.nvim.lua) toLuaObject;
|
||||||
|
|
||||||
cfg = config.vim.lsp;
|
cfg = config.vim.lsp;
|
||||||
in {
|
in {
|
||||||
|
@ -13,10 +14,7 @@ in {
|
||||||
startPlugins = ["nvim-lightbulb"];
|
startPlugins = ["nvim-lightbulb"];
|
||||||
|
|
||||||
luaConfigRC.lightbulb = entryAnywhere ''
|
luaConfigRC.lightbulb = entryAnywhere ''
|
||||||
vim.api.nvim_command('autocmd CursorHold,CursorHoldI * lua require\'nvim-lightbulb\'.update_lightbulb()')
|
require("nvim-lightbulb").setup(${toLuaObject cfg.lightbulb.setupOpts})
|
||||||
|
|
||||||
-- Enable trouble diagnostics viewer
|
|
||||||
require'nvim-lightbulb'.setup()
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,9 +1,219 @@
|
||||||
{lib, ...}: let
|
{lib, ...}: let
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkOption mkEnableOption;
|
||||||
|
inherit (lib.types) bool enum int str nullOr listOf;
|
||||||
|
inherit (lib.generators) mkLuaInline;
|
||||||
|
inherit (lib.nvim.types) mkPluginSetupOption luaInline;
|
||||||
in {
|
in {
|
||||||
options.vim.lsp = {
|
options.vim.lsp = {
|
||||||
lightbulb = {
|
lightbulb = {
|
||||||
enable = mkEnableOption "Lightbulb for code actions. Requires an emoji font";
|
enable = mkEnableOption "Lightbulb for code actions. Requires an emoji font";
|
||||||
|
setupOpts = mkPluginSetupOption "lightbulb" {
|
||||||
|
priority = mkOption {
|
||||||
|
type = int;
|
||||||
|
default = 10;
|
||||||
|
description = "Priority of the lightbulb for all handlers except float";
|
||||||
|
};
|
||||||
|
|
||||||
|
hide_in_unfocused_buffer = mkOption {
|
||||||
|
type = bool;
|
||||||
|
default = true;
|
||||||
|
description = "Whether to hide the lightbulb when the buffer is not focused";
|
||||||
|
};
|
||||||
|
|
||||||
|
link_highlights = mkOption {
|
||||||
|
type = bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether or not to link the highlight groups automatically.
|
||||||
|
|
||||||
|
Default highlight group links:
|
||||||
|
- LightBulbSign -> DiagnosticSignInfo
|
||||||
|
- LightBulbFloatWin -> DiagnosticFloatingInfo
|
||||||
|
- LightBulbVirtualText -> DiagnosticVirtualTextInfo
|
||||||
|
- LightBulbNumber -> DiagnosticSignInfo
|
||||||
|
- LightBulbLine -> CursorLine
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
validate_config = mkOption {
|
||||||
|
type = enum ["always" "never" "auto"];
|
||||||
|
default = "auto";
|
||||||
|
description = "Whether to perform full validation of configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
action_kinds = mkOption {
|
||||||
|
type = nullOr (listOf str);
|
||||||
|
default = null;
|
||||||
|
description = "The kind of action to show";
|
||||||
|
};
|
||||||
|
|
||||||
|
# 1. Sign Column
|
||||||
|
# this is the default
|
||||||
|
sign = {
|
||||||
|
enabled = mkEnableOption "sign column" // {default = true;};
|
||||||
|
text = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = "💡";
|
||||||
|
description = ''
|
||||||
|
Text to show in the sign column.
|
||||||
|
|
||||||
|
Must be between 1-2 characters
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
hl = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = "LightBulbSign";
|
||||||
|
description = "Highlight group to highlight the sign column text";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# 2. Virtual Text
|
||||||
|
virtual_text = {
|
||||||
|
enabled = mkEnableOption "virtual text";
|
||||||
|
text = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = "💡";
|
||||||
|
description = ''
|
||||||
|
Text to show in the virt_text.
|
||||||
|
Must be between 1-2 characters.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
pos = mkOption {
|
||||||
|
type = luaInline;
|
||||||
|
default = mkLuaInline "eol";
|
||||||
|
description = ''
|
||||||
|
Position of virtual text given to `|nvim_buf_set_extmark|`.
|
||||||
|
|
||||||
|
- Can be a number representing a fixed column (see `virt_text_pos`).
|
||||||
|
- Can be a string representing a position (see `virt_text_win_col`).
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
hl = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = "LightBulbVirtualText";
|
||||||
|
description = "Highlight group to highlight the virtual text";
|
||||||
|
};
|
||||||
|
|
||||||
|
hl_mode = mkOption {
|
||||||
|
type = enum ["combine" "replace"];
|
||||||
|
default = "combine";
|
||||||
|
description = ''
|
||||||
|
How to apply the highlight group to the virtual text.
|
||||||
|
|
||||||
|
See `hl_mode` of |nvim_buf_set_extmark|.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# 3. Floating Window
|
||||||
|
float = {
|
||||||
|
enabled = mkEnableOption "float";
|
||||||
|
text = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = "💡";
|
||||||
|
description = "Text to show in the floating window";
|
||||||
|
};
|
||||||
|
|
||||||
|
hl = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = "LightBulbFloatWin";
|
||||||
|
description = "Highlight group to highlight the floating window";
|
||||||
|
};
|
||||||
|
|
||||||
|
win_opts = mkOption {
|
||||||
|
type = luaInline;
|
||||||
|
default = mkLuaInline "{focusable = true}";
|
||||||
|
description = ''
|
||||||
|
Window options.
|
||||||
|
See `|vim.lsp.util.open_floating_preview|` and `|nvim_open_win|`.
|
||||||
|
Note that some options may be overridden by `|open_floating_preview|`.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# 4. Status Text
|
||||||
|
status_text = {
|
||||||
|
enabled = mkEnableOption "status text";
|
||||||
|
text = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = "💡";
|
||||||
|
description = "Text to set if a lightbulb is available.";
|
||||||
|
};
|
||||||
|
|
||||||
|
text_unavailable = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = "";
|
||||||
|
description = "Text to set if a lightbulb is unavailable";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# 5. Number Column
|
||||||
|
number = {
|
||||||
|
enabled = mkEnableOption "number column";
|
||||||
|
hl = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = "LightBulbNumber";
|
||||||
|
description = "Highlight group to highlight the number column if there is a lightbulb";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# 6. Content line
|
||||||
|
line = {
|
||||||
|
enabled = mkEnableOption "content line";
|
||||||
|
hl = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = "LightBulbLine";
|
||||||
|
description = "Highlight group to highlight the line if there is a lightbulb";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
autocmd = {
|
||||||
|
enabled = mkEnableOption "autocmd creation" // {default = true;};
|
||||||
|
updatetime = mkOption {
|
||||||
|
type = int;
|
||||||
|
default = 200;
|
||||||
|
description = "Set to a negative value to avoid setting the updatetime";
|
||||||
|
};
|
||||||
|
|
||||||
|
events = mkOption {
|
||||||
|
type = listOf str;
|
||||||
|
default = ["CursorHold" "CursorHoldI"];
|
||||||
|
description = "Events to trigger the autocmd on";
|
||||||
|
};
|
||||||
|
|
||||||
|
pattern = mkOption {
|
||||||
|
type = luaInline;
|
||||||
|
default = mkLuaInline "{'*'}";
|
||||||
|
description = "Pattern to match the autocmd on";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ignore = {
|
||||||
|
clients = mkOption {
|
||||||
|
type = listOf str;
|
||||||
|
default = [];
|
||||||
|
example = ["null-ls" "lua_ls"];
|
||||||
|
description = "LSP client names to ignore.";
|
||||||
|
};
|
||||||
|
|
||||||
|
ft = mkOption {
|
||||||
|
type = listOf str;
|
||||||
|
default = [];
|
||||||
|
example = ["neo-tree" "lua"];
|
||||||
|
description = "Filetypes to ignore.";
|
||||||
|
};
|
||||||
|
|
||||||
|
actions_without_kinds = mkOption {
|
||||||
|
type = bool;
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
description = "Ignore code actions without a `kind` like `refactor.rewrite`, quickfix";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue