mirror of
https://github.com/chylex/IntelliJ-IdeaVim.git
synced 2025-08-17 16:31:45 +02:00
Compare commits
2 Commits
b7c1ba4f02
...
1acf5d682d
Author | SHA1 | Date | |
---|---|---|---|
1acf5d682d
|
|||
f2832f7dc2
|
@@ -20,7 +20,7 @@ ideaVersion=2025.1
|
|||||||
# Values for type: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#intellij-extension-type
|
# Values for type: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#intellij-extension-type
|
||||||
ideaType=IC
|
ideaType=IC
|
||||||
instrumentPluginCode=true
|
instrumentPluginCode=true
|
||||||
version=chylex-50
|
version=chylex-51
|
||||||
javaVersion=21
|
javaVersion=21
|
||||||
remoteRobotVersion=0.11.23
|
remoteRobotVersion=0.11.23
|
||||||
antlrVersion=4.10.1
|
antlrVersion=4.10.1
|
||||||
|
@@ -25,15 +25,19 @@ import com.intellij.openapi.diagnostic.thisLogger
|
|||||||
import com.intellij.openapi.editor.actionSystem.DocCommandGroupId
|
import com.intellij.openapi.editor.actionSystem.DocCommandGroupId
|
||||||
import com.intellij.openapi.progress.util.ProgressIndicatorUtils
|
import com.intellij.openapi.progress.util.ProgressIndicatorUtils
|
||||||
import com.intellij.openapi.util.NlsContexts
|
import com.intellij.openapi.util.NlsContexts
|
||||||
|
import com.intellij.refactoring.actions.BaseRefactoringAction
|
||||||
import com.maddyhome.idea.vim.RegisterActions
|
import com.maddyhome.idea.vim.RegisterActions
|
||||||
import com.maddyhome.idea.vim.api.ExecutionContext
|
import com.maddyhome.idea.vim.api.ExecutionContext
|
||||||
import com.maddyhome.idea.vim.api.NativeAction
|
import com.maddyhome.idea.vim.api.NativeAction
|
||||||
import com.maddyhome.idea.vim.api.VimActionExecutor
|
import com.maddyhome.idea.vim.api.VimActionExecutor
|
||||||
import com.maddyhome.idea.vim.api.VimEditor
|
import com.maddyhome.idea.vim.api.VimEditor
|
||||||
|
import com.maddyhome.idea.vim.api.injector
|
||||||
import com.maddyhome.idea.vim.command.OperatorArguments
|
import com.maddyhome.idea.vim.command.OperatorArguments
|
||||||
import com.maddyhome.idea.vim.handler.EditorActionHandlerBase
|
import com.maddyhome.idea.vim.handler.EditorActionHandlerBase
|
||||||
import com.maddyhome.idea.vim.newapi.IjNativeAction
|
import com.maddyhome.idea.vim.newapi.IjNativeAction
|
||||||
import com.maddyhome.idea.vim.newapi.ij
|
import com.maddyhome.idea.vim.newapi.ij
|
||||||
|
import com.maddyhome.idea.vim.state.mode.Mode
|
||||||
|
import com.maddyhome.idea.vim.state.mode.inVisualMode
|
||||||
import org.jetbrains.annotations.NonNls
|
import org.jetbrains.annotations.NonNls
|
||||||
import java.awt.Component
|
import java.awt.Component
|
||||||
import javax.swing.JComponent
|
import javax.swing.JComponent
|
||||||
@@ -70,6 +74,12 @@ internal class IjActionExecutor : VimActionExecutor {
|
|||||||
thisLogger().error("Actions cannot be updated when write-action is running or pending")
|
thisLogger().error("Actions cannot be updated when write-action is running or pending")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val startVisualModeType = (editor?.mode as? Mode.VISUAL)?.selectionType
|
||||||
|
val startVisualCaretSelection = if (editor != null && startVisualModeType != null && action.action !is BaseRefactoringAction)
|
||||||
|
editor.primaryCaret().let { Triple(it.offset, it.selectionStart, it.selectionEnd) }
|
||||||
|
else
|
||||||
|
null
|
||||||
|
|
||||||
val ijAction = (action as IjNativeAction).action
|
val ijAction = (action as IjNativeAction).action
|
||||||
try {
|
try {
|
||||||
isRunningActionFromVim = true
|
isRunningActionFromVim = true
|
||||||
@@ -79,6 +89,20 @@ internal class IjActionExecutor : VimActionExecutor {
|
|||||||
val place = ijAction.choosePlace()
|
val place = ijAction.choosePlace()
|
||||||
val res = ActionManager.getInstance().tryToExecute(ijAction, null, contextComponent, place, true)
|
val res = ActionManager.getInstance().tryToExecute(ijAction, null, contextComponent, place, true)
|
||||||
res.waitFor(5_000)
|
res.waitFor(5_000)
|
||||||
|
|
||||||
|
if (startVisualModeType != null && startVisualCaretSelection != null) {
|
||||||
|
val primaryCaret = editor.primaryCaret()
|
||||||
|
val endVisualCaretOffset = primaryCaret.offset
|
||||||
|
if (startVisualCaretSelection.first != endVisualCaretOffset) {
|
||||||
|
if (!editor.inVisualMode || (editor.mode as Mode.VISUAL).selectionType != startVisualModeType) {
|
||||||
|
injector.visualMotionGroup.toggleVisual(editor, 1, 0, startVisualModeType)
|
||||||
|
}
|
||||||
|
primaryCaret.moveToOffset(startVisualCaretSelection.first)
|
||||||
|
primaryCaret.setSelection(startVisualCaretSelection.second, startVisualCaretSelection.third)
|
||||||
|
primaryCaret.moveToOffset(endVisualCaretOffset)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return res.isDone
|
return res.isDone
|
||||||
} finally {
|
} finally {
|
||||||
isRunningActionFromVim = false
|
isRunningActionFromVim = false
|
||||||
|
Reference in New Issue
Block a user