Show tree-sitter query source when signaling query error

* src/treesit.c (treesit_compose_query_signal_data): Add QUERY_SOURCE
parameter.
(treesit_ensure_query_compiled)
(Ftreesit_query_capture): Add query source.
This commit is contained in:
Yuan Fu 2022-12-30 16:57:45 -08:00
parent 0b58ea0e60
commit ab1f245f1a
No known key found for this signature in database
GPG key ID: 56E19BC57664A442

View file

@ -1194,10 +1194,12 @@ treesit_query_error_to_string (TSQueryError error)
static Lisp_Object
treesit_compose_query_signal_data (uint32_t error_offset,
TSQueryError error_type)
TSQueryError error_type,
Lisp_Object query_source)
{
return list3 (build_string (treesit_query_error_to_string (error_type)),
return list4 (build_string (treesit_query_error_to_string (error_type)),
make_fixnum (error_offset + 1),
query_source,
build_pure_c_string ("Debug the query with `treesit-query-validate'"));
}
@ -1239,7 +1241,8 @@ treesit_ensure_query_compiled (Lisp_Object query, Lisp_Object *signal_symbol,
{
*signal_symbol = Qtreesit_query_error;
*signal_data = treesit_compose_query_signal_data (error_offset,
error_type);
error_type,
source);
}
XTS_COMPILED_QUERY (query)->query = treesit_query;
return treesit_query;
@ -2627,7 +2630,7 @@ the query. */)
if (treesit_query == NULL)
xsignal (Qtreesit_query_error,
treesit_compose_query_signal_data (error_offset,
error_type));
error_type, query));
cursor = ts_query_cursor_new ();
needs_to_free_query_and_cursor = true;
}