-
-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathdoc-trace.rkt
117 lines (97 loc) · 4.04 KB
/
doc-trace.rkt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#lang racket/base
(require racket/class
drracket/check-syntax
"service/completion.rkt"
"service/hover.rkt"
"service/docs.rkt"
"service/require.rkt"
"service/definition.rkt"
"service/diagnostic.rkt"
"service/declaration.rkt"
"service/highlight.rkt")
(define build-trace%
(class (annotations-mixin object%)
(init-field src doc-text indenter)
(define hovers (new hover%))
(define docs (new docs%))
(define completions (new completion%))
(define requires (new require%))
(define definitions (new definition% [src src]))
(define diag (new diag% [doc-text doc-text]))
(define decls (new declaration%))
(define semantic-tokens (new highlight% [src src] [doc-text doc-text]))
(define services
(list hovers
docs
completions
requires
definitions
diag
decls
semantic-tokens))
(define/public (reset)
(for ([s services])
(send s reset)))
(define/public (expand start end)
(for ([s services])
(send s expand start end)))
(define/public (contract start end)
(for ([s services])
(send s contract start end)))
(define/public (walk-stx stx expanded-stx)
(for ([s services])
(send s walk-stx stx expanded-stx)))
;; Getters
(define/public (get-indenter) indenter)
(define/public (get-warn-diags) (car (send diag get)))
(define/public (get-hovers) (send hovers get))
(define/public (get-docs) (send docs get))
(define/public (get-completions) (send completions get))
(define/public (get-requires) (send requires get))
(define/public (get-sym-decls) (car (send decls get)))
(define/public (get-sym-bindings) (cadr (send decls get)))
(define/public (get-definitions) (send definitions get))
(define/public (get-quickfixs) (cadr (send diag get)))
(define/public (get-semantic-tokens) (send semantic-tokens get))
;; Overrides
(define/override (syncheck:find-source-object stx)
(and (equal? src (syntax-source stx))
src))
;; Definitions
(define/override (syncheck:add-definition-target src-obj start end id mods)
(for ([s services])
(send s syncheck:add-definition-target src-obj start end id mods)))
;; Track requires
(define/override (syncheck:add-require-open-menu text start finish file)
(for ([s services])
(send s syncheck:add-require-open-menu text start finish file)))
(define/override (syncheck:add-mouse-over-status src-obj start finish text)
(for ([s services])
(send s syncheck:add-mouse-over-status src-obj start finish text)))
;; Docs
(define/override (syncheck:add-docs-menu text start finish id label path def-tag url-tag)
(for ([s services])
(send s syncheck:add-docs-menu text start finish id label path def-tag url-tag)))
(define/override (syncheck:add-jump-to-definition src-obj start end id filename submods)
(for ([s services])
(send s syncheck:add-jump-to-definition src-obj start end id filename submods)))
;; References
(define/override (syncheck:add-arrow/name-dup _start-src-obj start-left start-right
_end-src-obj end-left end-right
_actual? _phase-level
require-arrow? _name-dup?)
(for ([s services])
(send s syncheck:add-arrow/name-dup
_start-src-obj start-left start-right
_end-src-obj end-left end-right
_actual? _phase-level
require-arrow? _name-dup?)))
;; Unused requires
(define/override (syncheck:add-unused-require src left right)
(for ([s services])
(send s syncheck:add-unused-require src left right)))
(define/override (syncheck:color-range src start end style)
(for ([s services])
(send s syncheck:color-range src start end style)))
(super-new)))
(provide build-trace%)