Merge pull request #177 from NotAShelf/nixos-option-docs

docs: use nixosOptionDocs
This commit is contained in:
NotAShelf 2023-11-06 11:27:56 +03:00 committed by GitHub
commit 7bcfea2bd1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 101 additions and 36 deletions

View File

@ -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;};
} }

View File

@ -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>

View File

@ -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>

View File

@ -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]]

View File

@ -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

View File

@ -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;};
} }

View File

@ -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;
}) })

View File

@ -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;

View File

@ -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 {

View File

@ -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
--- ```
''; '';
}; };
}; };

View File

@ -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

View File

@ -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 = "";

View File

@ -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 = {

View File

@ -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.

View File

@ -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
''; '';

View File

@ -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 {

View File

@ -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>
''; '';