tawasuyu

tawasuyu/llimphi

Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.

Rust 484Markdown 258TOML 131RON 38118 Definiciones

⎇ main widgets/text-editor-core/src/tsedit.rs Rust · 38 líneas · 1.5 KB Historia Quién tocó qué crudo

chore: refresco desde el monorepo — vello 0.9 / wgpu 29, 120 miembros d251eb32b · Sergio ·

1//! Tipos de edición incremental compartidos con tree-sitter.
2//!
3//! El editor acumula un [`InputEdit`] por delta para alimentar el parsing
4//! incremental (ver [`crate::highlight::apply_pending_edits`]). Esos tipos
5//! son de `tree-sitter`, pero su *construcción* no toca el runtime C — sólo
6//! el parsing real lo hace. Para que el tracking de edits compile aunque
7//! tree-sitter esté apagado (feature `treesitter` off, p. ej. cross-compile
8//! Mac/Windows desde Linux), este módulo expone los tipos:
9//!
10//! - con `treesitter` **on**: alias directos de `tree_sitter::{InputEdit, Point}`
11//!   (cero costo, misma identidad de tipo que consume el parser).
12//! - con `treesitter` **off**: structs locales con los mismos campos. Los
13//!   edits se siguen calculando pero `apply_pending_edits` es un no-op (no
14//!   hay árbol que editar), así que son inertes y baratos.
15
16
17#[cfg(feature = "treesitter")]
18pub use tree_sitter::{InputEdit, Point};
19
20/// Posición fila/columna-byte equivalente a `tree_sitter::Point`.
21#[cfg(not(feature = "treesitter"))]
22#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23pub struct Point {
24    pub row: usize,
25    pub column: usize,
26}
27
28/// Edición incremental equivalente a `tree_sitter::InputEdit`.
29#[cfg(not(feature = "treesitter"))]
30#[derive(Debug, Clone, Copy, PartialEq, Eq)]
31pub struct InputEdit {
32    pub start_byte: usize,
33    pub old_end_byte: usize,
34    pub new_end_byte: usize,
35    pub start_position: Point,
36    pub old_end_position: Point,
37    pub new_end_position: Point,
38}