use of org.eclipse.lsp4j.SemanticTokensWithRegistrationOptions in project eclipse.jdt.ls by eclipse.
the class InitHandler method registerCapabilities.
@Override
public void registerCapabilities(InitializeResult initializeResult) {
ServerCapabilities capabilities = new ServerCapabilities();
if (!preferenceManager.getClientPreferences().isCompletionDynamicRegistered()) {
capabilities.setCompletionProvider(CompletionHandler.DEFAULT_COMPLETION_OPTIONS);
}
if (!preferenceManager.getClientPreferences().isFormattingDynamicRegistrationSupported()) {
capabilities.setDocumentFormattingProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isRangeFormattingDynamicRegistrationSupported()) {
capabilities.setDocumentRangeFormattingProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isOnTypeFormattingDynamicRegistrationSupported()) {
capabilities.setDocumentOnTypeFormattingProvider(new DocumentOnTypeFormattingOptions(";", Arrays.asList("\n", "}")));
}
if (!preferenceManager.getClientPreferences().isCodeLensDynamicRegistrationSupported()) {
capabilities.setCodeLensProvider(new CodeLensOptions(true));
}
if (!preferenceManager.getClientPreferences().isSignatureHelpDynamicRegistrationSupported()) {
capabilities.setSignatureHelpProvider(SignatureHelpHandler.createOptions());
}
if (!preferenceManager.getClientPreferences().isRenameDynamicRegistrationSupported()) {
capabilities.setRenameProvider(RenameHandler.createOptions());
}
if (!preferenceManager.getClientPreferences().isCodeActionDynamicRegistered()) {
if (preferenceManager.getClientPreferences().isResolveCodeActionSupported()) {
CodeActionOptions codeActionOptions = new CodeActionOptions();
codeActionOptions.setResolveProvider(Boolean.TRUE);
capabilities.setCodeActionProvider(codeActionOptions);
} else {
capabilities.setCodeActionProvider(Boolean.TRUE);
}
}
if (!preferenceManager.getClientPreferences().isExecuteCommandDynamicRegistrationSupported()) {
Set<String> commands = commandHandler.getAllCommands();
if (!commands.isEmpty()) {
capabilities.setExecuteCommandProvider(new ExecuteCommandOptions(new ArrayList<>(commands)));
}
} else {
// Send static command at the startup - they remain registered all the time
Set<String> staticCommands = commandHandler.getStaticCommands();
if (!staticCommands.isEmpty()) {
capabilities.setExecuteCommandProvider(new ExecuteCommandOptions(new ArrayList<>(staticCommands)));
}
}
if (!preferenceManager.getClientPreferences().isWorkspaceSymbolDynamicRegistered()) {
capabilities.setWorkspaceSymbolProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isClientDocumentSymbolProviderRegistered() && !preferenceManager.getClientPreferences().isDocumentSymbolDynamicRegistered()) {
capabilities.setDocumentSymbolProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isDefinitionDynamicRegistered()) {
capabilities.setDefinitionProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isTypeDefinitionDynamicRegistered()) {
capabilities.setTypeDefinitionProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isClientHoverProviderRegistered() && !preferenceManager.getClientPreferences().isHoverDynamicRegistered()) {
capabilities.setHoverProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isReferencesDynamicRegistered()) {
capabilities.setReferencesProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isDocumentHighlightDynamicRegistered()) {
capabilities.setDocumentHighlightProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isFoldgingRangeDynamicRegistered()) {
capabilities.setFoldingRangeProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isImplementationDynamicRegistered()) {
capabilities.setImplementationProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isSelectionRangeDynamicRegistered()) {
capabilities.setSelectionRangeProvider(Boolean.TRUE);
}
capabilities.setCallHierarchyProvider(Boolean.TRUE);
TextDocumentSyncOptions textDocumentSyncOptions = new TextDocumentSyncOptions();
textDocumentSyncOptions.setOpenClose(Boolean.TRUE);
textDocumentSyncOptions.setSave(new SaveOptions(Boolean.TRUE));
textDocumentSyncOptions.setChange(TextDocumentSyncKind.Incremental);
if (preferenceManager.getClientPreferences().isWillSaveRegistered()) {
textDocumentSyncOptions.setWillSave(Boolean.TRUE);
}
if (preferenceManager.getClientPreferences().isWillSaveWaitUntilRegistered()) {
textDocumentSyncOptions.setWillSaveWaitUntil(Boolean.TRUE);
}
capabilities.setTextDocumentSync(textDocumentSyncOptions);
WorkspaceServerCapabilities wsCapabilities = new WorkspaceServerCapabilities();
WorkspaceFoldersOptions wsFoldersOptions = new WorkspaceFoldersOptions();
wsFoldersOptions.setSupported(Boolean.TRUE);
wsFoldersOptions.setChangeNotifications(Boolean.TRUE);
wsCapabilities.setWorkspaceFolders(wsFoldersOptions);
capabilities.setWorkspace(wsCapabilities);
SemanticTokensWithRegistrationOptions semanticTokensOptions = new SemanticTokensWithRegistrationOptions();
semanticTokensOptions.setFull(new SemanticTokensServerFull(false));
semanticTokensOptions.setRange(false);
semanticTokensOptions.setDocumentSelector(List.of(new DocumentFilter("java", "file", null), new DocumentFilter("java", "jdt", null)));
semanticTokensOptions.setLegend(SemanticTokensHandler.legend());
capabilities.setSemanticTokensProvider(semanticTokensOptions);
initializeResult.setCapabilities(capabilities);
}
use of org.eclipse.lsp4j.SemanticTokensWithRegistrationOptions in project eclipse.jdt.ls by eclipse.
the class SyntaxInitHandler method registerCapabilities.
@Override
public void registerCapabilities(InitializeResult initializeResult) {
ServerCapabilities capabilities = new ServerCapabilities();
if (!preferenceManager.getClientPreferences().isClientDocumentSymbolProviderRegistered() && !preferenceManager.getClientPreferences().isDocumentSymbolDynamicRegistered()) {
capabilities.setDocumentSymbolProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isDefinitionDynamicRegistered()) {
capabilities.setDefinitionProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isTypeDefinitionDynamicRegistered()) {
capabilities.setTypeDefinitionProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isFoldgingRangeDynamicRegistered()) {
capabilities.setFoldingRangeProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isSelectionRangeDynamicRegistered()) {
capabilities.setSelectionRangeProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isHoverDynamicRegistered()) {
capabilities.setHoverProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isCompletionDynamicRegistered()) {
capabilities.setCompletionProvider(CompletionHandler.DEFAULT_COMPLETION_OPTIONS);
}
if (!preferenceManager.getClientPreferences().isDocumentHighlightDynamicRegistered()) {
capabilities.setDocumentHighlightProvider(Boolean.TRUE);
}
TextDocumentSyncOptions textDocumentSyncOptions = new TextDocumentSyncOptions();
textDocumentSyncOptions.setOpenClose(Boolean.TRUE);
textDocumentSyncOptions.setSave(new SaveOptions(Boolean.TRUE));
textDocumentSyncOptions.setChange(TextDocumentSyncKind.Incremental);
capabilities.setTextDocumentSync(textDocumentSyncOptions);
WorkspaceServerCapabilities wsCapabilities = new WorkspaceServerCapabilities();
WorkspaceFoldersOptions wsFoldersOptions = new WorkspaceFoldersOptions();
wsFoldersOptions.setSupported(Boolean.TRUE);
wsFoldersOptions.setChangeNotifications(Boolean.TRUE);
wsCapabilities.setWorkspaceFolders(wsFoldersOptions);
capabilities.setWorkspace(wsCapabilities);
SemanticTokensWithRegistrationOptions semanticTokensOptions = new SemanticTokensWithRegistrationOptions();
semanticTokensOptions.setFull(new SemanticTokensServerFull(false));
semanticTokensOptions.setRange(false);
semanticTokensOptions.setDocumentSelector(List.of(new DocumentFilter("java", "file", null), new DocumentFilter("java", "jdt", null)));
semanticTokensOptions.setLegend(SemanticTokensHandler.legend());
capabilities.setSemanticTokensProvider(semanticTokensOptions);
initializeResult.setCapabilities(capabilities);
}
use of org.eclipse.lsp4j.SemanticTokensWithRegistrationOptions in project OberonEmulator by schierlm.
the class Server method fillCapabilities.
protected void fillCapabilities(ServerCapabilities cap, InitializeParams params) {
cap.setTextDocumentSync(TextDocumentSyncKind.Full);
cap.setSemanticTokensProvider(new SemanticTokensWithRegistrationOptions(new SemanticTokensLegend(Bridge.TOKEN_TYPES, Bridge.TOKEN_MODIFIERS), new SemanticTokensServerFull(false), false));
cap.setDocumentSymbolProvider(new DocumentSymbolOptions("Oberon"));
cap.setCompletionProvider(new CompletionOptions(false, null));
cap.setDefinitionProvider(true);
cap.setDocumentHighlightProvider(true);
cap.setReferencesProvider(true);
cap.setLinkedEditingRangeProvider(true);
cap.setSignatureHelpProvider(new SignatureHelpOptions(Arrays.asList("("), Arrays.asList(",", ")")));
cap.setFoldingRangeProvider(true);
cap.setHoverProvider(true);
cap.setRenameProvider(new RenameOptions(true));
cap.setDocumentFormattingProvider(true);
cap.setCallHierarchyProvider(true);
CodeActionOptions cao = new CodeActionOptions(Arrays.asList(CodeActionKind.QuickFix));
cao.setResolveProvider(true);
cap.setCodeActionProvider(cao);
}
use of org.eclipse.lsp4j.SemanticTokensWithRegistrationOptions in project magik-tools by StevenLooman.
the class SemanticTokenProvider method setCapabilities.
/**
* Set server capabilities.
* @param capabilities Server capabilities.
*/
public void setCapabilities(final ServerCapabilities capabilities) {
final SemanticTokensWithRegistrationOptions semanticTokensProvider = new SemanticTokensWithRegistrationOptions(SemanticTokenProvider.LEGEND);
semanticTokensProvider.setFull(true);
semanticTokensProvider.setRange(false);
semanticTokensProvider.setDocumentSelector(List.of(new DocumentFilter("magik", "file", null)));
capabilities.setSemanticTokensProvider(semanticTokensProvider);
}
use of org.eclipse.lsp4j.SemanticTokensWithRegistrationOptions in project lxtk by lxtk-org.
the class DocumentSemanticTokensFeature method registerLanguageFeatureProvider.
@Override
Disposable registerLanguageFeatureProvider(String method, SemanticTokensWithRegistrationOptions options) {
EventEmitter<Void> onDidChangeSemanticTokens = new EventEmitter<>();
return SafeRun.runWithResult(rollback -> {
Disposable registration = getLanguageService().getDocumentSemanticTokensProviders().add(new DocumentSemanticTokensProvider() {
@Override
public SemanticTokensWithRegistrationOptions getRegistrationOptions() {
return options;
}
@Override
public ProgressService getProgressService() {
return getLanguageClient().getProgressService();
}
@Override
public CompletableFuture<SemanticTokens> getDocumentSemanticTokens(SemanticTokensParams params) {
Either<Boolean, SemanticTokensServerFull> full = options.getFull();
if (full == null || !(full.isRight() || Boolean.TRUE.equals(full.getLeft())))
throw new UnsupportedOperationException();
return getLanguageServer().getTextDocumentService().semanticTokensFull(params);
}
@Override
public CompletableFuture<Either<SemanticTokens, SemanticTokensDelta>> getDocumentSemanticTokensDelta(SemanticTokensDeltaParams params) {
Either<Boolean, SemanticTokensServerFull> full = options.getFull();
if (full == null || !(full.isRight() && Boolean.TRUE.equals(full.getRight().getDelta())))
throw new UnsupportedOperationException();
return getLanguageServer().getTextDocumentService().semanticTokensFullDelta(params);
}
@Override
public CompletableFuture<SemanticTokens> getDocumentRangeSemanticTokens(SemanticTokensRangeParams params) {
Either<Boolean, Object> range = options.getRange();
if (range == null || !(range.isRight() || Boolean.TRUE.equals(range.getLeft())))
throw new UnsupportedOperationException();
return getLanguageServer().getTextDocumentService().semanticTokensRange(params);
}
@Override
public EventStream<Void> onDidChangeSemanticTokens() {
return onDidChangeSemanticTokens;
}
});
rollback.add(registration::dispose);
Disposable subscription = getLanguageClient().onDidChangeSemanticTokens().subscribe(e -> onDidChangeSemanticTokens.emit(e, getLogger()));
rollback.add(subscription::dispose);
rollback.setLogger(getLogger());
return rollback::run;
});
}
Aggregations