CRON inlay-hints on/off setting

This commit is contained in:
aboyko
2024-10-15 12:54:26 -04:00
parent c3a45e7647
commit 67eacaef00
9 changed files with 36 additions and 6 deletions

View File

@@ -84,6 +84,10 @@ public class BootJavaConfig implements InitializingBean {
return enabled != null && enabled.booleanValue();
}
public boolean isCronInlayHintsEnabled() {
return Boolean.TRUE.equals(settings.getBoolean("boot-java", "cron", "inlay-hints"));
}
public boolean isShowingAllJvmProcesses() {
Boolean isAll = settings.getBoolean("boot-java", "live-information", "all-local-java-processes");
return isAll != null && isAll.booleanValue();

View File

@@ -163,7 +163,7 @@ public class BootLanguageServerInitializer implements InitializingBean {
components.getSemanticTokensHandler().ifPresent(documents::onSemanticTokens);
startListeningToPerformReconcile();
startListening();
server.onCommand("sts/show/document", p -> {
ShowDocumentParams showDocParams = new Gson().fromJson((JsonElement)p.getArguments().get(0), ShowDocumentParams.class);
@@ -184,7 +184,7 @@ public class BootLanguageServerInitializer implements InitializingBean {
}
private void startListeningToPerformReconcile() {
private void startListening() {
components.getReconcileEngine().ifPresent(reconcileEngine -> {
server.getTextDocumentService().onDidChangeContent(params -> {
TextDocument doc = params.getDocument();
@@ -193,7 +193,10 @@ public class BootLanguageServerInitializer implements InitializingBean {
// ServerUtils.listenToClassFileChanges(server.getWorkspaceService().getFileObserver(), projectFinder, project -> validateAll(components, server, project));
});
config.addListener(evt -> reconcile());
config.addListener(evt -> {
server.getClient().refreshInlayHints();
reconcile();
});
params.projectObserver.addListener(reconcileDocumentsForProjectChange(server, components, params.projectFinder));
// // TODO: index update even happens on every file save. Very expensive to blindly reconcile all projects.

View File

@@ -140,8 +140,8 @@ public class JdtConfig {
return new JdtDataQueriesInlayHintsProvider(semanticTokensProvider);
}
@Bean CronExpressionsInlayHintsProvider cronExpressionsInlayHintsProvider() {
return new CronExpressionsInlayHintsProvider();
@Bean CronExpressionsInlayHintsProvider cronExpressionsInlayHintsProvider(BootJavaConfig config) {
return new CronExpressionsInlayHintsProvider(config);
}
@Bean JdtQueryDocHighlightsProvider jdtDocHighlightsProvider(JdtDataQuerySemanticTokensProvider semanticTokensProvider) {

View File

@@ -26,6 +26,7 @@ import org.eclipse.lsp4j.InlayHintKind;
import org.eclipse.lsp4j.jsonrpc.messages.Either;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ide.vscode.boot.app.BootJavaConfig;
import org.springframework.ide.vscode.boot.java.Annotations;
import org.springframework.ide.vscode.boot.java.JdtInlayHintsProvider;
import org.springframework.ide.vscode.commons.java.IJavaProject;
@@ -46,12 +47,18 @@ public class CronExpressionsInlayHintsProvider implements JdtInlayHintsProvider
private static final String SCHEDULED = "Scheduled";
private final BootJavaConfig config;
public record EmbeddedCronExpression(Expression expression, String text, int offset) {
};
public CronExpressionsInlayHintsProvider(BootJavaConfig config) {
this.config = config;
}
@Override
public boolean isApplicable(IJavaProject project) {
return true;
return config.isCronInlayHintsEnabled();
}
@Override