Commit Graph

245 Commits

Author SHA1 Message Date
0f3b6a39fb done functorising character iterators for vi word 2025-08-03 17:13:26 +01:00
bf9e8be3b0 almost done functorising character iterators for vi word 2025-08-03 17:10:15 +01:00
cd6ce4ffcc begin functorins vi word char iterators 2025-08-03 17:01:50 +01:00
cf93d5885f remove unneeded function 2025-08-03 16:52:55 +01:00
cc276b5454 functorise character folders for vi WORD 2025-08-03 16:48:45 +01:00
b8a5df814e begin functorising some char-iteration functions 2025-08-03 16:34:31 +01:00
473ea8e35d functorise character folders to reduce repetitive boilerplate code (but have not functorised yet) 2025-08-03 16:21:36 +01:00
9662540889 remove a couple of unneded functions 2025-08-03 14:32:44 +01:00
ff9d61bba0 a bit of formatting 2025-08-03 14:18:17 +01:00
e078ca89d2 refactor some code to use looping in DFA (which is faster than looping outside of the data structure) 2025-08-03 14:17:25 +01:00
904526cd63 fix bug in building search list from range: if first index is less than 0, then start from 0, or else start from calculation 2025-08-03 13:41:11 +01:00
16fdfc7ac2 print stack trace for when an exception occurs 2025-08-03 13:14:28 +01:00
a8ee1d5d37 a little refactoring to make implementation of word and WORD selection (viW, ciW, diW) easier 2025-07-21 09:40:32 +01:00
51c9090adf add a test for 'b' motion, checking that we move to start of prev word when on first character of next word 2025-07-21 00:28:25 +01:00
af900057b0 delete dead code 2025-07-20 17:55:43 +01:00
d3e54d4102 reimplement vi's 'e' command 2025-07-20 17:48:45 +01:00
146953c25d reimplement vi's 'b' command 2025-07-20 17:36:33 +01:00
33474fb5ae formatting 2025-07-20 16:57:22 +01:00
41ca612ca1 reimplement vi's 'ge' command (endOfPrevWord) 2025-07-20 16:55:42 +01:00
8d67c33893 reimplement vi's 'w' command to use ViWordDfa 2025-07-20 16:04:48 +01:00
15fc36c7a4 delete some code which is now dead 2025-07-20 14:10:35 +01:00
90c0d657bc reimplement vi's 'E' command 2025-07-20 14:00:59 +01:00
2b060b99a0 add a 'MakeNextDfaLoopPlus1' functor to later use in forward word motions which ignore state of current character but start tracking state from next character. To be used in reimplementations of Vi's 'e' and 'E' commands. 2025-07-20 13:52:23 +01:00
c6f4d1d8f3 reduce indentation level in MakeDfaLoop functors a bit, by performing 'strIdx = ...' calculation before we branch in case expression 2025-07-20 13:48:14 +01:00
f57af737b9 further refactoring, functorising a function because it will later be used elsewhere as well 2025-07-20 13:39:48 +01:00
554c3b0354 done refactoring 'startOfCurrentWORD' function, with tests still passing 2025-07-20 13:28:40 +01:00
6b5a95ff45 reimplemented vi's 'B' command (although it needs a little refactoring) 2025-07-20 13:09:21 +01:00
cf15077480 a bit of refactoring 2025-07-20 09:56:32 +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
aa068ea48e remove some opaque signature ascriptions 2025-04-22 20:49:56 +01:00
e59a1c67d8 begin scaffolding for adding deletion tests 2025-03-23 07:47:38 +00:00
cbc1359de1 add tests for cursor movement 'gg', which means all cursor movements have tests now. Next: add tests for delete motions. 2025-03-22 20:58:39 +00:00
dc3c1340bf add tests for 'F' motion 2025-03-22 13:50:24 +00:00
8fa5677d4d add tests for 'f' motion 2025-03-22 13:41:50 +00:00
87272a2667 add tests for 'T' motion 2025-03-22 13:09:50 +00:00
9eae0c2d48 begin adding multi-char tests (for motions such as 't<char>') 2025-03-22 06:13:01 +00:00
884c5fa08d pull new update from lib/brolib-sml 2025-03-22 05:31:58 +00:00
649bcb66e1 a bit of refactoring to allow addition of more tests 2025-03-22 05:18:25 +00: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
7045b69ce8 eliminate instance of currying/partial application with constant value (a constant mailbox) is shell/shell.sml 2024-12-17 10:55:58 +00:00
90f8732f06 move msgs into AppType.app_type, and refactor AppUpdate.update function to have type (app_type -> app_type) instead of pervious case which was (app_type -> app_type * MailboxType.t list). Reason: no need to allocate/return tuple when can store messages in type directly; previous msg list will be reset after each app update. All tests after refactor are passing. 2024-12-17 10:40:06 +00:00
24cdea7da3 pull in new version of railroad library, and make a one-line change to print exclusively tests that have failed (because terminal output is noisy otherwise) 2024-12-17 09:49:07 +00:00
fa723f27fa basic motion tests done 2024-11-27 10:17:42 +00:00
57f012d655 reimplement vi0 and helper functions so that they are likely faster (vi0 bring cursor to start of current line; before, this was done by checking each character in the string backwards, but now it is done by looking at the line metadata, which is faster for us by some constant factor) 2024-11-26 21:57:02 +00:00
db64917416 add tests for 'E' motion 2024-11-26 11:20:32 +00:00
bc856d3470 add tests for 'e' motion 2024-11-26 11:03:52 +00:00
233a21456d add tests for matching pairs 2024-11-26 00:43:02 +00:00
2cc7bebbd7 add tests for caret ^ motion 2024-11-25 22:13:02 +00:00
c28dc429b7 address todo in text-builder.sml by adding prerequisite: always call SearchList.goToNum before calling TextBuilder.build 2024-11-25 04:37:47 +00:00