Extend Selection: don't select lambda parameters if lambda is multiple lines (#2586)
#KT-29364 Fixed
This commit is contained in:
committed by
GitHub
parent
232be94738
commit
46907f861a
+2
@@ -23,6 +23,7 @@ import com.intellij.psi.PsiComment
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiWhiteSpace
|
import com.intellij.psi.PsiWhiteSpace
|
||||||
import com.intellij.psi.impl.source.tree.LeafPsiElement
|
import com.intellij.psi.impl.source.tree.LeafPsiElement
|
||||||
|
import org.jetbrains.kotlin.idea.refactoring.getLineNumber
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.siblings
|
import org.jetbrains.kotlin.psi.psiUtil.siblings
|
||||||
@@ -44,6 +45,7 @@ class KotlinStatementGroupSelectioner : ExtendWordSelectionHandlerBase() {
|
|||||||
.firstOrNull {
|
.firstOrNull {
|
||||||
// find preceding '{' or blank line
|
// find preceding '{' or blank line
|
||||||
it is LeafPsiElement && it.elementType == KtTokens.LBRACE || it is PsiWhiteSpace && it.getText()!!.count { it == '\n' } > 1
|
it is LeafPsiElement && it.elementType == KtTokens.LBRACE || it is PsiWhiteSpace && it.getText()!!.count { it == '\n' } > 1
|
||||||
|
|| (it is LeafPsiElement && it.elementType == KtTokens.ARROW && e.getLineNumber() != it.getLineNumber())
|
||||||
}
|
}
|
||||||
?.siblings(forward = true, withItself = false)
|
?.siblings(forward = true, withItself = false)
|
||||||
?.dropWhile { it is PsiWhiteSpace } // and take first non-whitespace element after it
|
?.dropWhile { it is PsiWhiteSpace } // and take first non-whitespace element after it
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo { it -> <caret>it + 1 }
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo { it -> <caret><selection>it</selection> + 1 }
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo { it -> <caret><selection>it + 1</selection> }
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo { <selection>it -> <caret>it + 1</selection> }
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo <selection>{ it -> <caret>it + 1 }</selection>
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo { it ->
|
||||||
|
<caret>it + 1
|
||||||
|
|
||||||
|
it + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo { it ->
|
||||||
|
<caret><selection>it</selection> + 1
|
||||||
|
|
||||||
|
it + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo { it ->
|
||||||
|
<caret><selection>it + 1</selection>
|
||||||
|
|
||||||
|
it + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo { it ->
|
||||||
|
<selection> <caret>it + 1
|
||||||
|
</selection>
|
||||||
|
it + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo { it ->
|
||||||
|
<selection> <caret>it + 1
|
||||||
|
|
||||||
|
it + 1
|
||||||
|
</selection> }
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo <selection>{ it ->
|
||||||
|
<caret>it + 1
|
||||||
|
|
||||||
|
it + 1
|
||||||
|
}</selection>
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo { it ->
|
||||||
|
it + 1
|
||||||
|
|
||||||
|
<caret>it + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo { it ->
|
||||||
|
it + 1
|
||||||
|
|
||||||
|
<caret><selection>it</selection> + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo { it ->
|
||||||
|
it + 1
|
||||||
|
|
||||||
|
<caret><selection>it + 1</selection>
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo { it ->
|
||||||
|
it + 1
|
||||||
|
|
||||||
|
<selection> <caret>it + 1
|
||||||
|
</selection> }
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo { it ->
|
||||||
|
<selection> it + 1
|
||||||
|
|
||||||
|
<caret>it + 1
|
||||||
|
</selection> }
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fun foo(f: (Int) -> Int) {}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo <selection>{ it ->
|
||||||
|
it + 1
|
||||||
|
|
||||||
|
<caret>it + 1
|
||||||
|
}</selection>
|
||||||
|
}
|
||||||
@@ -39,6 +39,12 @@ public class WordSelectionTest extends KotlinLightCodeInsightFixtureTestCase {
|
|||||||
|
|
||||||
public void testValueParametersInLambda() { doTest(); }
|
public void testValueParametersInLambda() { doTest(); }
|
||||||
|
|
||||||
|
public void testValueParametersInLambda2() { doTest(); }
|
||||||
|
|
||||||
|
public void testValueParametersInLambda3() { doTest(); }
|
||||||
|
|
||||||
|
public void testValueParametersInLambda4() { doTest(); }
|
||||||
|
|
||||||
public void testDocComment() { doTest(); }
|
public void testDocComment() { doTest(); }
|
||||||
|
|
||||||
public void testDocCommentOneLine() { doTest(); }
|
public void testDocCommentOneLine() { doTest(); }
|
||||||
|
|||||||
Reference in New Issue
Block a user