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
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
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
filipp
363db05db7
Macro recording state is no longer per editor
...
It will not only simplify VimStateMachine, but also help us to support multi-editor macros in future
2024-02-23 15:09:45 +02:00
filipp
3738012dd6
Listeners refactoring
...
1. Listeners now disposed after turning plugin off
2. Change widget listeners to be recreated on plugin toggle
3. Add CaretVisualAttributesListener
2024-02-23 15:09:45 +02:00
filipp
355cfe035d
Remove Editor from VimStateMachine
...
Rationale:
1. A much more experienced developer, whom I highly respect, suggested to empty VimStateMachineImpl constructor in his TODO comment.
2. I aim for VimStateMachine to be a data class rather than being a container for both data and complex logic.
3. From an architectural perspective, it is more correct. Editors do have state (or they may possess a single global state if the corresponding option is set), but a state does not own an editor.
2024-02-23 15:09:44 +02:00
6dd924b2b2
Implement motions to go to next/previous misspelled word
2024-02-23 10:17:25 +02:00
Matt Ellis
f439474b73
Fix set command tests
...
Also hides more feature flags and diagnostic settings from users and unit tests. Shows them when in internal mode.
2024-02-23 10:04:23 +02:00
Matt Ellis
d6cd92e256
Migrate extensions to use operatorfunc option
2024-02-23 10:04:23 +02:00
Matt Ellis
3a294268d9
Introduce operatorfunc option
...
Allows creating custom operators in script, as shown in JetBrains/ideavim#702
2024-02-23 10:04:23 +02:00
Alex Plate
73c3c9f7fe
Replace Enum.values() with Enum.entries, as suggested since 1.9
2024-02-20 16:12:34 +02:00
Alex Plate
328bc5e95a
Convert some services to light services
2024-02-20 16:10:07 +02:00
Alex Plate
12d0d2613f
Allow sneak plugin to be registered with the original mappings from the sneak plugin
2024-02-13 19:20:41 +02:00
f69630b668
VIM-3238 Fix recording a macro that replays another macro
2024-02-10 20:05:47 +02:00
Alex Plate
855dbfab16
Fix issues with enter in python console
...
VIM-3287
2024-02-05 18:31:43 +02:00
Filipp Vakhitov
63995e8c61
Support e flag for search
2024-02-05 16:29:49 +02:00
Filipp Vakhitov
6386770ff3
Move more tests to src
2024-02-05 16:29:49 +02:00
Filipp Vakhitov
b4e831a81f
Fix VisualAreaMatcher & TextRange
2024-02-05 16:29:49 +02:00
Filipp Vakhitov
9b283360ce
Minor improvements
2024-02-05 16:29:49 +02:00
Filipp Vakhitov
fabbd4d156
Better SelectionInfo implementation
2024-02-05 16:29:49 +02:00
filipp
9bea5bf5f7
Remove deprecated code
2024-02-05 16:29:49 +02:00
filipp
9fbc990493
Fix visual matching
2024-02-05 16:29:49 +02:00
filipp
b05fdaaa73
Fix tests
2024-02-05 16:29:49 +02:00
filipp
52d5d4d64c
Fix Keyword token
2024-02-05 16:29:49 +02:00
filipp
6ec712466c
Fix StartOfWordMatcher & EndOfWordMatcher
2024-02-05 16:29:49 +02:00
filipp
6616b8dc07
Simplify MarkMatchers
2024-02-05 16:29:49 +02:00
filipp
807457c718
Hide method and add Deprecated annotation
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
13d2a40903
removing print
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
022b196d6a
adding comments and small refactors
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
7a64216830
getting rid of usages of deprecated classes
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
bf7d2bd465
marking classes as deprecated
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
6e97b591de
fixing some error messages
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
fc7c470966
fixing nohlsearch command
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
51492ca121
moving seach methods back to VimSearchGroup base
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
ce1df84330
creating new IjVimSearchGroup class
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
9b43e2a715
working on kotlin implementation of SearchGroup class
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
732cabd6aa
working on processSearchCommand
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
7c14801d5c
deprecating most of SearchHelper
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
8fd6985316
deprecating SearchHelper find and findAll
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
feac001499
substitute command working with new engine
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
4c47e3a8eb
integrating new regex into global command
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
7773b625a5
\c token can't get overrided by \C
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
abe1abec72
test for \c token always taking priority
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
023838a96b
working on implicit DFA algorithm optimization
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
f4e743acc5
VimRegex uses wrapscan option
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
06d58cbda5
integrating options into the main module
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
d199dea204
using options in findPrevious
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
5722060ed9
testing VimRegex with smartcase set
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
d4f7e727c1
VimRegex methods now receive options
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
39897bd012
allow findAll to have a max index
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
2bf46ce2f3
fixing findPrevious not wraping around in some cases
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
b49a185efc
using the count parameter in find()
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
e305ebd1ed
fixing patterns with just a AND operator
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
6f5c9826f4
fixing patterns with single ^ or $
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
b2441c3cca
throwing and catching VimRegexException
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
a73599e9ee
use non-exact nfas for slightly faster matches
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
43f5d5a8e8
integrating findAll
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
b20cbd3558
fix findNext getting stuck at line ends
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
7f835a407c
fix findPrevious not finding matches that start at end-of-line
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
9859974db7
integrating findNext and findPrevious
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
bd92ef08ec
use explicit stack instead of recursion for backtracking
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
8de6107a17
getting rid of handleTransition method
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
e639f03ac7
stop using non-exact start nfas
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
f9aac442c1
findAll returns List instead of Sequence
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
5fdf675168
rename NFATest to VimRegexEngineTest
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
232f81ff48
commenting new classes
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
1c4a6b2274
refactoring nfa simulation logic to its own class
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
deb71f8efc
cleaning comments
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
4596596d9f
new findPrevious API method
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
bbb6d42f8d
changing find to findNext
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
01efd0f9f0
trying to get antlr to report vim errors
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
2d7597d206
clearing some TODOS in VimRegex
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
221741c891
assuring that cursor line and column tokens belong to the same cursor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
9f69beb450
test for pattern with multiple cursors
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
e843d9e9c3
assuring that visual selection tokens belong to the same cursor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
008b3d94fb
assuring that all cursor and mark tokens belong to the same cursor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
6756d83c55
test for tokens belonging to the same cursor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
b52072a2e3
visitors for mark related tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
3afb00d563
tests for mark related tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
a30c94fd2f
mock mark related methods for regex testing
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
f50c29a285
matchers for mark related tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
f238b0f138
parsing more mark registers
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
d0a8c98040
parsing mark related tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
b3d161ad97
fix tests not detecting visual area selection properly
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
fce9cf2077
visitor for visual area token
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
efd0e56697
visual area matcher
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
b94a9bb9d9
nfa tests for matching inside visual area
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
c153cc5a29
mock visual selection
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
a680e9a25a
visual columns matching
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
3c18c4ef22
fixing parsing of optionally matched sequence
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
c4e11b5976
visitor for optionally matched sequence
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
65be51dd48
tests for optionally matched sequence
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
9684103f97
parsing optionally matched atoms tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
f4c647d430
new doTest method for VimRegexTest
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
f1eab3b9c1
dividing regex api tests into seperate classes
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
545d52bd93
dividing regex tests into internal and public api tests
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
4e42198c09
using multi line strings in VimRegexTest
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
44736a51b9
new NFA doTest method
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
e675ffd623
cleaning multiline strings in tests
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
1f14e06bd3
refactoring editor mock methods
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
9871078269
tests receive caret indexes in the text
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
5e7a7f4d62
fixing cursor line and column matchers
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
7d690c6809
visitors for cursor line and column tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
6edb4266d5
nfa tests for cursor line and column tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
799e82d501
matchers for cursor line anc column tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
a2370bff68
parsing cursor column tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
c72f3bcd12
parsing cursor line tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
295964a74d
mocking VimEditor.offsetToBuffer position and fixing visitors
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
d77cda0fae
visitors for line and column tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
6da072d47d
matchers for line and column tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
471a5a1b3e
tests for line and column tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
cd5da2d237
parsing column related tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
62f67cd626
parsing line related tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
70db96d9e5
allow larger decimal codes inside collections
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
98470111fb
fixing octal codes larger than 0o377
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
557a3bb01f
fixing mixing % in match character by code tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
dee70acdcb
tests for match character by code
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
862b16879c
visitors for character codes
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
ed7249558e
parsing match character by code
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
4f6c6f4d10
fixing rebase problems
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
650d02d9b3
using TextRange instead of IntRange
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
e4041a2f69
adding comments
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
4c284a6d13
visitor for negative limited lookbehind
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
e14fc801bd
fix lookbehinds matches not ending where they were supposed to
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
0478d468e0
adding tests for limited lookbehinds
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
4ac98710fb
implement limit lookbehinds
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
f256f6417e
parsing limited lookbehinds
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
ca94d55b62
implementing negative lookbehind
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
c11c061113
add tests for negative lookbehind
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
c15c3eb802
implementing positive lookbehind
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
0ce102b782
visitor for positive lookbehind
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
cc48207a99
adding tests for positive lookbehind
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
353ea5fc5d
reworking nfa to ignore input until first match
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
64138310cc
add more complex \& tests
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
1c4538af72
implementing \& operator
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
755b47ef19
adding nfa tests for \& operator
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
c78a5d3cab
allow for a state to have multiple assertitions
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
b9b8d30f3b
fixing collections with only char class expressions
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
9be93212c3
fname class visitor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
89973809af
keyword class visitor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
e324af356d
ident class visitor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
f51fc6ed47
return, tab, escape, backspace class visitors
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
ecce98289a
xdigit class
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
23c14aa2e4
upper class visitor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
678d04c5db
space class visitor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
691ba75372
punct class visitor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
d2d7bbc632
print class visitor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
b3b1a6bdb9
lower class visitor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
310125ea01
graph class visitor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
208d1cbba2
digit class visitor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
e94154ba80
cntrl class visitor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
582fbdd9e7
blank class visitor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
dd175912f4
alnum class visitor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
a6a0ae7a51
alpha class visitor
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
8cdac91a01
base code for char classes expressions
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
4c89f41daa
adding nfa tests for collection char classes expressions
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
512e826a42
adding new parser tests for collection char classes
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
bc0d277a21
parsing collection char class expressions
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
169fe5fc5b
parse visual \%V token
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
30867702a4
parsing lookbehind tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
6131f92ae6
parsing ~ token
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
823a52583c
documenting regex code
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
e2c6c0539f
add more lookahead tests
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
f7f1c0e90d
making nested lookahead tests pass
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
eca12607dd
pattern visitor is now a singleton
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
006e3e11f9
parser class is now a singleton
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
a9982cbdca
refactoring temporary field out of parser class
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
0fa9c5a2a2
moving all parsing logic to VimRegexParser class
...
rebasing
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
cdcc9729d3
add more failing lookahead tests
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
4acf651aa7
adding tests for nested lookahead tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
4bba791c65
adding comments and small cleanups
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
662688d3b9
refactoring inappropriate intimacy between nfa and nfaassertion classes
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
21a3e8fdc4
extract methods refactor in nfa simulation code
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
3815a1d538
add more lookahead tests
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
cbe0c5cfec
implementing negative lookahead
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
15db9b30e1
add tests for negative lookahead
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
e891294c0f
parsing negative lookahead
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
f6b9e7cc26
implementing positive lookahead
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
052fd7162f
parsing positive lookahead
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
189acb73f5
dealing with atomic groups in a different way
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
ec7c1677b4
allow special escape characters in collections \e \t \r \b \n
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
a9474c8e67
allow character codes inside collections \d \o \x \u \U
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
3a70dfc5f3
implementing collections with EOL \_[]
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
669177d803
implementing and testing start and end of word tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
b1f43b061c
parsing start and end of word tokens
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
7ff3c84deb
commenting new atomic groups code
2024-02-05 16:29:49 +02:00