be99ac3bbb
shuma-line: ghost_suggestion(line, corpus) — el resto de la línea que el shell predice, a partir de un corpus priorizado. shuma-infer: predict_next(recent, patterns) — si los últimos comandos coinciden con el prefijo de un patrón, devuelve los pasos que faltan. shuma-shell: mientras se escribe, el prompt pinta en gris tenue la continuación predicha — historial reciente o, con prioridad, la secuencia que el motor de inferencia anticipa (cd a un proyecto → fantasma «git pull && cargo build»). La flecha → al final de la línea, o Ctrl+Space, aceptan el fantasma. 13 tests shuma-infer, 37 shuma-line. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
38 lines
1.4 KiB
Rust
38 lines
1.4 KiB
Rust
//! `shuma-line` — el cerebro del input del shell.
|
|
//!
|
|
//! La función principal del shell es su línea de comandos, y esta línea
|
|
//! no es un campo de texto tonto: analiza lo que se escribe para
|
|
//! resaltarlo, autocompletarlo y entender sus tuberías. Toda esa
|
|
//! inteligencia vive aquí, **agnóstica de frontend** — la usa igual el
|
|
//! shell GPUI de brahman que una versión TUI.
|
|
//!
|
|
//! - [`dialect`] — el [`Dialect`] de la línea (bash hoy; zsh/fish/python
|
|
//! a futuro, conmutable).
|
|
//! - [`token`] — el [`Token`] y su [`TokenKind`] (la clase de resaltado).
|
|
//! - [`lexer`] — [`tokenize`]: el análisis léxico + clasificación.
|
|
//! - [`pipeline`] — [`split_pipeline`]: la línea descompuesta en etapas
|
|
//! separadas por `|`.
|
|
//! - [`complete`] — el motor de autocompletado y su [`CompletionSource`].
|
|
//! - [`editor`] — [`LineState`], el estado editable del input.
|
|
//!
|
|
//! Un frontend traduce sus eventos de teclado a métodos de `LineState` y
|
|
//! pinta `LineState::tokens()` con un color por `TokenKind`. Nada más.
|
|
|
|
#![forbid(unsafe_code)]
|
|
|
|
pub mod complete;
|
|
pub mod dialect;
|
|
pub mod editor;
|
|
pub mod ghost;
|
|
pub mod lexer;
|
|
pub mod pipeline;
|
|
pub mod token;
|
|
|
|
pub use complete::{complete, Completion, CompletionKind, CompletionSource, StaticSource};
|
|
pub use dialect::Dialect;
|
|
pub use editor::LineState;
|
|
pub use ghost::ghost_suggestion;
|
|
pub use lexer::tokenize;
|
|
pub use pipeline::{split_pipeline, Pipeline, Stage};
|
|
pub use token::{Token, TokenKind};
|