summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/typesrenderer.nim12
-rw-r--r--config/nimdoc.cfg7
-rw-r--r--lib/packages/docutils/rstgen.nim6
-rw-r--r--tools/dochack/dochack.nim20
4 files changed, 26 insertions, 19 deletions
diff --git a/compiler/typesrenderer.nim b/compiler/typesrenderer.nim
index d050a86b2..438744b1c 100644
--- a/compiler/typesrenderer.nim
+++ b/compiler/typesrenderer.nim
@@ -19,20 +19,14 @@ proc renderPlainSymbolName*(n: PNode): string =
   ## for the HTML hyperlinks.
   result = ""
   case n.kind
-  of nkPostfix:
-    for i in 0 .. <n.len:
-      result = renderPlainSymbolName(n[<n.len])
-      if result.len > 0:
-        return
+  of nkPostfix, nkAccQuoted:
+    result = renderPlainSymbolName(n[<n.len])
   of nkIdent:
-    if n.ident.s != "*":
-      result = n.ident.s
+    result = n.ident.s
   of nkSym:
     result = n.sym.renderDefinitionName(noQuotes = true)
   of nkPragmaExpr:
     result = renderPlainSymbolName(n[0])
-  of nkAccQuoted:
-    result = renderPlainSymbolName(n[<n.len])
   else:
     internalError(n.info, "renderPlainSymbolName() with " & $n.kind)
   assert(not result.isNil)
diff --git a/config/nimdoc.cfg b/config/nimdoc.cfg
index 2a6ace4d8..819444874 100644
--- a/config/nimdoc.cfg
+++ b/config/nimdoc.cfg
@@ -1275,6 +1275,13 @@ dt pre > span.Operator ~ span.Identifier, dt pre > span.Operator ~ span.Operator
   span.pragmaend {
     cursor: pointer;
   }
+
+div.search_results {
+  background-color: antiquewhite;
+  margin: 3em;
+  border-style: inset;
+  padding: 1em;
+}
 </style>
 
 <script type="text/javascript" src="../dochack.js"></script>
diff --git a/lib/packages/docutils/rstgen.nim b/lib/packages/docutils/rstgen.nim
index 13c0c0a29..47247dd7c 100644
--- a/lib/packages/docutils/rstgen.nim
+++ b/lib/packages/docutils/rstgen.nim
@@ -419,10 +419,10 @@ proc escapeLink(s: string): string =
   result = newStringOfCap(s.len + s.len shr 2)
   for c in items(s):
     case c
-    of 'a'..'z', '_', 'A'..'Z', '0'..'9':
+    of 'a'..'z', '_', 'A'..'Z', '0'..'9', '.', '#', ',', '/':
       result.add c
     else:
-      add(result, "X")
+      add(result, "%")
       add(result, toHex(ord(c), 2))
 
 proc generateSymbolIndex(symbols: seq[IndexEntry]): string =
@@ -436,7 +436,7 @@ proc generateSymbolIndex(symbols: seq[IndexEntry]): string =
     var j = i
     while j < symbols.len and keyword == symbols[j].keyword:
       let
-        url = symbols[j].link.escapeLink #replace("&", "&amp;")
+        url = symbols[j].link.escapeLink
         text = if not symbols[j].linkTitle.isNil: symbols[j].linkTitle else: url
         desc = if not symbols[j].linkDesc.isNil: symbols[j].linkDesc else: ""
       if desc.len > 0:
diff --git a/tools/dochack/dochack.nim b/tools/dochack/dochack.nim
index 8d95fc5fd..fbfbea007 100644
--- a/tools/dochack/dochack.nim
+++ b/tools/dochack/dochack.nim
@@ -241,7 +241,7 @@ proc dosearch(value: cstring): Element =
     var stuff: Element
     {.emit: """
     var request = new XMLHttpRequest();
-    request.open("GET", "theindex.html", false);
+    request.open("GET", "http://nim-lang.org/0.15.0/theindex.html", false);
     request.send(null);
 
     var doc = document.implementation.createHTMLDocument("theindex");
@@ -259,16 +259,22 @@ proc dosearch(value: cstring): Element =
   let ul = tree("UL")
   result = tree("DIV")
   result.setClass"search_results"
-  var matches = 0
+  var matches: seq[(Element, int)] = @[]
   let key = value.normalize
   for i in 0..<db.len:
-    if containsWord(key, contents[i]):
-      ul.add(tree("LI", db[i]))
-      inc matches
-      if matches > 10: break
+    let c = contents[i]
+    if c.containsWord(key):
+      matches.add((db[i], -(30_000 - c.len)))
+    elif c.contains(key):
+      matches.add((db[i], c.len))
+  matches.sort do (a, b: auto) -> int:
+    a[1] - b[1]
+  for i in 0..min(<matches.len, 19):
+    ul.add(tree("LI", matches[i][0]))
   if ul.len == 0:
-    result.add text"no search results"
+    result.add tree("B", text"no search results")
   else:
+    result.add tree("B", text"search results")
     result.add ul
 
 var oldtoc: Element