mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	convert kotlin module
This commit is contained in:
		
					parent
					
						
							
								e47f268b77
							
						
					
				
			
			
				commit
				
					
						a2f1efdc30
					
				
			
		
					 1 changed files with 45 additions and 35 deletions
				
			
		|  | @ -6,14 +6,47 @@ | ||||||
| }: let | }: let | ||||||
|   inherit (lib.options) mkEnableOption mkOption literalExpression; |   inherit (lib.options) mkEnableOption mkOption literalExpression; | ||||||
|   inherit (lib.modules) mkIf mkMerge; |   inherit (lib.modules) mkIf mkMerge; | ||||||
|   inherit (lib.meta) getExe; |   inherit (lib.meta) getExe' getExe; | ||||||
|   inherit (lib.types) either package listOf str; |   inherit (builtins) attrNames; | ||||||
|  |   inherit (lib.types) either enum package listOf str; | ||||||
|   inherit (lib.nvim.types) mkGrammarOption diagnostics; |   inherit (lib.nvim.types) mkGrammarOption diagnostics; | ||||||
|   inherit (lib.lists) isList; |   inherit (lib.lists) isList; | ||||||
|   inherit (lib.nvim.lua) expToLua; |   inherit (lib.nvim.lua) expToLua; | ||||||
|  |   inherit (lib.generators) mkLuaInline; | ||||||
|  |   inherit (lib.nvim.attrsets) mapListToAttrs; | ||||||
| 
 | 
 | ||||||
|   cfg = config.vim.languages.kotlin; |   cfg = config.vim.languages.kotlin; | ||||||
| 
 | 
 | ||||||
|  |   defaultServers = ["kotlin-language-server"]; | ||||||
|  |   servers = { | ||||||
|  |     kotlin-language-server = { | ||||||
|  |       enable = true; | ||||||
|  |       cmd = [(getExe' pkgs.kotlin-language-server "kotlin-language-server")]; | ||||||
|  |       filetypes = ["kotlin"]; | ||||||
|  |       root_markers = [ | ||||||
|  |         "settings.gradle" # Gradle (multi-project) | ||||||
|  |         "settings.gradle.kts" # Gradle (multi-project) | ||||||
|  |         "build.xml" # Ant | ||||||
|  |         "pom.xml" # Maven | ||||||
|  |         "build.gradle" # Gradle | ||||||
|  |         "build.gradle.kts" # gradle | ||||||
|  |       ]; | ||||||
|  |       init_options = { | ||||||
|  |         storagePath = mkLuaInline " | ||||||
|  |         vim.fs.root(vim.fn.expand '%:p:h', | ||||||
|  |           { | ||||||
|  |             'settings.gradle', -- Gradle (multi-project) | ||||||
|  |             'settings.gradle.kts', -- Gradle (multi-project) | ||||||
|  |             'build.xml', -- Ant | ||||||
|  |             'pom.xml', -- Maven | ||||||
|  |             'build.gradle', -- Gradle | ||||||
|  |             'build.gradle.kts', -- Gradle | ||||||
|  |           } | ||||||
|  |         )"; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|   defaultDiagnosticsProvider = ["ktlint"]; |   defaultDiagnosticsProvider = ["ktlint"]; | ||||||
|   diagnosticsProviders = { |   diagnosticsProviders = { | ||||||
|     ktlint = { |     ktlint = { | ||||||
|  | @ -31,22 +64,10 @@ in { | ||||||
| 
 | 
 | ||||||
|     lsp = { |     lsp = { | ||||||
|       enable = mkEnableOption "Kotlin LSP support" // {default = config.vim.lsp.enable;}; |       enable = mkEnableOption "Kotlin LSP support" // {default = config.vim.lsp.enable;}; | ||||||
| 
 |       servers = mkOption { | ||||||
|       package = mkOption { |         description = "Kotlin LSP server to use"; | ||||||
|         description = "kotlin_language_server package with Kotlin runtime"; |         type = listOf (enum (attrNames servers)); | ||||||
|         type = either package (listOf str); |         default = defaultServers; | ||||||
|         example = literalExpression '' |  | ||||||
|           pkgs.symlinkJoin { |  | ||||||
|             name = "kotlin-language-server-wrapped"; |  | ||||||
|             paths = [pkgs.kotlin-language-server]; |  | ||||||
|             nativeBuildInputs = [pkgs.makeBinaryWrapper]; |  | ||||||
|             postBuild = ''' |  | ||||||
|               wrapProgram $out/bin/kotlin-language-server \ |  | ||||||
|                 --prefix PATH : ''${pkgs.kotlin}/bin |  | ||||||
|             '''; |  | ||||||
|           }; |  | ||||||
|         ''; |  | ||||||
|         default = pkgs.kotlin-language-server; |  | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  | @ -78,23 +99,12 @@ in { | ||||||
|     }) |     }) | ||||||
| 
 | 
 | ||||||
|     (mkIf cfg.lsp.enable { |     (mkIf cfg.lsp.enable { | ||||||
|       vim.lsp.lspconfig.enable = true; |       vim.lsp.servers = | ||||||
|       vim.lsp.lspconfig.sources.kotlin_language_server = '' |         mapListToAttrs (n: { | ||||||
|         lspconfig.kotlin_language_server.setup { |           name = n; | ||||||
|           capabilities = capabilities, |           value = servers.${n}; | ||||||
|           root_dir = lspconfig.util.root_pattern("main.kt", ".git"), |         }) | ||||||
|           on_attach=default_on_attach, |         cfg.lsp.servers; | ||||||
|           init_options = { |  | ||||||
|           -- speeds up the startup time for the LSP |  | ||||||
|             storagePath = vim.fn.stdpath('state') .. '/kotlin', |  | ||||||
|           }, |  | ||||||
|           cmd = ${ |  | ||||||
|           if isList cfg.lsp.package |  | ||||||
|           then expToLua cfg.lsp.package |  | ||||||
|           else ''{"${cfg.lsp.package}/bin/kotlin-language-server"}'' |  | ||||||
|         }, |  | ||||||
|         } |  | ||||||
|       ''; |  | ||||||
|     }) |     }) | ||||||
|   ]); |   ]); | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 sjcobb
				sjcobb