mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 02:52:37 +00:00 
			
		
		
		
	docs/configuring: add modules section
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I6a6a6964f2e65a11acab2a2f7413a5f94bff3815
This commit is contained in:
		
					parent
					
						
							
								7f3fe5caa5
							
						
					
				
			
			
				commit
				
					
						2853877219
					
				
			
		
					 2 changed files with 78 additions and 7 deletions
				
			
		|  | @ -1,21 +1,34 @@ | ||||||
| # Configuring nvf {#ch-configuring} | # Configuring nvf {#ch-configuring} | ||||||
| 
 | 
 | ||||||
|  | <!-- markdownlint-disable MD051 --> | ||||||
|  | 
 | ||||||
| [helpful tips section]: #ch-helpful-tips | [helpful tips section]: #ch-helpful-tips | ||||||
| 
 | 
 | ||||||
| nvf allows for _very_ extensive configuration in Neovim through the Nix module | <!-- markdownlint-enable MD051 --> | ||||||
| interface. The below chapters describe several of the options exposed in nvf for |  | ||||||
| your convenience. You might also be interested in the [helpful tips section] for |  | ||||||
| more advanced or unusual configuration options supported by nvf. |  | ||||||
| 
 | 
 | ||||||
| Note that this section does not cover module _options_. For an overview of all | nvf allows for _very_ extensive configuration for your Neovim setups through a | ||||||
| module options provided by nvf, please visit the [appendix](/nvf/options.html) | Nix module interface. This interface allows you to express almost everything | ||||||
|  | using a single DSL, Nix. The below chapters describe several of the options | ||||||
|  | exposed in nvf for your convenience. You might also be interested in the | ||||||
|  | [helpful tips section] for more advanced or unusual configuration options | ||||||
|  | supported by nvf such as Nix/Lua hybrid setups. | ||||||
|  | 
 | ||||||
|  | ::: {.note} | ||||||
|  | 
 | ||||||
|  | This section does not cover module _options_. For an overview of all module | ||||||
|  | options provided by nvf, please visit the [appendix](/nvf/options.html) | ||||||
|  | 
 | ||||||
|  | ::: | ||||||
| 
 | 
 | ||||||
| ```{=include=} chapters | ```{=include=} chapters | ||||||
| configuring/custom-package.md | configuring/custom-package.md | ||||||
| configuring/custom-plugins.md | configuring/custom-plugins.md | ||||||
| configuring/overriding-plugins.md | configuring/overriding-plugins.md | ||||||
|  | 
 | ||||||
|  | configuring/modules.md | ||||||
| configuring/languages.md | configuring/languages.md | ||||||
|  | configuring/autocmds.md | ||||||
|  | 
 | ||||||
| configuring/dags.md | configuring/dags.md | ||||||
| configuring/dag-entries.md | configuring/dag-entries.md | ||||||
| configuring/autocmds.md |  | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
							
								
								
									
										58
									
								
								docs/manual/configuring/modules.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								docs/manual/configuring/modules.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,58 @@ | ||||||
|  | ## Using the Module Interface {#ch-module-interface} | ||||||
|  | 
 | ||||||
|  | Before describing the module interface, it is worth nothing that NVF is a hybrid | ||||||
|  | wrapper. It does not lock you into one of Lua or Nix, and both languages are | ||||||
|  | considered first-class citizens for configuring your editor. However, Nix is the | ||||||
|  | primarily supported language for NVF. While [DAGs](#ch-using-dags) allow for the | ||||||
|  | surgical insertion of Lua code into your configuration, in most cases you will | ||||||
|  | be more interested in using or extending the Nix-based module system. | ||||||
|  | 
 | ||||||
|  | ### {#ch-using-modules} | ||||||
|  | 
 | ||||||
|  | Up until v0.6, most modules exposed all supported plugin options as individual | ||||||
|  | module options. With the release of v0.6, almost every module has been converted | ||||||
|  | to a new `setupOpts` format that provides complete user freedom over a plugin's | ||||||
|  | `setup({})` function. | ||||||
|  | 
 | ||||||
|  | The anatomy of a typical **plugin** module consists of two primary options: | ||||||
|  | 
 | ||||||
|  | `vim.<category>.<plugin>.enable` and `vim.<category>.<plugin>.setupOpts`. The | ||||||
|  | first option is disabled by default, and dictates whether the plugin is enabled. | ||||||
|  | If set to `true`, the plugin will be enabled and added to your Neovim's runtime | ||||||
|  | path. The second is an attribute set (`{}`) that will be converted to the | ||||||
|  | plugin's setup table. From Lua-based setups you may be used to something like | ||||||
|  | this: | ||||||
|  | 
 | ||||||
|  | ```lua | ||||||
|  | require("nvim-autopairs").setup({ | ||||||
|  |   check_ts = true, | ||||||
|  |   disable_filetype = { "TelescopePrompt", "vim" } | ||||||
|  | }) | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | This is the typical setup table. It is sometimes expressed slightly differently | ||||||
|  | (e.g., the table might be stored as a variable) but the gist is that you pass a | ||||||
|  | table to the `setup()` function. The principle of `setupOpts` is the same. It | ||||||
|  | converts a Nix attribute set to a Lua table using the `toLuaObject` function | ||||||
|  | located in nvf's extended library. The same configuration would be expressed in | ||||||
|  | Nix as follows: | ||||||
|  | 
 | ||||||
|  | ```nix | ||||||
|  | { | ||||||
|  |   setupOpts = { | ||||||
|  |     check_ts = true; # boolean | ||||||
|  |     disable_filetype = ["TelescopePrompt" "vim"]; # Lua table | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | <!-- markdownlint-disable MD051 MD059 --> | ||||||
|  | 
 | ||||||
|  | The `setupOpts` option is freeform, so anything you put in it will be converted | ||||||
|  | to its Lua equivalent and will appear in your built `init.lua`. You can find | ||||||
|  | details about `toLuaObject` [here](#sec-details-of-toluaobject). The top-level | ||||||
|  | DAG entries in **nvf** are documented in the [DAG entries](#ch-dag-entries) | ||||||
|  | section. You can read more about DAGs in the [using DAGs](#ch-using-dags) | ||||||
|  | section. | ||||||
|  | 
 | ||||||
|  | <!-- markdownlint-enable MD051 MD059 --> | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue