Add default scan excluded files settings

Kirill Bulatov created

Change summary

assets/settings/default.json           | 12 ++++++++++++
crates/project/src/project_settings.rs |  2 +-
crates/project/src/worktree.rs         |  2 +-
crates/project/src/worktree_tests.rs   |  2 +-
4 files changed, 15 insertions(+), 3 deletions(-)

Detailed changes

assets/settings/default.json 🔗

@@ -268,6 +268,18 @@
     // Whether to show warnings or not by default.
     "include_warnings": true
   },
+  // TODO kb docs
+  "scan_exclude_files": [
+    "**/.git",
+    "**/.svn",
+    "**/.hg",
+    "**/CVS",
+    "**/.DS_Store",
+    "**/Thumbs.db",
+    "**/.classpath",
+    "**/.settings",
+    "**/target"
+  ],
   // Git gutter behavior configuration.
   "git": {
     // Control whether the git gutter is shown. May take 2 values:

crates/project/src/project_settings.rs 🔗

@@ -12,7 +12,7 @@ pub struct ProjectSettings {
     pub git: GitSettings,
     // TODO kb better names and docs and tests
     #[serde(default)]
-    pub scan_exclude_files: Vec<String>,
+    pub scan_exclude_files: Option<Vec<String>>,
 }
 
 #[derive(Copy, Clone, Debug, Default, Serialize, Deserialize, JsonSchema)]

crates/project/src/worktree.rs 🔗

@@ -650,7 +650,7 @@ fn start_background_scan_tasks(
 }
 
 fn scan_exclude_files(project_settings: &ProjectSettings) -> Vec<PathMatcher> {
-    project_settings.scan_exclude_files.iter()
+    project_settings.scan_exclude_files.as_deref().unwrap_or(&[]).iter()
     .sorted()
     .filter_map(|pattern| {
         PathMatcher::new(pattern)

crates/project/src/worktree_tests.rs 🔗

@@ -910,7 +910,7 @@ async fn test_ignore_inclusions_and_exclusions(cx: &mut TestAppContext) {
         cx.update_global::<SettingsStore, _, _>(|store, cx| {
             store.update_user_settings::<ProjectSettings>(cx, |project_settings| {
                 project_settings.scan_exclude_files =
-                    vec!["**/foo/**".to_string(), "**/.DS_Store".to_string()];
+                    Some(vec!["**/foo/**".to_string(), "**/.DS_Store".to_string()]);
             });
         });
     });