|
|
111e0cf66d
|
remove usage of concurrent ml, deciding that we prefer to run everything in the main thread instead
|
2025-10-17 23:08:16 +01:00 |
|
|
|
cc5c0bf95c
|
implement escape sequences for regex
|
2025-10-06 21:44:57 +01:00 |
|
|
|
3f30d49420
|
progress using dfa for searching
|
2025-10-06 09:55:05 +01:00 |
|
|
|
7e2021be24
|
tiny changes to dfa-gen.sml to make it more presentable when asking for advice
|
2025-10-03 07:29:28 +01:00 |
|
|
|
665497cf46
|
fix all remaining type errors
|
2025-09-29 15:06:33 +01:00 |
|
|
|
8ba16daf7a
|
add function to persistent-vector.sml to check if we are in a specific range
|
2025-09-29 14:29:43 +01:00 |
|
|
|
8d29bfab78
|
adjust nfa to return all matches in string, instead of just testing for one match and then returning true
|
2025-09-29 10:28:03 +01:00 |
|
|
|
cdc23945a5
|
reimplement vi's 'h' movement, so that we only skip newline characters that immediately follow a non-newline
|
2025-09-21 21:36:59 +01:00 |
|
|
|
d63201ada7
|
reimplement vi's 'l' motion so that we only skip a newline when it is preceded by a non-newline character
|
2025-09-21 17:49:30 +01:00 |
|
|
|
ad7d103f61
|
rename 'ViLDfa' structure to 'ViHlDfa' since this DFA implements both vi's 'h' motion and vi's 'l' motion
|
2025-09-17 11:02:11 +01:00 |
|
|
|
9ddb5f68d7
|
fix bugs in vi-l-dfa (we want to stop looping when the counter is ~1, because the starting character will likely be final/a not-newline, and we want to loop at least once; also, we want to special case 'twoNewlineState' as a final case which causes us to go backwards by 1 instead of treating 'oneNewlineState' as a final/special case). We also modify other code to use the new vi-l implementation in the program.
|
2025-09-17 03:52:31 +01:00 |
|
|
|
428208f9bf
|
when text is wide enough to be centered, also centre the search bar
|
2025-09-14 09:14:22 +01:00 |
|
|
|
668dd07699
|
pull in new version of brolib-sml so that we can get bug fixes for LineGap.getLineNumberOfIdx, delete the TextWindow structure (which was previously used to get the start line to draw from), and replace previous usages of TextWindow with TextScroll.getStartLine. This enables us to scroll in a way tailored to the reimplemented TextBuilder (which do not wrap lines or characters)
|
2025-09-13 05:12:17 +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 |
|
|
|
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 |
|
|
|
77439acef6
|
add function to get the appropriate scroll column
|
2025-09-11 16:17:56 +01:00 |
|
|
|
bf18e143c7
|
refactor text builder to use z-index for creating text vector
|
2025-09-11 02:02:41 +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 |
|
|
|
6ab3e592ad
|
add yank-delete motions like 'ydw' and so on
|
2025-09-06 03:53:47 +01:00 |
|
|
|
caf43d0864
|
functorise NormalDelete structure so we can use share the same deletion logic and code for NormalDelete and NormalYankDelete (the latter which is not yet implemented)
|
2025-09-06 03:43:45 +01:00 |
|
|
|
d135526386
|
refactoring, and fix bug in 'y^' motion. (When cursor is after first-non-space-character, copy from first-non-space-character to cursor. Otherwise, copy spaces at beginning until first-non-space-character.)
|
2025-09-02 12:33:02 +01:00 |
|
|
|
6d9ad9b13b
|
rename a file and a structure because another file with the same name exists, except that one is lowercase and the other is uppercase. Case insensitive filesystems don't like that they had the same name before, except for the case.
|
2025-09-02 02:14:12 +01:00 |
|
|
|
1419843508
|
add function to convert string to an unescaped string
|
2025-09-01 13:46:16 +01:00 |
|
|
|
53082315ac
|
draw cursor when in NORMAL_SEARCH_MODE
|
2025-09-01 11:04:56 +01:00 |
|
|
|
71c77fc6ac
|
redraw screen when we change from NORMAL_MODE to NORMAL_SEARCH_MODE, so it is visually clear that we have changed modes
|
2025-09-01 03:04:39 +01:00 |
|
|
|
c95ae5eae3
|
add functionality to return from NORMAL_SEARCH_MODE back to NORMAL_MODE, saving new search string and new search list
|
2025-08-31 07:40:31 +01:00 |
|
|
|
a86befdea8
|
a bit of refactoring
|
2025-08-31 06:28:05 +01:00 |
|
|
|
3b6dff3081
|
begin scaffolding NormalSearchMode (normal mode, except we are searching)
|
2025-08-31 02:10:57 +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 |
|
|
|
7497dc7e7a
|
add code for clojure-style persistent vectors
|
2025-08-30 18:12:47 +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 |
|
|
|
3e67d90512
|
progress functorising text builder
|
2025-08-17 17:15:15 +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 |
|
|
|
bc188b9175
|
begin refactoring (split app-update into different files)
|
2025-08-07 17:41:10 +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 |
|
|
|
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 |
|
|
|
01369627bf
|
begin reimplementing search list data structure
|
2025-08-05 13:24:55 +01:00 |
|
|
|
ce0f700253
|
abstract exception handler/logger into its own file
|
2025-08-04 09:03:47 +01:00 |
|
|
|
528aea59a1
|
reimplement vi's '$' motion as a DFA, also eliminating a bug that involves double deleteion in the process
|
2025-08-04 05:37:08 +01:00 |
|
|
|
8d67c33893
|
reimplement vi's 'w' command to use ViWordDfa
|
2025-07-20 16:04:48 +01:00 |
|
|
|
10b76d98c5
|
functorise some boilerplate code to start a DFA loop
|
2025-07-20 09:39:17 +01:00 |
|
|
|
25fb8bfc5e
|
make DFA for vi next WORD motion, still passing tests
|
2025-07-20 09:12:23 +01:00 |
|
|
|
deb24c2063
|
with cursor movements, instead of passing in functions as parameters (callbacks/higher order functions), functorise the cursor movement functions instead so we can take advantage of defunctorisation and avoid the runtime cost of closures/higher order functions/function pointers
|
2025-01-09 22:30:51 +00:00 |
|