Filipp Vakhitov
f355bef36b
Remove deprecated SearchGroup.java
2024-06-28 13:55:06 +03:00
Filipp Vakhitov
4391e69c48
Move DocumentSearchListener to IjVimSearchGroup
2024-06-28 13:55:06 +03:00
Filipp Vakhitov
0710d80391
Remove SearchGroup from GlobalCommand
2024-06-28 13:55:06 +03:00
filipp
cf41a3a76c
Fix(VIM-3507): Mapping exits early on double backslash
2024-06-28 13:46: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
948520f90a
Fix(VIM-3485): Stay in the same split when using (Back) or (Forward)
2024-06-21 17:44:44 +03:00
Alex Pláte
28aa156cb7
Merge branch 'master' into feature/gradle-intellij-plugin-v2
2024-06-21 16:30:25 +03:00
lippfi
e7b87d31cf
Merge pull request #904 from citizenmatt/bugfix/jumplist
...
Fix jumplist no longer updated from IDE actions
2024-06-17 17:45:25 +05:00
Matt Ellis
4913b13a2d
Migrate to IntelliJ Platform Gradle Plugin 2.0
...
Also updates the GitHub workflows to use the new name for the testIdeUi task, and the TeamCity files to use the new name for the VerifyPlugin task
2024-06-17 11:03:17 +01:00
Filipp Vakhitov
1da7ffc052
Add more logging to spot bug in CommandConsumer
2024-06-15 22:36:28 +02:00
Matt Ellis
69d14ddcf5
Implement clearjumps command
2024-06-14 14:29:12 +01:00
Filipp Vakhitov
39a85b6bc2
Add more logging
2024-06-13 20:58:07 +02: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
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
cf6b292f0c
Add methods to work with InsertSequence
2024-06-07 16:24:37 +03:00
Filipp Vakhitov
2c0ff587e3
Post-review improvements
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
6ac8e672be
Fix compilation
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
04ee2dd1e7
Post-rebase fixes
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
3106a98aee
Make IjVimSearchGroup a PersistentStateComponent instead of deprecated SearchGroup
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
73769a3472
Move one method to VimProcessGroupBase
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
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
b2af8f153e
Add VimScriptFunctionServiceBase
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
e2b05ab639
Move Vimscript grammar to engine
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
9b97867be1
Support replace mode in command line
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
06685d1721
Move more logic to VimCommandLine interface
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
ae4b88a06b
Remove ExEntryPanel and move its method to VimCommandLine
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
c83ecc46ed
Rename method
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
c32050a208
Introduce actualText
and visibleText
for command line
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
4a8c7227e6
Remove default value
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
55e61a7094
Remove count for command line
...
It was not used anywhere
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
60977d05b6
Deprecate ExEntryPanel
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
0c91bc3207
Changes to replace ExEntryPanel with interface and move more code to engine
2024-06-05 11:35:58 +03:00
Filipp Vakhitov
f5cd2c173f
Changes to replace ExEntryPanel with interface and move more code to engine
2024-06-05 11:35:58 +03:00
Matt Ellis
d00bd8bb25
Fix incsearch highlights with operator count
...
E.g. `2"a3"b4"c5d6/foo` will now highlight the current match correctly
2024-06-03 11:54:48 +03:00
Matt Ellis
a66e44d835
Fix [count]:
initial range text in ex field
...
Fixes regression from changes in ex field handling
2024-06-03 11:54:48 +03:00
Matt Ellis
ce05317634
Maintain Visual when cancelling search entry
2024-06-03 11:54:48 +03:00
Matt Ellis
33d88d55c9
Remove unused branch in SortCommand
...
Commands are executed in Normal mode, although there may be multiple carets
2024-06-03 11:54:48 +03:00
Matt Ellis
a31a4a8ca7
Share ex entry set up with filter commands
2024-06-03 11:54:48 +03:00
Matt Ellis
c34d000b91
Reintroduce ProcessGroup.startExEntry
...
We need to share the implementation between starting an Ex command, and starting a filter command, which is just an Ex command with initial text
2024-06-03 11:54:48 +03:00
Matt Ellis
a2bfe950fa
Fix move command moving to current line
...
Removes a workaround that would break moving a range to the current line because it would always move the caret to the start of the range. Now positions the caret to the start of the selection if there is one. This also means we can remove the SAVE_VISUAL flag from JoinLinesCommand
Fixes VIM-2936
2024-06-03 11:54:48 +03:00
Matt Ellis
f7b6a97435
Support 0 as part of a range address
...
Fixes VIM-1137
2024-06-03 11:54:48 +03:00
Matt Ellis
f64c99c406
Support incsearch highlighting for global command
...
Fixes VIM-2891
2024-06-03 11:54:48 +03:00
Matt Ellis
f552e43c5b
Refactor handling of default range
...
Specify a default range instead of default line for count.
2024-06-03 11:54:48 +03:00
Matt Ellis
4798198e41
Minor refactorings
2024-06-03 11:54:48 +03:00
Matt Ellis
a59de4ce05
Add tests and fixes for yank command
...
Handles validation for count and ensures correct behaviour for registers.
2024-06-03 11:54:48 +03:00
Matt Ellis
2dea525665
Add tests and fixes for join command
...
Handles validation for count and positions caret in the correct place. Also handles join with visual multicaret scenarios.
2024-06-03 11:54:48 +03:00
Matt Ellis
8ecb1f7296
Add tests and fixes for print command
...
Handles validation of count and correctly moves caret to end of range after execution. Also fix issue where the results of :print are accumulated and not cleared.
Fixes VIM-2570
2024-06-03 11:54:48 +03:00
Matt Ellis
9ca9530061
Add tests and fixes for shift commands
...
Shift left and right now work with counts, validate the counts and move the caret to the correct end position
2024-06-03 11:54:48 +03:00
Matt Ellis
54e27afc3f
Simplify getCount functions
...
Made it explicit to get the count from argument and/or range. Default count is not passed, because it was never used. Added some tests where possible, but hard to test select file and friends
2024-06-03 11:54:48 +03:00
Matt Ellis
5e67032655
Add tests and fixes for delete lines command
...
Validates register before use and correctly uses register and count
2024-06-03 11:54:48 +03:00
Matt Ellis
cb37f6df63
Add tests and fixes for goto line command
...
Correctly handles some validation, and also allows going to line zero
2024-06-03 11:54:48 +03:00
Matt Ellis
ca3a18cf37
Add tests for goto character command
...
Also start to refactor handling of count
2024-06-03 11:54:48 +03:00
Matt Ellis
cac36627aa
Support 0 in copy command to copy to top of file
2024-06-03 11:54:48 +03:00
Matt Ellis
e762a3093b
Range is already normalised
2024-06-03 11:54:48 +03:00
Matt Ellis
739ac2ae5e
Simplify getting address from argument
2024-06-03 11:54:48 +03:00
Matt Ellis
77c364a2d0
Move count handling out of range into command
2024-06-03 11:54:48 +03:00
Matt Ellis
103cd9f5ce
Fix off-by-one error in count
...
Count needs to be one-based, lines must be zero-based. So store addresses as one-based until processed
2024-06-03 11:54:48 +03:00
Matt Ellis
4778995f3b
Remove unnecessary getFirstLine function
2024-06-03 11:54:48 +03:00
Matt Ellis
0a14150840
Extract TextRange from Ex range class
2024-06-03 11:54:48 +03:00
Matt Ellis
e8ffc0313f
Remove Range overloads that don't require a caret
...
Provide caret when calling from Command
2024-06-03 11:54:48 +03:00
Matt Ellis
7dbd3886b1
Introduce addresses for current line and last line
...
Remove mutation from LineAddress
2024-06-03 11:54:48 +03:00
Matt Ellis
8c83164d76
Remove mutable state from Range
...
Sometimes we cache things, and other times it's relative to a passed caret. Let's always calculate it
2024-06-03 11:54:48 +03:00
Matt Ellis
076aab1ccf
Rename Ranges, and ExRanges.kt
2024-06-03 11:54:48 +03:00
Matt Ellis
751f51c88f
Rename Range and related classes to Address
...
An address evaluates to a line, and a range is a collection of addresses
2024-06-03 11:54:48 +03:00
Filipp Vakhitov
7abb1fd630
Finalizing merge
2024-05-28 23:35:31 +03:00
Filipp Vakhitov
9e3ca56afd
Merge branch 'refs/heads/master' into fleet
...
# Conflicts:
# src/main/java/com/maddyhome/idea/vim/ui/ex/ExEntryPanel.java
# vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt
# vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryFwdAction.kt
# vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryRevAction.kt
# vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandConsumer.kt
2024-05-28 22:19:17 +03:00
Filipp Vakhitov
5379528e3e
Minor post-review PR improvements
2024-05-28 21:52:43 +03:00
Matt Ellis
7865388086
Fix regression when sub string ends with backslash
...
Fixes VIM-3428
2024-05-28 13:53:13 +03:00
Matt Ellis
4e2db68acf
Update selection when searching in Visual mode
2024-05-28 13:53:13 +03:00
Matt Ellis
ddabf8df5e
Fix regression finding endpos in new regex engine
...
Fixes VIM-3344
2024-05-28 13:53:13 +03:00
Matt Ellis
3f28e197ca
Clear status bar on scrolling, add/remove lines, etc.
...
Also implements <C-L> to "redraw" screen and clear status line
2024-05-28 13:53:13 +03:00
Matt Ellis
3a67524e8a
Show status bar message when search wraps
...
Fixes VIM-1043
2024-05-28 13:53:13 +03:00
Matt Ellis
33312d95b0
Remove wrapscan flag for substitute
...
Substitute always works on a known range
2024-05-28 13:53:13 +03:00
Matt Ellis
f554b21cd9
Support count for search
...
Fixes VIM-2836
2024-05-28 13:53:13 +03:00
Matt Ellis
e98a284d40
Fix multiline regex substitution
...
Fixes VIM-2141
2024-05-28 13:53:13 +03:00
Matt Ellis
d3f560a31c
Add special case to match newline with end of file
2024-05-28 13:53:13 +03:00
Matt Ellis
633667ed7f
Fix regression with global not saving used patterns
...
This is a messy quick fix, as the search group needs a lot of tidying up right now. Perhaps a better implementation would be to move the implementation of the global command into the search group - processGlobalCommand, like we already have processSearchCommand and processSubstituteCommand
Fixes VIM-3348
2024-05-28 13:53:13 +03:00
Matt Ellis
656e975562
Fix reset of last substitution string on use
...
Fixes VIM-3354
2024-05-28 13:53:13 +03:00
Matt Ellis
f7fbe89de4
Use EnumSet instead of list of enums
2024-05-28 13:53:13 +03:00
Matt Ellis
509829b052
Fix force ignorecase atom in search highlights
...
Fixes VIM-3391
2024-05-28 13:53:13 +03:00
Matt Ellis
cf2b021d02
Fix search for last search pattern with new offset
...
Fixes VIM-2356
2024-05-28 13:53:13 +03:00
Matt Ellis
67f10aece5
Fix search motion type when providing offset
...
Search motion type should be linewise if there's a line offset, or inclusive if the `e` flag is provided. Otherwise, it's exclusive.
Fixes VIM-1940
2024-05-28 13:53:13 +03:00
Matt Ellis
bfe0f51cb1
Restore current match highlighting for :s command
...
Regression while migrating to the new regex engine removed the highlights shown when confirming each change
2024-05-28 13:53:13 +03:00
Matt Ellis
ffce61906a
Restore search highlights when setting 'hlsearch'
...
Fixes VIM-3257
2024-05-28 13:53:13 +03:00
Filipp Vakhitov
a81d54eb90
Remove VimCommandLineHelper
2024-05-24 17:18:24 +03:00
Filipp Vakhitov
23519bbdae
Refactoring to use interfaces from vim-engine
2024-05-24 16:51:38 +03:00
Filipp Vakhitov
8e2fd44f55
Remove unnecessary methods from ProcessGroup
2024-05-24 14:25:51 +03:00
Filipp Vakhitov
1c84917b29
Move LeaveCommandLineAction to its own class
2024-05-24 12:58:04 +03:00
Filipp Vakhitov
c5522ed19d
Move ExEntryAction to vim-engine
2024-05-24 12:56:52 +03:00
Alex Plate
16cd05fc76
Fix incorrect use of visual position instead of buffer position
...
We should calculate the line above based on logical position rather than visual position.
This issue was detected thanks to newly introduced soft wraps and proprty tests
2024-05-24 11:39:45 +03:00
Filipp Vakhitov
91e54c8b0d
Replace c_CTRL-R swing TextAction implementation with proper Vim engine implementation
2024-05-23 17:31:18 +03:00
Filipp Vakhitov
15ccebfe11
Cleanup
2024-05-23 15:27:18 +03:00
Filipp Vakhitov
9e99506223
Move some logic to engine
2024-05-23 01:32:48 +03:00
Filipp Vakhitov
53ea90379f
Moved some search related logic to commands to simplify KeyHandler and ProcessGroup
2024-05-23 00:15:46 +03:00
Filipp Vakhitov
2619d7ebb4
Moved some classes to the same file in vim-engine
...
They will share some logic in future commits
2024-05-22 22:14:54 +03:00
Filipp Vakhitov
8c8a7aceca
Moved some classes to the same file in vim-engine
...
They will share some logic in future commits
2024-05-22 22:12:34 +03:00
Filipp Vakhitov
726b885b60
More obvious processing of ex-commands.
...
1. Now we have two parallel commandBuilders: for the editor and for the command prompt. It's done for sequence of keys like `d/foo<C-R>"<CR>` where we have two different commands that are built at the same time.
2. We simplified the CommandConsumer and made the logic more straightforward. `/`, `?` and `:` enter the command mode, while pressing final `<CR>` fires the command execution.
2024-05-22 22:04:32 +03:00
Filipp Vakhitov
a6994a09c3
Add support for commands that can be executed either once or for each caret depending on some circumstances
...
In a future commit, I'm going to make ProcessExEntryAction responsible for processing both search and ex commands. Search commands are motions that are executed for each caret, while ex-commands are executed once. The per-caret code is held internally by the ex commands themselves.
The current solution is definitely not the right one, and the whole ex command subsystem needs to be reviewed and refactored:
1. Some commands can be motions, which is currently not supported.
2. We need to figure out a gentle way of handling multiple carets.
2024-05-22 15:44:12 +03:00
Matt Ellis
755000c376
Reset Vim options when IDE setting changes
...
Options are not reset if they've been explicitly set by the user (e.g. `:set list` or _View | Active Editor | Show Whitespaces_). They are reset if they were explicitly set in `~/.ideavimrc`.
Also bumps the IDE build number to 233.11799.241 in order to use EditorSettingsExternalizable.PropNames
2024-05-10 15:27:24 +03:00
Matt Ellis
c9ee685956
Codify assumption re global-local external setting
2024-05-10 15:27:24 +03:00
Matt Ellis
c2b1083836
Updated descriptions as per review comments
2024-05-10 15:27:24 +03:00
Matt Ellis
3518528f22
Prevent resetting options when plugin re-enabled
2024-05-10 15:27:24 +03:00
Matt Ellis
9bed8fec79
Map 'scrolloff' and 'sidescrolloff' options
...
Fixes VIM-3110
2024-05-10 15:27:24 +03:00
Matt Ellis
3ffbea7d42
Match Vim's behaviour for :set[local] {option}<
...
String and number/toggle options have different and opposite behaviour for `:set {option}<` and `:setlocal {option}<`. This change matches Vim's behaviour.
2024-05-10 15:27:24 +03:00
Matt Ellis
39b42193cb
Map 'scrolljump' and 'sidescroll' options
...
Fixes VIM-3110
2024-05-10 15:27:24 +03:00
Matt Ellis
50b42036d1
Add 'bomb' option
...
No tests, as I don't know how to test interaction with saving to disk
2024-05-10 15:27:24 +03:00
Matt Ellis
340c40ceff
Add 'fileformat' option
...
No tests, as I don't know how to test interaction with saving to disk
2024-05-10 15:27:24 +03:00
Matt Ellis
07f1d1e8e6
Move number/relativenumber options out of engine
...
While they are core Vim options, they are implemented by the host, not by the engine. If another host wants to support these options, they can add them in their implementation layer.
2024-05-10 15:27:24 +03:00
Matt Ellis
6c61254c50
Add 'colorcolumn' option to show visual guides
...
IntelliJ ties the hard wrap right margin guide with the other visual guides, and it's not possible to show one without the other. In Vim, you can show the hard wrap margin by adding "+0" to 'colorcolumn', so in IdeaVim, we automatically add this.
2024-05-10 15:27:24 +03:00
Matt Ellis
c6efea8c34
Add 'textwidth' option
...
Also supports overriding local-to-buffer options with IDE values, ensuring that changes to the option/IDE value are applied to all editors for the buffer.
Fixes VIM-1310
2024-05-10 15:27:24 +03:00
Matt Ellis
80f43a7c66
Add 'cursorline' option
2024-05-10 15:27:24 +03:00
Matt Ellis
73a1118e78
Extract base implementation for IDE backed options
2024-05-10 15:27:24 +03:00
Matt Ellis
d3bedf26cf
Treat IDE value as default for 'wrap' option
2024-05-10 15:27:24 +03:00
Matt Ellis
25b29f429a
Track how option value is set
2024-05-10 15:27:24 +03:00
Matt Ellis
363f821962
Introduce 'wrap' option based on IntelliJ setting
...
Fixes VIM-1265
2024-05-10 15:27:24 +03:00
Alex Plate
8d873c0bf1
Fix(VIM-3418): Restore mappings after plugin disable/enable
...
There is no need to clean up the requiredShortcuts after turning off the plugin. Also, previously this set was not populated properly and keys that were added by ideavimrc or by user were not restored
2024-05-09 08:57:12 +03:00
Alex Plate
955676ed9e
Add comments about structures for testing
...
Also, there is no need to clear these structures during plugin disabling
2024-05-09 08:30:47 +03:00
Alex Plate
a2439a37e4
Make RequiredShortcut as a data class
...
This will simplify reading the data during the debug
2024-05-09 08:21:26 +03:00
Alex Plate
b66da76880
VIM-3376: Remove usages of the EditorDataContext
...
EditorDataContext cannot be used because the platform cannot convert it to the async data context. Taking the fact that it's not clear why this custom context exists, I decided to get rid of it at all.
```
Cannot convert to AsyncDataContext at 'keyboard shortcut' DataContextWrapper(CaretSpecificDataContext(com.maddyhome.idea.vim.helper.EditorDataContext)). Please use CustomizedDataContext or its inheritors like SimpleDataContext
```
Class EditorDataContext cannot be removed because it's used in github.zgqq.intellij-enhance plugin
2024-04-26 14:52:47 +03:00
Alex Plate
0b8c081425
VIM-3376: Working on removing EditorDataContext. Remove it from multiple places
...
EditorDataContext cannot be used because the platform cannot convert it to the async data context. Taking the fact that it's not clear why this custom context exists, I decided to get rid of it at all.
```
Cannot convert to AsyncDataContext at 'keyboard shortcut' DataContextWrapper(CaretSpecificDataContext(com.maddyhome.idea.vim.helper.EditorDataContext)). Please use CustomizedDataContext or its inheritors like SimpleDataContext
```
2024-04-26 14:16:52 +03:00
Alex Plate
209052ffa6
Create a function to get the execution context from the editor
...
This is a part of VIM-3376. This context will not be a custom EditorDataContext, but some context created by the platform.
In some places we don't have any kind of "current context", but we have to use it for the function. However, such context can be simply retrieved from the editor.
2024-04-26 14:03:37 +03:00
Alex Plate
fe9a6b5cfb
Remove context argument when creating a pad for the string
...
It's unclear why it was needed to get the project from the context, but it's easy to get the project from the existing editor
2024-04-26 13:56:10 +03:00
Alex Plate
cd27e5229b
VIM-3376: Working on removing EditorDataContext. Remove from CommandLineHelper
...
EditorDataContext cannot be used because the platform cannot convert it to the async data context. Taking the fact that it's not clear why this custom context exists, I decided to get rid of it at all.
```
Cannot convert to AsyncDataContext at 'keyboard shortcut' DataContextWrapper(CaretSpecificDataContext(com.maddyhome.idea.vim.helper.EditorDataContext)). Please use CustomizedDataContext or its inheritors like SimpleDataContext
```
2024-04-26 13:40:18 +03:00
Alex Plate
472732905c
VIM-3376: Get rid of IjCaretAndEditorExecutionContext
...
This context was added long ago, but I wasn't able to find specific reasons for that. Currently, such custom contexts cannot work with the intellij platform and should be refactored or removed. The issues with this context are that it cannot be converted to the async data context by the platform.
Taking the fact that the reason for this context was not found, I decided to get rid of it.
The issue from the platform looks like this
```
Cannot convert to AsyncDataContext at 'keyboard shortcut' DataContextWrapper(CaretSpecificDataContext(com.maddyhome.idea.vim.helper.EditorDataContext)). Please use CustomizedDataContext or its inheritors like SimpleDataContext
```
Here the EditorDataContext is mentioned instead of CaretAndEditorData context, however, I'll clean up both contexts during this refactoring
It was used in the action system for mapping to the `<Action>` keyword and in commit 256f5fcd0e
it's mentioned that the EditorActionHandler was not working without this context. However, currently both cases work fine without addition wrapping.
2024-04-26 13:27:56 +03:00
dependabot[bot]
78d351a0b0
Bump org.mockito.kotlin:mockito-kotlin from 5.2.1 to 5.3.1
...
Bumps [org.mockito.kotlin:mockito-kotlin](https://github.com/mockito/mockito-kotlin ) from 5.2.1 to 5.3.1.
- [Release notes](https://github.com/mockito/mockito-kotlin/releases )
- [Commits](https://github.com/mockito/mockito-kotlin/compare/5.2.1...5.3.1 )
---
updated-dependencies:
- dependency-name: org.mockito.kotlin:mockito-kotlin
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-04-10 18:33:14 +03:00
Alex Plate
2fe2860a09
Remove Offset and Pointer and switch to the regular Ints
...
Details on that can be found here: VIM-3368
2024-03-29 15:38:05 +02:00
filipp
cb40426976
Fix(FL-25338): Vim plugin stopped working in 1.31.107
2024-03-29 14:52:52 +02:00
Filipp Vakhitov
423ed390a2
Fix(FL-25087): p in vim mode
...
Pasting was broken with immutable carets because the old caret was not updated during execution
2024-03-29 14:52:52 +02:00
Filipp Vakhitov
7652b16ca6
Move more MotionGroup methods to its base class
2024-03-29 14:52:52 +02:00
Filipp Vakhitov
618a010c15
Move some MotionGroup methods to its base class
2024-03-29 14:52:52 +02:00
Filipp Vakhitov
d44a34ed9b
Remove unnecessary abstract method
2024-03-29 14:52:52 +02:00
Filipp Vakhitov
c84fc996db
Move some methods to vim-engine
...
The more methods we have in the engine, the fewer number of methods we will need to implement in the Fleet
2024-03-29 14:52:52 +02:00
Filipp Vakhitov
43f232543b
Replace findBlockRange with newer implementation
...
The newer implementation is a part of the vim-engine library and uses new methods from the SearchGroup.kt, but it is not fully refactored yet
2024-03-29 14:52:52 +02:00
filipp
3f65d1d99a
Revert "Revert changes to SearchGroup"
...
This reverts commit 00ccddf8cf
.
2024-03-29 14:52:52 +02:00
Alex Plate
ab75ace8db
Fix(VIM-3331): Support custom registers in replaceWithRegister plugin
2024-03-25 09:40:45 +02:00
Alex Plate
65d755d9b2
Bring back the getMappingMode
function for binary compatibility with the which-key plugin
2024-03-12 09:31:59 +02:00
Alex Plate
1f1a8f3395
Avoid generation of the huge amount of sets during regex search
...
The tests shows that the depth of `epsilonVisited` is usually around 0-3, so there is no need to use the set. However, when the set is used, we have to make a new copy everytime we create a new `SimulationStackFrame`.
Now, the previous stack is reused.
2024-03-11 18:51:46 +02:00
Alex Plate
629e4e7053
Fix(VIM-3336): Improve the performance of n
in large files
...
The git history shows that the force update of the search highlights was accidentally enabled during the refactorings
2024-03-11 18:49:38 +02:00
Alex Plate
c50a299cfd
Remove the unused import
2024-03-11 18:48:27 +02:00
Alex Plate
4bad129caf
Do not register clipboard option change listener for caret registers
...
Register groups for the caret do not use some fields from the base class, however the listener for these fiels is still registered. Now we don't register this listener.
Generally it looks like a bigger refactoring can be performed in order to separate the common registers logic from caret registers logic.
This change should improve the performance of the IjVimCaret initialization because now we won't register a new disposable on each instance of IjVimCaret
This is a part of VIM-3336
2024-03-11 17:41:54 +02:00
filipp
00ccddf8cf
Revert changes to SearchGroup
...
Wrong branch. The changes should be merged to master only after review in the Fleet branch
2024-03-03 22:16:19 +02:00
filipp
00cbf188fb
Replace findUnmatchedBlock method with a new implementation
2024-03-03 22:05:28 +02:00
filipp
0914cda7e5
Better matching for a sequence of single-line comments
2024-03-03 22:05:28 +02:00
filipp
5959e9aaa1
Fix(VIM-1399): Uncommented brackets are matched to commented ones in VIM mode
2024-03-03 22:05:28 +02:00
filipp
06e1af371e
Add SearchGroup.kt
...
In the future, it should become a container for all the search methods that we have in IdeaVim
At the moment we have a bunch of SearchGroups and SearchHelpers, and it may be confusing.
We also want to avoid using unnecessary OOP.
2024-03-03 22:05:28 +02:00
filipp
d744987ac8
Add VimPsiService
...
We want to avoid unnecessary OOP and use interfaces only for cases where we will have different implementations for different IDEs
This service will help us in our future refactorings of SearchGroup and SearchHelper
2024-03-03 22:03:58 +02:00
filipp
b4eef17aaa
Add StringUtil.kt class
...
Methods in this file will be helpful in future search refactorings
2024-03-03 22:03:58 +02:00
filipp
5c50e8607c
Fix search
2024-03-01 08:50:18 +02:00
Filipp Vakhitov
9a324ab448
Reset KeyHandlerState when switching Editors
...
Now we have a single state for all the editors, so we should not mix their states
2024-02-29 20:27:46 +02:00
dependabot[bot]
c3978335f5
Bump org.mockito.kotlin:mockito-kotlin from 5.0.0 to 5.2.1
...
Bumps [org.mockito.kotlin:mockito-kotlin](https://github.com/mockito/mockito-kotlin ) from 5.0.0 to 5.2.1.
- [Release notes](https://github.com/mockito/mockito-kotlin/releases )
- [Commits](https://github.com/mockito/mockito-kotlin/compare/5.0.0...5.2.1 )
---
updated-dependencies:
- dependency-name: org.mockito.kotlin:mockito-kotlin
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-02-28 16:01:23 +00:00
filipp
3c94091d30
Merge branch 'refs/heads/master' into fleet
2024-02-23 17:24:08 +02:00
Parker7123
db722fc4e5
VIM-1472 Add support for sorting with pattern
2024-02-23 17:15:21 +02:00
filipp
7d679e68dc
Merge branch 'refs/heads/master' into fleet
...
# Conflicts:
# vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimEditorGroup.kt
# vim-engine/src/main/kotlin/com/maddyhome/idea/vim/impl/state/VimStateMachineImpl.kt
2024-02-23 17:08:01 +02:00
Matt Ellis
bc808403fb
Rename localEditors to getEditors
...
The fact that these methods only return local editors (i.e., editors for the local user while hosting a Code With Me session) is an implementation detail
2024-02-23 17:01:32 +02:00
Matt Ellis
9d6dc317a4
Only notify editors for the current buffer
2024-02-23 17:01:32 +02:00
Matt Ellis
cf29c50f31
Ensure editors are initialised before use
...
Fixes VIM-3256
2024-02-23 17:01:32 +02:00
Matt Ellis
2ce3fbd677
Use common APIs to get local editors
2024-02-23 15:54:20 +02:00
Alex Plate
247aaed188
Use the property to change the state of the octopus handler
2024-02-23 15:32:35 +02:00
Filipp Vakhitov
1a4333fa1b
Move implementations to upper level
...
It will simplify support of immutable editors in Fleet
2024-02-23 15:09:45 +02:00
Filipp Vakhitov
8eaa6df318
Throw error instead of warning on state conflict
...
It may indicate some serious issues, and we would like to know if anything goes wrong
2024-02-23 15:09:45 +02:00
filipp
4aac113522
Remove duplicate method
2024-02-23 15:09:45 +02:00
filipp
795abd77a7
Add documentation
2024-02-23 15:09:45 +02:00
Filipp Vakhitov
38bc914504
Avoid using annotation-processors in vim-engine
2024-02-23 15:09:45 +02:00
Filipp Vakhitov
c8113eea83
Commit state after receiving unknown key
2024-02-23 15:09:45 +02:00
Filipp Vakhitov
924b7418e8
Fix DigraphSequence cloning
2024-02-23 15:09:45 +02:00
Filipp Vakhitov
a7dfef61e9
Make LazyVimCommand open
2024-02-23 15:09:45 +02:00
Filipp Vakhitov
db35c979b4
Move some editor methods to the base class
2024-02-23 15:09:45 +02:00
Filipp Vakhitov
2de933c723
Make processKey public
2024-02-23 15:09:45 +02:00
filipp
d3704d602f
Cleanup after moving logic to other classes
2024-02-23 15:09:45 +02:00
filipp
ea62f227bf
Remove piece of code for handling bad commands
...
Bad commands are handled in consumers
2024-02-23 15:09:45 +02:00
filipp
e9bf06686f
Add synchronize blocks to minimize risk of concurrent key processing and changing of the KeyHandlerState
2024-02-23 15:09:45 +02:00
filipp
7842b155c1
Move some logic to ModeInputConsumer
2024-02-23 15:09:45 +02:00
filipp
74a8277e10
Move some logic to SelectRegisterConsumer
2024-02-23 15:09:45 +02:00
filipp
ddb1b80463
Move some logic to CommandConsumer
2024-02-23 15:09:45 +02:00
filipp
eea3336934
Move some logic to CommandConsumer
2024-02-23 15:09:45 +02:00
filipp
f801145712
Update MappingInfo to match newer signature
2024-02-23 15:09:45 +02:00
filipp
e033b08535
Move some logic to DigraphConsumer
2024-02-23 15:09:45 +02:00
filipp
1d9514a205
Move some logic to RegisterConsumer
2024-02-23 15:09:45 +02:00
filipp
6741120f19
Move some logic to CharArgumentConsumer
2024-02-23 15:09:45 +02:00
filipp
c501457322
Move some logic to EditorResetConsumer
2024-02-23 15:09:45 +02:00
filipp
46425a24c3
Move some logic to DeleteCommandConsumer
2024-02-23 15:09:45 +02:00
filipp
9826f0a7f0
Move some logic to CommandCountConsumer
2024-02-23 15:09:45 +02:00
filipp
43175061e0
Fix broken digraphSequence
...
It shouldn't be retested on partial reset
2024-02-23 15:09:45 +02:00
filipp
0ab32cac34
Make MappingProcessor a KeyConsumer
2024-02-23 15:09:45 +02:00
filipp
e3ec9c614b
Add KeyConsumer
...
It will help us to have a more modular KeyHandler in future (chain of different consumers)
2024-02-23 15:09:45 +02:00
filipp
f454d60234
Add MutableBoolean to be able to pass and modify shouldRecord in methods
2024-02-23 15:09:45 +02:00
filipp
19fa00837c
Use KeyProcessResultBuilder
...
It will help us to build the KeyProcessResult that we need for asynchronous key processing
2024-02-23 15:09:45 +02:00
filipp
275c5d28e1
Add KeyProcessResultBuilder
2024-02-23 15:09:45 +02:00
filipp
15ae069f6f
Make keyHandlerState argument not null
...
Applying default values may lead to unexpected results, especially if we sometimes want to use the global state (IJ), and at other times, its clone for asynchronous processing (Fleet).
2024-02-23 15:09:45 +02:00
Filipp Vakhitov
00f5541dc6
Add KeyProcessResult interface
2024-02-23 15:09:45 +02:00
Filipp Vakhitov
02540eb303
Pass KeyHandlerState as a method argument
2024-02-23 15:09:45 +02:00
Filipp Vakhitov
282e581bdb
Make state cloneable
2024-02-23 15:09:45 +02:00
Filipp Vakhitov
31e7c49608
Add equals & hashCode
2024-02-23 15:09:45 +02:00
filipp
7966a6dc91
Create KeyHandlerState
...
We do not need multiple commandBuilder, digraphSequence or mappingState and this class will be a singleton containing them
2024-02-23 15:09:45 +02:00
filipp
5fc2f04224
Remove mappingMode from MappingState
...
It unnecessarily binds mappingState to mode and thus to editor. And we want to simplify things and have a single MappingState instead of multiple of them
2024-02-23 15:09:45 +02:00
filipp
6edfd8ed22
Remove deprecated showmode status bar text update that does not work with the new UI and will be replaced with widget
2024-02-23 15:09:45 +02:00