From 7bf16f263e428e2bb3987578ea9c649be17ffbad Mon Sep 17 00:00:00 2001 From: Ivan Buryak <11bit@users.noreply.github.com> Date: Wed, 21 Feb 2024 21:46:58 +0500 Subject: [PATCH] Fix a bug when extension loading is failed after it's folder is viewed by MacOS finder (#8111) Fixes #8096 # Bug description I was experimenting with adding extensions and almost went crazy trying to make my demo extension work. It appeared that I was copying files with Finder that creates hidden `.DS_Store` files which interfered with Zed's loading logic. It assumes that `languages/` directory contains only directories and never files and so it crashes when meets `.DS_Store`. This makes any extension stop working after it has been viewed via Finder # Change Check if path is directory when loading extension languages (so it will skip .DS_Store files) --- crates/extension/src/extension_store.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/crates/extension/src/extension_store.rs b/crates/extension/src/extension_store.rs index 59cbe7a0fd..5543f04d7d 100644 --- a/crates/extension/src/extension_store.rs +++ b/crates/extension/src/extension_store.rs @@ -651,6 +651,12 @@ impl ExtensionStore { let Ok(relative_path) = language_path.strip_prefix(&extension_dir) else { continue; }; + let Ok(Some(fs_metadata)) = fs.metadata(&language_path).await else { + continue; + }; + if !fs_metadata.is_dir { + continue; + } let config = fs.load(&language_path.join("config.toml")).await?; let config = ::toml::from_str::(&config)?;