docs: Add basic documentation system based on nmd

You can now run `nix build '.#docs'` to build HTML documentation
documenting every single option on nixvim! Fortunately, thanks to
the 'description' field, most options are already documented, but
there are still a fair few that need documenting.

I will be taking care of those in the next few days. When those are
done, I will find a way to automatically rebuild documentation on every
repo push, and also add a PR hook requiring documentation.

Additionally, I will try to find a way to have per-page plugin docs.
This commit is contained in:
Pedro Alves 2022-01-10 19:50:13 +00:00
parent 69cf1b6204
commit eef84178ab
42 changed files with 184 additions and 51 deletions

View file

@ -64,8 +64,7 @@ in
options = {
basic = mkOption {
type = types.bool;
description = "operator-pending mapping. Includes 'gcc', 'gcb', 'gc[count]{motion}'
and 'gb[count]{motion}'";
description = "operator-pending mapping. Includes 'gcc', 'gcb', 'gc[count]{motion}' and 'gb[count]{motion}'";
default = true;
};
extra = mkOption {
@ -75,8 +74,7 @@ in
};
extended = mkOption {
type = types.bool;
description = "extended mapping. Includes 'g>', 'g<', 'g>[count]{motion}' and
'g<[count]{motion}'";
description = "extended mapping. Includes 'g&gt;', 'g&lt;', 'g&gt;[count]{motion}' and 'g&lt;[count]{motion}'";
default = false;
};
};

View file

@ -23,12 +23,12 @@ in
};
winWidth = mkOption {
type = types.nullOr types.float;
description = "number of columns relative to &columns.";
description = "number of columns relative to &amp;columns.";
default = null;
};
winHeight = mkOption {
type = types.nullOr types.float;
description = "number of lines relative to &lines.";
description = "number of lines relative to &amp;lines.";
default = null;
};
borderChars = mkOption {
@ -38,7 +38,7 @@ in
};
rootMarkers = mkOption {
type = types.nullOr (types.listOf types.str);
description = "Markers used to detect the project root directory for --cwd=<root>";
description = "Markers used to detect the project root directory for --cwd=&lt;root&gt;";
default = null;
};
opener = mkOption {

View file

@ -17,23 +17,25 @@ mkPlugin args {
lists = mkDefaultOpt {
description = "Startify display lists. If it's a string, it'll be interpreted as literal lua code";
global = "startify_lists";
type = types.listOf (types.oneOf [types.submodule {
type = mkOption {
type = types.str;
description = "The type of the list";
type = types.listOf (types.oneOf [(types.submodule {
options = {
type = mkOption {
type = types.str;
description = "The type of the list";
};
# TODO the header should be a literal lua string!
header = mkOption {
type = types.nullOr (types.listOf types.str);
description = "Optional header. It's a list of strings";
default = null;
};
indices = mkOption {
type = types.nullOr (types.listOf types.str);
description = "Optional indices for the current list";
default = null;
};
};
# TODO the header should be a literal lua string!
header = mkOption {
type = types.nullOr (types.listOf types.str);
description = "Optional header. It's a list of strings";
default = null;
};
indices = mkOption {
type = types.nullOr (types.listOf types.str);
description = "Optional indices for the current list";
default = null;
};
} types.str]);
}) types.str]);
value = val: let
list = map (v: if builtins.isAttrs v then toLuaObject v else v) val;
@ -131,7 +133,7 @@ mkPlugin args {
};
enableSpecial = mkDefaultOpt {
description = "Show <empty buffer> and <quit>";
description = "Show &lt;empty buffer&gt; and &lt;quit&gt;";
global = "startify_enable_special";
type = types.bool;
};