diff options
Diffstat (limited to 'src/print.c')
-rw-r--r-- | src/print.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/print.c b/src/print.c index 1c96ec14b86..4f41448d861 100644 --- a/src/print.c +++ b/src/print.c @@ -48,6 +48,10 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ # include <sys/socket.h> /* for F_DUPFD_CLOEXEC */ #endif +#ifdef HAVE_TREE_SITTER +#include "treesit.h" +#endif + struct terminal; /* Avoid actual stack overflow in print. */ @@ -2009,6 +2013,36 @@ print_vectorlike (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag, } break; #endif + +#ifdef HAVE_TREE_SITTER + case PVEC_TS_PARSER: + print_c_string ("#<treesit-parser for ", printcharfun); + Lisp_Object language = XTS_PARSER (obj)->language_symbol; + print_string (Fsymbol_name (language), printcharfun); + print_c_string (" in ", printcharfun); + print_object (XTS_PARSER (obj)->buffer, printcharfun, escapeflag); + printchar ('>', printcharfun); + break; + case PVEC_TS_NODE: + /* Prints #<treesit-node (identifier) in #<buffer xxx>> or + #<treesit-node "keyword" in #<buffer xxx>>. */ + print_c_string ("#<treesit-node ", printcharfun); + bool named = ts_node_is_named (XTS_NODE (obj)->node); + const char *delim1 = named ? "(" : "\""; + const char *delim2 = named ? ")" : "\""; + print_c_string (delim1, printcharfun); + print_string (Ftreesit_node_type (obj), printcharfun); + print_c_string (delim2, printcharfun); + print_c_string (" in ", printcharfun); + print_object (XTS_PARSER (XTS_NODE (obj)->parser)->buffer, + printcharfun, escapeflag); + printchar ('>', printcharfun); + break; + case PVEC_TS_COMPILED_QUERY: + print_c_string ("#<treesit-compiled-query>", printcharfun); + break; +#endif + case PVEC_SQLITE: { print_c_string ("#<sqlite ", printcharfun); |