https://github.com/SamrudhNelli created
https://github.com/llvm/llvm-project/pull/181417
Could not figure out how to use the `{{^End}}` on the just the inner scope as
it would revert to the outer scope with `{{End}}` set for the final function. I
think this is a bug and also affects the existing template, function printing.
Hence, reverted to trailing commas for all parameters.
Also disabled "language-cpp" highlighting as it enforced the `display : inline`
rule and reset all the custom span classes, therefore implemented a custom
highlighter to just colour the function name and parameter types.
@evelez7 Would like to hear your approach on tackling this issue and the
changes to be made.
I’d appreciate your thoughts on this approach. I will update the regression
tests once we finalize the design.
Fixes #181228
>From 564745a58365f94cb05d79127124370d874b99a2 Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Fri, 13 Feb 2026 22:38:54 +0530
Subject: [PATCH] fix: Enable horizontal wrapping on longer function
definitions
Could not figure out how to use the {{^End}} on the just
the inner scope as it would revert to the outer scope with {{End}} set
for the final function.
Hence, reverted to trailing commas for all parameters.
---
clang-tools-extra/clang-doc/JSONGenerator.cpp | 18 ++++++++++++++++++
.../clang-doc/assets/clang-doc-mustache.css | 18 ++++++++++++++++++
.../assets/function-template.mustache | 3 +--
3 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp
b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index 5051e7e6e690d..0586aca5f2b15 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -456,6 +456,24 @@ static void serializeArray(const Container &Records,
Object &Obj,
ItemObj["End"] = true;
RecordsArrayRef.push_back(ItemVal);
}
+ if (Key == "Params") {
+ size_t TotalLength = 0;
+ for (const auto &Val : RecordsArrayRef) {
+ if (const auto *ItemObj = Val.getAsObject()) {
+ if (auto Type = ItemObj->getString("Type"))
+ TotalLength += Type->size();
+ if (auto Name = ItemObj->getString("Name"))
+ TotalLength += Name->size();
+ TotalLength += 2; // For ', '
+ }
+ }
+ if (TotalLength > 15) {
+ Obj["IsLong"] = true;
+ }
+ else {
+ Obj["IsLong"] = false;
+ }
+ }
Obj[Key] = RecordsArray;
}
diff --git a/clang-tools-extra/clang-doc/assets/clang-doc-mustache.css
b/clang-tools-extra/clang-doc/assets/clang-doc-mustache.css
index 19fba2f9eae76..ae058fb2b9a24 100644
--- a/clang-tools-extra/clang-doc/assets/clang-doc-mustache.css
+++ b/clang-tools-extra/clang-doc/assets/clang-doc-mustache.css
@@ -520,3 +520,21 @@ a, a:visited, a:hover, a:active {
overflow: hidden;
padding: 10px;
}
+
+.params-vertical {
+ display: block;
+ padding-left: 1ch;
+}
+
+.param {
+ display: block;
+}
+
+.hljs-type {
+ color: var(--brand-dark);
+}
+
+.hljs-title {
+ color: var(--brand-dark);
+ font-weight: bold;
+}
\ No newline at end of file
diff --git a/clang-tools-extra/clang-doc/assets/function-template.mustache
b/clang-tools-extra/clang-doc/assets/function-template.mustache
index 510219a63d379..9c1355319bf73 100644
--- a/clang-tools-extra/clang-doc/assets/function-template.mustache
+++ b/clang-tools-extra/clang-doc/assets/function-template.mustache
@@ -10,8 +10,7 @@
<pre><code class="language-cpp code-clang-doc">template
<{{#Parameters}}{{Param}}{{^End}}, {{/End}}{{/Parameters}}></code></pre>
{{/Template}}
{{! Function Prototype }}
- <pre><code class="language-cpp code-clang-doc">{{ReturnType.QualName}}
{{Name}}{{#Template}}{{#Specialization}}<{{#Parameters}}{{Param}}{{^End}},
{{/End}}{{/Parameters}}>{{/Specialization}}{{/Template}}
({{#Params}}{{Type.QualName}} {{Name}}{{^End}},
{{/End}}{{/Params}})</code></pre>
- {{! Function Comments }}
+ <pre><code class="nohighlight code-clang-doc"><span
class="hljs-type">{{ReturnType.QualName}}</span> <span
class="hljs-title">{{Name}}</span> ({{#IsLong}}<span
class="params-vertical">{{#Params}}<span class="param"><span
class="hljs-type">{{Type.QualName}}</span>
{{Name}},</span>{{/Params}}</span>{{/IsLong}}{{^IsLong}}{{#Params}}<span
class="hljs-type">{{Type.QualName}}</span> {{Name}}{{^End}},
{{/End}}{{/Params}}{{/IsLong}})</code></pre>
{{#Description}}
<div class="doc-card">
{{>Comments}}
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits