mirror of
				https://github.com/chylex/IntelliJ-IdeaVim.git
				synced 2025-10-31 11:17:13 +01:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			b7c1ba4f02
			...
			customized
		
	
	| 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-1 | 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