mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 02:52:37 +00:00 
			
		
		
		
	feat(todo-comments): custom setup
This commit is contained in:
		
					parent
					
						
							
								2feaadc266
							
						
					
				
			
			
				commit
				
					
						3f4ef987dd
					
				
			
		
					 2 changed files with 45 additions and 38 deletions
				
			
		|  | @ -4,11 +4,11 @@ | |||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib.modules) mkIf mkMerge; | ||||
|   inherit (lib.nvim.binds) mkBinding; | ||||
|   inherit (lib) mkMerge mkBinding mkIf; | ||||
|   inherit (lib.nvim.lua) toLuaObject; | ||||
| 
 | ||||
|   cfg = config.vim.notes.todo-comments; | ||||
|   self = import ./todo-comments.nix {inherit lib;}; | ||||
|   self = import ./todo-comments.nix {inherit pkgs lib;}; | ||||
|   inherit (self.options.vim.notes.todo-comments) mappings; | ||||
| in { | ||||
|   config = mkIf cfg.enable { | ||||
|  | @ -24,28 +24,7 @@ in { | |||
|       ]; | ||||
| 
 | ||||
|       luaConfigRC.todo-comments = '' | ||||
|         require('todo-comments').setup { | ||||
|           highlight = { | ||||
|             before = "", -- "fg" or "bg" or empty | ||||
|             keyword = "bg", -- "fg", "bg", "wide" or empty | ||||
|             after = "fg", -- "fg" or "bg" or empty | ||||
|             pattern = ${cfg.patterns.highlight}, | ||||
|             comments_only = true, -- uses treesitter to match keywords in comments only | ||||
|             max_line_len = 400, -- ignore lines longer than this | ||||
|             exclude = {}, -- list of file types to exclude highlighting | ||||
|           }, | ||||
|           search = { | ||||
|             command = "${pkgs.ripgrep}/bin/rg", | ||||
|             args = { | ||||
|               "--color=never", | ||||
|               "--no-heading", | ||||
|               "--with-filename", | ||||
|               "--line-number", | ||||
|               "--column", | ||||
|             }, | ||||
|             pattern = ${cfg.patterns.search}, | ||||
|           }, | ||||
|         } | ||||
|         require('todo-comments').setup(${toLuaObject cfg.setupOpts}) | ||||
|       ''; | ||||
|     }; | ||||
|   }; | ||||
|  |  | |||
|  | @ -1,22 +1,50 @@ | |||
| {lib, ...}: let | ||||
|   inherit (lib.options) mkOption mkEnableOption; | ||||
|   inherit (lib.types) str; | ||||
|   inherit (lib.nvim.binds) mkMappingOption; | ||||
| { | ||||
|   pkgs, | ||||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib) mkEnableOption mkOption types mkMappingOption mkRenamedOptionModule; | ||||
| in { | ||||
|   imports = let | ||||
|     renamedSetupOption = oldPath: newPath: | ||||
|       mkRenamedOptionModule | ||||
|       (["vim" "notes" "todo-comments"] ++ oldPath) | ||||
|       (["vim" "notes" "todo-comments" "setupOpts"] ++ newPath); | ||||
|   in [ | ||||
|     (renamedSetupOption ["patterns" "highlight"] ["highlight" "pattern"]) | ||||
|     (renamedSetupOption ["patterns" "search"] ["search" "pattern"]) | ||||
|   ]; | ||||
| 
 | ||||
|   options.vim.notes.todo-comments = { | ||||
|     enable = mkEnableOption "todo-comments: highlight and search for todo comments like TODO, HACK, BUG in your code base"; | ||||
| 
 | ||||
|     patterns = { | ||||
|       highlight = mkOption { | ||||
|         type = str; | ||||
|         default = ''[[.*<(KEYWORDS)(\([^\)]*\))?:]]''; | ||||
|         description = "vim regex pattern used for highlighting comments"; | ||||
|     setupOpts = lib.nvim.types.mkPluginSetupOption "todo-comments.nvim" { | ||||
|       highlight = { | ||||
|         pattern = mkOption { | ||||
|           type = types.str; | ||||
|           default = ''.*<(KEYWORDS)(\([^\)]*\))?:''; | ||||
|           description = "vim regex pattern used for highlighting comments"; | ||||
|         }; | ||||
|       }; | ||||
| 
 | ||||
|       search = mkOption { | ||||
|         type = str; | ||||
|         default = ''[[\b(KEYWORDS)(\([^\)]*\))?:]]''; | ||||
|         description = "ripgrep regex pattern used for searching comments"; | ||||
|       search = { | ||||
|         pattern = mkOption { | ||||
|           type = types.str; | ||||
|           default = ''\b(KEYWORDS)(\([^\)]*\))?:''; | ||||
|           description = "ripgrep regex pattern used for searching comments"; | ||||
|         }; | ||||
| 
 | ||||
|         command = mkOption { | ||||
|           type = types.str; | ||||
|           default = "${pkgs.ripgrep}/bin/rg"; | ||||
|           description = "search command"; | ||||
|         }; | ||||
| 
 | ||||
|         args = mkOption { | ||||
|           type = types.listOf types.str; | ||||
|           default = ["--color=never" "--no-heading" "--with-filename" "--line-number" "--column"]; | ||||
|           description = "arguments to pass to the search command"; | ||||
|         }; | ||||
|       }; | ||||
|     }; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ching Pei Yang
				Ching Pei Yang