Document main workspace structs (#9772)
This commit is contained in:
parent
f83884518a
commit
e3894a4e1e
6 changed files with 31 additions and 0 deletions
|
@ -141,6 +141,11 @@ pub enum OpenedBufferEvent {
|
||||||
Err(BufferId, Arc<anyhow::Error>),
|
Err(BufferId, Arc<anyhow::Error>),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Semantics-aware entity that is relevant to one or more [`Worktree`] with the files.
|
||||||
|
/// `Project` is responsible for tasks, LSP and collab queries, synchronizing worktree states accordingly.
|
||||||
|
/// Maps [`Worktree`] entries with its own logic using [`ProjectEntryId`] and [`ProjectPath`] structs.
|
||||||
|
///
|
||||||
|
/// Can be either local (for the project opened on the same host) or remote.(for collab projects, browsed by multiple remote users).
|
||||||
pub struct Project {
|
pub struct Project {
|
||||||
worktrees: Vec<WorktreeHandle>,
|
worktrees: Vec<WorktreeHandle>,
|
||||||
active_entry: Option<ProjectEntryId>,
|
active_entry: Option<ProjectEntryId>,
|
||||||
|
|
|
@ -140,6 +140,8 @@ impl From<&dyn PanelHandle> for AnyView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A container with a fixed [`DockPosition`] adjacent to a certain widown edge.
|
||||||
|
/// Can contain multiple panels and show/hide itself with all contents.
|
||||||
pub struct Dock {
|
pub struct Dock {
|
||||||
position: DockPosition,
|
position: DockPosition,
|
||||||
panel_entries: Vec<PanelEntry>,
|
panel_entries: Vec<PanelEntry>,
|
||||||
|
|
|
@ -159,6 +159,10 @@ impl fmt::Debug for Event {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A container for 0 to many items that are open in the workspace.
|
||||||
|
/// Treats all items uniformly via the [`ItemHandle`] trait, whether it's an editor, search results multibuffer, terminal or something else,
|
||||||
|
/// responsible for managing item tabs, focus and zoom states and drag and drop features.
|
||||||
|
/// Can be split, see `PaneGroup` for more details.
|
||||||
pub struct Pane {
|
pub struct Pane {
|
||||||
focus_handle: FocusHandle,
|
focus_handle: FocusHandle,
|
||||||
items: Vec<Box<dyn ItemHandle>>,
|
items: Vec<Box<dyn ItemHandle>>,
|
||||||
|
|
|
@ -16,6 +16,9 @@ pub const HANDLE_HITBOX_SIZE: f32 = 4.0;
|
||||||
const HORIZONTAL_MIN_SIZE: f32 = 80.;
|
const HORIZONTAL_MIN_SIZE: f32 = 80.;
|
||||||
const VERTICAL_MIN_SIZE: f32 = 100.;
|
const VERTICAL_MIN_SIZE: f32 = 100.;
|
||||||
|
|
||||||
|
/// One or many panes, arranged in a horizontal or vertical axis due to a split.
|
||||||
|
/// Panes have all their tabs and capabilities preserved, and can be split again or resized.
|
||||||
|
/// Single-pane group is a regular pane.
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct PaneGroup {
|
pub struct PaneGroup {
|
||||||
pub(crate) root: Member,
|
pub(crate) root: Member,
|
||||||
|
|
|
@ -529,6 +529,12 @@ pub enum OpenVisible {
|
||||||
OnlyDirectories,
|
OnlyDirectories,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Collects everything project-related for a certain window opened.
|
||||||
|
/// In some way, is a counterpart of a window, as the [`WindowHandle`] could be downcast into `Workspace`.
|
||||||
|
///
|
||||||
|
/// A `Workspace` usually consists of 1 or more projects, a central pane group, 3 docks and a status bar.
|
||||||
|
/// The `Workspace` owns everybody's state and serves as a default, "global context",
|
||||||
|
/// that can be used to register a global action to be triggered from any place in the window.
|
||||||
pub struct Workspace {
|
pub struct Workspace {
|
||||||
weak_self: WeakView<Self>,
|
weak_self: WeakView<Self>,
|
||||||
workspace_actions: Vec<Box<dyn Fn(Div, &mut ViewContext<Self>) -> Div>>,
|
workspace_actions: Vec<Box<dyn Fn(Div, &mut ViewContext<Self>) -> Div>>,
|
||||||
|
|
|
@ -82,6 +82,17 @@ pub const FS_WATCH_LATENCY: Duration = Duration::from_millis(100);
|
||||||
#[derive(Copy, Clone, PartialEq, Eq, Debug, Hash, PartialOrd, Ord)]
|
#[derive(Copy, Clone, PartialEq, Eq, Debug, Hash, PartialOrd, Ord)]
|
||||||
pub struct WorktreeId(usize);
|
pub struct WorktreeId(usize);
|
||||||
|
|
||||||
|
/// A set of local or remote files that are being opened as part of a project.
|
||||||
|
/// Responsible for tracking related FS (for local)/collab (for remote) events and corresponding updates.
|
||||||
|
/// Stores git repositories data and the diagnostics for the file(s).
|
||||||
|
///
|
||||||
|
/// Has an absolute path, and may be set to be visible in Zed UI or not.
|
||||||
|
/// May correspond to a directory or a single file.
|
||||||
|
/// Possible examples:
|
||||||
|
/// * a drag and dropped file — may be added as an invisible, "ephemeral" entry to the current worktree
|
||||||
|
/// * a directory opened in Zed — may be added as a visible entry to the current worktree
|
||||||
|
///
|
||||||
|
/// Uses [`Entry`] to track the state of each file/directory, can look up absolute paths for entries.
|
||||||
pub enum Worktree {
|
pub enum Worktree {
|
||||||
Local(LocalWorktree),
|
Local(LocalWorktree),
|
||||||
Remote(RemoteWorktree),
|
Remote(RemoteWorktree),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue