diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2020-02-26 19:39:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-26 19:39:56 +0100 |
commit | 78ec95ce7dc070899caf2b35f7058ba466fe7073 (patch) | |
tree | c18b41e10c87af838fddda94eb4e8f65ca671586 /src/tree_sitter/lexer.c | |
parent | 96059d72e539c0a23c1f7a24290f35247ff01749 (diff) | |
parent | 3ce9b05653a71efe2eeaeca6b6132d1227c367b7 (diff) | |
download | rneovim-78ec95ce7dc070899caf2b35f7058ba466fe7073.tar.gz rneovim-78ec95ce7dc070899caf2b35f7058ba466fe7073.tar.bz2 rneovim-78ec95ce7dc070899caf2b35f7058ba466fe7073.zip |
Merge pull request #11946 from bfredl/ts-sync
treesitter: update vendored tree-sitter runtime
Diffstat (limited to 'src/tree_sitter/lexer.c')
-rw-r--r-- | src/tree_sitter/lexer.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/tree_sitter/lexer.c b/src/tree_sitter/lexer.c index e2ca851973..3f8a4c0ae8 100644 --- a/src/tree_sitter/lexer.c +++ b/src/tree_sitter/lexer.c @@ -355,7 +355,7 @@ void ts_lexer_mark_end(Lexer *self) { ts_lexer__mark_end(&self->data); } -void ts_lexer_set_included_ranges( +bool ts_lexer_set_included_ranges( Lexer *self, const TSRange *ranges, uint32_t count @@ -363,6 +363,16 @@ void ts_lexer_set_included_ranges( if (count == 0 || !ranges) { ranges = &DEFAULT_RANGE; count = 1; + } else { + uint32_t previous_byte = 0; + for (unsigned i = 0; i < count; i++) { + const TSRange *range = &ranges[i]; + if ( + range->start_byte < previous_byte || + range->end_byte < range->start_byte + ) return false; + previous_byte = range->end_byte; + } } size_t size = count * sizeof(TSRange); @@ -370,6 +380,7 @@ void ts_lexer_set_included_ranges( memcpy(self->included_ranges, ranges, size); self->included_range_count = count; ts_lexer_goto(self, self->current_position); + return true; } TSRange *ts_lexer_included_ranges(const Lexer *self, uint32_t *count) { |