aboutsummaryrefslogtreecommitdiffstats
path: root/src/rope.rs
AgeCommit message (Collapse)AuthorFilesLines
2024-01-13Revert "Max 15 children per node."Rose Hogenson1-1/+1
This reverts commit b275950c2e8dbffcf8b2a8915b0bbfab24dae4ff. I liked it better when we only had 3 children max.
2024-01-13Use .collect() instead of from_iter()Rose Hogenson1-1/+1
2024-01-13Max 15 children per node.Rose Hogenson1-1/+1
A btree with only 3 max children per node is like using a vibrator on the "low" setting: it'll get the job done, but it's not exactly efficient.
2024-01-13Apply some clippy suggestions.Rose Hogenson1-3/+3
2024-01-13Allow changing the btree max children.Rose Hogenson1-44/+49
2024-01-13Escape control characters.Rose Hogenson1-1/+24
2024-01-13Reject files with invalid utf-8.Rose Hogenson1-37/+62
It's easier to only support files with valid utf-8.
2024-01-13Delete benchmarks.Rose Hogenson1-1/+1
I don't really care about performance.
2024-01-13Make the empty rope a constant.Rose Hogenson1-10/+11
2024-01-12Introduce new helper functions for creating ropes.Rose Hogenson1-32/+27
2024-01-12Remove an unnecessary clone.Rose Hogenson1-1/+1
2024-01-12Handle Interrupted errors during read.Rose Hogenson1-2/+10
2024-01-12Apply a clippy suggestion.Rose Hogenson1-2/+6
2024-01-12Simplify the Rope::leaf function.Rose Hogenson1-9/+8
2024-01-12Remove unnecessary function from_slice.Rose Hogenson1-11/+7
2024-01-12Simplify the code a little bit.Rose Hogenson1-14/+10
2024-01-12Try to avoid copies.Rose Hogenson1-42/+72
2024-01-12Start tuning the performance of rope.Rose Hogenson1-51/+48
2024-01-11Implement Home, End, PgUp, and PgDn.Rose Hogenson1-8/+9
2024-01-11Optimise line_offset for the ASCII case.Rose Hogenson1-0/+19
In most cases we really won't need the full binary search. We can check quickly for ASCII without ever printing anything, and fall back to binary search if we find any Unicode characters.
2024-01-11Rewrite the entire thing.Rose Hogenson1-309/+250
They say you can always do a better job on the rewrite, and to a certain extent that was true here. I kept a lot of it the same though, since there was a lot I liked from the original design. The main improvements are in efficiency and code clarity.
2024-01-07Avoid an extra copy.Rose Hogenson1-11/+7
2024-01-06Use a b-tree for the rope.Rose Hogenson1-96/+242
Now it's balanced :D
2024-01-06Fix some bugs with long lines.Rose Hogenson1-36/+1
2024-01-06Implement backspace.Rose Hogenson1-1/+1
2024-01-06Fix input issues when scrolling quickly.Rose Hogenson1-2/+1
Unfortunately the user input comes on the same channel as the terminal status report from 6n, so there's a possibility of getting confused here. As long as the program is relatively efficient, it shouldn't be observable.
2024-01-06Support inserting newline.Rose Hogenson1-5/+18
2024-01-06Allow scrolling up and down.Rose Hogenson1-2/+2
2024-01-06Truncate long lines.Rose Hogenson1-0/+17
2024-01-06Use more idiomatic error handling.Rose Hogenson1-56/+8
2024-01-06Fix unicode handling.Rose Hogenson1-8/+78
It's hard to say if this counts as "fixed," but I think it's at least better than GNU nano.
2024-01-05Clean up the rope code.Rose Hogenson1-200/+133
2023-12-29Allow saving the file with CTRL-S.Rose Hogenson1-1/+19
2023-12-29Support inserting text.Rose Hogenson1-0/+54
2023-12-29Keep track of cursor position.Rose Hogenson1-21/+107
2023-12-27Add some TODOs for important enhancements.Rose Hogenson1-0/+2
2023-12-27Print each line separately.Rose Hogenson1-26/+16
Now that the terminal is in raw mode, we need to also include \r after each line.
2023-12-27Print the first n lines of the file.Rose Hogenson1-4/+81
2023-12-27Remove unnecessary length field.Rose Hogenson1-11/+9
2023-12-27Fix a bug in how unicode is printed.Rose Hogenson1-22/+27
Technically a single character can be split across multiple chunks, so we can just join all the chunks before printing. It's not the most efficient, but this is only for debugging.
2023-12-26Add the basic rope.Rose Hogenson1-0/+96