Rider gets the state of a backend action (e.g. MoveElementRight or ReformatCode for C#) from the backend only for a real hotkey: when the last shortcut seen by the key dispatcher belongs to the action, it wraps the action into a composite that asks the backend. The synchronous tryToExecute goes through the same hotkey update but never gets there. After `:action` the last shortcut is Enter, so the action isn't wrapped, and after an `<Action>` mapping it is wrapped, but tryToExecuteNow updates the original action instead of the wrapped one. Either way only the frontend answers, it reports the action as disabled, and tryToExecute rejects it. The asynchronous tryToExecute updates the action the way a menu does, with an asynchronous request to the backend, so it gets the real state without blocking the EDT. The action then runs later, so executeAction can't tell whether it succeeded, but the backend's changes arrive later anyway.
The new Rider tests also cover the action cases fixed earlier (VIM-3376, VIM-3826, VIM-3861, VIM-3881) that had no Rider test. ReformatCode from a mapping no longer freezes Rider, so its disabled test is replaced by RiderReformatCodeTest, which runs in its own Rider in case it does again.
The sticky lines panel's height depends on the scroll position, so an exact middle doesn't always exist, and the old tolerance range let the previous position count as centred after every other k; instead, try the middle for each panel height we find and keep the closest position, staying put on a tie unless the caret moved to another line, so moves always scroll but typing never scrolls back and forth.
The platform reports the editor switch from closing the cmdwin only after the command has run, so redrawing for it closed the output the command had just shown.
The driver SDK's SelectionModel has no getSelectedText(Boolean) in 2025.3,
which broke the compilation of the ui-rd-tests module in the 2025.3 and
nvim jobs. Call it through our own remote interface instead.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
* 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
`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.
Allow to disbale char-ise block comments.
Original plugin doesn't support comment part of line.
Here we add `commentary_block_comments` variable to allow to disable it
We had discreppancy between ideavim implementation of multi-cursor plugin and original one as we defined different mappings.
Here we restore original mapping and add flag to switch to old IdeaVim alt-based mappings
We shouldn't mimic exactly vim here as it always remove whole line with fold region but in ij fold might be in middle of line or just end of it so we don't want to delete fold content whne we do dl in middle of line