Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@
import org.eclipse.lsp4j.RenameOptions;
import org.eclipse.lsp4j.SaveOptions;
import org.eclipse.lsp4j.SelectionRangeRegistrationOptions;
import org.eclipse.lsp4j.SemanticTokensLegend;
import org.eclipse.lsp4j.SemanticTokensWithRegistrationOptions;
import org.eclipse.lsp4j.ServerCapabilities;
import org.eclipse.lsp4j.ServerInfo;
import org.eclipse.lsp4j.TextDocumentClientCapabilities;
Expand Down Expand Up @@ -87,14 +89,15 @@ public class BSLLanguageServer implements LanguageServer, ProtocolExtension {
private final ClientCapabilitiesHolder clientCapabilitiesHolder;
private final ServerContext context;
private final ServerInfo serverInfo;
private final SemanticTokensLegend legend;

private boolean shutdownWasCalled;

@Override
public CompletableFuture<InitializeResult> initialize(InitializeParams params) {

clientCapabilitiesHolder.setCapabilities(params.getCapabilities());

setConfigurationRoot(params);

var factory = new NamedForkJoinWorkerThreadFactory("populate-context-");
Expand Down Expand Up @@ -123,6 +126,7 @@ public CompletableFuture<InitializeResult> initialize(InitializeParams params) {
capabilities.setRenameProvider(getRenameProvider(params));
capabilities.setInlayHintProvider(getInlayHintProvider());
capabilities.setExecuteCommandProvider(getExecuteCommandProvider());
capabilities.setSemanticTokensProvider(getSemanticTokensProvider());

var result = new InitializeResult(capabilities, serverInfo);

Expand Down Expand Up @@ -336,4 +340,12 @@ private ExecuteCommandOptions getExecuteCommandProvider() {
executeCommandOptions.setWorkDoneProgress(Boolean.FALSE);
return executeCommandOptions;
}

private SemanticTokensWithRegistrationOptions getSemanticTokensProvider() {
var semanticTokensProvider = new SemanticTokensWithRegistrationOptions(legend);
semanticTokensProvider.setFull(Boolean.TRUE);
semanticTokensProvider.setRange(Boolean.FALSE);
return semanticTokensProvider;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import com.github._1c_syntax.bsl.languageserver.providers.ReferencesProvider;
import com.github._1c_syntax.bsl.languageserver.providers.RenameProvider;
import com.github._1c_syntax.bsl.languageserver.providers.SelectionRangeProvider;
import com.github._1c_syntax.bsl.languageserver.providers.SemanticTokensProvider;
import com.github._1c_syntax.bsl.languageserver.utils.Ranges;
import jakarta.annotation.PreDestroy;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -86,6 +87,8 @@
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.ReferenceParams;
import org.eclipse.lsp4j.RenameParams;
import org.eclipse.lsp4j.SemanticTokens;
import org.eclipse.lsp4j.SemanticTokensParams;
import org.eclipse.lsp4j.SelectionRange;
import org.eclipse.lsp4j.SelectionRangeParams;
import org.eclipse.lsp4j.SymbolInformation;
Expand Down Expand Up @@ -125,6 +128,7 @@ public class BSLTextDocumentService implements TextDocumentService, ProtocolExte
private final ColorProvider colorProvider;
private final RenameProvider renameProvider;
private final InlayHintProvider inlayHintProvider;
private final SemanticTokensProvider semanticTokensProvider;

private final ExecutorService executorService = Executors.newCachedThreadPool(new CustomizableThreadFactory("text-document-service-"));

Expand Down Expand Up @@ -288,6 +292,18 @@ public CompletableFuture<List<CallHierarchyItem>> prepareCallHierarchy(CallHiera
);
}

@Override
public CompletableFuture<SemanticTokens> semanticTokensFull(SemanticTokensParams params) {
DocumentContext documentContext = context.getDocument(params.getTextDocument().getUri());
if (documentContext == null) {
return CompletableFuture.completedFuture(null);
}

return CompletableFuture.supplyAsync(() -> semanticTokensProvider.getSemanticTokensFull(documentContext, params));
}



@Override
public CompletableFuture<List<CallHierarchyIncomingCall>> callHierarchyIncomingCalls(
CallHierarchyIncomingCallsParams params
Expand Down
Loading
Loading