From 4f44375abd3d8a10ee2820db373d4992ab3df42b Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Wed, 28 Sep 2022 13:38:54 -0700 Subject: [PATCH] Make Buffer::language_at fall back to Buffer::language For languages with no grammar (plain text), there will be no layers. --- crates/language/src/buffer.rs | 2 ++ crates/language/src/language.rs | 9 +++++++++ crates/language/src/syntax_map.rs | 1 + 3 files changed, 12 insertions(+) diff --git a/crates/language/src/buffer.rs b/crates/language/src/buffer.rs index 372f77cf2033a64b4ae65094299478270ed1df66..4ff1b002b0ba6f04cf1e27ff6c9e72469876ceed 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 341f70bff9dc26d442dc8ccf75096576c005b51e..b8d4ca309f943ebd5667b2942f93f461bb874928 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 a7d9101d7b8a9b8079b557dd435c7945f32df331..8983406690148f8e29f4a07b51bcfc964cd3d4e6 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>,