Thread (1 message) 1 message, 1 author, 2021-01-29

Re: [PATCH] scripts/kernel-doc: add internal hyperlink to DOC: sections

From: Michal Wajdeczko <hidden>
Date: 2021-01-29 11:57:36


On 29.01.2021 11:01, Jani Nikula wrote:
On Thu, 28 Jan 2021, Jonathan Corbet [off-list ref] wrote:
quoted
On Mon, 18 Jan 2021 12:08:13 +0100
Michal Wajdeczko [off-list ref] wrote:
quoted
While DOC: section titles are not converted into RST headings
sections and are only decorated with strong emphasis markup,
nothing stops us from generating internal hyperlinks for them,
to mimic implicit hyperlinks to RST headings.

Signed-off-by: Michal Wajdeczko <redacted>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Jani Nikula <redacted>
Cc: Chris Wilson <redacted>
So I've applied this, but ...
quoted
 scripts/kernel-doc | 1 +
 1 file changed, 1 insertion(+)
diff --git a/scripts/kernel-doc b/scripts/kernel-doc
index 6325bec3f66f..272f70c9fb13 100755
--- a/scripts/kernel-doc
+++ b/scripts/kernel-doc
@@ -833,6 +833,7 @@ sub output_blockhead_rst(%) {
 	next if (defined($nosymbol_table{$section}));
 
 	if ($output_selection != OUTPUT_INCLUDE) {
+	    print ".. _$section:\n\n";
 	    print "**$section**\n\n";
 	}
...the placement within this if means that the section marker doesn't
appear whenever a doc block is explicitly included with the :doc: modifier
- which I think is much of the time.  I *think* the marker should be
output unconditionally.

Jani, you appear to be the culprit behind that particular "if", which
seems a little questionable to me in general at the moment, but you must
have had a good reason.  Do you see any reason why a section marker should
be suppressed in the same way?
ISTR there were a lot of explicit doc block inclusion where the .rst
file already had a section heading, so this would have lead to double
heading. (Specifically, actual heading from rst, followed by a bolded
line from the doc comment title.)

Turning the doc comment title into an actual heading would require
knowing the surrounding heading level i.e. which underline character to
use. This could be done by passing the character to kernel-doc with the
directive, and omitting the heading in the .rst, but this in turn makes
the .rst less readable as plain text because you lose the structure.

It's not perfect, but I'm not sure what the right fix to that should be.

As to the patch at hand, it does seem like moving the hyperlink target
outside of the if block here is the right thing to do. We'll want the
targets to work regardless of how the doc comment is included. I'd seen
Michal's patch before, but didn't think of this at the time.
The problem is that in majority of cases where we have explicit heading
in .rst file, the same name is used as DOC: title. If we unconditionally
add target for every DOC: title, then Sphinx will complain with:

"WARNING: Duplicate target name, cannot be used as a unique reference"

and render documentation with non-working cross references.

AFAIK, this patch as-is does not introduce any new warning.

Thanks,
Michal
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help