1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2024-11-22 09:42:44 +01:00
Commit Graph

1275 Commits

Author SHA1 Message Date
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
Emanuel Gestosa
ee642b63ce adding explanatory comment on wierd atomic group test 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
17315e5096 implementing atomic groups 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
4e9d52fc62 placeholder for atomic groups 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
d7e87f8fc8 rename MultiBoundary to RangeBoundary 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
3efe11f393 refactoring visitors to prepare for different types of multis 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
26c6c464d8 adding tests for atomic groups 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
4db654e653 parsing atomic groups 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
048759d374 implement and test start and end of line anywhere in pattern 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
db2424057f parsing start and end line anywhere in pattern 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
472a53e3b9 start and end of line anchors 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
9e15d91900 adding tests for empty editors 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
d5cff281c0 adding comments on new Matchers 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
57b6c4dffb collection matcher uses set instead of list 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
908a2d1d8c start and end of file 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
69bdea9273 character classes never ignore case 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
5b21a653ee add test for case insensitive matching 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
cfddcf1630 ignore case tokens 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
f009687ddf matchesAt API function 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
6ddfe29465 matches API function 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
715c51f673 matchEntire API function 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
b443e8f06a fix quantified capture groups not updating properly 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
0bd0466c9c cleaning adding transitions to states 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
ad5db3c9e5 fix capturing groups not updating properly 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
fa3182cb5e adding failing backreferences test 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
3f44bed66e adding comments to Matchers 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
2a70530d0f matchAt API function 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
7c542d5fc7 implementing character classes with EOL 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
638dfb7777 parsing character classes with new line 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
1323536a63 testing and implementing backreferences 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
419212e2d4 parsing backreferences 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
5f1c234a7d refactor Matcher to return number of consumed characters 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
db1e8301cd implementing and testing lazy quantifiers 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
bf94a3c68d parsing lazy quantifiers 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
96baa4ffc6 all named character classes 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
7d472afe61 set match start and end \zs \ze 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
f32a4d33a7 support unicode escape sequence in collections 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
0722991955 add test for collection with not special escaped character 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
bcc740cdbc implementing custom collections 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
5cf46097f7 ascii character classes 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
61dc189f8b char classes and collections base code 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
23c2b008c9 implementing cursor and using mockito to mock editor
rebasing
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
db14afdf3a dot with and without newline 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
b7927336d1 implementing dot 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
ee23a3d4cd commenting findAll 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
63c0112ffb findAll API function 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
db08d7d280 find API function 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
9892525fbc containsMatchIn API function 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
34b87ff6bf adding comments 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
241ad68bd5 fix nfa looping in epsilon transitions 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
a0ec18921b more correct way of handling quantifiers 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
45e17eb0b2 fixing quantifiers 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
59f0e9ae67 add test for updating capture group 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
af24611c73 capture group submatch 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
d4502dda3f VimMatchResult stores matched string value 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
c0efa8af5d use IntRange for match range 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
1c06a3fc89 add test for empty group 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
c19fb38d1c implementing grouping 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
5dc1de9daf add nfa test for escaped character 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
6774301938 updating comments 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
4ef6cf0428 implementing quantifiers 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
ca5f8e4b44 skeleton for NFA testing 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
1907f03abe nfa simulation uses VimEditor instead of String 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
6351a4e4f3 initial nfa 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
fa34c3937f initial nfa definition 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
cdac97ebf5 adding some zero-width tokens 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
fe958d28b8 lexer fixing what chars are taken literally 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
f71982e1d5 support unicode in collections 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
cb2bfcea53 unicode chars in all lexer modes 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
4a9d5bbceb lexer support for unicode characters 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
10809eade6 regex very magic and very nomagic modes 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
43d63527f8 adding comments to parser grammar 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
df51eb54ed using antlr token types 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
b47109ab4d grammar add EOF at end of pattern 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
15b2b68940 making new collection tests pass 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
62a239f6fe add tests for collections 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
d89bc95a0a altering antlr error handling 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
2a76f21b31 regex range basic tests 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
f07e22d742 delete duplicate files 2024-02-05 16:29:49 +02:00
Emanuel Gestosa
058ab7a1ea gradle generate antlr files
rebasing
2024-02-05 16:29:49 +02:00
Emanuel Gestosa
fae3baa640 initial regex grammar 2024-02-05 16:29:49 +02:00
Filipp Vakhitov
c3defdcda4 Add sources and JavaDoc to vim-engine jar 2024-02-01 11:07:28 +02:00
Filipp Vakhitov
11761b66b2 Revert "Fix(VIM-3183): Execute .ideavimrc on pooled thread"
This reverts commit 1d7796805c.
2024-01-31 20:10:32 +02:00
Filipp Vakhitov
f83f107bd1 Revert "Support triggering option listeners outside EDT"
This reverts commit 5a6f54c96c.
2024-01-31 20:10:18 +02:00
Filipp Vakhitov
f1b90857ff Revert "Fix code in execute requiring EDT or write actions"
This reverts commit e7236beedd.
2024-01-31 20:10:15 +02:00
Filipp Vakhitov
1822a59c70 Revert "Fix(VIM-3273): Config file stopped working"
This reverts commit 04230fdd9c.
2024-01-31 20:09:31 +02:00
Filipp Vakhitov
90c7f747a4 Revert "Fix(VIM-3278) Relative number is broken in 2.8.0"
This reverts commit a1646a7a88.
2024-01-31 20:09:23 +02:00
Filipp Vakhitov
0119912318 Revert "Add readActions & EDT"
This reverts commit 45a2eadc58.
2024-01-31 20:09:08 +02:00
Filipp Vakhitov
45a2eadc58 Add readActions & EDT 2024-01-31 14:43:23 +02:00
Filipp Vakhitov
a1646a7a88 Fix(VIM-3278) Relative number is broken in 2.8.0
Proper options initialization order
2024-01-31 13:34:33 +02:00
Filipp Vakhitov
04230fdd9c Fix(VIM-3273): Config file stopped working 2024-01-31 09:12:23 +02:00
Filipp Vakhitov
24e044bcda Remove deprecated ComplicatedKeysAction.kt 2024-01-30 18:56:38 +02:00
Filipp Vakhitov
e87290aeea Simplify storing global variables 2024-01-29 12:58:31 +02:00
Filipp Vakhitov
e7236beedd Fix code in execute requiring EDT or write actions 2024-01-29 10:00:55 +02:00
Filipp Vakhitov
5a6f54c96c Support triggering option listeners outside EDT 2024-01-28 14:00:36 +02:00
Alex Plate
808533b110
Fix(VIM-3260): Processing the offsets at the file end 2024-01-26 17:49:44 +02:00
Alex Plate
26d4074a61
[VIM-2974] Adopt other parts of key handling to the octopus handler switcher 2024-01-26 16:40:34 +02:00
Alex Plate
db6786414a
[VIM-2974] WIP: Bringing back the octopus handler switch 2024-01-26 15:32:29 +02:00
filipp
6c9ad4ded2 Remove deprecated xml-related code 2024-01-26 13:45:46 +02:00
filipp
32cae8ca11 Remove more deprecated things 2024-01-26 13:05:48 +02:00
filipp
0cb65279d9 Remove deprecated mark-related methods 2024-01-26 13:02:23 +02:00
filipp
412da06554 Remove deprecated ToggleOption.kt 2024-01-26 12:47:06 +02:00
filipp
017c9a6a70 Remove deprecated OptionService.kt 2024-01-26 12:43:06 +02:00
filipp
1d7796805c Fix(VIM-3183): Execute .ideavimrc on pooled thread 2024-01-26 12:27:03 +02:00
Filipp Vakhitov
1da8cd53d2 VIM-1377 Normal mode needs to be more obvious
Save mode widget colors state in XML
2024-01-23 01:27:57 +02:00
Filipp Vakhitov
a9ededc997 VIM-1377 Normal mode needs to be more obvious
Add color customization to mode widget
2024-01-23 01:27:57 +02:00
Matt Ellis
825b62a2a9 Refactor to remove lazy properties 2024-01-04 15:58:36 +02:00
Matt Ellis
5ec817776c Use "vim" prefix for option keys 2024-01-04 15:58:36 +02:00
Matt Ellis
3ad0519add Extract initialisation strategies to new class 2024-01-04 15:58:36 +02:00
Matt Ellis
9868522341 Only calculate stack trace if logging is enabled 2024-01-04 15:58:36 +02:00
Matt Ellis
5b8d8c617f Improve type handling 2024-01-04 15:58:36 +02:00
Matt Ellis
a1f66061e3 Extract option storage to separate class 2024-01-04 15:58:36 +02:00
Matt Ellis
d8811933c9 Simplify resetting options for testing 2024-01-04 15:58:36 +02:00
Matt Ellis
c9864dde8d Extract parsed values cache 2024-01-04 15:58:36 +02:00
Matt Ellis
ca849d6649 Simplify API of OptionListenersImpl 2024-01-04 15:58:36 +02:00
Matt Ellis
95a2354a86 Fix issue where global value wasn't properly set 2024-01-04 15:58:36 +02:00
Matt Ellis
538e0ac48c Extract listener notification
Refactoring - no intentional changes in behaviour
2024-01-04 15:58:36 +02:00
Matt Ellis
cbe0f89548 Extract listener registration to separate class
Refactoring - no intentional changes in behaviour
2024-01-04 15:58:36 +02:00
Matt Ellis
615b071dcb Rename methods for clarity 2024-01-04 15:58:36 +02:00
Filipp Vakhitov
fc46acb2e4 Move to concurrent list 2024-01-03 12:15:31 +02:00
Filipp Vakhitov
2f20193086 Post-review improvements 2024-01-03 12:15:31 +02:00
Filipp Vakhitov
e02d34f023 Better ShowMode widget & Macro recording widget 2024-01-03 12:15:31 +02:00
filipp
216f020b70 Add new listeners 2024-01-03 12:15:31 +02:00
Alex Plate
b307c7d88b
[VIM-2929]: Reset the key stack in case of exception during the execution 2024-01-02 13:57:12 +02:00
Alex Plate
7098d2633a
Add a helper function to key keystokes from string 2024-01-02 13:57:12 +02:00
Alex Plate
e36131b38b
[VIM-2929]: Adding logging for tracing the keyStack 2023-12-28 11:24:13 +02:00
Matt Ellis
8ab43e98fe Remove unnecessary keeping visual mode flag
The value was only ever set to false.
2023-12-22 10:55:00 +02:00
Matt Ellis
4f407ccc03 Remove unused multikey-undo flag
It's uncertain what this was introduced for, and it's no longer used for any behaviour
2023-12-22 10:55:00 +02:00
Matt Ellis
5f3fddd3e4 Remove unnecessary post process method
We no longer need to post process the selection because it is up to the operator implementation to end in the correct mode
2023-12-22 10:55:00 +02:00
Matt Ellis
392f3b536d Remove unnecessary mode reset
Visual mode should already have been exited before executing the operator. The operator's implementation is responsible for handling the final mode
2023-12-22 10:55:00 +02:00
Matt Ellis
155de2b396 Remove always true check and always exit visual 2023-12-22 10:55:00 +02:00
Matt Ellis
6c9930ac2a Removes unnecessary 'exit visual' command flag
This flag is only used to modify the behaviour of visual operators, but all visual operators have the flag, which means it's unnecessary. The only behaviour for visual operators now is to exit visual mode.

Note that visual motions are implemented separately, and handle their own visual mode requirements (e.g. MotionArrowLeftAction).
2023-12-22 10:55:00 +02:00
Matt Ellis
9dddf4f4bc Minor cleanup 2023-12-22 10:55:00 +02:00
Alex Plate
6384b28689
Refactor listeners to avoid manual unregister
However, manual removal of listeners may cause "double" remove in cause the user turns off the plugin and then closes IDE: firstly listener is removed manually, and then by dispose call
2023-12-19 01:44:57 +02:00
Alex Plate
e661466558
Small refactorings on IdeaSelectionControl
They are done because if we don't set timer to null after tests, we have a leaked project
2023-12-19 00:12:54 +02:00
Alex Plate
5652774888
Exclude kotlin stdlib from the distribution 2023-12-01 11:19:18 +02:00
filipp
5afd161fba Update minimal supported version to 2023.3 2023-11-24 20:42:48 +02:00
Alex Plate
568d5ca4ff
Fix(VIM-3090): Cmd line mode saves the visual mode
Previously, cmd line mode always returned to normal mode. However, it should keep the visual or one-time modes
2023-11-24 17:42:33 +02:00
Alex Plate
a9991f2a50
Convert ProcessGroup to kotlin 2023-11-24 17:00:06 +02:00
Filipp Vakhitov
8fcca05565 Fix(VIM-3176): Reselecting visual selection after pasting above it select wrong lines 2023-11-23 22:53:07 +02:00
dependabot[bot]
14308956d7 Bump org.jetbrains:annotations from 24.0.1 to 24.1.0
Bumps [org.jetbrains:annotations](https://github.com/JetBrains/java-annotations) from 24.0.1 to 24.1.0.
- [Release notes](https://github.com/JetBrains/java-annotations/releases)
- [Changelog](https://github.com/JetBrains/java-annotations/blob/master/CHANGELOG.md)
- [Commits](https://github.com/JetBrains/java-annotations/compare/24.0.1...24.1.0)

---
updated-dependencies:
- dependency-name: org.jetbrains:annotations
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-22 17:20:29 +02:00
dependabot[bot]
71339a66d7 Bump org.junit.jupiter:junit-jupiter-api from 5.10.0 to 5.10.1
Bumps [org.junit.jupiter:junit-jupiter-api](https://github.com/junit-team/junit5) from 5.10.0 to 5.10.1.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.10.0...r5.10.1)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter-api
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-22 17:20:10 +02:00
Alex Plate
22062f0c77
Fix(VIM-3190): Do not use octopus handler if the enter key is used with modifiers like shift or control 2023-11-22 11:51:57 +02:00
Alex Plate
f6eab62c3c
Fix(VIM-3184): Revert "VIM-3184: Temporally disable new handlers for the thin client"
This reverts commit 6960a34d02.
2023-11-22 09:42:59 +02:00
Alex Plate
6960a34d02
VIM-3184: Temporally disable new handlers for the thin client 2023-11-21 13:09:52 +02:00
filipp
f80d1defcb Add Javadoc 2023-11-17 14:00:38 +02:00
filipp
a9052a068f Fix property tests 2023-11-17 13:05:30 +02:00
dependabot[bot]
c3134b9426 Bump org.junit.jupiter:junit-jupiter-engine from 5.10.0 to 5.10.1
Bumps [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit5) from 5.10.0 to 5.10.1.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.10.0...r5.10.1)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter-engine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-15 17:36:01 +02:00
Alex Plate
9d20061924
Do not register VimShortcutKeyAction for esc and enter keys
This is no more needed as we have a different way of getting the key. Also, this causes a bug VIM-3169
2023-11-10 17:17:13 +02:00
Filipp Vakhitov
ddfe8cf361 Support temporary options 2023-11-10 16:01:22 +02:00
Filipp Vakhitov
93c83f773a Add generated JSON files to gitignore 2023-11-10 16:01:22 +02:00
Filipp Vakhitov
876e16fa9e Support registering commands from json 2023-11-10 16:01:21 +02:00
Filipp Vakhitov
37067d5c72 Fix typos 2023-11-10 16:01:21 +02:00
Filipp Vakhitov
fe6c1ae452 Add LazyVimCommand and CommandProvider 2023-11-10 16:01:21 +02:00
Filipp Vakhitov
30165f5047 Support keypad keys in Vim key notation 2023-11-10 16:01:21 +02:00
Filipp Vakhitov
3046c61447 Generating json by annotations 2023-11-10 16:01:21 +02:00
Filipp Vakhitov
ced50bb2e8 Mark xml related classes for commands as deprecated 2023-11-10 16:01:21 +02:00
Filipp Vakhitov
dee84bcc63 Annotate commands 2023-11-10 16:01:21 +02:00
Alex Plate
288c66d8a2
Refactor execution of vim script
Now we set the flag `executingVimscript` during execution of any vimscript and we run initialization of delayed plugins after every call for execute.

This is needed to properly initialize plugins after call for `source` command. Previously this command initialized extensions as they met in the script, what may cause incorrect behaviour. With this update, we unified an approach for executing vim script.
2023-11-03 13:27:38 +02:00
Alex Plate
44c8a97f44
Consider the case when we load .ideavimrc file from using the source command
This includes updating the "ReloadIdeaVimRc" button and setting the correct mapping owner

Previously, the `source` command loaded ~/.ideavimrc file as a regular file, thus several features didn't work properly.
This refactoring was caused by this PR: https://github.com/JetBrains/ideavim/pull/736
2023-11-03 13:27:38 +02:00
Alex Plate
60c27b1dea
Add documentation about some aspects of IdeaVim implementation 2023-11-03 13:27:38 +02:00
filipp
06ef1c1182 VIM-1639 Ctrl-o and Ctrl-i jumping in files of different projects 2023-10-26 10:23:16 +03:00
filipp
a9ba9789fd Fix(VIM-696): Vim selection issue after undo 2023-10-25 16:55:32 +03:00
Alex Plate
8c06767fdc
Show error instead of warning in case of exception 2023-10-20 11:10:55 +03:00
Alex Plate
25877e369b
Add comment saying that the ideaglobalmode option is experimental 2023-10-20 10:15:42 +03:00
Alex Plate
0271a475a2
Update docs 2023-10-20 10:15:42 +03:00
Alex Plate
26f48c5820
Fix(VIM-3095): Fix missing ellipsis digraph 2023-10-11 12:27:00 +03:00
Alex Plate
9eeeb15c6c
Enable octopus handler by default 2023-10-10 11:39:14 +03:00
Alex Plate
4731eb9db8
Bring back removed functions 2023-09-14 16:50:52 +03:00
Alex Plate
337f5ade59
Get rid of deprecated method 2023-09-14 16:31:26 +03:00
Alex Plate
fe8bbcb11a
Bring back a method to keep the compatibility 2023-09-14 16:26:14 +03:00
Alex Plate
b1b6b0bf80
Add links to the new page about modes 2023-09-14 15:44:00 +03:00
Matt Ellis
585b815472 Only notify changes if the value is different
This is primarily to avoid instantiating inactive extensions when
resetting all options back to default values, which sets extensions
inactive.
It applies to global and local options, but not to global-local. The
notifications for global-local options are already complex, as they can
be reacting to changes to both the global and local value, and only
notifying editors that are affected.
2023-09-11 11:04:09 +03:00
Matt Ellis
c37e2f4176 Update fallback window when all windows close 2023-09-11 11:04:09 +03:00
Matt Ellis
32b8d03c5e Improve modifying string and string list options 2023-09-11 11:04:09 +03:00
Matt Ellis
71f3e1b4f1 Support per-window global values
For local-to-window options
2023-09-11 11:04:09 +03:00
Matt Ellis
aa6f53fa68 Require editor when getting/setting global option 2023-09-11 11:04:09 +03:00
Matt Ellis
700198d8bc Remove test only vimscript execute method 2023-09-11 11:04:09 +03:00
Matt Ellis
3efab5928e Evaluate ideavimrc in the fallback window context 2023-09-11 11:04:09 +03:00
Matt Ellis
93037b6866 Add fallback window to capture local option state 2023-09-11 11:04:09 +03:00
Matt Ellis
0f19e50c69 Improve hierarchy of option accessors
Getting the effective IJ options would allow access to Vim global and IJ global, but not Vim effective. IntelliJ specific options are now a separate hierarchy, so the Vim effective and IJ effective accessors now simply access all Vim or all IJ options.
2023-09-11 11:04:09 +03:00
Matt Ellis
66ea6ad3d4 Rename OptionScope to OptionAccessScope 2023-09-11 11:04:09 +03:00
filipp
0c1dc51db4 Fix(VIM-3060): Clipboard interaction stopped working
Fix for Windows
2023-09-07 14:42:00 +03:00
filipp
74a710c5e8 VIM-3060 Clipboard interaction stopped working
Fixed issue and tests (for Linux)
2023-09-07 02:39:23 +03:00
Alex Plate
456055bcf0
Do not run multiple carets from ChangeEditorActionHandler and instead pass this information to EditorActionHandlerBase
This is needed for the new way we register handlers. As we can't be sure that this commands won't be called from the `runForEachCaret` context, we have to avoid this method
2023-09-01 17:25:14 +03:00
Alex Plate
4532d68743
Convert change group to kotlin 2023-09-01 14:29:51 +03:00
Alex Plate
26e9bf5197
Detect if we run the action in runForEachCaret scope or not 2023-09-01 13:25:15 +03:00
dependabot[bot]
38e1a62f19 Bump org.jetbrains.kotlinx:kotlinx-serialization-json-jvm
Bumps [org.jetbrains.kotlinx:kotlinx-serialization-json-jvm](https://github.com/Kotlin/kotlinx.serialization) from 1.5.1 to 1.6.0.
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Kotlin/kotlinx.serialization/compare/v1.5.1...v1.6.0)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-json-jvm
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-30 18:36:38 +03:00
Alex Plate
e7a8b45c10
[VIM-3051] Refactor the way we store modes in IdeaVim
Now we have a single variable with current mode instead of stack of modes.
2023-08-25 11:38:21 +03:00
dependabot[bot]
336f1c3b80 Bump org.jetbrains.kotlinx:kotlinx-serialization-json-jvm
Bumps [org.jetbrains.kotlinx:kotlinx-serialization-json-jvm](https://github.com/Kotlin/kotlinx.serialization) from 1.5.0 to 1.5.1.
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Kotlin/kotlinx.serialization/compare/v1.5.0...v1.5.1)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-json-jvm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-16 16:21:36 +00:00
Alex Plate
22ca74a1a3
Use a different approach for switching to visual mode. The previous way caused "recursive runForEachCaret exception" 2023-08-14 16:17:47 +03:00
Alex Plate
3093c9212c
Add note about visual type in text objects 2023-08-14 16:17:46 +03:00
dependabot[bot]
6b8a4e6e63 Bump org.junit.jupiter:junit-jupiter-engine from 5.9.2 to 5.10.0
Bumps [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit5) from 5.9.2 to 5.10.0.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.9.2...r5.10.0)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter-engine
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-14 11:28:23 +03:00
dependabot[bot]
d256870953 Bump org.junit.jupiter:junit-jupiter-api from 5.9.2 to 5.10.0
Bumps [org.junit.jupiter:junit-jupiter-api](https://github.com/junit-team/junit5) from 5.9.2 to 5.10.0.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.9.2...r5.10.0)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter-api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-14 08:16:59 +00:00
Ludwig Valda Vasquez
068d610e3a Add grapheme cluster handling tests
GraphemeBreakTest.txt was downloaded from the Unicode Character Database [0].

Changes to build.gradle.kts were required to stop `gradlew test` from
regenerating the resources with empty JSON objects. And adding a
dependency.

[0]: https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.txt
2023-08-14 09:04:41 +03:00
Ludwig Valda Vasquez
41177b91be Handle unicode grapheme clusters
Some characters that render as a single symbol can span over a sequence
of several unicode code points (e.g., flag emojis, combination of a
letter and a diacritic, Hangul syllables, etc.).

Such composites are called grapheme clusters in the unicode standard,
and this patch introduces recognition of extended grapheme cluster
boundaries, allowing to iterate over rendered characters. Without this,
user may observe the cursor being "stuck" inside a character for several
keystrokes, while it's making its way through each code point in the
grapheme cluster.

The implementation follows the boundaries search algorithm outlined in
the technical report 29 of the Unicode standard[1]. The implementation was
tested against the set of test cases provided by the unicode character
database[2].

Additionally to the grapheme cluster boundaries search itself, this
patch adds `isExtendedPictographic` function, that answers whether the
given code point has a unicode "Extended_Pictographic" property, which
is required to correctly determine grapheme cluster boundaries. This
method is implemented natively in the JDK 21 and can be removed once we
start targeting that version.

Extended_Pictographic property is stored as a bitmap. I was considering
making a similar map for the code point classification in the grapheme
cluster boundary search implementation, which could yield better
performance, but that would require adding another half a megabyte (at
least) of data into the JAR and I've settled for the bunch of `if`s way.

That is something that can be reconsidered and shouldn't be difficult to
change if the impact on performance would be noticeable (in my simple
tests it didn't show).

A few functions in the vim-engine were adjusted to handle grapheme
clusters (such as getting the horizontal offset and adjusting the cursor
to not reach over the end of the line).

[1]: https://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries
[2]: https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.txt
2023-08-14 09:04:41 +03:00
Alex Plate
5d4996c085
Optimize imports on the project 2023-08-11 11:54:38 +03:00
filipp
1fe64e69ca Support running tests if headless 2023-08-04 19:00:47 +03:00
filipp
41df06a48b Fix failing tests second attempt
(please please)
2023-08-03 14:00:03 +03:00
filipp
4188e636f3 Fix failing tests
(please)
2023-08-03 13:39:33 +03:00
filipp
e2c0d59e3a Fix default register for unnamedplus without X 2023-08-03 11:24:29 +03:00
Alex Plate
a62cc3618c
Fix an issue with disposed caret when moving up
There was an issue that when we enter visual block, move up, then try to switch to the visual line, we get a disposed caret issue.
This was caused by the fact that we get the list of carets, then process them one by one. However, as we update the first caret, the second gets disposed.
2023-08-01 16:17:39 +03:00
Matt Ellis
d112030a8e Add explanatory comment about InsertExitModeAction 2023-08-01 12:22:26 +03:00
Matt Ellis
dd24ebf184 Rename OptionsScope.AUTO to EFFECTIVE 2023-07-31 11:28:32 +03:00
Matt Ellis
7ef2be625f Refactor parseOptionLine for readability 2023-07-31 11:28:32 +03:00
Matt Ellis
e3957d2207 Minor updates from code review 2023-07-31 11:28:32 +03:00
Matt Ellis
e1141dcd1c Remove old option listener API 2023-07-31 11:28:32 +03:00
Matt Ellis
54dc184dd0 Introduce option effective value change listener 2023-07-31 11:28:32 +03:00
Matt Ellis
1977ce3ea5 Add simple one to many collection 2023-07-31 11:28:32 +03:00
Matt Ellis
c8c9d1729e Introduce listener for global option changes 2023-07-31 11:28:32 +03:00
Matt Ellis
1c465f028e Fix option scopes for :let command 2023-07-31 11:28:32 +03:00
Matt Ellis
12824c22c4 Add :setglobal command 2023-07-31 11:28:32 +03:00
Matt Ellis
080c2059ee Format unset global-local toggle options 2023-07-31 11:28:32 +03:00
Matt Ellis
a288850010 Add support for resetting option to global value 2023-07-31 11:28:32 +03:00
Matt Ellis
16811602d2 Support global-local options 2023-07-31 11:28:32 +03:00
Matt Ellis
6d94d719e3 Only notify change if option has changed 2023-07-31 11:28:32 +03:00
Matt Ellis
749d111e89 Reset options for current editor only
Matches Vim behaviour for `:set all&`
2023-07-31 11:28:32 +03:00
Matt Ellis
365d8d34ce Introduce AUTO scope for effective option values 2023-07-31 11:28:32 +03:00
Matt Ellis
ced25bbf28 Initialise options when opening windows/buffers
Note that this temporarily changes the semantics of `:set` to always set the local option, instead of setting the global option (because we now eagerly initialise local values). Neither is correct, but we don't yet have a way to support the proper behaviour.
2023-07-31 11:28:32 +03:00
Matt Ellis
7e1ce5a203 Use Vim terminology in storage service 2023-07-31 11:28:32 +03:00
Matt Ellis
9a3fcb56a1 Support local-to-buffer options
Previously, all local options were treated as local-to-window
2023-07-31 11:28:32 +03:00
Matt Ellis
aff956f4c8 Update parsed value cache for declared scope 2023-07-31 11:28:32 +03:00
Matt Ellis
0f49fd6406 Introduce declared scope for all options 2023-07-31 11:28:32 +03:00
Filipp Vakhitov
dfbefe96da Fix(VIM-802): IdeaVim vs. Vim: discrepancies in using registers 2023-07-28 19:58:51 +03:00
filipp
a71b35097f Fix(VIM-2246): X11/Xorg Primary selection register "* not supported 2023-07-28 19:56:42 +03:00
filipp
0058f81e76 VIM-3022 Search is broken in folded regions 2023-07-27 01:03:12 +03:00
Alex Plate
78ea4e4e30
Set up publishing of the vim-engine library 2023-07-20 16:50:14 +03:00
Matt Ellis
2f5d402c61 Support :set! to output as a single column 2023-07-19 18:04:02 +03:00
Matt Ellis
8fb2ea5845 Output options in column order, not row order
This means that the last column might not be full, rather than the last row. Same as Vim.
2023-07-19 18:04:02 +03:00
Matt Ellis
a78e21a167 Use soft wraps instead of hard wraps in ex output
Hard wraps require figuring out the width of the panel, and all we have is the width of the associated editor, which excludes gutter, etc. Easier to let the UI toolkit handle it
2023-07-19 18:04:02 +03:00
Matt Ellis
2e9b626523 Fix formatting of value pair options 2023-07-19 18:04:02 +03:00
Matt Ellis
4487b8904c Sort options output before formatting
Sorts on option name, not including "no" prefix for toggle options
2023-07-19 18:04:02 +03:00
Matt Ellis
1f01f915dc Remove trailing padding from options list 2023-07-19 18:04:02 +03:00
filipp
a769a8d1a4 Fix(VIM-2818): Wrong caret position after multicaret paste 2023-07-14 16:24:36 +03:00
filipp
9e203898b6 Support more registers for secondary carets 2023-07-14 13:42:43 +03:00
Ludwig Valda Vasquez
28887c1da2 Update VimMessages#updateStatusBar to accept VimEditor
This is required for vim support in Fleet.
2023-07-07 10:57:56 +03:00
filipp
2582f1e907 Fix(VIM-1294): unvoluntary unfolding when using ideavim 2023-06-30 12:32:41 +03:00
filipp
c376feb4d8 Fix(VIM-2685): Register command outputs different values for same registers 2023-06-27 17:40:56 +03:00
filipp
1205bb67f2 VIM-2973 Multiline editing like "ciw" doesn't work well when have remappings to stop c and d from using the default register 2023-06-21 01:20:46 +03:00
filipp
10bcd20cd8 Retire obsolete commands
With all the gratefulness for 20 years of service. Thank you, pioneers of our plugin's legacy.
2023-06-20 15:59:09 +03:00
filipp
1b1680f7b0 Fix typo 2023-06-20 15:59:09 +03:00
filipp
6cc52570ac Add missing ExCommand annotations 2023-06-20 15:59:09 +03:00
filipp
6425791ed9 Attempt to avoid broken jsons after partial compilation 2023-06-20 15:59:09 +03:00
Alex Plate
0192009482
Fix(VIM-2975): Fix the offset after the rendered docs 2023-06-15 14:25:09 +03:00
Alex Plate
7b71af9e1d
Fix(VIM-2964): Fix an issue with leaking caret instance
Now I use the subscription to the disposer, but I think we can update it to the flow
2023-06-06 16:12:54 +03:00
Alex Plate
51c464f8d2
Fix out of bounds exception 2023-06-06 12:07:33 +03:00
filipp
460553d8ae Avoid dependency to annotation-processors 2023-06-06 10:42:42 +03:00
filipp
cc2de42415 Moving from gorgeous YAML to good old JSON 2023-06-06 10:42:42 +03:00
filipp
b31aa57d81 build.gradle.kts cleanup 2023-06-06 10:42:42 +03:00
filipp
c9b9bb6cf8 Remove generated files for tests 2023-06-06 10:42:42 +03:00
filipp
434d882314 Add vimscriptfunctionannotation option 2023-06-06 10:42:42 +03:00
filipp
f456e0a8dd Fix tests 2023-06-06 10:42:42 +03:00
filipp
4d907213c3 Split ex-commands in YAML 2023-06-06 10:42:42 +03:00
filipp
ee704f53c7 Support lazy ex command classloading 2023-06-06 10:42:42 +03:00
filipp
74237365f1 Fix LazyVimscriptFunction 2023-06-06 10:42:42 +03:00
filipp
8aeab29303 Annotate ex-commands 2023-06-06 10:42:42 +03:00
filipp
ff945e7b8a Add ExCommand annotation 2023-06-06 10:42:42 +03:00
filipp
7491d19309 Add yaml files 2023-06-06 10:42:42 +03:00
filipp
627c8a6eca Move some functions to engine 2023-06-06 10:42:42 +03:00
filipp
8094758a82 Add function providers 2023-06-06 10:42:42 +03:00
filipp
f143b6ee9f Rename KSP options 2023-06-06 10:42:42 +03:00
filipp
063d3949cf Better YAML 2023-06-06 10:42:42 +03:00
filipp
c1b87eba03 Annotate functions 2023-06-06 10:42:42 +03:00
filipp
bae52964cd Add VimscriptFunction annotation 2023-06-06 10:42:42 +03:00
samabcde
437932cd57 VIM-1990 fix repeat delete find or till wrong MotionType 2023-06-01 10:36:28 +03:00
samabcde
4e7149c945 VIM-2615 add support to sort u command, fix natural sort issue when both string not contain number 2023-05-29 14:41:06 +03:00
Alex Plate
48b18da953
Get text object parameters from the operatorArguments 2023-05-19 10:21:18 +03:00
Alex Plate
904ca5d529
Remove argument argument from text object 2023-05-19 10:16:23 +03:00
Alex Plate
05986d017d
Remove deprecated function 2023-05-19 09:52:06 +03:00
Matt Ellis
798750bf95 Use options API for more cached values 2023-05-17 10:54:13 +02:00
Matt Ellis
e8d9bd551f Add helper functions to storage service 2023-05-17 10:54:13 +02:00
Matt Ellis
d08ea2ee9b Introduce simple cache for parsed option values 2023-05-17 10:54:13 +02:00
Matt Ellis
52dcb2d290 Treat 'iskeyword' as a local-to-buffer option 2023-05-17 10:54:13 +02:00
Matt Ellis
4cc883f174 Refactor search helper companion to interface
Helper functions now take the editor rather than the text, ready for search to rely on per-editor options (i.e. '`iskeyword'`). Also standardises on `Int` for search parameters. While the file size is a `Long`, the editor returns a `CharSequence`, which is indexed by `Int`.
2023-05-17 10:54:13 +02:00
Matt Ellis
5a3c5bd761 Treat 'virtualedit' as a global-local option 2023-05-17 10:54:13 +02:00
Matt Ellis
fd314a3288 Treat 'matchpairs' as a local option 2023-05-17 10:54:13 +02:00
filipp
e4f7700044 Refactoring
Update method signatures and return types:
- Getting rid of "magic constants" (e.g. -1) and replacing them with nullable
- Replacing direction Int with Enum
- JetBrains annotations
2023-05-05 09:41:27 +03:00
filipp
2088c1ce00 Move more methods to engine 2023-05-05 09:41:27 +03:00
Alex Plate
30e69e13fd
Update kotlin version to 1.8.21 2023-04-26 10:57:54 +03:00
dependabot[bot]
17346c255e Bump org.jetbrains:annotations from 23.0.0 to 24.0.1
Bumps [org.jetbrains:annotations](https://github.com/JetBrains/java-annotations) from 23.0.0 to 24.0.1.
- [Release notes](https://github.com/JetBrains/java-annotations/releases)
- [Changelog](https://github.com/JetBrains/java-annotations/blob/master/CHANGELOG.md)
- [Commits](https://github.com/JetBrains/java-annotations/compare/23.0.0...24.0.1)

---
updated-dependencies:
- dependency-name: org.jetbrains:annotations
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-26 10:46:14 +03:00
Matt Ellis
29bd7cbe6e Update note to include how to add an option 2023-04-26 10:26:06 +03:00
Matt Ellis
a51fc9c612 Add extra notes about the history of refactorings 2023-04-26 10:26:06 +03:00
Matt Ellis
957874ce2b Remove unused @JvmField annotations 2023-04-26 10:26:06 +03:00
Matt Ellis
330d92116c Refine inheritance of IJ specific option classes 2023-04-26 10:26:06 +03:00
Matt Ellis
899adfc1b0 More refactoring to use new API 2023-04-26 10:26:06 +03:00
Matt Ellis
23535a6ad5 Remove OptionValueAccessor 2023-04-26 10:26:06 +03:00
Matt Ellis
e8b7f00370 Remove accessor from new API 2023-04-26 10:26:06 +03:00