f9f602bb9f
add function to split left side of tree, given an index
Humza Shahid2025-10-23 06:23:30 +01:00
7c9d47346e
begin implementing clojure-style vector first as a rope implementation of radix-relaxed balanced trees
Humza Shahid2025-10-23 05:11:57 +01:00
995ee01470
begin adding tests for 'diw' (delete-inside-word) motion
Humza Shahid2025-10-19 21:55:55 +01:00
7d1272180b
remove 'Cursor.tillPrevChr', replacing usages of that function with 'Cursor.toPrevChr'
Humza Shahid2025-10-19 14:30:26 +01:00
60ec24453f
reimplement 'yt<char>' motion to use 'Cursor.toNextChr'
Humza Shahid2025-10-18 19:55:53 +01:00
9f53c5549a
rename 'Cursor.toNextChrNew' function to 'Cursor.toNextChr', and update usages to change the name as well.
Humza Shahid2025-10-18 15:17:26 +01:00
e07f21d6f4
remove usages of 'Cursor.toNextChr' and delete it
Humza Shahid2025-10-18 15:14:41 +01:00
ee96419901
repace usage of 'Cursor.toNextChr' with 'Cursor.toNextChrNew' ins make-normal-delete.sml
Humza Shahid2025-10-18 15:07:14 +01:00
bc44c7bcd0
add another test for 'df<char>' motion, checking that we leave a newline behind if the whole buffer is deleted
Humza Shahid2025-10-18 14:29:20 +01:00
5d00da2cbb
reimplement 'df' motion as per previous commits, and add a new test for 'df' motion to check that cursor does not land on a 'newline following a non-newline' position, after deleting using 'df<char>'
Humza Shahid2025-10-18 14:24:16 +01:00
239aaacfc5
reimplement 't' movement motion the same way that 'f' movement motion was reimplemented in previous commit
Humza Shahid2025-10-18 14:05:25 +01:00
e44eae6d46
reimplement 'f' move motion more efficiently, not leaving the LineGap.t data structure while iterating to next count
Humza Shahid2025-10-18 14:01:06 +01:00
597b5beb3d
add tests (some of Which currently fail) for 'dF<char>' motion
Humza Shahid2025-10-18 13:37:42 +01:00
05961a460c
adjust colours to be same as 'morning' theme in neovim
Humza Shahid2025-10-17 23:37:09 +01:00
111e0cf66d
remove usage of concurrent ml, deciding that we prefer to run everything in the main thread instead
Humza Shahid2025-10-17 23:08:16 +01:00
b8beeaaa60
add some more tests for 'df<char' motion, and fix implementation to pass those tests (if our cursor is at the same position after calling 'fMove', then exit the loop to find the next occurrence of <char>)
Humza Shahid2025-10-17 16:19:17 +01:00
09c9a92029
add tests for 'df<char>' motion. Some fail and need the implementation to be fixed.
Humza Shahid2025-10-17 15:56:08 +01:00
c4c6634d79
add 'D' motion, which does the same thing as 'd$' (these two aliases exist in Vim too, to do the same thing)
Humza Shahid2025-10-16 15:02:45 +01:00
3e1e80cd93
remove 'dd' tests from todo list, because we already have tests for 'dd' motion
Humza Shahid2025-10-16 14:49:27 +01:00
a28e099b6f
add another test for 'd^' motion, that we don't delete anything when cursor is on a newline (this one passes but it is an important case to test)
Humza Shahid2025-10-16 13:22:34 +01:00
7676556513
fix failing test for 'd$' motion, which means completing tests for 'd$' motion too
Humza Shahid2025-10-16 12:07:27 +01:00
f804a2a9fc
add tests for 'd$' motion, including one failing test whose implementation needs to be fixed
Humza Shahid2025-10-16 12:02:20 +01:00
c2eaa5537c
modify 'd$' implementation to pass failing test (we don't want to delete newline at end of line, so we don't do that now)
Humza Shahid2025-10-16 11:09:20 +01:00
999a35cb8b
fix failing test for 'dge' motion: if the deletion takes us to a newliune that follows a non-newline-character, we should decrement the cursor to be on the non-newline-character
Humza Shahid2025-10-14 12:31:18 +01:00
d73959ce9b
find failing test case for 'dge' motion (deletion works as expected, but cursor is at wrong place)
Humza Shahid2025-10-14 12:21:23 +01:00
03c3bd310b
add an additional test for 'dge' motion
Humza Shahid2025-10-14 12:16:18 +01:00
22a8b807d2
handle edge case when building dfa from a string, where an exception was raised when our search regex contains an alternation where the second alternation is a substring of the first alternation, and add a test for it to make sure that it passes
Humza Shahid2025-10-14 02:24:45 +01:00
be7a9b3035
add minimal modifications to implementation of 'dge' motion, so that failing test for 'dge' motion passes
Humza Shahid2025-10-13 22:08:33 +01:00
8e56eb7628
begin adding tests for 'dge' delete motion (one test currently fails)
Humza Shahid2025-10-13 22:03:49 +01:00
478a2e5002
add some more tests from freeCodeCamp tutorial
Humza Shahid2025-10-11 14:27:56 +01:00
7f1f1f7bdc
at end of char loop, track if length of dstate changed. If it did not, that means that we have encountered a loop that is at the end; thus, we should add the endMarker
Humza Shahid2025-10-11 13:39:28 +01:00
b2931753d0
make dfa-gen.sml compile again, with parity before reimplementing it
Humza Shahid2025-10-11 13:23:44 +01:00
96f0afc2b2
attempt at fixing dfa-gen to convert properly
Humza Shahid2025-10-11 11:32:30 +01:00
a44afca40b
checkpoint for reimplementing dfa-gen.sml
Humza Shahid2025-10-10 11:54:34 +01:00
244d0ce26d
begin attempt to compute followpos properly
Humza Shahid2025-10-10 04:44:18 +01:00
bdfca17b5a
implement function to insert a list to a pos
Humza Shahid2025-10-10 04:00:34 +01:00
58c3e65fdd
add list of follows to leaves in regex parse tree (only changed data type; need to populate follows list later)
Humza Shahid2025-10-10 03:49:09 +01:00
108a30ea79
add utility function to insert from a list into a set
Humza Shahid2025-10-10 03:29:52 +01:00
88eb30dbf2
done caching firstpos and lastpos, and using the cached data
Humza Shahid2025-10-10 01:56:54 +01:00
6e646bdffa
begin computing firstpos and lastpos during parsing
Humza Shahid2025-10-10 01:43:24 +01:00
90327579d1
find failing test in regex: 'go*' does not match phrase 'gut feeling'. It should match the first character because the 'o' is optional, but the * acts like + instead, expecting at least one 'o'
Humza Shahid2025-10-09 22:46:06 +01:00
70215fbc0a
done implementing functionality to get PersistentVector.prevMatch working. We use the call stack to try the node at the previous index if we receive an invalid state from the recursive call.
Humza Shahid2025-10-08 11:10:06 +01:00
088c5c3d98
checkpoint while implementing prevMatch functionality
Humza Shahid2025-10-08 10:39:49 +01:00
0de7a9278a
progress implementing help-prev-match for vector
Humza Shahid2025-10-08 10:27:19 +01:00
3b823d7ae6
delete 'nextMatch' function in search-list.sml, and refactor other code to use alternative function
Humza Shahid2025-10-08 08:16:20 +01:00
8941ce9f89
reimplement functionality to search forwards using 'n' command
Humza Shahid2025-10-08 08:10:51 +01:00
108e021fdb
log an exception if search-thread encounters a failure
Humza Shahid2025-10-08 06:51:52 +01:00
ec62efb40c
add 'textLength' value to line_gap.sml's string_iterator, and remove function to check if iterator is t end
Humza Shahid2025-10-08 06:49:39 +01:00
4d1b2073dc
reimplement functionality to run whole text search using DFA
Humza Shahid2025-10-08 06:40:20 +01:00
3c2e5812cd
reimplement function to search through text from scratch
Humza Shahid2025-10-08 06:35:49 +01:00
1d6213636e
add function to line_gap.sml to check if iterator is at end
Humza Shahid2025-10-08 06:24:40 +01:00
7248a3e27f
add function to get a char from a string_iterator in line_gap.sml
Humza Shahid2025-10-08 06:17:01 +01:00
3345f618ca
progress making string iterator for line_gap.sml
Humza Shahid2025-10-08 06:12:40 +01:00
5c8e74ac11
change type of SEARCH message to take a DFA, instead of a searchString
Humza Shahid2025-10-08 05:54:19 +01:00
06106f5de8
remove 'searchString' field from app_type, because the same role is fulfilled by new 'dfa' field
Humza Shahid2025-10-08 05:40:29 +01:00
df346d0a9e
add ability to switch to case-sensitive-search-mode using '?' command from normal mode
Humza Shahid2025-10-08 05:29:05 +01:00
8857f49537
pass DFA to 'SearchList.buildRange' function, so that we don't need to parse search string into DFA each time
Humza Shahid2025-10-08 05:20:33 +01:00
fd8385fa81
add dfa field to app_type so that we don't rebuild DFA each time we want to execute a search again (like after deleting)
Humza Shahid2025-10-08 05:02:15 +01:00
7f68084398
add 'caseSensitive' field to NORMAL_SEARCH_MODE, so that we know what kind of DFA to build
Humza Shahid2025-10-08 04:53:04 +01:00
7a72bc2ed1
done with allowing different types of endMarkers
Humza Shahid2025-10-07 14:44:40 +01:00