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)