VIM-4134 Split plugin into frontend/backend modules for rem dev#1584
VIM-4134 Split plugin into frontend/backend modules for rem dev#1584
Conversation
b201f8b to
041115e
Compare
278afd6 to
787f492
Compare
|
/claude-review |
modules/ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/jump/JumpsListener.kt
Outdated
Show resolved
Hide resolved
modules/ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/file/FileRemoteApiImpl.kt
Outdated
Show resolved
Hide resolved
...s/ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/process/ProcessRemoteApiImpl.kt
Outdated
Show resolved
Hide resolved
...ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/bookmark/BookmarkRemoteApiImpl.kt
Outdated
Show resolved
Hide resolved
34b7eba to
066cecd
Compare
|
Two main points so far:
I'll wait for at least (1) to be fixed and will continue reviewing the code afterwards. |
...es/ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/file/FileBackendServiceImpl.kt
Outdated
Show resolved
Hide resolved
...es/ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/file/FileBackendServiceImpl.kt
Outdated
Show resolved
Hide resolved
...es/ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/file/FileBackendServiceImpl.kt
Outdated
Show resolved
Hide resolved
modules/ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/file/FileRemoteApiImpl.kt
Outdated
Show resolved
Hide resolved
modules/ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/jump/BackendJumpStorage.kt
Outdated
Show resolved
Hide resolved
modules/ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/jump/BackendJumpStorage.kt
Outdated
Show resolved
Hide resolved
modules/ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/jump/JumpRemoteApiImpl.kt
Outdated
Show resolved
Hide resolved
modules/ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/jump/JumpsListener.kt
Outdated
Show resolved
Hide resolved
modules/ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/BackendUtil.kt
Outdated
Show resolved
Hide resolved
...ideavim-common/src/main/java/com/maddyhome/idea/vim/group/bookmark/BookmarkBackendService.kt
Outdated
Show resolved
Hide resolved
407b41e to
c8fdd5e
Compare
...im-backend/src/main/java/com/maddyhome/idea/vim/group/bookmark/BookmarkBackendServiceImpl.kt
Outdated
Show resolved
Hide resolved
...ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/bookmark/BookmarkRemoteApiImpl.kt
Outdated
Show resolved
Hide resolved
modules/ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/file/FileRemoteApiImpl.kt
Outdated
Show resolved
Hide resolved
...ideavim-backend/src/main/java/com/maddyhome/idea/vim/group/bookmark/BookmarkRemoteApiImpl.kt
Show resolved
Hide resolved
slavam2605
left a comment
There was a problem hiding this comment.
Overall looks good.
I could missed something, because this MR is big and contains refactorings, code style changes and a lot of changes that don't look directly connected to split.
| import com.maddyhome.idea.vim.ui.ShowCmd | ||
| import java.awt.Toolkit | ||
|
|
||
| @Service |
There was a problem hiding this comment.
Why a lot of services are not annotated with @Service anymore? Do you have a reason to register them in XML (if they are)?
There was a problem hiding this comment.
We decided we want to leave code in src but want to load services only on frontend so we register them in modules/frotnend. If we would leave @Service those would load both on frontend and backend
There was a problem hiding this comment.
Ok. Why didn't you move the code, though? To avoid big changes in MR?
There was a problem hiding this comment.
That's one thing but more important is that there are other plugins and PR that are dependent on that code and we didn't want to break backward compatibility
cf3366d to
23279cd
Compare
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
- 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>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…resources Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.
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>
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.
IdeaVim was a monolith that only worked when the IDE ran locally. JetBrains' Remote Dev and Fleet run the backend (project model, file system, processes) on a remote host while the frontend (UI, editor, keybindings) runs on the user's machine. A monolithic plugin can't participate in this split — every file operation, shell command, bookmark, and jump that touches the backend would fail.
This branch carves IdeaVim into three new modules — common (shared RPC contracts), backend (server-side implementations), and frontend (everything visible to the user) — connected by four Fleet RPC interfaces. The frontend never touches the file system directly; the backend never touches the injector or Vim options. Every cross-boundary call is an explicit, serializable RPC message.