mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 19:12:38 +00:00 
			
		
		
		
	Merge pull request #572 from NotAShelf/lightbulb-cleanup
lsp/lightbulb: cleanup; modularize autocommand behaviour
This commit is contained in:
		
				commit
				
					
						3a6d2f7294
					
				
			
		
					 3 changed files with 54 additions and 11 deletions
				
			
		|  | @ -31,6 +31,12 @@ | ||||||
|   your Editorconfig configuration, or use an autocommand to set indentation |   your Editorconfig configuration, or use an autocommand to set indentation | ||||||
|   values for buffers with the Nix filetype. |   values for buffers with the Nix filetype. | ||||||
| 
 | 
 | ||||||
|  | - Add [](#opt-vim.lsp.lightbulb.autocmd.enable) for manually managing the | ||||||
|  |   previously managed lightbulb autocommand. | ||||||
|  |   - A warning will occur if [](#opt-vim.lsp.lightbulb.autocmd.enable) and | ||||||
|  |     `vim.lsp.lightbulb.setupOpts.autocmd.enabled` are both set at the same time. | ||||||
|  |     Pick only one. | ||||||
|  | 
 | ||||||
| [amadaluzia](https://github.com/amadaluzia): | [amadaluzia](https://github.com/amadaluzia): | ||||||
| 
 | 
 | ||||||
| [haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim | [haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim | ||||||
|  | @ -59,7 +65,8 @@ | ||||||
| - Add `vim.snippets.luasnip.setupOpts`, which was previously missing. | - Add `vim.snippets.luasnip.setupOpts`, which was previously missing. | ||||||
| - Add `"prettierd"` as a formatter option in | - Add `"prettierd"` as a formatter option in | ||||||
|   `vim.languages.markdown.format.type`. |   `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.ai` | ||||||
|   - `mini.align` |   - `mini.align` | ||||||
|   - `mini.animate` |   - `mini.animate` | ||||||
|  | @ -102,7 +109,8 @@ | ||||||
|   - `mini.trailspace` |   - `mini.trailspace` | ||||||
|   - `mini.visits` |   - `mini.visits` | ||||||
| - Add [fzf-lua](https://github.com/ibhagwan/fzf-lua) in `vim.fzf-lua` | - Add [fzf-lua](https://github.com/ibhagwan/fzf-lua) in `vim.fzf-lua` | ||||||
| - Add [rainbow-delimiters](https://github.com/HiPhish/rainbow-delimiters.nvim) in `vim.visuals.rainbow-delimiters` | - Add [rainbow-delimiters](https://github.com/HiPhish/rainbow-delimiters.nvim) | ||||||
|  |   in `vim.visuals.rainbow-delimiters` | ||||||
| - Add options to define highlights under [](#opt-vim.highlight) | - Add options to define highlights under [](#opt-vim.highlight) | ||||||
| 
 | 
 | ||||||
| [kaktu5](https://github.com/kaktu5): | [kaktu5](https://github.com/kaktu5): | ||||||
|  | @ -125,5 +133,5 @@ | ||||||
| 
 | 
 | ||||||
| [ARCIII](https://github.com/ArmandoCIII): | [ARCIII](https://github.com/ArmandoCIII): | ||||||
| 
 | 
 | ||||||
| - Add `vim.languages.zig.dap` support through pkgs.lldb dap adapter. | - Add `vim.languages.zig.dap` support through pkgs.lldb dap adapter. Code | ||||||
|   Code Inspiration from `vim.languages.clang.dap` implementation. |   Inspiration from `vim.languages.clang.dap` implementation. | ||||||
|  |  | ||||||
|  | @ -4,6 +4,7 @@ | ||||||
|   ... |   ... | ||||||
| }: let | }: let | ||||||
|   inherit (lib.modules) mkIf; |   inherit (lib.modules) mkIf; | ||||||
|  |   inherit (lib.strings) optionalString; | ||||||
|   inherit (lib.nvim.dag) entryAnywhere; |   inherit (lib.nvim.dag) entryAnywhere; | ||||||
|   inherit (lib.nvim.lua) toLuaObject; |   inherit (lib.nvim.lua) toLuaObject; | ||||||
| 
 | 
 | ||||||
|  | @ -12,13 +13,29 @@ in { | ||||||
|   config = mkIf (cfg.enable && cfg.lightbulb.enable) { |   config = mkIf (cfg.enable && cfg.lightbulb.enable) { | ||||||
|     vim = { |     vim = { | ||||||
|       startPlugins = ["nvim-lightbulb"]; |       startPlugins = ["nvim-lightbulb"]; | ||||||
| 
 |  | ||||||
|       pluginRC.lightbulb = entryAnywhere '' |       pluginRC.lightbulb = entryAnywhere '' | ||||||
|         vim.api.nvim_command('autocmd CursorHold,CursorHoldI * lua require\'nvim-lightbulb\'.update_lightbulb()') |         local nvim_lightbulb = require("nvim-lightbulb") | ||||||
| 
 |         nvim_lightbulb.setup(${toLuaObject cfg.lightbulb.setupOpts}) | ||||||
|         -- Enable trouble diagnostics viewer |         ${optionalString cfg.lightbulb.autocmd.enable '' | ||||||
|         require'nvim-lightbulb'.setup(${toLuaObject cfg.lightbulb.setupOpts}) |           vim.api.nvim_create_autocmd(${toLuaObject cfg.lightbulb.autocmd.events}, { | ||||||
|  |             pattern = ${toLuaObject cfg.lightbulb.autocmd.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. No | ||||||
|  |       # error will be thrown if 'lightbulb.setupOpts.autocmd.enable' has not been set by the user. | ||||||
|  |       (mkIf (cfg.lightbulb.autocmd.enable -> (cfg.lightbulb.setupOpts.autocmd.enabled or false)) '' | ||||||
|  |         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. | ||||||
|  |       '') | ||||||
|  |     ]; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,11 +1,29 @@ | ||||||
| {lib, ...}: let | {lib, ...}: let | ||||||
|   inherit (lib.options) mkEnableOption; |   inherit (lib.options) mkOption mkEnableOption; | ||||||
|   inherit (lib.nvim.types) mkPluginSetupOption; |   inherit (lib.types) listOf str either; | ||||||
|  |   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 "nvim-lightbulb" {}; |       setupOpts = mkPluginSetupOption "nvim-lightbulb" {}; | ||||||
|  |       autocmd = { | ||||||
|  |         enable = mkEnableOption "updating lightbulb glyph automatically" // {default = true;}; | ||||||
|  |         events = mkOption { | ||||||
|  |           type = listOf str; | ||||||
|  |           default = ["CursorHold" "CursorHoldI"]; | ||||||
|  |           description = "Events on which to update nvim-lightbulb glyphs"; | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         pattern = mkOption { | ||||||
|  |           type = either str luaInline; | ||||||
|  |           default = "*"; | ||||||
|  |           description = '' | ||||||
|  |             File patterns or buffer names to match, determining which files or buffers trigger | ||||||
|  |             glyph updates. | ||||||
|  |           ''; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 GitHub
					GitHub