From 2ee3edce3f5de55fc11997f522cbe2f00a4471fd Mon Sep 17 00:00:00 2001 From: Yuan Fu Date: Tue, 4 Jun 2024 19:55:33 -0700 Subject: Revert "New function treesit-parser-changed-ranges" This reverts commit 996b9576713f9d63ea7ff7e9630a15cb0a0214eb. For reason see 760b54de080. --- src/treesit.c | 49 ++++--------------------------------------------- 1 file changed, 4 insertions(+), 45 deletions(-) (limited to 'src/treesit.c') diff --git a/src/treesit.c b/src/treesit.c index 52d158b1bf8..d86ab501187 100644 --- a/src/treesit.c +++ b/src/treesit.c @@ -1017,8 +1017,9 @@ treesit_check_buffer_size (struct buffer *buffer) static Lisp_Object treesit_make_ranges (const TSRange *, uint32_t, struct buffer *); -static Lisp_Object -treesit_get_changed_ranges (TSTree *old_tree, TSTree *new_tree, Lisp_Object parser) +static void +treesit_call_after_change_functions (TSTree *old_tree, TSTree *new_tree, + Lisp_Object parser) { /* If the old_tree is NULL, meaning this is the first parse, the changed range is the whole buffer. */ @@ -1038,13 +1039,7 @@ treesit_get_changed_ranges (TSTree *old_tree, TSTree *new_tree, Lisp_Object pars lisp_ranges = Fcons (Fcons (Fpoint_min (), Fpoint_max ()), Qnil); set_buffer_internal (oldbuf); } - return lisp_ranges; -} -static void -treesit_call_after_change_functions (Lisp_Object lisp_ranges, - Lisp_Object parser) -{ specpdl_ref count = SPECPDL_INDEX (); /* let's trust the after change functions and not clone a new ranges @@ -1096,17 +1091,13 @@ treesit_ensure_parsed (Lisp_Object parser) XTS_PARSER (parser)->tree = new_tree; XTS_PARSER (parser)->need_reparse = false; - Lisp_Object changed_ranges; - changed_ranges = treesit_get_changed_ranges (tree, new_tree, parser); - XTS_PARSER (parser)->last_changed_ranges = changed_ranges; - /* After-change functions should run at the very end, most crucially after need_reparse is set to false, this way if the function calls some tree-sitter function which invokes treesit_ensure_parsed again, it returns early and do not recursively call the after change functions again. (ref:notifier-inside-ensure-parsed) */ - treesit_call_after_change_functions (changed_ranges, parser); + treesit_call_after_change_functions (tree, new_tree, parser); ts_tree_delete (tree); } @@ -1180,7 +1171,6 @@ make_treesit_parser (Lisp_Object buffer, TSParser *parser, lisp_parser->after_change_functions = Qnil; lisp_parser->tag = tag; lisp_parser->last_set_ranges = Qnil; - lisp_parser->last_changed_ranges = Qnil; lisp_parser->buffer = buffer; lisp_parser->parser = parser; lisp_parser->tree = tree; @@ -1828,32 +1818,6 @@ positions. PARSER is the parser issuing the notification. */) return Qnil; } -DEFUN ("treesit-parser-changed-ranges", Ftreesit_parser_changed_ranges, - Streesit_parser_changed_ranges, - 1, 2, 0, - doc: /* Return the buffer regions affected by the last reparse of PARSER. - -Returns a list of cons cells (BEG . END), where each cons cell represents -a region in which changes in buffer contents affected the last reparse. - -This function should almost always be called immediately after -reparsing. If it's called when there are new buffer edits that hasn't -been reparsed, Emacs signals the `treesit-unparsed-edits' error, unless -optional argument QUIET is non-nil. - -Calling this function multiple times consecutively doesn't change its -return value; it always returns the ranges affected by the last -reparse. */) - (Lisp_Object parser, Lisp_Object quiet) -{ - treesit_check_parser (parser); - - if (XTS_PARSER (parser)->need_reparse && NILP (quiet)) - xsignal1 (Qtreesit_unparsed_edits, parser); - - return XTS_PARSER (parser)->last_changed_ranges; -} - /*** Node API */ @@ -4046,7 +4010,6 @@ syms_of_treesit (void) DEFSYM (Qtreesit_query_error, "treesit-query-error"); DEFSYM (Qtreesit_parse_error, "treesit-parse-error"); DEFSYM (Qtreesit_range_invalid, "treesit-range-invalid"); - DEFSYM (Qtreesit_unparsed_edits, "treesit-unparsed_edits"); DEFSYM (Qtreesit_buffer_too_large, "treesit-buffer-too-large"); DEFSYM (Qtreesit_load_language_error, @@ -4075,8 +4038,6 @@ syms_of_treesit (void) define_error (Qtreesit_range_invalid, "RANGES are invalid: they have to be ordered and should not overlap", Qtreesit_error); - define_error (Qtreesit_unparsed_edits, "There are unparsed edits in the buffer", - Qtreesit_error); define_error (Qtreesit_buffer_too_large, "Buffer too large (> 4GiB)", Qtreesit_error); define_error (Qtreesit_load_language_error, @@ -4217,8 +4178,6 @@ the symbol of that THING. For example, (or sexp sentence). */); defsubr (&Streesit_parser_add_notifier); defsubr (&Streesit_parser_remove_notifier); - defsubr (&Streesit_parser_changed_ranges); - defsubr (&Streesit_node_type); defsubr (&Streesit_node_start); defsubr (&Streesit_node_end); -- cgit v1.2.1