tawasuyu/shuma
Interactive shell with zsh/fish parity, native multiplexing + remote sessions, on Llimphi.
⎇ 1e5d3ed2397d6efbb71aa34380f170471508cfd7
02_ruway/shuma/sandbox/shuma-line/src/lib.rs
Ñawpa willay
Pi imata llamkarqan
ch'uya
feat: shuma standalone — shell interactiva sobre Llimphi (front-door, git-dep al monorepo)
1//! `shuma-line` — el cerebro del input del shell.
2//!
3//! La función principal del shell es su línea de comandos, y esta línea
4//! no es un campo de texto tonto: analiza lo que se escribe para
5//! resaltarlo, autocompletarlo y entender sus tuberías. Toda esa
6//! inteligencia vive aquí, **agnóstica de frontend** — la usa igual el
7//! shell GPUI de brahman que una versión TUI.
8//!
9//! - [`dialect`] — el [`Dialect`] de la línea (bash hoy; zsh/fish/python
10//! a futuro, conmutable).
11//! - [`token`] — el [`Token`] y su [`TokenKind`] (la clase de resaltado).
12//! - [`lexer`] — [`tokenize`]: el análisis léxico + clasificación.
13//! - [`pipeline`] — [`split_pipeline`]: la línea descompuesta en etapas
14//! separadas por `|`.
15//! - [`complete`] — el motor de autocompletado y su [`CompletionSource`].
16//! - [`editor`] — [`LineState`], el estado editable del input.
17//!
18//! Un frontend traduce sus eventos de teclado a métodos de `LineState` y
19//! pinta `LineState::tokens()` con un color por `TokenKind`. Nada más.
20
21#![forbid(unsafe_code)]
22
23pub mod ansi;
24pub mod complete;
25pub mod continuation;
26pub mod decorate;
27pub mod dialect;
28pub mod editor;
29pub mod ghost;
30pub mod lexer;
31pub mod pipeline;
32pub mod token;
33
34pub use ansi::{parse_ansi_line, strip_ansi, AnsiColor, AnsiSpan, AnsiStyle};
35pub use complete::{
36 complete, flag_hints, Completion, CompletionKind, CompletionSource, StaticSource,
37};
38pub use continuation::needs_continuation;
39pub use decorate::{decorate_line, Decoration, DecorationKind};
40pub use dialect::Dialect;
41pub use editor::LineState;
42pub use ghost::ghost_suggestion;
43pub use lexer::tokenize;
44pub use pipeline::{split_pipeline, Pipeline, Stage};
45pub use token::{Token, TokenKind};
46
47pub mod icon;
48pub use icon::{file_icon, file_kind, FileKind};