mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-16 00:38:56 +00:00
[lsp] updated to 0.2.0 of ls-api.
This commit is contained in:
parent
e28969fdab
commit
2108e8c41a
12 changed files with 54 additions and 47 deletions
|
@ -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>
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue