mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	Merge pull request #177 from NotAShelf/nixos-option-docs
docs: use nixosOptionDocs
This commit is contained in:
		
				commit
				
					
						7bcfea2bd1
					
				
			
		
					 17 changed files with 101 additions and 36 deletions
				
			
		|  | @ -29,25 +29,68 @@ | ||||||
|     ]; |     ]; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  |   githubDeclaration = user: repo: subpath: let | ||||||
|  |     urlRef = "main"; | ||||||
|  |   in { | ||||||
|  |     url = "https://github.com/${user}/${repo}/blob/${urlRef}/${subpath}"; | ||||||
|  |     name = "<${repo}/${subpath}>"; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|   dontCheckDefinitions = {_module.check = false;}; |   dontCheckDefinitions = {_module.check = false;}; | ||||||
| 
 | 
 | ||||||
|   nvimModuleDocs = nmd.buildModulesDocs { |   nvimPath = toString ./..; | ||||||
|  | 
 | ||||||
|  |   buildOptionsDocs = args @ { | ||||||
|  |     modules, | ||||||
|  |     includeModuleSystemsOptions ? true, | ||||||
|  |     ... | ||||||
|  |   }: let | ||||||
|  |     options = (lib.evalModules {inherit modules;}).options; | ||||||
|  |   in | ||||||
|  |     pkgs.buildPackages.nixosOptionsDoc | ||||||
|  |     ({ | ||||||
|  |         options = | ||||||
|  |           if includeModuleSystemsOptions | ||||||
|  |           then options | ||||||
|  |           else builtins.removeAttrs (options ["_module"]); | ||||||
|  |         transformOptions = opt: | ||||||
|  |           opt | ||||||
|  |           // { | ||||||
|  |             # Clean up declaration sites to not refer to local source tree | ||||||
|  |             declarations = | ||||||
|  |               map | ||||||
|  |               (decl: | ||||||
|  |                 if lib.hasPrefix nvimPath (toString decl) | ||||||
|  |                 then | ||||||
|  |                   githubDeclaration "notashelf" "neovim-flake" | ||||||
|  |                   (lib.removePrefix "/" (lib.removePrefix nvimPath (toString decl))) | ||||||
|  |                 else decl) | ||||||
|  |               opt.declarations; | ||||||
|  |           }; | ||||||
|  |       } | ||||||
|  |       // builtins.removeAttrs args ["modules" "includeModuleSystemsOptions"]); | ||||||
|  | 
 | ||||||
|  |   nvimModuleDocs = buildOptionsDocs { | ||||||
|     modules = |     modules = | ||||||
|       import ../modules/modules.nix { |       import ../modules/modules.nix | ||||||
|  |       { | ||||||
|         inherit pkgs lib; |         inherit pkgs lib; | ||||||
|         check = false; |         check = false; | ||||||
|       } |       } | ||||||
|       ++ [scrubbedPkgsModule dontCheckDefinitions]; |       ++ [scrubbedPkgsModule]; | ||||||
|     moduleRootPaths = [./..]; |     variablelistId = "neovim-flake-options"; | ||||||
|     mkModuleUrl = path: "https://github.com/notashelf/neovim-flake/blob/main/${path}#blob-path"; |  | ||||||
|     channelName = "neovim-flake"; |  | ||||||
|     docBook.id = "neovim-flake-options"; |  | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   docs = nmd.buildDocBookDocs { |   docs = nmd.buildDocBookDocs { | ||||||
|     pathName = "neovim-flake"; |     pathName = "neovim-flake"; | ||||||
|     projectName = "neovim-flake"; |     projectName = "neovim-flake"; | ||||||
|     modulesDocs = [nvimModuleDocs]; |     modulesDocs = [ | ||||||
|  |       { | ||||||
|  |         docBook = pkgs.linkFarm "nvim-module-docs-for-nmd" { | ||||||
|  |           "nmd-result/neovim-flake-options.xml" = nvimModuleDocs.optionsDocBook; | ||||||
|  |         }; | ||||||
|  |       } | ||||||
|  |     ]; | ||||||
|     documentsDirectory = ./.; |     documentsDirectory = ./.; | ||||||
|     documentType = "book"; |     documentType = "book"; | ||||||
|     chunkToc = '' |     chunkToc = '' | ||||||
|  | @ -65,7 +108,24 @@ | ||||||
|     ''; |     ''; | ||||||
|   }; |   }; | ||||||
| in { | in { | ||||||
|   options.json = nvimModuleDocs.json.override {path = "share/doc/neovim-flake/options.json";}; |   options.json = | ||||||
|   manPages = docs.manPages; |     pkgs.runCommand "options.json" | ||||||
|  |     # TODO: Use `nvimOptionsDoc.optionsJSON` directly once upstream | ||||||
|  |     # `nixosOptionsDoc` is more customizable | ||||||
|  |     { | ||||||
|  |       meta.description = "List of neovim-flake options in JSON format"; | ||||||
|  |     } '' | ||||||
|  |       mkdir -p $out/{share/doc,nix-support} | ||||||
|  |       cp -a ${nvimModuleDocs.optionsJSON}/share/doc/nixos $out/share/doc/neovim-flake | ||||||
|  |       substitute \ | ||||||
|  |        ${nvimModuleDocs.optionsJSON}/nix-support/hydra-build-products \ | ||||||
|  |        $out/nix-support/hydra-build-products \ | ||||||
|  |        --replace \ | ||||||
|  |         '${nvimModuleDocs.optionsJSON}/share/doc/nixos' \ | ||||||
|  |         "$out/share/doc/neovim-flake" | ||||||
|  |     ''; | ||||||
|  | 
 | ||||||
|  |   inherit (docs) manPages; | ||||||
|  | 
 | ||||||
|   manual = {inherit (docs) html htmlOpenTool;}; |   manual = {inherit (docs) html htmlOpenTool;}; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -45,6 +45,6 @@ | ||||||
|   <para> |   <para> | ||||||
|    You can use the following options in your neovim configuration. |    You can use the following options in your neovim configuration. | ||||||
|   </para> |   </para> | ||||||
|   <xi:include href="./nmd-result/neovim-flake-options.xml"/> |   <xi:include href="./nmd-result/neovim-flake-options.xml" xpointer="neovim-flake-options"/> | ||||||
|  </refsection> |  </refsection> | ||||||
| </refentry> | </refentry> | ||||||
|  |  | ||||||
|  | @ -25,7 +25,6 @@ | ||||||
|  <xi:include href="manual/hacking.xml"/> |  <xi:include href="manual/hacking.xml"/> | ||||||
|  <appendix xml:id="ch-options"> |  <appendix xml:id="ch-options"> | ||||||
|   <title>Configuration Options</title> |   <title>Configuration Options</title> | ||||||
|   <xi:include href="./nmd-result/neovim-flake-options.xml" /> |   <xi:include href="./nmd-result/neovim-flake-options.xml" xpointer="neovim-flake-options" /> | ||||||
|  </appendix> |  </appendix> | ||||||
|  <xi:include href="./release-notes/release-notes.xml" /> |  | ||||||
| </book> | </book> | ||||||
|  |  | ||||||
|  | @ -144,6 +144,7 @@ For example: | ||||||
| [source,nix] | [source,nix] | ||||||
| ---- | ---- | ||||||
| # parent modules should always be unfolded | # parent modules should always be unfolded | ||||||
|  | # which means module = { value = ... } instead of module.value = { ... } | ||||||
| module = { | module = { | ||||||
|     value = mkEnableOption "some description" // { default = true; }; # merges can be done inline where possible |     value = mkEnableOption "some description" // { default = true; }; # merges can be done inline where possible | ||||||
| 
 | 
 | ||||||
|  | @ -202,7 +203,7 @@ without any error messages (you can check the output of `:messages` inside neovi | ||||||
| your changes are good to go. Open your pull request, and it will be reviewed as soon as posssible. | your changes are good to go. Open your pull request, and it will be reviewed as soon as posssible. | ||||||
| 
 | 
 | ||||||
| If it is not a new module, but a change to an existing one, then make sure the module you have changed is enabled in the | If it is not a new module, but a change to an existing one, then make sure the module you have changed is enabled in the | ||||||
| maximal configuration by editing configuration.nix, and then run it with `nix run .#maximal -Lv`. Same procedure as | maximal configuration by editing `configuration.nix`, and then run it with `nix run .#maximal -Lv`. Same procedure as | ||||||
| adding a new module will apply here. | adding a new module will apply here. | ||||||
| 
 | 
 | ||||||
| [[sec-keybinds]] | [[sec-keybinds]] | ||||||
|  |  | ||||||
|  | @ -74,6 +74,11 @@ https://github.com/notashelf[notashelf]: | ||||||
| 
 | 
 | ||||||
| * Added `nvim-docs-view`, a plugin to display lsp hover documentation in a side panel | * Added `nvim-docs-view`, a plugin to display lsp hover documentation in a side panel | ||||||
| 
 | 
 | ||||||
|  | * Switched to `nixosOptionsDoc` in option documentation. | ||||||
|  | To quote home-manager commit: "Output is mostly unchanged aside from some minor typographical and | ||||||
|  | formatting changes, along with better source links." | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| https://github.com/jacekpoz[jacekpoz]: | https://github.com/jacekpoz[jacekpoz]: | ||||||
| 
 | 
 | ||||||
| * Fixed scrollOffset not being used | * Fixed scrollOffset not being used | ||||||
|  |  | ||||||
|  | @ -3,6 +3,5 @@ | ||||||
|   booleans = import ./booleans.nix {inherit lib;}; |   booleans = import ./booleans.nix {inherit lib;}; | ||||||
|   types = import ./types {inherit lib;}; |   types = import ./types {inherit lib;}; | ||||||
|   languages = import ./languages.nix {inherit lib;}; |   languages = import ./languages.nix {inherit lib;}; | ||||||
|   nmd = import ./nmd.nix; |  | ||||||
|   lua = import ./lua.nix {inherit lib;}; |   lua = import ./lua.nix {inherit lib;}; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -70,5 +70,4 @@ in | ||||||
| 
 | 
 | ||||||
|     # For forward compatibility. |     # For forward compatibility. | ||||||
|     literalExpression = super.literalExpression or super.literalExample; |     literalExpression = super.literalExpression or super.literalExample; | ||||||
|     literalDocBook = super.literalDocBook or super.literalExample; |  | ||||||
|   }) |   }) | ||||||
|  |  | ||||||
|  | @ -112,6 +112,7 @@ with lib; let | ||||||
|       options = { |       options = { | ||||||
|         package = mkOption { |         package = mkOption { | ||||||
|           type = pluginType; |           type = pluginType; | ||||||
|  |           description = "Plugin Package."; | ||||||
|         }; |         }; | ||||||
|         after = mkOption { |         after = mkOption { | ||||||
|           type = listOf str; |           type = listOf str; | ||||||
|  |  | ||||||
|  | @ -15,7 +15,7 @@ with builtins; { | ||||||
|         map_cr = mkOption { |         map_cr = mkOption { | ||||||
|           type = types.bool; |           type = types.bool; | ||||||
|           default = true; |           default = true; | ||||||
|           description = nvim.nmd.asciiDoc ''map <CR> on insert mode''; |           description = ''map <CR> on insert mode''; | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|         map_complete = mkOption { |         map_complete = mkOption { | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ with builtins; { | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|       sources = mkOption { |       sources = mkOption { | ||||||
|         description = nvim.nmd.asciiDoc '' |         description = '' | ||||||
|           Attribute set of source names for nvim-cmp. |           Attribute set of source names for nvim-cmp. | ||||||
| 
 | 
 | ||||||
|           If an attribute set is provided, then the menu value of |           If an attribute set is provided, then the menu value of | ||||||
|  | @ -40,23 +40,22 @@ with builtins; { | ||||||
| 
 | 
 | ||||||
|       formatting = { |       formatting = { | ||||||
|         format = mkOption { |         format = mkOption { | ||||||
|           description = nvim.nmd.asciiDoc '' |           description = '' | ||||||
|             The function used to customize the appearance of the completion menu. |             The function used to customize the appearance of the completion menu. | ||||||
| 
 | 
 | ||||||
|             If <<opt-vim.lsp.lspkind.enable>> is true, then the function |             If [](#opt-vim.lsp.lspkind.enable) is true, then the function | ||||||
|             will be called before modifications from lspkind. |             will be called before modifications from lspkind. | ||||||
| 
 | 
 | ||||||
|             Default is to call the menu mapping function. |             Default is to call the menu mapping function. | ||||||
|           ''; |           ''; | ||||||
|           type = types.str; |           type = types.str; | ||||||
|           default = "nvim_cmp_menu_map"; |           default = "nvim_cmp_menu_map"; | ||||||
|           example = nvim.nmd.literalAsciiDoc '' |           example = lib.literalMD '' | ||||||
|             [source,lua] |             ```lua | ||||||
|             --- |  | ||||||
|             function(entry, vim_item) |             function(entry, vim_item) | ||||||
|               return vim_item |               return vim_item | ||||||
|             end |             end | ||||||
|             --- |             ``` | ||||||
|           ''; |           ''; | ||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
|  |  | ||||||
|  | @ -27,23 +27,23 @@ with builtins; let | ||||||
|   mapConfigOptions = { |   mapConfigOptions = { | ||||||
|     silent = |     silent = | ||||||
|       mkBool false |       mkBool false | ||||||
|       (nvim.nmd.asciiDoc "Whether this mapping should be silent. Equivalent to adding <silent> to a map."); |       "Whether this mapping should be silent. Equivalent to adding <silent> to a map."; | ||||||
| 
 | 
 | ||||||
|     nowait = |     nowait = | ||||||
|       mkBool false |       mkBool false | ||||||
|       (nvim.nmd.asciiDoc "Whether to wait for extra input on ambiguous mappings. Equivalent to adding <nowait> to a map."); |       "Whether to wait for extra input on ambiguous mappings. Equivalent to adding <nowait> to a map."; | ||||||
| 
 | 
 | ||||||
|     script = |     script = | ||||||
|       mkBool false |       mkBool false | ||||||
|       (nvim.nmd.asciiDoc "Equivalent to adding <script> to a map."); |       "Equivalent to adding <script> to a map."; | ||||||
| 
 | 
 | ||||||
|     expr = |     expr = | ||||||
|       mkBool false |       mkBool false | ||||||
|       (nvim.nmd.asciiDoc "Means that the action is actually an expression. Equivalent to adding <expr> to a map."); |       "Means that the action is actually an expression. Equivalent to adding <expr> to a map."; | ||||||
| 
 | 
 | ||||||
|     unique = |     unique = | ||||||
|       mkBool false |       mkBool false | ||||||
|       (nvim.nmd.asciiDoc "Whether to fail if the map is already defined. Equivalent to adding <unique> to a map."); |       "Whether to fail if the map is already defined. Equivalent to adding <unique> to a map."; | ||||||
| 
 | 
 | ||||||
|     noremap = |     noremap = | ||||||
|       mkBool true |       mkBool true | ||||||
|  |  | ||||||
|  | @ -580,6 +580,7 @@ with builtins; { | ||||||
| 
 | 
 | ||||||
|             icons = mkOption { |             icons = mkOption { | ||||||
|               type = types.attrs; |               type = types.attrs; | ||||||
|  |               description = "Individual elements of the indent markers"; | ||||||
|               default = { |               default = { | ||||||
|                 corner = "└"; |                 corner = "└"; | ||||||
|                 edge = "│"; |                 edge = "│"; | ||||||
|  |  | ||||||
|  | @ -84,7 +84,7 @@ in { | ||||||
|         default = "auto"; |         default = "auto"; | ||||||
|         # TODO: xml generation error if the closing '' is on a new line. |         # TODO: xml generation error if the closing '' is on a new line. | ||||||
|         # issue: https://gitlab.com/rycee/nmd/-/issues/10 |         # issue: https://gitlab.com/rycee/nmd/-/issues/10 | ||||||
|         defaultText = nvim.nmd.literalAsciiDoc ''`config.vim.theme.name` if theme supports lualine else "auto"''; |         defaultText = ''`config.vim.theme.name` if theme supports lualine else "auto"''; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|     sectionSeparator = { |     sectionSeparator = { | ||||||
|  |  | ||||||
|  | @ -37,7 +37,7 @@ in { | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     trimScope = mkOption { |     trimScope = mkOption { | ||||||
|       description = nvim.nmd.asciiDoc "Which context lines to discard if <<opt-vim.treesitter.context.maxLines>> is exceeded."; |       description = "Which context lines to discard if [](#opt-vim.treesitter.context.maxLines) is exceeded."; | ||||||
|       type = types.enum ["inner" "outer"]; |       type = types.enum ["inner" "outer"]; | ||||||
|       default = "outer"; |       default = "outer"; | ||||||
|     }; |     }; | ||||||
|  | @ -49,7 +49,7 @@ in { | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     separator = mkOption { |     separator = mkOption { | ||||||
|       description = nvim.nmd.asciiDoc '' |       description = '' | ||||||
|         Separator between context and content. Should be a single character string, like '-'. |         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. |         When separator is set, the context will only show up when there are at least 2 lines above cursorline. | ||||||
|  |  | ||||||
|  | @ -19,7 +19,7 @@ with lib; { | ||||||
|     grammars = mkOption { |     grammars = mkOption { | ||||||
|       type = with types; listOf package; |       type = with types; listOf package; | ||||||
|       default = []; |       default = []; | ||||||
|       description = nvim.nmd.asciiDoc '' |       description = '' | ||||||
|         List of treesitter grammars to install. For supported languages |         List of treesitter grammars to install. For supported languages | ||||||
|         use the `vim.language.<lang>.treesitter` option |         use the `vim.language.<lang>.treesitter` option | ||||||
|       ''; |       ''; | ||||||
|  |  | ||||||
|  | @ -305,6 +305,7 @@ in { | ||||||
|         reorient = mkOption { |         reorient = mkOption { | ||||||
|           type = types.enum ["smart" "top" "mid" "none"]; |           type = types.enum ["smart" "top" "mid" "none"]; | ||||||
|           default = "smart"; |           default = "smart"; | ||||||
|  |           description = "reorient buffer after changing nodes"; | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|         scrolloff = mkOption { |         scrolloff = mkOption { | ||||||
|  |  | ||||||
|  | @ -80,8 +80,8 @@ in { | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|       showEndOfLine = mkOption { |       showEndOfLine = mkOption { | ||||||
|         description = nvim.nmd.asciiDoc '' |         description = '' | ||||||
|           Displays the end of line character set by <<opt-vim.visuals.indentBlankline.eolChar>> instead of the |           Displays the end of line character set by [](#opt-vim.visuals.indentBlankline.eolChar) instead of the | ||||||
|           indent guide on line returns. |           indent guide on line returns. | ||||||
|         ''; |         ''; | ||||||
|         type = types.bool; |         type = types.bool; | ||||||
|  | @ -110,7 +110,7 @@ in { | ||||||
|       highlightForCount = mkOption { |       highlightForCount = mkOption { | ||||||
|         type = types.bool; |         type = types.bool; | ||||||
|         default = true; |         default = true; | ||||||
|         description = nvim.nmd.literalAsciiDoc '' |         description = '' | ||||||
|           Enable support for highlighting when a <count> is provided before the key |           Enable support for highlighting when a <count> is provided before the key | ||||||
|           If set to false it will only highlight when the mapping is not prefixed with a <count> |           If set to false it will only highlight when the mapping is not prefixed with a <count> | ||||||
|         ''; |         ''; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 GitHub
					GitHub