Commit Graph
10430 Commits
Author SHA1 Message Date
IdeaVim Bot 9f9dfb36e7 Add AndDe-gourav to contributors list 2026-05-11 10:08:40 +00:00
AndDe-gourav 8ba793c99e Fixed createFile function 2026-05-11 06:36:04 +00:00
AndDe-gourav 304484714a Add tests for :edit file creation (VIM-266)
# Conflicts:
#	src/test/java/org/jetbrains/plugins/ideavim/ex/implementation/commands/EditFileCreateTest.kt
#	tests/split-mode-tests/src/test/kotlin/com/maddyhome/idea/vim/split/EditFileCreateSplitTest.kt
2026-05-11 06:36:04 +00:00
AndDe-gourav 3d4ef6b366 Use VfsUtil.createDirectoryIfMissing instead of blocking IO 2026-05-11 06:36:04 +00:00
AndDe-gourav 20e433f303 Implement Vim-compatible :edit behavior by creating file if it does not exist 2026-05-11 06:36:04 +00:00
Alex PlateandClaude Opus 4.7 16ac7e3806 Suppress acejump package warning in plugin verification
After bumping intellij-platform-gradle-plugin to 2.16.0, the
verifier defaults to checking against two IDEs (latest stable +
EAP) and reports "Package 'org.acejump' is not found" twice. The
verifier's classpath only contains bundled IDE plugins; AceJump
is a third-party Marketplace plugin we integrate with optionally
in :modules:ideavim-acejump.

Add "org.acejump" to externalPrefixes so the verifier knows those
references come from outside the IDE's own bundle and shouldn't
fail compatibility verification.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 18:28:15 +03:00
Alex PlateandClaude Opus 4.7 8182d3ba17 Add IntelliJ 2026.1 to TeamCity test matrix
Now that 2026.1 is the current release (matches the default
ideaVersion in gradle.properties), run the standard test suite
against it alongside Latest EAP and 2025.3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 18:22:03 +03:00
Alex PlateandClaude Opus 4.7 f7a5585462 Disable IdeaVimExtension in compatibility check
The plugin's KeepEnglishInNormalAndRestoreInInsertExtension.init()
calls exExceptionMessage("option not found") with a bundle key that
doesn't exist in IdeaVimEngineBundle.properties, so plugin-verifier
flags it as a missing-property compatibility problem against
latest-IU. This is a bug in the external plugin, not IdeaVim.

Comment out the verifier invocation until upstream
(github.com/hadix-lin/ideavim_extension) is fixed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 17:33:29 +03:00
Alex PlateandClaude Opus 4.7 0940cded06 Use non-inline EventFields.Enum overload to fix 262 EAP compile
The 262 EAP platform jars are compiled with -target 25 (bytecode
v69). The reified inline form EventFields.Enum<HandledModes>(name)
forces Kotlin to inline that platform bytecode into our :compileKotlin
output, which targets 21 (bytecode v65) and rejects the inline with:

  Cannot inline bytecode built with JVM bytecode version 69 into
  bytecode that is being built with JVM target 21.

Switch to the @JvmStatic @JvmOverloads overload that takes
Class<T> — same behavior (defaultEnumTransform), no inlining.
This is the only inline-reified call from EventFields in our codebase.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 17:28:44 +03:00
Alex PlateandClaude Opus 4.7 408db2c513 Inline IdeInfo in split-mode-tests to handle 262 EAP API change
The 262 EAP refactored ide-starter (commit aa3d516047 in
intellij-community, "AT-2967 Compile time dependency on dedicated
IDE info"): IdeProductProvider was removed, and per-IDE info now
lives in dedicated modules accessed via IdeInfo.Companion.IdeaUltimate.

Constructing IdeInfo directly is the only form that compiles on
both 261 (default ideaVersion=2026.1) and 262 (LATEST-EAP-SNAPSHOT),
since the IdeInfo data-class signature is unchanged across the
refactor. Values mirror DefaultIdeaUltimate from the new
intellij.tools.ide.starter.product.idea.ultimate module.

This unblocks :tests:split-mode-tests:compileTestKotlin on the
Latest EAP TeamCity build, which was failing with "Unresolved
reference 'IdeProductProvider'".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 17:00:02 +03:00
Alex PlateandClaude Opus 4.7 7b10aecebb Bump IntelliJ Platform Gradle Plugin to 2.16.0
The latest IntelliJ EAP ships module-descriptors.xml with new
namespace and visibility attributes (e.g. namespace="jetbrains",
namespace="$legacy_jps_library") that 2.11.0's strict xmlutil
deserializer rejects with UnknownXmlFieldException, blocking
:intellijPlatformTestClasspath resolution and preventing :test
from being scheduled at all on the Latest EAP TeamCity build.

2.12 accepted namespace/visibility, 2.15 introduced a tolerant
parser for the 262.* IDE format, 2.16 added $legacy_jps_module
namespace handling. The positional 3-arg create(type, version,
Boolean) overload was dropped in 2.15, so property-tests is
switched to the lambda form already used by every other module.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 16:24:42 +03:00
Alex PlateandClaude Opus 4.7 8b74fa25a5 Register dev.ckob.lazygit in plugin compatibility checks
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 16:07:14 +03:00
Alex PlateandClaude Opus 4.7 7db9b0b58b Switch compatibility verifier download to GitHub Releases
Move from the JetBrains Space-hosted custom verifier jar to a release
asset on the AlexPl292/intellij-plugin-verifier fork, and document the
refresh workflow (pull upstream, re-apply the dev-channel patch, run
publish-verifier-cli.yml, bump the URL).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 15:48:43 +03:00
Alex Plate 0527ad3359 Remove TeamCity TypeScript scripts smoke test
The smoke test served its purpose of verifying TypeScript scripts
can run on TeamCity. Other scripts-ts/ automation is unaffected.
2026-05-08 12:34:21 +03:00
claude[bot]andClaude Sonnet 4.6 4f95756351 refactor(PlaybackRegisterAction): replace arrayOf workaround with idiomatic Kotlin
The `arrayOf(false)` pattern was a Java-style workaround for capturing a
mutable variable, unnecessary here since there are no lambdas involved.
Replace with a `var`, use `when` as an expression with a direct `return`,
and swap the manual while-loop counter for a `for` range.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 12:10:30 +03:00
Alex Plate c17bb06f8a Remove trailing whitespace in Graphemes.kt 2026-05-08 11:41:57 +03:00
claude[bot]andClaude Sonnet 4.6 7f23a06447 Update changelog: g; g, changelist navigation, tab command completion, VIM-4226 fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 06:16:26 +00:00
1grzyb1 5bb18a2cb7 feat(VIM-519): cycle through recent edits with g; and g,
Implements g; and g, to walk through the per-buffer change list, mirroring Neovim's b_changelist semantics. The list is fed by the backend's RecentPlacesListener over an RPC topic (the same pattern as the existing jump service), so it works in both monolith and split mode.
2026-05-06 08:37:14 +02:00
1grzyb1 7d6315af2d feat(VIM-258): tab command completion
Add command completion on tab press in ex panel. Now we support both file name completions and command completions
2026-05-05 10:24:14 +02:00
1grzyb1 ff7b392e67 fix(VIM-4226): check if editor is disposed on focus
There were race condition when user opened ex panel and after closing editor might be disposed for some reason which resulted in unhandled exception and complete loss of focus
2026-05-05 09:36:29 +02:00
claude[bot]andClaude Sonnet 4.6 2e5c5d815c Update changelog: mode() function, NERDTree fix, e flag fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-05 06:09:10 +00:00
1grzyb1 e8c12a5526 fix(VIM-4224): respect e flag in search patterns 2026-05-04 12:33:56 +02:00
1grzyb1 4fc912eee7 feat(VIM-3975): support vim mode() function 2026-05-04 12:18:02 +02:00
1grzyb1 f4418b833f fix(VIM-4196): restore file selection after esc in nerdtree 2026-05-04 11:40:27 +02:00
1grzyb1 925cdbd8ac fix(VIM-4211): commit window work with conventional commits plugin
Conventioal Commits plugin was replacing `Dummy.txt` commit window file with it's own. In this commit we redesign checking if editor is commit window by getting editor key for commit window
2026-05-04 10:10:46 +02:00
claude[bot]andClaude Sonnet 4.6 bc5ac2bcf4 Update changelog: VIM-4221 incsearch error sound fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 06:15:32 +00:00
dependabot[bot] 9278425a5d Bump org.jetbrains.kotlin:kotlin-stdlib from 2.3.10 to 2.3.21
Bumps [org.jetbrains.kotlin:kotlin-stdlib](https://github.com/JetBrains/kotlin) from 2.3.10 to 2.3.21.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.3.10...v2.3.21)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-stdlib
  dependency-version: 2.3.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-29 15:38:43 +00:00
dependabot[bot] 26b9515279 Bump gradle-wrapper from 9.4.1 to 9.5.0
Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.4.1 to 9.5.0.
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](https://github.com/gradle/gradle/compare/v9.4.1...v9.5.0)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-29 15:36:48 +00:00
1grzyb1andClaude Opus 4.7 a41f197bc5 VIM-3948: document VimEverywhere plugin
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 13:15:05 +02:00
1grzyb1andClaude Opus 4.7 e551bfe535 VIM-3948: rebind Toggle Hints to avoid AI Assistant conflict
Ctrl+\ collides with the JetBrains AI Assistant's "Ask AI in Editor"
binding. Move the hints overlay to Ctrl+Shift+\ on the default keymap
and Ctrl+Cmd+\ on macOS.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 13:15:05 +02:00
1grzyb1 093244c07d FIX(VIM-4221) Don't make angry sounds on search
When incsearch was true, we made the error sound on ech keypress if regex was invalid
2026-04-29 09:15:43 +02:00
claude[bot]andClaude Sonnet 4.6 a08c253e6c Update changelog: VIM-4202 C/C++ comment space fix, VIM-4219 null check
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 06:14:58 +00:00
1grzyb1 073d3b40d5 VIM-4202 Add space after c langauges comments
normally space is added by rider/clion backend which we cannot directlly execute as it is not running on JVM. Workaround is to specify space flag for comment handler
2026-04-28 13:13:56 +02:00
1grzyb1 281039c76e FIX(VIM-4219) check for in VimPLugin is not null
sometimes where the plugin was being unloaded, getInstance might return null
2026-04-28 12:38:51 +02:00
1grzyb1andClaude Opus 4.7 ec06a522da Wrap split mode tests with xvfb-run
The agent has Xvfb installed but no X server is actually running on
:99, so the frontend IDE crashes at startup with
'Can't connect to X11 window server using :99'. Use `xvfb-run -a` to
spin up an Xvfb on a free display for the duration of the build, and
let it manage DISPLAY itself (drop the static env.DISPLAY=:99 param).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 10:21:42 +02:00
1grzyb1andClaude Opus 4.7 c6ca4428ba Drop Xvfb startup from split mode tests script
Xvfb is already running on the agent, so the build step doesn't need
to start it. Reduce the step to just the gradle invocation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 09:29:29 +02:00
1grzyb1andClaude Opus 4.7 a440bcb108 Re-enable split mode tests in TeamCity
Xvfb is now installed on the TeamCity agent, so the VCS trigger and
the install step can be removed. Reverts the disable from 34196bc0d.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 09:00:26 +02:00
claude[bot]andClaude Sonnet 4.6 4be7a68ebd Update changelog: VIM-4209 Esc in Rider popup, VIM-4211 commit window fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 06:16:05 +00:00
1grzyb1 ec14d06ecd fix: make ideavim work in commit window 2026-04-27 13:14:32 +02:00
1grzyb1 a2b0e7b273 Fix(VIM-4209): handle esc in rider before popup
Popup from ctrl+space where handling esc key before everything and it never reached our rider esc handler
2026-04-27 13:12:50 +02:00
1grzyb1 4e9f3a5e11 Repair tests broken by octopus handler removal 2026-04-27 12:51:17 +02:00
1grzyb1 057e3f6d19 fix CommandParserTest after removing octopus
in VimTestCase there was check for octopus to pass enter/esc directly do editor but it was removed so we check now if we are in cmd line mode
2026-04-27 12:51:17 +02:00
Alex Plate b5d2f9c3d8 Fix(VIM-2974): Remove remaining octopus.handler references
Step 5/N of removing the octopus handler. Cleanup pass over build config,
CI workflows, and stale comments. No runtime behavior change.

- build.gradle.kts: drop systemProperty("octopus.handler", ...) from
  runIde, runPycharm, runWebstorm, runClion, and runIdeForUiTests.
  The runIde { } block becomes empty and is removed entirely.
- Delete .github/workflows/runUiOctopusTests.yml: this workflow ran the
  UI test suite with -Doctopus.handler=false to verify behavior without
  octopus. That is now the only behavior, so the workflow is redundant
  with runUiTestsIJ.yml.
- IdeaSpecifics.LookupTopicListener and RiderEscLookupListener: update
  comments that justified Rider/CLion Nova-specific handling as "octopus
  is disabled (VIM-3815)". The actual reason is unrelated to octopus:
  these IDEs' popup manager consumes Escape before the action system
  runs. The Rider/CLion Nova gating remains correct.
2026-04-24 17:41:48 +03:00
Alex Plate 705ce474f1 Fix(VIM-2974): Delete VimEnterHandler.kt
Step 4/N of removing the octopus handler. Deletes the file that held
all octopus infrastructure (both abstract base and the concrete
handlers). Its XML registrations were removed in step 3, so the classes
had been unreachable code.

- Delete VimEnterHandler.kt entirely: OctopusHandler, VimKeyHandler,
  VimEnterHandler, VimEscHandler, VimEscForRiderHandler,
  VimEscLoggerHandler, VimEnterLoggerHandler, CaretShapeEnterEditorHandler,
  StartNewLineDetector, StartNewLineBeforeCurrentDetector,
  isOctopusEnabled(KeyStroke, Editor), enableOctopus, commandContinuation.
- ChangeGroup.processEnter(editor, caret, context): delete. It existed
  only to continue execution into the next octopus EditorActionHandler
  via commandContinuation when inside the octopus chain. With octopus
  gone, InsertEnterAction and SelectEnterAction call the editor-level
  processEnter(editor, context) which dispatches through the IJ action
  system as usual.
- VimChangeGroup: drop the per-caret processEnter declaration.
- InsertEnterActionTest: drop the @BeforeEach that set up three octopus
  handler variants via ExtensionTestUtil.maskExtensions (existed to test
  around IDEA-300030). Convert @RepeatedTest(3) to @Test - there are no
  longer three configurations to exercise.
2026-04-24 17:41:48 +03:00
Alex Plate 4869fe68e5 Fix(VIM-2974): Remove octopus editorActionHandler registrations
Step 3/N of removing the octopus handler. Takes the 9 octopus handlers
out of IntelliJ's editorActionHandler chain for EditorEnter, EditorEscape,
EditorStartNewLine, and EditorStartNewLineBefore.

- IdeaVIM.ideavim-frontend.xml: remove registrations for VimEnterHandler,
  CaretShapeEnterEditorHandler, VimEscHandler, VimEscLoggerHandler,
  VimEnterLoggerHandler, StartNewLineDetector, StartNewLineBeforeCurrentDetector.
- IdeaVIM.ideavim-rider.xml and IdeaVIM.ideavim-clion-nova.xml: remove
  Rider-specific VimEscForRiderHandler registration.

At this point Enter and Esc flow exclusively through VimShortcutKeyAction
(as they already did on Rider, CLion Nova, and JetBrains Client for the
last 14+ months). The handler classes themselves remain in
VimEnterHandler.kt as unreachable code; they are deleted in step 4.
2026-04-24 17:41:47 +03:00
Alex Plate 852ea2feb0 Fix(VIM-2974): Delete isOctopusEnabled() and octopus-support files
Step 2/N of removing the octopus handler. Removes the flag and three
support files whose entire purpose was supporting the octopus migration.

- VimApplication interface: drop isOctopusEnabled() method.
- IjVimApplication: drop the override.
- VimEnterHandler.enableOctopus: now a const false, decoupled from the
  deleted interface method. Octopus handler classes (still in this file)
  continue to compile but early-return and pass through to nextHandler.
- Delete KeymapChecker.kt: checked that the keymap had Esc bound to
  ACTION_EDITOR_ESCAPE because octopus owned EditorEscape. No longer
  meaningful with VimShortcutKeyAction handling Esc directly.
- Delete CopilotKeymapCorrector.kt (VIM-3206): removed Copilot's Esc
  shortcut because octopus intercepted EditorEscape. Rider / CLion Nova /
  JBClient have run with octopus disabled for 14+ months without needing
  this workaround.
- Delete EditorHandlersChainLogger.kt: debug logger for the
  editorActionHandler chain, useful only during the octopus era.
- NotificationService / VimNotifications: drop notifyKeymapIssues (only
  caller was KeymapChecker).
- VimListenerManager: drop correctorRequester / keyCheckRequests kicks
  from turnOn / turnOff (flows lived inside the deleted files).
- IdeaVIM.ideavim-frontend.xml: remove postStartupActivity entries for
  the three deleted classes and their keymap listener registrations.

Octopus handler classes in VimEnterHandler.kt and their XML registrations
are still present but now fully unreachable at runtime. They are removed
in subsequent steps.
2026-04-24 17:41:47 +03:00
Alex Plate 3dc0ebd2d1 Fix(VIM-2974): Collapse callers of isOctopusEnabled
Step 1/N of removing the octopus handler. With isOctopusEnabled()
hardcoded to false, the octopus branches in callers are unreachable.
This commit removes them, keeping only the non-octopus path.

- VimShortcutKeyAction: remove the early-return that skipped Enter/Esc
  when octopus was active.
- KeyGroup / VimKeyGroupBase: always register Enter/Esc in
  requiredShortcutKeys (the filter existed only to hand them to octopus).
- InsertEnterAction / SelectEnterAction: drop the forEachNativeCaret
  branch that worked around IDEA-300030 inside the octopus chain; the
  non-octopus processEnter(editor, context) call handles all carets.
- VimTestCase: dispatch Enter/Esc like any other key via
  VimShortcutKeyAction.
- InsertEnterActionTest: remove per-repetition extension masking that
  set up different octopus handler variants.

Octopus handler classes and their XML registrations are still present
but now unused; they are removed in subsequent steps.
2026-04-24 17:41:47 +03:00
Alex Plate c33b0928dd Fix(VIM-2974): Hardcode isOctopusEnabled to false
Step 0/N of removing the octopus handler. Disables octopus at runtime
so subsequent steps can safely remove callers and handlers without
introducing a window where both octopus and VimShortcutKeyAction
compete for Enter/Esc.

The octopus handler chain remains registered but becomes a pass-through
(OctopusHandler.doExecute falls through to nextHandler when
isThisHandlerEnabled() returns false).
2026-04-24 17:41:47 +03:00
1grzyb1 02b4b4969a FIX(VIM-4184): clipboad=unnamed paste bugs on wayland
Use in-memory register when PRIMARY is unavailable due to wayland focus loss and bypass the live PRIMARY read during cisual paste to avoid automatic selection tracking overwriiting the yanked text
2026-04-24 16:03:49 +02:00
Alex PlateandClaude Opus 4.7 f1d971c239 Document Fix(VIM-XXX) commit format in CLAUDE.md
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 16:07:53 +03:00