@@ -4,6 +4,7 @@ defmodule NextLS do
4
4
5
5
import NextLS.DB.Query
6
6
7
+ alias GenLSP.Enumerations.CodeActionKind
7
8
alias GenLSP.Enumerations.ErrorCodes
8
9
alias GenLSP.Enumerations.TextDocumentSyncKind
9
10
alias GenLSP.ErrorResponse
@@ -16,13 +17,18 @@ defmodule NextLS do
16
17
alias GenLSP.Notifications.WorkspaceDidChangeWorkspaceFolders
17
18
alias GenLSP.Requests.Initialize
18
19
alias GenLSP.Requests.Shutdown
20
+ alias GenLSP.Requests.TextDocumentCodeAction
19
21
alias GenLSP.Requests.TextDocumentCompletion
20
22
alias GenLSP.Requests.TextDocumentDefinition
21
23
alias GenLSP.Requests.TextDocumentDocumentSymbol
22
24
alias GenLSP.Requests.TextDocumentFormatting
23
25
alias GenLSP.Requests.TextDocumentHover
24
26
alias GenLSP.Requests.TextDocumentReferences
25
27
alias GenLSP.Requests.WorkspaceSymbol
28
+ alias GenLSP.Structures.CodeActionContext
29
+ alias GenLSP.Structures.CodeActionOptions
30
+ alias GenLSP.Structures.CodeActionParams
31
+ alias GenLSP.Structures.Diagnostic
26
32
alias GenLSP.Structures.DidChangeWatchedFilesParams
27
33
alias GenLSP.Structures.DidChangeWorkspaceFoldersParams
28
34
alias GenLSP.Structures.DidOpenTextDocumentParams
@@ -34,6 +40,7 @@ defmodule NextLS do
34
40
alias GenLSP.Structures.SaveOptions
35
41
alias GenLSP.Structures.ServerCapabilities
36
42
alias GenLSP.Structures.SymbolInformation
43
+ alias GenLSP.Structures.TextDocumentIdentifier
37
44
alias GenLSP.Structures.TextDocumentItem
38
45
alias GenLSP.Structures.TextDocumentSyncOptions
39
46
alias GenLSP.Structures.TextEdit
@@ -118,6 +125,9 @@ defmodule NextLS do
118
125
save: % SaveOptions { include_text: true } ,
119
126
change: TextDocumentSyncKind . full ( )
120
127
} ,
128
+ code_action_provider: % CodeActionOptions {
129
+ code_action_kinds: [ CodeActionKind . quick_fix ( ) ]
130
+ } ,
121
131
completion_provider:
122
132
if init_opts . experimental . completions . enable do
123
133
% GenLSP.Structures.CompletionOptions {
@@ -149,6 +159,26 @@ defmodule NextLS do
149
159
) }
150
160
end
151
161
162
+ def handle_request (
163
+ % TextDocumentCodeAction {
164
+ params: % CodeActionParams {
165
+ context: % CodeActionContext { diagnostics: diagnostics } ,
166
+ text_document: % TextDocumentIdentifier { uri: uri }
167
+ }
168
+ } ,
169
+ lsp
170
+ ) do
171
+ code_actions =
172
+ for % Diagnostic { } = diagnostic <- diagnostics ,
173
+ data = % NextLS.CodeActionable.Data { diagnostic: diagnostic , uri: uri , document: lsp . assigns . documents [ uri ] } ,
174
+ namespace = diagnostic . data [ "namespace" ] ,
175
+ action <- NextLS.CodeActionable . from ( namespace , data ) do
176
+ action
177
+ end
178
+
179
+ { :reply , code_actions , lsp }
180
+ end
181
+
152
182
def handle_request ( % TextDocumentDefinition { params: % { text_document: % { uri: uri } , position: position } } , lsp ) do
153
183
result =
154
184
dispatch ( lsp . assigns . registry , :databases , fn entries ->
0 commit comments