summaryrefslogtreecommitdiff
path: root/src/print.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/print.c')
-rw-r--r--src/print.c34
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);