Extend selection: select escaped identifier name without backticks (KT-31499)
#KT-31499 Fixed
This commit is contained in:
committed by
Nikolay Krasko
parent
9b04af9968
commit
8afa938723
@@ -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"/>
|
||||
|
||||
+27
@@ -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))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fun `my <caret>function`() {
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fun `my <selection><caret>function</selection>`() {
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fun `<selection>my <caret>function</selection>`() {
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user