diff --git a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt index 2f143afbe..50f64a67d 100644 --- a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt +++ b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt @@ -76,6 +76,13 @@ sealed class TillCharacterMotion( ) } injector.motion.setLastFTCmd(tillCharacterMotionType, argument.character) + + val offset = if (!finishBeforeCharacter) "" + else if (direction == Direction.FORWARDS) "s-1" + else "s+1" + + injector.searchGroup.setLastSearchState(argument.character.let { if (it == '.') "\\." else it.toString() }, offset, direction) + return res.toMotionOrError() } } diff --git a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroup.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroup.kt index c69407eec..76ef5a033 100644 --- a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroup.kt +++ b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroup.kt @@ -206,4 +206,17 @@ interface VimSearchGroup { * Returns true if any text is selected in the visible editors, false otherwise. */ fun isSomeTextHighlighted(): Boolean + + /** + * Sets the last search state purely for tests + * + * @param pattern The pattern to save. This is the last search pattern, not the last substitute pattern + * @param patternOffset The pattern offset, e.g. `/{pattern}/{offset}` + * @param direction The direction to search + */ + fun setLastSearchState( + pattern: String, + patternOffset: String, + direction: Direction, + ) } diff --git a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroupBase.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroupBase.kt index b0b09237c..94d17b258 100644 --- a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroupBase.kt +++ b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroupBase.kt @@ -1425,8 +1425,7 @@ abstract class VimSearchGroupBase : VimSearchGroup { * @param patternOffset The pattern offset, e.g. `/{pattern}/{offset}` * @param direction The direction to search */ - @TestOnly - fun setLastSearchState( + override fun setLastSearchState( pattern: String, patternOffset: String, direction: Direction,