use of org.eclipse.lsp4j.CompletionOptions in project sts4 by spring-projects.
the class SimpleLanguageServer method getServerCapabilities.
protected final ServerCapabilities getServerCapabilities() {
ServerCapabilities c = new ServerCapabilities();
c.setTextDocumentSync(TextDocumentSyncKind.Incremental);
c.setHoverProvider(true);
CompletionOptions completionProvider = new CompletionOptions();
completionProvider.setResolveProvider(hasLazyCompletionResolver());
c.setCompletionProvider(completionProvider);
if (hasQuickFixes()) {
c.setCodeActionProvider(true);
}
if (hasDefinitionHandler()) {
c.setDefinitionProvider(true);
}
if (hasReferencesHandler()) {
c.setReferencesProvider(true);
}
if (hasDocumentSymbolHandler()) {
c.setDocumentSymbolProvider(true);
}
if (hasDocumentHighlightHandler()) {
c.setDocumentHighlightProvider(true);
}
if (hasCodeLensHandler()) {
CodeLensOptions codeLensOptions = new CodeLensOptions();
codeLensOptions.setResolveProvider(hasCodeLensResolveProvider());
c.setCodeLensProvider(codeLensOptions);
}
if (hasExecuteCommandSupport && hasQuickFixes()) {
c.setExecuteCommandProvider(new ExecuteCommandOptions(ImmutableList.of(CODE_ACTION_COMMAND_ID)));
}
if (hasWorkspaceSymbolHandler()) {
c.setWorkspaceSymbolProvider(true);
}
WorkspaceFoldersOptions workspaceFoldersOptions = new WorkspaceFoldersOptions();
workspaceFoldersOptions.setSupported(true);
workspaceFoldersOptions.setChangeNotifications(WORKSPACE_FOLDERS_CAPABILITY_ID);
WorkspaceServerCapabilities workspaceServerCapabilities = new WorkspaceServerCapabilities();
workspaceServerCapabilities.setWorkspaceFolders(workspaceFoldersOptions);
c.setWorkspace(workspaceServerCapabilities);
return c;
}
use of org.eclipse.lsp4j.CompletionOptions in project vscode-nextgenas by BowlerHatLLC.
the class ActionScriptLanguageServer method initialize.
/**
* Tells Visual Studio Code about the language server's capabilities.
*/
@Override
public CompletableFuture<InitializeResult> initialize(InitializeParams params) {
Path workspaceRoot = Paths.get(params.getRootPath()).toAbsolutePath().normalize();
projectConfigStrategy.setASConfigPath(workspaceRoot.resolve(ASCONFIG_JSON));
textDocumentService.setWorkspaceRoot(workspaceRoot);
InitializeResult result = new InitializeResult();
ServerCapabilities serverCapabilities = new ServerCapabilities();
serverCapabilities.setTextDocumentSync(TextDocumentSyncKind.Incremental);
serverCapabilities.setCodeActionProvider(true);
CompletionOptions completionOptions = new CompletionOptions();
completionOptions.setTriggerCharacters(Arrays.asList(".", ":", " ", "<"));
serverCapabilities.setCompletionProvider(completionOptions);
serverCapabilities.setDefinitionProvider(true);
serverCapabilities.setDocumentSymbolProvider(true);
serverCapabilities.setDocumentHighlightProvider(false);
serverCapabilities.setDocumentRangeFormattingProvider(false);
serverCapabilities.setHoverProvider(true);
serverCapabilities.setReferencesProvider(true);
serverCapabilities.setRenameProvider(true);
SignatureHelpOptions signatureHelpOptions = new SignatureHelpOptions();
signatureHelpOptions.setTriggerCharacters(Arrays.asList("(", ","));
serverCapabilities.setSignatureHelpProvider(signatureHelpOptions);
serverCapabilities.setWorkspaceSymbolProvider(true);
result.setCapabilities(serverCapabilities);
return CompletableFuture.completedFuture(result);
}
use of org.eclipse.lsp4j.CompletionOptions in project eclipse.jdt.ls by eclipse.
the class InitHandler method initialize.
@SuppressWarnings("unchecked")
InitializeResult initialize(InitializeParams param) {
logInfo("Initializing Java Language Server " + JavaLanguageServerPlugin.getVersion());
Map<?, ?> initializationOptions = this.getInitializationOptions(param);
Map<String, Object> extendedClientCapabilities = getInitializationOption(initializationOptions, "extendedClientCapabilities", Map.class);
if (param.getCapabilities() == null) {
preferenceManager.updateClientPrefences(new ClientCapabilities(), extendedClientCapabilities);
} else {
preferenceManager.updateClientPrefences(param.getCapabilities(), extendedClientCapabilities);
}
Collection<IPath> rootPaths = new ArrayList<>();
Collection<String> workspaceFolders = getInitializationOption(initializationOptions, "workspaceFolders", Collection.class);
if (workspaceFolders != null && !workspaceFolders.isEmpty()) {
for (String uri : workspaceFolders) {
IPath filePath = ResourceUtils.filePathFromURI(uri);
if (filePath != null) {
rootPaths.add(filePath);
}
}
} else {
String rootPath = param.getRootUri();
if (rootPath == null) {
rootPath = param.getRootPath();
if (rootPath != null) {
logInfo("In LSP 3.0, InitializeParams.rootPath is deprecated in favour of InitializeParams.rootUri!");
}
}
if (rootPath != null) {
IPath filePath = ResourceUtils.filePathFromURI(rootPath);
if (filePath != null) {
rootPaths.add(filePath);
}
}
}
if (rootPaths.isEmpty()) {
IPath workspaceLocation = ResourcesPlugin.getWorkspace().getRoot().getLocation();
logInfo("No workspace folders or root uri was defined. Falling back on " + workspaceLocation);
rootPaths.add(workspaceLocation);
}
if (initializationOptions.get(SETTINGS_KEY) instanceof Map) {
Object settings = initializationOptions.get(SETTINGS_KEY);
@SuppressWarnings("unchecked") Preferences prefs = Preferences.createFrom((Map<String, Object>) settings);
preferenceManager.update(prefs);
}
triggerInitialization(rootPaths);
addWorkspaceDiagnosticsHandler();
Integer processId = param.getProcessId();
if (processId != null) {
JavaLanguageServerPlugin.getLanguageServer().setParentProcessId(processId.longValue());
}
try {
Collection<String> bundleList = getInitializationOption(initializationOptions, BUNDLES_KEY, Collection.class);
BundleUtils.loadBundles(bundleList);
} catch (CoreException e) {
// The additional plug-ins should not affect the main language server loading.
JavaLanguageServerPlugin.logException("Failed to load extension bundles ", e);
}
InitializeResult result = new InitializeResult();
ServerCapabilities capabilities = new ServerCapabilities();
capabilities.setCompletionProvider(new CompletionOptions(Boolean.TRUE, Arrays.asList(".", "@", "#")));
if (!preferenceManager.getClientPreferences().isFormattingDynamicRegistrationSupported()) {
capabilities.setDocumentFormattingProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isRangeFormattingDynamicRegistrationSupported()) {
capabilities.setDocumentRangeFormattingProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isCodeLensDynamicRegistrationSupported()) {
capabilities.setCodeLensProvider(new CodeLensOptions(true));
}
if (!preferenceManager.getClientPreferences().isSignatureHelpDynamicRegistrationSupported()) {
capabilities.setSignatureHelpProvider(SignatureHelpHandler.createOptions());
}
if (!preferenceManager.getClientPreferences().isRenameDynamicRegistrationSupported()) {
capabilities.setRenameProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isCodeActionDynamicRegistered()) {
capabilities.setCodeActionProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isExecuteCommandDynamicRegistrationSupported()) {
Set<String> commands = WorkspaceExecuteCommandHandler.getCommands();
capabilities.setExecuteCommandProvider(new ExecuteCommandOptions(new ArrayList<>(commands)));
}
if (!preferenceManager.getClientPreferences().isWorkspaceSymbolDynamicRegistered()) {
capabilities.setWorkspaceSymbolProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isDocumentSymbolDynamicRegistered()) {
capabilities.setDocumentSymbolProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isDefinitionDynamicRegistered()) {
capabilities.setDefinitionProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isHoverDynamicRegistered()) {
capabilities.setHoverProvider(Boolean.TRUE);
}
if (!preferenceManager.getClientPreferences().isReferencesDynamicRegistered()) {
capabilities.setReferencesProvider(Boolean.TRUE);
}
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);
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);
result.setCapabilities(capabilities);
return result;
}
use of org.eclipse.lsp4j.CompletionOptions in project xtext-core by eclipse.
the class LanguageServerImpl method createServerCapabilities.
/**
* 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;
FoldingRangeCapabilities folding = null;
if (textDocument != null) {
rename = textDocument.getRename();
folding = textDocument.getFoldingRange();
}
if (folding != null) {
serverCapabilities.setFoldingRangeProvider(allLanguages.stream().anyMatch(serviceProvider -> serviceProvider.get(FoldingRangeService.class) != null));
}
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);
}
for (IResourceServiceProvider language : allLanguages) {
ICapabilitiesContributor capabilitiesContributor = language.get(ICapabilitiesContributor.class);
if (capabilitiesContributor != null) {
capabilitiesContributor.contribute(serverCapabilities, params);
}
}
return serverCapabilities;
}
use of org.eclipse.lsp4j.CompletionOptions in project ballerina by ballerina-lang.
the class BallerinaLanguageServer method initialize.
public CompletableFuture<InitializeResult> initialize(InitializeParams params) {
final InitializeResult res = new InitializeResult(new ServerCapabilities());
final SignatureHelpOptions signatureHelpOptions = new SignatureHelpOptions(Arrays.asList("(", ","));
final List<String> commandList = new ArrayList<>(Arrays.asList(CommandConstants.CMD_IMPORT_PACKAGE, CommandConstants.CMD_ADD_DOCUMENTATION, CommandConstants.CMD_ADD_ALL_DOC));
final ExecuteCommandOptions executeCommandOptions = new ExecuteCommandOptions(commandList);
final CompletionOptions completionOptions = new CompletionOptions();
completionOptions.setTriggerCharacters(Arrays.asList(":", ".", ">"));
res.getCapabilities().setCompletionProvider(completionOptions);
res.getCapabilities().setTextDocumentSync(TextDocumentSyncKind.Full);
res.getCapabilities().setSignatureHelpProvider(signatureHelpOptions);
res.getCapabilities().setHoverProvider(true);
res.getCapabilities().setDocumentSymbolProvider(true);
res.getCapabilities().setDefinitionProvider(true);
res.getCapabilities().setReferencesProvider(true);
res.getCapabilities().setCodeActionProvider(true);
res.getCapabilities().setExecuteCommandProvider(executeCommandOptions);
res.getCapabilities().setDocumentFormattingProvider(true);
res.getCapabilities().setRenameProvider(true);
return CompletableFuture.supplyAsync(() -> res);
}
Aggregations