mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-26 09:20:08 +00:00 
			
		
		
		
	language/svelte: migrate to conform/nvim-lint
This commit is contained in:
		
					parent
					
						
							
								0db226be84
							
						
					
				
			
			
				commit
				
					
						bc76ced636
					
				
			
		
					 1 changed files with 36 additions and 44 deletions
				
			
		|  | @ -9,9 +9,9 @@ | |||
|   inherit (lib.modules) mkIf mkMerge; | ||||
|   inherit (lib.lists) isList; | ||||
|   inherit (lib.meta) getExe; | ||||
|   inherit (lib.generators) mkLuaInline; | ||||
|   inherit (lib.types) enum either listOf package str; | ||||
|   inherit (lib.nvim.lua) expToLua; | ||||
|   inherit (lib.nvim.languages) diagnosticsToLua; | ||||
|   inherit (lib.nvim.types) mkGrammarOption diagnostics; | ||||
| 
 | ||||
|   cfg = config.vim.languages.svelte; | ||||
|  | @ -39,52 +39,38 @@ | |||
|   formats = { | ||||
|     prettier = { | ||||
|       package = pkgs.nodePackages.prettier; | ||||
|       nullConfig = '' | ||||
|         table.insert( | ||||
|           ls_sources, | ||||
|           null_ls.builtins.formatting.prettier.with({ | ||||
|             command = "${cfg.format.package}/bin/prettier", | ||||
|           }) | ||||
|         ) | ||||
|       ''; | ||||
|     }; | ||||
| 
 | ||||
|     biome = { | ||||
|       package = pkgs.biome; | ||||
|       nullConfig = '' | ||||
|         table.insert( | ||||
|           ls_sources, | ||||
|           null_ls.builtins.formatting.biome.with({ | ||||
|             command = "${cfg.format.package}/bin/biome", | ||||
|           }) | ||||
|         ) | ||||
|       ''; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   # TODO: specify packages | ||||
|   defaultDiagnosticsProvider = ["eslint_d"]; | ||||
|   diagnosticsProviders = { | ||||
|     eslint_d = { | ||||
|       package = pkgs.eslint_d; | ||||
|       nullConfig = pkg: '' | ||||
|         table.insert( | ||||
|           ls_sources, | ||||
|           null_ls.builtins.diagnostics.eslint_d.with({ | ||||
|             command = "${getExe pkg}", | ||||
|             condition = function(utils) | ||||
|               return utils.root_has_file({ | ||||
|                 "eslint.config.js", | ||||
|                 "eslint.config.mjs", | ||||
|                 ".eslintrc", | ||||
|                 ".eslintrc.json", | ||||
|                 ".eslintrc.js", | ||||
|                 ".eslintrc.yml", | ||||
|               }) | ||||
|             end, | ||||
|           }) | ||||
|         ) | ||||
|       ''; | ||||
|     eslint_d = let | ||||
|       pkg = pkgs.eslint_d; | ||||
|     in { | ||||
|       package = pkg; | ||||
|       config = { | ||||
|         cmd = getExe pkg; | ||||
|         # HACK: change if nvim-lint gets a dynamic enable thing | ||||
|         parser = mkLuaInline '' | ||||
|           function(output, bufnr, cwd) | ||||
|             local markers = { "eslint.config.js", "eslint.config.mjs", | ||||
|               ".eslintrc", ".eslintrc.json", ".eslintrc.js", ".eslintrc.yml", } | ||||
|             for _, filename in ipairs(markers) do | ||||
|               local path = vim.fs.join(cwd, filename) | ||||
|               if vim.loop.fs_stat(path) then | ||||
|                 return require("lint.linters.eslint_d").parser(output, bufnr, cwd) | ||||
|               end | ||||
|             end | ||||
| 
 | ||||
|             return {} | ||||
|           end | ||||
|         ''; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
| in { | ||||
|  | @ -153,16 +139,22 @@ in { | |||
|     }) | ||||
| 
 | ||||
|     (mkIf cfg.format.enable { | ||||
|       vim.lsp.null-ls.enable = true; | ||||
|       vim.lsp.null-ls.sources.svelte-format = formats.${cfg.format.type}.nullConfig; | ||||
|       vim.formatter.conform-nvim = { | ||||
|         enable = true; | ||||
|         setupOpts.formatters_by_ft.svelte = [cfg.format.type]; | ||||
|         setupOpts.formatters.${cfg.format.type} = { | ||||
|           command = getExe cfg.format.package; | ||||
|         }; | ||||
|       }; | ||||
|     }) | ||||
| 
 | ||||
|     (mkIf cfg.extraDiagnostics.enable { | ||||
|       vim.lsp.null-ls.enable = true; | ||||
|       vim.lsp.null-ls.sources = diagnosticsToLua { | ||||
|         lang = "svelte"; | ||||
|         config = cfg.extraDiagnostics.types; | ||||
|         inherit diagnosticsProviders; | ||||
|       vim.diagnostics.nvim-lint = { | ||||
|         enable = true; | ||||
|         linters_by_ft.svelte = cfg.extraDiagnostics.types; | ||||
|         linters = | ||||
|           mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;}) | ||||
|             cfg.extraDiagnostics.types); | ||||
|       }; | ||||
|     }) | ||||
|   ]); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ching Pei Yang
				Ching Pei Yang