Re: [RFC PATCH 1/2] scripts/kernel-doc: Auto-detect common code-blocks

From: Jani Nikula
Date: Mon May 14 2018 - 07:01:05 EST


On Thu, 10 May 2018, Jonathan Corbet <corbet@xxxxxxx> wrote:
> On Thu, 10 May 2018 09:34:56 -0700
> Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
>
>> I think this is a bit fragile. Why not just search for ':\n'? Is
>> there ever a case where we want to write:
>>
>> /**
>> * foo is a bar:
>> * wibble
>> */
>> and have wibble not be a code-block?
>
> Yeah, we might want to write something like:
>
> - Leading off a bulleted list
>
> 1) or a numbered list
>
> for example. That's why I was thinking of looking for explicit markers
> for such lists.
>
> It'll take some playing around with to have a hope of getting right,
> methinks.

We had serious trouble with the old DocBook toolchain because the tool
pipeline was so long, and each step had its own expectations and quirks.
For example, remember the escaping needed for xml in kernel-doc? Or tmpl
xml files being invalid xml because of the docproc directives? One of
the big benefits of the current toolchain is minimizing the amount of
special casing magic required.

The more we add custom syntax sugar in kernel-doc, the more we run the
risk of running into hard problems later on in the Sphinx phase. For
example, our own syntax preventing the use of legitimate rst syntax. And
now we get somewhat reasonable error messages from Sphinx when things go
wrong; we didn't get that when the impedance mismatches caused issues
with the old toolchain. They were hard to debug and mostly nobody even
bothered. We should work to reduce the amount of special processing in
kernel-doc, not the other way round.

The use of "::" is a valid and arguably rather non-invasive rst token
for indicating the following indented block is a literal block. Adding
heuristics (especially ones based on English language magic words) will
lead to bigger problems than it's trying to solve.


BR,
Jani.


--
Jani Nikula, Intel Open Source Technology Center