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;