下面列出了org.eclipse.lsp4j.ClientCapabilities#getWorkspace ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public void initialize(Iterable<? extends IResourceServiceProvider> allLanguages, ClientCapabilities capabilities,
LanguageClient client) {
this.client = client;
this.registeredCommands = HashMultimap.create();
boolean hasDynamicRegistration = false;
WorkspaceClientCapabilities workspace = capabilities.getWorkspace();
if (workspace != null) {
ExecuteCommandCapabilities executeCommandCapabilities = workspace.getExecuteCommand();
if (executeCommandCapabilities != null) {
Boolean dynamicRegistration = executeCommandCapabilities.getDynamicRegistration();
if (dynamicRegistration != null) {
hasDynamicRegistration = dynamicRegistration.booleanValue();
}
}
}
for (IResourceServiceProvider lang : allLanguages) {
IExecutableCommandService service = lang.get(IExecutableCommandService.class);
if (service != null) {
List<String> commands = service.initialize();
for (String c : commands) {
registeredCommands.put(c, service);
}
if (hasDynamicRegistration) {
service.initializeDynamicRegistration((String command) -> {
return register(command, service);
});
}
}
}
}
protected ChangeConverter2(IResourceServiceProvider.Registry registry, WorkspaceEdit edit,
ILanguageServerAccess access, UriExtensions uriExtensions) {
this.registry = registry;
this.uriExtensions = uriExtensions;
this.edit = edit;
this.access = access;
Boolean documentChanges = null;
if (access != null) {
InitializeParams initializeParams = access.getInitializeParams();
if (initializeParams != null) {
ClientCapabilities clientCapabilities = initializeParams.getCapabilities();
if (clientCapabilities != null) {
WorkspaceClientCapabilities workspaceClientCapabilities = clientCapabilities.getWorkspace();
if (workspaceClientCapabilities != null) {
WorkspaceEditCapabilities workspaceEditCapabilities = workspaceClientCapabilities
.getWorkspaceEdit();
if (workspaceEditCapabilities != null) {
documentChanges = workspaceEditCapabilities.getDocumentChanges();
}
}
}
}
}
this.useDocumentChanges = documentChanges == Boolean.TRUE;
if (this.useDocumentChanges) {
this.edit.setDocumentChanges(new ArrayList<>());
} else {
this.edit.setChanges(new LinkedHashMap<>());
}
}
/**
* Configure the server capabilities for this instance.
*
* @param params
* the initialization parameters
* @return the server capabilities
*/
protected ServerCapabilities createServerCapabilities(InitializeParams params) {
ServerCapabilities serverCapabilities = new ServerCapabilities();
serverCapabilities.setHoverProvider(true);
serverCapabilities.setDefinitionProvider(true);
serverCapabilities.setReferencesProvider(true);
serverCapabilities.setDocumentSymbolProvider(true);
serverCapabilities.setWorkspaceSymbolProvider(true);
Set<? extends IResourceServiceProvider> allLanguages = getAllLanguages();
if (allLanguages.stream().anyMatch((serviceProvider) -> serviceProvider.get(ICodeLensService.class) != null)) {
CodeLensOptions codeLensOptions = new CodeLensOptions();
codeLensOptions.setResolveProvider(allLanguages.stream()
.anyMatch((serviceProvider) -> serviceProvider.get(ICodeLensResolver.class) != null));
serverCapabilities.setCodeLensProvider(codeLensOptions);
}
boolean supportsCodeActions = allLanguages.stream()
.anyMatch((serviceProvider) -> serviceProvider.get(ICodeActionService.class) != null
|| serviceProvider.get(ICodeActionService2.class) != null);
if (supportsCodeActions) {
Optional<List<String>> supportedKinds = getSupportedCodeActionKinds();
if (supportedKinds.isPresent()) {
serverCapabilities.setCodeActionProvider(new CodeActionOptions(supportedKinds.get()));
} else {
serverCapabilities.setCodeActionProvider(true);
}
} else {
serverCapabilities.setCodeActionProvider(false);
}
serverCapabilities.setSignatureHelpProvider(new SignatureHelpOptions(ImmutableList.of("(", ",")));
serverCapabilities.setTextDocumentSync(TextDocumentSyncKind.Incremental);
CompletionOptions completionOptions = new CompletionOptions();
completionOptions.setResolveProvider(false);
completionOptions.setTriggerCharacters(ImmutableList.of("."));
serverCapabilities.setCompletionProvider(completionOptions);
serverCapabilities.setDocumentFormattingProvider(true);
serverCapabilities.setDocumentRangeFormattingProvider(true);
serverCapabilities.setDocumentHighlightProvider(true);
ClientCapabilities clientCapabilities = null;
if (params != null) {
clientCapabilities = params.getCapabilities();
}
TextDocumentClientCapabilities textDocument = null;
if (clientCapabilities != null) {
textDocument = clientCapabilities.getTextDocument();
}
RenameCapabilities rename = null;
if (textDocument != null) {
rename = textDocument.getRename();
}
Boolean prepareSupport = null;
if (rename != null) {
prepareSupport = rename.getPrepareSupport();
}
boolean clientPrepareSupport = Objects.equal(Boolean.TRUE, prepareSupport);
if (clientPrepareSupport && allLanguages.stream()
.anyMatch(serviceProvider -> serviceProvider.get(IRenameService2.class) != null)) {
RenameOptions renameOptions = new RenameOptions();
renameOptions.setPrepareProvider(true);
serverCapabilities.setRenameProvider(Either.<Boolean, RenameOptions> forRight(renameOptions));
} else {
serverCapabilities.setRenameProvider(Either.forLeft(allLanguages.stream()
.anyMatch((serviceProvider) -> serviceProvider.get(IRenameService.class) != null
|| serviceProvider.get(IRenameService2.class) != null)));
}
WorkspaceClientCapabilities workspace = null;
if (clientCapabilities != null) {
workspace = clientCapabilities.getWorkspace();
}
ExecuteCommandCapabilities executeCommand = null;
if (workspace != null) {
executeCommand = workspace.getExecuteCommand();
}
if (executeCommand != null) {
commandRegistry.initialize(allLanguages, clientCapabilities, client);
ExecuteCommandOptions executeCommandOptions = new ExecuteCommandOptions();
executeCommandOptions.setCommands(commandRegistry.getCommands());
serverCapabilities.setExecuteCommandProvider(executeCommandOptions);
}
semanticHighlightingRegistry.initialize(allLanguages, clientCapabilities, client);
serverCapabilities.setSemanticHighlighting(new SemanticHighlightingServerCapabilities(
semanticHighlightingRegistry.getAllScopes()));
for (IResourceServiceProvider language : allLanguages) {
ICapabilitiesContributor capabilitiesContributor = language.get(ICapabilitiesContributor.class);
if (capabilitiesContributor != null) {
capabilitiesContributor.contribute(serverCapabilities, params);
}
}
return serverCapabilities;
}
/**
* Configure the server capabilities for this instance.
*
* @param params
* the initialization parametrs
* @return the server capabilities
* @since 2.20
*/
protected ServerCapabilities createServerCapabilities(InitializeParams params) {
ServerCapabilities serverCapabilities = new ServerCapabilities();
serverCapabilities.setHoverProvider(true);
serverCapabilities.setDefinitionProvider(true);
serverCapabilities.setReferencesProvider(true);
serverCapabilities.setDocumentSymbolProvider(true);
serverCapabilities.setWorkspaceSymbolProvider(true);
Set<? extends IResourceServiceProvider> allLanguages = getAllLanguages();
if (allLanguages.stream().anyMatch((serviceProvider) -> serviceProvider.get(ICodeLensService.class) != null)) {
CodeLensOptions codeLensOptions = new CodeLensOptions();
codeLensOptions.setResolveProvider(allLanguages.stream()
.anyMatch((serviceProvider) -> serviceProvider.get(ICodeLensResolver.class) != null));
serverCapabilities.setCodeLensProvider(codeLensOptions);
}
serverCapabilities.setCodeActionProvider(allLanguages.stream()
.anyMatch((serviceProvider) -> serviceProvider.get(ICodeActionService2.class) != null));
serverCapabilities.setSignatureHelpProvider(new SignatureHelpOptions(ImmutableList.of("(", ",")));
serverCapabilities.setTextDocumentSync(TextDocumentSyncKind.Incremental);
CompletionOptions completionOptions = new CompletionOptions();
completionOptions.setResolveProvider(false);
completionOptions.setTriggerCharacters(ImmutableList.of("."));
serverCapabilities.setCompletionProvider(completionOptions);
serverCapabilities.setDocumentFormattingProvider(true);
serverCapabilities.setDocumentRangeFormattingProvider(true);
serverCapabilities.setDocumentHighlightProvider(true);
ClientCapabilities clientCapabilities = null;
if (params != null) {
clientCapabilities = params.getCapabilities();
}
TextDocumentClientCapabilities textDocument = null;
if (clientCapabilities != null) {
textDocument = clientCapabilities.getTextDocument();
}
RenameCapabilities rename = null;
if (textDocument != null) {
rename = textDocument.getRename();
}
Boolean prepareSupport = null;
if (rename != null) {
prepareSupport = rename.getPrepareSupport();
}
boolean clientPrepareSupport = Objects.equal(Boolean.TRUE, prepareSupport);
if (clientPrepareSupport && allLanguages.stream()
.anyMatch(serviceProvider -> serviceProvider.get(IRenameService2.class) != null)) {
RenameOptions renameOptions = new RenameOptions();
renameOptions.setPrepareProvider(true);
serverCapabilities.setRenameProvider(Either.<Boolean, RenameOptions>forRight(renameOptions));
} else {
serverCapabilities.setRenameProvider(Either.forLeft(allLanguages.stream()
.anyMatch((serviceProvider) -> serviceProvider.get(IRenameService2.class) != null)));
}
WorkspaceClientCapabilities workspace = null;
if (clientCapabilities != null) {
workspace = clientCapabilities.getWorkspace();
}
ExecuteCommandCapabilities executeCommand = null;
if (workspace != null) {
executeCommand = workspace.getExecuteCommand();
if (workspace.getWorkspaceFolders() == Boolean.TRUE && workspaceManager.isSupportsWorkspaceFolders()) {
WorkspaceFoldersOptions workspaceFoldersOptions = new WorkspaceFoldersOptions();
workspaceFoldersOptions.setSupported(true);
workspaceFoldersOptions.setChangeNotifications(true);
serverCapabilities.setWorkspace(new WorkspaceServerCapabilities(workspaceFoldersOptions));
}
}
if (executeCommand != null) {
commandRegistry.initialize(allLanguages, clientCapabilities, client);
ExecuteCommandOptions executeCommandOptions = new ExecuteCommandOptions();
executeCommandOptions.setCommands(commandRegistry.getCommands());
serverCapabilities.setExecuteCommandProvider(executeCommandOptions);
}
semanticHighlightingRegistry.initialize(allLanguages, clientCapabilities, client);
serverCapabilities.setSemanticHighlighting(
new SemanticHighlightingServerCapabilities(semanticHighlightingRegistry.getAllScopes()));
for (IResourceServiceProvider language : allLanguages) {
ICapabilitiesContributor capabilitiesContributor = language.get(ICapabilitiesContributor.class);
if (capabilitiesContributor != null) {
capabilitiesContributor.contribute(serverCapabilities, params);
}
}
return serverCapabilities;
}