fe9048299b
add tests for 'df<char>' motion, uncover bug found by test where new match was not recognised after deletion if match involved last character in buffer, and fix that bug by checking (in fcore/search-list/search-list.sm) if we are at a dead state before we check if we are in the last index of the buffer
Humza Shahid2026-04-24 16:29:16 +01:00
504b5309f4
extract dfa generator to a separate file in repository root, so that it could be reused
Humza Shahid2026-04-24 01:28:10 +01:00
b6c5a95b66
remove some submodules, replacing them with hardcoded paths instead
Humza Shahid2026-04-23 23:40:14 +01:00
d25c42f9f0
done adding search-list related tests for 'dN' motion
Humza Shahid2026-04-01 23:49:30 +01:00
9d46ec9f34
add additional test for 'dn' motion after finding bug, fixed bug (rewrote high-level delete fundtion in persistent-vector.sml to address it), and begin adding tests for 'dN' motion
Humza Shahid2026-03-28 00:45:08 +00:00
756f44e7f8
add tests for 'd$' motion, and fix bug. When we are extending an existing match and reached the last index of the buffer, we used to return the searchList right away. However, we are meant to add the extended match before returning the searchList. We do this now, and the bug is fixed.
Humza Shahid2026-02-10 09:56:35 +00:00
bb4d1d318e
add a couple of more tests asserting searchList state after deletion
Humza Shahid2026-02-08 10:13:30 +00:00
6c1e5777d1
begin adding tests for how searchList should be after a deletion
Humza Shahid2026-02-08 09:54:39 +00:00
3b21025dbc
expand plan for addressing to-do list in todo.md a bit
Humza Shahid2026-02-08 03:21:34 +00:00
33866533a3
address remainning todo-notes, which had to do with updating the searchList when we insert into a buffer.
Humza Shahid2026-02-08 03:17:19 +00:00
c28ae4d8cd
code function that can insert into both searchList and buffer
Humza Shahid2026-02-08 02:32:32 +00:00
1fa2a44a2f
progress addressing to-do notes in fcore/normal-mode/make-normal-delete.sml, although some notes are still left. The notes that have been addressed involved cases where we create a new buffer containing just a newline, because all of the text in the buffer has been deleted otherwise. In this case, we call 'SearchList.build' and build the search-list from scratch, which is fast because only one character needs to be checked.
Humza Shahid2026-02-08 02:16:48 +00:00
0c40cad77a
done replacing direct calls to 'LineGap.delete' with calls to 'SearchList.deleteBufferAndSearchList', so that the search list is also deleted from whenever the buffer is deleted from
Humza Shahid2026-02-07 22:27:44 +00:00
9b520d71f5
pull in new brolib-sml changes, which fixes a minor bug in the 'LineGap.lineNumberToIdx' function. That function tried to index into a vector immediately when the metadata indicated the current node is at the correct line number, without checking if the relevant line break is at the current node. We perform this check first, and continue going leftwards until we find the line break if the relevant line break is not at the current node.
Humza Shahid2026-02-07 03:10:23 +00:00
fd96032949
fix bug in line_gap.sml: when we convert a line number to an absolute index and travel leftwards, make sure we continue travelling leftwards when the current node is at the correct line number but the line number does not start at this node.
Humza Shahid2026-02-07 03:04:49 +00:00
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
Humza Shahid2026-02-07 02:25:45 +00:00
68be55342d
fix failing test for 'PersistentVector.extendExistingMatch'. The test itself was wrong, as it forgets that lists are 0-indexed.
Humza Shahid2026-02-07 01:40:43 +00:00
7fa573334f
add failing test for PersistentVector.extendExistingMatch. (Need to fix.)
Humza Shahid2026-02-07 00:33:29 +00:00
0ea0d44da3
add function to extend an existing match, and add tests for it
Humza Shahid2026-02-07 00:29:58 +00:00
b02b2f53da
when deleting from buffer and search list both, don't try to find any matches if the DFA is empty (has a length of 0), because that means there is no search to find a match for
Humza Shahid2026-02-06 21:25:44 +00:00
2292c30cd3
bookmark checkpoint in refactoring code to call funhction which deletes from both (searchList and buffer), instead of just deleting buffer
Humza Shahid2026-02-06 20:43:47 +00:00
02086e0922
code outline of a function to extend an existing match in search-list.sml.
Humza Shahid2026-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
Humza Shahid2026-02-06 09:41:39 +00:00
9c66c3f5e8
progress in changing functions to use 'PersistentVector.delete' so that search list is incremental and not rebuilt from scratch after each deletion
Humza Shahid2026-02-06 08:57:18 +00:00
df7669b065
progress in changing functions to use 'PersistentVector.delete' so that search list is incremental and not rebuilt from scratch after each deletion
Humza Shahid2026-02-06 08:52:11 +00:00
c856f49a6c
amend merge function from persistent-vector.sml. If we reach the same depth and find that there is no space, then climb (using the stack) up by one depth, raise the depth of the smaller node by 1, and merge there. This helps ensure balance. Before, we broke a LEAF into two LEAF objects if we wanted to merge and found that there was no room, but that led to balancing problems, which are addressed by this change.
Humza Shahid2026-02-05 23:54:31 +00:00
0f907769e3
add a function to persistent-vector.sml to check if all leaves are at the same depth (which is how we want to balance)
Humza Shahid2026-02-05 20:39:01 +00:00
1f2af6aacd
amend implementation of 'yw' so that we do not yank newline following last word in line, if we are trying to yank last word
Humza Shahid2026-02-04 10:12:04 +00:00
83c660818e
begin adding tests for 'yw' yank motion
Humza Shahid2026-02-04 09:26:57 +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.)
Humza Shahid2026-01-31 22:20:52 +00:00
c0d4155808
adjust 'NormalYank.yankLineDown' function to pass failing test
Humza Shahid2026-01-31 21:53:32 +00:00
ef9da12a0b
begin adding tests for 'yj' motion, based on tests for 'dj' motion
Humza Shahid2026-01-31 21:18:21 +00:00
900343203a
enable vsync in rgfw shell, to majorly decrease cpu usage
Humza Shahid2026-01-23 23:20:40 +00:00
fdc289e237
change use of 'Bool' type to 'bool' in rgfw-exports.c
Humza Shahid2026-01-23 21:19:10 +00:00
00df20042a
update gitignore to ignore shf-glfw and shf-rgfw test files
Humza Shahid2026-01-23 21:10:01 +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
Humza Shahid2026-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
Humza Shahid2026-01-23 21:05:12 +00:00
2b383ce756
change if statement in keyCallback (on C side) to a switch statement, so adding more cases becomes easier
Humza Shahid2026-01-23 15:09:43 +00:00
0b91362fd1
fix compile error for rgfw shell. The compile error was on the C side, and was caused by a dependency (<GL/glx.h>) having the typedef 'Bool', and the mlton-generated export headers also having a typedef 'Bool' with the same name. The solution for this project is just to delete the typedef from the mlton-generated headers.
Humza Shahid2026-01-23 14:56:55 +00:00
8d68bcbd13
remove duplicate '<stdboo.h>' include in ffi/glfw-export.c, and disambiguate mlton-generated export file for GLFW shell further (by prepending 'mlton-' to the file)
Humza Shahid2026-01-23 13:37:13 +00:00
a8f69bec06
disambiguate exports (rename 'export.h' to 'glfw-export.h' because now we are beginning to add RGFW as a back-end with its own separate exports)
Humza Shahid2026-01-23 13:10:34 +00:00
e18032dcc8
checkpoint (seem to have encountered an FFI bug?)
Humza Shahid2026-01-23 12:52:47 +00:00
609c30bef5
mark 'Rgfw.swapBuffers' as reentrant, because calling this function will likely trigger the registered key callbacks
Humza Shahid2026-01-23 11:16:14 +00:00
a89bb8fa5f
consume events in RGFW loop. (Next: react to input events.)
Humza Shahid2026-01-23 11:13:33 +00:00
b4573441fb
progrfess scaffolding rgfw (next: consume events and add callbacks for events)
Humza Shahid2026-01-23 10:55:43 +00:00
df20641af1
refactor functional core into its own .mlb file that can be shared across different shells
Humza Shahid2026-01-23 10:08:57 +00:00
13d4989792
additional scaffolding for making RGFW main loop
Humza Shahid2026-01-23 10:04:44 +00:00
dee5e72f39
add rule to Makefile to run RGFW build more quickly
Humza Shahid2026-01-22 21:38:15 +00:00
d0f9220cfe
progress binding RGFW and making RGFW shell
Humza Shahid2026-01-22 21:02:22 +00:00
e0c09c5480
begin adding bindings to rgfw window library
Humza Shahid2026-01-22 02:00:57 +00:00
5eb94f5ccb
remove shell/shell.sml and merge its contents into shell/glfw-loop.sml, because shell.sml used to set up and initialise GLFW before calling the main loop. We may want to add additional back-ends later instead, so it's better to keep names specific to the windowing library or platform.
Humza Shahid2026-01-22 00:57:21 +00:00
9ef8231b8b
separate OpenGL drawing from GLFW loop in imperative shell, so that other windowing libraries can call the same OpenGL functions.
Humza Shahid2026-01-22 00:04:22 +00:00
2d1bcf28f7
progress reimplementing gamepad support
Humza Shahid2026-01-21 21:03:20 +00:00
50868b830b
implement actions for TRIANGLE mode in glfw-gamepad.sml
Humza Shahid2026-01-21 20:50:04 +00:00
0679f4154e
begin refactoring shell/glfw-gamepad.sml. (Most functions inside that file are pure now, and I think a 'modal' approach to the face buttons would be better/more ergonomic.)
Humza Shahid2026-01-21 20:38:13 +00:00
96fe9cea0d
update todo.md notes with next steps to focus on
Humza Shahid2026-01-20 09:13:03 +00:00
755d69675f
fix how l1 and r1 buttons should be handled (previously, we weren't saving the relevant state to true when they were pressed, but now we are)
Humza Shahid2026-01-20 08:02:14 +00:00
ff33812b27
done with handling for gamepad's face buttons; next, handle r2 and l2 buttons
Humza Shahid2026-01-20 07:56:04 +00:00