forked from wez/wezterm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
lib.rs
71 lines (68 loc) · 2.38 KB
/
lib.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//! # Terminal Wizardry
//!
//! This is a rust crate that provides a number of support functions
//! for applications interested in either displaying data to a terminal
//! or in building a terminal emulator.
//!
//! It is currently in active development and subject to fairly wild
//! sweeping changes.
//!
//! Included functionality:
//!
//! * `Surface` models a terminal display and its component `Cell`s
//! * Terminal attributes are aware of modern features such as
//! True Color, [Hyperlinks](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda)
//! and will also support sixel and iterm style terminal graphics display.
//! * `Surface`s include a log of `Change`s and an API for consuming
//! and applying deltas. This is a powerful building block for
//! synchronizing screen instances.
//! * Escape sequence parser decodes inscrutable escape sequences
//! and gives them semantic meaning, making the code that uses
//! them clearer. The decoded escapes can be re-encoded, allowing
//! applications to start with the semantic meaning and emit
//! the appropriate escape sequence without embedding obscure
//! binary bytes.
//! * `Capabilities` allows probing for terminal capabilities
//! that may not be included in the system terminfo database,
//! and overriding them in an embedding application.
//! * `Terminal` trait provides an abstraction over unix style ttys
//! and Windows style console APIs. `Change`s from `Surface`
//! can be rendered to `Terminal`s. `Terminal`s allow decoding
//! mouse and keyboard inputs in both blocking or non-blocking
//! mode.
//! * `Widget` trait allows composition of UI elements at a higher
//! level.
//! * `LineEditor` provides line editing facilities similar to those
//! in the unix shell.
//!
//! ## Features
//!
//! * `widgets` - enables the widget layout and related traits
//! * `use_serde` - makes a number of structs serde serializable
mod emoji;
mod emoji_presentation;
mod emoji_variation;
mod widechar_width;
pub mod caps;
pub mod cell;
pub mod cellcluster;
pub mod color;
pub mod error;
pub mod escape;
pub mod hyperlink;
pub mod image;
pub mod input;
pub mod istty;
pub mod keymap;
pub mod lineedit;
mod macros;
pub mod nerdfonts;
mod nerdfonts_data;
mod readbuf;
pub mod render;
pub mod surface;
pub mod terminal;
pub mod tmux_cc;
#[cfg(feature = "widgets")]
pub mod widgets;
pub use error::{Context, Error, Result};