mirror of
https://github.com/zed-industries/zed.git
synced 2025-01-30 14:17:02 +00:00
Change folder styling from a reduce over all child files to a simple 'always modified'
Remove git status from tab titles
This commit is contained in:
parent
17f138906e
commit
2b18975cdc
2 changed files with 10 additions and 38 deletions
|
@ -14,7 +14,7 @@ use language::{
|
||||||
proto::serialize_anchor as serialize_text_anchor, Bias, Buffer, OffsetRangeExt, Point,
|
proto::serialize_anchor as serialize_text_anchor, Bias, Buffer, OffsetRangeExt, Point,
|
||||||
SelectionGoal,
|
SelectionGoal,
|
||||||
};
|
};
|
||||||
use project::{repository::GitFileStatus, FormatTrigger, Item as _, Project, ProjectPath};
|
use project::{FormatTrigger, Item as _, Project, ProjectPath};
|
||||||
use rpc::proto::{self, update_view};
|
use rpc::proto::{self, update_view};
|
||||||
use settings::Settings;
|
use settings::Settings;
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
|
@ -27,7 +27,6 @@ use std::{
|
||||||
path::{Path, PathBuf},
|
path::{Path, PathBuf},
|
||||||
};
|
};
|
||||||
use text::Selection;
|
use text::Selection;
|
||||||
use theme::ui::FileName;
|
|
||||||
use util::{ResultExt, TryFutureExt};
|
use util::{ResultExt, TryFutureExt};
|
||||||
use workspace::item::{BreadcrumbText, FollowableItemHandle};
|
use workspace::item::{BreadcrumbText, FollowableItemHandle};
|
||||||
use workspace::{
|
use workspace::{
|
||||||
|
@ -566,25 +565,8 @@ impl Item for Editor {
|
||||||
style: &theme::Tab,
|
style: &theme::Tab,
|
||||||
cx: &AppContext,
|
cx: &AppContext,
|
||||||
) -> AnyElement<T> {
|
) -> AnyElement<T> {
|
||||||
fn git_file_status(this: &Editor, cx: &AppContext) -> Option<GitFileStatus> {
|
|
||||||
let project_entry_id = this
|
|
||||||
.buffer()
|
|
||||||
.read(cx)
|
|
||||||
.as_singleton()?
|
|
||||||
.read(cx)
|
|
||||||
.entry_id(cx)?;
|
|
||||||
let project = this.project.as_ref()?.read(cx);
|
|
||||||
let path = project.path_for_entry(project_entry_id, cx)?.path;
|
|
||||||
let worktree = project.worktree_for_entry(project_entry_id, cx)?.read(cx);
|
|
||||||
worktree.repo_for(&path)?.status_for_path(&worktree, &path)
|
|
||||||
}
|
|
||||||
|
|
||||||
Flex::row()
|
Flex::row()
|
||||||
.with_child(ComponentHost::new(FileName::new(
|
.with_child(Label::new(self.title(cx).to_string(), style.label.clone()).into_any())
|
||||||
self.title(cx).to_string(),
|
|
||||||
git_file_status(self, cx),
|
|
||||||
FileName::style(style.label.clone(), &cx.global::<Settings>().theme),
|
|
||||||
)))
|
|
||||||
.with_children(detail.and_then(|detail| {
|
.with_children(detail.and_then(|detail| {
|
||||||
let path = path_for_buffer(&self.buffer, detail, false, cx)?;
|
let path = path_for_buffer(&self.buffer, detail, false, cx)?;
|
||||||
let description = path.to_string_lossy();
|
let description = path.to_string_lossy();
|
||||||
|
|
|
@ -55,7 +55,7 @@ use std::{
|
||||||
time::{Duration, SystemTime},
|
time::{Duration, SystemTime},
|
||||||
};
|
};
|
||||||
use sum_tree::{Bias, Edit, SeekTarget, SumTree, TreeMap, TreeSet};
|
use sum_tree::{Bias, Edit, SeekTarget, SumTree, TreeMap, TreeSet};
|
||||||
use util::{paths::HOME, ResultExt, TakeUntilExt, TryFutureExt};
|
use util::{paths::HOME, ResultExt, TryFutureExt};
|
||||||
|
|
||||||
#[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);
|
||||||
|
@ -187,20 +187,12 @@ impl RepositoryEntry {
|
||||||
self.worktree_statuses
|
self.worktree_statuses
|
||||||
.iter_from(&repo_path)
|
.iter_from(&repo_path)
|
||||||
.take_while(|(key, _)| key.starts_with(&repo_path))
|
.take_while(|(key, _)| key.starts_with(&repo_path))
|
||||||
.map(|(_, status)| status)
|
.map(|(path, status)| if path == &repo_path {
|
||||||
// Short circut once we've found the highest level
|
status
|
||||||
.take_until(|status| status == &&GitFileStatus::Conflict)
|
} else {
|
||||||
.reduce(
|
&GitFileStatus::Modified
|
||||||
|status_first, status_second| match (status_first, status_second) {
|
})
|
||||||
(GitFileStatus::Conflict, _) | (_, GitFileStatus::Conflict) => {
|
.next()
|
||||||
&GitFileStatus::Conflict
|
|
||||||
}
|
|
||||||
(GitFileStatus::Modified, _) | (_, GitFileStatus::Modified) => {
|
|
||||||
&GitFileStatus::Modified
|
|
||||||
}
|
|
||||||
_ => &GitFileStatus::Added,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.copied()
|
.copied()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -4170,15 +4162,13 @@ mod tests {
|
||||||
|
|
||||||
tree.flush_fs_events(cx).await;
|
tree.flush_fs_events(cx).await;
|
||||||
|
|
||||||
dbg!(git_status(&repo));
|
git_status(&repo);
|
||||||
|
|
||||||
// Check that non-repo behavior is tracked
|
// Check that non-repo behavior is tracked
|
||||||
tree.read_with(cx, |tree, _cx| {
|
tree.read_with(cx, |tree, _cx| {
|
||||||
let snapshot = tree.snapshot();
|
let snapshot = tree.snapshot();
|
||||||
let (_, repo) = snapshot.repository_entries.iter().next().unwrap();
|
let (_, repo) = snapshot.repository_entries.iter().next().unwrap();
|
||||||
|
|
||||||
dbg!(&repo.worktree_statuses);
|
|
||||||
|
|
||||||
assert_eq!(repo.worktree_statuses.iter().count(), 0);
|
assert_eq!(repo.worktree_statuses.iter().count(), 0);
|
||||||
assert_eq!(repo.worktree_statuses.get(&Path::new(A_TXT).into()), None);
|
assert_eq!(repo.worktree_statuses.get(&Path::new(A_TXT).into()), None);
|
||||||
assert_eq!(repo.worktree_statuses.get(&Path::new(B_TXT).into()), None);
|
assert_eq!(repo.worktree_statuses.get(&Path::new(B_TXT).into()), None);
|
||||||
|
|
Loading…
Reference in a new issue