Ich bin mit Xtext 2.9 Formatierer und ich versuche zu Format hiddenRegion dieKommentar enthält. Hier ist ein Teil meiner Dokumentenregion i Format versuchen:Xtext 2.8+ Formatierer, Formatierung HiddenRegion mit Kommentaren
Columns: 1:offset 2:length 3:kind 4: text 5:grammarElement
Kind: H=IHiddenRegion S=ISemanticRegion B/E=IEObjectRegion
35 0 H
35 15 S ""xxx::a::b"" Refblock:namespace=Namespace
50 0 H
50 1 S "}" Refblock:RCBRACKET
E Refblock PackageHead:Block=Refblock path:PackageHead/Block=Package'xxx_constants'/head=Model/packages[0]
51 0 H
51 1 S ":" PackageHead:COLON
E PackageHead Package:head=PackageHead path:Package'xxx_constants'/head=Model/packages[0]
52 >>>H "\n " Whitespace:TerminalRule'WS'
"# asd" Comment:TerminalRule'SL_COMMENT'
15 "\n " Whitespace:TerminalRule'WS'<<<
B Error'ASSD' Package:expressions+=Expression path:Package'xxx_constants'/expressions[0]=Model/packages[0]
67 5 S "error" Error:'error'
72 1 H " " Whitespace:TerminalRule'WS'
und entsprechenden Teil der Grammatik
Model:
{Model}
(packages+=Package)*;
Expression:
Error | Warning | Enum | Text;
Package:
{Package}
'package' name=Name head=PackageHead
(BEGIN
(imports+=Import)*
(expressions+=Expression)*
END)?;
Error:
{Error}
('error') name=ENAME parameter=Parameter COLON
(BEGIN
(expressions+=Estatement)+
END)?;
PackageHead:
Block=Refblock COLON;
Problem ist, dass wenn ich versuche prepend einige Zeichen vor dem Fehler Stichwort zum Beispiel
error.regionFor.keyword('error').prepend[setSpace("\n ")]
Diese Einrückung ist vor dem Kommentar vorangestellt und nicht dahinter. Dies führt zu einer falschen Formatierung im Fall eines einzeiligen Kommentars vor dem Schlüsselwort 'error'.
mehr Klarheit, hier Beispielcode aus meiner Grammatik und Beschreibung des gewünschten Verhaltens ist:
Diesespackage xxx_constants {namespace="xxx::a::b"}:
# asd
error ASSD {0}:
Hello {0,world}
ist erwartetes Ergebnis: (ein Feld nach links)
package xxx_constants {namespace="xxx::a::b"}:
# asd
error ASSD {0}:
Hello {0,world}
und das ist das tatsächliche Ergebnis mit Voranstellungsmethode
package xxx_constants {namespace="xxx::a::b"}:
# asd
error ASSD {0}:
Hello {0,world}
Da die Dokumentstruktur sagt, die HiddenRegion in diesem Fall ist die Aussage:
# asd
error
Wie kann ich meine Charaktere prepend direkt vor dem Stichwort ‚Fehler‘ und nicht vor dem Kommentar? Danke.
Danke, zwingende org.eclipse.xtext.formatting2.internal.HiddenRegionReplacer.applyHiddenRegionFormatting (Liste) hat gearbeitet. –
Smarty77