|
Re: Formatting Multiple Consecutive Keywords [message #1770595 is a reply to message #1770581] |
Mon, 14 August 2017 17:39 |
|
Hi,
is there a reason you factor out the keywords to a separate datatype rule?
there is no support to format in within these
=> simply inline these should do the trick.
please feel free to file an enhancement request at https://github.com/eclipse/xtext-core
as a workaround you might try something like the following as well
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.formatting2.regionaccess.ITextRegionAccess;
import org.eclipse.xtext.formatting2.regionaccess.TextRegionAccessBuilder;
import org.eclipse.xtext.formatting2.regionaccess.internal.NodeModelBasedRegionAccessBuilder;
import org.eclipse.xtext.formatting2.regionaccess.internal.TextRegionAccessBuildingSequencer;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.serializer.ISerializationContext;
import org.eclipse.xtext.serializer.acceptor.ISequenceAcceptor;
import com.google.inject.Inject;
public class CustomTextRegionAccessBuilder extends TextRegionAccessBuilder {
@Inject org.xtext.example.mydsl2.services.MyDslGrammarAccess ga;
private TextRegionAccessBuildingSequencer fromSequencer;
private NodeModelBasedRegionAccessBuilder fromNodeModel;
public TextRegionAccessBuilder forNodeModel(XtextResource resource) {
this.fromNodeModel = new NodeModelBasedRegionAccessBuilder() {
protected boolean include(org.eclipse.xtext.nodemodel.INode node) {
if (node.getGrammarElement() == ga.getRelationAccess().getIsComposedOfParserRuleCall_0_1()) {
return false;
}
return super.include(node);
};
}.withResource(resource);
return this;
}
public ISequenceAcceptor forSequence(ISerializationContext ctx, EObject root) {
//TODO
return this.fromSequencer = new TextRegionAccessBuildingSequencer() {
}.withRoot(ctx, root);
}
public ITextRegionAccess create() {
if (fromNodeModel != null)
return fromNodeModel.create();
if (fromSequencer != null)
return fromSequencer.getRegionAccess();
throw new IllegalStateException();
}
}
class MyDslRuntimeModule extends AbstractMyDslRuntimeModule {
def Class<? extends TextRegionAccessBuilder> bindTextRegionAccessBuilder() {
CustomTextRegionAccessBuilder
}
}
Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.04144 seconds