diff --git a/crates/language/src/language_registry.rs b/crates/language/src/language_registry.rs index 9d80b2609c..21c083696f 100644 --- a/crates/language/src/language_registry.rs +++ b/crates/language/src/language_registry.rs @@ -659,7 +659,10 @@ impl LanguageRegistry { user_file_types: Option<&HashMap, GlobSet>>, ) -> Option { let filename = path.file_name().and_then(|name| name.to_str()); - let extension = path.extension().and_then(|ext| ext.to_str()); + // `Path.extension()` returns None for files with a leading '.' + // and no other extension which is not the desired behavior here, + // as we want `.zshrc` to result in extension being `Some("zshrc")` + let extension = filename.and_then(|filename| filename.split('.').last()); let path_suffixes = [extension, filename, path.to_str()]; let empty = GlobSet::empty();