diff --git a/crates/language/src/buffer.rs b/crates/language/src/buffer.rs index 372f77cf20..4ff1b002b0 100644 --- a/crates/language/src/buffer.rs +++ b/crates/language/src/buffer.rs @@ -648,6 +648,7 @@ impl Buffer { .layers_for_range(offset..offset, &self.text) .last() .map(|info| info.language.clone()) + .or_else(|| self.language.clone()) } pub fn parse_count(&self) -> usize { @@ -1841,6 +1842,7 @@ impl BufferSnapshot { .layers_for_range(offset..offset, &self.text) .last() .map(|info| info.language) + .or(self.language.as_ref()) } pub fn surrounding_word(&self, start: T) -> (Range, Option) { diff --git a/crates/language/src/language.rs b/crates/language/src/language.rs index 341f70bff9..b8d4ca309f 100644 --- a/crates/language/src/language.rs +++ b/crates/language/src/language.rs @@ -26,6 +26,7 @@ use serde_json::Value; use std::{ any::Any, cell::RefCell, + fmt::Debug, mem, ops::Range, path::{Path, PathBuf}, @@ -866,6 +867,14 @@ impl Language { } } +impl Debug for Language { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("Language") + .field("name", &self.config.name) + .finish() + } +} + impl Grammar { pub fn id(&self) -> usize { self.id diff --git a/crates/language/src/syntax_map.rs b/crates/language/src/syntax_map.rs index a7d9101d7b..8983406690 100644 --- a/crates/language/src/syntax_map.rs +++ b/crates/language/src/syntax_map.rs @@ -92,6 +92,7 @@ struct SyntaxLayer { language: Arc, } +#[derive(Debug)] pub struct SyntaxLayerInfo<'a> { pub depth: usize, pub node: Node<'a>,