--- src/treesit.c 2025-07-05 17:56:00.000000000 +0800 +++ src/treesit.c 2026-03-20 17:59:51.000000000 +0800 @@ -34,7 +34,11 @@ # include "w32common.h" /* In alphabetical order. */ +#if TREE_SITTER_LANGUAGE_VERSION >= 15 +#undef ts_language_abi_version +#else #undef ts_language_version +#endif #undef ts_node_child #undef ts_node_child_by_field_name #undef ts_node_child_count @@ -89,7 +93,11 @@ #undef ts_tree_get_changed_ranges #undef ts_tree_root_node +#if TREE_SITTER_LANGUAGE_VERSION >= 15 +DEF_DLL_FN (uint32_t, ts_language_abi_version, (const TSLanguage *)); +#else DEF_DLL_FN (uint32_t, ts_language_version, (const TSLanguage *)); +#endif DEF_DLL_FN (TSNode, ts_node_child, (TSNode, uint32_t)); DEF_DLL_FN (TSNode, ts_node_child_by_field_name, (TSNode, const char *, uint32_t)); @@ -166,7 +174,11 @@ if (!library) return false; +#if TREE_SITTER_LANGUAGE_VERSION >= 15 + LOAD_DLL_FN (library, ts_language_abi_version); +#else LOAD_DLL_FN (library, ts_language_version); +#endif LOAD_DLL_FN (library, ts_node_child); LOAD_DLL_FN (library, ts_node_child_by_field_name); LOAD_DLL_FN (library, ts_node_child_count); @@ -224,7 +236,11 @@ return true; } +#if TREE_SITTER_LANGUAGE_VERSION >= 15 +#define ts_language_abi_version fn_ts_language_abi_version +#else #define ts_language_version fn_ts_language_version +#endif #define ts_node_child fn_ts_node_child #define ts_node_child_by_field_name fn_ts_node_child_by_field_name #define ts_node_child_count fn_ts_node_child_count @@ -745,8 +761,13 @@ if (!success) { *signal_symbol = Qtreesit_load_language_error; +#if TREE_SITTER_LANGUAGE_VERSION >= 15 + *signal_data = list2 (Qversion_mismatch, + make_fixnum (ts_language_abi_version (lang))); +#else *signal_data = list2 (Qversion_mismatch, make_fixnum (ts_language_version (lang))); +#endif return NULL; } return lang; @@ -817,7 +838,11 @@ &signal_data); if (ts_language == NULL) return Qnil; +#if TREE_SITTER_LANGUAGE_VERSION >= 15 + uint32_t version = ts_language_abi_version (ts_language); +#else uint32_t version = ts_language_version (ts_language); +#endif return make_fixnum((ptrdiff_t) version); } }