|
71 | 71 | import org.springframework.ide.vscode.commons.languageserver.util.DocumentHighlightHandler;
|
72 | 72 | import org.springframework.ide.vscode.commons.languageserver.util.DocumentSymbolHandler;
|
73 | 73 | import org.springframework.ide.vscode.commons.languageserver.util.HoverHandler;
|
| 74 | +import org.springframework.ide.vscode.commons.languageserver.util.InlayHintHandler; |
74 | 75 | import org.springframework.ide.vscode.commons.languageserver.util.ReferencesHandler;
|
75 | 76 | import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
|
76 | 77 | import org.springframework.ide.vscode.commons.languageserver.util.SimpleTextDocumentService;
|
@@ -116,6 +117,7 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent
|
116 | 117 | private BootJavaCodeActionProvider codeActionProvider;
|
117 | 118 | private DocumentSymbolHandler docSymbolProvider;
|
118 | 119 | private JdtSemanticTokensHandler semanticTokensHandler;
|
| 120 | + private JdtInlayHintsHandler inlayHintsHandler; |
119 | 121 |
|
120 | 122 | public BootJavaLanguageServerComponents(ApplicationContext appContext) {
|
121 | 123 | this.server = appContext.getBean(SimpleLanguageServer.class);
|
@@ -176,14 +178,19 @@ public BootJavaLanguageServerComponents(ApplicationContext appContext) {
|
176 | 178 |
|
177 | 179 | codeLensHandler = createCodeLensEngine(springSymbolIndex, projectFinder, server);
|
178 | 180 |
|
179 |
| - highlightsEngine = createDocumentHighlightEngine(springSymbolIndex); |
| 181 | + highlightsEngine = createDocumentHighlightEngine(appContext); |
180 | 182 | documents.onDocumentHighlight(highlightsEngine);
|
181 | 183 |
|
182 | 184 | Map<String, JdtSemanticTokensProvider> jdtSemanticTokensProviders = appContext.getBeansOfType(JdtSemanticTokensProvider.class);
|
183 | 185 | if (!jdtSemanticTokensProviders.isEmpty()) {
|
184 | 186 | semanticTokensHandler = new JdtSemanticTokensHandler(cuCache, projectFinder, jdtSemanticTokensProviders.values());
|
185 | 187 | }
|
186 | 188 |
|
| 189 | + Map<String, JdtInlayHintsProvider> jdtInlayHintsProviders = appContext.getBeansOfType(JdtInlayHintsProvider.class); |
| 190 | + if (!jdtSemanticTokensProviders.isEmpty()) { |
| 191 | + inlayHintsHandler = new JdtInlayHintsHandler(cuCache, projectFinder, jdtInlayHintsProviders.values()); |
| 192 | + } |
| 193 | + |
187 | 194 | config.addListener(ignore -> {
|
188 | 195 | log.info("update live process tracker settings - start");
|
189 | 196 |
|
@@ -313,9 +320,14 @@ protected BootJavaCodeLensEngine createCodeLensEngine(SpringSymbolIndex index, J
|
313 | 320 | return new BootJavaCodeLensEngine(this, codeLensProvider);
|
314 | 321 | }
|
315 | 322 |
|
316 |
| - protected BootJavaDocumentHighlightEngine createDocumentHighlightEngine(SpringSymbolIndex indexer) { |
| 323 | + protected BootJavaDocumentHighlightEngine createDocumentHighlightEngine(ApplicationContext appContext) { |
317 | 324 | Collection<HighlightProvider> highlightProvider = new ArrayList<>();
|
318 |
| - highlightProvider.add(new WebfluxRouteHighlightProdivder(indexer)); |
| 325 | + highlightProvider.add(new WebfluxRouteHighlightProdivder(appContext.getBean(SpringSymbolIndex.class))); |
| 326 | + |
| 327 | + Map<String, JdtAstDocHighlightsProvider> astHighlightProviders = appContext.getBeansOfType(JdtAstDocHighlightsProvider.class); |
| 328 | + if (!astHighlightProviders.isEmpty()) { |
| 329 | + highlightProvider.add(new JdtDocHighlightsProvider(projectFinder, cuCache, astHighlightProviders.values())); |
| 330 | + } |
319 | 331 |
|
320 | 332 | return new BootJavaDocumentHighlightEngine(this, highlightProvider);
|
321 | 333 | }
|
@@ -359,5 +371,10 @@ public Optional<SemanticTokensHandler> getSemanticTokensHandler() {
|
359 | 371 | return Optional.ofNullable(semanticTokensHandler);
|
360 | 372 | }
|
361 | 373 |
|
| 374 | + @Override |
| 375 | + public Optional<InlayHintHandler> getInlayHintHandler() { |
| 376 | + return Optional.ofNullable(inlayHintsHandler); |
| 377 | + } |
| 378 | + |
362 | 379 |
|
363 | 380 | }
|
0 commit comments