Commit Graph
10430 Commits
Author SHA1 Message Date
1grzyb1 9156d402b9 VIM-4301 fix native undo action
Do not normalize carets after native undo/redo. The platform undo (UndoRedo.execute) treats caret movement as a separate undo step by default
2026-07-28 10:01:21 +02:00
1grzyb1 a40024cf75 VIM-4287 Expand characterwise range to whole lines when promoted to linewise delete
this fixes issue with removing with dat
2026-07-28 09:01:13 +02:00
claude[bot]andClaude Opus 5 e5e948cd20 Prepare What's New for the upcoming release
Document the VIM-330 spelling dictionary commands in the changelog and
bring whatsnew-tbr.html up to date with the changelog entries that were
not yet represented on the page.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 12:32:08 +02:00
1grzyb1 74bb15cbad VIM-330 Add zw command to remove misspelled word from dictionary 2026-07-27 12:09:08 +02:00
1grzyb1 8015e72d70 VIM-330 Add z= command to offer suggested replacements 2026-07-27 12:09:08 +02:00
1grzyb1 4a94518074 VIM-330 Add zg command to mark word as correct 2026-07-27 12:09:08 +02:00
1grzyb1 10a7861558 VIM-330 Add tests for motion misspelled word 2026-07-27 12:09:08 +02:00
claude[bot]andClaude Opus 5 d5172999a2 Update changelog: square bracket regex patterns, <C-O> caret fix
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 06:13:42 +00:00
1grzyb1 465081377c Handle <C-O> single command deletion to end of line correctly 2026-07-24 12:12:40 +02:00
1grzyb1 902e7bb200 Disable last command test
It's flaky in ci
2026-07-24 12:04:49 +02:00
1grzyb1 306794b9ac VIM-4286 Normalize square brackets in vim regex 2026-07-24 12:04:49 +02:00
1grzyb1 df07da9227 VIM-4285 Align changelog promotion with consistent header format 2026-07-24 09:23:46 +02:00
claude[bot]andClaude Opus 4.8 ef8929d9c6 Update changelog: Vim in Python console, incsearch caret and vimscript error fixes
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 06:15:15 +00:00
1grzyb1 52301def45 VIM-2649 Move carret on enter after C-G/C-t
during serach and moving through searches using C-G/C-T we didn't move caret to this search after enter
2026-07-23 12:02:10 +02:00
1grzyb1 c35eadbbb0 VIM-4284 Don't fail whole script on last line error
When last line had an error whole vim file was rejected
2026-07-23 10:55:54 +02:00
1grzyb1 2d5131a14c VIM-4284 Show errors from parsing vimscript 2026-07-23 10:55:54 +02:00
1grzyb1 94eab2c7d8 VIM-3936 In normal mode always execute command
When in normal mode it was wierd that enter has moved between lines instead of exeecuting it. To execute command in python console cursor must be at the end of line so we move it in normal mode
2026-07-23 09:07:21 +02:00
1grzyb1 566891ac54 VIM-3936 Keep mode when entering python console 2026-07-23 09:07:21 +02:00
1grzyb1 390bf15777 VIM-3936 pass some keys directly to console
Let python console handle up/down/enter keystrokes to handle them in default way
2026-07-23 09:07:21 +02:00
1grzyb1 360ad346e9 VIM-3936 pass enter to console action 2026-07-23 09:07:21 +02:00
1grzyb1 8f2742b48d VIM-3936 Enable vim in python console 2026-07-23 09:07:21 +02:00
dependabot[bot] bf914b7280 Bump org.jetbrains:jetCheck from 0.2.3 to 0.3.0
Bumps [org.jetbrains:jetCheck](https://github.com/JetBrains/jetCheck) from 0.2.3 to 0.3.0.
- [Changelog](https://github.com/JetBrains/jetCheck/blob/master/CHANGES.md)
- [Commits](https://github.com/JetBrains/jetCheck/commits)

---
updated-dependencies:
- dependency-name: org.jetbrains:jetCheck
  dependency-version: 0.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-22 15:41:04 +00:00
dependabot[bot] 147334ca43 Bump org.kodein.di:kodein-di-jvm from 7.32.0 to 7.33.0
Bumps [org.kodein.di:kodein-di-jvm](https://github.com/kosi-libs/Kodein) from 7.32.0 to 7.33.0.
- [Release notes](https://github.com/kosi-libs/Kodein/releases)
- [Changelog](https://github.com/kosi-libs/Kodein/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kosi-libs/Kodein/compare/v7.32.0...v7.33.0)

---
updated-dependencies:
- dependency-name: org.kodein.di:kodein-di-jvm
  dependency-version: 7.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-22 15:40:46 +00:00
dependabot[bot] 1e15fd219f Bump org.junit:junit-bom from 6.1.0 to 6.1.2
Bumps [org.junit:junit-bom](https://github.com/junit-team/junit-framework) from 6.1.0 to 6.1.2.
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.1.0...r6.1.2)

---
updated-dependencies:
- dependency-name: org.junit:junit-bom
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-22 15:39:52 +00:00
claude[bot]andClaude Opus 4.8 829b8e1a10 Fix :last not switching to the last open file
SelectLastFileCommand passed 999 to selectFile(), but both implementations
only treat 99 as the "select last file" sentinel. As a result `:last` returned
an error and never switched buffers for any realistic number of open files —
a regression introduced when the original Java handler (which correctly passed
99) was rewritten in Kotlin.

Use the shared VimFile.LAST_FILE_SENTINEL constant so the command and the
implementations agree by construction, and add a behavior test that opens
several files and asserts `:last` selects the last one. The test fails against
the old 999 value and passes with the fix.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 11:17:29 +02:00
claude[bot]andClaude Opus 4.8 0c29b00250 Introduce VimFile.LAST_FILE_SENTINEL for selectFile "last file" marker
The `selectFile(count)` API uses the magic number 99 as a sentinel meaning
"select the last open file". This value was duplicated as a bare literal in
both implementations (IjFileGroup and FileRemoteApiImpl), with nothing tying
it to the callers that must produce it. Name it once on the VimFile companion
and reference it from both implementations so the value can no longer drift.

No behavior change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 11:17:29 +02:00
claude[bot]andClaude Opus 4.8 7c608b0eb5 Add tests for yy count clamping in YankLineActionTest
There was no count-prefixed `yy` test in the normal-mode suite, leaving the
`count - 1` / `min(..., fileSize)` line-range logic in YankGroupBase.yankLine
uncovered. Add two tests:

- `2yy` yanks the expected multiple lines.
- `5yy` near end-of-file clamps to the last line instead of running past the
  end of the buffer.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 11:15:49 +02:00
claude[bot]andClaude Opus 4.8 44addaca7d Remove unreachable dead-code guard in YankGroupBase.yankLine
`end` is computed as `min(moveCaretToRelativeLineEnd(...) + 1, fileSize)`.
`moveCaretToRelativeLineEnd` (the only implementation, in VimMotionGroupBase)
always returns a normalized, non-negative offset, so after the `+ 1` and
`min(..., fileSize)` the result is always >= 0. The `if (end == -1) continue`
check can therefore never fire and is dead code.

The equivalent line-range computation in VimChangeGroupBase.deleteLine
correctly has no such guard, confirming this was a stale leftover. This is a
behavior-preserving cleanup. Also drops an accidental double blank line in
yankMotion.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 11:15:49 +02:00
1grzyb1 ac6b6f127b VIM-4282 Don't scroll if caret below visible area
We scrolled up to show caret when it was under visible are which didn't make much sense
2026-07-22 10:34:09 +02:00
IdeaVim Bot 6fc20109e3 Preparation to 2.44.1 release 2026-07-22 08:29:34 +00:00
1grzyb1 4abc82ab26 VIM-4283 Fix dw in jupyter notebook cell
cells had guarded blocks which prevents from modifing document at such place and they are treated as collapsed regions.
So after adding expanding collapsed regions it was included in motion range and as it is guarded block we couldn't delete in such way
2026-07-22 09:45:21 +02:00
IdeaVim Bot a71d2c80f4 Preparation to 2.44.0 release 2026-07-21 11:02:45 +00:00
claude[bot]andClaude Opus 4.8 9b7fce67b6 Prepare What's New for the upcoming release
Update the changelog and the What's New page for the next release.

Changelog (CHANGES.md), added to [To Be Released]:
- Feature: VIM-1850 'keymap' option, 'iminsert', <C-^>, :loadkeymap and the
  :lmap/:lnoremap/:lunmap/:lmapclear language-mapping commands
- Fix: VIM-4281 output panel and command line now refresh colors on theme change
- Merged PRs: 1929, 1928, 1925

What's New (whatsnew-tbr.html), incremental update of the existing page:
- New section for the 'keymap' language-mappings feature
- Mini cards for gx and :w with a file argument
- Fixes list entries for theme refresh, :s///g on tab-indented lines, method
  navigation crash, and caret after delete-to-end from <C-O>

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 12:18:09 +02:00
1grzyb1 409b04c9a4 VIM-4281 update output panel theme on change
Listen for changes in theme and update output panel theme on that change
2026-07-21 11:28:44 +02:00
1grzyb1 d1d1f1907a VIM-4279 fix till V motion
Forced motion was handling V in ctV which broke this motion. to prevent that we check isAwaitingCharacterBasedArgument in ForcedMotionConsumer now
2026-07-21 09:47:19 +02:00
1grzyb1 df918ffe0a VIM-1850 Override xdg config in tests 2026-07-21 09:43:45 +02:00
1grzyb1 2063c49b17 VIM-1850 Add toggle to switch inisert mode 2026-07-21 09:43:45 +02:00
1grzyb1 babea7ccbf VIM-1850 check mode before options
In some test cases options weren't yet initialized, so we check for mode first to prevent that situation
2026-07-21 09:43:45 +02:00
1grzyb1 b24b8f5ec4 VIM-1850 Implement keymap option
when this option is set ideavim loads keymap from file
2026-07-21 09:43:45 +02:00
1grzyb1 a6be54dc2a VIM-1850 Implement keymap method
keymap allows to set key mapping from vim file.
2026-07-21 09:43:45 +02:00
1grzyb1 613e3c6dcd VIM-1850 Support L mapping mode
when user sets lmap it will map keys in insert mode then
2026-07-21 09:43:45 +02:00
1grzyb1 4d5cef9e18 VIM-1850 add L mapping mode 2026-07-21 09:43:45 +02:00
claude[bot]andClaude Opus 4.8 3c530b70c3 Update changelog: Fix caret after delete-to-EOL from Insert-Normal mode
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 06:17:59 +00:00
1grzyb1 6a8d469be0 Refactor: Replace use with inline block for SelectionVimListenerSuppressor.lock 2026-07-20 10:12:58 +02:00
1grzyb1 79e2e10993 Trace is mouse dragging in global state
During mouse dragging there could be a case where during drag the editor was closed which resulted in an invalid state in ListenerSuppressor with not removed caretListenerSuppressor. More roboust approach is to track mouseDragging as state.
2026-07-20 10:12:58 +02:00
AndDe-gourav 52eefd4705 removed extra space for the test 2026-07-20 08:21:12 +02:00
AndDe-gourav a1c10464ac fixing the restoreCursorAfterInsertNormal
# Conflicts:
#	vim-engine/src/main/kotlin/com/maddyhome/idea/vim/state/VimStateMachine.kt
2026-07-20 08:21:12 +02:00
AndDe-gourav d4c9e929ca fixing the restoreCursorAfterInsertNormal 2026-07-20 08:21:12 +02:00
AndDe-gourav 962d80d789 wrong test fix and some new added to test the wrong behavior 2026-07-20 08:21:12 +02:00
claude[bot]andClaude Opus 4.8 608aa4e29d Update changelog: Add :w with file argument, fix method navigation crash
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 06:11:41 +00:00