From 785a39d785cc54bd7f23086f776414db24c3d991 Mon Sep 17 00:00:00 2001 From: Holger Schill Date: Fri, 13 Feb 2015 12:17:04 +0100 Subject: [PATCH] [Xtext] [GrammarEditor] ContentAssist for grammar inheritance see https://bugs.eclipse.org/bugs/show_bug.cgi?id=459866 Change-Id: Ic9956ee742ee7c65c0ed84c239120bdf24f0af9f --- .../eclipse/xtext/xtext/XtextScopeProvider.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextScopeProvider.java b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextScopeProvider.java index 5bc0a1a9c..18ec3d3e1 100644 --- a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextScopeProvider.java +++ b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextScopeProvider.java @@ -35,6 +35,7 @@ import org.eclipse.xtext.naming.QualifiedName; import org.eclipse.xtext.resource.EObjectDescription; import org.eclipse.xtext.resource.IEObjectDescription; import org.eclipse.xtext.resource.IResourceDescription; +import org.eclipse.xtext.scoping.IGlobalScopeProvider; import org.eclipse.xtext.scoping.IScope; import org.eclipse.xtext.scoping.impl.AbstractScopeProvider; import org.eclipse.xtext.scoping.impl.GlobalResourceDescriptionProvider; @@ -54,8 +55,11 @@ public class XtextScopeProvider extends AbstractScopeProvider { @Inject private GlobalResourceDescriptionProvider resourceDecriptionProvider; + @Inject + private IGlobalScopeProvider globalScopeProvider; + @Override - public IScope getScope(EObject context, EReference reference) { + public IScope getScope(final EObject context, EReference reference) { if (reference == XtextPackage.eINSTANCE.getTypeRef_Classifier()) { if (context instanceof TypeRef) { final TypeRef typeRef = (TypeRef) context; @@ -80,6 +84,14 @@ public class XtextScopeProvider extends AbstractScopeProvider { return IScope.NULLSCOPE; } + if(reference == XtextPackage.eINSTANCE.getGrammar_UsedGrammars()){ + return globalScopeProvider.getScope(context.eResource(), reference, new Predicate(){ + @Override + public boolean apply(IEObjectDescription input) { + return input.getEObjectOrProxy() != context; + } + }); + } return createScope(context.eResource(), reference.getEReferenceType()); }