Commit Graph
76 Commits
Author SHA1 Message Date
1grzyb1 b8f9ad7892 VIM-4228 Postpone caret movement after rider action 2026-10-14 16:28:42 +02:00
1grzyb1 0efcd70c6f VIM-4228 Move Rider tests to teamcity 2026-10-14 16:28:42 +02:00
1grzyb1 a00e382bdf VIM-4228 Refactor rider tests to use RemoteRobot 2026-10-14 16:28:42 +02:00
1grzyb1 713a61e362 Redraw panel only on current document changes
Without that even some random intelij change of gitignroe could redraw our panel what made Large file tests flaky
2026-10-14 11:50:01 +02:00
1grzyb1 398b161704 Wait for rpc modal input before next keystrokes
When rpc call was made and it showed modal dialog keystroke were lost during that time
2026-10-13 15:41:38 +02:00
1grzyb1 2d72b1f083 Restart clear output panel timer on change
Each n after search didn't restart timer so after 10s output panel was closed. It broke new Large file tests this way.
2026-10-13 15:41:38 +02:00
1grzyb1 36ef5574bd Mae sure C-B is handled by ide in large file tests 2026-10-13 15:41:38 +02:00
1grzyb1 06778f5380 Generate ideavim_extensions.json only in root module 2026-10-13 12:16:43 +02:00
1grzyb1 738b73417f Load intellij.platform.rpc dependency from an optional module
intellij.platform.rpc doesn't exist in 2025.3, is embedded in the core
classloader in 2026.1-2026.2 and is a standalone module since 2026.3.
Declaring it as a dependency of the embedded ideavim-common module disables
the whole plugin on 2025.3 and breaks the 2025.3 build.

Move the dependency to a new optional ideavim-rpc module that provides
VimRemoteApiResolver via the IdeaVIM.remoteApiResolver extension point.
When the module is skipped (2025.3), fall back to calling
RemoteApiProviderService from the core classloader.
2026-10-13 12:16:43 +02:00
1grzyb1 81ad363113 VIM-4342 publish metrics for large file tests 2026-10-13 10:37:34 +02:00
1grzyb1 bd0f361afa VIM-4341 Run search count on background thread
For large files running search count blocked edt which caused IDE freezes.
Now we first try to quickly show coutn and if we are not able in given threshold move it to other thread and later on update UI accordingly.
Additionally added tests for large files
2026-10-13 10:37:34 +02:00
1grzyb1 9e142d4401 VIM-1975 implement clever-f extension 2026-10-12 12:06:01 +02:00
1grzyb1 19925409d5 VIM-4340 add standalone rpc module 2026-10-12 10:28:10 +02:00
grzybek 55549efd72 Remove in in notification massage 2026-10-12 08:55:50 +02:00
1grzyb1 21ffd15bdb Add missing function command description 2026-10-09 11:40:31 +02:00
1grzyb1 5fd38b21b3 Improve release process
Our pipeline could mark issues on youtrack as fixed even if they were not in release branch.
Added single script for all pipelines to deremine which commits enetered given release so changelog, whats new and release itself are using exactly same logic
2026-10-09 10:13:18 +02:00
1grzyb1 1e3c671c0c VIM-2524 calculate indent after cc
set proper indent after performing cc. previously we were just using that was already set not from code style
2026-10-09 09:49:32 +02:00
1grzyb1 ca384caae4 VIM-2293 Add visual-multi documentation 2026-10-08 11:25:42 +02:00
1grzyb1 f3003d92ef VIM-2293 Align cursors 2026-10-08 11:25:42 +02:00
1grzyb1 c898281cd9 VIM-2293 Case conversion menu 2026-10-08 11:25:42 +02:00
1grzyb1 e084c387fa VIM-2293 Quit session after leaving insert mode 2026-10-08 11:25:42 +02:00
1grzyb1 52b33469ec VIM-2293 Reselect regions of the last session 2026-10-08 11:25:42 +02:00
1grzyb1 4bc3e56898 VIM-2293 Insert before and after regions 2026-10-08 11:25:42 +02:00
1grzyb1 38489c3177 VIM-2293 Run macro at cursors 2026-10-08 11:25:42 +02:00
1grzyb1 807aa55dcc VIM-2293 Run normal command at cursors 2026-10-08 11:25:42 +02:00
1grzyb1 9062301f21 VIM-2293 Test paste at cursors 2026-10-08 11:25:42 +02:00
1grzyb1 b6e2bc32a9 VIM-2293 Add switch mode <Tab> 2026-10-08 11:25:42 +02:00
1grzyb1 3b92308f9c VIM-2293 Go to next/prev caret 2026-10-08 11:25:42 +02:00
1grzyb1 2295e96509 VIM-2293 Find Prev occurrence 2026-10-08 11:25:42 +02:00
1grzyb1 e4bccc976e VIM-2293 Visual cursors actions 2026-10-08 11:25:42 +02:00
1grzyb1 ae6198400b VIM-2293 C-Up C-Down for line navigation 2026-10-08 11:25:42 +02:00
1grzyb1 b3413f5924 VIM-2293 accepts count in handlers 2026-10-08 11:25:42 +02:00
1grzyb1 5ea29e1a6e VIM-2293 add VM_leader option 2026-10-08 11:25:42 +02:00
1grzyb1 92af7a9b58 VIM-2293 Cleanup visual multi code 2026-10-08 11:25:42 +02:00
1grzyb1 7b9cf20a19 VIM-2293 Add VM session
visual multi keeps track if it has active session and depending on that different mappins are performed
2026-10-08 11:25:42 +02:00
1grzyb1 9ed7a53709 VIM-2293 Add ignore case option 2026-10-08 11:25:42 +02:00
1grzyb1 fd310620e7 VIM-2293 Add VM_maps variable for mapping 2026-10-08 11:25:42 +02:00
1grzyb1 30c876dd59 VIM-2293 Add vim visual multiple extension
Extracted base class to nto duplicated code in both multi cursor extensions. new one has different mappings for some actions
2026-10-08 11:25:42 +02:00
1grzyb1 37aeff64aa VIM-2372 Add missing mappings for navigation keys
Allow users to map missing nerdtree keys like j or k
2026-10-07 09:13:53 +02:00
1grzyb1 543d577bfa VIM-1503 don't type dead keys
Composed text from dead keys and input methods was inserted into the document and replaced the Visual selection before IdeaVim saw the key, so we now drop it in Normal, Visual and Operator-pending modes and only let the committed character through, like Vim in a terminal.
2026-10-06 12:20:18 +02:00
1grzyb1 e0193e6f3b VIM-1948 Scroll caret while mouse scrolling
Move caret while mouse scrolling respecting scrolloff
guarded by ideascrollcursor to preserve old idea behaviour
2026-10-06 12:11:06 +02:00
1grzyb1 f6ee0c0f11 VIM-720 allow pass escape to IDE 2026-10-06 11:46:19 +02:00
1grzyb1 2282456ddd VIM-720 allow pass enter and arrows to IDE 2026-10-06 11:46:19 +02:00
1grzyb1 6f48fd9903 Complete action command ideavimrc file 2026-10-05 12:04:26 +02:00
1grzyb1 fe7bc72193 Complete action command in command line 2026-10-05 12:04:26 +02:00
1grzyb1 ccb0fb1677 Add descriptions to all commands
Each @ExCommand and @CommandOrMotion now describes what it does in IdeaVim, the text is rendered into the help file.
2026-10-05 10:57:50 +02:00
1grzyb1 c1d9ee7378 Generate the help file that :help opens from command annotations
Commands describe themselves in @ExCommand/@CommandOrMotion, generateHelp renders the Vim-style help file and a workflow keeps it up to date on master.
2026-10-05 10:57:50 +02:00
1grzyb1 360d3d4b69 VIM-4336 postpone caret normalization for async actions
In Rider actions like comment are async and afterActionPerformed happens right after action axecution without waiting for action to actually finish.
Which resulted in first normalizing carret by IdeaVim and then moving it by comment action in wrong place
2026-10-05 09:50:57 +02:00
Grzybek e27ffe0549 VIM-1894 include collapsed region during visual selection (#2098) 2026-10-02 08:35:07 +00:00
1grzyb1 8ad1ab8bdf VIM-4335 document ideaoutsideeditor option 2026-10-02 10:22:27 +02:00
1grzyb1 69d845f92f VIM-4335 remove dispatcher listeners on option change
otherwise it wasn't detected right away
2026-10-02 10:22:27 +02:00
Grzybek f94d5b05dc VIM-4335 guard outside editor dispatcher when ideaoutsideeditor (#2100) 2026-10-02 09:27:45 +02:00
1grzyb1 2ec828b529 VIM-1314 Replace mode paste with cmd+v
To be vim compatible we need to wrap idea paste during replace mode.
Vim is pasting and replacing text and we were inserting it before cursor.
So to this we wrap paste action handler and in replace mode we handle it by ourselves
2026-10-01 11:54:35 +02:00
Grzybek b00370888a VIM-1306 Add keylog extension (#2096)
Extension that logs all typed keys
2026-10-01 10:56:08 +02:00
Grzybek 7bd8f1315c VIM-3963 Allow enabling vim for plugin editors and ai chat windows (#2091)
* VIM-3963 enable vim for main editors

* VIM-3963 enable vim for jetbrains AI chat
2026-09-30 12:28:19 +02:00
Grzybek 5bc0344547 VIM-4333 Fix auto-indent handling in clion (#2090)
use directly formatter for clion to indent lines otherwise it was formatting whole file
2026-09-30 08:38:08 +00:00
Grzybek d99f46937f VIM-1153 replay all keystrokes during . (#2088)
* VIM-1153 replay all keystrokes during .

we were storing actions and commands to replay during . repeat. Due to that we had to do a lot of strange logic to move cursor after ide chagnes. Becouse of that renaming tag element didn't work.

To make it work and more vim like we store real keystrokes and replay them

* VIM-1153 replay autocomplete

in new mechanism C-Y was working on active lookup and during replay there was no lookup. to fix that we go through action path which adds those keys by itself but we need to drop C-Y from RedoBuffer stack as it's replaved by actruall charachters

* VIM-1153 Fix other lookup actions

* VIM-1153 keep lookup commands as separate ones

Extracted all lookup commands as separate handlers as it was confusing to have seprate paths depending on isActiveLookup in handlers
2026-09-29 10:31:40 +00:00
Grzybek 60d17b0c83 VIM-4331 keep the indent of a new line when leaving Insert mode (#2084)
`didAutoIndent` was set for `o`, `O` and Enter as well as for `cc` and `S`,
so leaving Insert mode without typing anything deleted the indent of a line
that had just been opened.

Vim does delete it, and it does so for an indent computed by 'indentexpr' or
'cindent' too (`fixthisline()` in indent.c). This is a deliberate difference:
in the IDE the indent comes from language support, and a line you have just
opened is expected to stay where it is. `cc` and `S` still follow Vim, since
there the line held text a moment ago and its leftover indent is noise.
2026-09-25 10:40:17 +02:00
Grzybek f5fd057ba1 VIM-748 changing multiple commands with | (#2082)
* VIM-748 changing multiple commands with |

Added generic mechanism for chainging multiple commands with |
Main issue was with comamnds like `s` which might have | inside replaced regex
That's why we've adde whole machinery that split it in CommandVisitor.
We couldn't do it it antlr grammar itself as it would require having backwards state of grammer what antlr doesn't allow

* VIM-748 bump ksp version to 2.3.7
2026-09-24 12:36:34 +02:00
1grzyb1 c24adece73 VIM-3796 support match_words in matchit
it allows to define custom matching words in matchit.
Also refactor plugin to use vim regex instead of java to make it more vim like behaviour
2026-09-23 12:34:12 +02:00
1grzyb1 719335d4cb Debug failing claude actions 2026-09-23 09:13:14 +02:00
1grzyb1 d682906047 VIM-3198 add fast scroll in nerdtree
add mapping for <c-d> and <c-u> in nerdtree for fast scroll
2026-09-22 10:31:04 +02:00
grzybekandClaude Opus 5 a087a508b5 VIM-3093 Scope search highlights to the viewport
Vim computes 'hlsearch' per screen cell during redraw and keeps no highlight objects at all, while IdeaVim materialises a RangeHighlighter per match, so highlighting the whole buffer put tens of thousands of them in the markup model for the 35 lines the user can see.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-21 11:58:29 +02:00
grzybekandClaude Opus 5 154f81d1d6 VIM-3093 Stop deriving the search match model from the highlighters
Once the highlighters cover only the viewport they are no longer a complete model of the matches, so the two callers that read the match list back out of them need another source.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-21 11:58:29 +02:00
grzybekandClaude Opus 5 c7149c3129 VIM-3093 Give search highlights a single owner per editor
Nothing kept the vimLastHighlighters list and the markup model in step, and nothing could answer which part of the document is currently highlighted - both of which scoping the highlights to the viewport needs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-21 11:58:29 +02:00
grzybek 46cf018d32 VIM-4326 run mapping from select mode in visual mode
Vim when mapping is run on select mode it runs it in visual and then restores
2026-09-18 09:19:01 +02:00
grzybek e552a2ba51 VIM-2627 Handle nullable PathMacroManager.expandPath on 2026. 2026-09-17 13:17:33 +02:00
grzybek f13c3e333c VIM-4318 Adjust Visual mark columns when lines merge 2026-09-17 13:17:33 +02:00
grzybek 71f7e2d3ea VIM-4272 Don't update systemSelection during indent
when we selected text during indentation after paste it selected part of text which in combination with unnamed resulted in duplicated/broken paste
2026-08-12 10:01:52 +02:00
grzybek 6e7a45a9e0 VIM-4272 recover the register type when PRIMARY comes back stripped
When the selection is no longer ours but still holds our text minus the tail something reformatted away, the type now comes from what we published instead of being guessed from the text.
2026-08-11 12:21:42 +02:00
grzybek 181f5681db VIM-4272 use published PRIMARY content when we own the selection
On Linux with clipboard=unnamed the `*` register is backed by the system PRIMARY selection, which stores text only, so its type was re-guessed from the text on every read. The selection can come back with trailing whitespace stripped, so a line-wise "foo   \n" reads back as "foo" and gets downgraded to character-wise. We now reuse the text and type we published while we still own the selection, and only read and guess once another app claims it.
2026-08-10 11:07:16 +02:00
grzybek 784cd6e41a VIM-4184 remove wl-copy from primary writers
Use only xclip on wayland as wl-copy makes whole IDE flickers
2026-05-18 09:17:14 +00:00
grzybek db55089f95 Fix(VIM-4231): pasting from clipboard in visual selection 2026-05-15 09:06:32 +00:00
grzybek ba49910420 Fix(VIM-4233): focus ex entry panel race condition
When user typed / twice in a row there could be race condition between deactivate and activate panel requesting focus. so becouse of focus parent in deactivate is asnyc it could happen after requestFocusInWindow in activate
2026-05-15 07:40:07 +00:00
grzybek fafbb78a0f Fix(VIM-4184): mirror PRIMARY on Wayland via xclip/wl-copy
JBR's WLClipboard takes Wayland-side primary ownership and Mutter's
Wayland→X11 bridge is racy under rapid visual selection, so external
readers (xclip, middle-click-paste) see stale content. Route PRIMARY
writes through xclip (preferred) or wl-copy (fallback) on Wayland,
deferred past IntelliJ's CaretModelImpl.updateSystemSelection
post-yank clobber. AWT path unchanged on X11/macOS/Windows.
2026-05-14 08:15:49 +00:00
Grzybek 0264e1cd75 VIM-566 Add zA toggle folding support 2026-01-21 16:48:36 +02:00