|
|
eebf793fbf
|
refactor test code to check if textLength and lineLength are also correct
|
2025-09-14 12:54:23 +01:00 |
|
|
|
92a98bfb56
|
update all functions in line_gap.sml to track textLength and lineLength, except for test code and delete functions
|
2025-09-14 12:41:50 +01:00 |
|
|
|
52f0da2751
|
refactor LineGap.append function to track textLength and lineLength
|
2025-09-14 12:27:11 +01:00 |
|
|
|
9927e6bf1c
|
begin adding textLength and lineLength values in line_gap.sml (they are currently kept up to date only in the insert functions)
|
2025-09-14 12:22:15 +01:00 |
|
|
|
26862436d0
|
fix LineGap.goToLine bug: we weren't properly searching to check if the start of the searchLine was accessible in the node we stopped at
|
2025-09-13 17:58:42 +01:00 |
|
|
|
737e8695e7
|
fix bugs in helper functions for 'LineGap.getLineNumberOfIdx'. Main bug was that we were passing 'curLine' to 'getLineNumberRight' twice, instead of first passing 'curIdx' and then 'curLine' afterwards.
|
2025-09-13 04:55:27 +01:00 |
|
|
|
5c7ec252c2
|
don't index into line vector when getting line number from index; instead, just get how many previous-lines there are in the vector (if any) and add it to the line number of the current node. We do this because we are trying to get the line number of a particular index; accessing the line vector's contents (which are string indices) is not necessary nor helpful for that, but getting the relative line number is helpful for that
|
2025-09-13 03:51:33 +01:00 |
|
|
|
db6fd56aca
|
perform bounds checking when we try to index into a vector, in LineGap's 'getLineNumberOfIdx' helper functions
|
2025-09-13 03:32:35 +01:00 |
|
|
|
5d2a2ef737
|
add function to get line number of LineGap to signature, so that it is available to callers
|
2025-09-11 18:01:19 +01:00 |
|
|
|
92006ae680
|
add functions to get line number (where first line is 0) to line_gap.sml
|
2025-09-11 17:59:03 +01:00 |
|
|
|
fe8d3906de
|
fix regression introduced by previous commit (we need to be more careful when consing to 'leftStringsTl/rightStringsTl' than when consing to 'leftStrings/rightStrings', because our usage of consing the 'tl' variant in some places implies we have modified the head of that respective list
|
2025-08-05 16:17:53 +01:00 |
|
|
|
a2ca88da92
|
fix bug in index metadata in line_gap.sml (make sure we add and subtract by size of string by calling String.size)
|
2025-08-05 15:58:08 +01:00 |
|
|
|
a84490c86c
|
use parametric polymorphism for value in gap_map.sml, instead of specifying value via functor. This is more flexible because a type which is defined after the functor can be used with the map. (The key in gap_map.sml is still specified by functor, though, which is necessary because the structure uses comparison functions which work with the key.)
|
2025-03-12 23:25:29 +00:00 |
|
|
|
e2da10e908
|
amend 'removeMiddle' function in gap_map.sml: before, we were leaving element we want to remove in rkhd/rvhd because we started the slice at 'insPos', but now we increment 'insPos' by 1 so we filter that desired element out
|
2025-02-14 13:02:42 +00:00 |
|
|
|
5f834ddaa4
|
add functor to fold over GapMap in gap_map.sml
|
2025-02-13 12:40:27 +00:00 |
|
|
|
f3cc41e9a2
|
add 'env' parameter to gap_map.sml's mapper
|
2025-02-13 12:06:20 +00:00 |
|
|
|
9c32e53160
|
add 'env' parameter to gap_map.sml's mapper
|
2025-02-13 12:01:40 +00:00 |
|
|
|
aa127b28fd
|
add 'env' parameter to gap_map.sml's mapper
|
2025-02-13 12:01:07 +00:00 |
|
|
|
9749abf1d5
|
add 'env' parameter to mapper in gap_map.sml
|
2025-02-13 11:56:12 +00:00 |
|
|
|
d23396f5d1
|
cover exhaustive case reported in gap_map.sml (in 'joinSlices' function), and make it possible to map over values by using a functor
|
2025-02-13 10:52:55 +00:00 |
|
|
|
ae3238eabe
|
minor adjustments to gap_vector.sml to make functor fit GAP_VECTOR signature
|
2025-02-13 08:26:48 +00:00 |
|
|
|
cfce329255
|
add gap_vector.sml, which is just the same as gap_buffer.sml, except generic through the use of functors
|
2025-02-13 08:22:55 +00:00 |
|
|
|
33678f2b0d
|
code 'remove' function for gap_map.sml, completing the functionality I need for GapMap (but warning that, although most functions were edited from gap_set.sml, gap_map.sml is entirely untested)
|
2025-02-13 03:21:18 +00:00 |
|
|
|
2c187d0e87
|
implement 'moveTo' function for gap_map.sml
|
2025-02-13 02:41:29 +00:00 |
|
|
|
d3cca23549
|
implement 'moveToStart' and 'moveToEnd' functions in gap_map.sml
|
2025-02-12 13:59:27 +00:00 |
|
|
|
18bd71d608
|
fix compile errors regarding 'add' function in gap_map.sml (error was that 'joinSlices' helper function returned 'rightVals = rightKeys' instead of 'rightVals = rightVals')
|
2025-02-12 13:44:34 +00:00 |
|
|
|
2e03ae9828
|
add 'min' and 'max' functions to gap_map.sml
|
2025-02-12 12:45:45 +00:00 |
|
|
|
55d20a2b82
|
done with adding/inserting into GapMap
|
2025-02-12 12:25:35 +00:00 |
|
|
|
206df031b3
|
implement 'insRight' function for inserting to the right
|
2025-02-12 12:25:08 +00:00 |
|
|
|
0b8b47312a
|
implement 'insRight' function for inserting to the right
|
2025-02-12 12:12:27 +00:00 |
|
|
|
ca3e357fde
|
code 'insLeft' function for gap_map.sml
|
2025-02-12 11:08:05 +00:00 |
|
|
|
2048c04179
|
progress implementing 'add' in gap_map.sml
|
2025-02-12 10:15:36 +00:00 |
|
|
|
0ba1679e9a
|
begin implementation of gap_map.sml
|
2025-02-12 01:51:39 +00:00 |
|
|
|
713d17fdd3
|
implement removeMany function for gap_set.sml (but it is untested and more complicated than all the other functions)
|
2025-02-03 06:39:46 +00:00 |
|
|
|
47c1492136
|
implement remove function for gap-set.sml (todo: a 'removeMany' function that takes a startToRemove and endToRemove value, and deletes values in that range)
|
2025-02-02 04:13:18 +00:00 |
|
|
|
707a62021a
|
implement 'exists' functions on gap-set.sml
|
2025-02-01 23:56:33 +00:00 |
|
|
|
43bff91227
|
add functions to move around in gap set
|
2025-02-01 23:21:15 +00:00 |
|
|
|
7780b767a3
|
code insert function for gap-set.sml
|
2025-02-01 22:36:37 +00:00 |
|
|
|
50a7935612
|
minor change the nullSubstring function (use string literal for endWith parameter; no need to convert char to string)
|
2024-11-10 22:02:22 +00:00 |
|
|
|
6eb74c4332
|
add a substring function to line_gap.sml which is null terminated, which may be required for C FFI
|
2024-11-10 21:57:04 +00:00 |
|
|
|
c2e74d89fd
|
fully implement substring for line_gap.sml
|
2024-11-10 11:13:12 +00:00 |
|
|
|
2cd6605ee4
|
progress adding substring to line_gap.sml
|
2024-11-10 10:41:41 +00:00 |
|
|
|
446e335f54
|
fix minor bug in 'helpGoToEnd' function in line_gap.sml (we were meant to pass rStrTl and rLnTl, but we were passing empty lists instead which caused us to lose data)
|
2024-10-30 10:53:17 +00:00 |
|
|
|
16f65c0d9d
|
add 'goToEnd' function in line_gap.sml
|
2024-10-30 10:23:55 +00:00 |
|
|
|
d59d0bb17f
|
fix starting 'goToLine' function in line_gap.sml; previously, we were comparing 'searchLine' to 'idx' to decide where to move buffer, but now we are comparing 'searchLine' to buffer's 'line' instead which is correct
|
2024-10-28 21:33:52 +00:00 |
|
|
|
d2e5c23c61
|
abstract reusable function from goToLine so it can be used in goToIdx, and implement goToIdx
|
2024-10-10 22:56:24 +01:00 |
|
|
|
d4ef45630d
|
add function to move to specific line number (or the node containing a specific line number if node contains multiple line breaks)
|
2024-10-05 23:01:19 +01:00 |
|
|
|
36edbb6dee
|
add function to go to start of line_gap.sml
|
2024-10-05 14:17:15 +01:00 |
|
|
|
2a5a5b0787
|
add append function to line_gap.sml
|
2024-10-05 12:39:45 +01:00 |
|
|
|
599252e5ed
|
add function to create a LineGap.t from a string (although, for performance reasons, it's best to use this function when string is shorter than 1024 chars)
|
2024-10-05 00:57:12 +01:00 |
|