Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package emacs for openSUSE:Factory checked in at 2026-04-21 12:42:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/emacs (Old) and /work/SRC/openSUSE:Factory/.emacs.new.11940 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "emacs" Tue Apr 21 12:42:33 2026 rev:217 rq:1348197 version:30.2 Changes: -------- --- /work/SRC/openSUSE:Factory/emacs/emacs.changes 2026-03-08 17:26:55.982924761 +0100 +++ /work/SRC/openSUSE:Factory/.emacs.new.11940/emacs.changes 2026-04-21 12:43:01.165937190 +0200 @@ -1,0 +2,8 @@ +Mon Apr 20 08:37:05 UTC 2026 - Dr. Werner Fink <[email protected]> + +- Add patch emacs-30.2-silent.patch + * To silent the useless warning on memmove +- Add patch emacs-30.2-tree-sitter-0.26.8.patch + * Make it build with tree-sitter-0.26.8 security update (boo#1262007) + +------------------------------------------------------------------- New: ---- emacs-30.2-silent.patch emacs-30.2-tree-sitter-0.26.8.patch ----------(New B)---------- New: - Add patch emacs-30.2-silent.patch * To silent the useless warning on memmove New: * To silent the useless warning on memmove - Add patch emacs-30.2-tree-sitter-0.26.8.patch * Make it build with tree-sitter-0.26.8 security update (boo#1262007) ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ emacs.spec ++++++ --- /var/tmp/diff_new_pack.V7vzKq/_old 2026-04-21 12:43:02.477991703 +0200 +++ /var/tmp/diff_new_pack.V7vzKq/_new 2026-04-21 12:43:02.481991869 +0200 @@ -242,6 +242,7 @@ Patch7: emacs-24.1-ps-mule.patch Patch8: emacs-24.4-nonvoid.patch Patch9: desktop.patch +Patch10: emacs-30.2-silent.patch Patch12: emacs-24.3-x11r7.patch Patch15: emacs-24.3-iconic.patch Patch16: emacs-24.4-flyspell.patch @@ -256,6 +257,7 @@ Patch55: 0015-Change-native-comp-async-jobs-number-default-to-1.patch Patch56: 0016-Change-native-comp-async-report-warnings-errors-to-s.patch Patch57: emacs-30.2-fix-zoom.patch +Patch58: emacs-30.2-tree-sitter-0.26.8.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %{expand: %%global include_info %(test -s /usr/share/info/info.info* && echo 0 || echo 1)} @@ -434,6 +436,7 @@ %patch -P55 -p1 %patch -P56 -p1 %patch -P57 -p1 +%patch -P58 -p1 %patch -P1 -p0 -b .xauth %if %{with memmmap} %patch -P2 -p0 -b .glibc @@ -445,6 +448,7 @@ %patch -P7 -p0 -b .psmu %patch -P8 -p0 -b .nvoid %patch -P9 -p0 +%patch -P10 -p0 %patch -P12 -p0 -b .x11r7 %patch -P15 -p0 -b .iconic %patch -P16 -p0 -b .flyspell ++++++ emacs-30.2-silent.patch ++++++ --- src/character.c | 3 +++ 1 file changed, 3 insertions(+) --- src/character.c +++ src/character.c 2026-04-20 08:49:09.653698091 +0000 @@ -617,7 +617,10 @@ str_as_multibyte (unsigned char *str, pt to = p; nbytes = endp - p; endp = str + len; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstringop-overflow" memmove (endp - nbytes, p, nbytes); +#pragma GCC diagnostic pop p = endp - nbytes; if (nbytes >= MAX_MULTIBYTE_LENGTH) ++++++ emacs-30.2-tree-sitter-0.26.8.patch ++++++ >From 2a75693f24a631b0a2a366bdce1ca5cb0c38d215 Mon Sep 17 00:00:00 2001 From: Yuan Fu <[email protected]> Date: Tue, 27 Aug 2024 22:31:42 -0700 Subject: [PATCH] Add Ftreesit_grammar_location * src/treesit.c (treesit_loaded_lang): New struct. (treesit_load_language): Return a struct instead of just the language object. The struct contains both the language object and the path to the shared library. (Ftreesit_language_available_p, Ftreesit_language_abi_version) (treesit_ensure_query_compiled, Ftreesit_parser_create): Update call of treesit_load_language. (Ftreesit_grammar_location): New function. --- src/treesit.c | 71 +++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 58 insertions(+), 13 deletions(-) diff --git a/src/treesit.c b/src/treesit.c index 0ba6c733d64..8c586109b2d 100644 --- a/src/treesit.c +++ b/src/treesit.c @@ -22,6 +22,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ #include <config.h> #include "lisp.h" #include "buffer.h" +#include "coding.h" #include "treesit.h" @@ -541,6 +542,15 @@ treesit_debug_print_parser_list (char *msg, Lisp_Object parser) /*** Loading language library */ +struct treesit_loaded_lang +{ + /* The language object, or NULL if the language failed to load. */ + TSLanguage *lang; + /* The absolute file name of the shared library, or NULL if access + failed. */ + const char *filename; +}; + /* Translate a symbol treesit-<lang> to a C name treesit_<lang>. */ static void treesit_symbol_to_c_name (char *symbol_name) @@ -625,7 +635,7 @@ treesit_load_language_push_for_each_suffix (Lisp_Object lib_base_name, If error occurs, return NULL and fill SIGNAL_SYMBOL and SIGNAL_DATA with values suitable for xsignal. */ -static TSLanguage * +static struct treesit_loaded_lang treesit_load_language (Lisp_Object language_symbol, Lisp_Object *signal_symbol, Lisp_Object *signal_data) { @@ -676,6 +686,7 @@ treesit_load_language (Lisp_Object language_symbol, dynlib_handle_ptr handle; const char *error; Lisp_Object error_list = Qnil; + struct treesit_loaded_lang loaded_lang = { NULL, NULL }; tail = path_candidates; error = NULL; @@ -700,7 +711,7 @@ treesit_load_language (Lisp_Object language_symbol, mismatch. */ *signal_symbol = Qtreesit_load_language_error; *signal_data = Fcons (Qnot_found, Fnreverse (error_list)); - return NULL; + return loaded_lang; } /* Load TSLanguage. */ @@ -722,7 +733,7 @@ treesit_load_language (Lisp_Object language_symbol, { *signal_symbol = Qtreesit_load_language_error; *signal_data = list2 (Qsymbol_error, build_string (error)); - return NULL; + return loaded_lang; } TSLanguage *lang = (*langfn) (); @@ -735,9 +746,14 @@ treesit_load_language (Lisp_Object language_symbol, *signal_symbol = Qtreesit_load_language_error; *signal_data = list2 (Qversion_mismatch, make_fixnum (ts_language_version (lang))); - return NULL; + return loaded_lang; } - return lang; + + const char *sym; + dynlib_addr ((void (*)) langfn, &loaded_lang.filename, &sym); + + loaded_lang.lang = lang; + return loaded_lang; } DEFUN ("treesit-language-available-p", Ftreesit_language_available_p, @@ -754,7 +770,9 @@ If DETAIL is non-nil, return (t . nil) when LANGUAGE is available, treesit_initialize (); Lisp_Object signal_symbol = Qnil; Lisp_Object signal_data = Qnil; - if (treesit_load_language (language, &signal_symbol, &signal_data) == NULL) + struct treesit_loaded_lang loaded_lang + = treesit_load_language (language, &signal_symbol, &signal_data); + if (loaded_lang.lang == NULL) { if (NILP (detail)) return Qnil; @@ -800,9 +818,9 @@ Return nil if a grammar library for LANGUAGE is not available. */) { Lisp_Object signal_symbol = Qnil; Lisp_Object signal_data = Qnil; - TSLanguage *ts_language = treesit_load_language (language, - &signal_symbol, - &signal_data); + struct treesit_loaded_lang lang + = treesit_load_language (language, &signal_symbol, &signal_data); + TSLanguage *ts_language = lang.lang; if (ts_language == NULL) return Qnil; uint32_t version = ts_language_version (ts_language); @@ -810,6 +828,30 @@ Return nil if a grammar library for LANGUAGE is not available. */) } } +/* This function isn't documented in the manual since it's mainly for + debugging. */ +DEFUN ("treesit-grammar-location", Ftreesit_grammar_location, + Streesit_grammar_location, + 1, 1, 0, + doc: /* Return the absolute file name of the grammar file for LANGUAGE. + +If LANGUAGE isn't loaded yet, load it first. If the language can't be +loaded or the file name couldn't be determined, return nil. */) + (Lisp_Object language) +{ + CHECK_SYMBOL (language); + + Lisp_Object signal_symbol = Qnil; + Lisp_Object signal_data = Qnil; + struct treesit_loaded_lang lang + = treesit_load_language (language, &signal_symbol, &signal_data); + + if (!lang.lang || !lang.filename) return Qnil; + + return DECODE_FILE (make_unibyte_string (lang.filename, + strlen (lang.filename))); +} + /*** Parsing functions */ @@ -1401,8 +1443,9 @@ treesit_ensure_query_compiled (Lisp_Object query, Lisp_Object *signal_symbol, Lisp_Object language = XTS_COMPILED_QUERY (query)->language; /* This is the main reason why we compile query lazily: to avoid loading languages early. */ - TSLanguage *treesit_lang = treesit_load_language (language, signal_symbol, - signal_data); + struct treesit_loaded_lang lang + = treesit_load_language (language, signal_symbol, signal_data); + TSLanguage *treesit_lang = lang.lang; if (treesit_lang == NULL) return NULL; @@ -1573,8 +1616,9 @@ an indirect buffer. */) Lisp_Object signal_symbol = Qnil; Lisp_Object signal_data = Qnil; TSParser *parser = ts_parser_new (); - TSLanguage *lang = treesit_load_language (language, &signal_symbol, - &signal_data); + struct treesit_loaded_lang loaded_lang + = treesit_load_language (language, &signal_symbol, &signal_data); + TSLanguage *lang = loaded_lang.lang; if (lang == NULL) xsignal (signal_symbol, signal_data); /* We check language version when loading a language, so this should @@ -4369,6 +4413,7 @@ applies to LANGUAGE-A will be redirected to LANGUAGE-B instead. */); defsubr (&Streesit_language_available_p); defsubr (&Streesit_library_abi_version); defsubr (&Streesit_language_abi_version); + defsubr (&Streesit_grammar_location); defsubr (&Streesit_parser_p); defsubr (&Streesit_node_p); -- 2.51.0 >From 38789e9a2878846cadb72fef58cc24872fe46ae4 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii <[email protected]> Date: Sun, 18 May 2025 09:05:07 +0300 Subject: [PATCH] Improve reporting of language-grammar library ABI version mismatch * lisp/treesit.el (treesit-ready-p): More accurate wording of message when grammar library fails to load. * src/treesit.c (treesit_load_language): Improve message when reporting library ABI version mismatch. Suggested by Soham Gumaste <[email protected]>. --- lisp/treesit.el | 2 +- src/treesit.c | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lisp/treesit.el b/lisp/treesit.el index a353bc942d3..68de843ce4d 100644 --- a/lisp/treesit.el +++ b/lisp/treesit.el @@ -4297,7 +4297,7 @@ instead of emitting a warning." (pcase-let ((`(,available . ,err) (treesit-language-available-p lang t))) (when (not available) - (setq msg (format "language grammar for %s is unavailable (%s): %s" + (setq msg (format "language grammar for %s failed to load (%s): %s" lang (nth 0 err) (string-join (mapcar (lambda (x) (format "%s" x)) diff --git a/src/treesit.c b/src/treesit.c index 3a19e0cb282..de74e41c89a 100644 --- a/src/treesit.c +++ b/src/treesit.c @@ -757,6 +757,7 @@ treesit_load_language (Lisp_Object language_symbol, error = NULL; handle = NULL; + Lisp_Object loaded_lib = Qnil; FOR_EACH_TAIL (tail) { char *library_name = SSDATA (XCAR (tail)); @@ -764,7 +765,10 @@ treesit_load_language (Lisp_Object language_symbol, handle = dynlib_open (library_name); error = dynlib_error (); if (error == NULL) - break; + { + loaded_lib = XCAR (tail); + break; + } else error_list = Fcons (build_string (error), error_list); } @@ -808,9 +812,15 @@ treesit_load_language (Lisp_Object language_symbol, ts_parser_delete (parser); if (!success) { + Lisp_Object fmt = + build_string ("%s's ABI version is %d, but supported versions are %d-%d"); + Lisp_Object formatted_msg = + CALLN (Fformat_message, fmt, loaded_lib, + make_fixnum (ts_language_version (lang)), + make_fixnum (TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION), + make_fixnum (TREE_SITTER_LANGUAGE_VERSION)); *signal_symbol = Qtreesit_load_language_error; - *signal_data = list2 (Qversion_mismatch, - make_fixnum (ts_language_version (lang))); + *signal_data = list2 (Qlang_version_mismatch, formatted_msg); return loaded_lang; } @@ -5091,7 +5101,7 @@ syms_of_treesit (void) DEFSYM (Qnot_found, "not-found"); DEFSYM (Qsymbol_error, "symbol-error"); - DEFSYM (Qversion_mismatch, "version-mismatch"); + DEFSYM (Qlang_version_mismatch, "language-grammar-version-mismatch"); DEFSYM (Qtreesit_error, "treesit-error"); DEFSYM (Qtreesit_query_error, "treesit-query-error"); -- 2.51.0 >From d587ce8c65a0e22ab0a63ef2873a3dfcfbeba166 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii <[email protected]> Date: Fri, 17 Oct 2025 14:15:41 +0300 Subject: [PATCH] Support Tree-sitter version 0.26 and later * src/treesit.c (init_treesit_functions) [TREE_SITTER_LANGUAGE_VERSION >= 15]: Define prototype for, and load 'ts_language_abi_version' instead of the deprecated (and removed in tree-sitter 0.26) 'ts_language_version'. (ts_language_abi_version) [TREE_SITTER_LANGUAGE_VERSION >= 15]: Define on WINDOWSNT, instead of 'ts_language_version'. (treesit_language_abi_version): New compatibility function. (treesit_load_language, Ftreesit_language_abi_version): Use 'treesit_language_abi_version' instead of 'ts_language_version'. (Bug#79627) --- src/treesit.c | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/src/treesit.c b/src/treesit.c index bf982de580b..69751b5ea10 100644 --- a/src/treesit.c +++ b/src/treesit.c @@ -35,7 +35,11 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ # 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 @@ -90,7 +94,11 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ #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)); @@ -167,7 +175,11 @@ init_treesit_functions (void) 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); @@ -225,7 +237,11 @@ init_treesit_functions (void) 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 @@ -711,6 +727,22 @@ treesit_load_language_push_for_each_suffix (Lisp_Object lib_base_name, } } +/* This function is a compatibility shim. Tree-sitter 0.25 introduced + ts_language_abi_version as a replacement for ts_language_version, and + tree-sitter 0.26 removed ts_language_version. Here we use the fact + that 0.25 bumped TREE_SITTER_LANGUAGE_VERSION to 15, to use the new + function instead of the old one, when Emacs is compiled against + tree-sitter version 0.25 or newer. */ +static uint32_t +treesit_language_abi_version (const TSLanguage *ts_lang) +{ +#if TREE_SITTER_LANGUAGE_VERSION >= 15 + return ts_language_abi_version (ts_lang); +#else + return ts_language_version (ts_lang); +#endif +} + /* Load the dynamic library of LANGUAGE_SYMBOL and return the pointer to the language definition. @@ -832,7 +864,7 @@ treesit_load_language (Lisp_Object language_symbol, build_string ("%s's ABI version is %d, but supported versions are %d-%d"); Lisp_Object formatted_msg = CALLN (Fformat_message, fmt, loaded_lib, - make_fixnum (ts_language_version (lang)), + make_fixnum (treesit_language_abi_version (lang)), make_fixnum (TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION), make_fixnum (TREE_SITTER_LANGUAGE_VERSION)); *signal_symbol = Qtreesit_load_language_error; @@ -914,7 +946,7 @@ Return nil if a grammar library for LANGUAGE is not available. */) TSLanguage *ts_language = lang.lang; if (ts_language == NULL) return Qnil; - uint32_t version = ts_language_version (ts_language); + uint32_t version = treesit_language_abi_version (ts_language); return make_fixnum((ptrdiff_t) version); } } -- 2.51.0
