mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-08 07:35:01 +03:00
Add global Fs
instance (#15044)
This PR adds a global `Fs` instance to the app context. This will make it easier to access the filesystem in some cases instead of having to thread it around. Release Notes: - N/A
This commit is contained in:
parent
5062bf0b4d
commit
d36ebc8c74
@ -19,7 +19,7 @@ collections.workspace = true
|
|||||||
futures.workspace = true
|
futures.workspace = true
|
||||||
git.workspace = true
|
git.workspace = true
|
||||||
git2.workspace = true
|
git2.workspace = true
|
||||||
gpui = { workspace = true, optional = true }
|
gpui.workspace = true
|
||||||
lazy_static.workspace = true
|
lazy_static.workspace = true
|
||||||
libc.workspace = true
|
libc.workspace = true
|
||||||
parking_lot.workspace = true
|
parking_lot.workspace = true
|
||||||
|
@ -12,6 +12,7 @@ use std::os::unix::fs::MetadataExt;
|
|||||||
use async_tar::Archive;
|
use async_tar::Archive;
|
||||||
use futures::{future::BoxFuture, AsyncRead, Stream, StreamExt};
|
use futures::{future::BoxFuture, AsyncRead, Stream, StreamExt};
|
||||||
use git::repository::{GitRepository, RealGitRepository};
|
use git::repository::{GitRepository, RealGitRepository};
|
||||||
|
use gpui::{AppContext, Global, ReadGlobal};
|
||||||
use rope::Rope;
|
use rope::Rope;
|
||||||
use smol::io::AsyncWriteExt;
|
use smol::io::AsyncWriteExt;
|
||||||
use std::{
|
use std::{
|
||||||
@ -102,6 +103,22 @@ pub trait Fs: Send + Sync {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct GlobalFs(Arc<dyn Fs>);
|
||||||
|
|
||||||
|
impl Global for GlobalFs {}
|
||||||
|
|
||||||
|
impl dyn Fs {
|
||||||
|
/// Returns the global [`Fs`].
|
||||||
|
pub fn global(cx: &AppContext) -> Arc<Self> {
|
||||||
|
GlobalFs::global(cx).0.clone()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Sets the global [`Fs`].
|
||||||
|
pub fn set_global(fs: Arc<Self>, cx: &mut AppContext) {
|
||||||
|
cx.set_global(GlobalFs(fs));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Default)]
|
#[derive(Copy, Clone, Default)]
|
||||||
pub struct CreateOptions {
|
pub struct CreateOptions {
|
||||||
pub overwrite: bool,
|
pub overwrite: bool,
|
||||||
|
@ -14,7 +14,7 @@ use collab_ui::channel_view::ChannelView;
|
|||||||
use db::kvp::KEY_VALUE_STORE;
|
use db::kvp::KEY_VALUE_STORE;
|
||||||
use editor::Editor;
|
use editor::Editor;
|
||||||
use env_logger::Builder;
|
use env_logger::Builder;
|
||||||
use fs::RealFs;
|
use fs::{Fs, RealFs};
|
||||||
use futures::{future, StreamExt};
|
use futures::{future, StreamExt};
|
||||||
use git::GitHostingProviderRegistry;
|
use git::GitHostingProviderRegistry;
|
||||||
use gpui::{
|
use gpui::{
|
||||||
@ -399,6 +399,8 @@ fn main() {
|
|||||||
AppCommitSha::set_global(AppCommitSha(build_sha.into()), cx);
|
AppCommitSha::set_global(AppCommitSha(build_sha.into()), cx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<dyn Fs>::set_global(fs.clone(), cx);
|
||||||
|
|
||||||
GitHostingProviderRegistry::set_global(git_hosting_provider_registry, cx);
|
GitHostingProviderRegistry::set_global(git_hosting_provider_registry, cx);
|
||||||
git_hosting_providers::init(cx);
|
git_hosting_providers::init(cx);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user