如何使用Xtext格式化程序在同一文档中定义不同的缩进级别

时间:2017-07-25 13:47:45

标签: xtext formatter

是否可以使用Xtext格式化格式化文档?如您所见, Test 子项缩进为4个空格,而外部子项仅缩进2个空格。我正在使用Xtext 2.12.0。

Test my_prog {
    Device = "my_device";
    Param = 0;
}

External {
  Path = "my_path";
  File = "my_file";
}

1 个答案:

答案 0 :(得分:1)

您可以尝试使用自定义替换器,但不知道这是否适用于嵌套块

def dispatch void format(External model, extension IFormattableDocument document) {
    model.regionFor.keyword("}").prepend[newLine]
    for (l : model.ids) {
        val region = l.regionFor.feature(MyDslPackage.Literals.IDX__NAME)
        region.prepend[newLine]
        val r = new AbstractTextReplacer(document, region) {
            override createReplacements(ITextReplacerContext it) {
                val offset = region.offset
                it.addReplacement(region.textRegionAccess.rewriter.createReplacement(offset, 0, "  "))
                it
            }
        }
        addReplacer(r)
    }
}