Commit Graph

753 Commits

Author SHA1 Message Date
4d77aed6ef done refactoring tests 2025-08-20 13:50:57 +01:00
0dd7a69777 propagate 'time' value throughout normal mode updating 2025-08-20 13:12:07 +01:00
f97a2944ae pass time parameter in normal-delete.sml 2025-08-20 13:00:36 +01:00
c4f3e921a3 formating 2025-08-20 12:51:31 +01:00
c21d1b8205 progress fixing compile errors resulting from adding 'bufferModifyTime' field (fixed normal-mode move expressions) 2025-08-20 12:50:39 +01:00
642814fb36 begin adding a 'bufferModifyTime' field to the app_type (lots of refactoring to do now) 2025-08-20 12:17:07 +01:00
cdc8c0c734 more updates from cozette-sml 2025-08-18 03:35:57 +01:00
714558a739 pull in further updates from cozette-sml librarfy 2025-08-18 03:30:28 +01:00
023136516e pull new version of cozette library, which fixes some odd-looking letters (lower-case-t, lower-case-j, upper-case-x) 2025-08-18 02:59:50 +01:00
41153c32a1 create new rect which is adapted to new text, and use it in text-builder.sml 2025-08-18 02:39:56 +01:00
af15b97400 pull in new version of cozette-ascii library, and fix resulting compile errors (which all occurred in text-builder.sml) 2025-08-18 02:17:13 +01:00
850d3b7bcb done refactoring one text builder loop 2025-08-17 19:32:46 +01:00
845605aa48 fix compile error in make-text-builder.sml 2025-08-17 17:30:51 +01:00
3e67d90512 progress functorising text builder 2025-08-17 17:15:15 +01:00
28593486ed refactor command-parsing code for normal mode, so that non-character events (KEY_ESC, RESIZE_EVENT, WITH_SEARCH_LIST) are dealt with at the beginning, and that the remainder of the parsing code looks at the current string and the new character typed. This is safe because pattern matching on the other commands (KEY_ESC, RESIZE_EVENT, WITH_SEARCH_LIST) always calls the same functions. 2025-08-08 23:23:40 +01:00
3b8faf28e4 add d% motion for deleting a matching pair 2025-08-08 07:30:39 +01:00
f848d4f301 done implementing 'deleteInside' and 'deleteAroundd' commands 2025-08-07 23:33:40 +01:00
5236579cd5 extract some more common code (which was used in many delete functions) into its own function 2025-08-07 19:31:34 +01:00
0fd63fe82f extract a function which has commonly used code 2025-08-07 19:17:47 +01:00
1bdf8e457b implement 'deleteInside' motions 2025-08-07 19:12:01 +01:00
b6960f4c68 implemented 'diw' and 'diW' commands for deleting inside a word or WORD 2025-08-07 18:33:03 +01:00
c6f40ba9a0 remove unnecessary linebreak 2025-08-07 18:12:27 +01:00
14f97ecc57 done refactoring normal mode functions 2025-08-07 18:09:52 +01:00
f63e416e8f move normal-mode deletion functions to their own file 2025-08-07 18:02:47 +01:00
85c0b09d26 put cursor-movement functions in their own file 2025-08-07 17:57:47 +01:00
bc188b9175 begin refactoring (split app-update into different files) 2025-08-07 17:41:10 +01:00
73affaa83a instead of clearing the search list when we delete, build a small part of it by searching through a small part that is likely to be visible on the user's screen, which gets rid of flickering effect and makes it look like the search list is not rebuilt from scratch 2025-08-07 15:37:32 +01:00
27c5d11dd7 code functions to build search list from a range in the buffer (not searching for every single match, but searching for visible matches on user's window) 2025-08-07 15:28:29 +01:00
30036177fb remove calls to retrieve 'lineIdx' values which are never used 2025-08-07 14:42:40 +01:00
752bb4d00f don't return (buffer, searchList) tuple when building search list, but only return search list itself. (No point returning buffer as it is never modified or moved.) 2025-08-07 14:40:14 +01:00
da2d2f1b55 add functionality to delete to/until prev match 2025-08-07 13:37:03 +01:00
5d6dbb0403 add functions to move to prev/next match 2025-08-07 13:22:10 +01:00
268fd47d7e add functions to help find previous/next match in the search list 2025-08-07 13:12:04 +01:00
704854c80f use concurrency for rebuilding search list after deletion so we don't block main thread on very, very large files 2025-08-07 12:20:57 +01:00
fab8cfcf20 change representation of search list to be a plain int vector and not a zipper (I am not using it for incremental purposes anyway so no point using a zipper) 2025-08-06 00:42:24 +01:00
e06a27d5ad delete some dead code 2025-08-06 00:30:50 +01:00
f0f28a1318 clean up some dead code 2025-08-06 00:16:50 +01:00
faa55abd3d remove some dead code 2025-08-05 23:58:54 +01:00
3de64ba428 receive bug fixes in brolib/src/line_gap.sml 2025-08-05 16:20:19 +01:00
0729662eef minor formatting changes to exception logging, and begin building from new search list functionality as well 2025-08-05 13:59:10 +01:00
01369627bf begin reimplementing search list data structure 2025-08-05 13:24:55 +01:00
7dbd37a65b refactor text builder a bit (I should probably functorise buffer/lineGap iteration code out at some point) 2025-08-04 12:57:22 +01:00
a4ac1b9ae0 add function for testing search-list.sml 2025-08-04 12:08:35 +01:00
f2f93c5760 address bug in text-window.sml: if we want to call getStartLineAfter, then always pass in a positive number 2025-08-04 11:11:18 +01:00
b7cdbfbe02 log another exception-throwing test 2025-08-04 10:59:01 +01:00
229bf59f5d pass correct variable as argument ('startIdx' instead of 'cursorIdx') 2025-08-04 10:46:24 +01:00
1dc77e629e add char event which triggers log 2025-08-04 09:29:37 +01:00
ce0f700253 abstract exception handler/logger into its own file 2025-08-04 09:03:47 +01:00
f4c9039af1 fix failing unit test in search-list.sml/build-search-list.sml: perform bounds checking into array 2025-08-04 08:33:48 +01:00
d4532e37cf add boilerplate to ease regression testing 2025-08-04 07:14:00 +01:00