mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	plugins/treesitter: add an internal defaultGrammars options
		
	This commit is contained in:
		
					parent
					
						
							
								495e7620d2
							
						
					
				
			
			
				commit
				
					
						7fd653b4d8
					
				
			
		
					 4 changed files with 51 additions and 106 deletions
				
			
		|  | @ -1,5 +1,6 @@ | |||
| { | ||||
|   config, | ||||
|   pkgs, | ||||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|  | @ -11,7 +12,7 @@ | |||
|   cfg = config.vim.treesitter; | ||||
|   usingNvimCmp = config.vim.autocomplete.enable && config.vim.autocomplete.type == "nvim-cmp"; | ||||
| 
 | ||||
|   self = import ./treesitter.nix {inherit lib;}; | ||||
|   self = import ./treesitter.nix {inherit pkgs lib;}; | ||||
|   mappingDefinitions = self.options.vim.treesitter.mappings; | ||||
|   mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions; | ||||
| in { | ||||
|  | @ -32,7 +33,6 @@ in { | |||
|           (mkSetBinding mappings.incrementalSelection.decrementByNode ":lua require('nvim-treesitter.incremental_selection').node_decremental()<CR>") | ||||
|         ]; | ||||
|       }; | ||||
| 
 | ||||
|       # For some reason treesitter highlighting does not work on start if this is set before syntax on | ||||
|       configRC.treesitter-fold = mkIf cfg.fold (entryBefore ["basic"] '' | ||||
|         set foldmethod=expr | ||||
|  | @ -42,14 +42,18 @@ in { | |||
| 
 | ||||
|       luaConfigRC.treesitter = entryAnywhere '' | ||||
|         require'nvim-treesitter.configs'.setup { | ||||
|           -- Disable imperative treesitter options that would attempt to fetch | ||||
|           -- grammars into the read-only Nix store. To add additionall grammars here | ||||
|           -- you must use the `config.vim.treesitter.grammars` option. | ||||
|           auto_install = false, | ||||
|           sync_install = false, | ||||
|           ensure_installed = {}, | ||||
| 
 | ||||
|           highlight = { | ||||
|             enable = true, | ||||
|             disable = {}, | ||||
|           }, | ||||
| 
 | ||||
|           auto_install = false, | ||||
|           ensure_installed = {}, | ||||
| 
 | ||||
|           incremental_selection = { | ||||
|             enable = true, | ||||
|             keymaps = { | ||||
|  |  | |||
|  | @ -1,89 +0,0 @@ | |||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib.options) mkOption mkEnableOption; | ||||
|   inherit (lib.types) int bool str nullOr enum; | ||||
|   inherit (lib.modules) mkIf; | ||||
|   inherit (lib.trivial) boolToString; | ||||
|   inherit (lib.nvim.lua) nullString; | ||||
|   inherit (lib.nvim.dag) entryAnywhere; | ||||
| 
 | ||||
|   inherit (config.vim) treesitter; | ||||
|   cfg = treesitter.context; | ||||
| in { | ||||
|   options.vim.treesitter.context = { | ||||
|     enable = mkEnableOption "context of current buffer contents [nvim-treesitter-context] "; | ||||
| 
 | ||||
|     maxLines = mkOption { | ||||
|       description = "How many lines the window should span. Values <=0 mean no limit."; | ||||
|       type = int; | ||||
|       default = 0; | ||||
|     }; | ||||
| 
 | ||||
|     minWindowHeight = mkOption { | ||||
|       description = "Minimum editor window height to enable context. Values <= 0 mean no limit."; | ||||
|       type = int; | ||||
|       default = 0; | ||||
|     }; | ||||
| 
 | ||||
|     lineNumbers = mkOption { | ||||
|       description = ""; | ||||
|       type = bool; | ||||
|       default = true; | ||||
|     }; | ||||
| 
 | ||||
|     multilineThreshold = mkOption { | ||||
|       description = "Maximum number of lines to collapse for a single context line."; | ||||
|       type = int; | ||||
|       default = 20; | ||||
|     }; | ||||
| 
 | ||||
|     trimScope = mkOption { | ||||
|       description = "Which context lines to discard if [](#opt-vim.treesitter.context.maxLines) is exceeded."; | ||||
|       type = enum ["inner" "outer"]; | ||||
|       default = "outer"; | ||||
|     }; | ||||
| 
 | ||||
|     mode = mkOption { | ||||
|       description = "Line used to calculate context."; | ||||
|       type = enum ["cursor" "topline"]; | ||||
|       default = "cursor"; | ||||
|     }; | ||||
| 
 | ||||
|     separator = mkOption { | ||||
|       description = '' | ||||
|         Separator between context and content. Should be a single character string, like '-'. | ||||
| 
 | ||||
|         When separator is set, the context will only show up when there are at least 2 lines above cursorline. | ||||
|       ''; | ||||
|       type = nullOr str; | ||||
|       default = null; | ||||
|     }; | ||||
| 
 | ||||
|     zindex = mkOption { | ||||
|       description = "The Z-index of the context window."; | ||||
|       type = int; | ||||
|       default = 20; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   config = mkIf (treesitter.enable && cfg.enable) { | ||||
|     vim.startPlugins = ["nvim-treesitter-context"]; | ||||
| 
 | ||||
|     vim.luaConfigRC.treesitter-context = entryAnywhere '' | ||||
|       require'treesitter-context'.setup { | ||||
|         enable = true, | ||||
|         max_lines = ${toString cfg.maxLines}, | ||||
|         min_window_height = ${toString cfg.minWindowHeight}, | ||||
|         line_numbers = ${boolToString cfg.lineNumbers}, | ||||
|         multiline_threshold = ${toString cfg.multilineThreshold}, | ||||
|         trim_scope = '${cfg.trimScope}', | ||||
|         mode = '${cfg.mode}', | ||||
|         separator = ${nullString cfg.separator}, | ||||
|         max_lines = ${toString cfg.zindex}, | ||||
|       } | ||||
|     ''; | ||||
|   }; | ||||
| } | ||||
|  | @ -1,7 +1,9 @@ | |||
| { | ||||
|   imports = [ | ||||
|     # treesitter extras | ||||
|     ./ts-context | ||||
| 
 | ||||
|     ./treesitter.nix | ||||
|     ./context.nix | ||||
|     ./config.nix | ||||
|   ]; | ||||
| } | ||||
|  |  | |||
|  | @ -1,20 +1,16 @@ | |||
| {lib, ...}: let | ||||
| { | ||||
|   pkgs, | ||||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib.options) mkOption mkEnableOption; | ||||
|   inherit (lib.nvim.binds) mkMappingOption; | ||||
|   inherit (lib.types) listOf package; | ||||
| 
 | ||||
|   inherit (pkgs.vimPlugins.nvim-treesitter) builtGrammars; | ||||
| in { | ||||
|   options.vim.treesitter = { | ||||
|     enable = mkEnableOption "treesitter, also enabled automatically through language options"; | ||||
|     fold = mkEnableOption "fold with treesitter"; | ||||
|     autotagHtml = mkEnableOption "autoclose and rename html tag"; | ||||
|     grammars = mkOption { | ||||
|       type = listOf package; | ||||
|       default = []; | ||||
|       description = '' | ||||
|         List of treesitter grammars to install. For supported languages | ||||
|         use the `vim.language.<lang>.treesitter` option | ||||
|       ''; | ||||
|     }; | ||||
| 
 | ||||
|     mappings.incrementalSelection = { | ||||
|       init = mkMappingOption "Init selection [treesitter]" "gnn"; | ||||
|  | @ -22,5 +18,37 @@ in { | |||
|       incrementByScope = mkMappingOption "Increment selection by scope [treesitter]" "grc"; | ||||
|       decrementByNode = mkMappingOption "Decrement selection by node [treesitter]" "grm"; | ||||
|     }; | ||||
| 
 | ||||
|     fold = mkEnableOption "fold with treesitter"; | ||||
|     autotagHtml = mkEnableOption "autoclose and rename html tag"; | ||||
|     grammars = mkOption { | ||||
|       type = listOf package; | ||||
|       default = []; | ||||
|       description = '' | ||||
|         List of treesitter grammars to install. | ||||
| 
 | ||||
|         For languages already supported by neovim-flake, you may | ||||
|         use the {option}`vim.language.<lang>.treesitter` options, which | ||||
|         will automatically add the required grammars to this. | ||||
|       ''; | ||||
|     }; | ||||
| 
 | ||||
|     defaultGrammars = mkOption { | ||||
|       internal = true; | ||||
|       readOnly = true; | ||||
|       type = listOf package; | ||||
|       default = with builtGrammars; [c lua vim vimdoc query]; | ||||
|       description = '' | ||||
|         A list of treesitter grammars that will be installed by default | ||||
|         if treesitter has been enabled. | ||||
| 
 | ||||
|         ::: {.warning} | ||||
|         Regardless of which language module options you enable, Neovim | ||||
|         depends on those grammars to be enabled while treesitter is enabled. | ||||
|         This list cannot be modified, but its contents will only be appended | ||||
|         if the list of grammars does not contain the required grammars. | ||||
|         ::: | ||||
|       ''; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue