Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package neovim for openSUSE:Factory checked in at 2026-04-21 12:45:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/neovim (Old) and /work/SRC/openSUSE:Factory/.neovim.new.11940 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "neovim" Tue Apr 21 12:45:54 2026 rev:84 rq:1346504 version:0.12.1 Changes: -------- --- /work/SRC/openSUSE:Factory/neovim/neovim.changes 2026-01-30 18:34:23.632019614 +0100 +++ /work/SRC/openSUSE:Factory/.neovim.new.11940/neovim.changes 2026-04-21 12:47:52.898042473 +0200 @@ -1,0 +2,78 @@ +Sat Apr 11 19:02:06 UTC 2026 - Richard Rahl <[email protected]> + +- Update to version 0.12.0: + + diagnostic: remove deprecated diagnostic APIs + + editor: insert-mode ctrl-r should work like paste + + lsp: pass entire entry to format function + + lsp: reimplement `textDocument/codeLens` as decoration provider + + optwin.lua + + path: support RFC3986 in path_with_url() + + plugins: remove shellmenu + + provider: drop Python 3.7, 3.8 support + + runtime: move "tohtml" to pack/dist/opt/ + + treesitter: apply `offset!` directive to all captures + + treesitter: get_parser return nil on error + + treesitter: remove "all" option of Query:iter_matches + + ui: decouple ext_messages from message grid + + full changelogs at https://github.com/neovim/neovim/commit/fc7e5cf6c93fef08effc183087a2c8cc9bf0d75a +- add patch disable-version-check.patch + +------------------------------------------------------------------- +Thu Apr 9 19:27:32 UTC 2026 - Matej Cepl <[email protected]> + +- Fix `tree-sitter-system.lua` to load system parsers from + `/usr/lib*/tree-sitter` using `vim.treesitter.language.add()`. + This restores loading of packaged parsers such as Lua. + +------------------------------------------------------------------- +Thu Apr 9 14:10:04 UTC 2026 - Matej Cepl <[email protected]> + +- Clean up the SPEC file, remove various crutches. + +------------------------------------------------------------------- +Tue Apr 7 12:00:03 UTC 2026 - Richard Rahl <[email protected]> + +- Update to version 0.12.1: + + :restart: inherit stderr fd on Unix + + :restart: only pass --headless when there is no UI + + api: avoid error when parsing invalid expr after :echo + + channel: crash on exit after closing v:stderr channel + + cmdline: redraw cmdline after empty message + + defaults: check for TUI on non-stdio channel on startup + + events: avoid recursive loop_uv_run() from vim.ui_attach() shell message + + help: show error when using :help! with nothing at cursor + + lsp: do not respond to codelens refresh if a request is already scheduled + + lsp: highlight snippet preview when server can't completionItem/resolve + + lsp: reset document color processed version on clear + + lsp: use `winresetview()` to avoid switching to normal mode + + net: handle remote archive URLs via tar/zip browse + + pack: avoid eager vim.version call + + pack: use `uv.available_parallelism()` to compute number of threads + + termkey: use terminfo for (shift+)left/right keys + + treesitter: select reset to "v" visualmode() + + treesitter: select with node ending with unicode char + + ui2: allow empty argument for enable() + + ui2: correct buffer reference in msg:start_timer() + + ui2: prevent flicker when entering pager from expanded cmdline + + ui2: update spill indicator when appending to expanded cmdline + + ui2: vim.on_key should return nil instead of false + + vim.net: check if vim.system's stdout is nil + + window: clear cmdline 'ruler' when window is closed + + windows: force console codepage to UTF-8 for shell/system() + + vim.pos: use `nvim_buf_line_count` instead of fetching all lines + + cmake: allow ignoring deps sha + + typval.c: fix wrong argument to macro + + revert: "refactor(process): don't read from PTY master using uv_pipe_t" +- build unconditionally leap16.0 with lua51 +- remove reproducible workaround, as it doesn't actually make it reproducible, and + it breaks a feature in neovim +- remove cmake workaround, as it's not needed anymore +- enable more aarch64 tests + +------------------------------------------------------------------- +Mon Apr 6 11:30:42 UTC 2026 - Matej Cepl <[email protected]> + +- Just use LuaJIT unconditionally (we can provide it, hopefully, + everywhere). + +------------------------------------------------------------------- Old: ---- neovim-0.11.6.tar.gz New: ---- disable-version-check.patch neovim-0.12.1.tar.gz ----------(New B)---------- New: + full changelogs at https://github.com/neovim/neovim/commit/fc7e5cf6c93fef08effc183087a2c8cc9bf0d75a - add patch disable-version-check.patch ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ neovim.spec ++++++ --- /var/tmp/diff_new_pack.AJGIyp/_old 2026-04-21 12:47:54.434106190 +0200 +++ /var/tmp/diff_new_pack.AJGIyp/_new 2026-04-21 12:47:54.438106356 +0200 @@ -16,17 +16,13 @@ # -%ifarch %{power64} s390x -%bcond_with luajit -%else -%if 0%{?suse_version} < 1699 +%if 0%{?suse_version} == 1600 %bcond_with luajit %else %bcond_without luajit %endif -%endif Name: neovim -Version: 0.11.6 +Version: 0.12.1 Release: 0 Summary: Vim-fork focused on extensibility and agility License: Apache-2.0 AND Vim AND GPL-3.0-or-later AND CC-BY-3.0 @@ -37,6 +33,7 @@ Source4: spec.vim Source5: tree-sitter-system.lua Source10: https://github.com/neovim/deps/raw/06ef2b58b0876f8de1a3f5a710473dcd7afff251/opt/lua-dev-deps.tar.gz +Patch0: disable-version-check.patch BuildRequires: cmake >= 3.16 BuildRequires: desktop-file-utils BuildRequires: fdupes @@ -69,7 +66,7 @@ BuildRequires: lua51-luv BuildRequires: pkgconfig(lua5.1) %endif -BuildRequires: pkgconfig(tree-sitter) >= 0.25.3 +BuildRequires: pkgconfig(tree-sitter) >= 0.26.1 BuildRequires: pkgconfig(unibilium) >= 2.1.2 BuildRequires: pkgconfig(vterm) >= 0.3.3 BuildRequires: treesitter_grammar(tree-sitter-vimdoc) @@ -116,24 +113,11 @@ %prep %autosetup -p1 - -# Remove __DATE__ and __TIME__. -BUILD_TIME=$(LC_ALL=C date -ur %{_sourcedir}/%{name}.changes +'%{H}:%{M}') -BUILD_DATE=$(LC_ALL=C date -ur %{_sourcedir}/%{name}.changes +'%{b} %{d} %{Y}') -sed -i "s/__TIME__/\"$BUILD_TIME\"/" $(grep -rl '__TIME__') -sed -i "s/__DATE__/\"$BUILD_DATE\"/" $(grep -rl '__DATE__') - # setup unit test dependency mkdir -p build/build/downloads/lua_dev_deps/ cp %{SOURCE10} build/build/downloads/lua_dev_deps/ %build -# Remove cmake4 error due to not setting -# min cmake version - sflees.de -export CMAKE_POLICY_VERSION_MINIMUM=3.5 -# set vars to make build reproducible in spite of config/CMakeLists.txt -HOSTNAME=OBS -USERNAME=OBS %cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DPREFER_LUA=%{?with_luajit:OFF}%{!?with_luajit:ON} \ -DLUA_PRG=%{_bindir}/%{?with_luajit:luajit}%{!?with_luajit:lua} \ @@ -173,10 +157,13 @@ %fdupes %{buildroot} %find_lang nvim -%ifnarch %{arm64} %check mkdir -p runtime/parser +%if 0%{?suse_version} == 1600 ln -sf %{_libdir}/tree_sitter/vimdoc.so runtime/parser +%else +ln -sf %{_libdir}/tree-sitter/libtree-sitter-vimdoc.so runtime/parser/vimdoc.so +%endif %ifnarch %{power64} s390x # old tests @@ -188,18 +175,6 @@ %make_build USE_BUNDLED=OFF unittest %endif %endif -%endif - -%post -if [ -d %{_datadir}/nvim/runtime/parser ]; then -if [ ! -h %{_datadir}/nvim/runtime/parser ]; then -mv %{_datadir}/nvim/runtime/parser \ - %{_datadir}/nvim/runtime/parser.rpmsave -ln -sf %{_libdir}/tree_sitter %{_datadir}/nvim/runtime/parser -fi -else -ln -sf %{_libdir}/tree_sitter %{_datadir}/nvim/runtime/parser -fi %files %license LICENSE.txt ++++++ disable-version-check.patch ++++++ diff -rubN neovim-0.12.1/runtime/lua/vim/health/health.lua neovim-0.12.1-patched/runtime/lua/vim/health/health.lua --- neovim-0.12.1/runtime/lua/vim/health/health.lua 2026-04-06 15:12:48.000000000 +0200 +++ neovim-0.12.1-patched/runtime/lua/vim/health/health.lua 2026-04-11 17:54:01.760083749 +0200 @@ -620,14 +620,6 @@ local nvim_version = version_out:match('NVIM (v[^\n]+)') or 'unknown' local commit --[[@type string]] = (version_out:match('%+g(%x+)') or ''):sub(1, 12) - if vim.fn.executable('git') ~= 1 then - vim.health.warn('Cannot check for updates: git not found') - elseif vim.trim(commit) ~= '' then - check_head_hash(commit) - else - check_stable_version(nvim_version) - end - local os_info = vim.uv.os_uname() local os_string = os_info.sysname .. ' ' .. os_info.release local terminal = detect_terminal() ++++++ neovim-0.11.6.tar.gz -> neovim-0.12.1.tar.gz ++++++ /work/SRC/openSUSE:Factory/neovim/neovim-0.11.6.tar.gz /work/SRC/openSUSE:Factory/.neovim.new.11940/neovim-0.12.1.tar.gz differ: char 13, line 1 ++++++ tree-sitter-system.lua ++++++ --- /var/tmp/diff_new_pack.AJGIyp/_old 2026-04-21 12:47:54.766119963 +0200 +++ /var/tmp/diff_new_pack.AJGIyp/_new 2026-04-21 12:47:54.794121124 +0200 @@ -1,73 +1,110 @@ -- Universal loader for system Tree-sitter parsers with automatic filetype mapping -- Includes ABI check with detailed warning to :messages --- Drops safely into /usr/share/nvim/runtime/plugin/ +-- Self-contained: only depends on Neovim built-ins -local ok, ts_parsers = pcall(require, "nvim-treesitter.parsers") -if not ok or not ts_parsers then - return -end - -local parser_dir = "/usr/share/nvim/runtime/parser" -local uv = vim.loop - --- Neovim Tree-sitter ABI -local nvim_min_abi = vim.treesitter.abi or 14 -- fallback -local nvim_max_abi = vim.treesitter.abi_max or 15 +local FILETYPE_OVERRIDES = { + vimdoc = 'vim', + tsx = 'typescript.tsx', + jinja2 = 'jinja', + wikitext = 'mediawiki', +} + +-- Parsers whose exported C symbol does not match the underscore-converted +-- language name (i.e. tree_sitter_<value> instead of tree_sitter_<lang>). +local SYMBOL_OVERRIDES = { + go_sum = 'gosum', + gpg_config = 'gpg', +} + +local uv = vim.uv + +-- On multilib systems both /usr/lib and /usr/lib64 may exist; +-- pick the longest match (i.e. the native 64-bit libdir). +local parser_dirs = vim.fn.glob('/usr/lib*/tree-sitter', false, true) +table.sort(parser_dirs, function(a, b) return #a > #b end) +local parser_dir = parser_dirs[1] -- Helper: convert filename to Neovim-safe language name +---@param fname string # The filename (e.g., 'libtree-sitter-lua.so') +---@return string? # Returns the sanitized language name or nil if no match local function sanitize_langname(fname) - local name = fname:match("(.+)%.so$") - if not name then return nil end - name = name:gsub("-", "_") - return name + -- Strip the 'libtree-sitter-' prefix and '.so' suffix + local name = fname:match('^libtree%-sitter%-(.+)%.so$') + if not name then + -- Fallback: just strip .so (for unexpected naming schemes) + name = fname:match('(.+)%.so$') + end + if name then + ---@cast name string + name = name:gsub('-', '_') + return name + else + vim.notify( + string.format('Failed to sanitize filename: %s', fname), + vim.log.levels.DEBUG + ) + return nil + end end -- Helper: guess filetype from parser name +---@param lang string +---@return string local function guess_filetype(lang) - local ft = lang - ft = ft:gsub("_inline$", "") - ft = ft:gsub("_sum$", "") - ft = ft:gsub("%d+$", "") - if ft == "vimdoc" then ft = "vim" end - if ft == "tsx" then ft = "typescript.tsx" end - if ft == "jinja2" then ft = "jinja" end - return ft + local ft = lang:gsub('_inline$', ''):gsub('_sum$', ''):gsub('%d+$', '') + return FILETYPE_OVERRIDES[ft] or ft end -- Iterate over all .so files in parser_dir +if not parser_dir then + vim.notify( + 'No tree-sitter parser directory found matching /usr/lib*/tree-sitter', + vim.log.levels.DEBUG + ) + return +end + local handle = uv.fs_scandir(parser_dir) -if not handle then return end +if not handle then + vim.notify( + string.format('Tree-sitter parser directory not readable: %s', parser_dir), + vim.log.levels.DEBUG + ) + return +end while true do - local name, _ = uv.fs_scandir_next(handle) - if not name then break end - if name:match("%.so$") then - local lang = sanitize_langname(name) + local filename = uv.fs_scandir_next(handle) + if not filename then + break + end + + if filename:match('%.so$') then + local lang = sanitize_langname(filename) if lang then - local configs = ts_parsers.get_parser_configs() - if not configs[lang] then - local parser_path = parser_dir .. "/" .. name - configs[lang] = { - install_info = { - url = parser_path, - files = { name }, - }, - filetype = guess_filetype(lang), - } - - -- ABI check: attempt to load parser - local loaded, parser = pcall(vim.treesitter.language.get_lang, lang) - if not loaded or not parser then - vim.schedule(function() - vim.notify( - string.format( - "Tree-sitter parser '%s' at %s is ABI-incompatible (Neovim ABI: %d-%d).", - lang, parser_path, nvim_min_abi, nvim_max_abi - ), - vim.log.levels.WARN - ) - end) - end + local parser_path = parser_dir .. '/' .. filename + local symbol_name = SYMBOL_OVERRIDES[lang] + local ok, result = pcall(vim.treesitter.language.add, lang, { + path = parser_path, + symbol_name = symbol_name, + }) + + if ok and result then + local ft = guess_filetype(lang) + vim.treesitter.language.register(lang, ft) + else + local err = ok and 'unknown error' or tostring(result) + vim.schedule(function() + vim.notify( + string.format( + "Tree-sitter parser '%s' (%s) failed to load: %s", + lang, + parser_path, + err + ), + vim.log.levels.WARN + ) + end) end end end
