fresh_core/
lib.rs

1use serde::{Deserialize, Serialize};
2
3use ts_rs::TS;
4
5/// Unique identifier for a cursor
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, TS)]
7#[ts(export)]
8pub struct CursorId(pub usize);
9
10impl CursorId {
11    /// Sentinel value used for inverse events during undo/redo
12    /// This indicates that the event shouldn't move any cursor
13    pub const UNDO_SENTINEL: CursorId = CursorId(usize::MAX);
14}
15
16/// Unique identifier for a split pane
17#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, TS)]
18#[ts(export)]
19pub struct SplitId(pub usize);
20
21/// Unique identifier for a buffer
22#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
23#[serde(transparent)]
24#[derive(TS)]
25#[ts(export)]
26pub struct BufferId(pub usize);
27
28/// Direction of a split
29#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, TS)]
30#[ts(export)]
31pub enum SplitDirection {
32    Horizontal,
33    Vertical,
34}
35
36pub mod action;
37pub mod api;
38pub mod command;
39pub mod hooks;
40
41/// Unique identifier for a terminal session
42#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize, TS)]
43#[ts(export)]
44pub struct TerminalId(pub usize);
45
46impl std::fmt::Display for TerminalId {
47    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
48        write!(f, "Terminal-{}", self.0)
49    }
50}
51pub mod config;
52pub mod file_explorer;
53pub mod menu;
54pub mod overlay;
55pub mod services;
56pub mod text_property;