Skip to content

Commit dcf8236

Browse files
committed
Fix anchors in Inkuire results in Scaladoc
Previously, non-external pages would not be linked in Scaladoc if searched using Inkuire. Now it should behave similarly to standard searching by symbolic name, with results linking to specific member locations on pages.
1 parent 8f0640b commit dcf8236

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

scaladoc-js/main/src/searchbar/SearchbarComponent.scala

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import org.scalajs.dom.html.Input
66
import scala.scalajs.js.timers._
77
import scala.concurrent.duration._
88

9+
import java.net.URI
10+
911
class SearchbarComponent(engine: SearchbarEngine, inkuireEngine: InkuireJSSearchEngine, parser: QueryParser):
1012
val resultsChunkSize = 100
1113
extension (p: PageEntry)
@@ -55,7 +57,12 @@ class SearchbarComponent(engine: SearchbarEngine, inkuireEngine: InkuireJSSearch
5557
icon.classList.add(m.entryType.take(2))
5658

5759
val resultA = document.createElement("a").asInstanceOf[html.Anchor]
58-
resultA.href = m.pageLocation
60+
resultA.href =
61+
if(new URI(m.pageLocation).isAbsolute()) {
62+
m.pageLocation
63+
} else {
64+
Globals.pathToRoot + m.pageLocation
65+
}
5966
resultA.text = m.functionName
6067
resultA.onclick = (event: Event) =>
6168
if (document.body.contains(rootDiv)) {

scaladoc/src/dotty/tools/scaladoc/tasty/InkuireSupport.scala

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import collection.JavaConverters._
44
import dotty.tools.scaladoc._
55
import dotty.tools.scaladoc.{Signature => DSignature}
66
import dotty.tools.scaladoc.Inkuire
7+
import dotty.tools.scaladoc.renderers.Resources
78

89
import scala.util.Random
910
import scala.quoted._
@@ -13,10 +14,13 @@ import SymOps._
1314
import NameNormalizer._
1415
import SyntheticsSupport._
1516

16-
trait InkuireSupport:
17+
trait InkuireSupport(using DocContext) extends Resources:
1718
self: TastyParser =>
1819
import qctx.reflect._
1920

21+
// Unused in InquireSupport, required for Resources
22+
override def effectiveMembers: Map[DRI, Member] = Map.empty
23+
2024
private given qctx.type = qctx
2125

2226
def doInkuireStuff(classDef: ClassDef): Unit = {
@@ -110,7 +114,7 @@ trait InkuireSupport:
110114
),
111115
name = name,
112116
packageName = ownerName,
113-
uri = methodSymbol.dri.externalLink.getOrElse(""),
117+
uri = methodSymbol.dri.externalLink.getOrElse(absolutePathWithAnchor(methodSymbol.dri)),
114118
entryType = "def"
115119
)
116120
val curriedSgn = sgn.copy(signature = Inkuire.curry(sgn.signature))
@@ -138,7 +142,7 @@ trait InkuireSupport:
138142
),
139143
name = name,
140144
packageName = ownerName,
141-
uri = valSymbol.dri.externalLink.getOrElse(""),
145+
uri = valSymbol.dri.externalLink.getOrElse(absolutePathWithAnchor(valSymbol.dri)),
142146
entryType = "val"
143147
)
144148
val curriedSgn = sgn.copy(signature = Inkuire.curry(sgn.signature))

0 commit comments

Comments
 (0)