Extend selection: select escaped identifier name without backticks (KT-31499)

#KT-31499 Fixed
This commit is contained in:
Toshiaki Kameyama
2019-05-23 14:26:48 +09:00
committed by Nikolay Krasko
parent 9b04af9968
commit 8afa938723
7 changed files with 38 additions and 0 deletions
@@ -616,6 +616,7 @@
<extendWordSelectionHandler implementation="org.jetbrains.kotlin.idea.editor.wordSelection.KotlinBracketsSelectioner"/>
<extendWordSelectionHandler implementation="org.jetbrains.kotlin.idea.editor.wordSelection.KotlinLabeledReturnSelectioner"/>
<extendWordSelectionHandler implementation="org.jetbrains.kotlin.idea.editor.wordSelection.KotlinClassMemberSelectioner"/>
<extendWordSelectionHandler implementation="org.jetbrains.kotlin.idea.editor.wordSelection.KotlinEscapedIdentifierSelectioner"/>
<basicWordSelectionFilter implementation="org.jetbrains.kotlin.idea.editor.wordSelection.KotlinWordSelectionFilter"/>
<typedHandler implementation="org.jetbrains.kotlin.idea.editor.KotlinTypedHandler"/>
@@ -0,0 +1,27 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.idea.editor.wordSelection
import com.intellij.codeInsight.editorActions.ExtendWordSelectionHandlerBase
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.psiUtil.endOffset
import org.jetbrains.kotlin.psi.psiUtil.startOffset
class KotlinEscapedIdentifierSelectioner : ExtendWordSelectionHandlerBase() {
override fun canSelect(e: PsiElement) = e.node.elementType == KtTokens.IDENTIFIER
override fun select(e: PsiElement, editorText: CharSequence, cursorOffset: Int, editor: Editor): List<TextRange>? {
val text = e.text
if (!text.startsWith('`') || !text.endsWith('`')) return null
val start = e.startOffset + 1
val end = e.endOffset - 1
if (start >= end) return null
return listOf(TextRange(start, end))
}
}
+2
View File
@@ -0,0 +1,2 @@
fun `my <caret>function`() {
}
+2
View File
@@ -0,0 +1,2 @@
fun `my <selection><caret>function</selection>`() {
}
+2
View File
@@ -0,0 +1,2 @@
fun `<selection>my <caret>function</selection>`() {
}
+2
View File
@@ -0,0 +1,2 @@
fun <selection>`my <caret>function`</selection>() {
}
@@ -135,6 +135,8 @@ public class WordSelectionTest extends KotlinLightCodeInsightFixtureTestCase {
public void testClassMember4() { doTest(); }
public void testClassMember5() { doTest(); }
public void testEscapedIdentifier() { doTest(); }
private void doTest() {
String dirName = getTestName(false);