diff --git a/crates/language/src/buffer.rs b/crates/language/src/buffer.rs index aeb870288c0199b0d6d69e3d96fa625e61941d22..0d6f797bc3c150a708a986f385852f75b42d0d86 100644 --- a/crates/language/src/buffer.rs +++ b/crates/language/src/buffer.rs @@ -1376,11 +1376,20 @@ impl Buffer { /// Returns each [`Language`] for the active syntax layers at the given location. pub fn languages_at(&self, position: D) -> Vec> { let offset = position.to_offset(self); - self.syntax_map + let mut languages: Vec> = self + .syntax_map .lock() .layers_for_range(offset..offset, &self.text, false) .map(|info| info.language.clone()) - .collect() + .collect(); + + if languages.is_empty() { + if let Some(buffer_language) = self.language() { + languages.push(buffer_language.clone()); + } + } + + languages } /// An integer version number that accounts for all updates besides