KotlinFormattingModelBuilder: J2K
This commit is contained in:
@@ -14,52 +14,47 @@
|
||||
* 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.FormattingModelBuilder;
|
||||
import com.intellij.formatting.FormattingModelProvider;
|
||||
import com.intellij.formatting.Indent;
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.openapi.editor.impl.DocumentImpl;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
import com.intellij.psi.formatter.FormattingDocumentModelImpl;
|
||||
import com.intellij.psi.formatter.PsiBasedFormattingModel;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage;
|
||||
import com.intellij.formatting.FormattingModel
|
||||
import com.intellij.formatting.FormattingModelBuilder
|
||||
import com.intellij.formatting.FormattingModelProvider
|
||||
import com.intellij.formatting.Indent
|
||||
import com.intellij.lang.ASTNode
|
||||
import com.intellij.openapi.editor.impl.DocumentImpl
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings
|
||||
import com.intellij.psi.formatter.FormattingDocumentModelImpl
|
||||
import com.intellij.psi.formatter.PsiBasedFormattingModel
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
|
||||
public class KotlinFormattingModelBuilder implements FormattingModelBuilder {
|
||||
@NotNull
|
||||
@Override
|
||||
public FormattingModel createModel(PsiElement element, CodeStyleSettings settings) {
|
||||
PsiFile containingFile = element.getContainingFile().getViewProvider().getPsi(KotlinLanguage.INSTANCE);
|
||||
KotlinBlock block = new KotlinBlock(
|
||||
containingFile.getNode(), NodeAlignmentStrategy.getNullStrategy(), Indent.getNoneIndent(), null, settings,
|
||||
KotlinSpacingRulesKt.createSpacingBuilder(settings, KotlinSpacingBuilderUtilImpl.INSTANCE));
|
||||
class KotlinFormattingModelBuilder : FormattingModelBuilder {
|
||||
override fun createModel(element: PsiElement, settings: CodeStyleSettings): FormattingModel {
|
||||
val containingFile = element.containingFile.viewProvider.getPsi(KotlinLanguage.INSTANCE)
|
||||
val block = KotlinBlock(
|
||||
containingFile.node, NodeAlignmentStrategy.getNullStrategy(), Indent.getNoneIndent(), null, settings,
|
||||
createSpacingBuilder(settings, KotlinSpacingBuilderUtilImpl))
|
||||
|
||||
//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
|
||||
if (!element.isPhysical()) {
|
||||
FormattingDocumentModelImpl formattingDocumentModel =
|
||||
new FormattingDocumentModelImpl(new DocumentImpl(containingFile.getViewProvider().getContents(), true), containingFile);
|
||||
return new PsiBasedFormattingModel(containingFile, block, formattingDocumentModel);
|
||||
if (!element.isPhysical) {
|
||||
val formattingDocumentModel = FormattingDocumentModelImpl(DocumentImpl(containingFile.viewProvider.contents, true), containingFile)
|
||||
return PsiBasedFormattingModel(containingFile, block, formattingDocumentModel)
|
||||
}
|
||||
|
||||
if (element instanceof PsiFile) {
|
||||
FormattingModel collectChangesModel = CollectChangesWithoutApplyModelKt.createCollectFormattingChangesModel((PsiFile) element, block);
|
||||
if (element is PsiFile) {
|
||||
val collectChangesModel = createCollectFormattingChangesModel(element, block)
|
||||
if (collectChangesModel != null) {
|
||||
return collectChangesModel;
|
||||
return collectChangesModel
|
||||
}
|
||||
}
|
||||
|
||||
return FormattingModelProvider.createFormattingModelForPsiFile(element.getContainingFile(), block, settings);
|
||||
return FormattingModelProvider.createFormattingModelForPsiFile(element.containingFile, block, settings)
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextRange getRangeAffectingIndent(PsiFile psiFile, int i, ASTNode astNode) {
|
||||
return null;
|
||||
override fun getRangeAffectingIndent(psiFile: PsiFile, i: Int, astNode: ASTNode): TextRange? {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user