when going jk between lines with just 1 column difference and going back it moved one column before.
It was due to not normilzed offset so when doing k went to AbsoulteOffset and didn't save last column position
The 2.37.0 marketplace artifact was built from 643b76e06 (Jun 02), but
the changelog promotion swept in 3 features and 4 fixes that landed on
master afterward and are not in the published binary. Move them back to
[To Be Released] so they ship in the next release.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add an `ideavim.use.debug.ideavimrc` flag (VimRcService.USE_DEBUG_VIMRC_PROPERTY):
when set to "true", IdeaVim prefers ~/.debug.ideavimrc over ~/.ideavimrc,
falling back to the regular file if the debug one is absent. The runIde
Gradle task sets the flag so development runs can use a separate config
without touching the real ~/.ideavimrc.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
It adds new action that opens special kind of editor where user can paste and yank control cahrachters like ^M ^[.
Normally IDE doesn't allow showing them especially ^M is always turned into \n s othere was no way of editing macros.
Scroll during enter on inc search was triggered twice. One from search itself and once from exiting ex panel. Disable scroll in exit seach panel when it's executign incsearch
Replace the scripts:eapReleaseActions Gradle/Kotlin task with a tsx
implementation wired into the EAP release pipeline as a script step.
Behavior is unchanged: Ready To Release tickets not yet tagged as
released in EAP get the tag plus the EAP-availability comment.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
findAll silently ignored its ignoreCase parameter and re-derived case
sensitivity from the global smartcase/ignorecase options. As a result,
using * on a capitalized word with 'smartcase' enabled performed a
case-insensitive search but highlighted only the case-sensitive matches.
findAll now honors an explicit ignoreCase request: smartcase is skipped
and ignorecase is forced when the caller has already resolved case
handling. Behavior is unchanged when ignoreCase is false, so existing
callers are unaffected.
Cherry-picked from #1466 by davidot.
In split mode every per-caret event drove PatchEngineEditorSynchronizer, which walks all carets to build a model and ships an RD-protocol message per event — block-visual motion fires N caret events × O(N) per event = O(N²) per keystroke on the host, freezing the EDT.
Bulk caret-mutating sites (block-visual setVisualSelection, exitVisualMode's secondary-caret removal, repeatInsert's row-by-row replay) now run inside caretModel.runForEachCaret so beforeAllCaretsAction/afterAllCaretsAction fire and the synchronizer batches per-event sends into one end-of-op snapshot; a new CaretVisualAttributesListenerSuppressor gates IdeaVim's own EditorCaretHandler.updateCaretsVisualAttributes to drop the same O(N²) walk on the local side.
In search window editor was chagned but macro group was using previous one so we had to change way of tracking if editor has chagne during macro execution