1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2026-07-05 23:27:55 +02:00
Commit Graph

1985 Commits

Author SHA1 Message Date
Alex Plate
28a405a9ff K3-3g: Make CommandLine input callback suspend
Per VIM-4144 coroutine audit: handler lambdas should be suspend
for RemDev future-proofing. Implementation uses runBlocking bridge.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:31:51 +02:00
Alex Plate
7c66224d17 K3-3f: Make modal input handlers suspend
Per VIM-4144 coroutine audit: handler lambdas should be suspend
for RemDev future-proofing. Implementation uses runBlocking bridge.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:31:51 +02:00
Alex Plate
eb9d698f2a K3-3d: Make command handler suspend, add command() to VimInitApi
Per VIM-4144 coroutine audit: handler lambdas should be suspend
for RemDev future-proofing. Also exposes command() at init time.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:31:51 +02:00
Alex Plate
0f7ea73c73 K3-3b: Make text object range provider suspend
Per VIM-4144 coroutine audit: handler lambdas should be suspend
for RemDev future-proofing. Implementation uses runBlocking bridge.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:31:51 +02:00
Alex Plate
efc5f0140f K3-5': Remove suspend from CommandLineTransaction methods (inside lock)
Per VIM-4144 coroutine audit: methods inside locks must be synchronous.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:31:50 +02:00
Alex Plate
f7af2631e9 T010-T014: Remove mode-changing methods from VimApi, use normal() instead
Remove enterInsertMode(), enterNormalMode(), enterVisualMode() from VimApi.
Mode changes should use normal() — e.g., normal("<Esc>"), normal("i"),
normal("v") — matching how real Vim plugins handle mode transitions.

Neither Vim nor Neovim has a direct "set mode" API. All mode changes in
real plugins (surround, exchange, commentary, ReplaceWithRegister) use
normal!, feedkeys(), or :stopinsert. The removed methods used incomplete
internal delegation (changeMode Level 2) that skipped proper entry/exit
setup (marks, strokes, dot-repeat, document listeners).

Also removes the now-unused changeMode() function from Modes.kt.

See VIM-4143 for future proper mode-changing API design.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:31:50 +02:00
Alex Plate
f80120db5c T005d: Comment out window management APIs pending IJPL-235369
After setAsCurrentWindow(), getSelectedTextEditor() returns stale data
because the platform propagates the change asynchronously via
flatMapLatest + stateIn, and there is no way to observe when
propagation completes.

Comment out window APIs in VimApi, VimApiImpl, CaretRead, CaretReadImpl.
Add limitation comment to VimWindowGroup. Update EditorContextTest to
call injector.window directly. Track re-enablement in VIM-4138.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:31:50 +02:00
Alex Plate
6889ba37c5 T006: Add VimInitApi delegation wrapper for init-time type safety
Introduce VimInitApi as a restricted wrapper around VimApi that exposes
only init-safe methods (getVariable, mappings, textObjects,
exportOperatorFunction). During plugin init() there is no editor context,
so editor operations should not be callable. VimInitApi enforces this at
the type level via delegation rather than inheritance.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:31:50 +02:00
Alex Plate
22ad32103e T005b: Replace getFocusedEditor() with getSelectedEditor(projectId)
Use FileEditorManager's selected editor (internal model) instead of
focus-based detection. Falls back to injector.fallbackWindow when
projectId is null (init phase, project loading).

- Add getSelectedEditor(projectId) to VimEditorGroup interface
- Implement in EditorGroup.java using FileEditorManager
- Convert all thinapi scope impls from objects to classes accepting projectId
- Fix exportOperatorFunction to use execution-time editor.projectId
  instead of init-time captured null
- Update all thinapi mock tests to mock fallbackWindow and restore
  injector before tearDown
- Update CaretTransactionTest to use real projectId

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:31:49 +02:00
Alex Plate
5d985ef862 T005b: Add projectId parameter to VimApiImpl for editor context
Add projectId to VimApiImpl and propagate through scope implementations.
This is a pre-refactoring step before switching from getFocusedEditor()
to getSelectedEditor() API.

- VimApiImpl: Add projectId parameter (nullable), with KDoc explaining
  that it's null during init and falls back to fallback editor
- Scope implementations: Pass projectId through construction chain
- MappingScopeImpl, TextObjectScopeImpl: Get projectId from editor
  at execution time via editor.projectId
- Tests: Pass null for projectId (no editor context in setup)
- Remove VimApi.kt extension function (no longer needed)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 18:31:49 +02:00
1grzyb1
681a44da77 Fix IndexOutOfBoundsException in findBlock when caret is at end of file
The caret can legitimately be at position chars.length (end-of-file), which is valid in IntelliJ but not a valid character index. findBlock and getQuoteRangeNoPSI assumed the caret was always on a character, causing a crash when text objects like a) were used at EOF.

Return null early when pos is out of character index range, since there is no block or quote to match at that position.
2026-03-20 09:14:35 +01:00
1grzyb1
f3b67416cd VIM-4134 Format with = action in split mode
Formatting was broken in split mode and also in monolith mode cursor position restoring didn't match vim actual behaviour. refactored it to work in same way as commenting works
2026-03-18 11:35:37 +01:00
1grzyb1
729cf9be0f Revert "Remove maxMapDepthReached mechanism from KeyHandler"
This reverts commit bddedb0080.
2026-03-17 11:48:35 +01:00
1grzyb1
cbc8249a71 adjust visual marks position after deletion 2026-03-17 11:48:35 +01:00
1grzyb1
cbc446aea7 Fix focus in gi ga nerdtree
Add focusNew parameter to splitWindow to allow NERDTree preview
mappings (gs, gi, ga) to keep focus on the tree.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:24:30 +01:00
1grzyb1
eb4a261984 VIM-4134 Synchronize idea jump through topic 2026-03-16 14:24:30 +01:00
1grzyb1
bef0b4c32a VIM-4134 move frontend code to main source set
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:24:30 +01:00
1grzyb1
b3ad98ca49 VIM-4134 add vim-engine API changes for split architecture
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:24:30 +01:00
1grzyb1
56d05115cc Code style: classloader lookup, import ordering, cleanup
- Use this.javaClass.classLoader instead of object {}.javaClass.classLoader
- Alphabetize imports in VimInjector.kt
- Remove outdated TODO in VimMotionGroupBase.kt
- Fix missing trailing newline in VimPsiService.kt

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:24:30 +01:00
1grzyb1
bddedb0080 Remove maxMapDepthReached mechanism from KeyHandler
The field was used to break out of the mapping replay loop when max
recursion depth was hit. This is unnecessary since handleKey already
returns early on max depth, stopping further processing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:24:30 +01:00
1grzyb1
d44bf3aa02 Update copyright years to 2026
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:24:30 +01:00
1grzyb1
f9cbbad13e Break in case of maximum recursion depth 2026-02-26 08:21:34 +01:00
dependabot[bot]
c16903f23d Bump org.jetbrains:annotations from 26.0.2-1 to 26.1.0
Bumps [org.jetbrains:annotations](https://github.com/JetBrains/java-annotations) from 26.0.2-1 to 26.1.0.
- [Release notes](https://github.com/JetBrains/java-annotations/releases)
- [Changelog](https://github.com/JetBrains/java-annotations/blob/master/CHANGELOG.md)
- [Commits](https://github.com/JetBrains/java-annotations/compare/26.0.2-1...26.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-25 15:43:33 +00:00
dependabot[bot]
5475c410c4 Bump org.junit.vintage:junit-vintage-engine from 6.0.1 to 6.0.3
Bumps [org.junit.vintage:junit-vintage-engine](https://github.com/junit-team/junit-framework) from 6.0.1 to 6.0.3.
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.0.1...r6.0.3)

---
updated-dependencies:
- dependency-name: org.junit.vintage:junit-vintage-engine
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-25 15:43:20 +00:00
1grzyb1
c3925abeaf VIM-4134 test to forbid java.io.File usage 2026-02-17 15:01:02 +01:00
1grzyb1
29067706ec VIM-4134 Replace java.io.File with java.nio.file.Path 2026-02-17 15:01:02 +01:00
1grzyb1
d9c745fd8e VIM-4120 handle ':' in output panel 2026-02-11 12:58:59 +01:00
1grzyb1
9f0ae27440 VIM-4120 close output panel on active editor change 2026-02-11 12:58:59 +01:00
1grzyb1
6591be3617 VIM-4120 remove isPanelActive from VimOutputPanel 2026-02-11 12:58:59 +01:00
1grzyb1
410ac0ff39 VIM-4120 close current output panel when executing command 2026-02-11 12:58:59 +01:00
1grzyb1
d382e0bc26 VIM-4120 single addText method 2026-02-11 12:58:59 +01:00
1grzyb1
d318b935fc VIM-4120 single output method with default message type 2026-02-11 12:58:59 +01:00
1grzyb1
622163194d VIM-4120 removed awt color reference in engine 2026-02-11 12:58:59 +01:00
1grzyb1
34f16f4daf VIM-4120 Rename isActive to isVisible to not leak IJ impl details 2026-02-11 12:58:59 +01:00
1grzyb1
bec8daa6ab VIM-4120 Use showErrorMessage for displaying errors in red 2026-02-11 12:58:59 +01:00
1grzyb1
5e20bbf14e VIM-4120 display multiple lines in OutputPanel with different styles 2026-02-11 12:58:59 +01:00
dependabot[bot]
158b40ab1d Bump org.mockito.kotlin:mockito-kotlin from 6.2.2 to 6.2.3
Bumps [org.mockito.kotlin:mockito-kotlin](https://github.com/mockito/mockito-kotlin) from 6.2.2 to 6.2.3.
- [Release notes](https://github.com/mockito/mockito-kotlin/releases)
- [Commits](https://github.com/mockito/mockito-kotlin/compare/v6.2.2...v6.2.3)

---
updated-dependencies:
- dependency-name: org.mockito.kotlin:mockito-kotlin
  dependency-version: 6.2.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-04 15:38:30 +00:00
1grzyb1
ad85aca860 VIM-1595 Add support for handling address 0 in :put command 2026-02-03 11:06:40 +02:00
1grzyb1
322d961085 VIM-1595 Add support for the :read! {cmd} command 2026-02-03 11:06:40 +02:00
1grzyb1
0a7ad9e8f1 VIM-1595 Add support for the :read command 2026-02-03 11:06:40 +02:00
1grzyb1
8651b8f8ec VIM-566 Add operator-pending mode support for zj and zk 2026-01-28 19:15:42 +02:00
1grzyb1
ec42b4ff64 VIM-566 Add support for navigating between folds with zj and zk commands 2026-01-28 19:15:42 +02:00
1grzyb1
9236b4cc72 VIM-566 Implement zf create fold action 2026-01-27 13:02:26 +02:00
1grzyb1
a229979644 Make generated JSON formatting consistent with IntelliJ 2026-01-27 11:04:41 +01:00
1grzyb1
e8add6d38d VIM-566 document different default foldlevel between ideavim and vim 2026-01-27 11:25:01 +02:00
1grzyb1
0c21dcb132 VIM-566 add set foldelevel command support 2026-01-27 11:25:01 +02:00
1grzyb1
729cb7b2ad VIM-566 Add documentation to fold-related methods 2026-01-23 16:54:51 +02:00
1grzyb1
98ebaabf10 VIM-566 improve performance by batch apply fold level 2026-01-23 16:54:51 +02:00
1grzyb1
23119b169b VIM-566 Add zm folding support 2026-01-23 16:54:51 +02:00
1grzyb1
c0d3624f3c VIM-566 Add zr folding support 2026-01-23 16:54:51 +02:00