mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-16 08:48:55 +00:00
[lsp] added doRead method to access document and resource
This commit is contained in:
parent
80c7da3224
commit
3cf774385d
2 changed files with 21 additions and 1 deletions
|
@ -25,6 +25,7 @@ import org.eclipse.xtext.resource.impl.ResourceDescriptionsData
|
|||
import org.eclipse.xtext.validation.Issue
|
||||
import java.util.Map
|
||||
import org.eclipse.xtext.build.IncrementalBuilder.Result
|
||||
import org.eclipse.emf.ecore.resource.Resource
|
||||
|
||||
/**
|
||||
* @author Sven Efftinge - Initial contribution and API
|
||||
|
@ -42,6 +43,7 @@ class ProjectManager {
|
|||
(URI, Iterable<Issue>)=>void issueAcceptor
|
||||
Provider<Map<String, ResourceDescriptionsData>> indexProvider
|
||||
IExternalContentProvider openedDocumentsContentProvider
|
||||
XtextResourceSet resourceSet
|
||||
|
||||
def Result initialize(URI baseDir, (URI, Iterable<Issue>)=>void acceptor, IExternalContentProvider openedDocumentsContentProvider, Provider<Map<String, ResourceDescriptionsData>> indexProvider) {
|
||||
val uris = newArrayList
|
||||
|
@ -54,10 +56,12 @@ class ProjectManager {
|
|||
}
|
||||
|
||||
def Result doBuild(List<URI> dirtyFiles, List<URI> deletedFiles) {
|
||||
val result = incrementalBuilder.build(newBuildRequest(dirtyFiles, deletedFiles), [
|
||||
val request = newBuildRequest(dirtyFiles, deletedFiles)
|
||||
val result = incrementalBuilder.build(request, [
|
||||
languagesRegistry.getResourceServiceProvider(it)
|
||||
])
|
||||
indexState = result.indexState
|
||||
resourceSet = request.resourceSet
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -87,4 +91,9 @@ class ProjectManager {
|
|||
externalContentSupport.configureResourceSet(it, openedDocumentsContentProvider)
|
||||
]
|
||||
}
|
||||
|
||||
def Resource getResource(org.eclipse.emf.common.util.URI uri) {
|
||||
resourceSet.getResource(uri, true)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ import java.util.List
|
|||
import java.util.Map
|
||||
import org.eclipse.emf.common.util.URI
|
||||
import org.eclipse.xtext.resource.IExternalContentSupport.IExternalContentProvider
|
||||
import org.eclipse.xtext.resource.XtextResource
|
||||
import org.eclipse.xtext.resource.impl.ResourceDescriptionsData
|
||||
import org.eclipse.xtext.validation.Issue
|
||||
|
||||
|
@ -129,5 +130,15 @@ class WorkspaceManager {
|
|||
def didSave(DidSaveTextDocumentParams changeEvent) {
|
||||
// do nothing for now
|
||||
}
|
||||
|
||||
def <T> void doRead(URI uri, (Document, XtextResource)=>T work) {
|
||||
val projectMnr = getProjectManager(uri)
|
||||
val doc = openDocuments.get(uri)
|
||||
work.apply(doc, projectMnr.getResource(uri) as XtextResource)
|
||||
}
|
||||
|
||||
def <T> void doWrite(URI uri, (Document, XtextResource)=>T work) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue