emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs-29 ab1f245f1a: Show tree-sitter query source when signaling query


From: Yuan Fu
Subject: emacs-29 ab1f245f1a: Show tree-sitter query source when signaling query error
Date: Fri, 30 Dec 2022 20:02:30 -0500 (EST)

branch: emacs-29
commit ab1f245f1a1b36bae9a3051b6cb93ecd5b78dd7a
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>

    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.
---
 src/treesit.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/treesit.c b/src/treesit.c
index a9bfcb3d9e..974d2fc451 100644
--- a/src/treesit.c
+++ b/src/treesit.c
@@ -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;
     }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]