|
482 | 482 | (match params
|
483 | 483 | [(hash-table ['textDocument (DocIdentifier #:uri uri)])
|
484 | 484 | (define this-doc (hash-ref open-docs (string->symbol uri)))
|
485 |
| - (success-response id (hash 'data (doc-range-tokens this-doc uri 0 (doc-endpos this-doc))))] |
| 485 | + (semantic-tokens uri id 0 (doc-endpos this-doc))] |
486 | 486 | [_ (error-response id INVALID-PARAMS "textDocument/semanticTokens/full failed")]))
|
487 | 487 |
|
488 | 488 | (define (range-semantic-tokens id params)
|
489 | 489 | (match params
|
490 | 490 | [(hash-table ['textDocument (DocIdentifier #:uri uri)]
|
491 | 491 | ['range (Range #:start (Pos #:line st-ln #:char st-ch)
|
492 |
| - #:end (Pos #:line ed-ln #:char ed-ch))]) |
| 492 | + #:end (Pos #:line ed-ln #:char ed-ch))]) |
493 | 493 | (define this-doc (hash-ref open-docs (string->symbol uri)))
|
494 | 494 | (define start-pos (doc-pos this-doc st-ln st-ch))
|
495 | 495 | (define end-pos (doc-pos this-doc ed-ln ed-ch))
|
496 |
| - (success-response id (hash 'data (doc-range-tokens this-doc uri start-pos end-pos)))] |
| 496 | + (semantic-tokens uri id start-pos end-pos)] |
497 | 497 | [_ (error-response id INVALID-PARAMS "textDocument/semanticTokens/range failed")]))
|
498 | 498 |
|
| 499 | +(define (semantic-tokens uri id start-pos end-pos) |
| 500 | + (define this-doc (hash-ref open-docs (string->symbol uri))) |
| 501 | + (define new-editor (send (Doc-text this-doc) copy)) |
| 502 | + (λ () |
| 503 | + (define tokens (doc-range-tokens new-editor uri start-pos end-pos)) |
| 504 | + (success-response id (hash 'data tokens)))) |
| 505 | + |
499 | 506 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
500 | 507 |
|
501 | 508 | (provide
|
|
517 | 524 | [formatting! (exact-nonnegative-integer? jsexpr? . -> . jsexpr?)]
|
518 | 525 | [range-formatting! (exact-nonnegative-integer? jsexpr? . -> . jsexpr?)]
|
519 | 526 | [on-type-formatting! (exact-nonnegative-integer? jsexpr? . -> . jsexpr?)]
|
520 |
| - [full-semantic-tokens (exact-nonnegative-integer? jsexpr? . -> . jsexpr?)] |
521 |
| - [range-semantic-tokens (exact-nonnegative-integer? jsexpr? . -> . jsexpr?)])) |
| 527 | + [full-semantic-tokens (exact-nonnegative-integer? jsexpr? . -> . (or/c jsexpr? (-> jsexpr?)))] |
| 528 | + [range-semantic-tokens (exact-nonnegative-integer? jsexpr? . -> . (or/c jsexpr? (-> jsexpr?)))])) |
522 | 529 |
|
0 commit comments