Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-syntax/src/tree_sitter.rs')
| -rw-r--r-- | helix-syntax/src/tree_sitter.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/helix-syntax/src/tree_sitter.rs b/helix-syntax/src/tree_sitter.rs new file mode 100644 index 00000000..78e3d4a0 --- /dev/null +++ b/helix-syntax/src/tree_sitter.rs @@ -0,0 +1,45 @@ +mod grammar; +mod parser; +pub mod query; +mod query_cursor; +mod query_match; +mod ropey; +mod syntax_tree; +mod syntax_tree_node; + +use std::ops; + +pub use grammar::Grammar; +pub use parser::{Parser, ParserInputRaw}; +pub use query::{Capture, Pattern, Query, QueryStr}; +pub use query_cursor::{InactiveQueryCursor, MatchedNode, MatchedNodeIdx, QueryCursor, QueryMatch}; +pub use ropey::RopeTsInput; +pub use syntax_tree::{InputEdit, SyntaxTree}; +pub use syntax_tree_node::SyntaxTreeNode; + +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub struct Point { + pub row: u32, + pub col: u32, +} + +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub struct Range { + pub start_point: Point, + pub end_point: Point, + pub start_byte: u32, + pub end_byte: u32, +} + +pub trait TsInput { + type Cursor: regex_cursor::Cursor; + fn cursor_at(&mut self, offset: usize) -> &mut Self::Cursor; + fn eq(&mut self, range1: ops::Range<usize>, range2: ops::Range<usize>) -> bool; +} + +pub trait IntoTsInput { + type TsInput: TsInput; + fn into_ts_input(self) -> Self::TsInput; +} |