diff options
author | notoria | 2021-06-06 15:55:05 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2021-06-10 13:00:08 +0000 |
commit | 1a3a92463405fdd4738fbdbfda212aef58a2919d (patch) | |
tree | bc47fdc4957a6890cbad286c52a445ba5d96da9a /helix-core/src/syntax.rs | |
parent | aebdef8257173b31df77ae02bb23ec2abfd07e5c (diff) |
Implement Debug for data structure as a feature
Diffstat (limited to 'helix-core/src/syntax.rs')
-rw-r--r-- | helix-core/src/syntax.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs index b0f82ca1..ca20ff1a 100644 --- a/helix-core/src/syntax.rs +++ b/helix-core/src/syntax.rs @@ -1,6 +1,8 @@ use crate::{regex::Regex, Change, Rope, RopeSlice, Transaction}; pub use helix_syntax::{get_language, get_language_name, Lang}; +#[cfg(feature = "debug")] +use std::fmt; use std::{ borrow::Cow, cell::RefCell, @@ -12,12 +14,14 @@ use std::{ use once_cell::sync::{Lazy, OnceCell}; use serde::{Deserialize, Serialize}; +#[cfg_attr(feature = "debug", derive(Debug))] #[derive(Serialize, Deserialize)] pub struct Configuration { pub language: Vec<LanguageConfiguration>, } // largely based on tree-sitter/cli/src/loader.rs +#[cfg_attr(feature = "debug", derive(Debug))] #[derive(Serialize, Deserialize)] #[serde(rename_all = "kebab-case")] pub struct LanguageConfiguration { @@ -46,6 +50,7 @@ pub struct LanguageConfiguration { pub(crate) indent_query: OnceCell<Option<IndentQuery>>, } +#[cfg_attr(feature = "debug", derive(Debug))] #[derive(Serialize, Deserialize)] #[serde(rename_all = "kebab-case")] pub struct LanguageServerConfiguration { @@ -55,6 +60,7 @@ pub struct LanguageServerConfiguration { pub args: Vec<String>, } +#[cfg_attr(feature = "debug", derive(Debug))] #[derive(Serialize, Deserialize)] #[serde(rename_all = "kebab-case")] pub struct IndentationConfiguration { @@ -62,6 +68,7 @@ pub struct IndentationConfiguration { pub unit: String, } +#[cfg_attr(feature = "debug", derive(Debug))] #[derive(Serialize, Deserialize)] #[serde(rename_all = "kebab-case")] pub struct IndentQuery { @@ -189,6 +196,7 @@ impl LanguageConfiguration { pub static LOADER: OnceCell<Loader> = OnceCell::new(); +#[cfg_attr(feature = "debug", derive(Debug))] pub struct Loader { // highlight_names ? language_configs: Vec<Arc<LanguageConfiguration>>, @@ -256,6 +264,13 @@ pub struct TsParser { cursors: Vec<QueryCursor>, } +#[cfg(feature = "debug")] +impl fmt::Debug for TsParser { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("TsParser").finish_non_exhaustive() + } +} + // could also just use a pool, or a single instance? thread_local! { pub static PARSER: RefCell<TsParser> = RefCell::new(TsParser { @@ -264,6 +279,7 @@ thread_local! { }) } +#[cfg_attr(feature = "debug", derive(Debug))] pub struct Syntax { config: Arc<HighlightConfiguration>, @@ -444,6 +460,7 @@ impl Syntax { // buffer_range_for_scope_at_pos } +#[cfg_attr(feature = "debug", derive(Debug))] pub struct LanguageLayer { // mode // grammar @@ -752,6 +769,7 @@ pub enum HighlightEvent { /// Contains the data neeeded to higlight code written in a particular language. /// /// This struct is immutable and can be shared between threads. +#[cfg_attr(feature = "debug", derive(Debug))] pub struct HighlightConfiguration { pub language: Grammar, pub query: Query, @@ -782,6 +800,7 @@ struct LocalScope<'a> { local_defs: Vec<LocalDef<'a>>, } +#[cfg_attr(feature = "debug", derive(Debug))] struct HighlightIter<'a, 'tree: 'a, F> where F: FnMut(&str) -> Option<&'a HighlightConfiguration> + 'a, @@ -807,6 +826,13 @@ struct HighlightIterLayer<'a, 'tree: 'a> { depth: usize, } +#[cfg(feature = "debug")] +impl<'a, 'tree: 'a> fmt::Debug for HighlightIterLayer<'a, 'tree> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("HighlightIterLayer").finish_non_exhaustive() + } +} + impl HighlightConfiguration { /// Creates a `HighlightConfiguration` for a given `Grammar` and set of highlighting /// queries. |