-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathConfigOptions.json
More file actions
688 lines (688 loc) · 36.3 KB
/
Copy pathConfigOptions.json
File metadata and controls
688 lines (688 loc) · 36.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
[
{
"category": "Inputs",
"brief": "Inputs, paths, and the toolchain used to compile them",
"details": "These options tell Mr.Docs which sources to read, where to write the result, and how to compile the code. They cover the command-line inputs and configuration file, the source root and output location, the compilation database, and the include paths, preprocessor defines, and standard-library and toolchain settings the compiler needs to parse the sources.",
"options": [
{
"name": "cmd-line-inputs",
"command-line-only": true,
"brief": "Configuration or compilation database files",
"details": "Positional inputs that drive the run. Each path is dispatched by file name: an input ending in `mrdocs.yml` is read as a configuration file, and an input ending in `compile_commands.json` or `CMakeLists.txt` is read as a compilation database. The dispatch is a convenience; prefer the explicit `config` and `compilation-database` flags so the invocation is unambiguous and easier to read in scripts and CI logs.",
"type": "list<path>",
"default": [],
"command-line-sink": true,
"filename-mapping": {
"mrdocs.yml": "config",
"compile_commands.json": "compilation-database",
"CMakeLists.txt": "compilation-database"
},
"relative-to": "<cwd>",
"must-exist": true,
"should-exist": true
},
{
"name": "config",
"command-line-only": true,
"brief": "Mr.Docs configuration file",
"details": "A YAML file holding the options for the run: the source code, the output directory, the compilation database, the generator, and the filters. MrDocs reads it and applies the options it finds.",
"type": "file-path",
"default": "<cwd>/mrdocs.yml",
"relative-to": "<cwd>",
"required": true,
"must-exist": true
},
{
"name": "source-root",
"brief": "Path to the root directory of the source code",
"details": "The root directory of the source tree. It is the default location for input files and the base for the relative paths MrDocs forms from absolute ones. Set it to the root of the git project so those relative paths can link back to the source files in the repository; templates build those links from the `base-url` option.",
"type": "dir-path",
"default": "<config-dir>",
"relative-to": "<config-dir>",
"must-exist": true
},
{
"name": "compilation-database",
"brief": "Path to the compilation database",
"details": "The path to a compilation database, or to a build script that generates one. A compilation database is a JSON file of the compiler commands that build the source; MrDocs reads the compiler flags and source files from it to extract symbols. You can also pass a build script such as `CMakeLists.txt`: MrDocs then looks for CMake on `PATH` or in `CMAKE_ROOT`, runs the script, and uses the database it produces.",
"type": "file-path",
"default": "",
"relative-to": "<config-dir>",
"must-exist": true
},
{
"name": "cmake",
"brief": "CMake arguments when generating the compilation database from CMakeLists.txt",
"details": "When the compilation-database option is a CMakeLists.txt file, these arguments are passed to the cmake command to generate the compilation_database.json.",
"type": "string",
"default": ""
},
{
"name": "defines",
"brief": "Additional defines passed to the compiler",
"details": "Additional defines passed to the compiler when building the source code. These defines are added to the compilation database regardless of the strategy to generate it.",
"type": "list<string>",
"default": []
},
{
"name": "use-system-stdlib",
"brief": "Use the system C++ standard library",
"details": "To achieve reproducible results, MrDocs bundles the LibC++ headers. To use the C++ standard library available in the system instead, set this option to true.",
"type": "bool",
"default": true
},
{
"name": "stdlib-includes",
"brief": "C++ Standard Library include paths",
"details": "When `use-system-stdlib` is disabled, the C++ standard library headers are available in these paths.",
"type": "list<path>",
"default": [
"<mrdocs-root>/share/mrdocs/headers/libcxx"
],
"relative-to": "<config-dir>",
"must-exist": false,
"should-exist": true
},
{
"name": "use-system-libc",
"brief": "Use the system C standard library",
"details": "To achieve reproducible results, MrDocs bundles the LibC headers with its definitions. To use the C standard library available in the system instead, set this option to true.",
"type": "bool",
"default": true
},
{
"name": "libc-includes",
"brief": "Standard Library include paths",
"details": "When `use-system-libc` is disabled, the C standard library headers are available in these paths.",
"type": "list<path>",
"default": [
"<mrdocs-root>/share/mrdocs/headers/libc-stubs"
],
"relative-to": "<config-dir>",
"must-exist": false,
"should-exist": true
},
{
"name": "system-includes",
"brief": "System include paths",
"details": "Directories added to the system header search path. Headers found there are treated as system headers: they come from outside the project and are not checked for warnings or errors. The standard library and other external headers usually live here.",
"type": "list<path>",
"relative-to": "<config-dir>",
"default": [],
"must-exist": false,
"should-exist": true
},
{
"name": "includes",
"brief": "Include paths",
"details": "Directories added to the header search path. Headers found there are part of the project and are checked for warnings and errors. Reach for this option when MrDocs cannot find a header your code includes.",
"type": "list<path>",
"default": [],
"relative-to": "<config-dir>",
"must-exist": false,
"should-exist": true
}
]
},
{
"category": "Filters",
"brief": "Which symbols are documented, and which are hidden",
"details": "These options decide which symbols enter the documentation corpus and how the ones that do appear. They filter by qualified name, by category (private members, undocumented declarations, friends, anonymous namespaces, and so on), by location on disk, and by marking specific symbols as private without dropping them from the corpus.",
"options": [
{
"name": "input",
"brief": "Input directories to extract symbols from",
"details": "Input directories to extract. Only symbols defined in files in these directories are extracted. The paths are relative to the mrdocs configuration file. Inclusion is generous about symlinks: a file counts as being inside an input directory when its path matches the directory either as written or by its real (symlink-resolved) location.",
"type": "list<path>",
"must-exist": false,
"should-exist": true,
"relative-to": "<config-dir>",
"default": [
"<source-root>/."
]
},
{
"name": "recursive",
"brief": "Recursively include files from \"input\" paths",
"details": "Recursively include files. When set to true, Mr.Docs includes files in subdirectories of the input directories. When set to false, Mr.Docs includes only the files in the input directories.",
"type": "bool",
"default": true
},
{
"name": "file-patterns",
"brief": "File patterns to include",
"details": "Only files whose names match these glob patterns are extracted. The patterns are relative to the input directories.",
"type": "list<path-glob>",
"default": [
"*.hpp",
"*.h",
"*.hh",
"*.ipp",
"*.inc",
"*.cpp",
"*.cc",
"*.cxx",
"*.c",
"*.hxx"
]
},
{
"name": "exclude",
"brief": "Input directories to exclude",
"details": "Symbols defined in files in these directories are not extracted even if they are in the list of include directories. When relative, the paths are relative to the directory of the mrdocs configuration file. For instance, \"include/experimental\" will exclude all files in the directory `<config-dir>/include/experimental`. Exclusion is strict about symlinks: it matches the file path only as written and does not resolve symlinks.",
"type": "list<path>",
"must-exist": false,
"should-exist": true,
"relative-to": "<config-dir>",
"default": []
},
{
"name": "exclude-patterns",
"brief": "File patterns to exclude",
"details": "Files matching these glob patterns are skipped, even when they sit inside an included directory. The patterns are relative to the configuration file. A single `*` matches everything in a directory; `**` matches everything in a directory and its subdirectories.",
"type": "list<path-glob>",
"relative-to": "<config-dir>",
"default": []
},
{
"name": "include-symbols",
"brief": "Symbol patterns to include",
"details": "If any patterns are defined here, only symbols that match one of these patterns are extracted. The patterns are applied to the fully qualified name of the symbol without any leading \"::\". A single \"*\" will match all symbols in the namespace. Double \"**\" will match all symbols in the namespace and its subnamespaces. The patterns also support \"?\" for any chars, \"[<chars>]\" for charsets, \"[^<chars>]\" for inverted charsets, and \"{<glob>,...}\" for alternatives.",
"type": "list<symbol-glob>",
"relative-to": "<config-dir>",
"default": []
},
{
"name": "exclude-symbols",
"brief": "Symbol patterns to exclude",
"details": "A symbol that matches one of these patterns is not extracted even if whitelisted by \"include-symbols\". See the documentation for \"include-symbols\" for the pattern syntax.",
"type": "list<symbol-glob>",
"default": []
},
{
"name": "see-below",
"brief": "Exposition only symbols rendered as \"see-below\".",
"details": "Symbols matching these filters, and symbols in scopes that match, are tagged \"see-below\" in the documentation. Use it for symbols that belong to the project's private API but that users still interact with. On such a symbol's page the implementation synopsis is rendered as \"see-below\" and the members of a scope, such as a namespace or record, are not listed, while the rest of the documentation appears as usual. See `include-symbols` for the pattern syntax.",
"type": "list<symbol-glob>",
"default": []
},
{
"name": "implementation-defined",
"brief": "Symbols rendered as \"implementation-defined\"",
"details": "Symbols matching these filters, and symbols in scopes that match, are tagged \"implementation-defined\". Use it for symbols that belong to the project's private API. An \"implementation-defined\" symbol has no page of its own, and any reference to it renders as \"implementation-defined\". See `include-symbols` for the pattern syntax.",
"type": "list<symbol-glob>",
"default": []
},
{
"name": "auto-function-objects",
"brief": "Automatically detect algorithm function objects",
"details": "When true, Mr.Docs automatically detects algorithm function objects (informally known as niebloids): variables whose type is a record whose only public non-special members are operator() overloads. Set to false to disable auto-detection and rely solely on the @functionobject/@functor doc command. The @functionobject command is still useful when auto-detection is enabled, to force treatment of types that fail auto-detection (e.g. because they have extra public members); it may be placed on the variable or on the function-object record. When a variable is treated as an algorithm function object, its documentation comes from the record's operator() overloads, falling back to the variable's own doc comment when operator() is undocumented; the record's own doc comment is not used.",
"type": "bool",
"default": true
},
{
"name": "extract-all",
"brief": "Extract all symbols",
"details": "When set to `true`, MrDocs extracts all symbols from the source code, even if no documentation is provided. MrDocs can only identify whether a symbol is ultimated documented after extracting information from all translation units. For this reason, when this option is set to `false`, it's still recommendable to provide file and symbol filters so that only the desired symbols are traversed and stored by MrDocs.",
"type": "bool",
"default": true
},
{
"name": "extract-private",
"brief": "Extraction policy for private class members",
"details": "Determine whether private class members should be extracted",
"type": "bool",
"default": false
},
{
"name": "extract-private-virtual",
"brief": "Extraction policy for private virtual methods of a class",
"details": "Determine whether private virtual methods of a class should be extracted",
"type": "bool",
"default": false
},
{
"name": "extract-private-bases",
"brief": "Extraction policy for private base classes",
"details": "Determine whether private base classes should be extracted",
"type": "bool",
"default": false
},
{
"name": "extract-static",
"brief": "Extraction policy for static members of a file",
"details": "Determine whether static members of a file should be extracted. This option does not refer to static members of a class.",
"type": "bool",
"default": false
},
{
"name": "extract-local-classes",
"brief": "Extraction policy for records defined locally in source files",
"details": "Determine whether records only defined locally in source files should be extracted.",
"type": "bool",
"default": true
},
{
"name": "extract-anonymous-namespaces",
"brief": "Extraction policy for anonymous namespaces",
"details": "Determine whether symbols in anonymous namespaces should be extracted.",
"type": "bool",
"default": true
},
{
"name": "extract-empty-namespaces",
"brief": "Extraction policy for empty namespaces",
"details": "Determine whether empty namespaces without documentation should be extracted.",
"type": "bool",
"default": false
},
{
"name": "extract-implicit-specializations",
"brief": "Implicit template specializations used as base classes are extracted as dependencies",
"details": "When set to `true`, MrDocs extracts implicit template specializations that appear as base classes, treating them as dependencies. This gives it the metadata it needs to resolve the derived class's inherited members, as controlled by the `inherit-base-members` option.",
"type": "bool",
"default": true
},
{
"name": "extract-friends",
"brief": "Extraction policy for friend functions and classes",
"details": "Determine whether friend functions and classes should be extracted. When set to `true`, MrDocs extracts friend functions and classes. When set to `false`, friend functions and classes are not extracted.",
"type": "bool",
"default": true
}
]
},
{
"category": "Extraction",
"brief": "How extracted symbols are arranged and what MrDocs infers from them",
"details": "These options control how the documentation set is presented once the filters have decided what enters it: which inherited members are shown on a class page, the order members appear in, how related declarations are grouped (overload sets, SFINAE expressions, function objects), what MrDocs infers from doc comments (briefs, relations, function metadata), and tolerance for headers the compiler cannot find.",
"options": [
{
"name": "inherit-base-members",
"brief": "Determine how derived classes inherit base members",
"details": "Determine how derived classes inherit members of base classes. When set to `never`, derived classes do not inherit members of base classes and only the relationship is stored. When set to `reference`, derived classes list members of base classes but references are still linked to the base class. When set to `copy-dependencies`, a reference is created by default and a copy is created when the base class is a dependency. When set to `copy-all`, a copy is created for each base symbol as if it was declared in the derived class. If the base class is a dependency, the extraction mode is copied from the new parent.",
"type": "enum",
"values": [
"never",
"reference",
"copy-dependencies",
"copy-all"
],
"default": "copy-dependencies"
},
{
"name": "sort-members",
"brief": "Sort the members of a record",
"details": "When set to `true`, sort the members of a record by the criterion determined in the `sort-members-by` option. When set to `false`, the members are included in the declaration order they are extracted.",
"type": "bool",
"default": true
},
{
"name": "sort-members-by",
"brief": "Determine how members of a record are sorted",
"details": "If `sort-members` is set to `true`, determine how members of a record are sorted. When set to `name`, members are sorted by name. When set to `location`, members are sorted by their primary location in the source code, considering the short name of the path and the location in the file.",
"type": "enum",
"values": [
"name",
"location"
],
"default": "name"
},
{
"name": "sort-namespace-members-by",
"brief": "Determine how members of a namespace are sorted",
"details": "Although members of namespaces are always sorted, determine how members of a namespace are sorted. When set to `name`, members are sorted by name. When set to `location`, members are sorted by their primary location in the source code, considering the short name of the path and the location in the file.",
"type": "enum",
"values": [
"name",
"location"
],
"default": "name"
},
{
"name": "sort-members-ctors-1st",
"brief": "Sort constructors first",
"details": "When set to `true`, constructors are sorted first in the list of members of a record.",
"type": "bool",
"default": true
},
{
"name": "sort-members-dtors-1st",
"brief": "Sort destructors first",
"details": "When set to `true`, destructors are sorted first in the list of members of a record.",
"type": "bool",
"default": true
},
{
"name": "sort-members-assignment-1st",
"brief": "Sort assignment operators first",
"details": "When set to `true`, assignment operators are sorted first in the list of members of a record.",
"type": "bool",
"default": true
},
{
"name": "sort-members-conversion-last",
"brief": "Sort conversion operators last",
"details": "When set to `true`, conversion operators are sorted last in the list of members of a record or namespace.",
"type": "bool",
"default": true
},
{
"name": "sort-members-relational-last",
"brief": "Sort relational operators last",
"details": "When set to `true`, relational operators are sorted last in the list of members of a record or namespace.",
"type": "bool",
"default": true
},
{
"name": "sfinae",
"brief": "Detect and reduce SFINAE expressions",
"details": "When set to true, MrDocs detects SFINAE expressions in the source code and extracts them as part of the documentation. Expressions such as `std::enable_if<...>` are detected, removed, and documented as a requirement. MrDocs uses an algorithm that extracts SFINAE infomation from types by identifying inspecting the primary template and specializations to detect the result type and the controlling expressions in a specialization.",
"type": "bool",
"default": true
},
{
"name": "overloads",
"brief": "Detect and group function overloads",
"details": "When set to `true`, MrDocs detects function overloads and groups them as a single symbol type. The documentation for this new symbol comes from the union of non-ambiguous metadata from the functions.",
"type": "bool",
"default": true
},
{
"name": "missing-include-prefixes",
"brief": "Include path prefixes allowed to be missing",
"details": "Specifies path prefixes for include files that, if missing, will not cause documentation generation to fail. Missing files with these prefixes are served as empty files from an in-memory file system, allowing processing to continue. For example, use \"llvm/\" to forgive all includes from LLVM. If any such path is specified, MrDocs will attempt to synthesize missing included types. Only simple sets of non-conflicting inferred types can be synthesized. For more complex types or for better control, provide a shim using the \"missing-include-shims\" option.",
"type": "list<string>",
"default": []
},
{
"name": "missing-include-shims",
"brief": "Shims for forgiven missing include files",
"details": "Specifies a map of include file paths to shim contents. If a missing include file matches a forgiven prefix, MrDocs will use the shim content from this map as the file contents. If no shim is provided for a forgiven file, an empty file is used by default.",
"type": "map<string,string>",
"default": {}
},
{
"name": "auto-brief",
"brief": "Use the first line of the comment as the brief",
"details": "When set to `true`, Mr.Docs uses the first line (until the first dot, question mark, or exclamation mark) of the comment as the brief of the symbol. When set to `false`, a explicit @brief command is required.",
"type": "bool",
"default": true
},
{
"name": "auto-relates",
"brief": "Automatically find non-member functions",
"details": "When set to `true`, Mr.Docs automatically finds non-member functions that are related to the current class.",
"type": "bool",
"default": true
},
{
"name": "auto-function-metadata",
"brief": "Automatically provide missing documentation for special functions and trivial metadata",
"details": "When set to `true`, Mr.Docs automatically provides documentation for special functions, such as constructors, destructors, and operators. It also provides documentation for missing documentation metadata, such as known types.",
"type": "bool",
"default": true
}
]
},
{
"category": "Output",
"brief": "Generators to create the documentation and their options",
"details": "",
"options": [
{
"name": "output",
"brief": "Directory or file for generating output",
"details": "Multipage generators expect a directory. Single page generators expect a file or a directory where the file will be created. If the directory does not exist, it will be created.",
"type": "path",
"default": "<config-dir>/reference-output",
"relative-to": "<config-dir>",
"must-exist": false,
"should-exist": false
},
{
"name": "generator",
"brief": "Generator(s) used to create the documentation",
"details": "The generator is responsible for creating the documentation from the extracted symbols. The generator uses the extracted symbols and the templates to create the documentation. The built-in generators include `adoc`, `html`, `xml`, and `noop` (which extracts but writes no output, useful for checking extraction warnings); data-driven generators can be added by dropping a template folder under <addon>/generator/<name>/; a script-driven generator is declared by an extension with `mrdocs.register_generator` and produces the output itself. This option accepts a single generator (`generator: xml`), a list (`generator: [xml, adoc]`), or a comma-separated string (`generator: \"xml,adoc\"`); when more than one is given the documentation is produced once per generator.",
"type": "string-list",
"default": ["html"]
},
{
"name": "multipage",
"brief": "Generate a multipage documentation",
"details": "Generates a multipage documentation. The output directory must be a directory. This option acts as a hint to the generator to create a multipage documentation. Whether the hint is followed or not depends on the generator.",
"type": "bool",
"default": true
},
{
"name": "base-url",
"brief": "Base URL for links to source code",
"details": "The prefix for links to the source code. MrDocs joins it with the path of each source file to build the link.",
"type": "string",
"default": ""
},
{
"name": "addons",
"brief": "Path to the Addons directory",
"details": "The directory of template files the generators use to build the documentation. Leave it unset to use the defaults that ship at `share/mrdocs/addons` in the MrDocs installation. To customize the output, copy those defaults to your own directory and point this option at it.",
"type": "path",
"default": "<mrdocs-root>/share/mrdocs/addons",
"relative-to": "<config-dir>",
"must-exist": true
},
{
"name": "addons-supplemental",
"brief": "Additional addons layered on top of the base addons",
"details": "Optional list of supplemental addons directories that are loaded after the base addons (built-in or replacement). Files in later supplemental directories override files from earlier ones and from the base addons. Use this to add or override a few templates/helpers without copying the entire addons tree.",
"type": "list<path>",
"default": [],
"relative-to": "<config-dir>",
"must-exist": true
},
{
"name": "tagfile",
"brief": "Path for the tagfile",
"details": "Specifies the full path (filename) where the generated tagfile should be saved. If left empty, no tagfile will be generated.",
"type": "file-path",
"default": "<output-dir>/reference.tag.xml",
"relative-to": "<output-dir>",
"must-exist": false,
"should-exist": false
},
{
"name": "legible-names",
"brief": "Use legible names",
"details": "Use legible names for ids in the documentation. When set to true, MrDocs uses legible names for symbols in the documentation. These are symbols that are legible but still safe for URLs. When the option is set to false, MrDocs uses a hash of the symbol ID.",
"type": "bool",
"default": true
},
{
"name": "embedded",
"brief": "Output an embeddable document",
"details": "Output an embeddable document, which excludes the header, the footer, and everything outside the body of the document. This option is useful for producing documents that can be inserted into an external template.",
"type": "bool",
"default": false
},
{
"name": "show-namespaces",
"brief": "Show namespace pages in the documentation",
"details": "When set to true, MrDocs creates a page for each namespace in the documentation.",
"type": "bool",
"default": true
},
{
"name": "show-enum-constants",
"brief": "Show enum constant pages in the documentation",
"details": "When set to true, MrDocs creates a page for each enum constant in the documentation.",
"type": "bool",
"default": false
},
{
"name": "global-namespace-index",
"brief": "Use the global namespace page as an index for all symbols",
"details": "When set to true, the page for the global namespace will recursively list all symbols in the documentation, not just those in the global namespace. This makes the global namespace page act as an index for the entire project.",
"type": "bool",
"default": true
},
{
"name": "stylesheets",
"brief": "Ordered list of stylesheets to apply to HTML output",
"details": "Ordered list of stylesheet names or paths. If empty, the bundled stylesheet is used. Entries can be local paths or remote URLs; remote URLs are only linked when `linkcss` is true. Inline mode embeds local styles; link mode emits `<link>` tags for each entry and copies local files.",
"type": "list<string>",
"default": []
},
{
"name": "no-default-styles",
"brief": "Disable the bundled default stylesheet",
"details": "When set to true, the bundled stylesheet is not applied. Combine with an empty `stylesheets` list to emit no styles at all.",
"type": "bool",
"default": false
},
{
"name": "stylesdir",
"brief": "Directory for linked stylesheets",
"details": "The directory MrDocs writes into the href of linked stylesheets when `linkcss` is true. Defaults to `css`. When local styles are copied, the directory is created under the output root, for example `css/mrdocs-default.css`.",
"type": "string",
"default": "css"
},
{
"name": "linkcss",
"brief": "Link stylesheets instead of embedding them",
"details": "When set to true, stylesheets are linked with `<link>` tags instead of being inlined. Links use `stylesdir` plus the stylesheet name (e.g. `css/custom.css`). Local styles are copied unless `copycss` is false; remote URLs are linked as-is.",
"type": "bool",
"default": false
},
{
"name": "copycss",
"brief": "Copy local stylesheets when linking",
"details": "When `linkcss` is true, copy bundled and local stylesheet files into the output under `stylesdir`. Remote URLs are not copied. Set to false to skip copying.",
"type": "bool",
"default": true
}
]
},
{
"category": "Diagnostics",
"brief": "Warnings, logging, and error handling",
"details": "These options control the diagnostics Mr.Docs emits as it runs: the warnings it reports about undocumented or malformed documentation, the logging verbosity and report file, the concurrency it uses, and how it behaves when it encounters errors.",
"options": [
{
"name": "verbose",
"brief": "Verbose output",
"details": "When set to true, MrDocs prints extra information as it generates the documentation.",
"type": "bool",
"default": false
},
{
"name": "report",
"brief": "The minimum reporting level",
"details": "The reporting level determines the amount of information displayed during the generation of the documentation. The value `-1` delegates the decision to the `log-level` option.",
"type": "unsigned",
"default": -1,
"min-value": -1,
"max-value": 5,
"deprecated": "Use `log-level` instead"
},
{
"name": "log-level",
"brief": "The minimum reporting level",
"details": "The reporting level determines the amount of information displayed during the generation of the documentation.",
"type": "enum",
"values": [
"trace",
"debug",
"info",
"warn",
"error",
"fatal"
],
"default": "info"
},
{
"name": "warnings",
"brief": "Enable warning messages",
"details": "When set to `true`, MrDocs outputs warning messages during the generation of the documentation. It is usually recommended to enable warnings while writing the documentation.",
"type": "bool",
"default": true
},
{
"name": "warn-if-undocumented",
"brief": "Warn if symbols are not documented",
"details": "When set to `true`, MrDocs outputs a warning message if a symbol that passes all filters is not documented.",
"type": "bool",
"default": true
},
{
"name": "warn-if-doc-error",
"brief": "Warn if documentation has errors",
"details": "When set to `true`, MrDocs outputs a warning message if the documentation of a symbol has errors such as duplicate parameters and parameters that don't exist.",
"type": "bool",
"default": true
},
{
"name": "warn-no-paramdoc",
"brief": "Warn if parameters are not documented",
"details": "When set to `true`, MrDocs outputs a warning message if a named function parameter is not documented.",
"type": "bool",
"default": true
},
{
"name": "warn-unnamed-param",
"brief": "Warn if documented functions have unnamed parameters",
"details": "When set to `true`, MrDocs outputs a warning message if a documented function has a parameter that is not named.",
"type": "bool",
"default": false
},
{
"name": "warn-if-undoc-enum-val",
"brief": "Warn if enum values are not documented",
"details": "When set to `true`, MrDocs outputs a warning message if an enum value is not documented.",
"type": "bool",
"default": true
},
{
"name": "warn-broken-ref",
"brief": "Warn if a documentation reference is broken",
"details": "When set to `true`, MrDocs outputs a warning message if a reference in the documentation is broken.",
"type": "bool",
"default": true
},
{
"name": "warn-as-error",
"brief": "Treat warnings as errors",
"details": "When set to `true`, MrDocs treats warnings as errors and stops the generation of the documentation.",
"type": "bool",
"default": false
},
{
"name": "error-on-empty-corpus",
"brief": "Treat an empty corpus as an error",
"details": "When set to `true`, MrDocs treats an empty corpus as a hard error and exits with a failure status instead of emitting a warning and succeeding. A corpus counts as empty when no symbols are extracted; because the global namespace is always present in the model, a corpus that contains only the global namespace and no other declaration is also treated as empty. This usually means nothing was extracted, which is rarely intended in CI, so this turns that silent success into a detectable failure. This escalation applies regardless of the `warn-as-error` option.",
"type": "bool",
"default": true
},
{
"name": "concurrency",
"brief": "Number of threads to use",
"details": "The desired level of concurrency: 0 for hardware-suggested.",
"type": "unsigned",
"default": 0,
"min-value": 0
},
{
"name": "ignore-map-errors",
"brief": "Continue if files are not mapped correctly",
"details": "When set to true, MrDocs continues to generate the documentation even if some files are not mapped correctly. Files are not mapped correctly when the source file is not found or the compilation database does not contain the compiler flags for the source file.",
"type": "bool",
"default": false
},
{
"name": "ignore-failures",
"brief": "Whether AST visitation failures should not stop the program",
"details": "When set to true, MrDocs continues to generate the documentation even if there are AST visitation failures. AST visitation failures occur when the source code contains constructs that are not supported by MrDocs.",
"type": "bool",
"default": false
}
]
}
]