Filipp Vakhitov
ed55b2b24f
Replace v: scope variables with g: scope for mode widget
2026-02-11 12:17:50 +02:00
Filipp Vakhitov
14e6759121
Allow plugin writers to provide their own VimCommandLineService
2026-02-11 09:34:34 +02:00
Filipp Vakhitov
75dadc9610
Fix(VIM-3802): Completion should create undo checkpoint
...
Do not create checkpoints for Enter keypress
2025-02-25 15:09:41 +02:00
Filipp Vakhitov
f6146b8732
Fix(VIM-3802): Completion should create undo checkpoint
2025-02-25 14:36:46 +02:00
Filipp Vakhitov
5e60ea7f4c
Fix(VIM-3754): set clipboard+=unnamed stopped working in IdeVIM 2.18
...
I did remove `exclude:cons\\|linux` from the overriden value
2024-12-18 13:11:26 +02:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
7f5dce4051
Stop using some deprecated methods
2024-11-22 17:15:07 +02:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex 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 Vakhitov and Alex 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 Vakhitov and Alex Pláte
628b3ca89f
Fix <CR> parsing
...
It's ^M, not ^J
2024-11-22 17:15:07 +02:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex 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 Vakhitov and Alex Pláte
63f6e73223
Fix select mode for immutable caret
2024-11-22 17:15:07 +02:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
f616f2c3c1
Fix gv in Fleet
...
Moving caret after setting selection removes the selection
2024-11-22 17:15:07 +02:00
Filipp Vakhitov and Alex Pláte
66aec26091
Move ColLineFunctionHandler.kt to vim-engine
2024-11-22 17:15:07 +02:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
e30bc14843
Make closing command line safer
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
76d590be11
Support more flexible command line restrictions for Fleet
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
ad20021cee
Remove currentAction and some unused code
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
126de5c218
Remove package-info.java
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
0f7aef3f15
Fix tests
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
f352b84922
Move some Executor logic to its base class
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
789faa7cb2
Add entry to history on <Esc> in COMMAND mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
a338f5768a
Better reset
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
8205c74571
Remove some old bindings
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
def40eb409
Save last entry on every command line text update
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
010e8a7541
Support <C-U> in command mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
46c6778b3a
Support <Down>, <S-Down>, <C-N>, <PageDown> in command mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
0977bd4400
Support <Up>, <S-Up>, <C-P>, <PageUp> in command mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
db092e9b0a
Support history in VimCommandLine
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
5cfb98e188
Remove some old bindings
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
3a95b62885
Support <Insert> in command mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
93e6adf5a9
Support <C-W> in command mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
37204398ff
Support <C-Right>, <S-Right> in command mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
b2f450d14d
Support <C-Left>, <S-Left> in command mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
61da888571
Fix failing tests
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
fcda97cfb8
Update methods to support searching in any text, not just Editor content
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex 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 Vakhitov and Alex Pláte
bb507db884
Remove swing bindings that are already implemented
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
7b0482ed94
Fix unwanted beep when can't perform an action
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
1c79b0d59a
Support <Right> in command mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
ff4eb31418
Support <Left> in command mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
cb1078cf70
Support <C-H> in command mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
da3e40eaf6
Support <C-E>, <End> in command mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
17f77a9639
Support <C-B>, <Home> in command mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
3d03494354
Support <DEL> in command mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex Pláte
642caddda7
Support <BS> in command mode
2024-08-23 14:18:03 +03:00
Filipp Vakhitov and Alex 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 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