[lsp] updated to 0.2.0 of ls-api.

This commit is contained in:
Sven Efftinge 2016-05-29 21:34:40 +02:00
parent e28969fdab
commit 2108e8c41a
12 changed files with 54 additions and 47 deletions

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="xtend-gen"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -10,7 +10,8 @@ Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.xtext;visibility:=reexport,
org.eclipse.xtend.lib,
org.eclipse.core.runtime;bundle-version="3.6.0",
io.typefox.lsapi;bundle-version="0.1.0";resolution:=optional
io.typefox.lsapi;resolution:=optional,
io.typefox.lsapi.services
Import-Package: org.apache.log4j;version="1.2.15"
Export-Package: org.eclipse.xtext.ide;x-friends:="org.eclipse.xtend.ide",
org.eclipse.xtext.ide.editor.bracketmatching;x-friends:="org.eclipse.xtend.ide.common,org.eclipse.xtend.ide",

View file

@ -14,6 +14,8 @@ import io.typefox.lsapi.CodeLens
import io.typefox.lsapi.CodeLensParams
import io.typefox.lsapi.CompletionItem
import io.typefox.lsapi.CompletionItemImpl
import io.typefox.lsapi.CompletionList
import io.typefox.lsapi.CompletionListImpl
import io.typefox.lsapi.CompletionOptionsImpl
import io.typefox.lsapi.Diagnostic
import io.typefox.lsapi.DiagnosticImpl
@ -31,10 +33,8 @@ import io.typefox.lsapi.FileEvent
import io.typefox.lsapi.InitializeParams
import io.typefox.lsapi.InitializeResult
import io.typefox.lsapi.InitializeResultImpl
import io.typefox.lsapi.LanguageServer
import io.typefox.lsapi.Location
import io.typefox.lsapi.MessageParams
import io.typefox.lsapi.NotificationCallback
import io.typefox.lsapi.PublishDiagnosticsParams
import io.typefox.lsapi.PublishDiagnosticsParamsImpl
import io.typefox.lsapi.RangeImpl
@ -45,11 +45,14 @@ import io.typefox.lsapi.ServerCapabilitiesImpl
import io.typefox.lsapi.ShowMessageRequestParams
import io.typefox.lsapi.SymbolInformation
import io.typefox.lsapi.TextDocumentPositionParams
import io.typefox.lsapi.TextDocumentService
import io.typefox.lsapi.WindowService
import io.typefox.lsapi.WorkspaceService
import io.typefox.lsapi.WorkspaceSymbolParams
import io.typefox.lsapi.services.LanguageServer
import io.typefox.lsapi.services.TextDocumentService
import io.typefox.lsapi.services.WindowService
import io.typefox.lsapi.services.WorkspaceService
import java.util.List
import java.util.concurrent.CompletableFuture
import java.util.function.Consumer
import org.eclipse.emf.common.util.URI
import org.eclipse.xtend.lib.annotations.Accessors
import org.eclipse.xtext.ide.editor.contentassist.ContentAssistEntry
@ -78,7 +81,7 @@ import static io.typefox.lsapi.util.LsapiFactories.*
@Inject extension UriExtensions
@Inject extension IResourceServiceProvider.Registry languagesRegistry
override InitializeResult initialize(InitializeParams params) {
override CompletableFuture<InitializeResult> initialize(InitializeParams params) {
if (params.rootPath === null) {
throw new IllegalArgumentException("Bad initialization request. rootPath must not be null.")
}
@ -103,7 +106,7 @@ import static io.typefox.lsapi.util.LsapiFactories.*
workspaceManager.initialize(rootURI, [this.publishDiagnostics($0, $1)], cancelIndicator)
], CancellableIndicator.NullImpl)
return result
return CompletableFuture.completedFuture(result)
}
override exit() {
@ -112,28 +115,28 @@ import static io.typefox.lsapi.util.LsapiFactories.*
override void shutdown() {
}
override getTextDocumentService() {
this
override TextDocumentService getTextDocumentService() {
return this
}
override getWorkspaceService() {
this
override WorkspaceService getWorkspaceService() {
return this
}
override getWindowService() {
this
override WindowService getWindowService() {
return this
}
// notification callbacks
override onShowMessage(NotificationCallback<MessageParams> callback) {
override onShowMessage(Consumer<MessageParams> callback) {
// TODO: auto-generated method stub
}
override onShowMessageRequest(NotificationCallback<ShowMessageRequestParams> callback) {
override onShowMessageRequest(Consumer<ShowMessageRequestParams> callback) {
// TODO: auto-generated method stub
}
override onLogMessage(NotificationCallback<MessageParams> callback) {
override onLogMessage(Consumer<MessageParams> callback) {
// TODO: auto-generated method stub
}
@ -182,11 +185,11 @@ import static io.typefox.lsapi.util.LsapiFactories.*
// end file/content change events
// validation stuff
private List<NotificationCallback<PublishDiagnosticsParams>> diagnosticListeners = newArrayList()
private List<Consumer<PublishDiagnosticsParams>> diagnosticListeners = newArrayList()
WorkspaceResourceAccess resourceAccess
override onPublishDiagnostics(NotificationCallback<PublishDiagnosticsParams> callback) {
override onPublishDiagnostics(Consumer<PublishDiagnosticsParams> callback) {
diagnosticListeners.add(callback)
}
@ -196,7 +199,7 @@ import static io.typefox.lsapi.util.LsapiFactories.*
it.diagnostics = issues.map[toDiagnostic].toList
]
for (diagnosticsCallback : diagnosticListeners) {
diagnosticsCallback.call(diagnostics)
diagnosticsCallback.accept(diagnostics)
}
}
@ -219,23 +222,25 @@ import static io.typefox.lsapi.util.LsapiFactories.*
// end validation stuff
// completion stuff
override completion(TextDocumentPositionParams params) {
override CompletableFuture<CompletionList> completion(TextDocumentPositionParams params) {
return requestManager.runRead[ cancelIndicator |
val uri = params.textDocument.uri.toUri
val resourceServiceProvider = uri.resourceServiceProvider
val contentAssistService = resourceServiceProvider?.get(ContentAssistService)
val result = new CompletionListImpl
if (contentAssistService === null)
return emptyList
return result
val entries = workspaceManager.doRead(uri) [ document, resource |
val offset = document.getOffSet(params.position)
return contentAssistService.createProposals(document.contents, offset, resource, cancelIndicator)
]
return entries.map[toCompletionItem].toList
].get
result.items = entries.map[toCompletionItem].toList
return result
]
}
protected def CompletionItem toCompletionItem(ContentAssistEntry entry) {
protected def CompletionItemImpl toCompletionItem(ContentAssistEntry entry) {
val completionItem = new CompletionItemImpl
completionItem.label = entry.label ?: entry.proposal
completionItem.detail = entry.description
@ -258,7 +263,7 @@ import static io.typefox.lsapi.util.LsapiFactories.*
return documentSymbolService.getDefinitions(resource, offset, resourceAccess, cancelIndicator)
]
return definitions
].get
]
}
override references(ReferenceParams params) {
@ -282,7 +287,7 @@ import static io.typefox.lsapi.util.LsapiFactories.*
val result = definitions + references
return result.toList
]
].get
]
}
override documentSymbol(DocumentSymbolParams params) {
@ -296,7 +301,7 @@ import static io.typefox.lsapi.util.LsapiFactories.*
return workspaceManager.doRead(uri) [ document, resource |
return documentSymbolService.getSymbols(resource, cancelIndicator)
]
].get
]
}
// end symbols
@ -309,7 +314,7 @@ import static io.typefox.lsapi.util.LsapiFactories.*
}
override resolveCompletionItem(CompletionItem unresolved) {
return unresolved
return CompletableFuture.completedFuture(unresolved)
}
override hover(TextDocumentPositionParams position) {
@ -333,7 +338,7 @@ import static io.typefox.lsapi.util.LsapiFactories.*
}
override resolveCodeLens(CodeLens unresolved) {
return unresolved
return CompletableFuture.completedFuture(unresolved)
}
override formatting(DocumentFormattingParams params) {

View file

@ -10,13 +10,13 @@ package org.eclipse.xtext.ide.server
import com.google.inject.Guice
import com.google.inject.Inject
import io.typefox.lsapi.NotificationMessage
import io.typefox.lsapi.json.LanguageServerToJsonAdapter
import io.typefox.lsapi.json.MessageMethods
import io.typefox.lsapi.services.json.LanguageServerToJsonAdapter
import io.typefox.lsapi.services.json.MessageMethods
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
import java.io.FileOutputStream
import java.io.PrintStream
import java.util.concurrent.atomic.AtomicBoolean
import java.io.ByteArrayOutputStream
/**
* @author Sven Efftinge - Initial contribution and API

View file

@ -9,7 +9,7 @@ package org.eclipse.xtext.ide.server
import com.google.inject.AbstractModule
import com.google.inject.name.Names
import io.typefox.lsapi.LanguageServer
import io.typefox.lsapi.services.LanguageServer
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
import org.eclipse.xtext.ide.server.concurrent.RequestManager

View file

@ -12,5 +12,6 @@ Require-Bundle: org.eclipse.xtext;visibility:=reexport,
org.eclipse.core.runtime;bundle-version="3.6.0",
org.eclipse.xtext.ide,
org.junit;bundle-version="4.11.0",
io.typefox.lsapi;bundle-version="0.1.0"
io.typefox.lsapi,
io.typefox.lsapi.services
Import-Package: org.apache.log4j;version="1.2.15"

View file

@ -15,7 +15,6 @@ import io.typefox.lsapi.DidOpenTextDocumentParamsImpl
import io.typefox.lsapi.InitializeParamsImpl
import io.typefox.lsapi.InitializeResult
import io.typefox.lsapi.Location
import io.typefox.lsapi.NotificationCallback
import io.typefox.lsapi.Position
import io.typefox.lsapi.PublishDiagnosticsParams
import io.typefox.lsapi.Range
@ -29,6 +28,7 @@ import java.nio.file.Path
import java.nio.file.Paths
import java.util.List
import java.util.Map
import java.util.concurrent.CompletableFuture
import org.eclipse.xtext.ide.server.LanguageServerImpl
import org.eclipse.xtext.ide.server.ServerModule
import org.eclipse.xtext.ide.server.UriExtensions
@ -39,12 +39,12 @@ import org.eclipse.xtext.util.Modules2
import org.junit.Before
import static io.typefox.lsapi.util.LsapiFactories.*
import java.util.concurrent.CompletableFuture
import java.util.function.Consumer
/**
* @author Sven Efftinge - Initial contribution and API
*/
class AbstractLanguageServerTest implements NotificationCallback<PublishDiagnosticsParams> {
class AbstractLanguageServerTest implements Consumer<PublishDiagnosticsParams> {
@Before
def void setup() {
@ -70,7 +70,7 @@ class AbstractLanguageServerTest implements NotificationCallback<PublishDiagnost
val injector = Guice.createInjector(module)
injector.injectMembers(this)
// register notification callbacks
languageServer.getTextDocumentService.onPublishDiagnostics(this)
languageServer.getTextDocumentService().onPublishDiagnostics(this)
// create workingdir
root = new File("./test-data/test-project")
@ -103,7 +103,7 @@ class AbstractLanguageServerTest implements NotificationCallback<PublishDiagnost
val params = new InitializeParamsImpl
params.rootPath = rootPath.toString
initializer?.apply(params)
return languageServer.initialize(params)
return languageServer.initialize(params).get
}
protected def void open(String fileUri, String model) {
@ -128,7 +128,7 @@ class AbstractLanguageServerTest implements NotificationCallback<PublishDiagnost
return file.toURI.normalize.toPath
}
override call(PublishDiagnosticsParams t) {
override accept(PublishDiagnosticsParams t) {
diagnostics.put(t.uri, t.diagnostics)
}

View file

@ -69,7 +69,7 @@ class CompletionTest extends AbstractLanguageServerTest {
val completionItems = languageServer.completion(newPosition(fileUri, line, column))
val actualCompletionItems = completionItems.toExpectation
val actualCompletionItems = completionItems.get.items.toExpectation
assertEquals(expectedCompletionItems, actualCompletionItems)
}

View file

@ -44,7 +44,7 @@ class DefinitionTest extends AbstractLanguageServerTest {
open(fileUri, model)
val definitions = languageServer.definition(newPosition(fileUri, line, column))
val actualDefinitions = definitions.toExpectation
val actualDefinitions = definitions.get.toExpectation
assertEquals(expectedDefinitions, actualDefinitions)
}

View file

@ -69,7 +69,7 @@ class DocumentSymbolTest extends AbstractLanguageServerTest {
val symbols = languageServer.documentSymbol(new DocumentSymbolParamsImpl => [
textDocument = fileUri.newIdentifier
])
val String actualSymbols = symbols.toExpectation
val String actualSymbols = symbols.get.toExpectation
assertEquals(expectedSymbols, actualSymbols)
}

View file

@ -71,7 +71,7 @@ class ReferenceTest extends AbstractLanguageServerTest {
position = newPosition(line, column)
context = referenceContext
])
val actualDefinitions = definitions.toExpectation
val actualDefinitions = definitions.get.toExpectation
assertEquals(expectedReferences, actualDefinitions)
}

View file

@ -8,7 +8,7 @@
package org.eclipse.xtext.ide.tests.server
import io.typefox.lsapi.InitializeParamsImpl
import io.typefox.lsapi.json.JsonBasedLanguageServer
import io.typefox.lsapi.services.json.JsonBasedLanguageServer
import java.lang.ProcessBuilder.Redirect
import org.eclipse.xtext.ide.server.ServerLauncher
import org.junit.After