From 9fa89b72e59ee40ab47ffb124b68e3669506a40c Mon Sep 17 00:00:00 2001 From: Maksim Kurnikov Date: Thu, 16 Jan 2025 15:26:17 +0100 Subject: [PATCH] extend selection for fields declaration block (#269) --- .../wordSelection/MvListSelectionHandler.kt | 3 +++ .../kotlin/org/move/lang/core/MvTokenType.kt | 4 ++-- .../MvListSelectionHandlerTest.kt | 23 +++++++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/org/move/ide/wordSelection/MvListSelectionHandler.kt b/src/main/kotlin/org/move/ide/wordSelection/MvListSelectionHandler.kt index 150f257c1..2c8a56fb0 100644 --- a/src/main/kotlin/org/move/ide/wordSelection/MvListSelectionHandler.kt +++ b/src/main/kotlin/org/move/ide/wordSelection/MvListSelectionHandler.kt @@ -6,7 +6,9 @@ import com.intellij.openapi.util.TextRange import com.intellij.psi.PsiElement import org.move.lang.core.LIST_CLOSE_SYMBOLS import org.move.lang.core.LIST_OPEN_SYMBOLS +import org.move.lang.core.psi.MvBlockFields import org.move.lang.core.psi.MvFunctionParameterList +import org.move.lang.core.psi.MvTupleFields import org.move.lang.core.psi.MvTypeArgumentList import org.move.lang.core.psi.MvTypeParameterList import org.move.lang.core.psi.MvValueArgumentList @@ -15,6 +17,7 @@ class MvListSelectionHandler : ExtendWordSelectionHandlerBase() { override fun canSelect(e: PsiElement): Boolean = e is MvFunctionParameterList || e is MvValueArgumentList || e is MvTypeParameterList || e is MvTypeArgumentList + || e is MvBlockFields || e is MvTupleFields override fun select( e: PsiElement, diff --git a/src/main/kotlin/org/move/lang/core/MvTokenType.kt b/src/main/kotlin/org/move/lang/core/MvTokenType.kt index 5edb10533..bcdf67f00 100644 --- a/src/main/kotlin/org/move/lang/core/MvTokenType.kt +++ b/src/main/kotlin/org/move/lang/core/MvTokenType.kt @@ -50,5 +50,5 @@ val MOVE_BINARY_OPS = tokenSetOf( AND_EQ, OR_EQ, XOR_EQ, GT_GT_EQ, LT_LT_EQ, ) -val LIST_OPEN_SYMBOLS = tokenSetOf(L_PAREN, LT) -val LIST_CLOSE_SYMBOLS = tokenSetOf(R_PAREN, GT) +val LIST_OPEN_SYMBOLS = tokenSetOf(L_PAREN, LT, L_BRACE) +val LIST_CLOSE_SYMBOLS = tokenSetOf(R_PAREN, GT, R_BRACE) diff --git a/src/test/kotlin/org/move/ide/wordSelection/MvListSelectionHandlerTest.kt b/src/test/kotlin/org/move/ide/wordSelection/MvListSelectionHandlerTest.kt index 28d2f5f1e..25c5ef3bb 100644 --- a/src/test/kotlin/org/move/ide/wordSelection/MvListSelectionHandlerTest.kt +++ b/src/test/kotlin/org/move/ide/wordSelection/MvListSelectionHandlerTest.kt @@ -104,4 +104,27 @@ class MvListSelectionHandlerTest : MvSelectionHandlerTestBase() { fun main(): Resultol> {} } """) + + fun `test struct field list`() = doTest(""" + module 0x1::m { + struct Ss has key { def_val: u8, rut_def_val: u16 } + } + """, """ + module 0x1::m { + struct Ss has key { def_val: u8, rut_def_val: u16 } + } + """, """ + module 0x1::m { + struct Ss has key { def_val: u8, rut_def_val: u16 } + } + """, """ + module 0x1::m { + struct Ss has key { def_val: u8, rut_def_val: u16 } + } + """, """ + module 0x1::m { + struct Ss has key { def_val: u8, rut_def_val: u16 } + } + """ + ) }