diff --git a/crates/collab/src/rpc.rs b/crates/collab/src/rpc.rs index fd27557041..a5be6e7d62 100644 --- a/crates/collab/src/rpc.rs +++ b/crates/collab/src/rpc.rs @@ -225,7 +225,6 @@ impl Server { .add_request_handler(forward_project_request::) .add_request_handler(forward_project_request::) .add_request_handler(forward_project_request::) - .add_request_handler(forward_project_request::) .add_request_handler(forward_project_request::) .add_message_handler(create_buffer_for_peer) .add_request_handler(update_buffer) diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index 9242168754..79f3e743bd 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -51,7 +51,6 @@ use lsp_command::*; use postage::watch; use project_settings::ProjectSettings; use rand::prelude::*; -use rpc::proto::PeerId; use search::SearchQuery; use serde::Serialize; use settings::SettingsStore; @@ -480,7 +479,6 @@ impl Project { client.add_model_request_handler(Self::handle_copy_project_entry); client.add_model_request_handler(Self::handle_delete_project_entry); client.add_model_request_handler(Self::handle_expand_project_entry); - client.add_model_request_handler(Self::handle_collapse_project_entry); client.add_model_request_handler(Self::handle_apply_additional_edits_for_completion); client.add_model_request_handler(Self::handle_apply_code_action); client.add_model_request_handler(Self::handle_on_type_formatting); @@ -5418,7 +5416,7 @@ impl Project { worktree .as_local_mut() .unwrap() - .mark_entry_expanded(entry_id, true, 0, cx); + .mark_entry_expanded(entry_id, cx); }); } else if let Some(project_id) = self.remote_id() { cx.background() @@ -5431,31 +5429,6 @@ impl Project { Some(()) } - pub fn mark_entry_collapsed( - &mut self, - worktree_id: WorktreeId, - entry_id: ProjectEntryId, - cx: &mut ModelContext, - ) -> Option<()> { - if self.is_local() { - let worktree = self.worktree_for_id(worktree_id, cx)?; - worktree.update(cx, |worktree, cx| { - worktree - .as_local_mut() - .unwrap() - .mark_entry_expanded(entry_id, false, 0, cx); - }); - } else if let Some(project_id) = self.remote_id() { - cx.background() - .spawn(self.client.request(proto::CollapseProjectEntry { - project_id, - entry_id: entry_id.to_proto(), - })) - .log_err(); - } - Some(()) - } - pub fn absolute_path(&self, project_path: &ProjectPath, cx: &AppContext) -> Option { let workspace_root = self .worktree_for_id(project_path.worktree_id, cx)? @@ -5762,58 +5735,17 @@ impl Project { this: ModelHandle, envelope: TypedEnvelope, _: Arc, - cx: AsyncAppContext, - ) -> Result { - Self::handle_expand_or_collapse_project_entry( - this, - envelope.payload.entry_id, - envelope.original_sender_id, - true, - cx, - ) - .await - } - - async fn handle_collapse_project_entry( - this: ModelHandle, - envelope: TypedEnvelope, - _: Arc, - cx: AsyncAppContext, - ) -> Result { - Self::handle_expand_or_collapse_project_entry( - this, - envelope.payload.entry_id, - envelope.original_sender_id, - false, - cx, - ) - .await - } - - async fn handle_expand_or_collapse_project_entry( - this: ModelHandle, - entry_id: u64, - original_sender_id: Option, - is_expanded: bool, mut cx: AsyncAppContext, ) -> Result { - let entry_id = ProjectEntryId::from_proto(entry_id); - let (worktree, replica_id) = this - .read_with(&cx, |this, cx| { - let replica_id = original_sender_id - .and_then(|peer_id| this.collaborators.get(&peer_id))? - .replica_id; - let worktree = this.worktree_for_entry(entry_id, cx)?; - Some((worktree, replica_id)) - }) + let entry_id = ProjectEntryId::from_proto(envelope.payload.entry_id); + let worktree = this + .read_with(&cx, |this, cx| this.worktree_for_entry(entry_id, cx)) .ok_or_else(|| anyhow!("invalid request"))?; worktree.update(&mut cx, |worktree, cx| { - worktree.as_local_mut().unwrap().mark_entry_expanded( - entry_id, - is_expanded, - replica_id, - cx, - ) + worktree + .as_local_mut() + .unwrap() + .mark_entry_expanded(entry_id, cx) }); Ok(proto::Ack {}) } diff --git a/crates/project/src/worktree.rs b/crates/project/src/worktree.rs index 1ce08a9a47..4e5a828165 100644 --- a/crates/project/src/worktree.rs +++ b/crates/project/src/worktree.rs @@ -5,7 +5,7 @@ use ::ignore::gitignore::{Gitignore, GitignoreBuilder}; use anyhow::{anyhow, Context, Result}; use client::{proto, Client}; use clock::ReplicaId; -use collections::{BTreeSet, HashMap, VecDeque}; +use collections::{HashMap, HashSet, VecDeque}; use fs::{ repository::{GitFileStatus, GitRepository, RepoPath}, Fs, LineEnding, @@ -89,10 +89,8 @@ enum ScanRequest { paths: Vec, done: barrier::Sender, }, - SetDirExpanded { + ExpandDir { entry_id: ProjectEntryId, - replica_id: ReplicaId, - is_expanded: bool, }, } @@ -226,7 +224,7 @@ pub struct LocalSnapshot { struct BackgroundScannerState { snapshot: LocalSnapshot, - expanded_dirs: BTreeSet<(ProjectEntryId, ReplicaId)>, + expanded_dirs: HashSet, /// The ids of all of the entries that were removed from the snapshot /// as part of the current update. These entry ids may be re-used /// if the same inode is discovered at a new path, or if the given @@ -1154,16 +1152,10 @@ impl LocalWorktree { pub fn mark_entry_expanded( &mut self, entry_id: ProjectEntryId, - is_expanded: bool, - replica_id: ReplicaId, _cx: &mut ModelContext, ) { self.scan_requests_tx - .try_send(ScanRequest::SetDirExpanded { - entry_id, - replica_id, - is_expanded, - }) + .try_send(ScanRequest::ExpandDir { entry_id }) .ok(); } @@ -2210,12 +2202,7 @@ impl LocalSnapshot { impl BackgroundScannerState { fn is_entry_expanded(&self, entry: &Entry) -> bool { - let expanded = self - .expanded_dirs - .range((entry.id, 0)..=(entry.id, ReplicaId::MAX)) - .next() - .is_some(); - expanded + self.expanded_dirs.contains(&entry.id) } fn reuse_entry_id(&mut self, entry: &mut Entry) { @@ -2976,18 +2963,10 @@ impl BackgroundScanner { self.reload_entries_for_paths(paths, None).await; self.send_status_update(false, Some(done)) } - ScanRequest::SetDirExpanded { - entry_id, - replica_id, - is_expanded, - } => { + ScanRequest::ExpandDir { entry_id } => { let path = { let mut state = self.state.lock(); - if is_expanded { - state.expanded_dirs.insert((entry_id, replica_id)); - } else { - state.expanded_dirs.remove(&(entry_id, replica_id)); - } + state.expanded_dirs.insert(entry_id); state .snapshot .entry_for_id(entry_id) diff --git a/crates/project_panel/src/project_panel.rs b/crates/project_panel/src/project_panel.rs index 78a9fb032f..1291835ae9 100644 --- a/crates/project_panel/src/project_panel.rs +++ b/crates/project_panel/src/project_panel.rs @@ -451,9 +451,6 @@ impl ProjectPanel { Ok(ix) => { expanded_dir_ids.remove(ix); self.update_visible_entries(Some((worktree_id, entry_id)), cx); - self.project.update(cx, |project, cx| { - project.mark_entry_collapsed(worktree_id, entry_id, cx); - }); cx.notify(); break; } @@ -477,7 +474,6 @@ impl ProjectPanel { self.project.update(cx, |project, cx| { match expanded_dir_ids.binary_search(&entry_id) { Ok(ix) => { - project.mark_entry_collapsed(worktree_id, entry_id, cx); expanded_dir_ids.remove(ix); } Err(ix) => { diff --git a/crates/rpc/proto/zed.proto b/crates/rpc/proto/zed.proto index d7e8d16a0e..f3a9f7eab5 100644 --- a/crates/rpc/proto/zed.proto +++ b/crates/rpc/proto/zed.proto @@ -63,7 +63,6 @@ message Envelope { CopyProjectEntry copy_project_entry = 47; DeleteProjectEntry delete_project_entry = 48; ExpandProjectEntry expand_project_entry = 114; - CollapseProjectEntry collapse_project_entry = 115; ProjectEntryResponse project_entry_response = 49; UpdateDiagnosticSummary update_diagnostic_summary = 50; @@ -379,11 +378,6 @@ message ExpandProjectEntry { uint64 entry_id = 2; } -message CollapseProjectEntry { - uint64 project_id = 1; - uint64 entry_id = 2; -} - message ProjectEntryResponse { Entry entry = 1; uint64 worktree_scan_id = 2; diff --git a/crates/rpc/src/proto.rs b/crates/rpc/src/proto.rs index 9f8e942492..6311b043d3 100644 --- a/crates/rpc/src/proto.rs +++ b/crates/rpc/src/proto.rs @@ -151,7 +151,6 @@ messages!( (DeleteProjectEntry, Foreground), (Error, Foreground), (ExpandProjectEntry, Foreground), - (CollapseProjectEntry, Foreground), (Follow, Foreground), (FollowResponse, Foreground), (FormatBuffers, Foreground), @@ -258,7 +257,6 @@ request_messages!( (DeclineCall, Ack), (DeleteProjectEntry, ProjectEntryResponse), (ExpandProjectEntry, Ack), - (CollapseProjectEntry, Ack), (Follow, FollowResponse), (FormatBuffers, FormatBuffersResponse), (GetChannelMessages, GetChannelMessagesResponse), @@ -316,7 +314,6 @@ entity_messages!( CreateProjectEntry, DeleteProjectEntry, ExpandProjectEntry, - CollapseProjectEntry, Follow, FormatBuffers, GetCodeActions,