https://github.com/SamrudhNelli updated 
https://github.com/llvm/llvm-project/pull/181417

>From 0144736b981f4c13a464c3444661c7858e8cdc18 Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Fri, 13 Feb 2026 22:38:54 +0530
Subject: [PATCH 1/7] fix: Enable vertical wrapping on longer function and
 template definitions

---
 clang-tools-extra/clang-doc/JSONGenerator.cpp |  7 ++++--
 .../clang-doc/assets/clang-doc-mustache.css   | 22 +++++++++++++++++++
 .../assets/function-template.mustache         |  3 +--
 3 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp 
b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index 5051e7e6e690d..c3c14b9ee6f4e 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -452,8 +452,7 @@ static void serializeArray(const Container &Records, Object 
&Obj,
     json::Value ItemVal = Object();
     auto &ItemObj = *ItemVal.getAsObject();
     SerializeInfo(Records[Index], ItemObj);
-    if (Index == Records.size() - 1)
-      ItemObj["End"] = true;
+    ItemObj["End"] = (Index == Records.size() - 1);
     RecordsArrayRef.push_back(ItemVal);
   }
   Obj[Key] = RecordsArray;
@@ -536,10 +535,14 @@ static void serializeInfo(const FunctionInfo &F, 
json::Object &Obj,
                           const std::optional<StringRef> RepositoryLine) {
   serializeCommonAttributes(F, Obj, RepositoryURL, RepositoryLine);
   Obj["IsStatic"] = F.IsStatic;
+  size_t ParamLen = F.Name.size() + 1;
 
   auto ReturnTypeObj = Object();
   serializeInfo(F.ReturnType, ReturnTypeObj);
   Obj["ReturnType"] = std::move(ReturnTypeObj);
+  ParamLen += F.ReturnType.Type.Name.size();
+  ParamLen += 2;
+  Obj["ParamLength"] = ParamLen;
 
   if (!F.Params.empty())
     serializeArray(F.Params, Obj, "Params", SerializeInfoLambda);
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..922166d8ee258 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,25 @@ a, a:visited, a:hover, a:active {
   overflow: hidden;
   padding: 10px;
 }
+
+
+.params-vertical {
+    display: flex;
+    flex-wrap: wrap;
+}
+
+
+.param {
+    display: block;
+    margin-right: 5px;
+    padding-left: 100px;
+}
+
+.format-text {
+    color: #800;    
+}
+
+.format-title {
+    color: #800;
+    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..64845bc2d89e6 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 
&lt;{{#Parameters}}{{Param}}{{^End}}, {{/End}}{{/Parameters}}&gt;</code></pre>
         {{/Template}}
         {{! Function Prototype }}
-        <pre><code class="language-cpp code-clang-doc">{{ReturnType.QualName}} 
{{Name}}{{#Template}}{{#Specialization}}&lt;{{#Parameters}}{{Param}}{{^End}}, 
{{/End}}{{/Parameters}}&gt;{{/Specialization}}{{/Template}} 
({{#Params}}{{Type.QualName}} {{Name}}{{^End}}, 
{{/End}}{{/Params}})</code></pre>
-        {{! Function Comments }}
+        <pre><code class="nohighlight code-clang-doc"><span 
class="format-text">{{ReturnType.QualName}}</span> <span 
class="format-title">{{Name}}</span> (<span class="params-vertical" 
style="padding-left: {{ParamLength}}ch;">{{#Params}}<span class="param"><span 
class="format-text">{{Type.QualName}}</span> {{Name}}{{^End}}, 
{{/End}}</span>{{/Params}}</span><span class="params-vertical" 
style="padding-left: {{ParamLength}}ch;">)</span></code></pre>
         {{#Description}}
         <div class="doc-card">
             {{>Comments}}

>From 66ba32298f929b4db6f57ef58a2d1d7dbc883c3f Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Mon, 16 Feb 2026 20:00:01 +0530
Subject: [PATCH 2/7] implement approach 2 that falls back to approach 3 for
 long functions

---
 clang-tools-extra/clang-doc/JSONGenerator.cpp | 24 +++++++++++++++++--
 .../clang-doc/assets/clang-doc-mustache.css   |  1 -
 .../assets/function-template.mustache         |  2 +-
 3 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp 
b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index c3c14b9ee6f4e..ea1d26bb3d592 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -455,6 +455,24 @@ static void serializeArray(const Container &Records, 
Object &Obj,
     ItemObj["End"] = (Index == Records.size() - 1);
     RecordsArrayRef.push_back(ItemVal);
   }
+  if (Key == "Params") {
+    size_t TotalLength = 0;
+    for (const auto &Val : RecordsArrayRef) {
+      if (const auto *ItemObj = Val.getAsObject()) {
+        if (const auto *Type = ItemObj->get("Type"))
+          if(const auto *TypeObj = Type->getAsObject())
+            if(auto Name = TypeObj->getString("QualName"))
+              TotalLength += Name->size();
+        if (auto Name = ItemObj->getString("Name"))
+          TotalLength += Name->size();
+        TotalLength += 2; // For ', '
+      }
+    }
+    size_t ParamLen;
+    if(auto Length = Obj.getInteger("ParamLength"))
+      ParamLen = *Length;
+    Obj["IsLong"] = (TotalLength + ParamLen > 80);
+  }
   Obj[Key] = RecordsArray;
 }
 
@@ -473,8 +491,7 @@ static void serializeInfo(const ArrayRef<TemplateParamInfo> 
&Params,
     Object &ParamObj = *ParamObjVal.getAsObject();
 
     ParamObj["Param"] = Params[Idx].Contents;
-    if (Idx == Params.size() - 1)
-      ParamObj["End"] = true;
+    ParamObj["End"] = (Idx == Params.size() - 1);
     ParamsArrayRef.push_back(ParamObjVal);
   }
   Obj["Parameters"] = ParamsArray;
@@ -547,6 +564,9 @@ static void serializeInfo(const FunctionInfo &F, 
json::Object &Obj,
   if (!F.Params.empty())
     serializeArray(F.Params, Obj, "Params", SerializeInfoLambda);
 
+  if(ParamLen >= 40)
+    Obj["ParamLength"] = 35;
+
   if (F.Template)
     serializeInfo(F.Template.value(), Obj);
 }
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 922166d8ee258..82f4f318ad578 100644
--- a/clang-tools-extra/clang-doc/assets/clang-doc-mustache.css
+++ b/clang-tools-extra/clang-doc/assets/clang-doc-mustache.css
@@ -531,7 +531,6 @@ a, a:visited, a:hover, a:active {
 .param {
     display: block;
     margin-right: 5px;
-    padding-left: 100px;
 }
 
 .format-text {
diff --git a/clang-tools-extra/clang-doc/assets/function-template.mustache 
b/clang-tools-extra/clang-doc/assets/function-template.mustache
index 64845bc2d89e6..fe49bb5fa421f 100644
--- a/clang-tools-extra/clang-doc/assets/function-template.mustache
+++ b/clang-tools-extra/clang-doc/assets/function-template.mustache
@@ -10,7 +10,7 @@
         <pre><code class="language-cpp code-clang-doc">template 
&lt;{{#Parameters}}{{Param}}{{^End}}, {{/End}}{{/Parameters}}&gt;</code></pre>
         {{/Template}}
         {{! Function Prototype }}
-        <pre><code class="nohighlight code-clang-doc"><span 
class="format-text">{{ReturnType.QualName}}</span> <span 
class="format-title">{{Name}}</span> (<span class="params-vertical" 
style="padding-left: {{ParamLength}}ch;">{{#Params}}<span class="param"><span 
class="format-text">{{Type.QualName}}</span> {{Name}}{{^End}}, 
{{/End}}</span>{{/Params}}</span><span class="params-vertical" 
style="padding-left: {{ParamLength}}ch;">)</span></code></pre>
+        <pre><code class="nohighlight code-clang-doc"><span 
class="format-text">{{ReturnType.QualName}}</span> <span 
class="format-title">{{Name}}</span> ({{#IsLong}}<span class="params-vertical" 
style="padding-left: {{ParamLength}}ch;">{{#Params}}<span class="param"><span 
class="format-text">{{Type.QualName}}</span> {{Name}}{{^End}}, 
{{/End}}</span>{{/Params}}</span><span class="param" style="padding-left: 
calc({{ParamLength}}ch - 
1ch);">)</span>{{/IsLong}}{{^IsLong}}{{#Params}}{{Type.QualName}} 
{{Name}}{{^End}}, {{/End}}{{/Params}}){{/IsLong}}</code></pre>
         {{#Description}}
         <div class="doc-card">
             {{>Comments}}

>From 590fcdbe2e036590b78346af54517138406a312b Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Mon, 16 Feb 2026 22:04:25 +0530
Subject: [PATCH 3/7] use JS to check for long functions instead of hardcoding
 the char limit

---
 clang-tools-extra/clang-doc/JSONGenerator.cpp | 23 ++-----------
 .../clang-doc/assets/clang-doc-mustache.css   |  2 --
 .../assets/function-template.mustache         |  2 +-
 .../clang-doc/assets/mustache-index.js        | 32 +++++++++++++++++++
 4 files changed, 35 insertions(+), 24 deletions(-)

diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp 
b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index ea1d26bb3d592..de7405662479b 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -455,24 +455,6 @@ static void serializeArray(const Container &Records, 
Object &Obj,
     ItemObj["End"] = (Index == Records.size() - 1);
     RecordsArrayRef.push_back(ItemVal);
   }
-  if (Key == "Params") {
-    size_t TotalLength = 0;
-    for (const auto &Val : RecordsArrayRef) {
-      if (const auto *ItemObj = Val.getAsObject()) {
-        if (const auto *Type = ItemObj->get("Type"))
-          if(const auto *TypeObj = Type->getAsObject())
-            if(auto Name = TypeObj->getString("QualName"))
-              TotalLength += Name->size();
-        if (auto Name = ItemObj->getString("Name"))
-          TotalLength += Name->size();
-        TotalLength += 2; // For ', '
-      }
-    }
-    size_t ParamLen;
-    if(auto Length = Obj.getInteger("ParamLength"))
-      ParamLen = *Length;
-    Obj["IsLong"] = (TotalLength + ParamLen > 80);
-  }
   Obj[Key] = RecordsArray;
 }
 
@@ -560,13 +542,12 @@ static void serializeInfo(const FunctionInfo &F, 
json::Object &Obj,
   ParamLen += F.ReturnType.Type.Name.size();
   ParamLen += 2;
   Obj["ParamLength"] = ParamLen;
+  if(ParamLen >= 40)
+    Obj["ParamLength"] = 35;
 
   if (!F.Params.empty())
     serializeArray(F.Params, Obj, "Params", SerializeInfoLambda);
 
-  if(ParamLen >= 40)
-    Obj["ParamLength"] = 35;
-
   if (F.Template)
     serializeInfo(F.Template.value(), Obj);
 }
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 82f4f318ad578..605d48c3b07cc 100644
--- a/clang-tools-extra/clang-doc/assets/clang-doc-mustache.css
+++ b/clang-tools-extra/clang-doc/assets/clang-doc-mustache.css
@@ -521,13 +521,11 @@ a, a:visited, a:hover, a:active {
   padding: 10px;
 }
 
-
 .params-vertical {
     display: flex;
     flex-wrap: wrap;
 }
 
-
 .param {
     display: block;
     margin-right: 5px;
diff --git a/clang-tools-extra/clang-doc/assets/function-template.mustache 
b/clang-tools-extra/clang-doc/assets/function-template.mustache
index fe49bb5fa421f..956a7c0ce6a94 100644
--- a/clang-tools-extra/clang-doc/assets/function-template.mustache
+++ b/clang-tools-extra/clang-doc/assets/function-template.mustache
@@ -10,7 +10,7 @@
         <pre><code class="language-cpp code-clang-doc">template 
&lt;{{#Parameters}}{{Param}}{{^End}}, {{/End}}{{/Parameters}}&gt;</code></pre>
         {{/Template}}
         {{! Function Prototype }}
-        <pre><code class="nohighlight code-clang-doc"><span 
class="format-text">{{ReturnType.QualName}}</span> <span 
class="format-title">{{Name}}</span> ({{#IsLong}}<span class="params-vertical" 
style="padding-left: {{ParamLength}}ch;">{{#Params}}<span class="param"><span 
class="format-text">{{Type.QualName}}</span> {{Name}}{{^End}}, 
{{/End}}</span>{{/Params}}</span><span class="param" style="padding-left: 
calc({{ParamLength}}ch - 
1ch);">)</span>{{/IsLong}}{{^IsLong}}{{#Params}}{{Type.QualName}} 
{{Name}}{{^End}}, {{/End}}{{/Params}}){{/IsLong}}</code></pre>
+        <pre><code class="nohighlight code-clang-doc"><span 
class="format-text">{{ReturnType.QualName}}</span> <span 
class="format-title">{{Name}}</span> (<span class="params-vertical" 
style="padding-left: {{ParamLength}}ch;">{{#Params}}<span class="param"><span 
class="format-text">{{Type.QualName}}</span> {{Name}}{{^End}}, 
{{/End}}</span>{{/Params}}</span><span class="param" style="padding-left: 
calc({{ParamLength}}ch - 1ch);">)</span></code></pre>
         {{#Description}}
         <div class="doc-card">
             {{>Comments}}
diff --git a/clang-tools-extra/clang-doc/assets/mustache-index.js 
b/clang-tools-extra/clang-doc/assets/mustache-index.js
index 0f05eb71f0bee..b26fd6e60543f 100644
--- a/clang-tools-extra/clang-doc/assets/mustache-index.js
+++ b/clang-tools-extra/clang-doc/assets/mustache-index.js
@@ -21,6 +21,38 @@ document.addEventListener("DOMContentLoaded", function() {
     el.classList.remove("hljs");
   });
 
+  function getCharSize() {
+    const testChar = document.createElement('span');
+    testChar.className = "code-clang-doc"
+    testChar.style.visibility = 'hidden';
+    testChar.innerText = 'a';
+    document.body.appendChild(testChar);
+    const charWidth = testChar.getBoundingClientRect().width;
+    document.body.removeChild(testChar);
+    return charWidth;
+  }
+
+  function revertToSingleLine(func) {
+    const paramsContainer = func.querySelectorAll('.params-vertical')
+    const params = func.querySelectorAll('.param')
+    paramsContainer.forEach(params => {
+      params.style.display = "inline";
+      params.style.paddingLeft = "0px";
+    });
+    params.forEach(param => {
+      param.style.display = "inline";
+      param.style.paddingLeft = "0px";
+    });
+  }
+
+  const functions = document.querySelectorAll('.code-clang-doc');
+  const content = document.querySelector('.content')
+  const charSize = getCharSize();
+  functions.forEach(func => {
+    if(func.textContent.trim().length * charSize < content.clientWidth - 20)
+      revertToSingleLine(func)
+  });
+
   document.querySelectorAll('.sidebar-item-container').forEach(item => {
     item.addEventListener('click', function() {
       const anchor = item.getElementsByTagName("a");

>From 7aac0b3db1c4efef4bef69dedee1eb6477c9c88b Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Sat, 21 Feb 2026 00:25:37 +0530
Subject: [PATCH 4/7] Revert "use JS to check for long functions instead of
 hardcoding the char limit"

This reverts commit 651b7f9a0f5446915dacf3d721b1a99cdeee2250.
---
 clang-tools-extra/clang-doc/JSONGenerator.cpp | 23 +++++++++++--
 .../clang-doc/assets/clang-doc-mustache.css   |  2 ++
 .../assets/function-template.mustache         |  2 +-
 .../clang-doc/assets/mustache-index.js        | 32 -------------------
 4 files changed, 24 insertions(+), 35 deletions(-)

diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp 
b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index de7405662479b..ea1d26bb3d592 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -455,6 +455,24 @@ static void serializeArray(const Container &Records, 
Object &Obj,
     ItemObj["End"] = (Index == Records.size() - 1);
     RecordsArrayRef.push_back(ItemVal);
   }
+  if (Key == "Params") {
+    size_t TotalLength = 0;
+    for (const auto &Val : RecordsArrayRef) {
+      if (const auto *ItemObj = Val.getAsObject()) {
+        if (const auto *Type = ItemObj->get("Type"))
+          if(const auto *TypeObj = Type->getAsObject())
+            if(auto Name = TypeObj->getString("QualName"))
+              TotalLength += Name->size();
+        if (auto Name = ItemObj->getString("Name"))
+          TotalLength += Name->size();
+        TotalLength += 2; // For ', '
+      }
+    }
+    size_t ParamLen;
+    if(auto Length = Obj.getInteger("ParamLength"))
+      ParamLen = *Length;
+    Obj["IsLong"] = (TotalLength + ParamLen > 80);
+  }
   Obj[Key] = RecordsArray;
 }
 
@@ -542,12 +560,13 @@ static void serializeInfo(const FunctionInfo &F, 
json::Object &Obj,
   ParamLen += F.ReturnType.Type.Name.size();
   ParamLen += 2;
   Obj["ParamLength"] = ParamLen;
-  if(ParamLen >= 40)
-    Obj["ParamLength"] = 35;
 
   if (!F.Params.empty())
     serializeArray(F.Params, Obj, "Params", SerializeInfoLambda);
 
+  if(ParamLen >= 40)
+    Obj["ParamLength"] = 35;
+
   if (F.Template)
     serializeInfo(F.Template.value(), Obj);
 }
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 605d48c3b07cc..82f4f318ad578 100644
--- a/clang-tools-extra/clang-doc/assets/clang-doc-mustache.css
+++ b/clang-tools-extra/clang-doc/assets/clang-doc-mustache.css
@@ -521,11 +521,13 @@ a, a:visited, a:hover, a:active {
   padding: 10px;
 }
 
+
 .params-vertical {
     display: flex;
     flex-wrap: wrap;
 }
 
+
 .param {
     display: block;
     margin-right: 5px;
diff --git a/clang-tools-extra/clang-doc/assets/function-template.mustache 
b/clang-tools-extra/clang-doc/assets/function-template.mustache
index 956a7c0ce6a94..fe49bb5fa421f 100644
--- a/clang-tools-extra/clang-doc/assets/function-template.mustache
+++ b/clang-tools-extra/clang-doc/assets/function-template.mustache
@@ -10,7 +10,7 @@
         <pre><code class="language-cpp code-clang-doc">template 
&lt;{{#Parameters}}{{Param}}{{^End}}, {{/End}}{{/Parameters}}&gt;</code></pre>
         {{/Template}}
         {{! Function Prototype }}
-        <pre><code class="nohighlight code-clang-doc"><span 
class="format-text">{{ReturnType.QualName}}</span> <span 
class="format-title">{{Name}}</span> (<span class="params-vertical" 
style="padding-left: {{ParamLength}}ch;">{{#Params}}<span class="param"><span 
class="format-text">{{Type.QualName}}</span> {{Name}}{{^End}}, 
{{/End}}</span>{{/Params}}</span><span class="param" style="padding-left: 
calc({{ParamLength}}ch - 1ch);">)</span></code></pre>
+        <pre><code class="nohighlight code-clang-doc"><span 
class="format-text">{{ReturnType.QualName}}</span> <span 
class="format-title">{{Name}}</span> ({{#IsLong}}<span class="params-vertical" 
style="padding-left: {{ParamLength}}ch;">{{#Params}}<span class="param"><span 
class="format-text">{{Type.QualName}}</span> {{Name}}{{^End}}, 
{{/End}}</span>{{/Params}}</span><span class="param" style="padding-left: 
calc({{ParamLength}}ch - 
1ch);">)</span>{{/IsLong}}{{^IsLong}}{{#Params}}{{Type.QualName}} 
{{Name}}{{^End}}, {{/End}}{{/Params}}){{/IsLong}}</code></pre>
         {{#Description}}
         <div class="doc-card">
             {{>Comments}}
diff --git a/clang-tools-extra/clang-doc/assets/mustache-index.js 
b/clang-tools-extra/clang-doc/assets/mustache-index.js
index b26fd6e60543f..0f05eb71f0bee 100644
--- a/clang-tools-extra/clang-doc/assets/mustache-index.js
+++ b/clang-tools-extra/clang-doc/assets/mustache-index.js
@@ -21,38 +21,6 @@ document.addEventListener("DOMContentLoaded", function() {
     el.classList.remove("hljs");
   });
 
-  function getCharSize() {
-    const testChar = document.createElement('span');
-    testChar.className = "code-clang-doc"
-    testChar.style.visibility = 'hidden';
-    testChar.innerText = 'a';
-    document.body.appendChild(testChar);
-    const charWidth = testChar.getBoundingClientRect().width;
-    document.body.removeChild(testChar);
-    return charWidth;
-  }
-
-  function revertToSingleLine(func) {
-    const paramsContainer = func.querySelectorAll('.params-vertical')
-    const params = func.querySelectorAll('.param')
-    paramsContainer.forEach(params => {
-      params.style.display = "inline";
-      params.style.paddingLeft = "0px";
-    });
-    params.forEach(param => {
-      param.style.display = "inline";
-      param.style.paddingLeft = "0px";
-    });
-  }
-
-  const functions = document.querySelectorAll('.code-clang-doc');
-  const content = document.querySelector('.content')
-  const charSize = getCharSize();
-  functions.forEach(func => {
-    if(func.textContent.trim().length * charSize < content.clientWidth - 20)
-      revertToSingleLine(func)
-  });
-
   document.querySelectorAll('.sidebar-item-container').forEach(item => {
     item.addEventListener('click', function() {
       const anchor = item.getElementsByTagName("a");

>From a78eee3ab75b34bbe8bf08337b9296e4355c5097 Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Sat, 21 Feb 2026 00:26:22 +0530
Subject: [PATCH 5/7] Revert "implement approach 2 that falls back to approach
 3 for long functions"

This reverts commit c8194948bc7935aee91faabb651d2e91253aefa4.
---
 clang-tools-extra/clang-doc/JSONGenerator.cpp | 24 ++-----------------
 .../clang-doc/assets/clang-doc-mustache.css   |  1 +
 .../assets/function-template.mustache         |  2 +-
 3 files changed, 4 insertions(+), 23 deletions(-)

diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp 
b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index ea1d26bb3d592..c3c14b9ee6f4e 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -455,24 +455,6 @@ static void serializeArray(const Container &Records, 
Object &Obj,
     ItemObj["End"] = (Index == Records.size() - 1);
     RecordsArrayRef.push_back(ItemVal);
   }
-  if (Key == "Params") {
-    size_t TotalLength = 0;
-    for (const auto &Val : RecordsArrayRef) {
-      if (const auto *ItemObj = Val.getAsObject()) {
-        if (const auto *Type = ItemObj->get("Type"))
-          if(const auto *TypeObj = Type->getAsObject())
-            if(auto Name = TypeObj->getString("QualName"))
-              TotalLength += Name->size();
-        if (auto Name = ItemObj->getString("Name"))
-          TotalLength += Name->size();
-        TotalLength += 2; // For ', '
-      }
-    }
-    size_t ParamLen;
-    if(auto Length = Obj.getInteger("ParamLength"))
-      ParamLen = *Length;
-    Obj["IsLong"] = (TotalLength + ParamLen > 80);
-  }
   Obj[Key] = RecordsArray;
 }
 
@@ -491,7 +473,8 @@ static void serializeInfo(const ArrayRef<TemplateParamInfo> 
&Params,
     Object &ParamObj = *ParamObjVal.getAsObject();
 
     ParamObj["Param"] = Params[Idx].Contents;
-    ParamObj["End"] = (Idx == Params.size() - 1);
+    if (Idx == Params.size() - 1)
+      ParamObj["End"] = true;
     ParamsArrayRef.push_back(ParamObjVal);
   }
   Obj["Parameters"] = ParamsArray;
@@ -564,9 +547,6 @@ static void serializeInfo(const FunctionInfo &F, 
json::Object &Obj,
   if (!F.Params.empty())
     serializeArray(F.Params, Obj, "Params", SerializeInfoLambda);
 
-  if(ParamLen >= 40)
-    Obj["ParamLength"] = 35;
-
   if (F.Template)
     serializeInfo(F.Template.value(), Obj);
 }
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 82f4f318ad578..922166d8ee258 100644
--- a/clang-tools-extra/clang-doc/assets/clang-doc-mustache.css
+++ b/clang-tools-extra/clang-doc/assets/clang-doc-mustache.css
@@ -531,6 +531,7 @@ a, a:visited, a:hover, a:active {
 .param {
     display: block;
     margin-right: 5px;
+    padding-left: 100px;
 }
 
 .format-text {
diff --git a/clang-tools-extra/clang-doc/assets/function-template.mustache 
b/clang-tools-extra/clang-doc/assets/function-template.mustache
index fe49bb5fa421f..64845bc2d89e6 100644
--- a/clang-tools-extra/clang-doc/assets/function-template.mustache
+++ b/clang-tools-extra/clang-doc/assets/function-template.mustache
@@ -10,7 +10,7 @@
         <pre><code class="language-cpp code-clang-doc">template 
&lt;{{#Parameters}}{{Param}}{{^End}}, {{/End}}{{/Parameters}}&gt;</code></pre>
         {{/Template}}
         {{! Function Prototype }}
-        <pre><code class="nohighlight code-clang-doc"><span 
class="format-text">{{ReturnType.QualName}}</span> <span 
class="format-title">{{Name}}</span> ({{#IsLong}}<span class="params-vertical" 
style="padding-left: {{ParamLength}}ch;">{{#Params}}<span class="param"><span 
class="format-text">{{Type.QualName}}</span> {{Name}}{{^End}}, 
{{/End}}</span>{{/Params}}</span><span class="param" style="padding-left: 
calc({{ParamLength}}ch - 
1ch);">)</span>{{/IsLong}}{{^IsLong}}{{#Params}}{{Type.QualName}} 
{{Name}}{{^End}}, {{/End}}{{/Params}}){{/IsLong}}</code></pre>
+        <pre><code class="nohighlight code-clang-doc"><span 
class="format-text">{{ReturnType.QualName}}</span> <span 
class="format-title">{{Name}}</span> (<span class="params-vertical" 
style="padding-left: {{ParamLength}}ch;">{{#Params}}<span class="param"><span 
class="format-text">{{Type.QualName}}</span> {{Name}}{{^End}}, 
{{/End}}</span>{{/Params}}</span><span class="params-vertical" 
style="padding-left: {{ParamLength}}ch;">)</span></code></pre>
         {{#Description}}
         <div class="doc-card">
             {{>Comments}}

>From 1dbd608615067e4107f36a1e47a5db05f226da33 Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Sat, 21 Feb 2026 00:36:19 +0530
Subject: [PATCH 6/7] Revert "fix: Enable horizontal wrapping on longer
 function definitions"

This reverts commit 5137041232b96451cd140ff157c61498827ca0da.
---
 clang-tools-extra/clang-doc/JSONGenerator.cpp |  7 ++----
 .../clang-doc/assets/clang-doc-mustache.css   | 22 -------------------
 .../assets/function-template.mustache         |  3 ++-
 3 files changed, 4 insertions(+), 28 deletions(-)

diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp 
b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index c3c14b9ee6f4e..5051e7e6e690d 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -452,7 +452,8 @@ static void serializeArray(const Container &Records, Object 
&Obj,
     json::Value ItemVal = Object();
     auto &ItemObj = *ItemVal.getAsObject();
     SerializeInfo(Records[Index], ItemObj);
-    ItemObj["End"] = (Index == Records.size() - 1);
+    if (Index == Records.size() - 1)
+      ItemObj["End"] = true;
     RecordsArrayRef.push_back(ItemVal);
   }
   Obj[Key] = RecordsArray;
@@ -535,14 +536,10 @@ static void serializeInfo(const FunctionInfo &F, 
json::Object &Obj,
                           const std::optional<StringRef> RepositoryLine) {
   serializeCommonAttributes(F, Obj, RepositoryURL, RepositoryLine);
   Obj["IsStatic"] = F.IsStatic;
-  size_t ParamLen = F.Name.size() + 1;
 
   auto ReturnTypeObj = Object();
   serializeInfo(F.ReturnType, ReturnTypeObj);
   Obj["ReturnType"] = std::move(ReturnTypeObj);
-  ParamLen += F.ReturnType.Type.Name.size();
-  ParamLen += 2;
-  Obj["ParamLength"] = ParamLen;
 
   if (!F.Params.empty())
     serializeArray(F.Params, Obj, "Params", SerializeInfoLambda);
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 922166d8ee258..19fba2f9eae76 100644
--- a/clang-tools-extra/clang-doc/assets/clang-doc-mustache.css
+++ b/clang-tools-extra/clang-doc/assets/clang-doc-mustache.css
@@ -520,25 +520,3 @@ a, a:visited, a:hover, a:active {
   overflow: hidden;
   padding: 10px;
 }
-
-
-.params-vertical {
-    display: flex;
-    flex-wrap: wrap;
-}
-
-
-.param {
-    display: block;
-    margin-right: 5px;
-    padding-left: 100px;
-}
-
-.format-text {
-    color: #800;    
-}
-
-.format-title {
-    color: #800;
-    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 64845bc2d89e6..510219a63d379 100644
--- a/clang-tools-extra/clang-doc/assets/function-template.mustache
+++ b/clang-tools-extra/clang-doc/assets/function-template.mustache
@@ -10,7 +10,8 @@
         <pre><code class="language-cpp code-clang-doc">template 
&lt;{{#Parameters}}{{Param}}{{^End}}, {{/End}}{{/Parameters}}&gt;</code></pre>
         {{/Template}}
         {{! Function Prototype }}
-        <pre><code class="nohighlight code-clang-doc"><span 
class="format-text">{{ReturnType.QualName}}</span> <span 
class="format-title">{{Name}}</span> (<span class="params-vertical" 
style="padding-left: {{ParamLength}}ch;">{{#Params}}<span class="param"><span 
class="format-text">{{Type.QualName}}</span> {{Name}}{{^End}}, 
{{/End}}</span>{{/Params}}</span><span class="params-vertical" 
style="padding-left: {{ParamLength}}ch;">)</span></code></pre>
+        <pre><code class="language-cpp code-clang-doc">{{ReturnType.QualName}} 
{{Name}}{{#Template}}{{#Specialization}}&lt;{{#Parameters}}{{Param}}{{^End}}, 
{{/End}}{{/Parameters}}&gt;{{/Specialization}}{{/Template}} 
({{#Params}}{{Type.QualName}} {{Name}}{{^End}}, 
{{/End}}{{/Params}})</code></pre>
+        {{! Function Comments }}
         {{#Description}}
         <div class="doc-card">
             {{>Comments}}

>From 6552abf836100081e03b8dc1c1f88804d3cf5256 Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Mon, 23 Feb 2026 23:19:40 +0530
Subject: [PATCH 7/7] revert to ONE_PER_LINE if no. of parameters > 2 use
 EndKey to specify a different EndKey for Params

---
 clang-tools-extra/clang-doc/JSONGenerator.cpp     | 15 +++++++++------
 .../clang-doc/assets/clang-doc-mustache.css       |  9 +++++++++
 .../clang-doc/assets/function-template.mustache   |  4 ++--
 3 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp 
b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index 5051e7e6e690d..a10e9d9a23606 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -36,7 +36,8 @@ static void serializeReference(const Reference &Ref, Object 
&ReferenceObj);
 template <typename Container, typename SerializationFunc>
 static void serializeArray(const Container &Records, Object &Obj,
                            const std::string &Key,
-                           SerializationFunc SerializeInfo);
+                           SerializationFunc SerializeInfo,
+                           const std::string &EndKey = "End");
 
 // Convenience lambda to pass to serializeArray.
 // If a serializeInfo needs a RepositoryUrl, create a local lambda that 
captures
@@ -442,9 +443,9 @@ serializeCommonChildren(const ScopeChildren &Children, 
json::Object &Obj,
 }
 
 template <typename Container, typename SerializationFunc>
-static void serializeArray(const Container &Records, Object &Obj,
-                           const std::string &Key,
-                           SerializationFunc SerializeInfo) {
+static void
+serializeArray(const Container &Records, Object &Obj, const std::string &Key,
+               SerializationFunc SerializeInfo, const std::string &EndKey) {
   json::Value RecordsArray = Array();
   auto &RecordsArrayRef = *RecordsArray.getAsArray();
   RecordsArrayRef.reserve(Records.size());
@@ -453,10 +454,11 @@ static void serializeArray(const Container &Records, 
Object &Obj,
     auto &ItemObj = *ItemVal.getAsObject();
     SerializeInfo(Records[Index], ItemObj);
     if (Index == Records.size() - 1)
-      ItemObj["End"] = true;
+      ItemObj[EndKey] = true;
     RecordsArrayRef.push_back(ItemVal);
   }
   Obj[Key] = RecordsArray;
+  Obj["VerticalDisplay"] = Records.size() > 2;
 }
 
 static void serializeInfo(const ConstraintInfo &I, Object &Obj) {
@@ -479,6 +481,7 @@ static void serializeInfo(const ArrayRef<TemplateParamInfo> 
&Params,
     ParamsArrayRef.push_back(ParamObjVal);
   }
   Obj["Parameters"] = ParamsArray;
+  Obj["VerticalDisplay"] = Params.size() > 2;
 }
 
 static void serializeInfo(const TemplateInfo &Template, Object &Obj) {
@@ -542,7 +545,7 @@ static void serializeInfo(const FunctionInfo &F, 
json::Object &Obj,
   Obj["ReturnType"] = std::move(ReturnTypeObj);
 
   if (!F.Params.empty())
-    serializeArray(F.Params, Obj, "Params", SerializeInfoLambda);
+    serializeArray(F.Params, Obj, "Params", SerializeInfoLambda, "ParamEnd");
 
   if (F.Template)
     serializeInfo(F.Template.value(), Obj);
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..3727981efddc5 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,12 @@ a, a:visited, a:hover, a:active {
   overflow: hidden;
   padding: 10px;
 }
+
+.param {
+    display: block;
+    padding-left: 4ch;
+}
+
+.param-container {
+    display: block;
+}
\ 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..dc833cc70d635 100644
--- a/clang-tools-extra/clang-doc/assets/function-template.mustache
+++ b/clang-tools-extra/clang-doc/assets/function-template.mustache
@@ -7,10 +7,10 @@
 }}
 <div id="{{USR}}" class="delimiter-container">
         {{#Template}}
-        <pre><code class="language-cpp code-clang-doc">template 
&lt;{{#Parameters}}{{Param}}{{^End}}, {{/End}}{{/Parameters}}&gt;</code></pre>
+        <pre><code class="language-cpp code-clang-doc">template 
&lt;{{^VerticalDisplay}}{{#Parameters}}{{Param}}{{^End}}, 
{{/End}}{{/Parameters}}{{/VerticalDisplay}}</code>{{#VerticalDisplay}}<span 
class="param-container">{{#Parameters}}<span class="param"><code 
class="language-cpp code-clang-doc">{{Param}}{{^End}}, 
{{/End}}</code></span>{{/Parameters}}</span>{{/VerticalDisplay}}<code 
class="language-cpp code-clang-doc">&gt;</code></pre>
         {{/Template}}
         {{! Function Prototype }}
-        <pre><code class="language-cpp code-clang-doc">{{ReturnType.QualName}} 
{{Name}}{{#Template}}{{#Specialization}}&lt;{{#Parameters}}{{Param}}{{^End}}, 
{{/End}}{{/Parameters}}&gt;{{/Specialization}}{{/Template}} 
({{#Params}}{{Type.QualName}} {{Name}}{{^End}}, 
{{/End}}{{/Params}})</code></pre>
+        <pre><code class="language-cpp code-clang-doc">{{ReturnType.QualName}} 
{{Name}}{{#Template}}{{#Specialization}}&lt;{{#Parameters}}{{Param}}{{^End}}, 
{{/End}}{{/Parameters}}&gt;{{/Specialization}}{{/Template}} 
({{^VerticalDisplay}}{{#Params}}{{Type.QualName}} {{Name}}{{^ParamEnd}}, 
{{/ParamEnd}}{{/Params}}){{/VerticalDisplay}}</code>{{#VerticalDisplay}}<span 
class="param-container">{{#Params}}<span class="param"><code 
class="language-cpp code-clang-doc">{{Type.QualName}}</code> <code 
class="language-cpp code-clang-doc">{{Name}}{{^ParamEnd}}, 
{{/ParamEnd}}</code></span>{{/Params}}</span><code class="language-cpp 
code-clang-doc">)</code>{{/VerticalDisplay}}</pre>
         {{! Function Comments }}
         {{#Description}}
         <div class="doc-card">

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to