Skip to content
This repository was archived by the owner on Oct 26, 2023. It is now read-only.

Commit f8d4060

Browse files
dannypsnljeapostrophe
authored andcommitted
correctly use interval-map to limit reported actions
Signed-off-by: Lîm Tsú-thuàn <[email protected]>
1 parent 127302b commit f8d4060

File tree

2 files changed

+23
-20
lines changed

2 files changed

+23
-20
lines changed

doc-trace.rkt

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
(define completions (list))
2323
(define requires (make-interval-map))
2424
(define definitions (make-hash))
25-
(define quickfixs (mutable-set))
25+
(define quickfixs (make-interval-map))
2626
;; decl -> (set pos ...)
2727
(define sym-decls (make-interval-map))
2828
;; pos -> decl
@@ -35,7 +35,7 @@
3535
(set! sym-bindings (make-interval-map))
3636
(set! requires (make-interval-map))
3737
(set! definitions (make-hash))
38-
(set! quickfixs (mutable-set)))
38+
(set! quickfixs (make-interval-map)))
3939
(define/public (expand start end)
4040
(define inc (- end start))
4141
(move-interior-intervals sym-decls (- start 1) inc)
@@ -94,20 +94,21 @@
9494
#:source (path->uri src-obj)
9595
#:message "unused variable"))
9696

97-
(set-add! quickfixs
98-
(CodeAction
99-
#:title "Add prefix `_` to ignore"
100-
#:kind "quickfix"
101-
#:diagnostics (list diag)
102-
#:isPreferred #f
103-
#:edit (WorkspaceEdit
104-
#:changes
105-
(hasheq (string->symbol (path->uri src-obj))
106-
(TextEdit #:range (Range #:start (abs-pos->Pos doc-text start)
107-
#:end (abs-pos->Pos doc-text finish))
108-
#:newText "_")))
109-
#:data (Range #:start (abs-pos->Pos doc-text start)
110-
#:end (abs-pos->Pos doc-text finish))))
97+
(interval-map-set!
98+
quickfixs start (add1 finish)
99+
(CodeAction
100+
#:title "Add prefix `_` to ignore"
101+
#:kind "quickfix"
102+
#:diagnostics (list diag)
103+
#:isPreferred #f
104+
#:edit (WorkspaceEdit
105+
#:changes
106+
(hasheq (string->symbol (path->uri src-obj))
107+
(TextEdit #:range (Range #:start (abs-pos->Pos doc-text start)
108+
#:end (abs-pos->Pos doc-text finish))
109+
#:newText "_")))
110+
#:data (Range #:start (abs-pos->Pos doc-text start)
111+
#:end (abs-pos->Pos doc-text finish))))
111112

112113
(set-add! warn-diags diag)))
113114
(define/override (syncheck:add-mouse-over-status src-obj start finish text)

text-document.rkt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,17 +153,19 @@
153153
(define (code-action id params)
154154
(match params
155155
[(hash-table ['textDocument (DocIdentifier #:uri uri)]
156-
['range range]
156+
['range (Range #:start start #:end _end)]
157157
; TODO: _ctx has three fields
158158
; 1. `diagnostics`
159159
; 2. `only: CodeActionKind[]` server should use this to filter out client-unwanted code action
160160
; 3. `triggerKind?: CodeActionTriggerKind` the reason why code action were requested
161161
['context _ctx])
162162
#:when (uri-is-path? uri)
163-
(match-define (doc _doc-text doc-trace)
163+
(match-define (doc doc-text doc-trace)
164164
(hash-ref open-docs (string->symbol uri)))
165-
(define code-action-list (set->list (send doc-trace get-quickfixs)))
166-
(success-response id code-action-list)]
165+
(define act (interval-map-ref (send doc-trace get-quickfixs) (Pos->abs-pos doc-text start) #f))
166+
(if act
167+
(success-response id (list act))
168+
(success-response id (list)))]
167169
[(hash-table ['textDocument (DocIdentifier #:uri uri)])
168170
(error-response id INVALID-PARAMS (format "textDocument/codeAction failed uri is not a path ~a" uri))]
169171
[_ (error-response id INVALID-PARAMS "textDocument/codeAction failed")]))

0 commit comments

Comments
 (0)