1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2024-10-17 07:42:46 +02:00
Commit Graph

1603 Commits

Author SHA1 Message Date
Filipp Vakhitov
706ae3dd91 Move GlobalCommand to vim-engine 2024-06-28 13:55:06 +03:00
Filipp Vakhitov
9b15ed8181 Add VimRangeMarker 2024-06-28 13:55:06 +03:00
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
jake.peters
31b2cd872f Use when expression instead of convoluted nested if else 2024-06-28 12:39:58 +03:00
jake.peters
2b6945cbb2 Add ability to iterate over all states for unassigned handlers
This is still a WIP
2024-06-28 12:39:58 +03:00
jake.peters
ae5f43918f Use BGT instead of EDT 2024-06-28 12:39:58 +03:00
jake.peters
6b6bc2752e Rename method to be more reflective of its toggle functionality. 2024-06-28 12:39:58 +03:00
jake.peters
4556adae3c Add ability to change all handlers to use either Vim or IDE shortcuts. 2024-06-28 12:39:58 +03:00
filipp
948520f90a Fix(VIM-3485): Stay in the same split when using (Back) or (Forward) 2024-06-21 17:44:44 +03:00
Matt Ellis
0765118ce2 Stop mapping negative 'scrolljump' to IntelliJ setting 2024-06-21 17:22:36 +03:00
Matt Ellis
efd4c7b617 Fix incorrect scrolling due to 'scrolloff' mapping
If IntelliJ's vertical scroll offset is set to the value of the 'scrolloff' option, IntelliJ's own implementation kicks in. This implementation includes virtual space at the bottom of the file in its calculation, scrolling to a different offset to IdeaVim's. In some circumstances, IdeaVim no longer scrolls, so the last line would no longer stick to the bottom of the screen after `G`. In other circumstances, the scroll would correctly reset, but there would be a visible flash as the editor scrolls to the wrong offset and then back, especially when using backspace at the bottom of the file.

Fixes VIM-3474
2024-06-21 17:22:36 +03:00
Alex Pláte
eae111bc2c
Merge branch 'master' into create-files-and-directories 2024-06-21 16:52:46 +03:00
kun-codes
6a6c1dc6b4 add NERDTree action to delete files and directories 2024-06-21 16:52:01 +03:00
Alex Pláte
28aa156cb7
Merge branch 'master' into feature/gradle-intellij-plugin-v2 2024-06-21 16:30:25 +03:00
Matt Ellis
a7814e69de Fix incorrect double registration when opening editors
Ensures that the editor listeners are only registered once when the editor is created. IdeaVim uses two different events to track editor creation, to try to understand how the editor is being created (new window, split, preview, etc.) and this can lead to calling the `EditorListeners.add` method twice. This would create a second `Disposable` and cause handlers to leak. This is most visible when creating the first window and then disabling IdeaVim. This window would still handle drag events like IdeaVim, even changing the caret back to block after the drag finishes.
2024-06-21 13:13:15 +03:00
kun-codes
931d4be972 add NERDTree action to create new files and directories 2024-06-20 17:51:15 +05:30
Matt Ellis
5eb0fae08f
Remove explicit since-build from plugin.xml
Let the Gradle plugin manage since-build, based on our target compile version. We leave until-build open ended
2024-06-17 11:18:50 +01:00
Matt Ellis
c673f5818c
Make jumplist project ID key unique
Fixes an issue if multiple projects with the same name are open at the same time
2024-06-14 14:35:48 +01:00
Matt Ellis
ec78a87644
Fix recent places adding to jump list
Fixes VIM-3424
2024-06-14 14:29:12 +01: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
c44ed58142 Make text deletion in change actions a part of insert sequence 2024-06-09 00:33:07 +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
2c0ff587e3 Post-review improvements 2024-06-05 11:35:58 +03:00
Filipp Vakhitov
26c87535d6 Fix focus 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
b2af8f153e Add VimScriptFunctionServiceBase 2024-06-05 11:35:58 +03:00
Filipp Vakhitov
37fb41fca8 Remove exCommandAnnotation option 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
354fd8fef0 Remove EditorHolderService.kt 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
601747f720 Changes to replace ExEntryPanel with interface and move more code to engine 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
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
b44f40acd6 Fix incorrect output for line() in Normal mode 2024-06-03 11:54:48 +03:00
Matt Ellis
b15b1cd3f8 Fix range with missing last address
Fixes VIM-992
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
4798198e41 Minor refactorings 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
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
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
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
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
Filipp Vakhitov
12201359bc Fix unwanted triggering of IDE actions instead of Vim ones
https://github.com/JetBrains/ideavim/pull/893#pullrequestreview-2082768468
2024-05-28 21:39:14 +03:00
Alex Plate
4481631547
Disable RedrawListener if the plugin is not enabled 2024-05-28 13:55:47 +03:00
Matt Ellis
26297bc5a9 Fix last line sometimes obscured by scrollbar
Fixes VIM-3028
2024-05-28 13:53:13 +03:00
Matt Ellis
9db5cdd8e3 Fix last line sometimes obscured by ex entry prompt
When performing a substitute command with confirmation, the height of the editor content pane should be reduced by the height of the ex entry panel. IdeaVim would do this correctly when moving a search result to the bottom of the file, but not when the result was on the last line of the file. Because the wrong height was used, IdeaVim would decide that no scrolling was necessary and the result in the last line would be obscured.

Fixes VIM-1560
2024-05-28 13:53:13 +03:00
Matt Ellis
2b17534a08 Fix infinite loop while highlighting in old regex
Fixes VIM-2510
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
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
f554b21cd9 Support count for search
Fixes VIM-2836
2024-05-28 13:53:13 +03:00
Matt Ellis
d9fa4e4648 Fix end of file atom for old regex engine
Fixes VIM-2888
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
38ef8c1053 Fix removing search highlight that crosses newline 2024-05-28 13:53:13 +03:00
Matt Ellis
e2cb3ff284 Stop subst skipping too far with multiline pattern
Fixes VIM-698
2024-05-28 13:53:13 +03:00
Matt Ellis
0f5a3953e1 Don't break ex field with exceptions from incsearch 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
f7fbe89de4 Use EnumSet instead of list of enums 2024-05-28 13:53:13 +03:00
Matt Ellis
efd61e17f2 Reset CMD_LINE mode when losing focus
Fixes VIM-3293
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
9b5c777fcf Update highlights when editor scheme changes 2024-05-28 13:53:13 +03:00
Matt Ellis
c65e5f8341 Fix highlighting for 'incsearch' and 'nohlsearch'
Setting 'incsearch' and 'nohlsearch' should highlight only the current match in the current editor
2024-05-28 13:53:13 +03:00
Matt Ellis
053bb603cd Fix errors with incsearch and substitute command
Fixes VIM-3325
2024-05-28 13:53:13 +03:00
Matt Ellis
93b07bbb90 Update comments and fix warnings 2024-05-28 13:53:13 +03:00
Matt Ellis
764a115601 Show search highlights in all visible editors
Fixes VIM-2174
2024-05-28 13:53:13 +03:00
Matt Ellis
1adfe53f29 Fix wrong offset returned for current search result
Fixes VIM-2779
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
Filipp Vakhitov
3843a193cb Deprecate classes related to Swing TextActions 2024-05-26 23:56:27 +03:00
Matt Ellis
f382544101 Fix clearing highlighted yank in modal dialogs
Also fixes a memory leak registering a disposable for each yank, allows config variables to be numbers rather than strings and removes highlights when IdeaVim is disabled

Fixes VIM-2236
2024-05-24 18:05:51 +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
Egor Nikolaevsky
746d483179 Fix indent size calculation 2024-05-24 16:19:50 +03:00
Alex Plate
1a7e90c7d7
Bump the minimal version of IJ to 241
There are a lot of incompatibilities with IdeaVim on 241 if it's built on 233

Also, this time the special branch for the IJ version won't be created. Previously on bumping the version of IJ, we've created the branch to keep the reference to the moment when it happened. However, IJ version bumps are easy to trace anyway by git.
2024-05-24 15:37:05 +03:00
Filipp Vakhitov
8e2fd44f55 Remove unnecessary methods from ProcessGroup 2024-05-24 14:25:51 +03:00
Filipp Vakhitov
c5522ed19d Move ExEntryAction to vim-engine 2024-05-24 12:56:52 +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
5c849c9105 Fix ExEntryAction 2024-05-23 02:24:34 +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
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
Matt Ellis
c46008dddc Update Vim option even when IdeaVim is disabled 2024-05-10 15:27:24 +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
1e4a60bfe6 Fix nullability warning 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
9bed8fec79 Map 'scrolloff' and 'sidescrolloff' options
Fixes VIM-3110
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
c69e080b05 Add 'fileencoding' 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
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
6aeffe71de Map 'number' and 'relativenumber' options 2024-05-10 15:27:24 +03:00
Matt Ellis
04c33d719e Improve relative line converter for soft wraps
It now shows visual lines relative to the caret's visual line, rather than relative to the caret's logical line. This still isn't correct, and we should be showing the relative count of Vim logical lines (buffer lines + fold lines) but this matches movement so is more helpful
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
9f5d3a9a28 Add 'list' option to show whitespace
Fixes VIM-267
2024-05-10 15:27:24 +03:00
Matt Ellis
8800a4f70b Add 'breakindent' option
Fixes VIM-2748
2024-05-10 15:27:24 +03:00
Matt Ellis
990254dcac Sort ideavim.dic to make it easier to modify 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
4c3ad3f263 Add NERDTree action to toggle excluded files 2024-05-08 10:02:10 +03:00
Alex Plate
9d0b68b0f8
Use the correct context after executing the ex command
With the incorrect context the action EditorSelectWord didn't make any effect because it worked on the ex-entry panel editor
2024-04-26 18:22:53 +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
54d6119784
VIM-3376: Working on removing EditorDataContext. Remove it from ReplaceWithRegister
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:19: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
9c0f74369f
VIM-3376: Working on removing EditorDataContext. Remove from ExEditorKit
This one was added after the implementation of cmap in 5c9faba7f4

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:49:59 +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
Alex Plate
8cf136ce4c
Add toString representations for IjNativeAction and ActionEnableStatus 2024-04-26 10:22:50 +03:00
Alex Plate
c4d92ebe73
VIM-308 In intellij 2024.1+ the caret movement won't be detected as a separate undo action 2024-04-05 17:50:42 +03:00
Alex Plate
dc2ce64823
Revert changes in action processing to fix VIM-3351 2024-04-02 11:52:56 +03:00
Alex Plate
d0d86d9178
Print the exceptin in logger.warn instead of just a message 2024-03-29 16:53:22 +02:00
Alex Plate
f417af6148
Specify ActionUpdateThread for FindActionIdAction 2024-03-29 15:38:05 +02: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 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
8c1103c461
Add comment about the fix for project leak in tests 2024-03-28 10:30:19 +02:00
Alex Plate
58a8b96c3c
Revert "Stop IdeaVim actions flowing into JB Client"
This reverts commit bd192561ae.

This commit reverts the fix for VIM-3283 because it causes VIM-3346 and VIM-3347
2024-03-20 13:08:04 +02:00
Alex Plate
79437df894
Fix(VIM-3330): Use Z backward visual search in sneak plugin 2024-03-12 20:01:35 +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
434df565ae Migrate % command to work with newer method in SearchGroup.kt 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 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
Alex Plate
90f2d2ff29
Small update of the minimal version of IJ 2024-02-27 14:43:23 +02:00
Alex Plate
4c2edab406
Run optimize imports 2024-02-27 13:17:02 +02:00
Filipp Vakhitov
a94a8b8539 Fix tests 2024-02-24 01:03:18 +02:00
Filipp Vakhitov
261230b23a Remove experimental showmodewidget option 2024-02-24 00:36:36 +02:00
Filipp Vakhitov
b90317e00e More visible text color for mode widget
Visibility may be unexpected for custom themes with non-obvious colors
2024-02-24 00:27:48 +02:00
Filipp Vakhitov
21c9dc8785 Add statistic collector for mode widget 2024-02-24 00:15:01 +02:00
Alex Plate
31bbc60325
Fix all reports of the inspection that prohibits the use of companion objects
This is a requirement from the platform, as a huge amount of companion objects leads to a higher level of classloading
2024-02-23 18:55:01 +02:00
Alex Plate
fec6e5c189
Remove the last argument in EventLogGroup as the compatibility was fixed on the platform side 2024-02-23 18:35:21 +02:00
Alex Plate
23c1493f17
Fix(VIM-3306): Vim paragraph motion won't make mappings if there is already such mapping defined by user 2024-02-23 18:26:50 +02:00
filipp
3c94091d30 Merge branch 'refs/heads/master' into fleet 2024-02-23 17:24:08 +02:00
filipp
b737362aba Update CaretVisualAttributesListener to use new Editor API 2024-02-23 17:21:18 +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
cf29c50f31 Ensure editors are initialised before use
Fixes VIM-3256
2024-02-23 17:01:32 +02:00
Matt Ellis
bd192561ae Stop IdeaVim actions flowing into JB Client
IdeaVim actions are local only - they control local behaviour and should not be visible in the Client

Fixes VIM-3283
2024-02-23 15:54:20 +02:00
Matt Ellis
66ff56a05e Move document listeners to global listeners
This means we listen to changes in all documents, rather than just the changes in the documents for open local editors. And this means that we correctly update e.g. marks when a non-local editor changes a file that isn't open in a local editor.
2024-02-23 15:54:20 +02:00
Matt Ellis
def86d179e Review disabled editor checks 2024-02-23 15:54:20 +02:00
Matt Ellis
3c9a343f8b Review listeners to only work with local editors
Reviews all IntelliJ listeners to ensure that they only work with supported local editors. Editor creation was initialising IdeaVim for all editors, which meant that behaviour could leak into Code With Me guest editors. E.g. guest editors incorrectly drawing relative line numbers, or the host using the guest's last selected tab when switching to an alternate file.

This leads to a change in behaviour with some local editors. The editor creation listener will now check to see if the editor is local *and supported*. This means it can exclude single line editors, editors in database cells or dialogs, depending on the state of 'ideavimsupport' at creation time. The behaviour at creation time is now more correct, but if 'ideavimsupport' is modified, existing matching editors will not be initialised.

Fixes VIM-3274, fixes VIM-3275
2024-02-23 15:54:20 +02:00
Matt Ellis
10b6b05fab Clear disposable after disposing 2024-02-23 15:54:20 +02:00
Matt Ellis
caa4ef736a Rename method for clarity 2024-02-23 15:54:20 +02:00
Matt Ellis
23702345a9 Fix comments 2024-02-23 15:54:20 +02:00
Matt Ellis
ba89babd10 Move listener to app level
Fixes VIM-2167
2024-02-23 15:54:20 +02:00
Matt Ellis
2ce3fbd677 Use common APIs to get local editors 2024-02-23 15:54:20 +02:00
Matt Ellis
d8de73a06d Use correct APIs to get local only editors
Always ignores non-local, hidden editors opened by remote guests in Code With Me sessions.

Fixes VIM-3268
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
db35c979b4 Move some editor methods to the base class 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
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
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
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