Referencing an element increase its internal indentation [message #1739925] |
Fri, 05 August 2016 17:34 |
Serge Lamikhov Messages: 26 Registered: May 2016 |
Junior Member |
|
|
Hi,
Working in Eclipse, I observe the following problem each time a referenced element is used, its indentation is increased. For example. For grammar:
grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals
generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
Model:
definitions+=(Definition | Usage)*;
Definition:
'def' name=ID '{'
elements+=ID (',' elements+=ID)*
'}';
Usage:
'list' 'of' '{' list+=[Definition] (',' list+=[Definition])* '}'
;
and indentation code like:
class MyDslFormatter extends AbstractFormatter2 {
@Inject extension MyDslGrammarAccess
def dispatch void format(Model model, extension IFormattableDocument document) {
// TODO: format HiddenRegions around keywords, attributes, cross references, etc.
for (EObject definitions : model.getDefinitions()) {
definitions.format;
}
}
def dispatch void format(Definition df, extension IFormattableDocument document)
{
df.interior[indent]
df.regionFor.keyword("def").append[oneSpace]
df.regionFor.feature(Literals.DEFINITION__NAME).append[oneSpace]
df.regionFor.keyword("{").prepend[oneSpace].append[newLine]
for (element : df.elements) {
element.format
}
for (comma : df.regionFor.keywords(",")) {
comma.prepend[noSpace].append[newLine]
}
df.regionFor.keyword("}").prepend[newLine].append[newLines = 2]
}
def dispatch void format(Usage usage, extension IFormattableDocument document)
{
usage.interior[indent]
usage.regionFor.keyword("list").append[oneSpace]
usage.regionFor.keyword("of").append[oneSpace]
usage.regionFor.keyword("{").append[newLine]
for (item : usage.list) {
format(item, document)
}
usage.regionFor.keyword("}").prepend[newLine].append[newLines = 2]
}
}
I observe the following auto-format behavior. Each time a 'definition' entity participates in 'usage' list, its indentation is increased:
def d1 {
ww, // Indent will grow each time 'd1' appears in list below
qq
}
list of {
d1, d1
}
Did I find an issue or its a misuse?
Thank you
|
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.02796 seconds