diff --git a/doc/api.md b/doc/api.md index 70bc97b3..d1d6fd4a 100644 --- a/doc/api.md +++ b/doc/api.md @@ -10,7 +10,7 @@ The {fmt} library API consists of the following components: - [`fmt/chrono.h`](#chrono-api): date and time formatting - [`fmt/std.h`](#std-api): formatters for standard library types - [`fmt/compile.h`](#compile-api): format string compilation -- [`fmt/color.h`](#color-api): terminal color and text style +- [`fmt/color.h`](#color-api): terminal colors and text styles - [`fmt/os.h`](#os-api): system APIs - [`fmt/ostream.h`](#ostream-api): `std::ostream` support - [`fmt/args.h`](#args-api): dynamic argument lists @@ -394,7 +394,7 @@ allocator: } The allocator will be used for the output container only. Formatting -functions normally don\'t do any allocations for built-in and string +functions normally don't do any allocations for built-in and string types except for non-default floating-point formatting that occasionally falls back on `sprintf`. @@ -554,7 +554,7 @@ performance bottleneck. ::: operator""_cf -## Terminal Color and Text Style +## Terminal Colors and Text Styles `fmt/color.h` provides support for terminal color and text style output. @@ -617,7 +617,7 @@ functionality. The following functions use [printf format string syntax](https://pubs.opengroup.org/onlinepubs/009695399/functions/fprintf.html) with the POSIX extension for positional arguments. Unlike their standard counterparts, the `fmt` functions are type-safe and throw an exception -if an argument type doesn\'t match its format specification. +if an argument type doesn't match its format specification. ::: printf(string_view, const T&...) @@ -647,5 +647,5 @@ following differences: - Names are defined in the `fmt` namespace instead of `std` to avoid collisions with standard library implementations. -- Width calculation doesn\'t use grapheme clusterization. The latter has - been implemented in a separate branch but hasn\'t been integrated yet. +- Width calculation doesn't use grapheme clusterization. The latter has + been implemented in a separate branch but hasn't been integrated yet. diff --git a/doc/syntax.md b/doc/syntax.md index 9f5b3bbc..6d5ee566 100644 --- a/doc/syntax.md +++ b/doc/syntax.md @@ -1,7 +1,7 @@ # Format String Syntax -[Formatting functions](api.md) such as `fmt::format` and `fmt::print` use the -same format string syntax described in this section. +[Formatting functions](api.md) such as `fmt::format` and [`fmt::print`]( +api.md#print) use the same format string syntax described in this section. Format strings contain "replacement fields" surrounded by curly braces `{}`. Anything that is not contained in braces is considered literal text, which is diff --git a/support/mkdocstrings_handlers/cxx/__init__.py b/support/mkdocstrings_handlers/cxx/__init__.py index b60ab1b3..0420291f 100644 --- a/support/mkdocstrings_handlers/cxx/__init__.py +++ b/support/mkdocstrings_handlers/cxx/__init__.py @@ -9,9 +9,11 @@ from subprocess import CalledProcessError, PIPE, Popen, STDOUT class Definition: '''A definition extracted by Doxygen.''' - def __init__(self, name: str, kind: str): + def __init__(self, name: str, kind: Optional[str] = None, + node: Optional[et.Element] = None): self.name = name - self.kind = kind + self.kind = kind if kind is not None else node.get('kind') + self.id = node.get('id') if node is not None else None self.params = None self.members = None @@ -99,7 +101,10 @@ def convert_return_type(d: Definition, node: et.Element) -> None: d.trailing_return_type = normalize_type(parts[1]) def render_decl(d: Definition) -> None: - text = '
'
+  text = ''
+  if d.id is not None:
+    text += f'\n'
+  text += '
'
 
   if d.template_params is not None:
     text += 'template <'
@@ -131,6 +136,8 @@ def render_decl(d: Definition) -> None:
 
   text += end
   text += '
\n' + if d.id is not None: + text += f'
\n' return text class CxxHandler(BaseHandler): @@ -203,7 +210,7 @@ class CxxHandler(BaseHandler): with open(path) as f: xml = et.parse(f) node = xml.find('compounddef') - d = Definition(identifier, node.get('kind')) + d = Definition(identifier, node=node) d.template_params = convert_template_params(node) d.desc = get_description(node) d.members = [] @@ -257,20 +264,19 @@ class CxxHandler(BaseHandler): for node in nodes: # Process a function or a typedef. params = None - kind = node.get('kind') - if kind == 'function': + d = Definition(name, node=node) + if d.kind == 'function': params = convert_params(node) node_param_str = ', '.join([p.type for p in params]) if param_str and param_str != node_param_str: candidates.append(f'{name}({node_param_str})') continue - elif kind == 'define': + elif d.kind == 'define': params = [] for p in node.findall('param'): d = Definition(p.find('defname').text, 'param') d.type = None params.append(d) - d = Definition(name, kind) d.type = convert_type(node.find('type')) d.template_params = convert_template_params(node) d.params = params