aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
AgeCommit message (Collapse)AuthorFilesLines
2024-01-12Fix a bug where cursor_pos would return old data.Rose Hogenson1-57/+61
For now I'm just counting the failures, and aborting if cursor_pos immediately failed before. We have to skip the incoming status reports with read_key before cursor_pos will start working again. This should flush any old status reports, and prevent reading them incorrectly.
2024-01-11Implement Home, End, PgUp, and PgDn.Rose Hogenson1-0/+71
2024-01-11Keep the cursor position on error.Rose Hogenson1-8/+9
Now it handles errors so well! You can barely tell that nearly all of the calls to cursor_pos are failing.
2024-01-11Do a little more to handle errors.Rose Hogenson1-1/+7
2024-01-11Optimize for ASCII case in floor/ceil_grapheme.Rose Hogenson1-1/+4
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-11Fix the cursor behavior at line endings.Rose Hogenson1-4/+6
2024-01-11Rewrite the entire thing.Rose Hogenson1-325/+453
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-07Be more efficient with full screen refreshes.Rose Hogenson1-2/+15
xterm has some bad flickering if I just naively repaint the whole screen every time. We can easily track whether we need to repaint the whole screen or just the line.
2024-01-07Make undo a bit less weird.Rose Hogenson1-17/+22
2024-01-07Support pasting text into the editor.Rose Hogenson1-93/+94
The editor only repaints when there is a small delay in the input, which only happens when the user is typing. Otherwise the bytes go straight into the buffer.
2024-01-07Implement redo.Rose Hogenson1-49/+81
Is this how redo works?
2024-01-06Implement undo.Rose Hogenson1-12/+41
2024-01-06Use a b-tree for the rope.Rose Hogenson1-59/+98
Now it's balanced :D
2024-01-06Fix some bugs with long lines.Rose Hogenson1-5/+7
2024-01-06Implement backspace.Rose Hogenson1-4/+17
2024-01-06Fix input issues when scrolling quickly.Rose Hogenson1-15/+30
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-32/+73
2024-01-06Allow scrolling up and down.Rose Hogenson1-11/+21
2024-01-06Truncate long lines.Rose Hogenson1-22/+41
2024-01-06Wrap the cursor around at the ends of a line.Rose Hogenson1-5/+12
2024-01-06Use more idiomatic error handling.Rose Hogenson1-91/+50
2024-01-06Fix unicode handling.Rose Hogenson1-60/+134
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-16/+6
2023-12-29Allow saving the file with CTRL-S.Rose Hogenson1-0/+5
2023-12-29Support inserting text.Rose Hogenson1-4/+15
2023-12-29Keep track of cursor position.Rose Hogenson1-10/+65
2023-12-29Allow moving the cursor with the arrow keys.Rose Hogenson1-20/+27
2023-12-27Wait for ctrl-q to exit.Rose Hogenson1-9/+26
2023-12-27Wait for keypress before exiting.Rose Hogenson1-2/+17
2023-12-27Handle error from putting terminal in raw mode.Rose Hogenson1-1/+6
2023-12-27Print each line separately.Rose Hogenson1-2/+4
Now that the terminal is in raw mode, we need to also include \r after each line.
2023-12-27Put the terminal in raw mode.Rose Hogenson1-0/+2
2023-12-27Rename tiocgwinsz.rs to term.rs.Rose Hogenson1-2/+2
I will be putting more functionality in this file.
2023-12-27Print the first n lines of the file.Rose Hogenson1-2/+4
2023-12-27Fix a bug in how unicode is printed.Rose Hogenson1-1/+1
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 function to get terminal size.Rose Hogenson1-10/+24
2023-12-26Add the basic rope.Rose Hogenson1-1/+20
2023-12-26Start text editor.Rose Hogenson1-0/+3