Commit Graph

416 Commits

Author SHA1 Message Date
295bdc35cf fix bug where some lines were not scrolling horizontally properly. The issue was that, when encountering a line break in 'skipToFirstVisualColumn' function, we should have recursively called the 'skipToFirstVisualColumn' function instead of the 'build' function. The reason is that our current column after a line break is 0, but we don't know if the start column to display is necessarily 0 in all cases. 2025-09-13 00:14:07 +01:00
b9e2da3ff9 add function to skip to first visible column in TextBuilderWithCursor (sometimes the function is buggy, which I need to fix) 2025-09-13 00:02:44 +01:00
422d6ad9ac fix bugs in implementing and using text buffer. Some functions did not save the drawMsg to the app's state, which we means we didn't draw in those cases. The text builder functions also drew cursors on characters even when the cursor is not at this position. Both of these bugs are fixed. 2025-09-12 23:21:53 +01:00
77a64ae794 previously forgot to draw char in text builder, but we do that now 2025-09-12 14:02:38 +01:00
2ad7623848 fix further compiler errors 2025-09-12 13:47:14 +01:00
052f0efe16 fix compiler errors for normal-move.sml 2025-09-12 13:23:46 +01:00
22752e3602 fix compiler errors in normal-search-finish.sml 2025-09-12 13:02:32 +01:00
504a054df1 fix compiler warniungs in normal-mode/normal-finish.sml, which resulted from reimplementing text-builder functionality 2025-09-12 12:49:19 +01:00
213b023226 fix compiler errors in functions for building search string 2025-09-12 12:22:28 +01:00
de57af242b create text builder function to call for normal mode 2025-09-12 12:05:57 +01:00
67db4804fb implement function to initialise env for text builder 2025-09-12 11:17:11 +01:00
9254fa9f5c create text builder with highlight 2025-09-12 10:42:13 +01:00
b6de188f7d create a separate directory for different text builders 2025-09-12 08:57:17 +01:00
9ec74380c4 fix compiler errors related to new buildTextString implementation 2025-09-12 08:13:18 +01:00
a2c3df65f7 add mutually recursive functions to skip to start of next line in text builder 2025-09-12 08:05:19 +01:00
4fb35d075f done implementing one text builder function 2025-09-12 05:35:49 +01:00
251e7e6962 begin reimplementing TextBuilder functions to use line-wrapping instead of char-wrap 2025-09-12 05:25:57 +01:00
8698333f5b refactor to make sure that we count the visual scroll column on move/delete, in normal mode 2025-09-11 23:43:09 +01:00
ab177dbd7e pull in new version of brolib-sml, which adds a function to retrieve the line number of an index 2025-09-11 18:02:25 +01:00
dfb7ecb867 add new function to calculate the startLine 2025-09-11 17:30:49 +01:00
580f014481 fix getScrollColumn calculation: the right calculation is to subtract the column number by how many columns we can fit 2025-09-11 17:09:43 +01:00
77439acef6 add function to get the appropriate scroll column 2025-09-11 16:17:56 +01:00
e85ac5e806 add visualScrollColumn' field to app type, which will record the scroll position for us 2025-09-11 15:26:30 +01:00
5e7f311dc7 in ffi, enable GL_DEPTH_TEST and also clear the GL_DEPTH_BUFFER_BIT on each frame; I forgot this before, but it is essential for proper depth testing/layering 2025-09-11 02:43:13 +01:00
4744d9bfa8 pull in new version of cozette-sml, which had a buggy version of the glyph 0 before 2025-09-11 02:15:54 +01:00
bf18e143c7 refactor text builder to use z-index for creating text vector 2025-09-11 02:02:41 +01:00
0f78a25382 add z-index parameter to cursors, and refactor code to use them 2025-09-11 01:53:13 +01:00
2e0f749229 adjust imperative shell to use xyz coordinates for position, instead of simply xy; need to ensure the functional core code outputs a vector in this format too 2025-09-11 01:43:23 +01:00
781691060c begin refactoring code to use a single vertex buffer for all shapes 2025-09-11 01:31:19 +01:00
62e5777f75 pull in update to cozette-vector, which will allow us to use the z-index for layering shapes below/on top of each other 2025-09-10 12:30:10 +01:00
fee8ba5207 set preemptive scheduling time to change threads every 555 microseconds, instead of every 20 milliseoncds (which was the default) 2025-09-10 01:58:35 +01:00
95a07bcd92 rename 'UpdateThread' structure to 'Updater', because it is no longer a separate thread 2025-09-10 01:44:25 +01:00
6961a76471 done merging draw thread with update thread 2025-09-10 01:41:59 +01:00
dc3009bf54 create separate mailbox structures for draw and input messages, because our plan is to: 'handle input + drawing on a single thread' 2025-09-10 01:04:56 +01:00
0a0f723b9b add '<count>yx' function to both yank and delete a specified character 2025-09-07 23:39:33 +01:00
fd303c0f7d reimplement part of 'deleteToEndOfLine' function in make-normal-delete.sml, so that it doesn't rely on the 'helpRemoveChr' function, and so we can delete the 'helpRemoveChr' function. 2025-09-07 23:24:31 +01:00
494c702ab6 add commends to clarify 'removeChr' logic. 2025-09-07 23:06:52 +01:00
e2acdd90f4 new implementation for removing characters with 'x', which is simpler than previous implementation as well 2025-09-07 22:30:39 +01:00
a037211763 add a new test validating that the cursor does not move when cursor is on an empty line 2025-09-07 21:09:20 +01:00
11212430f4 fix bug with ViDlrDfa.next: we previously did not consider the case of cursor starts on a line containing nothing but a blank \n newline. We consider this now, returning the same index when it occurs. 2025-09-07 20:59:13 +01:00
b7e0bab04a modify dedent functionality to support dedenting multiple lines, acting on count parameter 2025-09-07 15:12:34 +01:00
345801ea08 implement indenting for multiple lines, using the 'count' parameter 2025-09-07 14:34:00 +01:00
f7960efab1 add dedent functionality 2025-09-07 14:03:31 +01:00
299735f500 only update search list if timestamp for search message is greater than the buffer's modified time 2025-09-07 13:37:14 +01:00
f3c1905c0c when constructing SEARCH message, include time in the message as well. This will enable us to ignore any messages when we have a 'later' state available. 2025-09-07 13:24:41 +01:00
89c4e85c98 add indent-line functionality 2025-09-07 13:13:00 +01:00
9ba3e8464b add backtract functionality for range search as well 2025-09-06 23:05:11 +01:00
435c520955 add backtracking functionality to search; when we find a partial but incomplete match, we want to start looking for a match from ('idx + 1'), where 'idx' is the index we started this failed search at. 2025-09-06 22:53:07 +01:00
8d241366a1 handle edge cases in line-break removal function ('J' command). If the newline we find is the last character in the file, we don't delete it, because of Unix convention that text files always end with newlines. 2025-09-06 10:05:06 +01:00
764c5367eb remove unneeded todo comment 2025-09-06 04:53:08 +01:00