1
1
mirror of https://github.com/wez/wezterm.git synced 2024-11-27 12:23:46 +03:00
wezterm/vtparse
Wez Furlong ff153ba27f vtparse: recognize utf8 encoded c1 codes in more cases
There were two bugs here:

* \u8D (the utf8 encoded representation of 0x8d, aka: RI) was not
  recognized as a C1 code and was instead passed through as printable
  text.
* The \u8D is a zero-width sequence which means that a subsequent
  set_cell call on the new empty-by-default line wouldn't allocate
  any cells in the line array, and the assigment to the line would
  panic.

This commit avoids the panic for the second case, and then fixes up
the vtparser to correctly recognize the sequence as a C1 control.

refs: https://github.com/wez/wezterm/issues/768
2021-05-08 00:39:29 -07:00
..
src vtparse: recognize utf8 encoded c1 codes in more cases 2021-05-08 00:39:29 -07:00
Cargo.toml vtparse/termwiz: prep for release 2021-04-14 13:04:23 -07:00
README.md vtparse: document things 2019-06-29 19:13:45 -07:00

vtparse

This is an implementation of a parser for escape and control sequences. It is based on the DEC ANSI Parser.

It has been modified slightly to support UTF-8 sequences.

vtparse is the lowest level parser; it categorizes the basic types of sequences but does not ascribe any semantic meaning to them.

You may wish to look at termwiz::escape::parser::Parser in the termwiz crate if you're looking for semantic parsing.

Comparison with the vte crate

vtparse has support for dynamically sized OSC buffers, which makes it suitable for processing large escape sequences, such as those used by the iTerm2 image protocol.