mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 02:52:37 +00:00 
			
		
		
		
	lsp/null-ls: convert to new setupOpts format; get rid of prelude DAG
This commit is contained in:
		
					parent
					
						
							
								736c323c59
							
						
					
				
			
			
				commit
				
					
						5d2d249a46
					
				
			
		
					 2 changed files with 85 additions and 54 deletions
				
			
		|  | @ -4,13 +4,12 @@ | ||||||
|   ... |   ... | ||||||
| }: let | }: let | ||||||
|   inherit (lib.modules) mkIf mkMerge; |   inherit (lib.modules) mkIf mkMerge; | ||||||
|   inherit (lib.attrsets) mapAttrs; |   inherit (lib.nvim.lua) toLuaObject; | ||||||
|   inherit (lib.trivial) boolToString; |   inherit (lib.nvim.dag) entryAfter; | ||||||
|   inherit (lib.nvim.dag) entryAnywhere entryAfter entryBetween; |  | ||||||
| 
 | 
 | ||||||
|   cfg = config.vim.lsp; |   cfg = config.vim.lsp.null-ls; | ||||||
| in { | in { | ||||||
|   config = mkIf cfg.null-ls.enable (mkMerge [ |   config = mkIf cfg.enable (mkMerge [ | ||||||
|     { |     { | ||||||
|       vim = { |       vim = { | ||||||
|         startPlugins = [ |         startPlugins = [ | ||||||
|  | @ -18,35 +17,14 @@ in { | ||||||
|           "plenary-nvim" |           "plenary-nvim" | ||||||
|         ]; |         ]; | ||||||
| 
 | 
 | ||||||
|         # null-ls implies LSP already being set up |         # null-ls implies that LSP is already being set up | ||||||
|         # since it will hook into LSPs to receive information |         # as it will hook into LSPs to receive information. | ||||||
|         lsp.enable = true; |         lsp.enable = true; | ||||||
| 
 | 
 | ||||||
|         pluginRC = { |         pluginRC.null_ls = entryAfter ["lsp-setup"] '' | ||||||
|           # early setup for null-ls |           require('null-ls').setup(${toLuaObject cfg.setupOpts}) | ||||||
|           null_ls-setup = entryAnywhere '' |  | ||||||
|             local null_ls = require("null-ls") |  | ||||||
|             local null_helpers = require("null-ls.helpers") |  | ||||||
|             local null_methods = require("null-ls.methods") |  | ||||||
|             local ls_sources = {} |  | ||||||
|           ''; |  | ||||||
| 
 |  | ||||||
|           # null-ls setup |  | ||||||
|           null_ls = entryAfter ["null_ls-setup" "lsp-setup"] '' |  | ||||||
|             require('null-ls').setup({ |  | ||||||
|               debug = ${boolToString cfg.null-ls.debug}, |  | ||||||
|               diagnostics_format = "${cfg.null-ls.diagnostics_format}", |  | ||||||
|               debounce = ${toString cfg.null-ls.debounce}, |  | ||||||
|               default_timeout = ${toString cfg.null-ls.default_timeout}, |  | ||||||
|               sources = ls_sources, |  | ||||||
|               on_attach = default_on_attach |  | ||||||
|             }) |  | ||||||
|         ''; |         ''; | ||||||
|       }; |       }; | ||||||
|       }; |  | ||||||
|     } |  | ||||||
|     { |  | ||||||
|       vim.pluginRC = mapAttrs (_: v: (entryBetween ["null_ls"] ["null_ls-setup"] v)) cfg.null-ls.sources; |  | ||||||
|     } |     } | ||||||
|   ]); |   ]); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,34 +1,87 @@ | ||||||
| {lib, ...}: let | {lib, ...}: let | ||||||
|   inherit (lib.options) mkEnableOption mkOption; |   inherit (lib.options) mkOption mkEnableOption; | ||||||
|   inherit (lib.types) attrsOf str int; |   inherit (lib.types) attrsOf str int nullOr; | ||||||
| in { |   inherit (lib.generators) mkLuaInline; | ||||||
|   options.vim.lsp.null-ls = { |   inherit (lib.nvim.types) luaInline mkPluginSetupOption; | ||||||
|     enable = mkEnableOption "null-ls, also enabled automatically"; |   inherit (lib.nvim.config) batchRenameOptions; | ||||||
| 
 | 
 | ||||||
|     debug = mkEnableOption "debugging information for `null-ls"; |   migrationTable = { | ||||||
|  |     debug = "debug"; | ||||||
|  |     diagnostics_format = "diagnostics_format"; | ||||||
|  |     debounce = "debounce"; | ||||||
|  |     default_timeout = "default_timeout"; | ||||||
|  |     sources = "sources"; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   renamedSetupOpts = | ||||||
|  |     batchRenameOptions | ||||||
|  |     ["vim" "lsp" "null-ls"] | ||||||
|  |     ["vim" "lsp" "null-ls" "setupOpts"] | ||||||
|  |     migrationTable; | ||||||
|  | in { | ||||||
|  |   imports = renamedSetupOpts; | ||||||
|  | 
 | ||||||
|  |   options.vim.lsp.null-ls = { | ||||||
|  |     enable = mkEnableOption '' | ||||||
|  |       null-ls, plugin to use Neovim as a language server to inject LSP diagnostics, | ||||||
|  |       code actions, and more via Lua. | ||||||
|  |     ''; | ||||||
|  | 
 | ||||||
|  |     setupOpts = mkPluginSetupOption "null-ls" { | ||||||
|  |       debug = mkEnableOption '' | ||||||
|  |         debugging information for null-ls. | ||||||
|  | 
 | ||||||
|  |         Displays all possible log messages and writes them to the null-ls log, | ||||||
|  |         which you can view with the command `:NullLsLog` | ||||||
|  |       ''; | ||||||
| 
 | 
 | ||||||
|       diagnostics_format = mkOption { |       diagnostics_format = mkOption { | ||||||
|         type = str; |         type = str; | ||||||
|         default = "[#{m}] #{s} (#{c})"; |         default = "[#{m}] #{s} (#{c})"; | ||||||
|       description = "Diagnostic output format for null-ls"; |         description = '' | ||||||
|  |           Sets the default format used for diagnostics. null-ls will replace th | ||||||
|  |           e following special components with the relevant diagnostic information: | ||||||
|  | 
 | ||||||
|  |           * `#{m}`: message | ||||||
|  |           * `#{s}`: source name (defaults to null-ls if not specified) | ||||||
|  |           * `#{c}`: code (if available) | ||||||
|  |         ''; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|       debounce = mkOption { |       debounce = mkOption { | ||||||
|         type = int; |         type = int; | ||||||
|         default = 250; |         default = 250; | ||||||
|       description = "Default debounce"; |         description = '' | ||||||
|  |           Amount of time between the last change to a buffer and the next `textDocument/didChange` notification. | ||||||
|  |         ''; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|       default_timeout = mkOption { |       default_timeout = mkOption { | ||||||
|         type = int; |         type = int; | ||||||
|         default = 5000; |         default = 5000; | ||||||
|       description = "Default timeout value, in milliseconds"; |         description = '' | ||||||
|  |           Amount of time (in milliseconds) after which built-in sources will time out. | ||||||
|  | 
 | ||||||
|  |           :::{.note} | ||||||
|  |           Built-in sources can define their own timeout period and users can override | ||||||
|  |           the timeout period on a per-source basis | ||||||
|  |           ::: | ||||||
|  |         ''; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|       sources = mkOption { |       sources = mkOption { | ||||||
|       description = "null-ls sources"; |         type = nullOr (attrsOf luaInline); | ||||||
|       type = attrsOf str; |         default = null; | ||||||
|       default = {}; |         description = "Sources for null-ls to register"; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       on_attach = mkOption { | ||||||
|  |         type = nullOr luaInline; | ||||||
|  |         default = mkLuaInline "on_attach"; | ||||||
|  |         description = '' | ||||||
|  |           Defines an on_attach callback to run whenever null-ls attaches to a buffer. | ||||||
|  |         ''; | ||||||
|  |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue