9898import org .eclipse .lsp4j .SelectionRange ;
9999import org .eclipse .lsp4j .SelectionRangeParams ;
100100import org .eclipse .lsp4j .SemanticTokens ;
101+ import org .eclipse .lsp4j .SemanticTokensDelta ;
102+ import org .eclipse .lsp4j .SemanticTokensDeltaParams ;
101103import org .eclipse .lsp4j .SemanticTokensParams ;
102104import org .eclipse .lsp4j .SymbolInformation ;
103105import org .eclipse .lsp4j .TextDocumentClientCapabilities ;
@@ -176,7 +178,7 @@ private void onDestroy() {
176178
177179 @ Override
178180 public CompletableFuture <@ Nullable Hover > hover (HoverParams params ) {
179- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
181+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
180182 if (documentContext == null ) {
181183 return CompletableFuture .completedFuture (null );
182184 }
@@ -191,7 +193,7 @@ private void onDestroy() {
191193 public CompletableFuture <Either <List <? extends Location >, List <? extends LocationLink >>> definition (
192194 DefinitionParams params
193195 ) {
194- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
196+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
195197 if (documentContext == null ) {
196198 return CompletableFuture .completedFuture (Either .forRight (Collections .emptyList ()));
197199 }
@@ -211,7 +213,7 @@ public CompletableFuture<Either<List<? extends Location>, List<? extends Locatio
211213
212214 @ Override
213215 public CompletableFuture <List <? extends Location >> references (ReferenceParams params ) {
214- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
216+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
215217 if (documentContext == null ) {
216218 return CompletableFuture .completedFuture (Collections .emptyList ());
217219 }
@@ -226,7 +228,7 @@ public CompletableFuture<List<? extends Location>> references(ReferenceParams pa
226228 public CompletableFuture <List <Either <SymbolInformation , DocumentSymbol >>> documentSymbol (
227229 DocumentSymbolParams params
228230 ) {
229- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
231+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
230232 if (documentContext == null ) {
231233 return CompletableFuture .completedFuture (null );
232234 }
@@ -241,7 +243,7 @@ public CompletableFuture<List<Either<SymbolInformation, DocumentSymbol>>> docume
241243
242244 @ Override
243245 public CompletableFuture <List <Either <Command , CodeAction >>> codeAction (CodeActionParams params ) {
244- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
246+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
245247 if (documentContext == null ) {
246248 return CompletableFuture .completedFuture (null );
247249 }
@@ -254,7 +256,7 @@ public CompletableFuture<List<Either<Command, CodeAction>>> codeAction(CodeActio
254256
255257 @ Override
256258 public CompletableFuture <List <? extends CodeLens >> codeLens (CodeLensParams params ) {
257- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
259+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
258260 if (documentContext == null ) {
259261 return CompletableFuture .completedFuture (Collections .emptyList ());
260262 }
@@ -268,7 +270,7 @@ public CompletableFuture<List<? extends CodeLens>> codeLens(CodeLensParams param
268270 @ Override
269271 public CompletableFuture <CodeLens > resolveCodeLens (CodeLens unresolved ) {
270272 var data = codeLensProvider .extractData (unresolved );
271- var documentContext = context .getDocument (data .getUri ());
273+ var documentContext = context .getDocumentUnsafe (data .getUri ());
272274 if (documentContext == null ) {
273275 return CompletableFuture .completedFuture (unresolved );
274276 }
@@ -280,7 +282,7 @@ public CompletableFuture<CodeLens> resolveCodeLens(CodeLens unresolved) {
280282
281283 @ Override
282284 public CompletableFuture <List <? extends TextEdit >> formatting (DocumentFormattingParams params ) {
283- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
285+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
284286 if (documentContext == null ) {
285287 return CompletableFuture .completedFuture (null );
286288 }
@@ -293,7 +295,7 @@ public CompletableFuture<List<? extends TextEdit>> formatting(DocumentFormatting
293295
294296 @ Override
295297 public CompletableFuture <List <? extends TextEdit >> rangeFormatting (DocumentRangeFormattingParams params ) {
296- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
298+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
297299 if (documentContext == null ) {
298300 return CompletableFuture .completedFuture (null );
299301 }
@@ -306,7 +308,7 @@ public CompletableFuture<List<? extends TextEdit>> rangeFormatting(DocumentRange
306308
307309 @ Override
308310 public CompletableFuture <List <FoldingRange >> foldingRange (FoldingRangeRequestParams params ) {
309- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
311+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
310312 if (documentContext == null ) {
311313 return CompletableFuture .completedFuture (null );
312314 }
@@ -320,7 +322,7 @@ public CompletableFuture<List<FoldingRange>> foldingRange(FoldingRangeRequestPar
320322 @ Override
321323 public CompletableFuture <@ Nullable List <CallHierarchyItem >> prepareCallHierarchy (CallHierarchyPrepareParams params ) {
322324 // При возврате пустого списка VSCode падает. По протоколу разрешен возврат null.
323- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
325+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
324326 if (documentContext == null ) {
325327 return CompletableFuture .completedFuture (null );
326328 }
@@ -339,7 +341,7 @@ public CompletableFuture<List<FoldingRange>> foldingRange(FoldingRangeRequestPar
339341
340342 @ Override
341343 public CompletableFuture <SemanticTokens > semanticTokensFull (SemanticTokensParams params ) {
342- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
344+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
343345 if (documentContext == null ) {
344346 return CompletableFuture .completedFuture (null );
345347 }
@@ -350,13 +352,26 @@ public CompletableFuture<SemanticTokens> semanticTokensFull(SemanticTokensParams
350352 );
351353 }
352354
355+ @ Override
356+ public CompletableFuture <Either <SemanticTokens , SemanticTokensDelta >> semanticTokensFullDelta (
357+ SemanticTokensDeltaParams params
358+ ) {
359+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
360+ if (documentContext == null ) {
361+ return CompletableFuture .completedFuture (null );
362+ }
353363
364+ return withFreshDocumentContext (
365+ documentContext ,
366+ () -> semanticTokensProvider .getSemanticTokensFullDelta (documentContext , params )
367+ );
368+ }
354369
355370 @ Override
356371 public CompletableFuture <List <CallHierarchyIncomingCall >> callHierarchyIncomingCalls (
357372 CallHierarchyIncomingCallsParams params
358373 ) {
359- var documentContext = context .getDocument (params .getItem ().getUri ());
374+ var documentContext = context .getDocumentUnsafe (params .getItem ().getUri ());
360375 if (documentContext == null ) {
361376 return CompletableFuture .completedFuture (Collections .emptyList ());
362377 }
@@ -371,7 +386,7 @@ public CompletableFuture<List<CallHierarchyIncomingCall>> callHierarchyIncomingC
371386 public CompletableFuture <List <CallHierarchyOutgoingCall >> callHierarchyOutgoingCalls (
372387 CallHierarchyOutgoingCallsParams params
373388 ) {
374- var documentContext = context .getDocument (params .getItem ().getUri ());
389+ var documentContext = context .getDocumentUnsafe (params .getItem ().getUri ());
375390 if (documentContext == null ) {
376391 return CompletableFuture .completedFuture (Collections .emptyList ());
377392 }
@@ -384,7 +399,7 @@ public CompletableFuture<List<CallHierarchyOutgoingCall>> callHierarchyOutgoingC
384399
385400 @ Override
386401 public CompletableFuture <List <@ Nullable SelectionRange >> selectionRange (SelectionRangeParams params ) {
387- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
402+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
388403 if (documentContext == null ) {
389404 return CompletableFuture .completedFuture (Collections .emptyList ());
390405 }
@@ -397,7 +412,7 @@ public CompletableFuture<List<CallHierarchyOutgoingCall>> callHierarchyOutgoingC
397412
398413 @ Override
399414 public CompletableFuture <List <ColorInformation >> documentColor (DocumentColorParams params ) {
400- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
415+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
401416 if (documentContext == null ) {
402417 return CompletableFuture .completedFuture (Collections .emptyList ());
403418 }
@@ -410,7 +425,7 @@ public CompletableFuture<List<ColorInformation>> documentColor(DocumentColorPara
410425
411426 @ Override
412427 public CompletableFuture <List <ColorPresentation >> colorPresentation (ColorPresentationParams params ) {
413- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
428+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
414429 if (documentContext == null ) {
415430 return CompletableFuture .completedFuture (Collections .emptyList ());
416431 }
@@ -423,7 +438,7 @@ public CompletableFuture<List<ColorPresentation>> colorPresentation(ColorPresent
423438
424439 @ Override
425440 public CompletableFuture <List <InlayHint >> inlayHint (InlayHintParams params ) {
426- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
441+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
427442 if (documentContext == null ) {
428443 return CompletableFuture .completedFuture (Collections .emptyList ());
429444 }
@@ -459,7 +474,7 @@ public void didOpen(DidOpenTextDocumentParams params) {
459474
460475 @ Override
461476 public void didChange (DidChangeTextDocumentParams params ) {
462- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
477+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
463478 if (documentContext == null ) {
464479 return ;
465480 }
@@ -486,7 +501,7 @@ public void didChange(DidChangeTextDocumentParams params) {
486501
487502 @ Override
488503 public void didClose (DidCloseTextDocumentParams params ) {
489- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
504+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
490505 if (documentContext == null ) {
491506 return ;
492507 }
@@ -515,7 +530,7 @@ public void didClose(DidCloseTextDocumentParams params) {
515530
516531 @ Override
517532 public void didSave (DidSaveTextDocumentParams params ) {
518- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
533+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
519534 if (documentContext == null ) {
520535 return ;
521536 }
@@ -527,7 +542,7 @@ public void didSave(DidSaveTextDocumentParams params) {
527542
528543 @ Override
529544 public CompletableFuture <List <DocumentLink >> documentLink (DocumentLinkParams params ) {
530- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
545+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
531546 if (documentContext == null ) {
532547 return CompletableFuture .completedFuture (null );
533548 }
@@ -540,7 +555,7 @@ public CompletableFuture<List<DocumentLink>> documentLink(DocumentLinkParams par
540555
541556 @ Override
542557 public CompletableFuture <Diagnostics > diagnostics (DiagnosticParams params ) {
543- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
558+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
544559 if (documentContext == null ) {
545560 return CompletableFuture .completedFuture (Diagnostics .EMPTY );
546561 }
@@ -563,7 +578,7 @@ public CompletableFuture<Diagnostics> diagnostics(DiagnosticParams params) {
563578
564579 @ Override
565580 public CompletableFuture <DocumentDiagnosticReport > diagnostic (DocumentDiagnosticParams params ) {
566- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
581+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
567582 if (documentContext == null ) {
568583 return CompletableFuture .completedFuture (
569584 new DocumentDiagnosticReport (new RelatedFullDocumentDiagnosticReport (Collections .emptyList ()))
@@ -578,7 +593,7 @@ public CompletableFuture<DocumentDiagnosticReport> diagnostic(DocumentDiagnostic
578593
579594 @ Override
580595 public CompletableFuture <Either3 <Range , PrepareRenameResult , PrepareRenameDefaultBehavior >> prepareRename (PrepareRenameParams params ) {
581- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
596+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
582597 if (documentContext == null ) {
583598 return CompletableFuture .completedFuture (null );
584599 }
@@ -591,7 +606,7 @@ public CompletableFuture<Either3<Range, PrepareRenameResult, PrepareRenameDefaul
591606
592607 @ Override
593608 public CompletableFuture <WorkspaceEdit > rename (RenameParams params ) {
594- var documentContext = context .getDocument (params .getTextDocument ().getUri ());
609+ var documentContext = context .getDocumentUnsafe (params .getTextDocument ().getUri ());
595610 if (documentContext == null ) {
596611 return CompletableFuture .completedFuture (null );
597612 }
0 commit comments