Commit Graph

449 Commits

Author SHA1 Message Date
7ac676e621 add textLineWidth value to text-constants.sml, which we can use to calculate functionality of centering on screen 2025-08-31 01:00:31 +01:00
83e062eb60 fix visual bug resulting from 'TextBuilder.buildTextStringSearch' function. When we have a search string 'abc' and a file 'abcabc', there are two matches and it should also look like there are two matches, but it did not look like there were two matches prior to this commit. This commit fixes that by advancing the search position before adding to the text accumulator. 2025-08-31 00:05:48 +01:00
659a1d2585 change buildRange length from 777 to 1111 2025-08-30 23:36:14 +01:00
2b3f0405c6 reimplement search-range functionality to scan range from the string from left to right 2025-08-30 23:31:55 +01:00
de46376e4e reimplement search list functionality (when building whole search list, not from range) to start from index 0, to get rid of edge cases resulting from reading the string backwards 2025-08-30 23:05:11 +01:00
148b72835b move buffer to start before creating searchMsg 2025-08-30 18:21:47 +01:00
7497dc7e7a add code for clojure-style persistent vectors 2025-08-30 18:12:47 +01:00
0647589f13 handle edge case in searching: when we look for 'abba' in the text 'abbabba', it looks like we should have two matches, but to be consistent with other programs, we only have one match 2025-08-30 17:16:02 +01:00
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
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
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
229bf59f5d pass correct variable as argument ('startIdx' instead of 'cursorIdx') 2025-08-04 10:46:24 +01:00
ce0f700253 abstract exception handler/logger into its own file 2025-08-04 09:03:47 +01:00