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
|
||||||
./nvim-lsp/lspsaga.nix
|
./nvim-lsp/lspsaga.nix
|
||||||
./nvim-lsp/lsp-lines.nix
|
./nvim-lsp/lsp-lines.nix
|
||||||
|
./nvim-lsp/nvim-lightbulb.nix
|
||||||
./nvim-lsp/trouble.nix
|
./nvim-lsp/trouble.nix
|
||||||
|
|
||||||
./pluginmanagers/packer.nix
|
./pluginmanagers/packer.nix
|
||||||
|
|
|
@ -66,6 +66,20 @@ rec {
|
||||||
description = desc;
|
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, ... }: {
|
mkPlugin = { config, lib, ... }: {
|
||||||
name,
|
name,
|
||||||
description,
|
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