1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2026-06-15 01:16:32 +02:00

Compare commits

..

25 Commits

Author SHA1 Message Date
3f229ed949 Set plugin version to chylex-53 2026-03-27 22:17:36 +01:00
b28478f098 Preserve visual mode after executing IDE action 2026-03-27 22:17:36 +01:00
b09b9522af Make g0/g^/g$ work with soft wraps 2026-03-27 22:17:36 +01:00
4144d575a2 Make gj/gk jump over soft wraps 2026-03-27 22:17:36 +01:00
8a57fc3fb6 Make camelCase motions adjust based on direction of visual selection 2026-03-27 22:17:35 +01:00
d2e96a7989 Make search highlights temporary 2026-03-27 22:17:35 +01:00
8ebb20f742 Exit insert mode after refactoring 2026-03-27 22:17:35 +01:00
5f07f71d11 Add action to run last macro in all opened files 2026-03-27 22:17:35 +01:00
0cbc00be41 Stop macro execution after a failed search 2026-03-27 22:17:35 +01:00
2a08def7e4 Revert per-caret registers 2026-03-27 22:17:35 +01:00
a9cd6250a0 Apply scrolloff after executing native IDEA actions 2026-03-27 22:17:35 +01:00
595baa79dc Automatically add unambiguous imports after running a macro 2026-03-27 22:17:35 +01:00
95abad99db Fix(VIM-3986): Exception when pasting register contents containing new line 2026-03-27 22:17:35 +01:00
cf17f4e586 Fix(VIM-3179): Respect virtual space below editor (imperfectly) 2026-03-27 22:17:35 +01:00
d7f77d1ac1 Fix(VIM-3178): Workaround to support "Jump to Source" action mapping 2026-03-27 22:17:35 +01:00
9b7e497dff Update search register when using f/t 2026-03-27 22:17:35 +01:00
a0d4591747 Add support for count for visual and line motion surround 2026-03-27 22:17:35 +01:00
27fdbd667e Fix vim-surround not working with multiple cursors
Fixes multiple cursors with vim-surround commands `cs, ds, S` (but not `ys`).
2026-03-27 22:17:35 +01:00
3af7dfc772 Fix(VIM-696): Restore visual mode after undo/redo, and disable incompatible actions 2026-03-27 22:17:34 +01:00
d08e250c1d Respect count with <Action> mappings 2026-03-27 22:17:34 +01:00
cc2cd5c7cb Change matchit plugin to use HTML patterns in unrecognized files 2026-03-27 22:17:34 +01:00
f4e71e500b Reset insert mode when switching active editor 2026-03-27 22:17:34 +01:00
cf26501c8c Remove notifications about configuration options 2026-03-27 22:17:34 +01:00
692382f4a8 Remove AI 2026-03-27 22:17:34 +01:00
e27932583b Set custom plugin version 2026-03-27 22:09:48 +01:00
6 changed files with 34 additions and 10 deletions

View File

@@ -112,7 +112,7 @@ dependencies {
testFramework(TestFrameworkType.Platform) testFramework(TestFrameworkType.Platform)
testFramework(TestFrameworkType.JUnit5) testFramework(TestFrameworkType.JUnit5)
plugin("com.intellij.classic.ui", "261.22158.185") plugin("com.intellij.classic.ui", "251.23774.318")
pluginModule(runtimeOnly(project(":modules:ideavim-common"))) pluginModule(runtimeOnly(project(":modules:ideavim-common")))
pluginModule(runtimeOnly(project(":modules:ideavim-frontend"))) pluginModule(runtimeOnly(project(":modules:ideavim-frontend")))
@@ -303,6 +303,11 @@ tasks {
} }
}) })
} }
buildPlugin {
dependsOn(sourcesJar)
from(sourcesJar) { into("lib/src") }
}
} }
java { java {
@@ -375,7 +380,13 @@ intellijPlatform {
) )
ideaVersion { ideaVersion {
sinceBuild.set("253") // Let the Gradle plugin set the since-build version. It defaults to the version of the IDE we're building against
// specified as two components, `{branch}.{build}` (e.g., "241.15989"). There is no third component specified.
// The until-build version defaults to `{branch}.*`, but we want to support _all_ future versions, so we set it
// with a null provider (the provider is important).
// By letting the Gradle plugin handle this, the Plugin DevKit IntelliJ plugin cannot help us with the "Usage of
// IntelliJ API not available in older IDEs" inspection. However, since our since-build is the version we compile
// against, we can never get an API that's newer - it would be an unresolved symbol.
untilBuild.set(provider { null }) untilBuild.set(provider { null })
} }
} }

View File

@@ -16,11 +16,11 @@
# https://data.services.jetbrains.com/products?code=IU # https://data.services.jetbrains.com/products?code=IU
# Maven releases are here: https://www.jetbrains.com/intellij-repository/releases # Maven releases are here: https://www.jetbrains.com/intellij-repository/releases
# And snapshots: https://www.jetbrains.com/intellij-repository/snapshots # And snapshots: https://www.jetbrains.com/intellij-repository/snapshots
ideaVersion=2026.1 ideaVersion=2025.3
# 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=IU ideaType=IU
instrumentPluginCode=true instrumentPluginCode=true
version=chylex-54 version=chylex-53
javaVersion=21 javaVersion=21
remoteRobotVersion=0.11.23 remoteRobotVersion=0.11.23
antlrVersion=4.10.1 antlrVersion=4.10.1

View File

@@ -49,6 +49,7 @@ import com.maddyhome.idea.vim.group.NotificationService
import com.maddyhome.idea.vim.group.visual.IdeaSelectionControl import com.maddyhome.idea.vim.group.visual.IdeaSelectionControl
import com.maddyhome.idea.vim.helper.exitSelectMode import com.maddyhome.idea.vim.helper.exitSelectMode
import com.maddyhome.idea.vim.helper.exitVisualMode import com.maddyhome.idea.vim.helper.exitVisualMode
import com.maddyhome.idea.vim.helper.hasVisualSelection
import com.maddyhome.idea.vim.helper.isIdeaVimDisabledHere import com.maddyhome.idea.vim.helper.isIdeaVimDisabledHere
import com.maddyhome.idea.vim.newapi.globalIjOptions import com.maddyhome.idea.vim.newapi.globalIjOptions
import com.maddyhome.idea.vim.newapi.initInjector import com.maddyhome.idea.vim.newapi.initInjector
@@ -332,6 +333,23 @@ internal object IdeaSpecifics {
vimEditor.exitMode() vimEditor.exitMode()
vimEditor.mode = Mode.NORMAL() vimEditor.mode = Mode.NORMAL()
} }
} else {
// IdeaSelectionControl will not be called if we're moving to a new variable with no change in selection.
// And if we're moving to the end of the template, the change in selection will reset us to Normal because
// IdeaSelectionControl will be called when the template is no longer active.
if ((!editor.selectionModel.hasSelection() && !vimEditor.mode.hasVisualSelection) || newIndex == -1) {
if (vimEditor.isIdeaRefactorModeSelect) {
if (vimEditor.mode !is Mode.INSERT) {
vimEditor.exitMode()
injector.application.runReadAction {
val context = injector.executionContextManager.getEditorExecutionContext(editor.vim)
VimPlugin.getChange().insertBeforeCaret(editor.vim, context)
}
}
} else {
vimEditor.mode = Mode.NORMAL()
}
}
} }
} }
} }

View File

@@ -12,7 +12,6 @@ import com.intellij.ide.ui.LafManagerListener
import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.editor.Editor import com.intellij.openapi.editor.Editor
import com.intellij.openapi.wm.impl.IdeBackgroundUtil import com.intellij.openapi.wm.impl.IdeBackgroundUtil
import com.intellij.openapi.wm.impl.ToolWindowManagerImpl
import com.intellij.ui.ClientProperty import com.intellij.ui.ClientProperty
import com.intellij.ui.JBColor import com.intellij.ui.JBColor
import com.intellij.ui.components.JBPanel import com.intellij.ui.components.JBPanel
@@ -91,7 +90,6 @@ class OutputPanel private constructor(
// Suppress the fancy frame background used in the Islands theme // Suppress the fancy frame background used in the Islands theme
ClientProperty.putRecursive(this, IdeBackgroundUtil.NO_BACKGROUND, true) ClientProperty.putRecursive(this, IdeBackgroundUtil.NO_BACKGROUND, true)
putClientProperty(ToolWindowManagerImpl.PARENT_COMPONENT, editor.component)
// Initialize panel // Initialize panel
setLayout(BorderLayout(0, 0)) setLayout(BorderLayout(0, 0))

View File

@@ -15,7 +15,6 @@ import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.editor.Editor import com.intellij.openapi.editor.Editor
import com.intellij.openapi.editor.colors.EditorColors import com.intellij.openapi.editor.colors.EditorColors
import com.intellij.openapi.wm.IdeFocusManager import com.intellij.openapi.wm.IdeFocusManager
import com.intellij.openapi.wm.impl.ToolWindowManagerImpl
import com.intellij.ui.DocumentAdapter import com.intellij.ui.DocumentAdapter
import com.intellij.util.IJSwingUtilities import com.intellij.util.IJSwingUtilities
import com.maddyhome.idea.vim.EventFacade import com.maddyhome.idea.vim.EventFacade
@@ -145,7 +144,6 @@ class ExEntryPanel private constructor() : JPanel(), VimCommandLine {
glassPane.addComponentListener(resizePanelListener) glassPane.addComponentListener(resizePanelListener)
positionPanel() positionPanel()
glassPane.isVisible = true glassPane.isVisible = true
putClientProperty(ToolWindowManagerImpl.PARENT_COMPONENT, parent)
entry.requestFocusInWindow() entry.requestFocusInWindow()
} }
this.isActive = true this.isActive = true
@@ -193,7 +191,6 @@ class ExEntryPanel private constructor() : JPanel(), VimCommandLine {
requestFocus(parent!!) requestFocus(parent!!)
} }
putClientProperty(ToolWindowManagerImpl.PARENT_COMPONENT, null)
oldGlass!!.removeComponentListener(resizePanelListener) oldGlass!!.removeComponentListener(resizePanelListener)
oldGlass!!.isVisible = false oldGlass!!.isVisible = false
oldGlass!!.remove(this) oldGlass!!.remove(this)

View File

@@ -20,5 +20,5 @@ import com.maddyhome.idea.vim.vimscript.model.functions.BuiltinFunctionHandler
@VimscriptFunction(name = "pumvisible") @VimscriptFunction(name = "pumvisible")
internal class PopupMenuVisibleFunctionHandler : BuiltinFunctionHandler<VimInt>() { internal class PopupMenuVisibleFunctionHandler : BuiltinFunctionHandler<VimInt>() {
override fun doFunction(arguments: Arguments, editor: VimEditor, context: ExecutionContext, vimContext: VimLContext) = override fun doFunction(arguments: Arguments, editor: VimEditor, context: ExecutionContext, vimContext: VimLContext) =
(CompletionService.getCompletionService().currentCompletion != null).asVimInt() (CompletionService.getCompletionService().currentCompletion == null).asVimInt()
} }