Handle \r line endings in plaintext j2k

#KT-35831 #EA-209568 Fixed
This commit is contained in:
Vladimir Dolzhenko
2020-01-08 14:02:53 +01:00
parent dc6adc805a
commit a63123b556
3 changed files with 8 additions and 6 deletions
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.idea.conversion.copy package org.jetbrains.kotlin.idea.conversion.copy
import com.intellij.codeInsight.editorActions.CopyPastePostProcessor import com.intellij.codeInsight.editorActions.CopyPastePostProcessor
import com.intellij.codeInsight.editorActions.TextBlockTransferable
import com.intellij.codeInsight.editorActions.TextBlockTransferableData import com.intellij.codeInsight.editorActions.TextBlockTransferableData
import com.intellij.ide.highlighter.JavaFileType import com.intellij.ide.highlighter.JavaFileType
import com.intellij.openapi.diagnostic.ControlFlowException import com.intellij.openapi.diagnostic.ControlFlowException
@@ -28,7 +29,6 @@ import com.intellij.openapi.module.Module
import com.intellij.openapi.project.DumbService import com.intellij.openapi.project.DumbService
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Ref import com.intellij.openapi.util.Ref
import com.intellij.openapi.util.TextRange
import com.intellij.psi.* import com.intellij.psi.*
import com.intellij.util.LocalTimeCounter import com.intellij.util.LocalTimeCounter
import org.jetbrains.annotations.TestOnly import org.jetbrains.annotations.TestOnly
@@ -108,7 +108,7 @@ class ConvertTextJavaCopyPasteProcessor : CopyPastePostProcessor<TextBlockTransf
if (DumbService.getInstance(project).isDumb) return if (DumbService.getInstance(project).isDumb) return
if (!KotlinEditorOptions.getInstance().isEnableJavaToKotlinConversion) return //TODO: use another option? if (!KotlinEditorOptions.getInstance().isEnableJavaToKotlinConversion) return //TODO: use another option?
val text = (values.single() as MyTransferableData).text val text = TextBlockTransferable.convertLineSeparators(editor, (values.single() as MyTransferableData).text, values)
val psiDocumentManager = PsiDocumentManager.getInstance(project) val psiDocumentManager = PsiDocumentManager.getInstance(project)
val targetFile = psiDocumentManager.getPsiFile(editor.document) as? KtFile ?: return val targetFile = psiDocumentManager.getPsiFile(editor.document) as? KtFile ?: return
@@ -6,10 +6,12 @@
package org.jetbrains.kotlin.idea.conversion.copy package org.jetbrains.kotlin.idea.conversion.copy
import com.intellij.openapi.actionSystem.IdeActions import com.intellij.openapi.actionSystem.IdeActions
import com.intellij.openapi.ide.CopyPasteManager
import org.jetbrains.kotlin.idea.editor.KotlinEditorOptions import org.jetbrains.kotlin.idea.editor.KotlinEditorOptions
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.test.InTextDirectivesUtils
import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestUtils
import java.awt.datatransfer.StringSelection
import java.io.File import java.io.File
abstract class AbstractTextJavaToKotlinCopyPasteConversionTest : AbstractJ2kCopyPasteTest() { abstract class AbstractTextJavaToKotlinCopyPasteConversionTest : AbstractJ2kCopyPasteTest() {
@@ -33,11 +35,11 @@ abstract class AbstractTextJavaToKotlinCopyPasteConversionTest : AbstractJ2kCopy
val fileName = fileName() val fileName = fileName()
myFixture.configureByFile(fileName) myFixture.configureByFile(fileName)
val fileText = myFixture.editor.document.text val fileText = testDataFile().readText()
val noConversionExpected = InTextDirectivesUtils.findListWithPrefixes(fileText, "// NO_CONVERSION_EXPECTED").isNotEmpty() val noConversionExpected = InTextDirectivesUtils.findListWithPrefixes(fileText, "// NO_CONVERSION_EXPECTED").isNotEmpty()
myFixture.editor.selectionModel.setSelection(0, fileText.length) // copy a file content directly to a buffer to keep it as is (keep original line endings etc)
myFixture.performEditorAction(IdeActions.ACTION_COPY) CopyPasteManager.getInstance().setContents(StringSelection(fileText))
configureByDependencyIfExists(fileName.replace(".txt", ".dependency.kt")) configureByDependencyIfExists(fileName.replace(".txt", ".dependency.kt"))
configureByDependencyIfExists(fileName.replace(".txt", ".dependency.java")) configureByDependencyIfExists(fileName.replace(".txt", ".dependency.java"))