Filipp Vakhitov
5dc860f61e
Fix(VIM-3569): Pipe-symbol can no longer be used in remaps
2024-07-30 18:02:12 +03:00
Filipp Vakhitov and Alex Pláte
b001d63fd9
Do not fire VimInsertListener on every mode change
2024-07-26 17:30:08 +03:00
Filipp Vakhitov and Alex Pláte
5db96bef28
Fix compilation with IdeaVimExtension
2024-07-26 17:30:08 +03:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
961173a93b
Fix tests
2024-07-26 17:30:08 +03:00
Filipp Vakhitov and Alex Pláte
92741c6356
Fix compilation
2024-07-26 17:30:08 +03:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
90d36eea98
Make myInputInterceptor private
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
f4414de86c
Safer getCurrentModalInput()
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
d46102ccaf
Remove deprecated method from vim-engine
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
82347f5f0d
Fix surround
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
c594f28acb
Fix compilation
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
bf6517e58f
Add comment
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
aec2f4c435
Remove isCancel argument
...
It was not used anywhere
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
80cc236f48
Remove modal input on click
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
e432a02a45
Remove confirmChoice method
...
It used secondary loop
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
d7894fa7f4
ProcessSubstituteCommand refactoring part 9
...
Finally, moved confirmation dialog to modal input
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
853d7032f0
ProcessSubstituteCommand refactoring part 8
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
5f9f57e1c0
ProcessSubstituteCommand refactoring part 7
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
f4381c8216
ProcessSubstituteCommand refactoring part 6
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
20eee7cae7
ProcessSubstituteCommand refactoring part 5
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
33392c2148
ProcessSubstituteCommand refactoring part 4
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
bb67564fbe
ProcessSubstituteCommand refactoring part 3
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
1dbaa3be6d
ProcessSubstituteCommand refactoring part 1
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
ce23ed814c
Move command line key handling logic to KeyConsumer
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
673809d6b9
Move lastCommand to CmdFilterCommand
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
cdbaf73b1e
Remove unused fields from VimProcessGroup
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
c03a2dfe7e
Add support for finishOn in readInputAndProcess
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
75935ce4d1
Add readInputAndProcess to replace inputString and save us from using secondary loop
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
f0b203409e
Replace cancelExEntry with close method in VimCommandLine
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
b3b369eb59
Remove unnecessary write action
...
`insertRegister` is self synchronized
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
96072982cf
Replace deprecated inputString() with ModalInput
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex 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 Vakhitov and Alex 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 Vakhitov and Alex Pláte
52d3840c83
Rename argument
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
793677d4fd
Add typeText() method to VimModalInput
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
2376ee4877
Fix tests
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex Pláte
68dcab6262
Introduce ModalInput to get rid of Swing's secondary loop
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
e515278ba3
Add label field to VimOutputPanel
2024-07-17 13:30:54 +03:00
Filipp Vakhitov and Alex 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 Vakhitov and lippfi
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 Vakhitov and lippfi
cedcf39723
Fix(VIM-3461): Focus regression
2024-07-08 13:09:08 +03:00
Filipp Vakhitov and lippfi
4925d9aada
Remove ideaglobalmode option
...
Mode is global now
2024-07-08 13:09:08 +03:00
Filipp Vakhitov and lippfi
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 Vakhitov and lippfi
5aaa8752af
Move to new API from deprecated one
2024-07-08 13:09:08 +03:00
Filipp Vakhitov and lippfi
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 Vakhitov and Alex 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 Vakhitov and Alex Pláte
683ba32a15
Fix test compilation
2024-06-28 13:55:06 +03:00
Filipp Vakhitov and Alex Pláte
90a60155e5
Move VimscriptParser to vim-engine
2024-06-28 13:55:06 +03:00
Filipp Vakhitov and Alex Pláte
b25d06ed9e
Move Vimscript visitors to vim-engine
2024-06-28 13:55:06 +03:00
Filipp Vakhitov and Alex Pláte
706ae3dd91
Move GlobalCommand to vim-engine
2024-06-28 13:55:06 +03:00
Filipp Vakhitov and Alex Pláte
9b15ed8181
Add VimRangeMarker
2024-06-28 13:55:06 +03:00
Filipp Vakhitov and Alex Pláte
f355bef36b
Remove deprecated SearchGroup.java
2024-06-28 13:55:06 +03:00
Filipp Vakhitov and Alex Pláte
4391e69c48
Move DocumentSearchListener to IjVimSearchGroup
2024-06-28 13:55:06 +03:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
2c0ff587e3
Post-review improvements
2024-06-05 11:35:58 +03:00
Filipp Vakhitov and Alex Pláte
26c87535d6
Fix focus
2024-06-05 11:35:58 +03:00
Filipp Vakhitov and Alex Pláte
6ac8e672be
Fix compilation
2024-06-05 11:35:58 +03:00
Filipp Vakhitov and Alex Pláte
04ee2dd1e7
Post-rebase fixes
2024-06-05 11:35:58 +03:00
Filipp Vakhitov and Alex Pláte
3106a98aee
Make IjVimSearchGroup a PersistentStateComponent instead of deprecated SearchGroup
2024-06-05 11:35:58 +03:00
Filipp Vakhitov and Alex Pláte
73769a3472
Move one method to VimProcessGroupBase
2024-06-05 11:35:58 +03:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
b2af8f153e
Add VimScriptFunctionServiceBase
2024-06-05 11:35:58 +03:00
Filipp Vakhitov and Alex Pláte
37fb41fca8
Remove exCommandAnnotation option
2024-06-05 11:35:58 +03:00