From 2441bc570972aea596828b9170262cc17c7d0e85 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 bceb51e532a02c3f014fabe4bdd0094ebaa30977..8c2d6590aa7ce6f862f4fd55669163c48a5b895d 100644 --- a/crates/extension/src/extension_store.rs +++ b/crates/extension/src/extension_store.rs @@ -650,6 +650,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)?;