1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-07-08 19:23:54 +02:00

Track doc comments and render them in :doc

This commit is contained in:
Robert Hensing 2024-07-08 17:39:26 +02:00
parent e5af7cbeb9
commit 7fae378835
25 changed files with 515 additions and 16 deletions

View file

@ -0,0 +1,8 @@
Nix <nix version>
Type :? for help.
Function defined at
/path/to/tests/functional/repl/doc-comment-function.nix:2:1
A doc comment for a file that only contains a function

View file

@ -0,0 +1 @@
:doc import ./doc-comment-function.nix

View file

@ -0,0 +1,3 @@
/** A doc comment for a file that only contains a function */
{ ... }:
{ }

View file

@ -0,0 +1,57 @@
{
/**
Perform *arithmetic* multiplication. It's kind of like repeated **addition**, very neat.
```nix
multiply 2 3
=> 6
```
*/
multiply = x: y: x * y;
/**👈 precisely this wide 👉*/
measurement = x: x;
floatedIn = /** This also works. */
x: y: x;
compact=/**boom*/x: x;
/** Ignore!!! */
unambiguous =
/** Very close */
x: x;
/** Firmly rigid. */
constant = true;
/** Immovably fixed. */
lib.version = "9000";
/** Unchangeably constant. */
lib.attr.empty = { };
lib.attr.undocumented = { };
nonStrict = /** My syntax is not strict, but I'm strict anyway. */ x: x;
strict = /** I don't have to be strict, but I am anyway. */ { ... }: null;
# Note that pre and post are the same here. I just had to name them somehow.
strictPre = /** Here's one way to do this */ a@{ ... }: a;
strictPost = /** Here's another way to do this */ { ... }@a: a;
# TODO
# /** This returns a documented function. */
# documentedArgs =
# /** x */
# x:
# /** y */
# y:
# /** x + y */
# x + y;
# /** Documented formals */
# documentedFormals =
# /** x */
# x: x;
}

View file

@ -0,0 +1,11 @@
Nix <nix version>
Type :? for help.
Added <number omitted> variables.
Function compact
… defined at
/path/to/tests/functional/repl/doc-comments.nix:18:20
boom

View file

@ -0,0 +1,2 @@
:l doc-comments.nix
:doc compact

View file

@ -0,0 +1,11 @@
Nix <nix version>
Type :? for help.
Added <number omitted> variables.
Function floatedIn
… defined at
/path/to/tests/functional/repl/doc-comments.nix:16:5
This also works.

View file

@ -0,0 +1,2 @@
:l doc-comments.nix
:doc floatedIn

View file

@ -0,0 +1,29 @@
Nix <nix version>
Type :? for help.
Added <number omitted> variables.
Function nonStrict
… defined at
/path/to/tests/functional/repl/doc-comments.nix:36:70
My syntax is not strict, but I'm strict anyway.
Function strict
… defined at
/path/to/tests/functional/repl/doc-comments.nix:37:63
I don't have to be strict, but I am anyway.
Function strictPre
… defined at
/path/to/tests/functional/repl/doc-comments.nix:39:48
Here's one way to do this
Function strictPost
… defined at
/path/to/tests/functional/repl/doc-comments.nix:40:53
Here's another way to do this

View file

@ -0,0 +1,5 @@
:l doc-comments.nix
:doc nonStrict
:doc strict
:doc strictPre
:doc strictPost

View file

@ -0,0 +1,11 @@
Nix <nix version>
Type :? for help.
Added <number omitted> variables.
Function measurement
… defined at
/path/to/tests/functional/repl/doc-comments.nix:13:17
👈 precisely this wide 👉

View file

@ -0,0 +1,2 @@
:l doc-comments.nix
:doc measurement

View file

@ -0,0 +1,15 @@
Nix <nix version>
Type :? for help.
Added <number omitted> variables.
Function multiply
… defined at
/path/to/tests/functional/repl/doc-comments.nix:10:14
Perform arithmetic multiplication. It's kind of like
repeated addition, very neat.
| multiply 2 3
| => 6

View file

@ -0,0 +1,2 @@
:l doc-comments.nix
:doc multiply

View file

@ -0,0 +1,11 @@
Nix <nix version>
Type :? for help.
Added <number omitted> variables.
Function unambiguous
… defined at
/path/to/tests/functional/repl/doc-comments.nix:23:5
Very close

View file

@ -0,0 +1,2 @@
:l doc-comments.nix
:doc unambiguous