From c230658bae80dcd6a56669218b9386f6ae13e372 Mon Sep 17 00:00:00 2001 From: Rob Rix Date: Fri, 10 Feb 2017 09:10:31 -0500 Subject: [PATCH] Add public API to set the input string with explicit length. --- include/tree_sitter/runtime.h | 1 + src/runtime/document.c | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/include/tree_sitter/runtime.h b/include/tree_sitter/runtime.h index 00d8e7c4..69334ad0 100644 --- a/include/tree_sitter/runtime.h +++ b/include/tree_sitter/runtime.h @@ -104,6 +104,7 @@ void ts_document_set_language(TSDocument *, const TSLanguage *); TSInput ts_document_input(TSDocument *); void ts_document_set_input(TSDocument *, TSInput); void ts_document_set_input_string(TSDocument *, const char *); +void ts_document_set_input_string_with_length(TSDocument *, const char *, uint32_t); TSLogger ts_document_logger(const TSDocument *); void ts_document_set_logger(TSDocument *, TSLogger); void ts_document_print_debugging_graphs(TSDocument *, bool); diff --git a/src/runtime/document.c b/src/runtime/document.c index 8c1eb779..ff09610d 100644 --- a/src/runtime/document.c +++ b/src/runtime/document.c @@ -77,6 +77,15 @@ void ts_document_set_input_string(TSDocument *self, const char *text) { } } +void ts_document_set_input_string_with_length(TSDocument *self, const char *text, uint32_t length) { + ts_document_invalidate(self); + TSInput input = ts_string_input_make_with_length(text, length); + ts_document_set_input(self, input); + if (input.payload) { + self->owns_input = true; + } +} + void ts_document_edit(TSDocument *self, TSInputEdit edit) { if (!self->tree) return;