| Age | Commit message (Collapse) | Author |
|
and use it to make scrolling efficient in terms of redraws! yay!
Force-Push: yes
Change-Id: Ib6de76f6ca1603c4e7a0f11e9a4f2371a145b7c6
|
|
it doesn't redraw the newly blank lines in that case though, so it's broken, but that can come next
Force-Push: yes
Change-Id: I52c90249852331e5f9bbcdee4d645ee33e4c671a
|
|
scrolling is handled in the most naive possible way, which is way too much redrawing and also doesn't have the desired centering behavior for longer movements
Force-Push: yes
Change-Id: I611b02d25553873a93f2c4c17e303356735581f7
|
|
now it should self-synchronize properly if there's something really weird happening
also, that code is all refactored into encodings.rs
Force-Push: yes
Change-Id: I8bd9682448fc309b7aa6c0513e9b94cb5a4ace11
|
|
Force-Push: yes
Change-Id: I0a056ed4e021124f05e56c893d47c3b3dc5f3cd7
|
|
remember, they can occur in the middle, not just at the end! heh
Force-Push: yes
Change-Id: I52d2c29e40597c0bfc9484fec5cef7f13612cb19
|
|
this is what POSIX seems to call the "current column", but that's a confusing name... POSIX also seems to think in terms of the cursor's actual position not being a thing that persists, but that feels wrong so here it's a separate concept.
Force-Push: yes
Change-Id: I0c3a171ebdf9ca74a1a8faaeeb85cd7d2a37b2ff
|
|
it only checks in the direction of movement, which means it's possible to get outside the text by going up or down off a longer line, onto a shorter one
also, non-printing characters are passed through raw and treated as being exactly one cell wide, and both those things will need to change at some point (try editing a file with color codes in it)
Force-Push: yes
Change-Id: Ie3e82b45a0dba3e52c06c775652d95335242c39b
|
|
right now, the main thing it takes care of is checking whether it's actually necessary to move the cursor, and doing it.
the hope is to be very parsimonious of bandwidth, like to 1980s standards, and to also be deliberate about making sure the portions of the screen that are redrawn follow logically from the user's actions. this is meant to help in high-latency situations as well as with screen readers. also, it just feels right.
Force-Push: yes
Change-Id: Ib26ae484a34e0aaa0e8382f5ad4966226bada223
|
|
it's now possible to move the cursor around the screen, but it doesn't interact with the buffer in any way. in particular it isn't forced to stay within the buffer, it just moves wherever.
Force-Push: yes
Change-Id: If56d044b97c761a2070ffc2cc3f541b35ef9965f
|
|
(right now it exits after the first time, doing nothing)
Force-Push: yes
Change-Id: I89f8d3d298e6a42e373e536121e6b434e30ef66f
|
|
Terminal encapsulates most of the already-existing logic for drawing things
Buffer corresponds directly to the user-facing concept of a buffer. it has facilities for creating a new empty one; for loading itself from a file; and for scanning its contents to compute the offsets to the start of each line.
at the moment, the assumption is that buffers are always entirely in-memory, but this will not always be true, so significant attention has been paid to aysnc behavior. there's locks in a few places which may or may not turn out to be how it ultimately works, but they seem like a credible first attempt.
the draw() routine is the heart of what exists so-far, doing all the really interesting stuff.
Force-Push: yes
Change-Id: Ifddc5debb12628233113c0bd6db3ea8cf10e6a5a
|
|
Force-Push: yes
Change-Id: I18ada127a4c78e5ac74f5002ed3716c53a1e141b
|