diff --git a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/LanguageServerImpl.xtend b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/LanguageServerImpl.xtend index 77dc15cc9..a9763a70e 100644 --- a/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/LanguageServerImpl.xtend +++ b/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/LanguageServerImpl.xtend @@ -520,9 +520,12 @@ import static org.eclipse.xtext.diagnostics.Severity.* val service2 = serviceProvider?.get(ICodeActionService2); if (service === null && service2 === null) return emptyList - - return workspaceManager.doRead(uri) [doc, resource | + return access.doRead(params.textDocument.uri) [ + context| val result = newArrayList + val doc = context.document + val resourceSet = access.newLiveScopeResourceSet(uri) + val resource = resourceSet.getResource(uri, true) as XtextResource result += service?.getCodeActions(doc, resource, params, cancelIndicator) ?: emptyList result += service2?.getCodeActions(new ICodeActionService2.Options() => [ o | o.document = doc @@ -532,7 +535,7 @@ import static org.eclipse.xtext.diagnostics.Severity.* o.cancelIndicator = cancelIndicator ]) ?: emptyList return result - ] + ].get ] } diff --git a/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/LanguageServerImpl.java b/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/LanguageServerImpl.java index 17c27299b..8c679e949 100644 --- a/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/LanguageServerImpl.java +++ b/org.eclipse.xtext.ide/xtend-gen/org/eclipse/xtext/ide/server/LanguageServerImpl.java @@ -788,59 +788,67 @@ public class LanguageServerImpl implements LanguageServer, WorkspaceService, Tex @Override public CompletableFuture>> codeAction(final CodeActionParams params) { final Function1>> _function = (CancelIndicator cancelIndicator) -> { - final URI uri = this._uriExtensions.toUri(params.getTextDocument().getUri()); - final IResourceServiceProvider serviceProvider = this.languagesRegistry.getResourceServiceProvider(uri); - ICodeActionService _get = null; - if (serviceProvider!=null) { - _get=serviceProvider.get(ICodeActionService.class); + try { + final URI uri = this._uriExtensions.toUri(params.getTextDocument().getUri()); + final IResourceServiceProvider serviceProvider = this.languagesRegistry.getResourceServiceProvider(uri); + ICodeActionService _get = null; + if (serviceProvider!=null) { + _get=serviceProvider.get(ICodeActionService.class); + } + final ICodeActionService service = _get; + ICodeActionService2 _get_1 = null; + if (serviceProvider!=null) { + _get_1=serviceProvider.get(ICodeActionService2.class); + } + final ICodeActionService2 service2 = _get_1; + if (((service == null) && (service2 == null))) { + return CollectionLiterals.>emptyList(); + } + final Function>> _function_1 = (ILanguageServerAccess.Context context) -> { + final ArrayList> result = CollectionLiterals.>newArrayList(); + final Document doc = context.getDocument(); + final ResourceSet resourceSet = this.access.newLiveScopeResourceSet(uri); + Resource _resource = resourceSet.getResource(uri, true); + final XtextResource resource = ((XtextResource) _resource); + List> _elvis = null; + List> _codeActions = null; + if (service!=null) { + _codeActions=service.getCodeActions(doc, resource, params, cancelIndicator); + } + if (_codeActions != null) { + _elvis = _codeActions; + } else { + List> _emptyList = CollectionLiterals.>emptyList(); + _elvis = _emptyList; + } + Iterables.>addAll(result, _elvis); + List> _elvis_1 = null; + List> _codeActions_1 = null; + if (service2!=null) { + ICodeActionService2.Options _options = new ICodeActionService2.Options(); + final Procedure1 _function_2 = (ICodeActionService2.Options o) -> { + o.setDocument(doc); + o.setResource(resource); + o.setLanguageServerAccess(this.access); + o.setCodeActionParams(params); + o.setCancelIndicator(cancelIndicator); + }; + ICodeActionService2.Options _doubleArrow = ObjectExtensions.operator_doubleArrow(_options, _function_2); + _codeActions_1=service2.getCodeActions(_doubleArrow); + } + if (_codeActions_1 != null) { + _elvis_1 = _codeActions_1; + } else { + List> _emptyList_1 = CollectionLiterals.>emptyList(); + _elvis_1 = _emptyList_1; + } + Iterables.>addAll(result, _elvis_1); + return result; + }; + return this.access.>>doRead(params.getTextDocument().getUri(), _function_1).get(); + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); } - final ICodeActionService service = _get; - ICodeActionService2 _get_1 = null; - if (serviceProvider!=null) { - _get_1=serviceProvider.get(ICodeActionService2.class); - } - final ICodeActionService2 service2 = _get_1; - if (((service == null) && (service2 == null))) { - return CollectionLiterals.>emptyList(); - } - final Function2>> _function_1 = (Document doc, XtextResource resource) -> { - final ArrayList> result = CollectionLiterals.>newArrayList(); - List> _elvis = null; - List> _codeActions = null; - if (service!=null) { - _codeActions=service.getCodeActions(doc, resource, params, cancelIndicator); - } - if (_codeActions != null) { - _elvis = _codeActions; - } else { - List> _emptyList = CollectionLiterals.>emptyList(); - _elvis = _emptyList; - } - Iterables.>addAll(result, _elvis); - List> _elvis_1 = null; - List> _codeActions_1 = null; - if (service2!=null) { - ICodeActionService2.Options _options = new ICodeActionService2.Options(); - final Procedure1 _function_2 = (ICodeActionService2.Options o) -> { - o.setDocument(doc); - o.setResource(resource); - o.setLanguageServerAccess(this.access); - o.setCodeActionParams(params); - o.setCancelIndicator(cancelIndicator); - }; - ICodeActionService2.Options _doubleArrow = ObjectExtensions.operator_doubleArrow(_options, _function_2); - _codeActions_1=service2.getCodeActions(_doubleArrow); - } - if (_codeActions_1 != null) { - _elvis_1 = _codeActions_1; - } else { - List> _emptyList_1 = CollectionLiterals.>emptyList(); - _elvis_1 = _emptyList_1; - } - Iterables.>addAll(result, _elvis_1); - return result; - }; - return this.workspaceManager.>>doRead(uri, _function_1); }; return this.requestManager.>>runRead(_function); }