From 14c343de351a2964cfa6c146de17066c8cf292af Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 18 May 2017 15:41:46 +0300 Subject: [PATCH] Enable auto-indent in multiline strings when caret is before interpolation #KT-17849 Fixed --- .../idea/editor/KotlinMultilineStringEnterHandler.kt | 2 +- .../spaces/enterBeforeLongEntryOneLine.kt | 6 ++++++ .../spaces/enterBeforeShortEntryOneLine.kt | 6 ++++++ .../editor/MultiLineStringIndentTestGenerated.java | 12 ++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 idea/testData/editor/enterHandler/multilineString/spaces/enterBeforeLongEntryOneLine.kt create mode 100644 idea/testData/editor/enterHandler/multilineString/spaces/enterBeforeShortEntryOneLine.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/editor/KotlinMultilineStringEnterHandler.kt b/idea/src/org/jetbrains/kotlin/idea/editor/KotlinMultilineStringEnterHandler.kt index 8e000bd094a..51172301bfc 100644 --- a/idea/src/org/jetbrains/kotlin/idea/editor/KotlinMultilineStringEnterHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/editor/KotlinMultilineStringEnterHandler.kt @@ -273,7 +273,7 @@ class KotlinMultilineStringEnterHandler : EnterHandlerDelegateAdapter() { KtTokens.REGULAR_STRING_PART -> { // Ok } - KtTokens.CLOSING_QUOTE -> { + KtTokens.CLOSING_QUOTE, KtTokens.SHORT_TEMPLATE_ENTRY_START, KtTokens.LONG_TEMPLATE_ENTRY_START -> { if (element.startOffset != offset) { return null } diff --git a/idea/testData/editor/enterHandler/multilineString/spaces/enterBeforeLongEntryOneLine.kt b/idea/testData/editor/enterHandler/multilineString/spaces/enterBeforeLongEntryOneLine.kt new file mode 100644 index 00000000000..a9c817a105c --- /dev/null +++ b/idea/testData/editor/enterHandler/multilineString/spaces/enterBeforeLongEntryOneLine.kt @@ -0,0 +1,6 @@ +val className = 1 +val test = """${className}""" +//----- +val className = 1 +val test = """ + ${className}""".trimIndent() diff --git a/idea/testData/editor/enterHandler/multilineString/spaces/enterBeforeShortEntryOneLine.kt b/idea/testData/editor/enterHandler/multilineString/spaces/enterBeforeShortEntryOneLine.kt new file mode 100644 index 00000000000..c9cef1d4184 --- /dev/null +++ b/idea/testData/editor/enterHandler/multilineString/spaces/enterBeforeShortEntryOneLine.kt @@ -0,0 +1,6 @@ +val className = 1 +val test = """$className""" +//----- +val className = 1 +val test = """ + $className""".trimIndent() diff --git a/idea/tests/org/jetbrains/kotlin/idea/editor/MultiLineStringIndentTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/editor/MultiLineStringIndentTestGenerated.java index 0a4b4eeea31..be0ab634299 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/editor/MultiLineStringIndentTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/editor/MultiLineStringIndentTestGenerated.java @@ -104,12 +104,24 @@ public class MultiLineStringIndentTestGenerated extends AbstractMultiLineStringI doTest(fileName); } + @TestMetadata("enterBeforeLongEntryOneLine.kt") + public void testEnterBeforeLongEntryOneLine() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/enterHandler/multilineString/spaces/enterBeforeLongEntryOneLine.kt"); + doTest(fileName); + } + @TestMetadata("enterBeforeMarginChar.kt") public void testEnterBeforeMarginChar() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/enterHandler/multilineString/spaces/enterBeforeMarginChar.kt"); doTest(fileName); } + @TestMetadata("enterBeforeShortEntryOneLine.kt") + public void testEnterBeforeShortEntryOneLine() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/enterHandler/multilineString/spaces/enterBeforeShortEntryOneLine.kt"); + doTest(fileName); + } + @TestMetadata("enterInInfixMargin.kt") public void testEnterInInfixMargin() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/enterHandler/multilineString/spaces/enterInInfixMargin.kt");