Commit Graph

50 Commits

Author SHA1 Message Date
340e52019f handle edge case when deleting from buffer: if the previous match is extended into a new match, then replace the old match in the search list with the extended match 2026-02-07 02:25:45 +00:00
02086e0922 code outline of a function to extend an existing match in search-list.sml. 2026-02-06 20:30:07 +00:00
11a632556c progress refactoring delete functions in fcore/normal-mode/make-normal-delete.sml so that searchList is incrementally rebuilt when buffer is deleted from 2026-02-06 09:41:39 +00:00
2ee963a3d8 done implementing tests for yank. Also simplify 'NormalDelete.deleteLineDown' and 'NormalYank.yankLineDown' functions by removing an if-branch which can never trigger. (The code path can only be executed in the event that 'endLineIdx' is on a newline, and there is an if-expression in that branch checking whether 'endLineIdx' is on a newline, which is redundant.) 2026-01-31 22:20:52 +00:00
000cf4ab62 implement 'yj' motion. (Next: add tests for it.) 2026-01-31 12:05:16 +00:00
faa15866f8 seems like 'NormalYankDelete' functions need to yank one character more than the deletion range, so implement that, and make note to add tests for that module 2026-01-23 21:08:12 +00:00
8b46f1edfc make sure that characters sent from RGFW to mlton char callback are shifted if shift is held 2026-01-23 21:05:12 +00:00
238e6f8907 mostly done implementing callbacks for rgfw 2026-01-23 20:53:37 +00:00
a89bb8fa5f consume events in RGFW loop. (Next: react to input events.) 2026-01-23 11:13:33 +00:00
b4573441fb progrfess scaffolding rgfw (next: consume events and add callbacks for events) 2026-01-23 10:55:43 +00:00
d0f9220cfe progress binding RGFW and making RGFW shell 2026-01-22 21:02:22 +00:00
96fe9cea0d update todo.md notes with next steps to focus on 2026-01-20 09:13:03 +00:00
6f89fbc89c begin binding gamepad functions from GLFW to SML 2026-01-19 13:23:47 +00:00
c6dee6e9f9 implement function that deletes from both LineGap.t and SearchList, maintaining an exact match between both 2026-01-18 09:59:00 +00:00
29d84a9f9f done adding tests for 'PersistentVector.delete' function 2026-01-18 08:08:45 +00:00
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
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
08abb43e3b added tests for 'PersistentVector.splitLeft' function 2026-01-16 21:30:56 +00:00
559b254b0c initial implementation of 'PersistentVector.splitLeft' function 2026-01-15 06:13:38 +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
f1dd822d5b add tests for 'yl' motion 2026-01-07 07:52:06 +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
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
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
9e809e146a done adding tests for when cursor is on a space, for 'daw' motion 2025-12-27 02:41:13 +00:00
d1b865bda8 implmenet 'daW' motion (next: test it) 2025-12-13 03:57:21 +00:00
7130fe7dda add tests for 'diW' motion, and fix a bug in the implementation (contiguous spaces were not deleted properly) 2025-12-12 20:08:53 +00:00
11cb00860b reimplemen 'diw' motion to fix failing test 2025-12-12 11:32:03 +00:00
d60e8bf7aa add todo note to implement yh/yj/yk/yl motions (yank according to h/j/k/l motions) 2025-11-23 23:44:24 +00:00
308c28c709 done adding tests for 'dT<char>' motion 2025-10-19 14:52:04 +01:00
0799128f7c add tests for 'dt<char>' motion 2025-10-17 16:24:43 +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>) 2025-10-17 16:19:17 +01:00
52f8e2307c add tests for 'dN' motion 2025-10-16 21:28:18 +01:00
ad506c0c0a add tests for 'dn' motion 2025-10-16 21:21:09 +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) 2025-10-16 15:02:45 +01:00
3e1e80cd93 remove 'dd' tests from todo list, because we already have tests for 'dd' motion 2025-10-16 14:49:27 +01:00
2667e58a26 done adding tests for d^ motion 2025-10-16 13:19:01 +01:00
7676556513 fix failing test for 'd$' motion, which means completing tests for 'd$' motion too 2025-10-16 12:07:27 +01:00
abde4dc8a6 add tests for 'dG' motion 2025-10-16 01:21:30 +01:00
a855cecd25 implement 'dG' motion (need to test it next) 2025-10-16 01:13:14 +01:00
5fcee88911 add tests for 'd0' motion 2025-10-15 22:38:15 +01:00
e1347da0e1 add to-do list of things to do next 2025-10-15 15:29:19 +01:00