lsp/lightbulb: cleanup; modularize autocommand behaviour

This commit is contained in:
raf 2025-01-19 20:26:52 +03:00
parent db8a586b7e
commit c97f9dab2c
No known key found for this signature in database
GPG key ID: EED98D11B85A2819
3 changed files with 36 additions and 7 deletions

View file

@ -31,6 +31,9 @@
your Editorconfig configuration, or use an autocommand to set indentation
values for buffers with the Nix filetype.
- Add [](#opt-vim.lsp.lightbulb.autocmd.enable) for manually managing the
previously managed lightbulb autocommand.
[amadaluzia](https://github.com/amadaluzia):
[haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim
@ -59,7 +62,8 @@
- Add `vim.snippets.luasnip.setupOpts`, which was previously missing.
- Add `"prettierd"` as a formatter option in
`vim.languages.markdown.format.type`.
- Add the following plugins from [mini.nvim](https://github.com/echasnovski/mini.nvim)
- Add the following plugins from
[mini.nvim](https://github.com/echasnovski/mini.nvim)
- `mini.ai`
- `mini.align`
- `mini.animate`

View file

@ -4,6 +4,7 @@
...
}: let
inherit (lib.modules) mkIf;
inherit (lib.strings) optionalString;
inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.lua) toLuaObject;
@ -12,13 +13,28 @@ in {
config = mkIf (cfg.enable && cfg.lightbulb.enable) {
vim = {
startPlugins = ["nvim-lightbulb"];
pluginRC.lightbulb = entryAnywhere ''
vim.api.nvim_command('autocmd CursorHold,CursorHoldI * lua require\'nvim-lightbulb\'.update_lightbulb()')
-- Enable trouble diagnostics viewer
require'nvim-lightbulb'.setup(${toLuaObject cfg.lightbulb.setupOpts})
local nvim-lightbulb = require('nvim-lightbulb')
nvim-lightbulb.setup(${toLuaObject cfg.lightbulb.setupOpts})
${optionalString cfg.lightbulb.autocmd.enable ''
vim.api.nvim_create_autocmd(${toLuaObject cfg.lightbulb.autocmd.events}, {
pattern = "*",
callback = function()
nvim-lightbulb.update_lightbulb()
end,
})
''}
'';
};
warnings = [
# This could have been an assertion, but the chances of collision is very low and asserting here
# might be too dramatic. Let's only warn the user, *in case* this occurs and is not intended.
(optionalString (cfg.lightbulb.setupOpts.autocmd.enable && cfg.lightbulb.autocmd.enable) ''
Both 'vim.lsp.lightbulb.autocmd.enable' and 'vim.lsp.lightbulb.setupOpts.autocmd.enable' are set
simultaneously. This might have performance implications due to frequent updates. Please set only
one option to handle nvim-lightbulb autocmd.
'')
];
};
}

View file

@ -1,11 +1,20 @@
{lib, ...}: let
inherit (lib.options) mkEnableOption;
inherit (lib.options) mkOption mkEnableOption;
inherit (lib.types) listOf str;
inherit (lib.nvim.types) mkPluginSetupOption;
in {
options.vim.lsp = {
lightbulb = {
enable = mkEnableOption "Lightbulb for code actions. Requires an emoji font";
setupOpts = mkPluginSetupOption "nvim-lightbulb" {};
autocmd = {
enable = mkEnableOption "updating lightbulb glyph automatically";
events = mkOption {
type = listOf str;
default = ["CursorHold" "CursorHoldI"];
description = "Events on which to update nvim-lightbulb glyphs";
};
};
};
};
}