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

@ -91,7 +91,7 @@ in {
};
grep = mkOption {
type = types.nullOr (types.oneOf [ types.submodule {
type = types.nullOr (types.oneOf [ (types.submodule {
options = {
command = mkOption {
type = types.str;
@ -103,7 +103,7 @@ in {
description = "The package of the grep alternative to use";
};
};
} types.str]);
}) types.str]);
default = null;
description = "A non-standard grep to use instead of the default";
};

View file

@ -30,12 +30,14 @@ in {
sections = mkOption {
default = null;
type = with types; nullOr (submodule {
a = sectionOption;
b = sectionOption;
c = sectionOption;
x = sectionOption;
y = sectionOption;
z = sectionOption;
options = {
a = sectionOption;
b = sectionOption;
c = sectionOption;
x = sectionOption;
y = sectionOption;
z = sectionOption;
};
});
};

View file

@ -21,7 +21,7 @@ in {
description = ''
A list of function component definitions.
You should define the functions themselves in <para>extraConfig</para>
You should define the functions themselves in extraConfig
'';
example = ''
programs.nixvim.plugins.lightline = {

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