Add hack for KotlinMultilineStringEnterHandler

#KT-34566 Fixed
Part of #KT-22211
This commit is contained in:
Dmitry Gridin
2020-06-01 22:27:44 +07:00
parent 8e7bbf1780
commit 201b115ee0
4 changed files with 9 additions and 21 deletions
@@ -9,6 +9,7 @@ import com.intellij.formatting.Indent
import com.intellij.lang.Language
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
import com.intellij.psi.codeStyle.lineIndent.LineIndentProvider
import com.intellij.psi.impl.source.codeStyle.SemanticEditorPosition
import com.intellij.psi.impl.source.codeStyle.lineIndent.IndentCalculator
import com.intellij.psi.impl.source.codeStyle.lineIndent.JavaLikeLangLineIndentProvider
@@ -45,6 +46,14 @@ abstract class KotlinLikeLangLineIndentProvider : JavaLikeLangLineIndentProvider
}\n=="
}
override fun getLineIndent(project: Project, editor: Editor, language: Language?, offset: Int): String? {
// HACK: TODO: KT-34566 investigate this hack (necessary for [org.jetbrains.kotlin.idea.editor.Kotlin.MultilineStringEnterHandler])
return if (offset > 0 && getPosition(editor, offset - 1).isAt(RegularStringPart))
LineIndentProvider.DO_NOT_ADJUST
else
super.getLineIndent(project, editor, language, offset)
}
override fun getIndent(project: Project, editor: Editor, language: Language?, offset: Int): IndentCalculator? {
val factory = IndentCalculatorFactory(project, editor)
val currentPosition = getPosition(editor, offset)