Is there a way to display code line numbers inside a @code
... @endcode
block? From the screenshots in the doxygen manual it would seem that there is, but I was unable to find an option for doxygen itself, or a tag syntax to accomplish this.
I need this to be able to write something like "In the above code, line 3" after a code block.
Tested also for fenced code blocks, still getting no numbers.
Add \n followed by a space at the end of your line [1]. Especially recommended when editing with Emacs, which reacts in weird ways to the other suggested solution <br> . [1] As per @albert's comment. Works for me under Doxygen 1.8.
Once specified, you can generate the comment stub by typing the respective “///” or “/**” above a function, or by using the (Ctrl+/) shortcut.
You can put example source code in a special path defined in the doxygen config under EXAMPLE_PATH , and then insert examples with the @example tag. Doxygen will then generate an extra page containing the source of the example. It will also set a link to it from the class documentation containing the example tag.
Putting the command @brief will generate a short description of the function when you generate the doxygen documentation. That short description can be extended if you want.
It seems that at least in the current version (1.8.9) line numbers are added:
\includelineno
tag
Python code formatter includes line numbers if g_sourceFileDef
evaluates as TRUE
:
/*! start a new line of code, inserting a line number if g_sourceFileDef
* is TRUE. If a definition starts at the current line, then the line
* number is linked to the documentation of that definition.
*/
static void startCodeLine()
{
//if (g_currentFontClass) { g_code->endFontClass(); }
if (g_sourceFileDef)
( https://github.com/doxygen/doxygen/blob/Release_1_8_9/src/pycode.l#L356 )
It's initialized from FileDef *fd
passed into parseCode
/parsePythonCode
if it was provided (non-zero) or from new FileDef(<...>)
otherwise:
g_sourceFileDef = fd;
<...>
if (fd==0)
{
// create a dummy filedef for the example
g_sourceFileDef = new FileDef("",(exName?exName:"generated"));
cleanupSourceDef = TRUE;
}
( https://github.com/doxygen/doxygen/blob/Release_1_8_9/src/pycode.l#L1458 ) so it seems all Python code is having line numbers included
C code formatter has an additional variable g_lineNumbers
and includes line numbers if both g_sourceFileDef
and g_lineNumbers
evaluate as TRUE
:
/*! start a new line of code, inserting a line number if g_sourceFileDef
* is TRUE. If a definition starts at the current line, then the line
* number is linked to the documentation of that definition.
*/
static void startCodeLine()
{
//if (g_currentFontClass) { g_code->endFontClass(); }
if (g_sourceFileDef && g_lineNumbers)
( https://github.com/doxygen/doxygen/blob/Release_1_8_9/src/code.l#L486 )
They are initialized in the following way:
g_sourceFileDef = fd;
g_lineNumbers = fd!=0 && showLineNumbers;
<...>
if (fd==0)
{
// create a dummy filedef for the example
g_sourceFileDef = new FileDef("",(exName?exName:"generated"));
cleanupSourceDef = TRUE;
}
( https://github.com/doxygen/doxygen/blob/Release_1_8_9/src/code.l#L3623 )
Note that g_lineNumbers
remains FALSE
if provided fd
value was 0
Among parseCode
calls in HtmlDocVisitor::visit
there is only one (for DocInclude::IncWithLines
, what corresponds to \includelineno
) which passes non-zero fd
:
https://github.com/doxygen/doxygen/blob/Release_1_8_9/src/htmldocvisitor.cpp#L540
so this seems to be the only command which will result in line numbers included into C code listing
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With