|
|
185ef3fc12
|
done implementing 'PersistentVector.merge', which means that 'PersistentVector.delete' is now complete. (Todo: test 'PersistentVector.delete'.)
|
2026-01-18 06:58:41 +00:00 |
|
|
|
79a0c95a58
|
implement another case for 'PersistentVector.merge': merge when right depth is greater than left depth
|
2026-01-18 06:52:49 +00:00 |
|
|
|
7b05490812
|
progress implementing 'PersistentVector.merge' for case where left subtree and right subtree have same depth
|
2026-01-18 06:40:22 +00:00 |
|
|
|
66d672505a
|
fix calculation of number to decrement by in 'PersistentVector.delete', after additional test showed that calculation resulted in incorrect metadata. (Todo: just implement function to merge left and right subtrees.)
|
2026-01-18 00:27:03 +00:00 |
|
|
|
83bb852ae2
|
add another test for 'PersistentVector.delete
|
2026-01-17 23:45:20 +00:00 |
|
|
|
1c947eab7d
|
add a test for 'PersistentVector.delete' (even though the 'PersistentVector.merge' helper function is unimplemented)
|
2026-01-17 23:27:36 +00:00 |
|
|
|
ee58556bde
|
progress implementing 'PersistentVector.delete'. (Todo: implement function to merge left and right vectors.)
|
2026-01-17 23:14:05 +00:00 |
|
|
|
b84713a98e
|
add 'PersistentVector.countDepth' function, which is meant to count the depth, and is to be used for deletion
|
2026-01-17 22:51:06 +00:00 |
|
|
|
4280f580a2
|
add function to decrement persistent-vector.sml. (The plan is to split the left and right, and then decrement the right metadata so that the absolute indices match.)
|
2026-01-17 22:46:08 +00:00 |
|
|
|
98ec1fbee6
|
fix another size-recalculation mistake in 'PersistentVector.splitRight' function. (When we are splitting in the middle of a BRANCH, we want to subtract the old child size from the remainder, and then add the new child size to the remainder, because this calculation will account for the splitting of preceding elements.)
|
2026-01-16 22:40:38 +00:00 |
|
|
|
e52d4856ee
|
amend recalculation of size metadata in 'PersistentVector.splitRIght: we always want to decrement by prevSize in this function. (We will have another function call to decrement so that left split and right split represent the same absolute indices when they are joined, before they are split.)
|
2026-01-16 22:31:43 +00:00 |
|
|
|
ddcb0ea56d
|
finish initial implementation for 'PersistentVector.splitRight'
|
2026-01-16 22:16:44 +00:00 |
|
|
|
eb316d7be2
|
begin implementation of PersistentVector.splitRight function
|
2026-01-16 21:58:59 +00:00 |
|
|
|
08abb43e3b
|
added tests for 'PersistentVector.splitLeft' function
|
2026-01-16 21:30:56 +00:00 |
|
|
|
47cf451501
|
begin adding tests for 'PersistentVector.splitLeft' function
|
2026-01-16 21:16:23 +00:00 |
|
|
|
e0bebb6d1a
|
add tests checking that PersistentVector.toList works as expected
|
2026-01-15 13:20:45 +00:00 |
|
|
|
290cc65a52
|
add tests checking that persistent-vector.sml appends properly, as it is meant to
|
2026-01-15 13:03:23 +00:00 |
|
|
|
ac3b987c42
|
add boilerplate helper functions in persistent-vector-tests.sml to check if list contains indices that are in range, or are not in range
|
2026-01-15 12:49:02 +00:00 |
|
|
|
ef43efb680
|
rename some test files
|
2026-01-15 12:32:13 +00:00 |
|
|
|
2058a57026
|
add functions for testing persistent-vector.sml
|
2026-01-15 07:16:04 +00:00 |
|
|
|
559b254b0c
|
initial implementation of 'PersistentVector.splitLeft' function
|
2026-01-15 06:13:38 +00:00 |
|
|
|
79fda65f78
|
begin coding 'PersistentVector.splitLeft' function
|
2026-01-15 05:51:22 +00:00 |
|
|
|
267c0c5d96
|
change persistent-vector.sml's 'prevMatch' function to use rope-like metadata, and remove dead code
|
2026-01-15 05:39:55 +00:00 |
|
|
|
d6da7a3ea3
|
persistent-vector.sml was in a partial state where some functions use rope-like metadata and some functions do not, so change 'nextMatch' function to use rope-like metatadata (still need to change other functions)
|
2026-01-15 05:25:17 +00:00 |
|
|
|
e1077b7780
|
add tests for 'yk' motion (next: implement 'yj' motion and test it)
|
2026-01-14 04:49:41 +00:00 |
|
|
|
66f1fb0b5e
|
implement 'yk' motion (next: add tests for it)
|
2026-01-13 23:54:48 +00:00 |
|
|
|
e37e04a2a2
|
rename 'NormalDelete.deleteLineBack' function to 'NormalDelete.deleteLineUp' which is clearer ('k' in 'dk' motion means move cursor up one line)
|
2026-01-13 23:40:29 +00:00 |
|
|
|
f1dd822d5b
|
add tests for 'yl' motion
|
2026-01-07 07:52:06 +00:00 |
|
|
|
407f78ce7a
|
fix bug in 'NormalYank.yankRight' function. Instead of calling 'Int.max (endOfLineIdx, high)', we should call 'Int.min (endOfLineIdx, high)' because we are trying to get the smaller number, and not the largest.
|
2026-01-07 06:55:42 +00:00 |
|
|
|
cc4716f3db
|
refactor fcore/normal-yank.sml a bit (replace repeated logic with a function call)
|
2026-01-07 06:49:52 +00:00 |
|
|
|
8b0031ca71
|
add tests for 'yh' motion
|
2026-01-07 06:33:10 +00:00 |
|
|
|
adb8757ed8
|
implemented 'yh' motion (yank left)
|
2026-01-05 10:39:42 +00:00 |
|
|
|
d2f32c1512
|
add tests for 'da<symbol>' motion, finishing all delete-tests
|
2026-01-03 08:39:41 +00:00 |
|
|
|
210d535b9f
|
reimplement 'da<symbol>' motion to first check if it is inside a symbol-pair, just like 'di<symbol>' was reimplemented in recent commits
|
2026-01-03 08:36:07 +00:00 |
|
|
|
ba6798f476
|
make implementation of 'di<symbol>' more robust (we check if the cursor is inside a symbol-pair before checking if there is a symbol pair after the cursor), and add tests for 'di<symbol>' motion
|
2026-01-03 08:09:08 +00:00 |
|
|
|
bce2a5a22d
|
finish reimplementing 'di<symbol>' and 'da<symbol>' motions so that they align more closely with the behaviour of Vim. (Todo: test them next)
|
2026-01-02 20:07:36 +00:00 |
|
|
|
886f384490
|
when deleting inside pair, instead of searching either for either chr1 or chr2 and stopping at first match, search instead for openChr and closeChr, and keep an integer tracking what level of nesting we are at. This gives us the behaviour we want, which is to delete the pair at the correct level of nesting. When we encounter openChr, we increment the nesting counter by 1 and continue searching. When we encounter closeChr, if the nesting counter is 0, we return the current index, but if the nesting counter is higher than 0 when encounter closeChr, we decrement the nesting counter by 1 and continue searching.
|
2026-01-02 18:50:04 +00:00 |
|
|
|
37b6f6ab0a
|
implement function which searches for one of two chars (given as arguments) and returns the index, or ~1 if neither char is found
|
2026-01-02 18:12:59 +00:00 |
|
|
|
8fdf2411a8
|
add tests for 'd/home/humza/Downloads/sml/shf/todo.md' motion
|
2026-01-01 18:47:38 +00:00 |
|
|
|
54ef305314
|
reimplement d% motion so that it first searches for the next occurrence of a pair-character before trying to match it. (Next: add tests for d% motion.)
|
2026-01-01 07:05:06 +00:00 |
|
|
|
44dbe1ffb0
|
reimplement '/home/humza/Downloads/sml/shf/todo.md' motion so that it has the same behaviour as Vim. (If the cursor is not at a pair character, then check after the cursor to see if we find a pair-character there. If some location after the cursor has a pair-character, then move the cursor to it and find the pair of the character, if any.)
|
2026-01-01 06:58:30 +00:00 |
|
|
|
a65b950b77
|
add tests for 'daW' motion
|
2025-12-31 11:44:42 +00:00 |
|
|
|
99bb3b257e
|
done with delete-around-word ('daw') tests. Next: delete-around-WORD ('daW') tests.
|
2025-12-28 01:37:29 +00:00 |
|
|
|
6efce2dd67
|
make 'dW' motion use transition function that is specific for deleting, and add a test to ensure that 'dW' does not delete a newline when it is not on a newline character
|
2025-12-27 09:45:11 +00:00 |
|
|
|
5c5910f748
|
change vi-caps-word-dfa.sml to regard newlines as final states, as with vi-word-dfa.sml in previous commit
|
2025-12-27 09:35:32 +00:00 |
|
|
|
1df0952f08
|
implement the difference between the 'w' motion and 'dw' motion using the transition table in vi-word-dfa, rather than convoluted if-branching
|
2025-12-27 08:42:54 +00:00 |
|
|
|
742b571b4e
|
amend 'dw' motion in line with previous commit
|
2025-12-27 07:32:22 +00:00 |
|
|
|
9846750c51
|
change implementation of 'word' so that we stop at newlines when we press 'w' motion, like in Vim and add tests to verify this behaviour (todo: fix regressions in deletion tests)
|
2025-12-27 06:05:36 +00:00 |
|
|
|
9e809e146a
|
done adding tests for when cursor is on a space, for 'daw' motion
|
2025-12-27 02:41:13 +00:00 |
|
|
|
acabbac70a
|
add another test for 'daw' motion
|
2025-12-27 02:22:32 +00:00 |
|