Commit Graph
6167 Commits
Author SHA1 Message Date
1grzyb1 ba4b51e33e VIM-4229 Remove trailing spaces in edit command 2026-05-14 08:12:11 +00:00
1grzyb1 3b268f38c3 VIM-4217 Persist widget state
Previously we changed widget variables from vim variables to global one but those are not being persisted. We should not persist then so we've decided to persist them in `ModeWidgetSettings` and override if user will manually set global variable
2026-05-13 11:32:29 +00:00
1grzyb1 7bf2c9196d Align content module names with plugin.xml so 2026.1 finds them 2026-05-12 08:06:28 +00:00
1grzyb1 95fb5baa62 Update plugin descriptor to match 2.16.0 2026-05-12 06:51:20 +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
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
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
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
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
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
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 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
Alex PlateandClaude Opus 4.7 45ce2143fe Fix(VIM-4115): NPE in CommandKeyConsumer after plugin disable/enable
Plugin deactivate called fullReset() on the ex panel but left editor
mode and KeyHandlerState.commandLineCommandBuilder untouched. Since
KeyHandler is a singleton, the stale CMD_LINE builder survived a
plugin disable/enable cycle and matched LeaveCommandLineAction on the
next Esc, NPEing when the (already-deactivated) panel was unwrapped.

Call close() before fullReset() so mode, the key handler state, and
the panel are cleared together. Also replace the `!!` at the crash
site with a null-safe branch that logs VIM-4115 and clears the stale
builder, so any other producer of the same desync surfaces via a
Diogen report instead of a crash.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 16:07:48 +03:00
1grzyb1 4dec9a95a4 VIM-186 Support nested comments 2026-04-23 13:57:28 +02:00
1grzyb1 64e110f27a VIM-186 Add comment-aware code wrapping for gq/gw 2026-04-23 13:57:28 +02:00
1grzyb1 607920d262 VIM-4207 Add support for update command 2026-04-22 09:07:58 +02:00
1grzyb1 ab7ca0e32e VIM-4202 Don't intercept all <S-Tab>
When <S-Tab> was in VIM_ONLY_EDITOR_KEYS users couldn't override it for other intelij actions
2026-04-21 11:05:19 +02:00
1grzyb1 558d670f4e VIM-4139 Compute nesting depth for fold regions 2026-04-21 08:21:47 +02:00
1grzyb1 0df627ab19 VIM-1693 Normalize BufRead and BufWrite aliases at registration 2026-04-20 13:40:32 +02:00
1grzyb1 7546b0737d VIM-1693 Fix clearAuGroup on CopyOnWriteArrayList 2026-04-20 13:40:32 +02:00
1grzyb1 d58a68df78 VIM-1693 Bound BufNewFile tracker and clear on disable 2026-04-20 13:40:32 +02:00
1grzyb1 aedf114576 VIM-1693 Run write events against main editor 2026-04-20 13:40:32 +02:00
1grzyb1 4edc23006e VIM-1693 BufWrite events support 2026-04-20 13:40:32 +02:00
1grzyb1 6e21fbd61a VIM-1693 BufNewFile event support 2026-04-20 13:40:32 +02:00
1grzyb1 1be8183399 VIM-1693 BufRead event support 2026-04-20 13:40:32 +02:00
1grzyb1 f7718b6dd8 VIM-1693 FileType event support 2026-04-20 13:40:32 +02:00
1grzyb1 5cfd1d1fe6 VIM-1693 Focus Gained Lost support 2026-04-20 13:40:32 +02:00
1grzyb1 66ed07e6f5 VIM-1693 WinLeave WinEnter support 2026-04-20 13:40:32 +02:00
1grzyb1 720d8fab40 VIM-1693 fix buf enter leave handling 2026-04-20 13:40:32 +02:00
1grzyb1 6c803e3154 VIM-1693 File pattern matching in autocmd 2026-04-20 13:40:32 +02:00
1grzyb1 38c74d6b9d VIM-1693 Add support for multiple autocmd events 2026-04-20 13:40:32 +02:00
1grzyb1 55a451ac2f VIM-1693 Refactor Insert Leave/Enter to work on listeners 2026-04-20 13:40:32 +02:00
1grzyb1 29a02a102b VIM-1693 Use thread-safe collections for autocmd event handling 2026-04-20 13:40:32 +02:00
1grzyb1andClaude Opus 4.5 bebce05950 VIM-1693 Support augroup
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-20 13:40:32 +02:00
1grzyb1andClaude Opus 4.5 f86ba678e5 VIM-1693 Fix autocmd grammar
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-20 13:40:32 +02:00
1grzyb1andClaude Opus 4.5 64f2d5b628 VIM-1693 Support for Buffer events
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-20 13:40:32 +02:00
1grzyb1andClaude Opus 4.5 98abfedb98 VIM-1693 Fix autocmd in test injector
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-20 13:40:32 +02:00
1grzyb1andClaude Opus 4.5 1dcb386b92 VIM-1693 Basic autocmd implementation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-20 13:40:32 +02:00