diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index c506d8d2221..f5e8cf85c78 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -234,7 +234,7 @@
-
+
{
+ if (root !is JetFile) {
+ return FoldingDescriptor.EMPTY
}
- List descriptors = new ArrayList();
- JetFile file = (JetFile) root;
+ val descriptors = ArrayList()
- List imports = file.getImportDirectives();
+ val imports = root.getImportDirectives()
if (imports.size() > 1) {
- PsiElement importKeyword = imports.get(0).getFirstChild();
- int startOffset = importKeyword.getTextRange().getEndOffset() + 1;
+ val importKeyword = imports.get(0).getFirstChild()
+ val startOffset = importKeyword.getTextRange().getEndOffset() + 1
- JetImportList importList = file.getImportList();
- int endOffset = importList.getTextRange().getEndOffset();
+ val importList = root.getImportList()
+ if (importList != null) {
+ val endOffset = importList.getTextRange().getEndOffset()
- TextRange range = new TextRange(startOffset, endOffset);
- descriptors.add(new FoldingDescriptor(importList, range));
+ val range = TextRange(startOffset, endOffset)
+ descriptors.add(FoldingDescriptor(importList, range))
+ }
}
- appendDescriptors(root.getNode(), document, descriptors);
- return descriptors.toArray(new FoldingDescriptor[descriptors.size()]);
+ appendDescriptors(root.getNode(), document, descriptors)
+ return descriptors.copyToArray()
}
- private static void appendDescriptors(ASTNode node, Document document, List descriptors) {
- TextRange textRange = node.getTextRange();
- IElementType type = node.getElementType();
+ private fun appendDescriptors(node: ASTNode, document: Document, descriptors: MutableList) {
+ val textRange = node.getTextRange()
+ val type = node.getElementType()
if ((type == JetNodeTypes.BLOCK || type == JetNodeTypes.CLASS_BODY || type == JetTokens.BLOCK_COMMENT || type == KDocTokens.KDOC) &&
!isOneLine(textRange, document)) {
- descriptors.add(new FoldingDescriptor(node, textRange));
+ descriptors.add(FoldingDescriptor(node, textRange))
}
- ASTNode child = node.getFirstChildNode();
+ var child: ASTNode? = node.getFirstChildNode()
while (child != null) {
- appendDescriptors(child, document, descriptors);
- child = child.getTreeNext();
+ appendDescriptors(child, document, descriptors)
+ child = child.getTreeNext()
}
}
- private static boolean isOneLine(TextRange textRange, Document document) {
- return document.getLineNumber(textRange.getStartOffset()) == document.getLineNumber(textRange.getEndOffset());
- }
+ private fun isOneLine(textRange: TextRange, document: Document) =
+ document.getLineNumber(textRange.getStartOffset()) == document.getLineNumber(textRange.getEndOffset())
- @Override
- public String getPlaceholderText(@NotNull ASTNode node) {
+ override fun getPlaceholderText(node: ASTNode): String? {
if (node.getElementType() == JetTokens.BLOCK_COMMENT) {
- return "/.../";
+ return "/.../"
}
if (node.getElementType() == KDocTokens.KDOC) {
- return "/**...*/";
+ return "/**...*/"
}
- if (node.getPsi() instanceof JetImportList) {
- return "...";
+ if (node.getPsi() is JetImportList) {
+ return "..."
}
- return "{...}";
+ return "{...}"
}
- @Override
- public boolean isCollapsedByDefault(@NotNull ASTNode astNode) {
- JavaCodeFoldingSettings settings = JavaCodeFoldingSettings.getInstance();
+ override fun isCollapsedByDefault(astNode: ASTNode): Boolean {
+ val settings = JavaCodeFoldingSettings.getInstance()
- if (astNode.getPsi() instanceof JetImportList) {
- return settings.isCollapseImports();
+ if (astNode.getPsi() is JetImportList) {
+ return settings.isCollapseImports()
}
- IElementType type = astNode.getElementType();
+ val type = astNode.getElementType()
if (type == JetTokens.BLOCK_COMMENT || type == KDocTokens.KDOC) {
if (isFirstElementInFile(astNode.getPsi())) {
- return settings.isCollapseFileHeader();
+ return settings.isCollapseFileHeader()
}
}
- return false;
+ return false
}
- private static boolean isFirstElementInFile(PsiElement element) {
- PsiElement parent = element.getParent();
- if (parent instanceof JetFile) {
- PsiElement firstChild = parent.getFirstChild();
- if (firstChild instanceof PsiWhiteSpace) {
- firstChild = firstChild.getNextSibling();
+ private fun isFirstElementInFile(element: PsiElement): Boolean {
+ val parent = element.getParent()
+ if (parent is JetFile) {
+ var firstChild = parent.getFirstChild()
+ if (firstChild is PsiWhiteSpace) {
+ firstChild = firstChild.getNextSibling()
}
- return element == firstChild;
+ return element == firstChild
}
- return false;
+ return false
}
}