52 lines · 1.5 KB · Rust
RawDownload
use std::{borrow::Borrow, path::Path, sync::Arc}; use gpui::SharedString;use settings::WorktreeId; #[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]pub struct ManifestName(SharedString); impl Borrow<SharedString> for ManifestName {    fn borrow(&self) -> &SharedString {        &self.0    }} impl From<SharedString> for ManifestName {    fn from(value: SharedString) -> Self {        Self(value)    }} impl From<ManifestName> for SharedString {    fn from(value: ManifestName) -> Self {        value.0    }} impl AsRef<SharedString> for ManifestName {    fn as_ref(&self) -> &SharedString {        &self.0    }} /// Represents a manifest query; given a path to a file, [ManifestSearcher] is tasked with finding a path to the directory containing the manifest for that file.////// Since parts of the path might have already been explored, there's an additional `depth` parameter that indicates to what ancestry level a given path should be explored./// For example, given a path like `foo/bar/baz`, a depth of 2 would explore `foo/bar/baz` and `foo/bar`, but not `foo`.pub struct ManifestQuery {    /// Path to the file, relative to worktree root.    pub path: Arc<Path>,    pub depth: usize,    pub delegate: Arc<dyn ManifestDelegate>,} pub trait ManifestProvider {    fn name(&self) -> ManifestName;    fn search(&self, query: ManifestQuery) -> Option<Arc<Path>>;} pub trait ManifestDelegate: Send + Sync {    fn worktree_id(&self) -> WorktreeId;    fn exists(&self, path: &Path, is_dir: Option<bool>) -> bool;}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t