From: Jani Nikula <jani.nikula@linux.intel.com>
To: Randy Dunlap <rdunlap@infradead.org>,
"open list:DOCUMENTATION" <linux-doc@vger.kernel.org>
Subject: Re: typedef output question/issue?
Date: Thu, 21 Nov 2024 21:28:35 +0200 [thread overview]
Message-ID: <87serkz8rg.fsf@intel.com> (raw)
In-Reply-To: <9b7a43f5-5d04-4917-906b-707581b5a39e@infradead.org>
On Thu, 21 Nov 2024, Randy Dunlap <rdunlap@infradead.org> wrote:
> On 11/21/24 3:19 AM, Jani Nikula wrote:
>> On Thu, 21 Nov 2024, Jani Nikula <jani.nikula@linux.intel.com> wrote:
>>> On Wed, 20 Nov 2024, Randy Dunlap <rdunlap@infradead.org> wrote:
>>>> Hi,
>>>>
>>>> If I print a typedef in html (make htmldocs) from a .rst file,
>>>> I see:
>>>>
>>>> type dma_cookie_t
>>>> an opaque DMA cookie
>>>>
>>>> Description
>>>>
>>>> if dma_cookie_t is >0 it’s a DMA request cookie, <0 it’s an error code
>>>>
>>>> ~~~~~~~~~~~~~~~~~~~
>>>>
>>>> If I print the same typedef in man format, it says 'typedef' instead of
>>>> 'type', which is what I expect to see.
>>>
>>> I'm sorry, it's unambigous to me which one you expect.
>>
>> *ambiguous, obvs!
>
> Sorry about that. I would like to see 'typedef' instead of 'type'.
Right, so looking into it, Sphinx actually has two forms for documenting
types, described at [1]:
.. c:type:: foo_t
.. c:type:: int foo_t
The former is simple, and becomes a generic "type" in rendered
documentation, while the latter can contain a "typedef-like
declaration", and becomes "typedef" in rendered documentation.
So, if you can make kernel-doc emit a proper typedef for the c:type
directive, the output will contain typedef, but otherwise remains just
type. Whether having the actual typedef declaration in the output is
something you also want, is a different matter.
The man page output doesn't go through Sphinx at all, and is just
whatever kernel-doc outputs.
HTH,
Jani.
[1] https://www.sphinx-doc.org/en/master/usage/domains/c.html#directive-c-type
>
> Thanks.
>
>>
>>>
>>>> man formatted output:
>>>>
>>>> Kernel API(9) API Manual Kernel API(9)
>>>>
>>>> NAME
>>>> typedef dma_cookie_t - an opaque DMA cookie
>>>>
>>>> Description
>>>> if dma_cookie_t is >0 it's a DMA request cookie, <0 it's an error code
>>>>
>>>> November 2024 dma_cookie_t Kernel API(9)
>>>
>>> How do you generate the man pages?
>
> One function or identifier (struct, union, enum, or typedef) at a time.
> Just for testing.
>
> $ scripts/kernel-doc -man -function function_or_identifier file | nroff -man | less
>
> e.g.:
> $ scripts/kernel-doc -man -function dma_cookie_t include/linux/dmaengine.h | nroff -man | less
>
>>>
>>>> I am using python311-Sphinx 8.0.2-1.2-noarch from openSUSE.
>>>>
>>>> [internet search ...]
>>>>
>>>> The $internet says that one option is to install and use:
>>>> Add 'sphinx_autodoc_typehints' to the extensions list in your conf.py file.
>>>> I tried that but now I get:
>>>> Extension error:
>>>> Unknown event name: autodoc-process-signature
>>>
>>> The kernel-doc thing is not hooked up in the Sphinx autodoc processing,
>>> which is more geared towards Python. I presume sphinx_autodoc_typehints
>>> uses autodoc-process-signature which isn't there because the autodoc
>>> Sphinx extension isn't loaded, and even if it were, would not be called
>>> on kernel-doc handling.
>>>
>
> OK, thanks. I'll just try to ignore it. :(
>
>>>
>>> BR,
>>> Jani.
>>>
>>>
>>>>
>>>> Another option is to try a different theme so I reverted to
>>>> sphinx_rtd_theme but that didn't help either.
>>>>
>>>> Does anyone know a good solution to this?
>>>>
>>>> thanks.
>>
--
Jani Nikula, Intel
next prev parent reply other threads:[~2024-11-21 19:28 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-21 4:59 typedef output question/issue? Randy Dunlap
2024-11-21 11:19 ` Jani Nikula
2024-11-21 11:19 ` Jani Nikula
2024-11-21 17:38 ` Randy Dunlap
2024-11-21 19:28 ` Jani Nikula [this message]
2024-11-25 0:05 ` Randy Dunlap
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87serkz8rg.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=linux-doc@vger.kernel.org \
--cc=rdunlap@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.