-
-
Notifications
You must be signed in to change notification settings - Fork 114
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
unite our two control sequence automata #2183
Comments
so right now a trienode just has an (optional) Σ-index (there is no index on terminating nodes). we will add a word for an aggregated numeric, string (pointer), an TRIE_NUMERIC where state-wise, we'll want an array of trienode pointers, equivalent in length to the longest path in the trie. we can calculate this as we build the trie, and allocate the array upon completion of trie construction. from this path plus the in-trie state, we can recreate any path without keeping the actual characters, meaning we can replay failed escapes as input without keeping external state. Escape is handled distinctly, and always takes us to the we'll break apart the control-flow automaton, turning them into functions invoked on so for instance let's say we need recognize
where that that ought work. |
also, trienodes ought hold an |
ok, i've gotta stop tonight, but very good progress. i've gone ahead and done a DSL, with i've converted about half of the CF automaton over to DF -- mouse, kitty, cursor location, and geometry. when using the kitty protocol, we probably ought not try to match old-school alts/ctrls. so this will be done soon. |
5fccc295-1b29-4916-a696-da948c9d80b5.mp4 |
wezterm now starts without any bleed, 'twas a bug in our Kleene reduction |
this also fixed the XTerm bleed. i no longer see bleeding with any terminal. =] |
btw @wez while i've got your attention, i added some info to wez/wezterm#1063 |
mlterm bleeds with |
mlterm is handled |
st is fine |
VTE bleed: |
no more bleed for VTE |
hyper is fine |
contour is fine |
so we only have one more problem that i see: in all terminals, the intro banner is printed over, unless we're at the bottom. presumably a missing cursor location lookup in |
hrmmm. when redirected, and we then cat the redirected output, the same thing happens with 2.4.3 (which does not exhibit this behavior when not redirected). maybe this is related to #2114? |
got the last issue resolved. =] |
nope, one more problem: we're getting a stray 'u' in |
hrmmmm it seems to be |
oh this is an old version of kitty (0.19.3). yeah, looks like popping the keyboard protocol results in a
|
we should probably just refrain from emitting a |
got it, fixed |
Slightly off topic but as a non-dev I enjoyed reading your thoughts on sprixels and your proposals on STEGP. With RHEL/Canonical's focusing more on desktop, and neglecting console interfaces (removal of the TTY/Console scrollback feature being a major example), issues in KMS/DRM, undocumented lack of legacy VT options or POSIX, ect. It's great that Notcurses is pushing the envelope, and exposing the cracks in "modern" vterminals/consoles/libraries. |
We have two automata we traverse to handle control escapes -- the one handled by
pump_control_read()
, and the special key trie. as a result, we have two distinct control loops, and two distinct states. this last is horrible, as there's no well-defined map of state changes effected by one on the other.unite these two automata. given that special keys require a dynamic state machine (it's prepared based on terminfo data), a wholly explicit controlflow-based automaton (like that used in
pump_control_read()
) won't work. we need a dataflow-based one, as used by our trie traversal.so we'll need add some special node types to our trie, basically the same we have from the other automaton:
...and that's it, i think? pretty easy. let's do it up right
The text was updated successfully, but these errors were encountered: