mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 19:12:38 +00:00 
			
		
		
		
	Merge pull request #139 from horriblename/feat-lsp-lua
This commit is contained in:
		
				commit
				
					
						ce1009db5f
					
				
			
		
					 6 changed files with 85 additions and 0 deletions
				
			
		|  | @ -16,6 +16,8 @@ https://github.com/horriblename[horriblename]: | ||||||
| 
 | 
 | ||||||
| * Allow using command names in place of LSP packages to avoid automatic installation. | * Allow using command names in place of LSP packages to avoid automatic installation. | ||||||
| 
 | 
 | ||||||
|  | * Add lua LSP and treesitter support, and neodev.nvim plugin support. | ||||||
|  | 
 | ||||||
| https://github.com/amanse[amanse]: | https://github.com/amanse[amanse]: | ||||||
| 
 | 
 | ||||||
| * Added daily notes options for obsidian plugin. | * Added daily notes options for obsidian plugin. | ||||||
|  |  | ||||||
							
								
								
									
										17
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										17
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							|  | @ -762,6 +762,22 @@ | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "neodev-nvim": { | ||||||
|  |       "flake": false, | ||||||
|  |       "locked": { | ||||||
|  |         "lastModified": 1695449121, | ||||||
|  |         "narHash": "sha256-WisbNLKEz0IgO7gLDA2quNzK69hJaHzmvWkZSUPQb6k=", | ||||||
|  |         "owner": "folke", | ||||||
|  |         "repo": "neodev.nvim", | ||||||
|  |         "rev": "c8e126393a34939fb448d48eeddb510971739e3a", | ||||||
|  |         "type": "github" | ||||||
|  |       }, | ||||||
|  |       "original": { | ||||||
|  |         "owner": "folke", | ||||||
|  |         "repo": "neodev.nvim", | ||||||
|  |         "type": "github" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "nil": { |     "nil": { | ||||||
|       "inputs": { |       "inputs": { | ||||||
|         "flake-utils": [ |         "flake-utils": [ | ||||||
|  | @ -1445,6 +1461,7 @@ | ||||||
|         "mind-nvim": "mind-nvim", |         "mind-nvim": "mind-nvim", | ||||||
|         "minimap-vim": "minimap-vim", |         "minimap-vim": "minimap-vim", | ||||||
|         "modes-nvim": "modes-nvim", |         "modes-nvim": "modes-nvim", | ||||||
|  |         "neodev-nvim": "neodev-nvim", | ||||||
|         "nil": "nil", |         "nil": "nil", | ||||||
|         "nixpkgs": "nixpkgs", |         "nixpkgs": "nixpkgs", | ||||||
|         "nmd": "nmd", |         "nmd": "nmd", | ||||||
|  |  | ||||||
|  | @ -133,6 +133,11 @@ | ||||||
|       flake = false; |       flake = false; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  |     neodev-nvim = { | ||||||
|  |       url = "github:folke/neodev.nvim"; | ||||||
|  |       flake = false; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|     elixir-ls = { |     elixir-ls = { | ||||||
|       url = "github:elixir-lsp/elixir-ls"; |       url = "github:elixir-lsp/elixir-ls"; | ||||||
|       flake = false; |       flake = false; | ||||||
|  |  | ||||||
|  | @ -80,6 +80,7 @@ with lib; let | ||||||
|     "vim-repeat" |     "vim-repeat" | ||||||
|     "smartcolumn" |     "smartcolumn" | ||||||
|     "project-nvim" |     "project-nvim" | ||||||
|  |     "neodev-nvim" | ||||||
|     "elixir-ls" |     "elixir-ls" | ||||||
|     "elixir-tools" |     "elixir-tools" | ||||||
|     "nvim-colorizer-lua" |     "nvim-colorizer-lua" | ||||||
|  |  | ||||||
|  | @ -24,6 +24,7 @@ in { | ||||||
|     ./html.nix |     ./html.nix | ||||||
|     ./svelte.nix |     ./svelte.nix | ||||||
|     ./java.nix |     ./java.nix | ||||||
|  |     ./lua.nix | ||||||
|   ]; |   ]; | ||||||
| 
 | 
 | ||||||
|   options.vim.languages = { |   options.vim.languages = { | ||||||
|  |  | ||||||
							
								
								
									
										59
									
								
								modules/languages/lua.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								modules/languages/lua.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,59 @@ | ||||||
|  | { | ||||||
|  |   pkgs, | ||||||
|  |   config, | ||||||
|  |   lib, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | with lib; | ||||||
|  | with builtins; let | ||||||
|  |   cfg = config.vim.languages.lua; | ||||||
|  | in { | ||||||
|  |   options.vim.languages.lua = { | ||||||
|  |     enable = mkEnableOption "Lua language support"; | ||||||
|  |     treesitter = { | ||||||
|  |       enable = mkEnableOption "Enable Lua Treesitter support" // {default = config.vim.languages.enableTreesitter;}; | ||||||
|  |       package = nvim.types.mkGrammarOption pkgs "lua"; | ||||||
|  |     }; | ||||||
|  |     lsp = { | ||||||
|  |       enable = mkEnableOption "Enable Lua LSP support via LuaLS" // {default = config.vim.languages.enableLSP;}; | ||||||
|  | 
 | ||||||
|  |       package = mkOption { | ||||||
|  |         description = "LuaLS package, or the command to run as a list of strings"; | ||||||
|  |         type = with types; either package (listOf str); | ||||||
|  |         default = pkgs.lua-language-server; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       neodev.enable = mkEnableOption "Enable neodev.nvim integration, useful for neovim plugin developers"; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable (mkMerge [ | ||||||
|  |     (mkIf cfg.treesitter.enable { | ||||||
|  |       vim.treesitter.enable = true; | ||||||
|  |       vim.treesitter.grammars = [cfg.treesitter.package]; | ||||||
|  |     }) | ||||||
|  | 
 | ||||||
|  |     (mkIf cfg.lsp.enable { | ||||||
|  |       vim.lsp.lspconfig.enable = true; | ||||||
|  |       vim.lsp.lspconfig.sources.lua-lsp = '' | ||||||
|  |         lspconfig.lua_ls.setup { | ||||||
|  |           capabilities = capabilities; | ||||||
|  |           on_attach = default_on_attach; | ||||||
|  |           ${optionalString cfg.lsp.neodev.enable "before_init = require('neodev.lsp').before_init;"} | ||||||
|  |           cmd = ${ | ||||||
|  |           if isList cfg.lsp.package | ||||||
|  |           then nvim.lua.expToLua cfg.lsp.package | ||||||
|  |           else ''{"${getExe cfg.lsp.package}"}'' | ||||||
|  |         }; | ||||||
|  |         } | ||||||
|  |       ''; | ||||||
|  |     }) | ||||||
|  | 
 | ||||||
|  |     (mkIf cfg.lsp.neodev.enable { | ||||||
|  |       vim.startPlugins = ["neodev-nvim"]; | ||||||
|  |       vim.luaConfigRC.neodev = nvim.dag.entryBefore ["lua-lsp"] '' | ||||||
|  |         require("neodev").setup({}) | ||||||
|  |       ''; | ||||||
|  |     }) | ||||||
|  |   ]); | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 GitHub
					GitHub