mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 02:52:37 +00:00 
			
		
		
		
	feat: use elixir-tools.nvim for additional highlighting
This commit is contained in:
		
					parent
					
						
							
								7a20488c05
							
						
					
				
			
			
				commit
				
					
						3071c6bb4b
					
				
			
		
					 9 changed files with 112 additions and 3 deletions
				
			
		
							
								
								
									
										17
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										17
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							|  | @ -337,6 +337,22 @@ | |||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "elixir-tools": { | ||||
|       "flake": false, | ||||
|       "locked": { | ||||
|         "lastModified": 1681453321, | ||||
|         "narHash": "sha256-7QgWrdq4p5t8WVnFhL5P948JFPR0i2C06kisxl30D2U=", | ||||
|         "owner": "elixir-tools", | ||||
|         "repo": "elixir-tools.nvim", | ||||
|         "rev": "8ccb696c048eca667486ee005f4386c0db8c5e14", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "elixir-tools", | ||||
|         "repo": "elixir-tools.nvim", | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "fidget-nvim": { | ||||
|       "flake": false, | ||||
|       "locked": { | ||||
|  | @ -1336,6 +1352,7 @@ | |||
|         "diffview-nvim": "diffview-nvim", | ||||
|         "dressing-nvim": "dressing-nvim", | ||||
|         "elixir-ls": "elixir-ls", | ||||
|         "elixir-tools": "elixir-tools", | ||||
|         "fidget-nvim": "fidget-nvim", | ||||
|         "flake-parts": "flake-parts", | ||||
|         "flake-utils": "flake-utils", | ||||
|  |  | |||
|  | @ -153,6 +153,11 @@ | |||
|       flake = false; | ||||
|     }; | ||||
| 
 | ||||
|     elixir-tools = { | ||||
|       url = "github:elixir-tools/elixir-tools.nvim"; | ||||
|       flake = false; | ||||
|     }; | ||||
| 
 | ||||
|     # Copying/Registers | ||||
|     registers = { | ||||
|       url = "github:tversteeg/registers.nvim"; | ||||
|  |  | |||
|  | @ -80,6 +80,7 @@ with lib; let | |||
|     "smartcolumn" | ||||
|     "project-nvim" | ||||
|     "elixir-ls" | ||||
|     "elixir-tools" | ||||
|   ]; | ||||
|   # You can either use the name of the plugin or a package. | ||||
|   pluginsType = with types; | ||||
|  |  | |||
|  | @ -344,7 +344,7 @@ in { | |||
| 
 | ||||
|         ${writeIf cfg.elixir.enable '' | ||||
|           lspconfig.elixirls.setup { | ||||
|             cmd = { "${pkgs.elixir-ls}/language_server.sh" }, | ||||
|             cmd = { "${lib.getExe pkgs.elixir-ls}" }, | ||||
|             on_attach = on_attach | ||||
|           } | ||||
|         ''} | ||||
|  |  | |||
|  | @ -11,7 +11,8 @@ | |||
|     ./lsp-signature | ||||
|     ./lightbulb | ||||
| 
 | ||||
|     # flutter-tools | ||||
|     ./flutter-tools-nvim | ||||
|     # language specific modules | ||||
|     ./flutter-tools-nvim # dart & flutter | ||||
|     ./elixir # elixir | ||||
|   ]; | ||||
| } | ||||
|  |  | |||
							
								
								
									
										67
									
								
								modules/lsp/elixir/config.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								modules/lsp/elixir/config.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,67 @@ | |||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: | ||||
| with lib; | ||||
| with builtins; let | ||||
|   cfg = config.vim.lsp.elixir; | ||||
| in { | ||||
|   config = mkIf (cfg.enable) { | ||||
|     vim.startPlugins = [ | ||||
|       "elixir-tools" | ||||
|       "plenary-nvim" | ||||
|     ]; | ||||
| 
 | ||||
|     vim.luaConfigRC.elixir-tools = nvim.dag.entryAnywhere '' | ||||
|         local elixir = require("elixir") | ||||
|         local elixirls = require("elixir.elixirls") | ||||
| 
 | ||||
|         elixir.setup { | ||||
|           elixirls = { | ||||
| 
 | ||||
| 
 | ||||
|           -- alternatively, point to an existing elixir-ls installation (optional) | ||||
|           -- not currently supported by elixirls, but can be a table if you wish to pass other args `{"path/to/elixirls", "--foo"}` | ||||
|           cmd = "${lib.getExe pkgs.elixir-ls}", | ||||
| 
 | ||||
|           -- default settings, use the `settings` function to override settings | ||||
|           settings = elixirls.settings { | ||||
|             dialyzerEnabled = true, | ||||
|             fetchDeps = false, | ||||
|             enableTestLenses = false, | ||||
|             suggestSpecs = false, | ||||
|           }, | ||||
| 
 | ||||
|           on_attach = function(client, bufnr) | ||||
|             local map_opts = { buffer = true, noremap = true} | ||||
| 
 | ||||
|             -- run the codelens under the cursor | ||||
|             vim.keymap.set("n", "<space>r",  vim.lsp.codelens.run, map_opts) | ||||
|             -- remove the pipe operator | ||||
|             vim.keymap.set("n", "<space>fp", ":ElixirFromPipe<cr>", map_opts) | ||||
|             -- add the pipe operator | ||||
|             vim.keymap.set("n", "<space>tp", ":ElixirToPipe<cr>", map_opts) | ||||
|             vim.keymap.set("v", "<space>em", ":ElixirExpandMacro<cr>", map_opts) | ||||
| 
 | ||||
|             -- bindings for standard LSP functions. | ||||
|             vim.keymap.set("n", "<space>df", "<cmd>lua vim.lsp.buf.format()<cr>", map_opts) | ||||
|             vim.keymap.set("n", "<space>gd", "<cmd>lua vim.diagnostic.open_float()<cr>", map_opts) | ||||
|             vim.keymap.set("n", "<space>dt", "<cmd>lua vim.lsp.buf.definition()<cr>", map_opts) | ||||
|             vim.keymap.set("n", "<space>K", "<cmd>lua vim.lsp.buf.hover()<cr>", map_opts) | ||||
|             vim.keymap.set("n", "<space>gD","<cmd>lua vim.lsp.buf.implementation()<cr>", map_opts) | ||||
|             vim.keymap.set("n", "<space>1gD","<cmd>lua vim.lsp.buf.type_definition()<cr>", map_opts) | ||||
|             -- keybinds for fzf-lsp.nvim: https://github.com/gfanto/fzf-lsp.nvim | ||||
|             -- you could also use telescope.nvim: https://github.com/nvim-telescope/telescope.nvim | ||||
|             -- there are also core vim.lsp functions that put the same data in the loclist | ||||
|             vim.keymap.set("n", "<space>gr", ":References<cr>", map_opts) | ||||
|             vim.keymap.set("n", "<space>g0", ":DocumentSymbols<cr>", map_opts) | ||||
|             vim.keymap.set("n", "<space>gW", ":WorkspaceSymbols<cr>", map_opts) | ||||
|             vim.keymap.set("n", "<leader>d", ":Diagnostics<cr>", map_opts) | ||||
|           end | ||||
|         } | ||||
|       } | ||||
|     ''; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										6
									
								
								modules/lsp/elixir/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								modules/lsp/elixir/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| _: { | ||||
|   imports = [ | ||||
|     ./config.nix | ||||
|     ./elixir-tools.nix | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										10
									
								
								modules/lsp/elixir/elixir-tools.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								modules/lsp/elixir/elixir-tools.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   ... | ||||
| }: | ||||
| with lib; | ||||
| with builtins; { | ||||
|   options.vim.lsp.elixir = { | ||||
|   }; | ||||
| } | ||||
|  | @ -45,6 +45,8 @@ with builtins; { | |||
|           graphql | ||||
|           json | ||||
|           zig | ||||
|           elixir | ||||
|           heex | ||||
|         ] | ||||
|         ++ (optional config.vim.notes.orgmode.enable org); # add orgmode grammar if enabled | ||||
|       description = '' | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 NotAShelf
				NotAShelf