IJPL-787 QuickDoc: use the newly supported <hr> element instead of class name alteration; fix bugs in JBHtmlPane html transpilation

GitOrigin-RevId: 7546d71095462b358171b12450f3f244f2acb5ba
This commit is contained in:
Piotr Tomiak
2024-03-07 21:18:50 +00:00
committed by intellij-monorepo-bot
parent b4d65fb1fb
commit 920817774a
35 changed files with 196 additions and 168 deletions
@@ -1,4 +1,4 @@
<HTML><base href="placeholder"><style type="text/css"> ul.inheritance {
<html><head><base href="placeholder"><style type="text/css"> ul.inheritance {
margin:0;
padding:0;
}
@@ -11,19 +11,19 @@
padding-left:15px;
padding-top:1px;
}
</style><div class='content'><a name="genericMethod-java.lang.Class-">
</style></head><body><div class="content"><p><a name="genericMethod-java.lang.Class-">
<!-- -->
</a>
<ul class="blockListLast">
</p><ul class="blockListLast">
<h3><a href="psi_element://com.jetbrains.GenericClass"><code>com.<wbr>jetbrains.<wbr>GenericClass</code></a></h3>
<pre>public&nbsp;void&nbsp;genericMethod(java.<wbr>lang.<wbr>Class&lt;?&gt;&nbsp;clazz)</pre>
<div class="block">javadoc</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div><div class="bottom"><icon src="AllIcons.Nodes.PpLibFolder"/>&nbsp;myLib</div><div class="bottom"><a href="placeholder">`genericMethod(Class&lt;?&gt;)` on localhost<icon src='AllIcons.Ide.External_link_arrow'></a></div>
<div class="bottom"><icon src="AllIcons.Nodes.PpLibFolder" />&nbsp;myLib</div><div class="bottom"><a href="placeholder">`genericMethod(Class&lt;?&gt;)` on localhost<icon src='AllIcons.Ide.External_link_arrow'></a></div></body></html>
@@ -1,4 +1,4 @@
<HTML><base href="placeholder"><style type="text/css"> ul.inheritance {
<html><head><base href="placeholder"><style type="text/css"> ul.inheritance {
margin:0;
padding:0;
}
@@ -11,12 +11,12 @@
padding-left:15px;
padding-top:1px;
}
</style><div class='content'><a name="m1--">
</style></head><body><div class="content"><p><a name="m1--">
<!-- -->
</a>
<h3><a href="psi_element://com.jetbrains.LinkBetweenMethods"><code>com.<wbr>jetbrains.<wbr>LinkBetweenMethods</code></a></h3>
</p><h3><a href="psi_element://com.jetbrains.LinkBetweenMethods"><code>com.<wbr>jetbrains.<wbr>LinkBetweenMethods</code></a></h3>
<pre>public&nbsp;void&nbsp;m1()</pre>
<div class="block"><a href="psi_element://com.jetbrains.LinkBetweenMethods#m2()"><code>m2()</code></a></div>
</li>
</ul>
</div><div class="bottom"><icon src="AllIcons.Nodes.PpLibFolder"/>&nbsp;myLib</div><div class="bottom"><a href="placeholder">`m1()` on localhost<icon src='AllIcons.Ide.External_link_arrow'></a></div>
</div><div class="bottom"><icon src="AllIcons.Nodes.PpLibFolder" />&nbsp;myLib</div><div class="bottom"><a href="placeholder">`m1()` on localhost<icon src='AllIcons.Ide.External_link_arrow'></a></div></body></html>
@@ -1,4 +1,4 @@
<HTML><base href="placeholder"><style type="text/css"> ul.inheritance {
<html><head><base href="placeholder"><style type="text/css"> ul.inheritance {
margin:0;
padding:0;
}
@@ -11,17 +11,17 @@
padding-left:15px;
padding-top:1px;
}
</style><div class='content'><!-- ======== START OF CLASS DATA ======== -->
</style></head><body><div class="content"><!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">com.<wbr>jetbrains</div>
<h2 title="Interface SimpleInterface" class="title">Interface SimpleInterface</h2>
</div>
<div class="contentContainer">
<DL><br>
<dl><br>
<pre>public interface <span class="typeNameLabel">SimpleInterface</span></pre>
<div class="block">Doc here with <a href="psi_element://com.jetbrains###ref">link</a></div>
</li>
</ul>
</dl></div>
</div>
</div>
</div><div class="bottom"><icon src="AllIcons.Nodes.PpLibFolder"/>&nbsp;myLib</div><div class="bottom"><a href="placeholder">`SimpleInterface` on localhost<icon src='AllIcons.Ide.External_link_arrow'></a></div>
<div class="bottom"><icon src="AllIcons.Nodes.PpLibFolder" />&nbsp;myLib</div><div class="bottom"><a href="placeholder">`SimpleInterface` on localhost<icon src='AllIcons.Ide.External_link_arrow'></a></div></body></html>
@@ -1,4 +1,4 @@
<HTML><base href="placeholder"><style type="text/css"> ul.inheritance {
<html><head><base href="placeholder"><style type="text/css"> ul.inheritance {
margin:0;
padding:0;
}
@@ -11,7 +11,7 @@
padding-left:15px;
padding-top:1px;
}
</style><div class='content'><!-- ======== START OF CLASS DATA ======== -->
</style></head><body><div class="content"><!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">com.<wbr>jetbrains</div>
<h2 title="Class ClassWithRefLink" class="title">Class ClassWithRefLink</h2>
@@ -25,11 +25,11 @@
</ul>
</li>
</ul>
<DL><br>
<dl><br>
<pre>public class <span class="typeNameLabel">ClassWithRefLink</span>
extends java.<wbr>lang.<wbr>Object</pre>
<div class="block"><a href="psi_element://com.jetbrains.Test###someRef">link</a></div>
</li>
</ul>
</div>
</div><div class="bottom"><icon src="AllIcons.Nodes.PpLibFolder"/>&nbsp;myLib</div><div class="bottom"><a href="placeholder">`ClassWithRefLink` on localhost<icon src='AllIcons.Ide.External_link_arrow'></a></div>
</dl></div>
</div><div class="bottom"><icon src="AllIcons.Nodes.PpLibFolder" />&nbsp;myLib</div><div class="bottom"><a href="placeholder">`ClassWithRefLink` on localhost<icon src='AllIcons.Ide.External_link_arrow'></a></div></body></html>
@@ -1,4 +1,4 @@
<HTML><base href="placeholder"><style type="text/css"> ul.inheritance {
<html><head><base href="placeholder"><style type="text/css"> ul.inheritance {
margin:0;
padding:0;
}
@@ -11,19 +11,19 @@
padding-left:15px;
padding-top:1px;
}
</style><div class='content'><a name="param()">
</style></head><body><div class="content"><p><a name="param()">
<!-- -->
</a>
<ul class="blockListLast">
</p><ul class="blockListLast">
<h3><a href="psi_element://com.jetbrains.TestAnnotation"><code>com.<wbr>jetbrains.<wbr>TestAnnotation</code></a></h3>
<pre>public abstract&nbsp;java.<wbr>lang.<wbr>String&nbsp;param</pre>
<div class="block">Some info and a <a href="psi_element://com.jetbrains.Test">link</a></div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div><div class="bottom"><icon src="AllIcons.Nodes.PpLibFolder"/>&nbsp;myLib</div><div class="bottom"><a href="placeholder">`param()` on localhost<icon src='AllIcons.Ide.External_link_arrow'></a></div>
<div class="bottom"><icon src="AllIcons.Nodes.PpLibFolder" />&nbsp;myLib</div><div class="bottom"><a href="placeholder">`param()` on localhost<icon src='AllIcons.Ide.External_link_arrow'></a></div></body></html>
@@ -1,8 +1,8 @@
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://Test"><code><span style="color:#000000;">Test</span></code></a></div><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span>&nbsp;<span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">foo</span><span style="">(</span><span style="">)</span></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>API Note:</td><td valign='top'><p>
my api note
</td><tr><td valign='top' class='section'><p>Implementation<br>Requirements:</td><td valign='top'><p>
my impl spec
</td><tr><td valign='top' class='section'><p>Implementation<br>Note:</td><td valign='top'><p>
my impl note</td></table>
@@ -1,3 +1,3 @@
<html><head><base href="placeholder"></head><body><div class='definition-separated'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Main</span></pre></div><div class='content'>
<p>Test <div class='code-block'><pre style="padding: 0px; margin: 0px"> foo</pre></div>
</div>
<html><head><base href="placeholder"></head><body><div class="definition"><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Main</span></pre></div><hr><div class="content"><p>
Test </p><div class='code-block'><pre style="padding: 0px; margin: 0px"> foo</pre></div>
</div></body></html>
@@ -1,3 +1,3 @@
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://FooBar"><code><span style="color:#000000;">FooBar</span></code></a></div><div class='definition-separated'><pre><span style="color:#000080;font-weight:bold;">public</span>&nbsp;<a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a>&nbsp;<span style="color:#000000;">getMyFoo</span><span style="">(</span><span style="">)</span></pre></div><table class='sections'><tr><td valign='top' class='section'><p>From field:</td><td valign='top'><p><a href="psi_element://FooBar#myFoo"><code><span style="color:#660e7a;font-weight:bold;">myFoo</span></code></a><br>
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://FooBar"><code><span style="color:#000000;">FooBar</span></code></a></icon></div><div class="definition"><pre><span style="color:#000080;font-weight:bold;">public</span>&nbsp;<a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a>&nbsp;<span style="color:#000000;">getMyFoo</span><span style="">(</span><span style="">)</span></pre></div><table class="sections"><tbody><tr><td valign="top" class="section"><p>From field:</p></td><td valign="top"><p><a href="psi_element://FooBar#myFoo"><code><span style="color:#660e7a;font-weight:bold;">myFoo</span></code></a><br>
foo bar baz
</td></table>
</p></td></tr></tbody></table></body></html>
@@ -30,11 +30,11 @@
inherited by all classes in Java. For additional information on
string concatenation and conversion, see Gosling, Joy, and Steele,
<i>The Java Language Specification</i>.
<p> Unless otherwise noted, passing a <tt>null</tt> argument to a constructor
or method in this class will cause a <a href="psi_element://java.lang.NullPointerException"><code><span style="color:#0000ff;">NullPointerException</span></code></a> to be
thrown.
<p>A <code>String</code> represents a string in the UTF-16 format
in which <em>supplementary characters</em> are represented by <em>surrogate
pairs</em> (see the section <a href="psi_element://java.lang.Character###unicode">Unicode
@@ -45,5 +45,5 @@
<p>The <code>String</code> class provides methods for dealing with
Unicode code points (i.e., characters), in addition to those for
dealing with Unicode code units (i.e., <code>char</code> values).
</div><table class='sections'><p><tr><td valign='top' class='section'><p>Since:</td><td valign='top'><p> JDK1.0</td><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p><a href="psi_element://java.lang.Object#toString()"><code><span style="color:#0000ff;">Object</span><span style="">.</span><span style="color:#0000ff;">toString</span><span style="">()</span></code></a>,<br><a href="psi_element://java.lang.StringBuffer"><code><span style="color:#0000ff;">StringBuffer</span></code></a>,<br><a href="psi_element://java.lang.StringBuilder"><code><span style="color:#0000ff;">StringBuilder</span></code></a>,<br><span style="color:#ff0000">java.nio.charset.Charset</span></td><tr><td valign='top' class='section'><p>Author:</td><td valign='top'><p>Lee Boynton, Arthur van Hoff, Martin Buchholz, Ulf Zibis</td></table>
@@ -1,8 +1,8 @@
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://java.util.List"><code><span style="color:#000000;">java.<wbr>util.<wbr>List</span><span style="">&lt;</span><span style="color:#20999d;">E</span><span style="">&gt;</span></code></a></div><div class='definition-separated'><pre><span style="color:#808000;">@</span><span style="color:#808000;">Contract</span><span style="">(</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span><a href="external.annotations"><icon src="AllIcons.Ide.External_link_arrow"></a>&nbsp;
<span style="color:#000080;font-weight:bold;">public abstract</span>&nbsp;<span style="color:#000080;font-weight:bold;">boolean</span>&nbsp;<span style="color:#000000;">contains</span><span style="">(</span><br> <a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a>&nbsp;<span style="color:#000000;">o</span><br><span style="">)</span></pre></div><div class='content'>
<p>Returns <tt>true</tt> if this list contains the specified element.
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://java.util.List"><code><span style="color:#000000;">java.<wbr>util.<wbr>List</span><span style="">&lt;</span><span style="color:#20999d;">E</span><span style="">&gt;</span></code></a></icon></div><div class="definition"><pre><span style="color:#808000;">@</span><span style="color:#808000;">Contract</span><span style="">(</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span><a href="external.annotations"><icon src="AllIcons.Ide.External_link_arrow"></icon></a>&nbsp;
<span style="color:#000080;font-weight:bold;">public abstract</span>&nbsp;<span style="color:#000080;font-weight:bold;">boolean</span>&nbsp;<span style="color:#000000;">contains</span><span style="">(</span><br> <a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a>&nbsp;<span style="color:#000000;">o</span><br><span style="">)</span></pre></div><hr><div class="content"><p>
Returns <tt>true</tt> if this list contains the specified element.
More formally, returns <tt>true</tt> if and only if this list contains
at least one element <tt>e</tt> such that
<tt>(o==null&nbsp;?&nbsp;e==null&nbsp;:&nbsp;o.<wbr>equals(e))</tt>.
</div><table class='sections'><tr><td valign='top' class='section'><p>Overrides:</td><td valign='top'><p><a href="psi_element://java.util.Collection#contains(java.lang.Object)"><code><span style="color:#000000;">contains</span></code></a> in interface <a href="psi_element://java.util.Collection"><code><span style="color:#000000;">Collection</span></code></a></td><tr><td valign='top' class='section'><p>Params:</td><td valign='top'><code><span style="color:#000000;">o</span></code> &ndash; element whose presence in this list is to be tested </td><tr><td valign='top' class='section'><p>Returns:</td><td valign='top'><p><tt>true</tt> if this list contains the specified element </td><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://java.lang.ClassCastException"><code><span style="color:#0000ff;">ClassCastException</span></code></a> &ndash; if the type of the specified element is incompatible with this list (<a href="psi_element://java.util.Collection###optional-restrictions">optional</a>) <p><a href="psi_element://java.lang.NullPointerException"><code><span style="color:#0000ff;">NullPointerException</span></code></a> &ndash; if the specified element is null and this list does not permit null elements (<a href="psi_element://java.util.Collection###optional-restrictions">optional</a>)</td></table><div class="bottom"><icon src="AllIcons.Nodes.PpLibFolder"/>&nbsp;&lt; java 1.7 &gt;</div>
</p></div><table class="sections"><tbody><tr><td valign="top" class="section"><p>Overrides:</p></td><td valign="top"><p><a href="psi_element://java.util.Collection#contains(java.lang.Object)"><code><span style="color:#000000;">contains</span></code></a> in interface <a href="psi_element://java.util.Collection"><code><span style="color:#000000;">Collection</span></code></a></p></td></tr><tr><td valign="top" class="section"><p>Params:</p></td><td valign="top"><code><span style="color:#000000;">o</span></code> – element whose presence in this list is to be tested </td></tr><tr><td valign="top" class="section"><p>Returns:</p></td><td valign="top"><p><tt>true</tt> if this list contains the specified element </p></td></tr><tr><td valign="top" class="section"><p>Throws:</p></td><td valign="top"><p><a href="psi_element://java.lang.ClassCastException"><code><span style="color:#0000ff;">ClassCastException</span></code></a> – if the type of the specified element is incompatible with this list (<a href="psi_element://java.util.Collection###optional-restrictions">optional</a>) </p><p><a href="psi_element://java.lang.NullPointerException"><code><span style="color:#0000ff;">NullPointerException</span></code></a> – if the specified element is null and this list does not permit null elements (<a href="psi_element://java.util.Collection###optional-restrictions">optional</a>)</p></td></tr></tbody></table><div class="bottom"><icon src="AllIcons.Nodes.PpLibFolder" />&nbsp;&lt; java 1.7 &gt;</div></body></html>
@@ -1,9 +1,9 @@
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://My"><code><span style="color:#000000;">My</span></code></a></div><div class='definition-separated'><pre><i><span style="color:#808000;">@</span><a href="psi_element://org.jetbrains.annotations.Contract"><code><span style="color:#808000;">Contract</span></code></a><span style="">(</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span></i><sup><font color="808080" size="3"><i>i</i></font></sup><a href="inferred.annotations"><icon src="AllIcons.Ide.External_link_arrow"></a>&nbsp;
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://My"><code><span style="color:#000000;">My</span></code></a></icon></div><div class="definition"><pre><i><span style="color:#808000;">@</span><a href="psi_element://org.jetbrains.annotations.Contract"><code><span style="color:#808000;">Contract</span></code></a><span style="">(</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span></i><sup><font color="808080" size="3"><i>i</i></font></sup><a href="inferred.annotations"><icon src="AllIcons.Ide.External_link_arrow"></icon></a>&nbsp;
<span style="color:#000080;font-weight:bold;">boolean</span>&nbsp;<span style="color:#000000;">contains</span><span style="">(</span><br> <a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a>&nbsp;<span style="color:#000000;">o</span><br><span style="">)</span>
<span style="color:#000080;font-weight:bold;">throws</span>&nbsp;<span style="color:#ff0000">IOException</span></pre></div><table class='sections'><tr><td valign='top' class='section'><p>From interface:</td><td valign='top'><p><a href="psi_element://java.util.Collection"><code><span style="color:#000000;">java.<wbr>util.<wbr>Collection</span></code></a><br>
<span style="color:#000080;font-weight:bold;">throws</span>&nbsp;<span style="color:#ff0000">IOException</span></pre></div><table class="sections"><tbody><tr><td valign="top" class="section"><p>From interface:</p></td><td valign="top"><p><a href="psi_element://java.util.Collection"><code><span style="color:#000000;">java.<wbr>util.<wbr>Collection</span></code></a><br>
Returns <tt>true</tt> if this collection contains the specified element.
More formally, returns <tt>true</tt> if and only if this collection
contains at least one element <tt>e</tt> such that
<tt>(o==null&nbsp;?&nbsp;e==null&nbsp;:&nbsp;o.<wbr>equals(e))</tt>.
</td><tr><td valign='top' class='section'><p>Overrides:</td><td valign='top'><p><a href="psi_element://java.util.Collection#contains(java.lang.Object)"><code><span style="color:#000000;">contains</span></code></a> in interface <a href="psi_element://java.util.Collection"><code><span style="color:#000000;">Collection</span></code></a><br><a href="psi_element://I#contains(java.lang.Object)"><code><span style="color:#000000;">contains</span></code></a> in interface <a href="psi_element://I"><code><span style="color:#000000;">I</span></code></a></td><tr><td valign='top' class='section'><p>Params:</td><td valign='top'><code><span style="color:#000000;">o</span></code> &ndash; element whose presence in this collection is to be tested </td><tr><td valign='top' class='section'><p>Returns:</td><td valign='top'><p><tt>true</tt> if this collection contains the specified element </td><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://java.lang.NullPointerException"><code><span style="color:#0000ff;">NullPointerException</span></code></a> &ndash; before if the specified element is null and this collection does not permit null elements (<a href="psi_element://My###optional-restrictions">optional</a>) after<p><span style="color:#ff0000">IOException</span></td></table>
</p></td></tr><tr><td valign="top" class="section"><p>Overrides:</p></td><td valign="top"><p><a href="psi_element://java.util.Collection#contains(java.lang.Object)"><code><span style="color:#000000;">contains</span></code></a> in interface <a href="psi_element://java.util.Collection"><code><span style="color:#000000;">Collection</span></code></a><br><a href="psi_element://I#contains(java.lang.Object)"><code><span style="color:#000000;">contains</span></code></a> in interface <a href="psi_element://I"><code><span style="color:#000000;">I</span></code></a></p></td></tr><tr><td valign="top" class="section"><p>Params:</p></td><td valign="top"><code><span style="color:#000000;">o</span></code> – element whose presence in this collection is to be tested </td></tr><tr><td valign="top" class="section"><p>Returns:</p></td><td valign="top"><p><tt>true</tt> if this collection contains the specified element </p></td></tr><tr><td valign="top" class="section"><p>Throws:</p></td><td valign="top"><p><a href="psi_element://java.lang.NullPointerException"><code><span style="color:#0000ff;">NullPointerException</span></code></a> – before if the specified element is null and this collection does not permit null elements (<a href="psi_element://My###optional-restrictions">optional</a>) after</p><p><span style="color:#ff0000">IOException</span></p></td></tr></tbody></table></body></html>
@@ -1,4 +1,4 @@
<html><head><base href="placeholder"></head><body><div class='definition-separated'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">C</span></pre></div><div class='content'>
<p>some text
</div><table class='sections'><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p>System.<wbr>out</td></table>
<html><head><base href="placeholder"></head><body><div class="definition"><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">C</span></pre></div><hr><div class="content"><p>
some text
</p></div><table class="sections"><tbody><tr><td valign="top" class="section"><p>See Also:</p></td><td valign="top"><p>System.<wbr>out</p></td></tr></tbody></table></body></html>
@@ -1,4 +1,4 @@
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://C"><code><span style="color:#000000;">C</span></code></a></div><div class='definition-separated'><pre><span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">m</span><span style="">(</span><span style="">)</span></pre></div><div class='content'>
<p>description
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://C"><code><span style="color:#000000;">C</span></code></a></icon></div><div class="definition"><pre><span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">m</span><span style="">(</span><span style="">)</span></pre></div><hr><div class="content"><p>
description
See <a href="https://link.address.com">link text<icon src='AllIcons.Ide.External_link_arrow'></a>
</div>
</p></div></body></html>
@@ -1,10 +1,10 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Main</span></pre></div><div class='content'>
Attributes:
<pre id="mysnippet"><a href="psi_element://java.lang.System"><code>System</code></a>.out.println("Hello, world!");
int i = <span style="color:#000000;background-color:#ffff00;">0</span>; //empty line
<pre id="mysnippet"><a href="psi_element://java.lang.System"><code>System</code></a>.out.println("Hello, world!");
int i = <span style="color:#000000;background-color:#ffff00;">0</span>; //empty line
System.out.println("After two empty lines");</pre>
<a href="psi_element://Main###mysnippet">See mysnippet</a>.
</div><table class='sections'><p></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Foo</span></pre></div>
<html><head><base href="placeholder"></head><body><div class="definition"><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Foo</span></pre></div></body></html>
@@ -1,3 +1,3 @@
<div class="bottom"><icon src="AllIcons.Nodes.Package">&nbsp;<code>packageHtml</code></div><div class='content'>
<div class="bottom"><icon src="AllIcons.Nodes.Package">&nbsp;<code>packageHtml</code></div><div class='content'>
Some text.
</div><table class='sections'><p></table>
@@ -1,3 +1,3 @@
<div class="bottom"><icon src="AllIcons.Nodes.Package">&nbsp;<code>packageInfoFromComment</code></div><div class='content'>
<p>some text
</div>
<html><head></head><body><div class="bottom"><icon src="AllIcons.Nodes.Package">&nbsp;<code>packageInfoFromComment</code></icon></div><div class="content"><p>
some text
</p></div></body></html>
@@ -1,3 +1,3 @@
<div class="bottom"><icon src="AllIcons.Nodes.Package">&nbsp;<code>packageInfoWithCopyright</code></div><div class='content'>
<p>This package contains nothing but package-info.<wbr>java
</div>
<html><head></head><body><div class="bottom"><icon src="AllIcons.Nodes.Package">&nbsp;<code>packageInfoWithCopyright</code></icon></div><div class="content"><p>
This package contains nothing but package-info.<wbr>java
</p></div></body></html>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition-separated'><pre><span style="color:#000080;font-weight:bold;">int</span> <span style="color:#000000;">i</span></pre></div><div class='content'><p><code><span style="color:#000000;">i</span></code> &ndash; input</div>
<html><head><base href="placeholder"></head><body><div class="definition"><pre><span style="color:#000080;font-weight:bold;">int</span> <span style="color:#000000;">i</span></pre></div><hr><div class="content"><p><code><span style="color:#000000;">i</span></code> – input</p></div></body></html>
@@ -1,5 +1,5 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Scratch</span></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Deprecated</td><td valign='top'><p> reason.
<pre>
line 1
line 2
@@ -1,5 +1,5 @@
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://java.lang.Class"><code><span style="color:#000000;">java.<wbr>lang.<wbr>Class</span><span style="">&lt;</span><span style="color:#20999d;">T</span><span style="">&gt;</span></code></a></div><div class='definition-separated'><pre><span style="color:#ff0000">@<span style="color:#808000;">CallerSensitive</span></span>&nbsp;
<span style="color:#808000;">@</span><span style="color:#808000;">NotNull</span><a href="external.annotations"><icon src="AllIcons.Ide.External_link_arrow"></a>&nbsp;
<span style="color:#808000;">@</span><span style="color:#808000;">Contract</span><span style="">(</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span><a href="external.annotations"><icon src="AllIcons.Ide.External_link_arrow"></a>&nbsp;
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://java.lang.Class"><code><span style="color:#000000;">java.<wbr>lang.<wbr>Class</span><span style="">&lt;</span><span style="color:#20999d;">T</span><span style="">&gt;</span></code></a></icon></div><div class="definition"><pre><span style="color:#ff0000">@<span style="color:#808000;">CallerSensitive</span></span>&nbsp;
<span style="color:#808000;">@</span><span style="color:#808000;">NotNull</span><a href="external.annotations"><icon src="AllIcons.Ide.External_link_arrow"></icon></a>&nbsp;
<span style="color:#808000;">@</span><span style="color:#808000;">Contract</span><span style="">(</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span><a href="external.annotations"><icon src="AllIcons.Ide.External_link_arrow"></icon></a>&nbsp;
<span style="color:#000080;font-weight:bold;">public</span>&nbsp;<a href="psi_element://java.lang.reflect.Constructor"><code><span style="color:#000000;">java.<wbr>lang.<wbr>reflect.<wbr>Constructor</span></code></a><span style="">&lt;</span><span style="">?</span><span style="">&gt;</span><span style="">[]</span>&nbsp;<span style="color:#000000;">getDeclaredConstructors</span><span style="">(</span><span style="">)</span>
<span style="color:#000080;font-weight:bold;">throws</span>&nbsp;<a href="psi_element://java.lang.SecurityException"><code><span style="color:#000000;">SecurityException</span></code></a></pre></div><table class='sections'><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://java.lang.SecurityException"><code><span style="color:#0000ff;">SecurityException</span></code></a></td></table><div class="bottom"><icon src="AllIcons.Nodes.PpLibFolder"/>&nbsp;&lt; java 10 &gt;</div>
<span style="color:#000080;font-weight:bold;">throws</span>&nbsp;<a href="psi_element://java.lang.SecurityException"><code><span style="color:#000000;">SecurityException</span></code></a></pre></div><table class="sections"><tbody><tr><td valign="top" class="section"><p>Throws:</p></td><td valign="top"><p><a href="psi_element://java.lang.SecurityException"><code><span style="color:#0000ff;">SecurityException</span></code></a></p></td></tr></tbody></table><div class="bottom"><icon src="AllIcons.Nodes.PpLibFolder" />&nbsp;&lt; java 10 &gt;</div></body></html>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://Test"><code><span style="color:#000000;">Test</span><span style="">&lt;</span><span style="color:#20999d;">E</span><span style="color:#000080;font-weight:bold;"> extends </span><a href="psi_element://java.lang.Number"><code><span style="color:#0000ff;">Number</span></code></a><span style="">&gt;</span></code></a></div><div class='definition-separated'><pre><span style="color:#20999d;">E</span>&nbsp;<span style="color:#000000;">remove</span><span style="">(</span><br> <a href="psi_element://java.lang.Integer"><code><span style="color:#000000;">Integer</span></code></a>&nbsp;<span style="color:#000000;">idx</span><br><span style="">)</span></pre></div><table class='sections'><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p><a href="psi_element://TestImpl#remove(java.lang.Number)"><code><span style="color:#0000ff;">TestImpl</span><span style="">.</span><span style="color:#0000ff;">remove</span><span style="">(Number)</span></code></a></td></table>
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://Test"><code><span style="color:#000000;">Test</span><span style="">&lt;</span><span style="color:#20999d;">E</span><span style="color:#000080;font-weight:bold;"> extends </span></code></a><code><a href="psi_element://java.lang.Number"><code><span style="color:#0000ff;">Number</span></code></a><span style="">&gt;</span></code></icon></div><div class="definition"><pre><span style="color:#20999d;">E</span>&nbsp;<span style="color:#000000;">remove</span><span style="">(</span><br> <a href="psi_element://java.lang.Integer"><code><span style="color:#000000;">Integer</span></code></a>&nbsp;<span style="color:#000000;">idx</span><br><span style="">)</span></pre></div><table class="sections"><tbody><tr><td valign="top" class="section"><p>See Also:</p></td><td valign="top"><p><a href="psi_element://TestImpl#remove(java.lang.Number)"><code><span style="color:#0000ff;">TestImpl</span><span style="">.</span><span style="color:#0000ff;">remove</span><span style="">(Number)</span></code></a></p></td></tr></tbody></table></body></html>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://Test"><code><span style="color:#000000;">Test</span><span style="">&lt;</span><span style="color:#20999d;">E</span><span style="">&gt;</span></code></a></div><div class='definition-separated'><pre><span style="color:#20999d;">E</span>&nbsp;<span style="color:#000000;">remove</span><span style="">(</span><br> <span style="color:#000080;font-weight:bold;">int</span>&nbsp;<span style="color:#000000;">idx</span><br><span style="">)</span></pre></div><table class='sections'><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p><a href="psi_element://TestImpl#remove(int)"><code><span style="color:#0000ff;">TestImpl</span><span style="">.</span><span style="color:#0000ff;">remove</span><span style="">(</span><span style="color:#000080;font-weight:bold;">int</span><span style="">)</span></code></a></td></table>
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://Test"><code><span style="color:#000000;">Test</span><span style="">&lt;</span><span style="color:#20999d;">E</span><span style="">&gt;</span></code></a></icon></div><div class="definition"><pre><span style="color:#20999d;">E</span>&nbsp;<span style="color:#000000;">remove</span><span style="">(</span><br> <span style="color:#000080;font-weight:bold;">int</span>&nbsp;<span style="color:#000000;">idx</span><br><span style="">)</span></pre></div><table class="sections"><tbody><tr><td valign="top" class="section"><p>See Also:</p></td><td valign="top"><p><a href="psi_element://TestImpl#remove(int)"><code><span style="color:#0000ff;">TestImpl</span><span style="">.</span><span style="color:#0000ff;">remove</span><span style="">(</span><span style="color:#000080;font-weight:bold;">int</span><span style="">)</span></code></a></p></td></tr></tbody></table></body></html>
@@ -1,11 +1,10 @@
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://E"><code><span style="color:#000000;">E</span></code></a></div><div class='definition-separated'><pre><i><span style="color:#808000;">@</span><a href="psi_element://org.jetbrains.annotations.Contract"><code><span style="color:#808000;">Contract</span></code></a><span style="">(</span><span style="">value</span><span style=""> = </span><span style="color:#008000;font-weight:bold;">"&#32;-&gt;&#32;new"</span><span style="">,&nbsp;</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span></i><sup><font color="808080" size="3"><i>i</i></font></sup><a href="inferred.annotations"><icon src="AllIcons.Ide.External_link_arrow"></a>&nbsp;
<span style="color:#000080;font-weight:bold;">public static</span>&nbsp;<a href="psi_element://E"><code><span style="color:#000000;">E</span></code></a><span style="">[]</span>&nbsp;<span style="color:#000000;">values</span><span style="">(</span><span style="">)</span></pre></div><div class='content'>
<p>Returns an array containing the constants of this enum
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://E"><code><span style="color:#000000;">E</span></code></a></icon></div><div class="definition"><pre><i><span style="color:#808000;">@</span><a href="psi_element://org.jetbrains.annotations.Contract"><code><span style="color:#808000;">Contract</span></code></a><span style="">(</span><span style="">value</span><span style=""> = </span><span style="color:#008000;font-weight:bold;">" -&gt; new"</span><span style="">,&nbsp;</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span></i><sup><font color="808080" size="3"><i>i</i></font></sup><a href="inferred.annotations"><icon src="AllIcons.Ide.External_link_arrow"></icon></a>&nbsp;
<span style="color:#000080;font-weight:bold;">public static</span>&nbsp;<a href="psi_element://E"><code><span style="color:#000000;">E</span></code></a><span style="">[]</span>&nbsp;<span style="color:#000000;">values</span><span style="">(</span><span style="">)</span></pre></div><hr><div class="content"><p>
Returns an array containing the constants of this enum
type, in the order they're declared. This method may be
used to iterate over the constants as follows:
<pre>
for(E c : E.<wbr>values())
</p><pre> for(E c : E.<wbr>values())
System.<wbr>out.<wbr>println(c);
</pre>
</div><table class='sections'><tr><td valign='top' class='section'><p>Returns:</td><td valign='top'><p>an array containing the constants of this enum type, in the order they're declared</td></table>
</div><table class="sections"><tbody><tr><td valign="top" class="section"><p>Returns:</p></td><td valign="top"><p>an array containing the constants of this enum type, in the order they're declared</p></td></tr></tbody></table></body></html>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://Test"><code><span style="color:#000000;">Test</span></code></a></div><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span>&nbsp;<span style="">&lt;</span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">1</span><span style="">)</span>&nbsp;<span style="color:#20999d;">T</span><span style="color:#000080;font-weight:bold;"> extends </span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">2</span><span style="">)</span>&nbsp;<a href="psi_element://java.lang.CharSequence"><code><span style="color:#000000;">CharSequence</span></code></a><span style=""> & </span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">3</span><span style="">)</span>&nbsp;<a href="psi_element://java.lang.Cloneable"><code><span style="color:#000000;">Cloneable</span></code></a><span style="">&gt;</span>&nbsp;<span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">4</span><span style="">)</span>&nbsp;<a href="psi_element://java.util.List"><code><span style="color:#000000;">List</span></code></a><span style="">&lt;</span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">5</span><span style="">)</span>&nbsp;<span style="">?</span><span style="color:#000080;font-weight:bold;"> super </span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">6</span><span style="">)</span>&nbsp;<span style="color:#20999d;">T</span><span style="">&gt;</span>&nbsp;<span style="color:#000000;">bar</span><span style="">(</span><span style="">)</span></pre></div>
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://Test"><code><span style="color:#000000;">Test</span></code></a></icon></div><div class="definition"><pre><span style="color:#000080;font-weight:bold;">public</span>&nbsp;<span style="">&lt;</span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">1</span><span style="">)</span>&nbsp;<span style="color:#20999d;">T</span><span style="color:#000080;font-weight:bold;"> extends </span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">2</span><span style="">)</span>&nbsp;<a href="psi_element://java.lang.CharSequence"><code><span style="color:#000000;">CharSequence</span></code></a><span style=""> &amp; </span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">3</span><span style="">)</span>&nbsp;<a href="psi_element://java.lang.Cloneable"><code><span style="color:#000000;">Cloneable</span></code></a><span style="">&gt;</span>&nbsp;<span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">4</span><span style="">)</span>&nbsp;<a href="psi_element://java.util.List"><code><span style="color:#000000;">List</span></code></a><span style="">&lt;</span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">5</span><span style="">)</span>&nbsp;<span style="">?</span><span style="color:#000080;font-weight:bold;"> super </span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">6</span><span style="">)</span>&nbsp;<span style="color:#20999d;">T</span><span style="">&gt;</span>&nbsp;<span style="color:#000000;">bar</span><span style="">(</span><span style="">)</span></pre></div></body></html>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://Test"><code><span style="color:#000000;">Test</span></code></a></div><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span>&nbsp;<span style="color:#808000;">@</span><a href="psi_element://Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">1</span><span style="">)</span>&nbsp;<a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a>&nbsp;<span style="color:#808000;">@</span><a href="psi_element://Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">2</span><span style="">)</span>&nbsp;<span style="">[]</span>&nbsp;<span style="color:#000000;">foo</span><span style="">(</span><span style="">)</span></pre></div>
<html><head><base href="placeholder"></head><body><div class="bottom"><icon src="AllIcons.Nodes.Class">&nbsp;<a href="psi_element://Test"><code><span style="color:#000000;">Test</span></code></a></icon></div><div class="definition"><pre><span style="color:#000080;font-weight:bold;">public</span>&nbsp;<span style="color:#808000;">@</span><a href="psi_element://Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">1</span><span style="">)</span>&nbsp;<a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a>&nbsp;<span style="color:#808000;">@</span><a href="psi_element://Foo"><code><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">2</span><span style="">)</span>&nbsp;<span style="">[]</span>&nbsp;<span style="color:#000000;">foo</span><span style="">(</span><span style="">)</span></pre></div></body></html>
@@ -1,4 +1,4 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Main</span></pre></div><div class='content'>
@unknown inline
tag
tag
</div><table class='sections'><p></table>
@@ -1,3 +1,3 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Main</span></pre></div><div class='content'>
@unknown inline tag
@unknown inline tag
</div><table class='sections'><p></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://A"><code><span style="color:#0000ff;">A</span></code></a><span style="">&lt;</span><a href="psi_element://java.lang.String"><code><span style="color:#0000ff;">String</span></code></a><span style="">&gt;</span> <span style="color:#000000;">a</span> <span style="">= </span><span style="color:#000080;font-weight:bold;">new </span><a href="psi_element://A"><code><span style="color:#0000ff;">A</span></code></a><span style="">&lt;</span><a href="psi_element://java.lang.String"><code><span style="color:#0000ff;">String</span></code></a><span style="">&gt;</span><span style="">(</span><span style="">)</span></pre></div>
<html><head><base href="placeholder"></head><body><div class="definition"><pre><a href="psi_element://A"><code><span style="color:#0000ff;">A</span></code></a><span style="">&lt;</span><a href="psi_element://java.lang.String"><code><span style="color:#0000ff;">String</span></code></a><span style="">&gt;</span> <span style="color:#000000;">a</span> <span style="">= </span><span style="color:#000080;font-weight:bold;">new </span><a href="psi_element://A"><code><span style="color:#0000ff;">A</span></code></a><span style="">&lt;</span><a href="psi_element://java.lang.String"><code><span style="color:#0000ff;">String</span></code></a><span style="">&gt;</span><span style="">(</span><span style="">)</span></pre></div></body></html>
@@ -423,7 +423,7 @@ public class JavaDocInfoGeneratorTest extends JavaCodeInsightTestCase {
}
static void assertEqualsFileText(@NotNull String expectedFile, @NotNull String actual) {
String actualText = replaceEnvironmentDependentContent(actual);
String actualText = replaceEnvironmentDependentContent(actual).replaceAll("[ \t]+\\n", "\n");
File htmlPath = new File(expectedFile);
String expectedText = loadFile(htmlPath);
if (!StringUtil.equals(expectedText, actualText)) {
@@ -114,8 +114,7 @@ public abstract class DocumentationEditorPane extends JBHtmlPane implements Disp
}
private int definitionPreferredWidth() {
int preferredDefinitionWidth = Math.max(getPreferredSectionWidth(CLASS_DEFINITION),
getPreferredSectionWidth(CLASS_DEFINITION_SEPARATED));
int preferredDefinitionWidth = getPreferredSectionWidth(CLASS_DEFINITION);
int preferredLocationWidth = getPreferredSectionWidth(CLASS_BOTTOM);
if (preferredDefinitionWidth < 0) {
return -1;
@@ -80,25 +80,19 @@ object DocumentationHtmlUtil {
body { padding: 0; margin: 0; overflow-wrap: anywhere;}
pre { white-space: pre-wrap; }
a { color: $linkColor; text-decoration: none;}
.$CLASS_DEFINITION, .$CLASS_DEFINITION_SEPARATED {
.$CLASS_DEFINITION {
padding: ${beforeSpacing}px ${contentInnerPadding}px ${afterSpacing}px ${contentInnerPadding}px;
}
.$CLASS_DEFINITION pre, .$CLASS_DEFINITION_SEPARATED pre {
.$CLASS_DEFINITION pre {
margin: 0; padding: 0;
}
.$CLASS_CONTENT, .$CLASS_CONTENT_SEPARATED {
.$CLASS_CONTENT {
padding: 0 ${contentInnerPadding}px 0px ${contentInnerPadding}px;
max-width: 100%;
}
.$CLASS_SEPARATED, .$CLASS_DEFINITION_SEPARATED, .$CLASS_CONTENT_SEPARATED {
padding-bottom: ${beforeSpacing + afterSpacing}px;
margin-bottom: ${afterSpacing}px;
border-bottom: thin solid $borderColor;
}
.$CLASS_BOTTOM, .$CLASS_DOWNLOAD_DOCUMENTATION, .$CLASS_TOP {
padding: ${beforeSpacing}px ${contentInnerPadding}px ${afterSpacing}px ${contentInnerPadding}px;
}
.$CLASS_SECTIONS { padding: 0 ${contentInnerPadding - 2}px 0 ${contentInnerPadding - 2}px 0; border-spacing: 0; }
.$CLASS_SECTION { color: $sectionColor; padding-right: 4px; white-space: nowrap; }
""".trimIndent()
@@ -79,11 +79,15 @@ import com.intellij.util.text.DateFormatUtil;
import com.intellij.util.ui.UIUtil;
import com.intellij.util.ui.update.Activatable;
import com.intellij.util.ui.update.UiNotifyConnector;
import one.util.streamex.StreamEx;
import org.jetbrains.annotations.ApiStatus.Internal;
import org.jetbrains.annotations.*;
import org.jetbrains.concurrency.CancellablePromise;
import org.jetbrains.concurrency.Promises;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Comment;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.nodes.TextNode;
import javax.swing.*;
import java.awt.*;
@@ -1909,20 +1913,8 @@ public class DocumentationManager extends DockablePopupManager<DocumentationComp
text = replaceIgnoreQuotesType(text, SECTIONS_START + SECTIONS_END, "");
text = replaceIgnoreQuotesType(text, SECTIONS_START + "<p>" + SECTIONS_END, ""); //NON-NLS
int definitionPos = indexOfIgnoreQuotesType(text, "class='" + CLASS_DEFINITION + "'");
int contentPos = indexOfIgnoreQuotesType(text, "class='" + CLASS_CONTENT + "'");
int sectionsPos = indexOfIgnoreQuotesType(text, "class='" + CLASS_SECTIONS + "'");
int bottomPos = indexOfIgnoreQuotesType(
text.substring(StreamEx.of(definitionPos, contentPos, sectionsPos).filter(it -> it >= 0).max(Integer::compareTo).orElse(0)),
"class='" + CLASS_BOTTOM);
boolean hasDefinition = definitionPos >= 0;
boolean hasContent = contentPos >= 0;
boolean hasSections = sectionsPos >= 0;
boolean hasDownloadsSection = downloadDocumentationActionLink != null;
boolean hasBottom = bottomPos >= 0 || location != null || links != null;
if (!hasContent && !hasDefinition && !hasSections) {
var document = Jsoup.parse(text);
if (document.select("." + CLASS_DEFINITION + ", ." + CLASS_CONTENT + ", ." + CLASS_SECTIONS).isEmpty()) {
int bodyStart = findContentStart(text);
if (bodyStart > 0) {
text = text.substring(0, bodyStart) +
@@ -1933,55 +1925,85 @@ public class DocumentationManager extends DockablePopupManager<DocumentationComp
else {
text = CONTENT_START + text + CONTENT_END;
}
hasContent = true;
}
else if (hasContent) {
// Ensure content starts with <p> for proper padding
int nextChar = text.indexOf(">", contentPos) + 1;
if (nextChar > 0) {
while (nextChar < text.length() && Character.isWhitespace(text.charAt(nextChar))) {
nextChar++;
}
//noinspection HardCodedStringLiteral
if (!text.startsWith("<p", nextChar) && !text.startsWith("<div", nextChar)) {
//noinspection HardCodedStringLiteral
text = text.substring(0, nextChar) + "<p>" + text.substring(nextChar);
}
}
}
if (hasDefinition && (hasContent || hasSections || hasDownloadsSection || hasBottom)) {
text = replaceIgnoreQuotesType(text, "class='" + CLASS_DEFINITION + "'",
"class='" + CLASS_DEFINITION_SEPARATED + "'");
// reparse the document
document = Jsoup.parse(text);
}
if (downloadDocumentationActionLink != null) {
text += HtmlChunk.div()
.children(
HtmlChunk.icon("AllIcons.Plugins.Downloads", AllIcons.Plugins.Downloads),
HtmlChunk.nbsp(),
HtmlChunk.link(downloadDocumentationActionLink, CodeInsightBundle.message("documentation.download.button.label"))
)
.setClass(CLASS_DOWNLOAD_DOCUMENTATION);
document.body().append(
HtmlChunk.div()
.children(
HtmlChunk.icon("AllIcons.Plugins.Downloads", AllIcons.Plugins.Downloads),
HtmlChunk.nbsp(),
HtmlChunk.link(downloadDocumentationActionLink, CodeInsightBundle.message("documentation.download.button.label"))
)
.setClass(CLASS_DOWNLOAD_DOCUMENTATION)
.toString()
);
}
if (location != null) {
text += getBottom().child(location);
document.body().append(getBottom().child(location).toString());
}
if (links != null) {
text += getBottom().child(links);
document.body().append(getBottom().child(links).toString());
}
text = addExternalLinksIcon(text);
return text;
document.select("." + CLASS_DEFINITION + ", ." + CLASS_CONTENT).forEach(
div -> {
var nextSibling = div.nextElementSibling();
if (nextSibling == null) {
return;
}
if (nextSibling.hasClass(CLASS_DEFINITION)
|| nextSibling.hasClass(CLASS_CONTENT)
|| (div.hasClass(CLASS_DEFINITION)
&& (
nextSibling.hasClass(CLASS_SECTIONS)
|| nextSibling.hasClass(CLASS_BOTTOM)
|| nextSibling.hasClass(CLASS_DOWNLOAD_DOCUMENTATION)
))) {
div.after(new Element("hr"));
}
}
);
document.select("." + CLASS_CONTENT).forEach(
div -> {
var child = div.firstChild();
var toWrap = new SmartList<Node>();
while (child != null && !isBlockElement(child)) {
if (!(child instanceof Comment)) {
toWrap.add(child);
}
child = child.nextSibling();
}
if (!toWrap.isEmpty()
&& !ContainerUtil.all(toWrap, n -> n instanceof TextNode textNode && textNode.isBlank())
) {
var para = new Element("p");
para.insertChildren(0, toWrap);
div.insertChildren(0, para);
}
}
);
document.outputSettings().prettyPrint(false);
return addExternalLinksIcon(document.html());
}
private static int indexOfIgnoreQuotesType(@NotNull String text, @NotNull String substring) {
return StreamEx.of(
text.indexOf(substring),
text.indexOf(substring.replace("\"", "'")),
text.indexOf(substring.replace("'", "\""))
).filter(it -> it >= 0)
.min(Integer::compareTo)
.orElse(-1);
private static boolean isBlockElement(Node node) {
if (node instanceof Element element) {
var tagName = element.tagName();
return tagName.equals("p")
|| tagName.equals("div")
|| tagName.equals("pre")
|| tagName.equals("table")
|| tagName.equals("blockquote")
|| tagName.equals("ol")
|| tagName.equals("ul")
|| tagName.equals("dl")
|| (tagName.startsWith("h") && tagName.length() == 2 && Character.isDigit(tagName.charAt(1)));
}
return false;
}
private static @NlsSafe @NotNull String replaceIgnoreQuotesType(@NotNull String text,
@@ -272,10 +272,9 @@ object QuickDocHighlightingHelper {
JBHtmlPaneStyleConfiguration(
colorScheme = colorScheme,
editorInlineContext = editorInlineContext,
inlineCodeParentSelectors = listOf(".$CLASS_CONTENT", ".$CLASS_CONTENT_SEPARATED", ".$CLASS_CONTENT div:not(.$CLASS_BOTTOM)",
inlineCodeParentSelectors = listOf(".$CLASS_CONTENT", ".$CLASS_CONTENT div:not(.$CLASS_BOTTOM)",
".$CLASS_CONTENT div:not(.$CLASS_TOP)", ".$CLASS_SECTIONS"),
largeCodeFontSizeSelectors = listOf(".$CLASS_DEFINITION code", ".$CLASS_DEFINITION pre", ".$CLASS_DEFINITION_SEPARATED code",
".$CLASS_DEFINITION_SEPARATED pre", ".$CLASS_BOTTOM code", ".$CLASS_TOP code"),
largeCodeFontSizeSelectors = listOf(".$CLASS_DEFINITION code", ".$CLASS_DEFINITION pre", ".$CLASS_BOTTOM code", ".$CLASS_TOP code"),
enableInlineCodeBackground = DocumentationSettings.isCodeBackgroundEnabled()
&& DocumentationSettings.getInlineCodeHighlightingMode() !== InlineCodeHighlightingMode.NO_HIGHLIGHTING,
enableCodeBlocksBackground = DocumentationSettings.isCodeBackgroundEnabled()
@@ -501,7 +501,7 @@ open class JBHtmlPane(
val isPre = tagName.contentEquals("pre", true)
val isCode = tagName.contentEquals("code", true)
val isBlockquote = tagName.contentEquals("blockquote", true)
if (!isP && !isPre && !(isCode && !isOpeningTag) && !(isBlockquote && isOpeningTag)) {
if (!(isP && isOpeningTag) && !isPre && !(isCode && !isOpeningTag) && !(isBlockquote && isOpeningTag)) {
result.append(tagStart)
skipToTagEnd(result)
return
@@ -519,6 +519,20 @@ open class JBHtmlPane(
if (codePoint == '<'.code) {
readTagStart()
if (isP) {
if (!openingTag && tagName.contentEquals("p", true)) {
tagBuffer.append(tagStart)
skipToTagEnd(tagBuffer)
// Skip whitespace
while (codePoint >= 0 && Character.isWhitespace(codePoint)) {
next(tagBuffer)
}
if (codePoint == '<'.code) {
readTagStart()
} else {
result.append(tagBuffer)
return
}
}
// Remove empty <p> before some tags - workaround for Swing html renderer not removing empty paragraphs before non-inline tags
if (tagName !in dropPrecedingEmptyParagraphTags) {
result.append(tagBuffer)
@@ -594,7 +608,8 @@ open class JBHtmlPane(
companion object {
private val dropPrecedingEmptyParagraphTags = CollectionFactory.createCharSequenceSet(false).also {
it.addAll(listOf("ul", "ol", "h1", "h2", "h3", "h4", "h5", "h6", "p", "tr", "td"))
it.addAll(listOf("ul", "ol", "dl", "h1", "h2", "h3", "h4", "h5", "h6", "p", "tr", "td",
"table", "pre", "blockquote", "div"))
}
}
}