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