mirror of
https://github.com/nix-community/nixvim.git
synced 2025-07-13 02:34:34 +02:00
nvim-lightbulb: init
* plugins: Add nvim-lightbulb plugin, showing if code actions are available * Update nvim-lightbulb.nix Co-authored-by: Pedro Alves <pta2002@users.noreply.github.com>
This commit is contained in:
parent
238f0c590e
commit
4afb8e7347
3 changed files with 108 additions and 0 deletions
|
@ -35,6 +35,7 @@
|
|||
./nvim-lsp
|
||||
./nvim-lsp/lspsaga.nix
|
||||
./nvim-lsp/lsp-lines.nix
|
||||
./nvim-lsp/nvim-lightbulb.nix
|
||||
./nvim-lsp/trouble.nix
|
||||
|
||||
./pluginmanagers/packer.nix
|
||||
|
|
|
@ -66,6 +66,20 @@ rec {
|
|||
description = desc;
|
||||
};
|
||||
|
||||
defaultNullOpts = rec {
|
||||
mkNullable = type: default: desc: mkNullOrOption type (let
|
||||
defaultDesc = "default: `${default}`";
|
||||
in if desc == "" then defaultDesc else ''
|
||||
${desc}
|
||||
|
||||
${defaultDesc}
|
||||
'');
|
||||
|
||||
mkInt = default: mkNullable lib.types.int (toString default);
|
||||
mkBool = default: mkNullable lib.types.bool (toString default);
|
||||
mkStr = default: mkNullable lib.types.str ''"${default}"'';
|
||||
};
|
||||
|
||||
mkPlugin = { config, lib, ... }: {
|
||||
name,
|
||||
description,
|
||||
|
|
93
plugins/nvim-lsp/nvim-lightbulb.nix
Normal file
93
plugins/nvim-lsp/nvim-lightbulb.nix
Normal file
|
@ -0,0 +1,93 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
helpers,
|
||||
...
|
||||
}:
|
||||
with lib; {
|
||||
options.plugins.nvim-lightbulb = {
|
||||
enable = mkEnableOption "nvim-lightbulb, showing available code actions";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.vimPlugins.nvim-lightbulb;
|
||||
description = "Plugin to use for nvim-lightbulb";
|
||||
};
|
||||
|
||||
ignore = helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]" ''
|
||||
LSP client names to ignore
|
||||
'';
|
||||
|
||||
sign = {
|
||||
enabled = helpers.defaultNullOpts.mkBool true "";
|
||||
priority = helpers.defaultNullOpts.mkInt 10 "";
|
||||
};
|
||||
|
||||
float = {
|
||||
enabled = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
text = helpers.defaultNullOpts.mkStr "💡" "Text to show in the popup float";
|
||||
|
||||
winOpts = helpers.defaultNullOpts.mkNullable (types.attrsOf types.anything) "{}" ''
|
||||
Options for the floating window (see |vim.lsp.util.open_floating_preview| for more information)
|
||||
'';
|
||||
};
|
||||
|
||||
virtualText = {
|
||||
enabled = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
text = helpers.defaultNullOpts.mkStr "💡" "Text to show at virtual text";
|
||||
|
||||
hlMode = helpers.defaultNullOpts.mkStr "replace" ''
|
||||
highlight mode to use for virtual text (replace, combine, blend), see
|
||||
:help nvim_buf_set_extmark() for reference
|
||||
'';
|
||||
};
|
||||
|
||||
statusText = {
|
||||
enabled = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
text = helpers.defaultNullOpts.mkStr "💡" "Text to provide when code actions are available";
|
||||
|
||||
textUnavailable = helpers.defaultNullOpts.mkStr "" ''
|
||||
Text to provide when no actions are available
|
||||
'';
|
||||
};
|
||||
|
||||
autocmd = {
|
||||
enabled = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
pattern = helpers.defaultNullOpts.mkNullable (types.listOf types.str) ''["*"]'' "";
|
||||
|
||||
events =
|
||||
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
||||
''["CursorHold" "CursorHoldI"]'' "";
|
||||
};
|
||||
};
|
||||
|
||||
config = let
|
||||
cfg = config.plugins.nvim-lightbulb;
|
||||
setupOptions = {
|
||||
inherit (cfg) ignore sign autocmd;
|
||||
float = {
|
||||
inherit (cfg.float) enabled text;
|
||||
win_opts = cfg.float.winOpts;
|
||||
};
|
||||
virtual_text = {
|
||||
inherit (cfg.virtualText) enabled text;
|
||||
hl_mode = cfg.virtualText.hlMode;
|
||||
};
|
||||
status_text = {
|
||||
inherit (cfg.statusText) enabled text;
|
||||
text_unavailable = cfg.statusText.textUnavailable;
|
||||
};
|
||||
};
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
extraPlugins = [cfg.package];
|
||||
extraConfigLua = ''
|
||||
require("nvim-lightbulb").setup(${helpers.toLuaObject setupOptions})
|
||||
'';
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue