docs: use nixosOptionDocs

NixOS 23.11 is deprecating DocBook option documentation. Following home-manager in this change is probably a good idea
This commit is contained in:
raf 2023-11-04 14:30:04 +03:00
parent e498331ce7
commit 3de5f1ba39
No known key found for this signature in database
GPG key ID: 02D1DD3FA08B6B29
10 changed files with 91 additions and 30 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

@ -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 {option}`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 = ''
[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 {option}`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 {option}`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>
''; '';