mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	neovim/diagnostics: init module
This commit is contained in:
		
					parent
					
						
							
								95c991e48d
							
						
					
				
			
			
				commit
				
					
						c5bc6d503e
					
				
			
		
					 3 changed files with 109 additions and 2 deletions
				
			
		|  | @ -87,6 +87,10 @@ | |||
| - Add [oil.nvim] as an alternative file explorer. It will be available under | ||||
|   `vim.utility.oil-nvim`. | ||||
| 
 | ||||
| - Add `vim.diagnostics` to interact with Neovim's diagnostics module. Available | ||||
|   options for `vim.diagnostic.config()` can now be customized through the | ||||
|   [](#opt-vim.diagnostics.config) in nvf. | ||||
| 
 | ||||
| [amadaluzia](https://github.com/amadaluzia): | ||||
| 
 | ||||
| [haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim | ||||
|  | @ -253,8 +257,8 @@ | |||
|   [friendly-snippets](https://github.com/rafamadriz/friendly-snippets) so | ||||
|   blink.cmp can source snippets from it. | ||||
| - Fix [blink.cmp] breaking when built-in sources were modified. | ||||
| - Fix [conform.nvim] not allowing disabling formatting on and after save. | ||||
|   Use `null` value to disable them if conform is enabled. | ||||
| - Fix [conform.nvim] not allowing disabling formatting on and after save. Use | ||||
|   `null` value to disable them if conform is enabled. | ||||
| 
 | ||||
| [TheColorman](https://github.com/TheColorman): | ||||
| 
 | ||||
|  |  | |||
|  | @ -3,6 +3,7 @@ | |||
|     ./autocmds.nix | ||||
|     ./basic.nix | ||||
|     ./debug.nix | ||||
|     ./diagnostics.nix | ||||
|     ./highlight.nix | ||||
|     ./spellcheck.nix | ||||
|   ]; | ||||
|  |  | |||
							
								
								
									
										102
									
								
								modules/neovim/init/diagnostics.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								modules/neovim/init/diagnostics.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,102 @@ | |||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib.modules) mkIf; | ||||
|   inherit (lib.options) mkOption mkEnableOption literalExpression; | ||||
|   inherit (lib.types) attrsOf anything oneOf bool submodule; | ||||
|   inherit (lib.nvim.dag) entryAfter; | ||||
|   inherit (lib.nvim.types) luaInline; | ||||
|   inherit (lib.nvim.lua) toLuaObject; | ||||
| 
 | ||||
|   cfg = config.vim.diagnostics; | ||||
| 
 | ||||
|   diagnosticType = oneOf [(attrsOf anything) bool luaInline]; | ||||
|   diagnosticsSubmodule = submodule { | ||||
|     freeformType = attrsOf diagnosticType; | ||||
|     underline = mkOption { | ||||
|       type = diagnosticType; | ||||
|       default = true; | ||||
|       description = "Use underline for diagnostics."; | ||||
|     }; | ||||
| 
 | ||||
|     virtual_text = mkOption { | ||||
|       type = diagnosticType; | ||||
|       default = false; | ||||
|       example = literalExpression '' | ||||
|         { | ||||
|           format = lib.generators.mkLuaInline ''' | ||||
|             function(diagnostic) | ||||
|               return string.format("%s (%s)", diagnostic.message, diagnostic.source) | ||||
|             end | ||||
|           '''; | ||||
|         } | ||||
|       ''; | ||||
| 
 | ||||
|       description = '' | ||||
|         Use virtual text for diagnostics. If multiple diagnostics are set for a namespace, | ||||
|         one prefix per diagnostic + the last diagnostic message are shown. | ||||
|       ''; | ||||
|     }; | ||||
| 
 | ||||
|     virtual_lines = mkOption { | ||||
|       type = diagnosticType; | ||||
|       default = false; | ||||
|       description = '' | ||||
|         Use virtual lines for diagnostics. | ||||
|       ''; | ||||
|     }; | ||||
| 
 | ||||
|     signs = mkOption { | ||||
|       type = diagnosticType; | ||||
|       default = false; | ||||
|       example = { | ||||
|         signs.text = { | ||||
|           "vim.diagnostic.severity.ERROR" = " "; | ||||
|           "vim.diagnostic.severity.WARN" = " "; | ||||
|         }; | ||||
|       }; | ||||
|       description = '' | ||||
|         Use signs for diagnostics. See {command}`:help diagnostic-signs`. | ||||
|       ''; | ||||
|     }; | ||||
| 
 | ||||
|     update_in_insert = mkOption { | ||||
|       type = bool; | ||||
|       default = false; | ||||
|       description = '' | ||||
|         Update diagnostics in Insert mode. If `false`, diagnostics will | ||||
|         be updated on InsertLeave ({command}`:help InsertLeave`). | ||||
|       ''; | ||||
|     }; | ||||
|   }; | ||||
| in { | ||||
|   options.vim = { | ||||
|     diagnostics = { | ||||
|       enable = mkEnableOption "diagostics module for Neovim"; | ||||
|       config = mkOption { | ||||
|         type = diagnosticsSubmodule; | ||||
|         default = {}; | ||||
|         description = '' | ||||
|           Values that will be passed to `vim.diagnostic.config` after being converted | ||||
|           to a Lua table. Possible values for each key can be found in the help text | ||||
|           for `vim.diagnostics.Opts`. You may find more about the diagnostics API of | ||||
|           Neovim in {command}`:help diagnostic-api`. | ||||
| 
 | ||||
|           :::{.note} | ||||
|           This option is freeform. You may set values that are not present in nvf | ||||
|           documentation, but those values will not be fully type checked. Please | ||||
|           refer to the help text for `vim.diagnostic.Opts` for appropriate values. | ||||
|           ::: | ||||
|         ''; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   config.vim = mkIf cfg.enable { | ||||
|     luaConfigRC.diagnostics = entryAfter ["basic"] '' | ||||
|       vim.diagnostic.config(${toLuaObject cfg.config}) | ||||
|     ''; | ||||
|   }; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue