aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorEli Zaretskii2022-10-16 16:22:09 +0300
committerEli Zaretskii2022-10-16 16:22:09 +0300
commit9d3f8912b431ed5540d9d06d85b7e338732268c9 (patch)
tree0b6fe69ab764dbb94b45aedd903ec23a20afc109 /src/alloc.c
parentf1e058d46b5a83ddd0423a3616aa50ac3ec7f551 (diff)
downloademacs-9d3f8912b431ed5540d9d06d85b7e338732268c9.tar.gz
emacs-9d3f8912b431ed5540d9d06d85b7e338732268c9.zip
Support MinGW build on MS-Windows
* src/treesit.c [WINDOWSNT]: Add MS-Windows boilerplate for dynamically-loaded optional libraries. (init_treesit_functions) [WINDOWSNT]: New function. (load_tree_sitter_if_necessary): New function. (ts_initialize): Call 'load_tree_sitter_if_necessary'. (ts_delete_parser, ts_delete_query, ts_named_node_p): Wrapper functions for TS calls from outside treesit.c. (Ftreesit_parser_root_node, Ftreesit_parser_set_included_ranges) (Ftreesit_parser_included_ranges, Ftreesit_node_type) (Ftreesit_node_start, Ftreesit_node_end, Ftreesit_node_string) (Ftreesit_node_parent, Ftreesit_node_child, Ftreesit_node_check) (Ftreesit_node_field_name_for_child, Ftreesit_node_child_count) (Ftreesit_node_next_sibling, Ftreesit_node_prev_sibling) (Ftreesit_node_first_child_for_pos) (Ftreesit_node_descendant_for_range, Ftreesit_node_eq) (Ftreesit_query_compile, Ftreesit_query_capture) (Ftreesit_search_subtree, Ftreesit_search_forward) (Ftreesit_induce_sparse_tree): Call 'ts_initialize' before any other TS functions. (Ftreesit_available_p): 'treesit-available-p' implemented in C, so that on WINDOWSNT the library could be loaded dynamically. * src/treesit.h (ts_delete_parser, ts_delete_query) (ts_named_node_p): Add prototypes. * src/print.c (print_vectorlike): * src/alloc.c (cleanup_vector): Call tree-sitter function via wrappers defined in treesit.c, not directly, because WINDOWSNT redefines the TS functions to be called via function pointers. * src/Makefile.in (base_obj): Add treesit.o (TREE_SITTER_OBJ): Remove. * lisp/treesit.el (treesit-available-p): Remove: now implemented in C. * lisp/term/w32-win.el (dynamic-library-alist): Add libtree-sitter DLLs. * configure.ac (TREE_SITTER): Support the MinGW build. (TREE_SITTER_OBJ): Remove.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c14
1 files changed, 2 insertions, 12 deletions
diff --git a/src/alloc.c b/src/alloc.c
index a8b57add60e..7197c183beb 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3171,19 +3171,9 @@ cleanup_vector (struct Lisp_Vector *vector)
3171 } 3171 }
3172#ifdef HAVE_TREE_SITTER 3172#ifdef HAVE_TREE_SITTER
3173 else if (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_TS_PARSER)) 3173 else if (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_TS_PARSER))
3174 { 3174 ts_delete_parser (PSEUDOVEC_STRUCT (vector, Lisp_TS_Parser));
3175 struct Lisp_TS_Parser *lisp_parser
3176 = PSEUDOVEC_STRUCT (vector, Lisp_TS_Parser);
3177 ts_tree_delete(lisp_parser->tree);
3178 ts_parser_delete(lisp_parser->parser);
3179 }
3180 else if (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_TS_COMPILED_QUERY)) 3175 else if (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_TS_COMPILED_QUERY))
3181 { 3176 ts_delete_query (PSEUDOVEC_STRUCT (vector, Lisp_TS_Query));
3182 struct Lisp_TS_Query *lisp_query
3183 = PSEUDOVEC_STRUCT (vector, Lisp_TS_Query);
3184 ts_query_delete (lisp_query->query);
3185 ts_query_cursor_delete (lisp_query->cursor);
3186 }
3187#endif 3177#endif
3188#ifdef HAVE_MODULES 3178#ifdef HAVE_MODULES
3189 else if (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_MODULE_FUNCTION)) 3179 else if (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_MODULE_FUNCTION))