⎇ cf337c88d72e82ff97bf0dcf40e3066f92a172c7
crates/modules/shuma/shuma-line/src/lib.rs
History
Who touched what
raw
feat(shuma): shuma-line — el cerebro agnóstico del input del shell
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 complete;
24pub mod dialect;
25pub mod editor;
26pub mod lexer;
27pub mod pipeline;
28pub mod token;
29
30pub use complete::{complete, Completion, CompletionKind, CompletionSource, StaticSource};
31pub use dialect::Dialect;
32pub use editor::LineState;
33pub use lexer::tokenize;
34pub use pipeline::{split_pipeline, Pipeline, Stage};
35pub use token::{Token, TokenKind};