Commit Graph
100 Commits
Author SHA1 Message Date
Filipp VakhitovandAlex Pláte eae3fb3ebe Introduce VimKeyBasedUndoService and VimTimestampBasedUndoService
Undo is managed differently in Fleet and IJ Platform, so now we have two different interfaces that are aware of that
2024-11-22 17:15:07 +02:00
Filipp VakhitovandAlex Pláte 7f5dce4051 Stop using some deprecated methods 2024-11-22 17:15:07 +02:00
Filipp VakhitovandAlex Pláte 25e3988dcf Introduce VimCopiedText class
I don't really like that we have `transferableData: List<Any>`
2024-11-22 17:15:07 +02:00
Filipp VakhitovandAlex Pláte 36589c5250 Add context argument in clipboard methods
Alas, adding in just to clipboard was not possible, as there are a lot of depending on methods
2024-11-22 17:15:07 +02:00
Filipp VakhitovandAlex Pláte f1f86b5cd2 Simplify Register class
1. `rawText` vs `text` is confusing and `rawText` was misused, we do not need this field in IdeaVim at all
2. `rawText` and `keys` are the same thing, just parsed. And for some reason, rawText was a nullable field
3. Register is an immutable class now
4. Working with Register class is easier and more compact now
2024-11-22 17:15:07 +02:00
Filipp VakhitovandAlex Pláte 628b3ca89f Fix <CR> parsing
It's ^M, not ^J
2024-11-22 17:15:07 +02:00
Filipp VakhitovandAlex Pláte d2b929ddd0 Fix parsing for clipboard option
When I added the selection clipboard, it was confusing to explain to people how this option works and why they should prepend, because the parsing was broken
I've also removed "exclude" part, because it doesn't work in IdeaVim and can confuse people
2024-11-22 17:15:07 +02:00
Filipp VakhitovandAlex Pláte cde9bc94e6 Fix select mode for immutable caret
Due to implementation details, caret cannot be moved after setting selection
2024-11-22 17:15:07 +02:00
Filipp VakhitovandAlex Pláte 63f6e73223 Fix select mode for immutable caret 2024-11-22 17:15:07 +02:00
Filipp VakhitovandAlex Pláte ad28e09fec Move caret when deleting a char
In Fleet deleting text does not move caret, so we add caret moving logic
2024-11-22 17:15:07 +02:00
Filipp VakhitovandAlex Pláte f616f2c3c1 Fix gv in Fleet
Moving caret after setting selection removes the selection
2024-11-22 17:15:07 +02:00
Filipp VakhitovandAlex Pláte 66aec26091 Move ColLineFunctionHandler.kt to vim-engine 2024-11-22 17:15:07 +02:00
Filipp VakhitovandAlex Pláte 1d59c49b95 Move more logic to vim-engine 2024-11-22 17:15:07 +02:00
Filipp Vakhitov 5b17d7740e Update generated files after merging PRs 2024-08-25 21:51:14 +03:00
Filipp VakhitovandAlex Pláte e30bc14843 Make closing command line safer 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 76d590be11 Support more flexible command line restrictions for Fleet 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte b005328b4a Exclude generated files from .gitignore
I've also added sorting to be more confident that the generated file will be persistent across different machines
2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte ad20021cee Remove currentAction and some unused code 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 126de5c218 Remove package-info.java 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 0f7aef3f15 Fix tests 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte f352b84922 Move some Executor logic to its base class 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 789faa7cb2 Add entry to history on <Esc> in COMMAND mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte a338f5768a Better reset 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 8205c74571 Remove some old bindings 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte def40eb409 Save last entry on every command line text update 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 010e8a7541 Support <C-U> in command mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 46c6778b3a Support <Down>, <S-Down>, <C-N>, <PageDown> in command mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 0977bd4400 Support <Up>, <S-Up>, <C-P>, <PageUp> in command mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte db092e9b0a Support history in VimCommandLine 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 5cfb98e188 Remove some old bindings 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 3a95b62885 Support <Insert> in command mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 93e6adf5a9 Support <C-W> in command mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 37204398ff Support <C-Right>, <S-Right> in command mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte b2f450d14d Support <C-Left>, <S-Left> in command mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 61da888571 Fix failing tests 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte fcda97cfb8 Update methods to support searching in any text, not just Editor content 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 1dc7ea6363 Register all shortcuts without references on ExKeyBindings
All the shortcuts will be removed from ExKeyBindings, but they still need to be registered
2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte bb507db884 Remove swing bindings that are already implemented 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 7b0482ed94 Fix unwanted beep when can't perform an action 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 1c79b0d59a Support <Right> in command mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte ff4eb31418 Support <Left> in command mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte cb1078cf70 Support <C-H> in command mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte da3e40eaf6 Support <C-E>, <End> in command mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 17f77a9639 Support <C-B>, <Home> in command mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 3d03494354 Support <DEL> in command mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 642caddda7 Support <BS> in command mode 2024-08-23 14:18:03 +03:00
Filipp VakhitovandAlex Pláte 1d97c43e30 Make ExEntryAction public
Fleet registers commands manually, so commands must be accessible
2024-08-23 14:18:03 +03:00
Filipp Vakhitov 2189b70b87 Fix(VIM-3601): The escape characters in IdeaVim's configuration file are invalid 2024-08-14 18:18:55 +03:00
Filipp Vakhitov 7d68d41888 Fix(VIM-3580): New terminal switches editor to insert mode 2024-08-12 13:44:24 +03:00
Filipp Vakhitov 8c9ff9465f Fix(VIM-3584): com.maddyhome.idea.vim.KeyHandler requests com.maddyhome.idea.vim.api.VimKeyGroup instance. Class initialization must not depend on services 2024-08-11 01:12:59 +03:00
Filipp Vakhitov 1a2322ddec OutputPanel no longer ignores key events 2024-08-10 23:55:57 +03:00
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