1pub mod buffer;
15pub mod io;
16pub mod logic;
17pub mod motion;
18pub mod session;
19pub mod text;
20
21pub use buffer::{Edit, EditBatchSummary, Pos, Selection, TextBuffer, VisualSelectionEditPlan};
24pub use session::{
25 BufferId, BufferKind, BufferLoadPhase, BufferLoadStatus, BufferMeta, BufferSummary,
26 EditorSession,
27};
28
29#[cfg(test)]
30mod tests {
31 use super::*;
32
33 #[test]
34 fn empty_buffer_has_one_line() {
35 let b = TextBuffer::new();
36 assert_eq!(b.len_lines(), 1);
37 assert_eq!(b.len_chars(), 0);
38 }
39
40 #[test]
41 fn insert_and_delete_selection_smoke() {
42 let mut b = TextBuffer::from_str("ab");
43
44 let sel = Selection::empty(Pos::new(0, 2));
45 let new_cursor = b.insert(sel.cursor, "c");
46 assert_eq!(b.to_string(), "abc");
47 assert_eq!(new_cursor, Pos::new(0, 3));
48
49 let sel2 = Selection::new(Pos::new(0, 1), Pos::new(0, 2));
50 let (cur, did) = b.delete_selection(sel2);
51 assert!(did);
52 assert_eq!(cur, Pos::new(0, 1));
53 assert_eq!(b.to_string(), "ac");
54 }
55}