@@ -184,34 +184,36 @@ public final class SwiftLanguageServer: ToolchainLanguageServer {
184
184
response: SKDResponseDictionary ,
185
185
for snapshot: DocumentSnapshot
186
186
) -> DocumentTokens {
187
- var docTokens = snapshot. tokens
187
+ logExecutionTime ( level: . debug) {
188
+ var docTokens = snapshot. tokens
189
+
190
+ guard let offset: Int = response [ keys. offset] ,
191
+ let length: Int = response [ keys. length] ,
192
+ let start: Position = snapshot. positionOf ( utf8Offset: offset) ,
193
+ let end: Position = snapshot. positionOf ( utf8Offset: offset + length) else {
194
+ // This e.g. happens in the case of empty edits
195
+ log ( " did not update lexical/syntactic tokens, no range found " , level: . debug)
196
+ return docTokens
197
+ }
188
198
189
- guard let offset: Int = response [ keys. offset] ,
190
- let length: Int = response [ keys. length] ,
191
- let start: Position = snapshot. positionOf ( utf8Offset: offset) ,
192
- let end: Position = snapshot. positionOf ( utf8Offset: offset + length) else {
193
- // This e.g. happens in the case of empty edits
194
- log ( " did not update lexical/syntactic tokens, no range found " , level: . debug)
195
- return docTokens
196
- }
199
+ let range = start..< end
197
200
198
- let range = start..< end
201
+ if let syntaxMap: SKDResponseArray = response [ keys. syntaxmap] {
202
+ let tokenParser = SyntaxHighlightingTokenParser ( sourcekitd: sourcekitd)
203
+ let tokens = tokenParser. parseTokens ( syntaxMap, in: snapshot)
199
204
200
- if let syntaxMap: SKDResponseArray = response [ keys. syntaxmap] {
201
- let tokenParser = SyntaxHighlightingTokenParser ( sourcekitd: sourcekitd)
202
- let tokens = tokenParser. parseTokens ( syntaxMap, in: snapshot)
205
+ docTokens. replaceLexical ( in: range, with: tokens)
206
+ }
203
207
204
- docTokens. replaceLexical ( in: range, with: tokens)
205
- }
208
+ if let substructure: SKDResponseArray = response [ keys. substructure] {
209
+ let tokenParser = SyntaxHighlightingTokenParser ( sourcekitd: sourcekitd, useName: true )
210
+ let tokens = tokenParser. parseTokens ( substructure, in: snapshot)
206
211
207
- if let substructure: SKDResponseArray = response [ keys. substructure] {
208
- let tokenParser = SyntaxHighlightingTokenParser ( sourcekitd: sourcekitd, useName: true )
209
- let tokens = tokenParser. parseTokens ( substructure, in: snapshot)
212
+ docTokens. syntactic = tokens
213
+ }
210
214
211
- docTokens . syntactic = tokens
215
+ return docTokens
212
216
}
213
-
214
- return docTokens
215
217
}
216
218
217
219
/// Updates the semantic tokens for the given `snapshot`.
@@ -237,16 +239,18 @@ public final class SwiftLanguageServer: ToolchainLanguageServer {
237
239
response: SKDResponseDictionary ,
238
240
for snapshot: DocumentSnapshot
239
241
) -> DocumentTokens {
240
- var docTokens = snapshot. tokens
242
+ logExecutionTime ( level: . debug) {
243
+ var docTokens = snapshot. tokens
241
244
242
- if let skTokens: SKDResponseArray = response [ keys. annotations] {
243
- let tokenParser = SyntaxHighlightingTokenParser ( sourcekitd: sourcekitd)
244
- let tokens = tokenParser. parseTokens ( skTokens, in: snapshot)
245
+ if let skTokens: SKDResponseArray = response [ keys. annotations] {
246
+ let tokenParser = SyntaxHighlightingTokenParser ( sourcekitd: sourcekitd)
247
+ let tokens = tokenParser. parseTokens ( skTokens, in: snapshot)
245
248
246
- docTokens. semantic = tokens
247
- }
249
+ docTokens. semantic = tokens
250
+ }
248
251
249
- return docTokens
252
+ return docTokens
253
+ }
250
254
}
251
255
252
256
/// Inform the client about changes to the syntax highlighting tokens.
0 commit comments