KotlinFormattingModelBuilder: J2K
This commit is contained in:
@@ -14,52 +14,47 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.idea.formatter;
|
package org.jetbrains.kotlin.idea.formatter
|
||||||
|
|
||||||
import com.intellij.formatting.FormattingModel;
|
import com.intellij.formatting.FormattingModel
|
||||||
import com.intellij.formatting.FormattingModelBuilder;
|
import com.intellij.formatting.FormattingModelBuilder
|
||||||
import com.intellij.formatting.FormattingModelProvider;
|
import com.intellij.formatting.FormattingModelProvider
|
||||||
import com.intellij.formatting.Indent;
|
import com.intellij.formatting.Indent
|
||||||
import com.intellij.lang.ASTNode;
|
import com.intellij.lang.ASTNode
|
||||||
import com.intellij.openapi.editor.impl.DocumentImpl;
|
import com.intellij.openapi.editor.impl.DocumentImpl
|
||||||
import com.intellij.openapi.util.TextRange;
|
import com.intellij.openapi.util.TextRange
|
||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile
|
||||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
import com.intellij.psi.codeStyle.CodeStyleSettings
|
||||||
import com.intellij.psi.formatter.FormattingDocumentModelImpl;
|
import com.intellij.psi.formatter.FormattingDocumentModelImpl
|
||||||
import com.intellij.psi.formatter.PsiBasedFormattingModel;
|
import com.intellij.psi.formatter.PsiBasedFormattingModel
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||||
import org.jetbrains.kotlin.idea.KotlinLanguage;
|
|
||||||
|
|
||||||
public class KotlinFormattingModelBuilder implements FormattingModelBuilder {
|
class KotlinFormattingModelBuilder : FormattingModelBuilder {
|
||||||
@NotNull
|
override fun createModel(element: PsiElement, settings: CodeStyleSettings): FormattingModel {
|
||||||
@Override
|
val containingFile = element.containingFile.viewProvider.getPsi(KotlinLanguage.INSTANCE)
|
||||||
public FormattingModel createModel(PsiElement element, CodeStyleSettings settings) {
|
val block = KotlinBlock(
|
||||||
PsiFile containingFile = element.getContainingFile().getViewProvider().getPsi(KotlinLanguage.INSTANCE);
|
containingFile.node, NodeAlignmentStrategy.getNullStrategy(), Indent.getNoneIndent(), null, settings,
|
||||||
KotlinBlock block = new KotlinBlock(
|
createSpacingBuilder(settings, KotlinSpacingBuilderUtilImpl))
|
||||||
containingFile.getNode(), NodeAlignmentStrategy.getNullStrategy(), Indent.getNoneIndent(), null, settings,
|
|
||||||
KotlinSpacingRulesKt.createSpacingBuilder(settings, KotlinSpacingBuilderUtilImpl.INSTANCE));
|
|
||||||
|
|
||||||
//TODO: this is temporary code to allow formatting non-physical files in non-UI thread (used by conversion from Java to Kotlin)
|
//TODO: this is temporary code to allow formatting non-physical files in non-UI thread (used by conversion from Java to Kotlin)
|
||||||
// it's needed until IDEA's issue with this document being created with wrong threading policy is fixed
|
// it's needed until IDEA's issue with this document being created with wrong threading policy is fixed
|
||||||
if (!element.isPhysical()) {
|
if (!element.isPhysical) {
|
||||||
FormattingDocumentModelImpl formattingDocumentModel =
|
val formattingDocumentModel = FormattingDocumentModelImpl(DocumentImpl(containingFile.viewProvider.contents, true), containingFile)
|
||||||
new FormattingDocumentModelImpl(new DocumentImpl(containingFile.getViewProvider().getContents(), true), containingFile);
|
return PsiBasedFormattingModel(containingFile, block, formattingDocumentModel)
|
||||||
return new PsiBasedFormattingModel(containingFile, block, formattingDocumentModel);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (element instanceof PsiFile) {
|
if (element is PsiFile) {
|
||||||
FormattingModel collectChangesModel = CollectChangesWithoutApplyModelKt.createCollectFormattingChangesModel((PsiFile) element, block);
|
val collectChangesModel = createCollectFormattingChangesModel(element, block)
|
||||||
if (collectChangesModel != null) {
|
if (collectChangesModel != null) {
|
||||||
return collectChangesModel;
|
return collectChangesModel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return FormattingModelProvider.createFormattingModelForPsiFile(element.getContainingFile(), block, settings);
|
return FormattingModelProvider.createFormattingModelForPsiFile(element.containingFile, block, settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
override fun getRangeAffectingIndent(psiFile: PsiFile, i: Int, astNode: ASTNode): TextRange? {
|
||||||
public TextRange getRangeAffectingIndent(PsiFile psiFile, int i, ASTNode astNode) {
|
return null
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user