Commit Graph
100 Commits
Author SHA1 Message Date
Filipp Vakhitov 5dc860f61e Fix(VIM-3569): Pipe-symbol can no longer be used in remaps 2024-07-30 18:02:12 +03:00
Filipp VakhitovandAlex Pláte b001d63fd9 Do not fire VimInsertListener on every mode change 2024-07-26 17:30:08 +03:00
Filipp VakhitovandAlex Pláte 5db96bef28 Fix compilation with IdeaVimExtension 2024-07-26 17:30:08 +03:00
Filipp VakhitovandAlex Pláte 39c615cddd Do not cast VimStateMachine classes in vim-engine
It will break if we change implementation in Fleet
2024-07-26 17:30:08 +03:00
Filipp VakhitovandAlex Pláte 961173a93b Fix tests 2024-07-26 17:30:08 +03:00
Filipp VakhitovandAlex Pláte 92741c6356 Fix compilation 2024-07-26 17:30:08 +03:00
Filipp VakhitovandAlex Pláte 643eb2a85f Add context to MappingProcessor 2024-07-26 17:30:08 +03:00
Filipp Vakhitov e8e6eabe97 Fix tests
See https://youtrack.jetbrains.com/issue/VIM-3566/Unit-Tests-Test-UI-Caret-Attributes for more details.
2024-07-26 16:31:47 +03:00
Filipp Vakhitov ef1c915264 Fix visual mode not being removed.
Steps to reproduce:
1. Select some text inside diff editor
2. Open 'Find in Files' window and search for file
3. Open the found file

Result: current mode is VISUAL
2024-07-26 14:24:01 +03:00
Filipp Vakhitov a5e2168f7f Fix(VIM-3540): Caret icon is stuck in incorrect mode when having two or more simultaneous instances running
Some of the text input fields where Vim should not work at all had block carets.
It did not happen before, because previously we had a unique VimStateMachine for each editor and for newly created editors it was in INSERT mode. And we did call the updateSecondaryCaretsVisualAttributes method for editors that have nothing to do with Vim, but because of the INSERT mode it was looking OK.
However, now the VimStateMachine is global, and we can't rely on local INSERT anymore.
This commit forbids updating caret visual attributes for editors that do not support Vim.

NOTE: `isIdeaVimDisabledHere` is broken during editor creation handling, it always returns true. However, we do not trigger carets redraws on editor creation and do it on focus events, so it should work.
2024-07-26 00:44:35 +03:00
Filipp Vakhitov 83e5470b3a Fix(VIM-3563): Can't exit insert mode in Readonly File 2024-07-25 22:54:39 +03:00
Filipp Vakhitov 2aa71a0008 Add "Dracula" theme to mode widget 2024-07-23 19:36:07 +03:00
Filipp Vakhitov c2c0c2aba2 Fix(VIM-3552): Undo undoes paste and insert in one keypress 2024-07-22 23:08:56 +03:00
Filipp Vakhitov 5588c27037 Attempt to fix VIM-3540
I'm not sure what causes the issue, but everything was working when we were updating visual attributes per each caret and... let update them per each caret
2024-07-17 14:45:50 +03:00
Filipp VakhitovandAlex Pláte 90d36eea98 Make myInputInterceptor private 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte f4414de86c Safer getCurrentModalInput() 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte d46102ccaf Remove deprecated method from vim-engine 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 82347f5f0d Fix surround 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte c594f28acb Fix compilation 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte bf6517e58f Add comment 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte aec2f4c435 Remove isCancel argument
It was not used anywhere
2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 8f905758d5 Remove typing in ModalInput
Typing is more suitable for command lines than a modal input, and most likely it should be used instead
It is still possible to support typing by properly implementing the handleKey method
2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 80cc236f48 Remove modal input on click 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte e432a02a45 Remove confirmChoice method
It used secondary loop
2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte d7894fa7f4 ProcessSubstituteCommand refactoring part 9
Finally, moved confirmation dialog to modal input
2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 853d7032f0 ProcessSubstituteCommand refactoring part 8 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 5f9f57e1c0 ProcessSubstituteCommand refactoring part 7 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte f4381c8216 ProcessSubstituteCommand refactoring part 6 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 20eee7cae7 ProcessSubstituteCommand refactoring part 5 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 33392c2148 ProcessSubstituteCommand refactoring part 4 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte bb67564fbe ProcessSubstituteCommand refactoring part 3 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 61ccbcd788 ProcessSubstituteCommand refactoring part 2
We do not need the `doAll` condition (because the next code block with `doAll` adjusts line and column for the next match to be correct),
And the line2 can't be >= editor.lineCount()
2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 1dbaa3be6d ProcessSubstituteCommand refactoring part 1 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 872bc22830 Remove shouldRecord from KeyConsumer
shouldRecord value was only updated in ModeInputConsumer when the key was not handled. But when the key is not handled, it is not passed to finishedCommandPreparation and the shouldRecord value is not used
2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte ce23ed814c Move command line key handling logic to KeyConsumer 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 82cd534756 Remove startExEntry method
We may create a command line via the VimCommandLineService and forget (or do not know) about calling startExEntry necessary. So we move its logic inside the creation of the command line
2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 673809d6b9 Move lastCommand to CmdFilterCommand 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte cdbaf73b1e Remove unused fields from VimProcessGroup 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 7f911b7e72 Fix VisualAreaMatcher
It looks for the last selection info in all conditions, not the ones that were specified
2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte c03a2dfe7e Add support for finishOn in readInputAndProcess 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 75935ce4d1 Add readInputAndProcess to replace inputString and save us from using secondary loop 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte f0b203409e Replace cancelExEntry with close method in VimCommandLine 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte b3b369eb59 Remove unnecessary write action
`insertRegister` is self synchronized
2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 96072982cf Replace deprecated inputString() with ModalInput 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte de016fc445 Always register shortcuts
No matter what kind of panel we have, we want VimShortcutKeyAction to be triggered and pass the shortcut keys (e.g. CTRL-C to close panel)
2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 554d9b5f7b Create a Wrapper for ExEntryPanel
ExEntryPanel already extends JPanel, so we need a wrapper to make it extend VimModalInputBase
2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 149edefad5 Delegate handling closing keystrokes to implementations
Sometimes it may mean aborting interception (CTRL-C), sometimes finishing it (CR)
2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 52d3840c83 Rename argument 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 793677d4fd Add typeText() method to VimModalInput 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 2376ee4877 Fix tests 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 68dcab6262 Introduce ModalInput to get rid of Swing's secondary loop 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte f38fd3512c Fix passing key to editor when the output panel is scrolled to its end 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte e515278ba3 Add label field to VimOutputPanel 2024-07-17 13:30:54 +03:00
Filipp VakhitovandAlex Pláte 9cc69e41ee Add KeyHandling logic to VimOutputPanel 2024-07-17 13:30:54 +03:00
Filipp Vakhitov 2109ff235c Fix tests 2024-07-16 20:32:11 +03:00
Filipp Vakhitov d6910aa81d Fix(VIM-3538): Can't select a block in {} when the cursor is on commented Line 2024-07-16 19:23:43 +03:00
Filipp Vakhitov 8369391902 Fix(VIM-3530): "Yank inner block"/"Change inner block" uses wrong block 2024-07-16 18:47:58 +03:00
Filipp Vakhitovandlippfi 5f2baefc6c Introduce new interface for VimOutputPanel to support the output panel in Fleet
Why is the old interface bad?
- it is not obvious. You cannot create a new panel or check if it is already created. Only "getOrCreate" it
- output panel is bound to editor while in Vim it is global
- we have the `isActive` field and the `clear()` method at the same time, because interface implies that you store the same instance of the panel and reactivate it for each output and I don't like it. We also can forget to call `clear()` after reusing panel
- we cannot "build" output before showing to make the panel more efficient. With multiple carets we can only cal `output(oldText + newText)` for each caret, and it is bad. (imagine we have global command with a lot of matches and for each time we will need to call the `output(oldText + newText)`)
- the `output()` method shows panel, activates it and updates it
- there are more things that I do not like, but the points above should be already enough
2024-07-08 13:09:08 +03:00
Filipp Vakhitovandlippfi cedcf39723 Fix(VIM-3461): Focus regression 2024-07-08 13:09:08 +03:00
Filipp Vakhitovandlippfi 4925d9aada Remove ideaglobalmode option
Mode is global now
2024-07-08 13:09:08 +03:00
Filipp Vakhitovandlippfi f3e6df32d0 Fix(VIM-3462): IdeaVim not responsive occasionally
This bug was caused by two reasons:
1. KeyHandler state is not longer per-editor and we can't reset it on editor creation
2. We do not need to do such things on editor creation. What actually matters is focusing the editor
2024-07-08 13:09:08 +03:00
Filipp Vakhitovandlippfi 5aaa8752af Move to new API from deprecated one 2024-07-08 13:09:08 +03:00
Filipp Vakhitovandlippfi a1d214316c Make VimStateMachine global
It is global in Vim
2024-07-08 13:09:08 +03:00
Filipp Vakhitov 07b1db4b28 Fix(VIM-3518): line numbers in :g/ not displayed 2024-07-04 01:50:33 +06:00
Filipp Vakhitov dc775a0f22 Move number option to vim-engine 2024-07-04 00:11:36 +06:00
Filipp Vakhitov 10228f953e Fix(VIM-3517): Add support for global find & replace Vim-ism — :g/pattern/s//replacement/g 2024-07-03 22:34:42 +06:00
Filipp VakhitovandAlex Pláte 3313464214 Fix(VIM-3501): Global commands applied to the following lines if matches > 1 2024-06-28 13:55:06 +03:00
Filipp VakhitovandAlex Pláte 683ba32a15 Fix test compilation 2024-06-28 13:55:06 +03:00
Filipp VakhitovandAlex Pláte 90a60155e5 Move VimscriptParser to vim-engine 2024-06-28 13:55:06 +03:00
Filipp VakhitovandAlex Pláte b25d06ed9e Move Vimscript visitors to vim-engine 2024-06-28 13:55:06 +03:00
Filipp VakhitovandAlex Pláte 706ae3dd91 Move GlobalCommand to vim-engine 2024-06-28 13:55:06 +03:00
Filipp VakhitovandAlex Pláte 9b15ed8181 Add VimRangeMarker 2024-06-28 13:55:06 +03:00
Filipp VakhitovandAlex Pláte f355bef36b Remove deprecated SearchGroup.java 2024-06-28 13:55:06 +03:00
Filipp VakhitovandAlex Pláte 4391e69c48 Move DocumentSearchListener to IjVimSearchGroup 2024-06-28 13:55:06 +03:00
Filipp VakhitovandAlex Pláte 0710d80391 Remove SearchGroup from GlobalCommand 2024-06-28 13:55:06 +03:00
Filipp Vakhitov 1b0886041b Fix(VIM-3506): in command mode no longer change cursor to " 2024-06-27 15:46:22 +05:00
Filipp Vakhitov 1da7ffc052 Add more logging to spot bug in CommandConsumer 2024-06-15 22:36:28 +02:00
Filipp Vakhitov 39a85b6bc2 Add more logging 2024-06-13 20:58:07 +02:00
Filipp Vakhitov 89e016ef6c Fix infinite loop stuck because of a confirmation dialog appearing over and over 2024-06-12 10:57:45 +03:00
Filipp Vakhitov e4996f4c4d Reduce distribution size 2024-06-11 01:41:24 +03:00
Filipp Vakhitov c44ed58142 Make text deletion in change actions a part of insert sequence 2024-06-09 00:33:07 +03:00
Filipp Vakhitov 0091af2a41 Fix(VIM-547): Undo splits Insert mode edits into separate undo chunks
Add tests
2024-06-07 23:03:53 +03:00
Filipp Vakhitov d1eea68719 Support i_CTRL-G_U 2024-06-07 21:38:11 +03:00
Filipp Vakhitov 133aff7fd8 Add a return type to getInsertSequence method 2024-06-07 21:29:44 +03:00
Filipp Vakhitov efde94db7a Fix recursive forEachCaretInvocation 2024-06-07 18:05:02 +03:00
Filipp Vakhitov 6ec072b34e End inputSequence on motion in insert mode 2024-06-07 17:12:11 +03:00
Filipp Vakhitov 4027a21514 Support most* cases for starting / ending inputSequence
* - Ending inputSequence on motion in insert mode is not supported in this commit
2024-06-07 16:55:22 +03:00
Filipp Vakhitov 3665b1ab00 Improve UndoRedoHelper to split insert input into multiple undo sequences 2024-06-07 16:27:58 +03:00
Filipp Vakhitov cf6b292f0c Add methods to work with InsertSequence 2024-06-07 16:24:37 +03:00
Filipp Vakhitov 507e4173d3 Introduce InsertSequence class 2024-06-07 16:09:25 +03:00
Filipp Vakhitov abc3575d3e Fix command registration order
We should prioritize ij commands over the engine ones
2024-06-07 16:03:27 +03:00
Filipp VakhitovandAlex Pláte 2c0ff587e3 Post-review improvements 2024-06-05 11:35:58 +03:00
Filipp VakhitovandAlex Pláte 26c87535d6 Fix focus 2024-06-05 11:35:58 +03:00
Filipp VakhitovandAlex Pláte 6ac8e672be Fix compilation 2024-06-05 11:35:58 +03:00
Filipp VakhitovandAlex Pláte 04ee2dd1e7 Post-rebase fixes 2024-06-05 11:35:58 +03:00
Filipp VakhitovandAlex Pláte 3106a98aee Make IjVimSearchGroup a PersistentStateComponent instead of deprecated SearchGroup 2024-06-05 11:35:58 +03:00
Filipp VakhitovandAlex Pláte 73769a3472 Move one method to VimProcessGroupBase 2024-06-05 11:35:58 +03:00
Filipp VakhitovandAlex Pláte 085e253d77 Fix possible bug in Fleet
Previously, we executed processings first and updated the state afterward. This approach could be problematic for asynchronous key processing, as Fleet might access the current state, which, in the context of async key processing, is a snapshot before execution and does not reflect the actual current KeyHandlerState
2024-06-05 11:35:58 +03:00
Filipp VakhitovandAlex Pláte b2af8f153e Add VimScriptFunctionServiceBase 2024-06-05 11:35:58 +03:00
Filipp VakhitovandAlex Pláte 37fb41fca8 Remove exCommandAnnotation option 2024-06-05 11:35:58 +03:00