diff options
Diffstat (limited to 'helix-core/src/syntax.rs')
-rw-r--r-- | helix-core/src/syntax.rs | 118 |
1 files changed, 62 insertions, 56 deletions
diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs index b936ecd3..b661efad 100644 --- a/helix-core/src/syntax.rs +++ b/helix-core/src/syntax.rs @@ -1,52 +1,52 @@ -pub struct LanguageMode { - parser: Parser, -} - -impl LanguageMode { - // buffer, grammar, config, grammars, sync_timeout? - pub fn new() -> Self { - unimplemented!() - // make a new root layer - // track markers of injections - // - // track scope_descriptor: a Vec of scopes for item in tree - // - // fetch grammar for parser based on language string - // update root layer - } +// pub struct Syntax { +// parser: Parser, +// } - // fn buffer_changed -> call layer.update(range, new_text) on root layer and then all marker layers - - // call this on transaction.apply() -> buffer_changed(changes) - // - // fn parse(language, old_tree, ranges) - // - // fn tree() -> Tree - // - // <!--update_for_injection(grammar)--> - - // Highlighting - // fn highlight_iter() -> iterates over all the scopes - // on_tokenize - // on_change_highlighting - - // Commenting - // comment_strings_for_pos - // is_commented - - // Indentation - // suggested_indent_for_line_at_buffer_row - // suggested_indent_for_buffer_row - // indent_level_for_line - - // TODO: Folding - - // Syntax APIs - // get_syntax_node_containing_range -> - // ... - // get_syntax_node_at_pos - // buffer_range_for_scope_at_pos -} +//impl Syntax { +// // buffer, grammar, config, grammars, sync_timeout? +// pub fn new() -> Self { +// unimplemented!() +// // make a new root layer +// // track markers of injections +// // +// // track scope_descriptor: a Vec of scopes for item in tree +// // +// // fetch grammar for parser based on language string +// // update root layer +// } + +// // fn buffer_changed -> call layer.update(range, new_text) on root layer and then all marker layers + +// // call this on transaction.apply() -> buffer_changed(changes) +// // +// // fn parse(language, old_tree, ranges) +// // +// // fn tree() -> Tree +// // +// // <!--update_for_injection(grammar)--> + +// // Highlighting +// // fn highlight_iter() -> iterates over all the scopes +// // on_tokenize +// // on_change_highlighting + +// // Commenting +// // comment_strings_for_pos +// // is_commented + +// // Indentation +// // suggested_indent_for_line_at_buffer_row +// // suggested_indent_for_buffer_row +// // indent_level_for_line + +// // TODO: Folding + +// // Syntax APIs +// // get_syntax_node_containing_range -> +// // ... +// // get_syntax_node_at_pos +// // buffer_range_for_scope_at_pos +//} pub struct LanguageLayer { // mode @@ -55,12 +55,12 @@ pub struct LanguageLayer { // tree: Tree, } -impl LanguageLayer { - // fn highlight_iter() -> same as Mode but for this layer. Mode composits these - // fn buffer_changed - // fn update(range) - // fn update_injections() -} +// impl LanguageLayer { +// // fn highlight_iter() -> same as Mode but for this layer. Mode composits these +// // fn buffer_changed +// // fn update(range) +// // fn update_injections() +// } // -- refactored from tree-sitter-highlight to be able to retain state // TODO: add seek() to iter @@ -189,13 +189,19 @@ struct HighlightIterLayer<'a> { depth: usize, } -impl Highlighter { - pub fn new() -> Self { +impl Default for Highlighter { + fn default() -> Self { Highlighter { parser: Parser::new(), cursors: Vec::new(), } } +} + +impl Highlighter { + pub fn new() -> Self { + Self::default() + } pub fn parser(&mut self) -> &mut Parser { &mut self.parser |