branch: elpa/racket-mode
commit 71f27c643dadf70847e447e773760df6df48fe5a
Author: Greg Hendershott <[email protected]>
Commit: Greg Hendershott <[email protected]>

    Support exported-index-desc*-extras 'long-key aliases
    
    For example Rhombus uses this for prefixed term like "flonum.tan" as
    an alias for "tan".
    
    We handle this simply as an additional entry; given the Emacs
    completion mechanism I don't really see how to optimize this as two
    alternative terms sharing the same entry.
---
 racket/scribble.rkt | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/racket/scribble.rkt b/racket/scribble.rkt
index 74e498a957e..b4a0c28a39a 100644
--- a/racket/scribble.rkt
+++ b/racket/scribble.rkt
@@ -19,7 +19,6 @@
          setup/main-doc
          "define-fallbacks.rkt"
          "lib-pkg.rkt"
-         "safe-dynamic-require.rkt"
          "util.rkt"
          "xref.rkt")
 
@@ -177,23 +176,29 @@
        (add! sub-node more-chs)])))
 
 (define (build-doc-search-trie)
-  (define root (empty-node))
-  (define (hide-desc? desc)
+  (define (get-extras desc . keys)
+    (and (exported-index-desc*? desc)
+         (let ([ht (exported-index-desc*-extras desc)])
+           (for/or ([key (in-list keys)]) (hash-ref ht key #f)))))
+  (define (hide? desc)
     ;; Don't show doc for constructors; class doc suffices.
     (or (constructor-index-desc? desc)
-        (and (exported-index-desc*? desc)
-             (let ([ht (exported-index-desc*-extras desc)])
-               (or (hash-ref ht 'hidden? #f)
-                   (hash-ref ht 'constructor? #f))))))
+        (get-extras desc 'hidden? 'constructor?)))
+  (define root (empty-node))
+  (define (add! term desc tag)
+    (trie-add! root
+               term
+               (delay (doc-trie-value desc term tag))))
   (for* ([entry (in-list (xref-index (get-xref)))]
          [desc (in-value (entry-desc entry))]
          #:when desc
-         #:unless (hide-desc? desc)
+         #:unless (hide? desc)
          [term (in-value (car (entry-words entry)))]
+         [also (in-value (get-extras desc 'long-key))]
          [tag (in-value (entry-tag entry))])
-    (trie-add! root
-               term
-               (delay (doc-trie-value desc term tag))))
+    (add! term desc tag)
+    (when also
+      (add! also desc tag)))
   root)
 
 (define (doc-trie-value desc term tag)

Reply via email to