Commit Graph
100 Commits
Author SHA1 Message Date
1grzyb1andGrzybek 9f33320e66 Move split mode tests to team city 2026-04-09 14:21:18 +02:00
1grzyb1andGrzybek 5dc5aaa0d8 VIM-4176 Don't focus single line output
Scroll was causing clearing output panel which resulted in race conditions
2026-04-09 14:06:05 +02:00
1grzyb1andGrzybek 0d8d215946 Clear gradle caches in random order tests
They were keeping old class descriptors
2026-04-09 12:26:32 +02:00
1grzyb1andGrzybek c9234b82f5 VIM-4175 Clear output panel before showing error
Split showing error message into two separate methods. Once that appends the error to the current output panel and the second that clears the output panel before showing the error. So when no search results are found we don;t show hit enter message,
2026-04-09 11:45:56 +02:00
1grzyb1andGrzybek b9bd523648 Fix visual selection commands failing off-EDT due to nested write-in-read action
Commands entered from Visual mode (e.g. :'<,'>sort) fail because Command.execute wraps selection cleanup in runReadAction, but exitVisualMode nests a runWriteAction inside it, which deadlocks off-EDT. Remove the unnecessary runWriteAction from exitVisualMode since removeSelection only requires EDT, not a write lock.
2026-04-08 13:48:33 +02:00
1grzyb1andGrzybek 4f5b793642 Bump ideaVersion to 2026.1 2026-04-08 13:48:33 +02:00
1grzyb1andGrzybek 2fdf52d305 Split double undo into two singles once 2026-04-08 09:24:14 +02:00
1grzyb1andGrzybek 56103c990b Increase compatibility pipeline timeout to 180 minutes 2026-04-08 08:50:47 +02:00
1grzyb1andGrzybek 1e489e2c14 Wait for ideavim to attatch to editor 2026-04-08 08:44:16 +02:00
1grzyb1andGrzybek 06d877415d Make go back shortcut platform-specific 2026-04-07 12:52:07 +02:00
706ac76b5e Update changelog: aggregate all pending changelog entries
Combines entries from 10 individual changelog PRs (#1593, #1604, #1607,
#1612, #1614, #1618, #1625, #1637, #1644, #1648) into a single update.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 11:13:16 +02:00
1grzyb1andGrzybek 98934ff7bf Clean Gradle before running tests
It should ensure no stale classes survive between builds
2026-04-07 11:09:05 +02:00
1grzyb1andGrzybek c26658d27d Ensure editor is ready before proceeding with split tests 2026-04-07 10:52:41 +02:00
1grzyb1andGrzybek f6fb0fbea6 Disable gradle cache for testing build type
It was preserving old class descriptors
2026-04-07 10:36:31 +02:00
1grzyb1andGrzybek 46a48b03a1 Return ChangeGroup from VimPLugin to make it compatibile 2026-04-07 08:55:25 +02:00
1grzyb1andGrzybek 46823abcda Fix timing in jump navigation split tests 2026-04-03 12:25:19 +02:00
1grzyb1andGrzybek a9c3277a51 Reset KeyHandler in rider esc lookup 2026-04-03 11:28:24 +02:00
1grzyb1andGrzybek 6e6039c22a Enable lookup listener only in rider/clion 2026-04-03 11:28:24 +02:00
1grzyb1andGrzybek b49e896b41 Return VimCaret fields back to IjVimCaret
There was compatibility issue with multicursor due to change of return type
2026-04-03 11:14:54 +02:00
1grzyb1andGrzybek 122b066b75 Return KeyGroup from getKey
There was compatibility issue with multicursor due to change of return type
2026-04-03 11:14:54 +02:00
1grzyb1andGrzybek cb24ac2bfa Restore public fields in IjVimEditor
Some fields where moved to factory and it resulted in compatybility issues with multicursor plugin
2026-04-03 11:14:54 +02:00
1grzyb1andGrzybek b14324a3e6 Catching initialization exceptions
When external plugin couldn't be initilized and throw exception it resulted in broken ideavim state
2026-04-03 08:37:20 +02:00
1grzyb1andGrzybek e40a839f52 Fix Escape not exiting insert mode after Ctrl+Space completion in Rider
Octopus is disabled for Rider (VIM-3815), and Rider's LookupSummaryInfo popup causes the popup manager to consume Escape before IdeaVim's action handlers can process it, so we now listen for explicit lookup cancellation via LookupListener to exit insert mode.
2026-04-02 12:27:25 +02:00
1grzyb1andGrzybek a45cc0891b Don't extend octopus handler in VimEscForRiderHandler
Octopus is disabled for Rider so VimEscForRiderHandler couldn't properly handle esc
2026-04-02 11:02:08 +02:00
1grzyb1andGrzybek 89bad651c0 Add missing frontend module decriptor 2026-04-02 11:02:04 +02:00
1grzyb1andGrzybek 02130a87c9 Exit search with proper defocus and handle escape 2026-04-01 11:48:43 +02:00
1grzyb1andGrzybek 40ba977e58 Add run configurations for all platforms
To simplify running ideavim with different platforms, this commit introduce run configurations for each platform both in monolith and split mode
2026-04-01 09:43:37 +02:00
1grzyb1andGrzybek 21f304a560 VIM-4135 fix loading rider module 2026-04-01 09:32:32 +02:00
1grzyb1andGrzybek 36e8bd4663 VIM-4016 Fix :edit when project has no source roots
When project couldn't properlly indexed and didn't have source roots it couldn't find file using edit command. So I've modified it to search using absolute paths in project
2026-03-31 09:48:34 +02:00
1grzyb1andGrzybek 5a2d982ca5 VIM-3918 Ensure commentary is installed 2026-03-26 11:28:28 +01:00
1grzyb1andGrzybek 527f612e75 VIM-3918 Run split mode tests using github actions
To make it work same way as ui tests I moved split mode tests to run on gh also
2026-03-26 09:51:15 +01:00
1grzyb1andGrzybek 4f748e5a98 VIM-3918 Add TeamCity configuration for split-mode tests
Register SplitModeTests build type: daily schedule at 4am,
XLARGE agent, artifact collection including IDE logs.
2026-03-25 11:43:43 +01:00
1grzyb1andGrzybek c01a38d584 VIM-3918 Add split-mode tests for jump navigation 2026-03-25 11:43:43 +01:00
1grzyb1andGrzybek 6c569d9cb3 VIM-3918 Add split-mode tests for file ops, marks, and bookmarks 2026-03-25 11:43:43 +01:00
1grzyb1andGrzybek c332b010f4 VIM-3918 Add split-mode tests for commentary, repeat, and format undo 2026-03-25 11:43:43 +01:00
1grzyb1andGrzybek 01a7cb4865 VIM-3918 Infrastructure for running split mode tests 2026-03-25 11:43:43 +01:00
13fd228707 Fix TransactionTest project leak on CI
The mock services (VimMarkService, VimJumpService) were replaced via
MockTestCase.mockService() using @TestDisposable, which is disposed
AFTER @AfterEach. During super.tearDown(), editor disposal triggers
injector.markService.editorReleased(vimEditor), which still hits the
mock (service replacement not yet undone). This records a new Mockito
invocation on the EDT's MockingProgressImpl thread-local, holding
IjVimEditor → EditorImpl → ProjectImpl — causing the leaked project.

Fix: use a separate Disposable for service replacements and dispose it
before super.tearDown(), so editorReleased goes to the real service.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 13:48:44 +01:00
1grzyb1andGrzybek 2b0485fb9c Fix flaky Transaction test 2026-03-24 11:09:16 +01:00
1grzyb1andGrzybek 65ae630623 Fix flaky Transaction test 2026-03-24 10:08:28 +01:00
1grzyb1andGrzybek 8c89f8d4eb Fix slow edt operation exception 2026-03-24 09:13:42 +01:00
1grzyb1andGrzybek d0ad4caf76 Move dependency support to the plugin.xml file
Otherwise, exception thrown from `DependencySupportBean.setPluginDescriptor()`.
2026-03-24 09:13:42 +01:00
1grzyb1andGrzybek 35fe3f9cca VIM-2821 Undo for repeating insertText in split mode
Insert text wasn't being properly grouped into single undo group when performing `.`
Now whole `.` is grouped into single undo entry
2026-03-24 08:56:46 +01:00
1grzyb1andGrzybek 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
1grzyb1andGrzybek a2246c966a VIM-3473 Sync ideavim in remdev
ideavimrc is on local and it coused sync issues between editor and actuall file os it's better to refresh with document content
2026-03-19 13:39:42 +01:00
1grzyb1andGrzybek 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
1grzyb1andGrzybek 729cf9be0f Revert "Remove maxMapDepthReached mechanism from KeyHandler"
This reverts commit bddedb0080.
2026-03-17 11:48:35 +01:00
1grzyb1andGrzybek 06954e3759 Disable ^ in nvim tests
It was to complex to fix proper ^ mark positioning so leaving it for later covered by VIM-4154.
2026-03-17 11:48:35 +01:00
1grzyb1andGrzybek cbc8249a71 adjust visual marks position after deletion 2026-03-17 11:48:35 +01:00
1grzyb1andGrzybek 20cb0afa5d VIM-4134 assert editor state on EDT 2026-03-17 11:48:35 +01:00
1grzyb1andGrzybek 2d63251b29 VIM-4134 Check for write lock before removing bookmark 2026-03-17 11:48:35 +01:00
1grzyb1andGrzybek 34d580898c VIM-4134 Fix undo in commentary
Commentary was doing visual selection on frontend and actual commenting
on backend which resulted in strange undo behaviour.
Moving whole commenting logic fixes all undo issues by making all actions single undo group.
2026-03-16 14:24:30 +01:00
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
1grzyb1andGrzybek 839446b7ed VIM-4134 Load frontend classes only in frontend module 2026-03-16 14:24:30 +01:00
1grzyb1andGrzybek 48dfa01234 VIM-4134 Remove frontend split module
All operations uses rpc interface right now and on backend we detect if we are in disptch thread if so we won't use EDT.
2026-03-16 14:24:30 +01:00
1grzyb1andGrzybek eb4a261984 VIM-4134 Synchronize idea jump through topic 2026-03-16 14:24:30 +01:00
1grzyb1andGrzybek 1f3e7e701e VIM-4134 replace path-based file identification with VirtualFileId and EditorId 2026-03-16 14:24:30 +01:00
1grzyb1andGrzybek 230f816605 VIM-4134 migrate to ProjectId for project resolution 2026-03-16 14:24:30 +01:00
cf8e014053 VIM-4134 attach frontend debugger
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:24:30 +01:00
cb3a11e785 VIM-4134 update tests for new module structure
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:24:30 +01:00
0d396238f9 VIM-4134 add frontend-split module with RPC clients
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:24:30 +01:00
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
3f12ecfc1a VIM-4134 add backend module with service implementations
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:24:30 +01:00
325ccc3668 VIM-4134 add common module with shared services, RPC interfaces, and resources
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:24:30 +01:00
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
9a46a41e40 VIM-4134 add module skeleton and build configuration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:24:30 +01:00
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
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
d44bf3aa02 Update copyright years to 2026
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:24:30 +01:00
1grzyb1andGrzybek f9cbbad13e Break in case of maximum recursion depth 2026-02-26 08:21:34 +01:00
1grzyb1andGrzybek 0a962153c9 VIM-4134 migration to plugin model v2 2026-02-18 11:08:29 +01:00
1grzyb1andGrzybek 15674af9e0 VIM-3948 add ToolWindowNavEverywhere extension to VimEverywhere plugin
This adds support for <C-W> navigation for non-editor windows.
IdeaVim doesn't read keystrokes outside the editor, so we need to create custom dispatcher that will handle does shortcuts in those scenarios.
This feature is enabled alongside `VimEverywhere`.
2026-02-17 15:01:17 +01:00
1grzyb1andGrzybek c3925abeaf VIM-4134 test to forbid java.io.File usage 2026-02-17 15:01:02 +01:00
1grzyb1andGrzybek 29067706ec VIM-4134 Replace java.io.File with java.nio.file.Path 2026-02-17 15:01:02 +01:00
1grzyb1andGrzybek a250369735 VIM-3948 rename vimhints plugin to VimEverywhere 2026-02-11 15:58:34 +01:00
1grzyb1andGrzybek f22f973b0c VIM-3948 include NerdTreeEverywhere extension in vimhints 2026-02-11 15:58:34 +01:00
1grzyb1andGrzybek d9c745fd8e VIM-4120 handle ':' in output panel 2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek 9f0ae27440 VIM-4120 close output panel on active editor change 2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek 6591be3617 VIM-4120 remove isPanelActive from VimOutputPanel 2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek 410ac0ff39 VIM-4120 close current output panel when executing command 2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek d382e0bc26 VIM-4120 single addText method 2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek d318b935fc VIM-4120 single output method with default message type 2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek c91d43c45e VIM-4120 Use weak reference for active OutputPanel to avoid project leak 2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek 622163194d VIM-4120 removed awt color reference in engine 2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek 34f16f4daf VIM-4120 Rename isActive to isVisible to not leak IJ impl details 2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek 44b0e24586 VIM-4120 Fix label in multiline output panel
During first echo with multiline it showed -- MORE -- instead of asking to press enter
2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek c1f7a6b3a7 VIM-4120 Pass enter press back to editor 2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek 9848aab71a VIM-4120 adjust arrows key handling
in single-line mode we just passed arrow keys back to the editor
in multiline mode they are used to scroll in output panel unless we are already at end, then it's passed back to editor
2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek bcc8d1b525 VIM-4120 Remove caret from OutputPanel 2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek 5510a20654 VIM-4120 Pass eny keypress back to editor in single line output 2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek bec8daa6ab VIM-4120 Use showErrorMessage for displaying errors in red 2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek 5e20bbf14e VIM-4120 display multiple lines in OutputPanel with different styles 2026-02-11 12:58:59 +01:00
1grzyb1andGrzybek 6ecfb3e92e VIM-4120 Add missing VimHintsExtension class 2026-02-11 08:51:10 +01:00
1grzyb1andGrzybek ce6115ee90 VIM-3948 Fix set command tests after removing vimhints option 2026-02-10 12:02:34 +01:00
1grzyb1andGrzybek f1355c3305 VIM-3948 Enable vimhints through 'Plug'
As vimhints are not part of neovim, it makes more sense to keep it as a plugin, not as an option
2026-02-10 12:02:34 +01:00
1grzyb1andGrzybek 3ffd680650 VIM-3948 don't traverse not visible components
We don't want to apply labels for components that are inside not visible components. For example, setting has `SettingsEditor` with multiple `SettingWrapper` for each selected tab but only one is visible at one time. So we don't want to apply labels on not visible tabs
2026-02-10 09:06:06 +01:00
1grzyb1andGrzybek 1588a9e15b VIM-3948 Traverse vertical panes in ConfigurableEditor
Vertical planes in settings windows has a lot of elements that we may want to click using hints so we traverse inside them
2026-02-10 08:08:14 +01:00
1grzyb1andGrzybek 72f0ef1602 VIM-3948 Traverse inside horizontal panes
Trees are skipped as they contain a lot of elements and would generate too many hints.
A similar situation is with vertical scroll panes (e.g. editors). but not horizontal.
 This is a heuristic that I observed that horizontal scroll doesn't have many elements and doesn't have any keyboard navigation.
2026-02-10 08:08:14 +01:00
1grzyb1andGrzybek 6fc6e1bfc7 VIM-3948 Handle status bar items as individual components
We are skipping Tree and scroll panes inside status bar as they would be a performance problem.
Exception is when we are inside the status bar where we want to apply hints on individual components.
2026-02-10 08:08:14 +01:00
1grzyb1andGrzybek 4256d17282 VIM-3948 Don't apply hints on each commit
To achieve that for each scroll pane we apply single hint and navigation inside is handled by keys designed for that panel
2026-02-09 11:58:05 +01:00
1grzyb1andGrzybek c1ce2d57fd VIM-3948 make hint test skipped in headless env 2026-02-09 11:37:13 +01:00