Conversion on copy paste:

Copy elements that are partially selected as text
This commit is contained in:
Pavel V. Talanov
2013-12-20 18:16:06 +04:00
parent 3a4b7e07f8
commit 5408c6ea77
6 changed files with 39 additions and 2 deletions
@@ -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
@@ -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");