diff options
| author | Eli Zaretskii | 2022-10-16 16:22:09 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2022-10-16 16:22:09 +0300 |
| commit | 9d3f8912b431ed5540d9d06d85b7e338732268c9 (patch) | |
| tree | 0b6fe69ab764dbb94b45aedd903ec23a20afc109 /src/alloc.c | |
| parent | f1e058d46b5a83ddd0423a3616aa50ac3ec7f551 (diff) | |
| download | emacs-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.c | 14 |
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)) |