mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	plugins/treesitter: generate Lua configuration from Nix
This commit is contained in:
		
					parent
					
						
							
								c8d38872ab
							
						
					
				
			
			
				commit
				
					
						616c00ab46
					
				
			
		
					 2 changed files with 110 additions and 42 deletions
				
			
		|  | @ -60,15 +60,15 @@ in { | ||||||
| 
 | 
 | ||||||
|           -- Indentation module for Treesitter |           -- Indentation module for Treesitter | ||||||
|           indent = { |           indent = { | ||||||
|             enable = true, |             enable = ${toLuaObject cfg.indent.enable}, | ||||||
|             disable = {}, |             disable = ${toLuaObject cfg.indent.disable}, | ||||||
|           }, |           }, | ||||||
| 
 | 
 | ||||||
|           -- Highlight module for Treesitter |           -- Highlight module for Treesitter | ||||||
|           highlight = { |           highlight = { | ||||||
|             enable = ${boolToString cfg.highlight.enable}, |             enable = ${toLuaObject cfg.highlight.enable}, | ||||||
|             disable = ${toLuaObject cfg.highlight.disable}, |             disable = ${toLuaObject cfg.highlight.disable}, | ||||||
|             additional_vim_regex_highlighting = false, |             additional_vim_regex_highlighting = ${toLuaObject cfg.highlight.additionalVimRegexHighlighting}, | ||||||
|           }, |           }, | ||||||
| 
 | 
 | ||||||
|           -- Indentation module for Treesitter |           -- Indentation module for Treesitter | ||||||
|  | @ -76,13 +76,14 @@ in { | ||||||
|           -- handled by `vim.maps` entries calling lua |           -- handled by `vim.maps` entries calling lua | ||||||
|           -- functions achieving the same functionality. |           -- functions achieving the same functionality. | ||||||
|           incremental_selection = { |           incremental_selection = { | ||||||
|             enable = true, |             enable = ${toLuaObject cfg.incrementalSelection.enable}, | ||||||
|             disable = {}, |             disable = ${toLuaObject cfg.incrementalSelection.disable}, | ||||||
|             keymaps = { |             keymaps = { | ||||||
|               init_selection = false, |               init_selection = false, | ||||||
|               node_incremental = false, |               node_incremental = false, | ||||||
|               scope_incremental = false, |               scope_incremental = false, | ||||||
|               node_decremental = false, |               node_decremental = false, | ||||||
|  | 
 | ||||||
|             }, |             }, | ||||||
|           }, |           }, | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ | ||||||
|   lib, |   lib, | ||||||
|   ... |   ... | ||||||
| }: let | }: let | ||||||
|   inherit (lib.options) mkOption mkEnableOption literalMD; |   inherit (lib.options) mkOption mkEnableOption literalMD literalExpression; | ||||||
|   inherit (lib.types) listOf package str either bool; |   inherit (lib.types) listOf package str either bool; | ||||||
|   inherit (lib.nvim.binds) mkMappingOption; |   inherit (lib.nvim.binds) mkMappingOption; | ||||||
|   inherit (lib.nvim.types) luaInline; |   inherit (lib.nvim.types) luaInline; | ||||||
|  | @ -20,6 +20,7 @@ in { | ||||||
| 
 | 
 | ||||||
|     fold = mkEnableOption "fold with treesitter"; |     fold = mkEnableOption "fold with treesitter"; | ||||||
|     autotagHtml = mkEnableOption "autoclose and rename html tag"; |     autotagHtml = mkEnableOption "autoclose and rename html tag"; | ||||||
|  | 
 | ||||||
|     grammars = mkOption { |     grammars = mkOption { | ||||||
|       type = listOf package; |       type = listOf package; | ||||||
|       default = []; |       default = []; | ||||||
|  | @ -32,41 +33,6 @@ in { | ||||||
|       ''; |       ''; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     highlight = { |  | ||||||
|       enable = mkEnableOption "highlighting with treesitter"; |  | ||||||
|       disable = mkOption { |  | ||||||
|         type = either (listOf str) luaInline; |  | ||||||
|         default = []; |  | ||||||
|         example = literalMD '' |  | ||||||
|           ```lua |  | ||||||
|           -- Disable slow treesitter highlight for large files |  | ||||||
|           disable = function(lang, buf) |  | ||||||
|             local max_filesize = 1000 * 1024 -- 1MB |  | ||||||
|             local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) |  | ||||||
|             if ok and stats and stats.size > max_filesize then |  | ||||||
|                 return true |  | ||||||
|             end |  | ||||||
|           end |  | ||||||
|           ``` |  | ||||||
|         ''; |  | ||||||
| 
 |  | ||||||
|         description = '' |  | ||||||
|           List of treesitter grammars to disable highlighting for. |  | ||||||
| 
 |  | ||||||
|           This option can be either a list, in which case it will be |  | ||||||
|           converted to a Lua table containing grammars to disable |  | ||||||
|           highlighting for, or a string containing a **lua function** |  | ||||||
|           that will be read as is. |  | ||||||
| 
 |  | ||||||
|           ::: {.warning} |  | ||||||
|           A comma will be added at the end of your function, so you |  | ||||||
|           do not need to add it yourself. Doing so will cause in |  | ||||||
|           syntax errors within your Neovim configuration. |  | ||||||
|           ::: |  | ||||||
|         ''; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     addDefaultGrammars = mkOption { |     addDefaultGrammars = mkOption { | ||||||
|       type = bool; |       type = bool; | ||||||
|       default = true; |       default = true; | ||||||
|  | @ -97,5 +63,106 @@ in { | ||||||
|         ::: |         ::: | ||||||
|       ''; |       ''; | ||||||
|     }; |     }; | ||||||
|  | 
 | ||||||
|  |     indent = { | ||||||
|  |       enable = mkEnableOption "indentation with treesitter" // {default = true;}; | ||||||
|  |       disable = mkOption { | ||||||
|  |         type = either (listOf str) luaInline; | ||||||
|  |         default = []; | ||||||
|  |         example = literalExpression ''["c" "rust"]''; | ||||||
|  | 
 | ||||||
|  |         description = '' | ||||||
|  |           List of treesitter grammars to disable indentation for. | ||||||
|  | 
 | ||||||
|  |           This option can be either a list, in which case it will be | ||||||
|  |           converted to a Lua table containing grammars to disable | ||||||
|  |           indentation for, or a string containing a **lua function** | ||||||
|  |           that will be read as is. | ||||||
|  | 
 | ||||||
|  |           ::: {.warning} | ||||||
|  |           A comma will be added at the end of your function, so you | ||||||
|  |           do not need to add it yourself. Doing so will cause in | ||||||
|  |           syntax errors within your Neovim configuration. | ||||||
|  |           ::: | ||||||
|  |         ''; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     highlight = { | ||||||
|  |       enable = mkEnableOption "highlighting with treesitter" // {default = true;}; | ||||||
|  |       disable = mkOption { | ||||||
|  |         type = either (listOf str) luaInline; | ||||||
|  |         default = []; | ||||||
|  |         example = literalMD '' | ||||||
|  |           ```lua | ||||||
|  |           -- Disable slow treesitter highlight for large files | ||||||
|  |           disable = function(lang, buf) | ||||||
|  |             local max_filesize = 1000 * 1024 -- 1MB | ||||||
|  |             local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) | ||||||
|  |             if ok and stats and stats.size > max_filesize then | ||||||
|  |                 return true | ||||||
|  |             end | ||||||
|  |           end | ||||||
|  |           ``` | ||||||
|  |         ''; | ||||||
|  | 
 | ||||||
|  |         description = '' | ||||||
|  |           List of treesitter grammars to disable highlighting for. | ||||||
|  | 
 | ||||||
|  |           This option can be either a list, in which case it will be | ||||||
|  |           converted to a Lua table containing grammars to disable | ||||||
|  |           highlighting for, or a string containing a **lua function** | ||||||
|  |           that will be read as is. | ||||||
|  | 
 | ||||||
|  |           ::: {.warning} | ||||||
|  |           A comma will be added at the end of your function, so you | ||||||
|  |           do not need to add it yourself. Doing so will cause in | ||||||
|  |           syntax errors within your Neovim configuration. | ||||||
|  |           ::: | ||||||
|  |         ''; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       additionalVimRegexHighlighting = mkOption { | ||||||
|  |         type = either bool (listOf str); | ||||||
|  |         default = false; | ||||||
|  |         description = '' | ||||||
|  |           Takes either a boolean or a list of languages. | ||||||
|  | 
 | ||||||
|  |           Setting this to true will run `:h syntax` and tree-sitter at the same time. | ||||||
|  |           You may this to `true` if you depend on 'syntax' being enabled (like for | ||||||
|  |           indentation). | ||||||
|  | 
 | ||||||
|  |           ::: {.note} | ||||||
|  |           Using this option may slow down your editor, and you may see some duplicate | ||||||
|  |           highlights. | ||||||
|  |           ::: | ||||||
|  |         ''; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     incrementalSelection = { | ||||||
|  |       enable = mkEnableOption "incremental selection with treesitter" // {default = true;}; | ||||||
|  |       disable = mkOption { | ||||||
|  |         type = either (listOf str) luaInline; | ||||||
|  |         default = []; | ||||||
|  |         example = literalExpression ''["c" "rust" ]''; | ||||||
|  | 
 | ||||||
|  |         description = '' | ||||||
|  |           List of treesitter grammars to disable incremental selection | ||||||
|  |           for. | ||||||
|  | 
 | ||||||
|  |           This option can be either a list, in which case it will be | ||||||
|  |           converted to a Lua table containing grammars to disable | ||||||
|  |           indentation for, or a string containing a **lua function** | ||||||
|  |           that will be read as is. | ||||||
|  | 
 | ||||||
|  |           ::: {.warning} | ||||||
|  |           A comma will be added at the end of your function, so you | ||||||
|  |           do not need to add it yourself. Doing so will cause in | ||||||
|  |           syntax errors within your Neovim configuration. | ||||||
|  |           ::: | ||||||
|  |         ''; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue