| Commit message (Collapse) | Author | Age |
| |
|
|
| |
This is a custom extension OSC 117.
|
| | |
|
| |
|
|
| |
Fixes an issue with std not being disabled when building
vte without std feature.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The `no_std` feature has been broken since version `0.14`, since it did
not disable the `std` feature of `memchr`.
To fall more in line with the general ecosystem standards, this crate
changes the `no_std` feature into an `std` feature. Since `vte` should
be significantly faster with this feature, it has also been enabled by
default (previously `no_std` was default).
This is a breaking change, even if we ignore `no_std` consumers which
aren't able to compile 0.14, since intermediate dependencies relying on
the `no_std` feature will have to remove it from the manifest.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The table based state change was too complex to make guesses why it's
getting slow and too fragile, as in modifying the amount of
states/actions were slowing down, even though, they were not used.
Rewrite the state + action change exactly how it's in [1] with respect
to our modifications/C1, etc. The new implementation is generally faster
than the previous one and is easier for compiler to reason about and
generate more efficient structures.
Also, the structure got way simpler to follow, since it matches the
spec pretty much exactly.
[1] - https://vt100.net/emu/dec_ansi_parser
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch overhauls the `Parser::advance` API to operate on byte slices
instead of individual bytes, which allows for additional performance
optimizations.
VTE does not support C1 escapes and C0 escapes always start with an
escape character. This makes it possible to simplify processing if a
byte stream is determined to not contain any escapes. The `memchr` crate
provides a battle-tested implementation for SIMD-accelerated byte
searches, which is why this implementation makes use of it.
VTE also only supports UTF8 characters in the ground state, which means
that the new non-escape parsing path is able to rely completely on STD's
`str::from_utf8` since `memchr` gives us the full length of the plain
text character buffer. This allows us to completely remove `utf8parse`
and all related code.
We also make use of `memchr` in the synchronized escape handling in
`ansi.rs`, since it relies heavily on scanning large amounts of text for
the extension/termination escape sequences.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This just adds handling of the CSI u escapes mentioned in the spec
and don't provide key to escape sequence transformation for the terminals.
Links: https://sw.kovidgoyal.net/kitty/keyboard-protocol
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Signed-off-by: Andy-Python-Programmer <andypythonappdeveloper@gmail.com>
Signed-off-by: Anhad Singh <andypythonappdeveloper@gmail.com>
Co-authored-by: Nicholas Sim <nsim@posteo.net>
Co-authored-by: Christian Duerr <contact@christianduerr.com>
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
This renames the generate_state_changes proc macro to include the `vte_`
prefix, since it's not useful to anyone other than our `vte` crate.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This completely removes the `codegen` project, which relied on outdated
libraries to parse DSLs to build the utf8 and vte state tables, to make
the library easier to maintain.
The utf8 table could be completely removed in favor of a `match`
statement, which also lead to a performance improvement with the utf8
parser.
The vte table did not benefit from `match` statements at all and instead
had significantly worse performance with it. To replace the old
codegeneration for vte, the `generate_state_changes` crate has been
created instead, which uses the language's proc_macro feature to create
a `const fn` which will generate the table at compile time.
|
| |
|
|
|
|
| |
This moves all crates in the workspace to the latest Rust standard and
resolves various style and formatting issues.
Fixes #32.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
This is a purely cosmetic change at the moment.
|
| |
|
|
| |
Allows testing everything with `cargo test --all`.
|
| |
|
|
|
|
| |
This will allow the README to be rendered on crates.io.
Bumped version so this can be published.
|
| | |
|
| |
|
|
|
| |
OSC parsing now handles UTF-8 arguments. 8-bit code support was dropped
to make supporting this easier.
|
| |
|
|
|
|
|
|
|
| |
The sequence \E[;4m previously produced a param list of [4], but the
expected result is [0, 4]. The semicolon indicated that a param has been
completed. Since no byte is specified, it should be zero.
This fixes an issue with the save/restore cursor test in vttest for
Alacritty.
|
| |
|
|
|
| |
An osc_dispatch with zero params would cause an underflow and index out
of bounds of self.osc_params.
|
| |
|
|
|
| |
Changelog has details, but this basically made OSC handling way easier
for dependents.
|
| |
|
|
|
| |
Apparently 0x07 is frequently used. Not handling this causes SSH prompts
to never appear!
|
| | |
|
| | |
|
| | |
|