Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(docbuild): Update style doc to reflect Doxygen needs #6705

Merged
merged 20 commits into from
Sep 11, 2024

Conversation

vwheeler63
Copy link
Contributor

Description of the feature or fix

Update CODING_STYLE.rst to reflect updated Doxygen requirements in comments.

Addresses part of issue #6480

Notes

@vwheeler63
Copy link
Contributor Author

vwheeler63 commented Aug 19, 2024

Hi, Gabor! ( @kisvegabor )

I submitted this one separately so you could have a look at it in an easier way than in the #6480 issue.

Once we get the details of this sorted (or if you like it as it is), I suggest we start a new project, perhaps under issue #6671 "Add missing documentation", and make these modifications to some of the core part of the library to set an example.

This contains 2 changes:

  • The original "Comments" section is mostly preserved except that I replaced the original comment example with a better one, and adjusted the existing example comments to reflect (what I think is) current guidance for more readable in-source comments as well as more readable generated documentation. I also added (at the bottom) a little bit of insightful wisdom that makes code so much more readable and maintainable from the great Donald Knuth (author of The Art of Computer Programming, among other things).
  • I added a new section called "Doxygen Comment Specifics" just below the original "Comments" section, and tried to keep it as short as possible.

In the "Doxygen Comment Specifics" section, I left the @file command argument (the file's name) in place for consistency with the rest of the library. While it is redundant (Doxygen doesn't need it), it does no harm -- as long as the name stays the same as the filename. When the filename changes, however, Doxygen silently stops outputting documentation for that file, so I have an idea for a future improvement, but will skip the details here.

Over to you. I hope you like it. FYI I am kind of on a Europe schedule right now to give us more common time on our schedules (why you have seen me posting things very early).

Kind regards,
Vic

* - create keyboard (lv_x11_keyboard_create)
* - create mouse (with scroll wheel, lv_x11_mouse_create lv_x11_mousewheel_create)
*
* @param[in] disp object created by lv_x11_window_create()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[in] and [out] are not widely used, so we shouldn't make then mandatory.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed.

docs/CODING_STYLE.rst Show resolved Hide resolved
lv_obj_t * lv_obj_get_screen(lv_obj_t * obj);
void lv_x11_inputs_create(lv_display_t * disp, lv_image_dsc_t const * mouse_img);

Separate sections within the comment with a blank line for added readability.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not used now either.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kisvegabor Hi, Gabor! Ouch. Okay, I removed that line (to be re-pushed shortly). Kevin and I discussed this in issue #6480, and I think I erroneously interpreted no response from you on that point as agreement. While I am coding, I rely on documentation in the code more than in an external documentation, so I find it extremely helpful when the documentation in the code is easier to read. Are you thinking of approach this gradually? Or prefer no blank lines? What are your thoughts are about it for now and in the future?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer no blank lines to keep the docs section more condensed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer no blank lines to keep the docs section more condensed.

Understood. Thank you for the clarification.

Include a space after the ``/*`` and before the ``*/`` for added readability.

If you are writing documentation for a code member (like a function, data type
or macro), use Doxygen comments like this: ``/** Description */``. See
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or /**< ... */

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point! Done.

@kisvegabor
Copy link
Member

Thank you Vic. I've added my initial comments .

@vwheeler63
Copy link
Contributor Author

vwheeler63 commented Aug 21, 2024

Thank you Vic. I've added my initial comments .

Hi, Gabor! I've realized that introducing /** and /**< really need to be early in the comments section, so I am re-working the introduction a bit so as to introduce the subject of comments more gracefully. (I was initially trying to "avoid" changing the original "Comments" section much, but I see now that it should be adjusted a bit since Doxygen comments otherwise go unexplained until the next section.) Will re-push as soon as I have it ready.

@vwheeler63
Copy link
Contributor Author

vwheeler63 commented Aug 21, 2024

@kisvegabor Okay. Re-submitted. I found I needed to run it through sphinx to really see what it was going to look like, and in doing so, I not only found quite a few things that needed to be adjusted, but realized that you would need to see this too. So here is [the link] so you can see what I see, and can compare them side by side if needed.

In case you were not already aware, the leading "|" in lines tell ReStructuredText where to line wrap, when it is important. Thus:

| something here
| this needs to be on its own line

comes out the same way as this in HTML:

something here<br>
this needs to be on its own line

I used that in a couple of cases to make it more readable.

I also:

  1. removed the paragraph numbers, since it was inconsistent with the rest of the document,
  2. corrected one typo early in the document, which you will see in the changes, and
  3. rebased my branch on current master as of a few minutes ago.

@vwheeler63 vwheeler63 force-pushed the fix/doxygen_coding_style_updates branch from ccce3d9 to edc65a8 Compare August 21, 2024 13:51
@vwheeler63
Copy link
Contributor Author

@kisvegabor Hi, Gabor! Ready for re-review/approval/merging.

@kisvegabor
Copy link
Member

Thank you! I can review it next week.

@vwheeler63
Copy link
Contributor Author

Thank you! I can review it next week.

Okay.

@vwheeler63 vwheeler63 force-pushed the fix/doxygen_coding_style_updates branch 2 times, most recently from bc12da5 to 6e8035b Compare August 27, 2024 09:47
@vwheeler63
Copy link
Contributor Author

Hi, Gabor! ( @kisvegabor )

This is just a reminder that the view of the CODING_STYLE.rst file after sphinx has processed it is here.

@vwheeler63 vwheeler63 force-pushed the fix/doxygen_coding_style_updates branch from 6e8035b to 379215e Compare August 29, 2024 08:21
Copy link
Member

@kisvegabor kisvegabor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you Vic! The content is very useful, however I feel like it's a little bit lengthy and developers might not read it.

I think we should have

  1. a simple Doxygen API comment example with 1 param and return, and explain the basics there
  2. a complex example and explain all the keywords we (not Doxygen) support

If possible the explanations should be one liner bullet points to allow quickly processing them.

For example this

To refer the reader to additional information, you can say something like
``See also `data_type_t`.`` or ``See function_name() for more information.``.
Doxygen will convert ``data_type_t`` or ``function_name()`` into a hyperlink to that
documentation when it exists.

can be converted to

- Reference types and functions like `lv_display_t` and `lv_display_create()`. They will be converted to hyperlinks.

.. code:: c
/**
* Brief description
*
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No blank lines 🙂

Copy link
Contributor Author

@vwheeler63 vwheeler63 Aug 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No blank lines 🙂

@kisvegabor

Hi, Gabor. Can you clarify what is meant here? Do you mean you want something like this:

/**
 * Set how to place (where to align) the items and tracks
 *
 * @param  obj                   pointer to object.  Its parent must have flex layout
 *                                   or nothing will happen.
 * @param  main_place            where to place items on main axis (in their track).
 *                                   Any value of `lv_flex_align_t`.
 * @param  cross_place           where to place item in track on cross axis.
 *                                   `LV_FLEX_ALIGN_START/END/CENTER`
 * @param  track_cross_place     where to place tracks in cross direction.
 *                                    Any value of `lv_flex_align_t`.
 *
 * @note  The resulting behavior is very similar to flex containers in CSS.
 */
void lv_obj_set_flex_align(lv_obj_t * obj, lv_flex_align_t main_place, lv_flex_align_t cross_place,
                           lv_flex_align_t track_cross_place);

to be this instead?

/**
 * Set how to place (where to align) the items and tracks
 * @param  obj                   pointer to object.  Its parent must have flex layout
 *                                   or nothing will happen.
 * @param  main_place            where to place items on main axis (in their track).
 *                                   Any value of `lv_flex_align_t`.
 * @param  cross_place           where to place item in track on cross axis.
 *                                   `LV_FLEX_ALIGN_START/END/CENTER`
 * @param  track_cross_place     where to place tracks in cross direction.
 *                                    Any value of `lv_flex_align_t`.
 * @note  The resulting behavior is very similar to flex containers in CSS.
 */
void lv_obj_set_flex_align(lv_obj_t * obj, lv_flex_align_t main_place, lv_flex_align_t cross_place,
                           lv_flex_align_t track_cross_place);

Copy link
Member

@kisvegabor kisvegabor Aug 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I meant that. Just because we don't have empty lines after the brief now, so it would be strange to ask for the opposite.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I meant that. Just because we don't have empty lines after the brief now, so it would be strange to ask for the opposite.

That completely makes sense to me. thumbs up

/**
* Brief description
*
* @return short description of return value
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add param too to have simple yet complete example

Suggested change
* @return short description of return value
* @param value short description of the parameter
* @return short description of return value

* @param mouse_img optional image description for mouse cursor
* (NULL for no/invisible mouse cursor)
*
* @note Include any subtle points an API user or maintainer would need to know.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shall we show code and example too?

Copy link
Contributor Author

@vwheeler63 vwheeler63 Aug 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shall we show code and example too?

I'm not sure I am understanding the concept. Can you clarify? Are you referring to making the example more complete so it shows we encourage placing code elements in single back-quotes?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just meant that we support more Doxygen tags (@....) and we can show them in a single complete example.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just meant that we support more Doxygen tags (@....) and we can show them in a single complete example.

Ah!! Agreed. I think you will like what I have come up with.


``variable_or_struct_member; /**< Description of code member BEFORE this comment. */``

Add 2 spaces after Doxygen commands (they start with '@') for improved readability.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now we add only 1 space, e.g. @param value

Copy link
Contributor Author

@vwheeler63 vwheeler63 Aug 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now we add only 1 space, e.g. @param value

I know, and in the code, it is really difficult to read in some cases!

Imagine you know nothing about this function and then compare this (example 1):

/**
 * Set how to place (where to align) the items and tracks
 * @param obj pointer to an object. The parent must have flex layout else nothing will happen.
 * @param main_place where to place the items on main axis (in their track). Any value of `lv_flex_align_t`.
 * @param cross_place where to place the item in their track on the cross axis. `LV_FLEX_ALIGN_START/END/CENTER`
 * @param track_cross_place where to place the tracks in the cross direction. Any value of `lv_flex_align_t`.
 */
void lv_obj_set_flex_align(lv_obj_t * obj, lv_flex_align_t main_place, lv_flex_align_t cross_place,
                           lv_flex_align_t track_cross_place);

with this (example 2):

/**
 * Set how to place (where to align) the items and tracks
 * @param  obj                pointer to an object. The parent must have flex layout else nothing will happen.
 * @param  main_place         where to place the items on main axis (in their track). Any value of `lv_flex_align_t`.
 * @param  cross_place where  to place the item in their track on the cross axis. `LV_FLEX_ALIGN_START/END/CENTER`
 * @param  track_cross_place  where to place the tracks in the cross direction. Any value of `lv_flex_align_t`.
 */
void lv_obj_set_flex_align(lv_obj_t * obj, lv_flex_align_t main_place, lv_flex_align_t cross_place,
                           lv_flex_align_t track_cross_place);

This is better for people that don't have really wide screens (example 3).

/**
 * Set how to place (where to align) the items and tracks
 * @param  obj                   pointer to object.  Its parent must have flex layout
 *                               or nothing will happen.
 * @param  main_place            where to place items on main axis (in their track).
 *                               Any value of `lv_flex_align_t`.
 * @param  cross_place           where to place item in track on cross axis.
 *                               `LV_FLEX_ALIGN_START/END/CENTER`
 * @param  track_cross_place     where to place tracks in cross direction.
 *                                Any value of `lv_flex_align_t`.
 * @note  The resulting behavior is very similar to flex containers in CSS.
 */
void lv_obj_set_flex_align(lv_obj_t * obj, lv_flex_align_t main_place, lv_flex_align_t cross_place,
                           lv_flex_align_t track_cross_place);

And I think this is even easier to read, though the "gain" in readability is only slight (example 4).

/**
 * Set how to place (where to align) the items and tracks
 *
 * @param  obj                   pointer to object.  Its parent must have flex layout
 *                                   or nothing will happen.
 * @param  main_place            where to place items on main axis (in their track).
 *                                   Any value of `lv_flex_align_t`.
 * @param  cross_place           where to place item in track on cross axis.
 *                                   `LV_FLEX_ALIGN_START/END/CENTER`
 * @param  track_cross_place     where to place tracks in cross direction.
 *                                    Any value of `lv_flex_align_t`.
 *
 * @note  The resulting behavior is very similar to flex containers in CSS.
 */
void lv_obj_set_flex_align(lv_obj_t * obj, lv_flex_align_t main_place, lv_flex_align_t cross_place,
                           lv_flex_align_t track_cross_place);

I think we should promote example example 3 or 4 (rather than promoting what is in the code -- which is part of why it is difficult, sometimes painful [no I am not exaggerating] to learn LVGL).

Of course, if you're thinking about making the documentation align with the code for v9.2, I can understand that, but I am thinking about a future scenario where the ease of reading the documentation will be an important asset in LVGL's popularity.

Thoughts?

Copy link
Member

@kisvegabor kisvegabor Aug 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow, it really looks better. I vote for example 3. Example 4 might be ok too, but I'm not sure so let's stay on the safe side and go for example 3. Once it's merged, in a new PR we can add the missing spaces with a script.

Copy link
Contributor Author

@vwheeler63 vwheeler63 Aug 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow, it really looks better. I vote for example 3. Example 4 might be ok too, but I'm not sure so let's stay on the safe side and go for example 3. Once it's merged, in a new PR we can add the missing spaces with a script.

Agreed! It seems we think very similarly--harmony first (i.e. not huge disagreement between CODING_STYLE.rst and what's actually in the library), then advance the library by increments.

Align the beginning of each argument description for improved readability. Provide
at least 2 spaces after the longest argument name for visual separation (improves
readability). If a description of an argument continues on subsequent lines, indent
the continuation lines by an additional 4 spaces to visually distinguish these lines
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is more readable to me. Does it work too?

 * @param  filter     event code (e.g. `LV_EVENT_CLICKED`) indicating which
 *                    event should be called (`LV_EVENT_ALL` can be used
 *                    to receive all events)

Copy link
Contributor Author

@vwheeler63 vwheeler63 Aug 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does it work too?

Certainly there is no loss to the ease of reading it. In your example, I am counting 5 spaces after the longest argument. Would you like me to specify 5 spaces as a minimum? Or simply use 5 spaces in the examples?

Copy link
Member

@kisvegabor kisvegabor Aug 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we shouldn't control the number of spaces just ask for uniformly indenting the description. IMO It's enough to show it in the example.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we shouldn't control the number of spaces just ask for uniformly indenting the description. IMO It's enough to show it in the example.

That makes the most sense to me as well!

the continuation lines by an additional 4 spaces to visually distinguish these lines
from the beginning of a new argument description, like this:

.. code-block:: c
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This and the blow sections feels redundant with Line 87.

Can we a have a single complex example and explain it one liner bullet points?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

feels redundant with Line 87.

Can we a have a single complex example and explain it one liner bullet points?

Good point, and excellent idea! I will work on that.

@vwheeler63
Copy link
Contributor Author

I feel like it's a little bit lengthy and developers might not read it.

Great points, and I really like your attention to brevity! I know in this world, compactness (brevity, succinctness) is very helpful. Historically, a 2nd pair of eyes helps me to not get carried away, where half the number of words (or less, or an illustration) can carry the same meaning faster. I will work on this.

@vwheeler63
Copy link
Contributor Author

vwheeler63 commented Aug 29, 2024

Hi, Gábor! ( @kisvegabor )

Okay, I have re-submitted. Here is what the document now looks like after it has been run through sphinx with the Read-the-Docs theme (same as is used in LVGL generated documentation).

Things that we did not discuss above:

  1. Using 4 spaces instead of tabs is something that should be understood by programmers before they even start editing anything, and it was previously way at the end of the document. So I moved it near the beginning under a small "Editor" item in the Coding guide section. That way it is very clear that programmers that use TABs should change their editor configurations before making changes to LVGL code.
  2. I moved the detailed example down to the Doxygen Comment Specifics subsection, next to the bullet points that explain the various parts of the example.
  3. While it may be clear about most of the Doxygen commands that are supported, I added (as a new Supported Doxygen Commands sub-section) the list of the Doxygen commands that can be freely used in LVGL code, to be explicitly clear that the list of accepted Doxygen commands is limited. To be frank, I find that list section uncomfortably long (since we are stressing brevity). Perhaps I could make it into another bullet list and simply place links to the Doxygen documentation page#anchor where it is covered, and remove the descriptions? Like this:

I placed additional "Do not ..." information with the @ref command, which does need to be preserved, however, because many programmers have used the @ref command in front of function and type names thinking that would produce a hyperlink to their documentation, but it doesn't—it generates a Doxygen warning and no hyperlink is generated! So I explained the correct way of using it. I could make that explanation into a "note" if we reduce the list to a bullet list as above.

Kevin ( @kdschlosser ), you may be pleased to know that I removed the "rare" ones from the list we previously discussed, so it is now down to:

  • @file
  • @param
  • @return
  • @code/@endcode
  • @note
  • @anchor
  • @ref
  • @see

And I didn't mention the > or >> at all since, for the one case we encountered—it should not have been used.

:-)

Kind regards,
Vic

@kdschlosser
Copy link
Contributor

the @anchor doesn't transfer over to the ReST side of things. The only thing that Sphinx is able to create anchors for are headings.

This is how a heading gets anchored in Sphinx

.. _some_heading_anchor:

Some Heading
---------------

so having anchors in the API documentation is not going to get linked to properly when referencing an anchor.

The other thing that should be done is to see if the anchors are even being used.... If they are then maybe changing the reference to that anchor to something that is able to be referenced in Sphinx like the object that has the documentation that is wanting to be referenced.

@kdschlosser
Copy link
Contributor

also with the @code directive, we need to change those so they have an explicit code type set...

@code{.c}
@code{.py}
...

Here is a complete list of extensions you can use...

https://pygments.org/languages/

@kdschlosser
Copy link
Contributor

kdschlosser commented Aug 30, 2024

what would actually be better than supplying the file extension is supplying the short name...

it can be one of the following names...

842 names across 548 languages
  • ABAP
    • abap
  • AMDGPU
    • amdgpu
  • APL
    • apl
  • ABNF
    • abnf
  • ActionScript 3
    • actionscript3
    • as3
  • ActionScript
    • actionscript
    • as
  • Ada
    • ada
    • ada95
    • ada2005
  • ADL
    • adl
  • Agda
    • agda
  • Aheui
    • aheui
  • Alloy
    • alloy
  • AmbientTalk
    • ambienttalk
    • ambienttalk/2
    • at
  • Ampl
    • ampl
  • HTML + Angular2
    • html+ng2
  • Angular2
    • ng2
  • ANTLR With ActionScript Target
    • antlr-actionscript
    • antlr-as
  • ANTLR With C# Target
    • antlr-csharp
    • antlr-c#
  • ANTLR With CPP Target
    • antlr-cpp
  • ANTLR With Java Target
    • antlr-java
  • ANTLR
    • antlr
  • ANTLR With ObjectiveC Target
    • antlr-objc
  • ANTLR With Perl Target
    • antlr-perl
  • ANTLR With Python Target
    • antlr-python
  • ANTLR With Ruby Target
    • antlr-ruby
    • antlr-rb
  • ApacheConf
    • apacheconf
    • aconf
    • apache
  • AppleScript
    • applescript
  • Arduino
    • arduino
  • Arrow
    • arrow
  • Arturo
    • arturo
    • art
  • ASCII armored
    • asc
    • pem
  • AspectJ
    • aspectj
  • Asymptote
    • asymptote
    • asy
  • Augeas
    • augeas
  • AutoIt
    • autoit
  • autohotkey
    • autohotkey
    • ahk
  • Awk
    • awk
    • gawk
    • mawk
    • nawk
  • BBC Basic
    • bbcbasic
  • BBCode
    • bbcode
  • BC
    • bc
  • BST
    • bst
    • bst-pybtex
  • BARE
    • bare
  • Base Makefile
    • basemake
  • Bash
    • bash
    • sh
    • ksh
    • zsh
    • shell
  • Bash Session
    • console
    • shell-session
  • Batchfile
    • batch
    • bat
    • dosbatch
    • winbatch
  • Bdd
    • bdd
  • Befunge
    • befunge
  • Berry
    • berry
    • be
  • BibTeX
    • bibtex
    • bib
  • BlitzBasic
    • blitzbasic
    • b3d
    • bplus
  • BlitzMax
    • blitzmax
    • bmax
  • BNF
    • bnf
  • Boa
    • boa
  • Boo
    • boo
  • Boogie
    • boogie
  • Brainfuck
    • brainfuck
    • bf
  • BUGS
    • bugs
    • winbugs
    • openbugs
  • CAmkES
    • camkes
    • idl4
  • C
    • c
  • CMake
    • cmake
  • c-objdump
    • c-objdump
  • CPSA
    • cpsa
  • CSS+UL4
    • css+ul4
  • aspx-cs
    • aspx-cs
  • C#
    • csharp
    • c#
    • cs
  • ca65 assembler
    • ca65
  • cADL
    • cadl
  • CapDL
    • capdl
  • Cap'n Proto
    • capnp
  • CBM BASIC V2
    • cbmbas
  • CDDL
    • cddl
  • Ceylon
    • ceylon
  • CFEngine3
    • cfengine3
    • cf3
  • ChaiScript
    • chaiscript
    • chai
  • Chapel
    • chapel
    • chpl
  • Charmci
    • charmci
  • HTML+Cheetah
    • html+cheetah
    • html+spitfire
    • htmlcheetah
  • JavaScript+Cheetah
    • javascript+cheetah
    • js+cheetah
    • javascript+spitfire
    • js+spitfire
  • Cheetah
    • cheetah
    • spitfire
  • XML+Cheetah
    • xml+cheetah
    • xml+spitfire
  • Cirru
    • cirru
  • Clay
    • clay
  • Clean
    • clean
  • Clojure
    • clojure
    • clj
  • ClojureScript
    • clojurescript
    • cljs
  • COBOLFree
    • cobolfree
  • COBOL
    • cobol
  • CoffeeScript
    • coffeescript
    • coffee-script
    • coffee
  • Coldfusion CFC
    • cfc
  • Coldfusion HTML
    • cfm
  • cfstatement
    • cfs
  • COMAL-80
    • comal
    • comal80
  • Common Lisp
    • common-lisp
    • cl
    • lisp
  • Component Pascal
    • componentpascal
    • cp
  • Coq
    • coq
  • cplint
    • cplint
  • C++
    • cpp
    • c++
  • cpp-objdump
    • cpp-objdump
    • c++-objdumb
    • cxx-objdump
  • Crmsh
    • crmsh
    • pcmk
  • Croc
    • croc
  • Cryptol
    • cryptol
    • cry
  • Crystal
    • cr
    • crystal
  • Csound Document
    • csound-document
    • csound-csd
  • Csound Orchestra
    • csound
    • csound-orc
  • Csound Score
    • csound-score
    • csound-sco
  • CSS+Django/Jinja
    • css+django
    • css+jinja
  • CSS+Ruby
    • css+ruby
    • css+erb
  • CSS+Genshi Text
    • css+genshitext
    • css+genshi
  • CSS
    • css
  • CSS+PHP
    • css+php
  • CSS+Smarty
    • css+smarty
  • CUDA
    • cuda
    • cu
  • Cypher
    • cypher
  • Cython
    • cython
    • pyx
    • pyrex
  • D
    • d
  • d-objdump
    • d-objdump
  • Darcs Patch
    • dpatch
  • Dart
    • dart
  • DASM16
    • dasm16
  • Debian Control file
    • debcontrol
    • control
  • Delphi
    • delphi
    • pas
    • pascal
    • objectpascal
  • Devicetree
    • devicetree
    • dts
  • dg
    • dg
  • Diff
    • diff
    • udiff
  • Django/Jinja
    • django
    • jinja
  • Docker
    • docker
    • dockerfile
  • DTD
    • dtd
  • Duel
    • duel
    • jbst
    • jsonml+bst
  • Dylan session
    • dylan-console
    • dylan-repl
  • Dylan
    • dylan
  • DylanLID
    • dylan-lid
    • lid
  • ECL
    • ecl
  • eC
    • ec
  • Earl Grey
    • earl-grey
    • earlgrey
    • eg
  • Easytrieve
    • easytrieve
  • EBNF
    • ebnf
  • Eiffel
    • eiffel
  • Elixir iex session
    • iex
  • Elixir
    • elixir
    • ex
    • exs
  • Elm
    • elm
  • Elpi
    • elpi
  • EmacsLisp
    • emacs-lisp
    • elisp
    • emacs
  • E-mail
    • email
    • eml
  • ERB
    • erb
  • Erlang
    • erlang
  • Erlang erl session
    • erl
  • HTML+Evoque
    • html+evoque
  • Evoque
    • evoque
  • XML+Evoque
    • xml+evoque
  • execline
    • execline
  • Ezhil
    • ezhil
  • F#
    • fsharp
    • f#
  • FStar
    • fstar
  • Factor
    • factor
  • Fancy
    • fancy
    • fy
  • Fantom
    • fan
  • Felix
    • felix
    • flx
  • Fennel
    • fennel
    • fnl
  • Fift
    • fift
    • fif
  • Fish
    • fish
    • fishshell
  • Flatline
    • flatline
  • FloScript
    • floscript
    • flo
  • Forth
    • forth
  • FortranFixed
    • fortranfixed
  • Fortran
    • fortran
    • f90
  • FoxPro
    • foxpro
    • vfp
    • clipper
    • xbase
  • Freefem
    • freefem
  • FunC
    • func
    • fc
  • Futhark
    • futhark
  • GAP session
    • gap-console
    • gap-repl
  • GAP
    • gap
  • GDScript
    • gdscript
    • gd
  • GLSL
    • glsl
  • GSQL
    • gsql
  • GAS
    • gas
    • asm
  • g-code
    • gcode
  • Genshi
    • genshi
    • kid
    • xml+genshi
    • xml+kid
  • Genshi Text
    • genshitext
  • Gettext Catalog
    • pot
    • po
  • Gherkin
    • gherkin
    • cucumber
  • Gnuplot
    • gnuplot
  • Go
    • go
    • golang
  • Golo
    • golo
  • GoodData-CL
    • gooddata-cl
  • Gosu
    • gosu
  • Gosu Template
    • gst
  • Graphviz
    • graphviz
    • dot
  • Groff
    • groff
    • nroff
    • man
  • Groovy
    • groovy
  • HLSL
    • hlsl
  • HTML+UL4
    • html+ul4
  • Haml
    • haml
  • HTML+Handlebars
    • html+handlebars
  • Handlebars
    • handlebars
  • Haskell
    • haskell
    • hs
  • Haxe
    • haxe
    • hxsl
    • hx
  • Hexdump
    • hexdump
  • HSAIL
    • hsail
    • hsa
  • Hspec
    • hspec
  • HTML+Django/Jinja
    • html+django
    • html+jinja
    • htmldjango
  • HTML+Genshi
    • html+genshi
    • html+kid
  • HTML
    • html
  • HTML+PHP
    • html+php
  • HTML+Smarty
    • html+smarty
  • HTTP
    • http
  • Hxml
    • haxeml
    • hxml
  • Hy
    • hylang
  • Hybris
    • hybris
    • hy
  • IDL
    • idl
  • Icon
    • icon
  • Idris
    • idris
    • idr
  • Igor
    • igor
    • igorpro
  • Inform 6
    • inform6
    • i6
  • Inform 6 template
    • i6t
  • Inform 7
    • inform7
    • i7
  • INI
    • ini
    • cfg
    • dosini
  • Io
    • io
  • Ioke
    • ioke
    • ik
  • IRC logs
    • irc
  • Isabelle
    • isabelle
  • J
    • j
  • JMESPath
    • jmespath
    • jp
  • JSLT
    • jslt
  • JAGS
    • jags
  • Jasmin
    • jasmin
    • jasminxt
  • Java
    • java
  • JavaScript+Django/Jinja
    • javascript+django
    • js+django
    • javascript+jinja
    • js+jinja
  • JavaScript+Ruby
    • javascript+ruby
    • js+ruby
    • javascript+erb
    • js+erb
  • JavaScript+Genshi Text
    • js+genshitext
    • js+genshi
    • javascript+genshitext
    • javascript+genshi
  • JavaScript
    • javascript
    • js
  • JavaScript+PHP
    • javascript+php
    • js+php
  • JavaScript+Smarty
    • javascript+smarty
    • js+smarty
  • Javascript+UL4
    • js+ul4
  • JCL
    • jcl
  • JSGF
    • jsgf
  • JSONBareObject
  • JSON-LD
    • jsonld
    • json-ld
  • JSON
    • json
    • json-object
  • Jsonnet
    • jsonnet
  • Java Server Page
    • jsp
  • Julia console
    • jlcon
    • julia-repl
  • Julia
    • julia
    • jl
  • Juttle
    • juttle
  • K
    • k
  • Kal
    • kal
  • Kconfig
    • kconfig
    • menuconfig
    • linux-config
    • kernel-config
  • Kernel log
    • kmsg
    • dmesg
  • Koka
    • koka
  • Kotlin
    • kotlin
  • Kuin
    • kuin
  • LSL
    • lsl
  • CSS+Lasso
    • css+lasso
  • HTML+Lasso
    • html+lasso
  • JavaScript+Lasso
    • javascript+lasso
    • js+lasso
  • Lasso
    • lasso
    • lassoscript
  • XML+Lasso
    • xml+lasso
  • Lean
    • lean
  • LessCss
    • less
  • Lighttpd configuration file
    • lighttpd
    • lighty
  • LilyPond
    • lilypond
  • Limbo
    • limbo
  • liquid
    • liquid
  • Literate Agda
    • literate-agda
    • lagda
  • Literate Cryptol
    • literate-cryptol
    • lcryptol
    • lcry
  • Literate Haskell
    • literate-haskell
    • lhaskell
    • lhs
  • Literate Idris
    • literate-idris
    • lidris
    • lidr
  • LiveScript
    • livescript
    • live-script
  • LLVM
    • llvm
  • LLVM-MIR Body
    • llvm-mir-body
  • LLVM-MIR
    • llvm-mir
  • Logos
    • logos
  • Logtalk
    • logtalk
  • Lua
    • lua
  • MCFunction
    • mcfunction
    • mcf
  • MCSchema
    • mcschema
  • MIME
    • mime
  • MIPS
    • mips
  • MOOCode
    • moocode
    • moo
  • MSDOS Session
    • doscon
  • Macaulay2
    • macaulay2
  • Makefile
    • make
    • makefile
    • mf
    • bsdmake
  • CSS+Mako
    • css+mako
  • HTML+Mako
    • html+mako
  • JavaScript+Mako
    • javascript+mako
    • js+mako
  • Mako
    • mako
  • XML+Mako
    • xml+mako
  • MAQL
    • maql
  • Markdown
    • markdown
    • md
  • Mask
    • mask
  • Mason
    • mason
  • Mathematica
    • mathematica
    • mma
    • nb
  • Matlab
    • matlab
  • Matlab session
    • matlabsession
  • Maxima
    • maxima
    • macsyma
  • Meson
    • meson
    • meson.build
  • MiniD
    • minid
  • MiniScript
    • miniscript
    • ms
  • Modelica
    • modelica
  • Modula-2
    • modula2
    • m2
  • MoinMoin/Trac Wiki markup
    • trac-wiki
    • moin
  • Monkey
    • monkey
  • Monte
    • monte
  • MoonScript
    • moonscript
    • moon
  • Mosel
    • mosel
  • CSS+mozpreproc
    • css+mozpreproc
  • mozhashpreproc
    • mozhashpreproc
  • Javascript+mozpreproc
    • javascript+mozpreproc
  • mozpercentpreproc
    • mozpercentpreproc
  • XUL+mozpreproc
    • xul+mozpreproc
  • MQL
    • mql
    • mq4
    • mq5
    • mql4
    • mql5
  • Mscgen
    • mscgen
    • msc
  • MuPAD
    • mupad
  • MXML
    • mxml
  • MySQL
    • mysql
  • CSS+Myghty
    • css+myghty
  • HTML+Myghty
    • html+myghty
  • JavaScript+Myghty
    • javascript+myghty
    • js+myghty
  • Myghty
    • myghty
  • XML+Myghty
    • xml+myghty
  • NCL
    • ncl
  • NSIS
    • nsis
    • nsi
    • nsh
  • NASM
    • nasm
  • objdump-nasm
    • objdump-nasm
  • Nemerle
    • nemerle
  • nesC
    • nesc
  • NestedText
    • nestedtext
    • nt
  • NewLisp
    • newlisp
  • Newspeak
    • newspeak
  • Nginx configuration file
    • nginx
  • Nimrod
    • nimrod
    • nim
  • Nit
    • nit
  • Nix
    • nixos
    • nix
  • Node.js REPL console session
    • nodejsrepl
  • Notmuch
    • notmuch
  • NuSMV
    • nusmv
  • NumPy
    • numpy
  • objdump
    • objdump
  • Objective-C
    • objective-c
    • objectivec
    • obj-c
    • objc
  • Objective-C++
    • objective-c++
    • objectivec++
    • obj-c++
    • objc++
  • Objective-J
    • objective-j
    • objectivej
    • obj-j
    • objj
  • OCaml
    • ocaml
  • Octave
    • octave
  • ODIN
    • odin
  • OMG Interface Definition Language
    • omg-idl
  • Ooc
    • ooc
  • Opa
    • opa
  • OpenEdge ABL
    • openedge
    • abl
    • progress
  • Text output
    • output
  • PacmanConf
    • pacmanconf
  • Pan
    • pan
  • ParaSail
    • parasail
  • Pawn
    • pawn
  • PEG
    • peg
  • Perl6
    • perl6
    • pl6
    • raku
  • Perl
    • perl
    • pl
  • Phix
    • phix
  • PHP
    • php
    • php3
    • php4
    • php5
  • Pig
    • pig
  • Pike
    • pike
  • PkgConfig
    • pkgconfig
  • PL/pgSQL
    • plpgsql
  • Pointless
    • pointless
  • Pony
    • pony
  • Portugol
    • portugol
  • PostScript
    • postscript
    • postscr
  • PostgreSQL console (psql)
    • psql
    • postgresql-console
    • postgres-console
  • PostgreSQL SQL dialect
    • postgresql
    • postgres
  • POVRay
    • pov
  • PowerShell
    • powershell
    • pwsh
    • posh
    • ps1
    • psm1
  • PowerShell Session
    • pwsh-session
    • ps1con
  • Praat
    • praat
  • Procfile
    • procfile
  • Prolog
    • prolog
  • PromQL
    • promql
  • Properties
    • properties
    • jproperties
  • Protocol Buffer
    • protobuf
    • proto
  • PsySH console session for PHP
    • psysh
  • Pug
    • pug
    • jade
  • Puppet
    • puppet
  • PyPy Log
    • pypylog
    • pypy
  • Python 2.x
    • python2
    • py2
  • Python 2.x Traceback
    • py2tb
  • Python console session
    • pycon
  • Python
    • python
    • py
    • sage
    • python3
    • py3
  • Python Traceback
    • pytb
    • py3tb
  • Python+UL4
    • py+ul4
  • QBasic
    • qbasic
    • basic
  • Q
    • q
  • QVTO
    • qvto
    • qvt
  • Qlik
    • qlik
    • qlikview
    • qliksense
    • qlikscript
  • QML
    • qml
    • qbs
  • RConsole
    • rconsole
    • rout
  • Relax-NG Compact
    • rng-compact
    • rnc
  • RPMSpec
    • spec
  • Racket
    • racket
    • rkt
  • Ragel in C Host
    • ragel-c
  • Ragel in CPP Host
    • ragel-cpp
  • Ragel in D Host
    • ragel-d
  • Embedded Ragel
    • ragel-em
  • Ragel in Java Host
    • ragel-java
  • Ragel
    • ragel
  • Ragel in Objective C Host
    • ragel-objc
  • Ragel in Ruby Host
    • ragel-ruby
    • ragel-rb
  • Raw token data
  • Rd
    • rd
  • ReasonML
    • reasonml
    • reason
  • REBOL
    • rebol
  • Red
    • red
    • red/system
  • Redcode
    • redcode
  • reg
    • registry
  • ResourceBundle
    • resourcebundle
    • resource
  • Rexx
    • rexx
    • arexx
  • RHTML
    • rhtml
    • html+erb
    • html+ruby
  • Ride
    • ride
  • Rita
    • rita
  • Roboconf Graph
    • roboconf-graph
  • Roboconf Instances
    • roboconf-instances
  • RobotFramework
    • robotframework
  • RQL
    • rql
  • RSL
    • rsl
  • reStructuredText
    • restructuredtext
    • rst
    • rest
  • TrafficScript
    • trafficscript
    • rts
  • Ruby irb session
    • rbcon
    • irb
  • Ruby
    • ruby
    • rb
    • duby
  • Rust
    • rust
    • rs
  • SAS
    • sas
  • S
    • splus
    • s
    • r
  • Standard ML
    • sml
  • SNBT
    • snbt
  • SARL
    • sarl
  • Sass
    • sass
  • Savi
    • savi
  • Scala
    • scala
  • Scaml
    • scaml
  • scdoc
    • scdoc
    • scd
  • Scheme
    • scheme
    • scm
  • Scilab
    • scilab
  • SCSS
    • scss
  • Sed
    • sed
    • gsed
    • ssed
  • ShExC
    • shexc
    • shex
  • Shen
    • shen
  • Sieve
    • sieve
  • Silver
    • silver
  • Singularity
    • singularity
  • Slash
    • slash
  • Slim
    • slim
  • Slurm
    • slurm
    • sbatch
  • Smali
    • smali
  • Smalltalk
    • smalltalk
    • squeak
    • st
  • SmartGameFormat
    • sgf
  • Smarty
    • smarty
  • Smithy
    • smithy
  • Snobol
    • snobol
  • Snowball
    • snowball
  • Solidity
    • solidity
  • Sophia
    • sophia
  • SourcePawn
    • sp
  • Debian Sourcelist
    • debsources
    • sourceslist
    • sources.list
  • SPARQL
    • sparql
  • Spice
    • spice
    • spicelang
  • SQL+Jinja
    • sql+jinja
  • SQL
    • sql
  • sqlite3con
    • sqlite3
  • SquidConf
    • squidconf
    • squid.conf
    • squid
  • Srcinfo
    • srcinfo
  • Scalate Server Page
    • ssp
  • Stan
    • stan
  • Stata
    • stata
    • do
  • SuperCollider
    • supercollider
    • sc
  • Swift
    • swift
  • SWIG
    • swig
  • systemverilog
    • systemverilog
    • sv
  • TAP
    • tap
  • Typographic Number Theory
    • tnt
  • TOML
    • toml
  • TADS 3
    • tads3
  • Tal
    • tal
    • uxntal
  • TASM
    • tasm
  • Tcl
    • tcl
  • Tcsh
    • tcsh
    • csh
  • Tcsh Session
    • tcshcon
  • Tea
    • tea
  • teal
    • teal
  • Tera Term macro
    • teratermmacro
    • teraterm
    • ttl
  • Termcap
    • termcap
  • Terminfo
    • terminfo
  • Terraform
    • terraform
    • tf
  • TeX
    • tex
    • latex
  • Text only
    • text
  • ThingsDB
    • ti
    • thingsdb
  • Thrift
    • thrift
  • tiddler
    • tid
  • Tl-b
    • tlb
  • Todotxt
    • todotxt
  • Transact-SQL
    • tsql
    • t-sql
  • Treetop
    • treetop
  • Turtle
    • turtle
  • HTML+Twig
    • html+twig
  • Twig
    • twig
  • TypeScript
    • typescript
    • ts
  • TypoScriptCssData
    • typoscriptcssdata
  • TypoScriptHtmlData
    • typoscripthtmldata
  • TypoScript
    • typoscript
  • UL4
    • ul4
  • ucode
    • ucode
  • Unicon
    • unicon
  • Unix/Linux config files
    • unixconfig
    • linuxconfig
  • UrbiScript
    • urbiscript
  • USD
    • usd
    • usda
  • VBScript
    • vbscript
  • VCL
    • vcl
  • VCLSnippets
    • vclsnippets
    • vclsnippet
  • VCTreeStatus
    • vctreestatus
  • VGL
    • vgl
  • Vala
    • vala
    • vapi
  • aspx-vb
    • aspx-vb
  • VB.net
    • vb.net
    • vbnet
    • lobas
    • oobas
    • sobas
  • HTML+Velocity
    • html+velocity
  • Velocity
    • velocity
  • XML+Velocity
    • xml+velocity
  • verilog
    • verilog
    • v
  • vhdl
    • vhdl
  • VimL
    • vim
  • WDiff
    • wdiff
  • WebAssembly
    • wast
    • wat
  • Web IDL
    • webidl
  • Whiley
    • whiley
  • World of Warcraft TOC
    • wowtoc
  • Wren
    • wren
  • X10
    • x10
    • xten
  • XML+UL4
    • xml+ul4
  • XQuery
    • xquery
    • xqy
    • xq
    • xql
    • xqm
  • XML+Django/Jinja
    • xml+django
    • xml+jinja
  • XML+Ruby
    • xml+ruby
    • xml+erb
  • XML
    • xml
  • XML+PHP
    • xml+php
  • XML+Smarty
    • xml+smarty
  • Xorg
    • xorg.conf
  • XSLT
    • xslt
  • Xtend
    • xtend
  • xtlang
    • extempore
  • YAML+Jinja
    • yaml+jinja
    • salt
    • sls
  • YAML
    • yaml
  • YANG
    • yang
  • Zeek
    • zeek
    • bro
  • Zephir
    • zephir
  • Zig
    • zig
  • ANSYS parametric design language
    • ansys
    • apdl

@kisvegabor
Copy link
Member

Thanks! I still see a little redundancy here and there, but it should be okay now.

@anchor and @ref really seems overkill. I think for the sake of simplicity we should be fine without them too.

@vwheeler63
Copy link
Contributor Author

vwheeler63 commented Aug 30, 2024

the @anchor doesn't transfer over to the ReST side of things.

cc: @kisvegabor

In reality, there is probably no good reason to keep @anchor and @ref, and we are blessed by the fact that NOT including @ref in the list will, by itself, tell programmers not to use it—which will take care of the 50 or so mis-uses of it I found and corrected (they were generating Doxygen warnings).

I will adjust the document accordingly.

About @code: there are no @code/@endcode in LVGL blocks that use anything besides C, so I believe the C language can be assumed from now until code blocks with different languages show up. But that said, Kevin, do we get an "automatic" code highlighting from spinx by having the {.c} part in there? (The difference in the XML generated is that the <programlisting> element gets a filename=".c" attribute, but doesn't without it.) Or does sphinx already know how to do code highlighting for code blocks from the context?

@vwheeler63 vwheeler63 force-pushed the fix/doxygen_coding_style_updates branch from 8dfe6a8 to e3ff2d4 Compare August 30, 2024 10:21
@vwheeler63
Copy link
Contributor Author

vwheeler63 commented Aug 30, 2024

@kdschlosser @kisvegabor

Okay! Re-submitted. I believe that takes care of everything we have discussed up to this point, but the question about the {.c} appendage to the @code command remains outstanding. Meanwhile, the content of CODING_STYLE.rst is safe. That bit about the {.c} appendage to the @code command can be modified later if need be.

And this document is updated to show the "after-sphinx" appearance.

@kdschlosser
Copy link
Contributor

When I finish up with the script that hopefully will replace Breathe we will be given the ability to use ReST syntax directly in the doxygen docstrings. If there is some need to reference other areas of the documentation it will be as easy as ":ref:`some_reference_name`" and if wanting to reference something in doxygen docstrings it will be one of the following...

  • ":c:macro:`some_macro`"
  • ":c:struct:`some_struct`"
  • ":c:union:`some_union`"
  • ":c:type:`some_type`"
  • ":c:member:`some_struct::some_member`"
  • ":c:member:`some_union::some_member`"
  • ":c:var:`some_var`"
  • ":c:function:`some_function`"

@kdschlosser
Copy link
Contributor

I created a development discussion issue for a Breathe replacement. This is mostly for me to be able to remember how things are supposed to work and what I need to do to make things work.

#6770

@vwheeler63
Copy link
Contributor Author

If there is some need to reference other areas of the documentation it will be as easy as ":ref:some_reference_name" and if wanting to reference something in doxygen docstrings it will be one of the following...

Very nice!! Got it regarding the Breathe replacement issue #6770.

@vwheeler63
Copy link
Contributor Author

vwheeler63 commented Aug 31, 2024

Hi, Gábor! ( @kisvegabor )

An indicated off-shoot of modifying CODING_STYLE.rst is buzzing through ./src/core/ and probably ./src/misc/ and ./src/widget/ and apply these rules to set a good example. I don't think it would take that long. What do you think?

Kind regards,
Vic

@vwheeler63 vwheeler63 force-pushed the fix/doxygen_coding_style_updates branch from d185e4d to ca2974e Compare August 31, 2024 12:38
kisvegabor
kisvegabor previously approved these changes Sep 2, 2024
vwheeler63 and others added 15 commits September 5, 2024 18:43
...also fix things that did not look right after it was run through
`sphinx`.  Final document in same style as generated documents
uploaded here to see what it will look like in generated documentation
http://crystal-clear-research.com/for_gabor/demo/CODING_STYLE.html

Addresses part of issue lvgl#6480.
...since they apply to prototypes in all .h files, not a limited subset.

Applies to issue lvgl#6480.
This change majorly reduces the amount of text describing what
we want to see in documenting comments, preferring illustrative
example to lengthy descriptions, and allowing flexibility where
possible.

Addresses part of issue lvgl#6480.
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
...not both typedef struct _type_t {...} type_t both at the same time.

Addresses part of issue lvgl#6480.
@vwheeler63 vwheeler63 force-pushed the fix/doxygen_coding_style_updates branch from de08b3e to aef711b Compare September 6, 2024 00:46
@vwheeler63
Copy link
Contributor Author

@liamHowatt @kisvegabor Liam had some great observations. I agreed with all, and have re-submitted, and updated the generated demonstration document with the updates.

@kdschlosser
Copy link
Contributor

I did find out something with doxygen. It will NOT add a "brief description" unless you specifically use the @brief directive.

@vwheeler63
Copy link
Contributor Author

I did find out something with doxygen. It will NOT add a "brief description" unless you specifically use the @brief directive.

Hi, Kevin!
2 questions:

  1. Does anything go missing without them?
  2. Does it enhance the final output to have them?

@kdschlosser
Copy link
Contributor

kdschlosser commented Sep 6, 2024

don't know the answer to either of those questions as I have never tested it. I do know that the "briefdescription" element in the XML only seems to get populated when the @brief command is used. Breathe might format a brief description differently.
¯\_(ツ)_/¯

@vwheeler63
Copy link
Contributor Author

@liamHowatt Good morning! I could use your approval on this again now that I have re-submitted. :-)

@liamHowatt
Copy link
Collaborator

Thank you!

@kisvegabor
Copy link
Member

Thank you, Vic!

@kisvegabor kisvegabor merged commit d4715a9 into lvgl:master Sep 11, 2024
20 checks passed
@vwheeler63
Copy link
Contributor Author

vwheeler63 commented Sep 11, 2024

Thank you, Vic!

Yeayyy!! **celebrating completion** 👍 As you know, I'm honored to be able to help this way. :-)

@vwheeler63 vwheeler63 deleted the fix/doxygen_coding_style_updates branch September 11, 2024 10:39
rodb70 pushed a commit to rodb70/lvgl that referenced this pull request Nov 8, 2024
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
👀 Review needed Anyone can review a PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants