@@ -140,7 +140,7 @@ class GtsElementTypes {
140140 override fun appendCurrentTemplateToken (tokenEndOffset : Int , tokenText : CharSequence ): TemplateDataModifications {
141141 val r = Regex (" =\\ s*$" )
142142 return if (r.containsMatchIn(tokenText)) {
143- TemplateDataModifications .fromRangeToRemove(tokenEndOffset, " \"\" " )
143+ TemplateDataModifications .fromRangeToRemove(tokenEndOffset, " '' " )
144144 } else {
145145 super .appendCurrentTemplateToken(tokenEndOffset, tokenText)
146146 }
@@ -658,7 +658,7 @@ class JSAstBlockWrapper(block: ASTBlock, parent: JsBlockWrapper?): JsBlockWrappe
658658 }
659659}
660660
661- class RootBlockWrapper (val block : XmlTagBlock , val policy : HtmlPolicy , val rootIndent : Indent ): XmlTagBlock(block.node, NoWrap , block.alignment, policy, rootIndent ) {
661+ class RootBlockWrapper (val block : XmlTagBlock , val policy : HtmlPolicy ): XmlTagBlock(block.node, NoWrap , block.alignment, policy, Indent .getNoneIndent() ) {
662662
663663 var patched = false
664664 var parent: Block ? = null
@@ -683,10 +683,10 @@ class RootBlockWrapper(val block: XmlTagBlock, val policy: HtmlPolicy, val rootI
683683 return subblocks.mapIndexed { index, it ->
684684 var indent = Indent .getNormalIndent()
685685 if (index == 0 ) {
686- indent = Indent .getNoneIndent ()
686+ indent = getBaseIndent ()
687687 }
688688 if (index == subblocks.lastIndex) {
689- indent = Indent .getNoneIndent ()
689+ indent = getBaseIndent ()
690690 }
691691 SynteticBlockWrapper (it, this , indent)
692692 }.toMutableList()
@@ -696,7 +696,7 @@ class RootBlockWrapper(val block: XmlTagBlock, val policy: HtmlPolicy, val rootI
696696 return Indent .getNoneIndent()
697697 }
698698
699- override fun getChildAttributes ( newChildIndex : Int ): ChildAttributes {
699+ fun getBaseIndent ( forChild : Boolean = false ): Indent ? {
700700 val file = this .node.psi.containingFile
701701 val project = this .node.psi.project
702702 val document = PsiDocumentManager .getInstance(project).getDocument(file)!!
@@ -705,16 +705,20 @@ class RootBlockWrapper(val block: XmlTagBlock, val policy: HtmlPolicy, val rootI
705705 val blockRef = this .parent as ? JSAstBlockWrapper ? : ((this .parent as JsBlockWrapper ).parent as JSAstBlockWrapper )
706706 val psiRef = blockRef.node!! .psi.parent
707707
708- val startOffset = psiRef.textRange.startOffset
708+ val startOffset = psiRef.textRange? .startOffset ? : return Indent .getNormalIndent( true )
709709 val line = document.getLineNumber(startOffset)
710710 val lineOffset = document.getLineStartOffset(line)
711711 val offset = startOffset - lineOffset + ((blockRef.node!! .psi is JSClass ).ifTrue { INDENT_SIZE } ? : 0 )
712712
713713
714- return ChildAttributes ( Indent .getSpaceIndent(offset + INDENT_SIZE ), null )
714+ return Indent .getSpaceIndent(offset + (forChild.ifTrue { INDENT_SIZE } ? : 0 ) )
715715 }
716716
717- return ChildAttributes (Indent .getNormalIndent(true ), null )
717+ return Indent .getNormalIndent(true )
718+ }
719+
720+ override fun getChildAttributes (newChildIndex : Int ): ChildAttributes {
721+ return ChildAttributes (Indent .getNoneIndent(), null )
718722 }
719723
720724 override fun getChildrenIndent (): Indent {
@@ -817,14 +821,7 @@ class GtsFormattingModelBuilder : AbstractXmlTemplateFormattingModelBuilder() {
817821 val documentModel = FormattingDocumentModelImpl .createOn(psiFile)
818822 val block = findTemplateRootBlock(hbsRootBlock, element) as ? XmlTagBlock ? : return createModel(FormattingContext .create(node.psi, settings)).rootBlock
819823 var start = block.textRange.startOffset - 1
820- var indent = Indent .getNormalIndent()
821- while (start > 0 && psiFile.text[start] != ' \n ' ) {
822- if (psiFile.text[start] != ' ' ) {
823- indent = Indent .getNoneIndent()
824- }
825- start--
826- }
827- val rootBlock = RootBlockWrapper (block, HtmlPolicy (settings, documentModel), indent)
824+ val rootBlock = RootBlockWrapper (block, HtmlPolicy (settings, documentModel))
828825 val model = XmlFormattingModel (
829826 psiFile,
830827 rootBlock,
0 commit comments