fixed a bug where files outside of the project would show 'untitled' in the search bar

This commit is contained in:
Mikayla Maki 2022-10-17 12:58:48 -07:00
parent b6bb2985f5
commit 19c98bb5ad
3 changed files with 24 additions and 15 deletions

View file

@ -1379,10 +1379,11 @@ impl EditorElement {
let font_size = let font_size =
(style.text_scale_factor * self.style.text.font_size).round(); (style.text_scale_factor * self.style.text.font_size).round();
let path = buffer.resolve_file_path(cx, true);
let mut filename = None; let mut filename = None;
let mut parent_path = None; let mut parent_path = None;
if let Some(file) = buffer.file() { // Can't use .and_then() because `.file_name()` and `.parent()` return references :(
let path = file.path(); if let Some(path) = path {
filename = path.file_name().map(|f| f.to_string_lossy().to_string()); filename = path.file_name().map(|f| f.to_string_lossy().to_string());
parent_path = parent_path =
path.parent().map(|p| p.to_string_lossy().to_string() + "/"); path.parent().map(|p| p.to_string_lossy().to_string() + "/");

View file

@ -531,21 +531,17 @@ impl Item for Editor {
let buffer = multibuffer.buffer(buffer_id)?; let buffer = multibuffer.buffer(buffer_id)?;
let buffer = buffer.read(cx); let buffer = buffer.read(cx);
let filename = if let Some(file) = buffer.file() { let filename = buffer
if file.path().file_name().is_none() .snapshot()
|| self .resolve_file_path(
.project cx,
self.project
.as_ref() .as_ref()
.map(|project| project.read(cx).visible_worktrees(cx).count() > 1) .map(|project| project.read(cx).visible_worktrees(cx).count() > 1)
.unwrap_or_default() .unwrap_or_default(),
{ )
file.full_path(cx).to_string_lossy().to_string() .map(|path| path.to_string_lossy().to_string())
} else { .unwrap_or_else(|| "untitled".to_string());
file.path().to_string_lossy().to_string()
}
} else {
"untitled".to_string()
};
let mut breadcrumbs = vec![Label::new(filename, theme.breadcrumbs.text.clone()).boxed()]; let mut breadcrumbs = vec![Label::new(filename, theme.breadcrumbs.text.clone()).boxed()];
breadcrumbs.extend(symbols.into_iter().map(|symbol| { breadcrumbs.extend(symbols.into_iter().map(|symbol| {

View file

@ -2315,6 +2315,18 @@ impl BufferSnapshot {
self.file.as_deref() self.file.as_deref()
} }
pub fn resolve_file_path(&self, cx: &AppContext, include_root: bool) -> Option<PathBuf> {
if let Some(file) = self.file() {
if file.path().file_name().is_none() || include_root {
Some(file.full_path(cx))
} else {
Some(file.path().to_path_buf())
}
} else {
None
}
}
pub fn file_update_count(&self) -> usize { pub fn file_update_count(&self) -> usize {
self.file_update_count self.file_update_count
} }