Conversion on copy paste:
Copy elements that are partially selected as text
This commit is contained in:
@@ -101,12 +101,17 @@ public class JavaCopyPastePostProcessor() : CopyPastePostProcessor<TextBlockTran
|
||||
converter: Converter): String {
|
||||
val result = StringBuilder()
|
||||
var currentRange = range
|
||||
val fileText = file.getText()!!
|
||||
while (!currentRange.isEmpty()) {
|
||||
val leafElement = findFirstLeafElementWhollyInRange(file, currentRange)
|
||||
if (leafElement == null) {
|
||||
break;
|
||||
val unconvertedSuffix = fileText.substring(currentRange.getStartOffset(), currentRange.getEndOffset())
|
||||
result.append(unconvertedSuffix)
|
||||
break
|
||||
}
|
||||
val elementToConvert = findTopMostParentWhollyInRange(currentRange, leafElement)
|
||||
val unconvertedPrefix = fileText.substring(currentRange.getStartOffset(), elementToConvert.getTextRange()!!.getStartOffset())
|
||||
result.append(unconvertedPrefix)
|
||||
val converted = converter.elementToKotlin(elementToConvert)
|
||||
if (converted.isNotEmpty()) {
|
||||
result.append(converted)
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
class A {
|
||||
|
||||
|
||||
fun foo() {}
|
||||
|
||||
fun bar() {}
|
||||
|
||||
|
||||
|
||||
fun f() {}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
class A {
|
||||
|
||||
<selection>
|
||||
void foo() {}
|
||||
|
||||
void bar() {}
|
||||
|
||||
</selection>
|
||||
void foobar() {}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
class A {
|
||||
|
||||
<caret>
|
||||
|
||||
fun f() {}
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
class
|
||||
class Some
|
||||
+5
@@ -46,6 +46,11 @@ public class JavaToKotlinCopyPasteConversionTestGenerated extends AbstractJavaTo
|
||||
doTest("idea/testData/copyPaste/conversion/Constructor.java");
|
||||
}
|
||||
|
||||
@TestMetadata("HalfTheWhiteSpace.java")
|
||||
public void testHalfTheWhiteSpace() throws Exception {
|
||||
doTest("idea/testData/copyPaste/conversion/HalfTheWhiteSpace.java");
|
||||
}
|
||||
|
||||
@TestMetadata("Imports1.java")
|
||||
public void testImports1() throws Exception {
|
||||
doTest("idea/testData/copyPaste/conversion/Imports1.java");
|
||||
|
||||
Reference in New Issue
Block a user