Ответ 1
Короткий ответ
Кажется, что по крайней мере в текущей версии (1.8.9) добавлены номера строк:
- для кода C только при использовании
\includelineno
тега - для любого кода Python
Подробнее
Форматировщик кода Python
Форматировщик кода Python включает номера строк, если g_sourceFileDef
оценивается как 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 )
Инициализирован из FileDef *fd
, переданный в parseCode
/parsePythonCode
, если он был предоставлен (ненулевой) или из new FileDef(<...>)
иначе:
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) поэтому кажется, что все коды Python содержат номера строк
Форматирование кода C
Форматирующий код кода C имеет дополнительную переменную g_lineNumbers
и включает номера строк, если оба g_sourceFileDef
и g_lineNumbers
оцениваются как 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)
Они инициализируются следующим образом:
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)
Обратите внимание, что g_lineNumbers
остается FALSE
, если при условии, что значение fd
равно 0
HtmlDocVisitor
Среди вызовов parseCode
в HtmlDocVisitor::visit
есть только один (для DocInclude::IncWithLines
, что соответствует \includelineno
), который передает ненулевое значение fd
:
https://github.com/doxygen/doxygen/blob/Release_1_8_9/src/htmldocvisitor.cpp#L540
так что это, кажется, единственная команда, которая приведет к тому, что номера строк будут включены в список кодов C