Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kak-lsp for openSUSE:Factory checked in at 2026-08-09 21:44:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kak-lsp (Old) and /work/SRC/openSUSE:Factory/.kak-lsp.new.16738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kak-lsp" Sun Aug 9 21:44:44 2026 rev:24 rq:1370358 version:21.0.2 Changes: -------- --- /work/SRC/openSUSE:Factory/kak-lsp/kak-lsp.changes 2026-06-08 14:25:18.721037084 +0200 +++ /work/SRC/openSUSE:Factory/.kak-lsp.new.16738/kak-lsp.changes 2026-08-09 21:46:48.321733650 +0200 @@ -1,0 +2,38 @@ +Sat Aug 8 18:59:33 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to version 21.0.2: + * Fix a regression that broke compatibility with Kakoune versions + older than 2026.05.21 + * Add a default configuration for Hare, using hare-lsp + * Fix hangs after editing a file without a trailing newline, such + as an empty file + * Use nixd instead of nil as the default language server for nix + * Fix buffer-sync corruption when .editorconfig sets + insert_final_newline = false +- Correct the License tag to + CC0-1.0 AND ISC AND MIT AND (MIT OR Unlicense) AND MPL-2.0 AND + Unicode-3.0 AND Zlib, re-derived from the vendored registry on this + update. The previous tag enumerated the vendored OR-groups but + omitted Unicode-3.0, ISC, CC0-1.0 and the bare MPL-2.0 of + option-ext, which is linked through dirs and dirs-sys. The + derivation is recorded in a Legal-Review-Notice comment above the + tag. +- Drop the CARGO_TARGET_DIR exports: they referred to the undefined + macro %{_buildir}, so the value expanded literally and cargo wrote + its target directory to an oddly named path inside the build + directory. The packaging default is correct. +- Build against pkgconfig(openssl) instead of openssl-devel. +- Drop the obsolete %defattr from %files. +- Run the upstream unit tests in a %check section. +- Refresh the vendored registry. Recording the state of the open + vendored-crate CVEs against it, none of which this package is + affected by: + * CVE-2026-25541 (boo#1274502): bytes is 1.12.1, above the 1.11.1 + fix + * CVE-2025-3416 (boo#1242654): the openssl crate is 0.10.81, above + the 0.10.72 fix; it was already 0.10.80 before this update + * CVE-2025-55159 (boo#1248048): slab is 0.4.12, above the 0.4.11 + fix; only 0.4.10 was ever affected and this package never + shipped it + +------------------------------------------------------------------- Old: ---- kak-lsp-20.0.0.tar.zst New: ---- kak-lsp-21.0.2.tar.zst ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kak-lsp.spec ++++++ --- /var/tmp/diff_new_pack.gifDDa/_old 2026-08-09 21:46:52.701883013 +0200 +++ /var/tmp/diff_new_pack.gifDDa/_new 2026-08-09 21:46:52.705883149 +0200 @@ -17,19 +17,35 @@ Name: kak-lsp -Version: 20.0.0 +Version: 21.0.2 Release: 0 Summary: Language Server Protocol client for Kakoune -License: (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR BSL-1.0 OR MIT) AND (Apache-2.0 OR MIT) AND (Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT) AND (Apache-2.0 OR MIT OR Zlib) AND (Apache-2.0 OR MIT OR MPL-2.0) AND (MIT OR Unlicense) AND (Apache-2.0 OR Zlib OR MIT) AND MIT AND Zlib AND Unlicense +# Legal-Review-Notice: kak-lsp itself is "Unlicense OR MIT", but the binary +# statically links the vendored Rust dependencies. Re-derived on this +# re-vendor with "cargo tree --offline -e normal" over the vendored registry +# (337 crates vendored, 167 in the linked graph). Only the licences that +# cannot be satisfied by electing a permissive alternative are listed: +# - MPL-2.0 from option-ext, reached through dirs -> dirs-sys, +# - Unicode-3.0 (18 crates), MIT (20 crates), Zlib, ISC and CC0-1.0, each +# of which is the sole licence offered by the crate carrying it. +# The slog family is "MPL-2.0 OR MIT OR Apache-2.0" and r-efi offers an +# LGPL-2.1-or-later option; we elect the permissive alternative for the +# former, and the latter is UEFI-target-only and absent from the Linux +# graph. The previous tag enumerated the vendored OR-groups but omitted +# Unicode-3.0, ISC, CC0-1.0 and the bare MPL-2.0 of option-ext. +# MPL-2.0 section 3.2 is satisfied because the complete registry.tar.zst +# ships in the src.rpm. +License: CC0-1.0 AND ISC AND MIT AND (MIT OR Unlicense) AND MPL-2.0 AND Unicode-3.0 AND Zlib URL: https://github.com/kakoune-lsp/kakoune-lsp Source0: %{name}-%{version}.tar.zst Source1: registry.tar.zst BuildRequires: cargo BuildRequires: cargo-packaging -BuildRequires: openssl-devel +BuildRequires: pkgconfig BuildRequires: zstd -ExclusiveArch: %{rust_tier1_arches} +BuildRequires: pkgconfig(openssl) Provides: kakoune-lsp = %{version} +ExclusiveArch: %{rust_tier1_arches} %description kak-lsp is a Language Server Protocol client for Kakoune written in Rust. @@ -39,18 +55,21 @@ %build export CARGO_HOME="$PWD/.cargo" -export CARGO_TARGET_DIR="%{_buildir}/%{buildsubdir}/target" %{cargo_build} --all-features %install export CARGO_HOME="$PWD/.cargo" -export CARGO_TARGET_DIR="%{_buildir}/%{buildsubdir}/target" +# Keep the braced form: the bare %%cargo_install parses --all-features as a +# macro option and fails with "Unknown option - in cargo_install(p:)". %{cargo_install} --all-features mkdir -p %{buildroot}%{_datadir}/%{name}/rc install -Dm644 rc/lsp.kak %{buildroot}%{_datadir}/%{name}/rc/ +%check +export CARGO_HOME="$PWD/.cargo" +%{cargo_test} --all-features + %files -%defattr(-,root,root,-) %license UNLICENSE COPYING MIT %doc README.asciidoc CHANGELOG.md %dir %{_datadir}/%{name} ++++++ _service ++++++ --- /var/tmp/diff_new_pack.gifDDa/_old 2026-08-09 21:46:52.737884240 +0200 +++ /var/tmp/diff_new_pack.gifDDa/_new 2026-08-09 21:46:52.745884513 +0200 @@ -4,7 +4,7 @@ <param name="url">https://github.com/kakoune-lsp/kakoune-lsp.git</param> <param name="versionrewriteregex">^v?(.*)</param> <param name="versionrewritepattern">${1}</param> - <param name="revision">v20.0.0</param> + <param name="revision">v21.0.2</param> <param name="changesgenerate">true</param> <param name="set-name">kak-lsp</param> <param name="changesauthor">Soc Virnyl Estela</param> ++++++ kak-lsp-20.0.0.tar.zst -> kak-lsp-21.0.2.tar.zst ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kak-lsp-20.0.0/CHANGELOG.md new/kak-lsp-21.0.2/CHANGELOG.md --- old/kak-lsp-20.0.0/CHANGELOG.md 1970-01-01 01:00:00.000000000 +0100 +++ new/kak-lsp-21.0.2/CHANGELOG.md 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +1,24 @@ +## 21.0.2 - 2026-07-21 + +Fixes: +- Fixed a regression in 21.0.2 which broke compatibility with Kakoune versions older than 2026.05.21. + +## 21.0.1 - 2026-06-29 + +Additions: +- Default configuration for Hare, using [`hare-lsp`](https://git.sr.ht/~whynothugo/hare-lsp). + +Fixes: +- Fix hangs after editing a file without trailing newline, such as empty files (#892). + +## 21.0.0 - 2026-05-18 + +Breaking changes: +- `nixd` replaces `nil` as default language server for nix (#890). + +Fixes: +- Fix buffer-sync corruption when `.editorconfig` sets `insert_final_newline = false` (#891). + ## 20.0.0 - 2026-04-16 Breaking changes: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kak-lsp-20.0.0/Cargo.lock new/kak-lsp-21.0.2/Cargo.lock --- old/kak-lsp-20.0.0/Cargo.lock 1970-01-01 01:00:00.000000000 +0100 +++ new/kak-lsp-21.0.2/Cargo.lock 1970-01-01 01:00:00.000000000 +0100 @@ -1048,7 +1048,7 @@ [[package]] name = "kak-lsp" -version = "20.0.0" +version = "21.0.2" dependencies = [ "clap", "crossbeam-channel", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kak-lsp-20.0.0/Cargo.toml new/kak-lsp-21.0.2/Cargo.toml --- old/kak-lsp-20.0.0/Cargo.toml 1970-01-01 01:00:00.000000000 +0100 +++ new/kak-lsp-21.0.2/Cargo.toml 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +1,7 @@ [package] name = "kak-lsp" description = "Kakoune Language Server Protocol Client" -version = "20.0.0" +version = "21.0.2" authors = ["Ruslan Prokopchuk <[email protected]>", "Johannes Altmanninger <[email protected]>"] edition = "2018" license = "Unlicense/MIT" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kak-lsp-20.0.0/README.asciidoc new/kak-lsp-21.0.2/README.asciidoc --- old/kak-lsp-20.0.0/README.asciidoc 1970-01-01 01:00:00.000000000 +0100 +++ new/kak-lsp-21.0.2/README.asciidoc 1970-01-01 01:00:00.000000000 +0100 @@ -36,12 +36,12 @@ [source,sh] ---- [ "$(uname -sm)" = 'Darwin arm64' ] && - curl -OL https://github.com/kakoune-lsp/kakoune-lsp/releases/download/v20.0.0/kakoune-lsp-v20.0.0-aarch64-apple-darwin.tar.gz + curl -OL https://github.com/kakoune-lsp/kakoune-lsp/releases/download/v21.0.2/kakoune-lsp-v21.0.2-aarch64-apple-darwin.tar.gz [ "$(uname -sm)" = 'Darwin x86_64' ] && - curl -OL https://github.com/kakoune-lsp/kakoune-lsp/releases/download/v20.0.0/kakoune-lsp-v20.0.0-x86_64-apple-darwin.tar.gz + curl -OL https://github.com/kakoune-lsp/kakoune-lsp/releases/download/v21.0.2/kakoune-lsp-v21.0.2-x86_64-apple-darwin.tar.gz [ "$(uname)" = Linux ] && - curl -OL https://github.com/kakoune-lsp/kakoune-lsp/releases/download/v20.0.0/kakoune-lsp-v20.0.0-x86_64-unknown-linux-musl.tar.gz -tar xzvf kakoune-lsp-v20.0.0-*.tar.gz + curl -OL https://github.com/kakoune-lsp/kakoune-lsp/releases/download/v21.0.2/kakoune-lsp-v21.0.2-x86_64-unknown-linux-musl.tar.gz +tar xzvf kakoune-lsp-v21.0.2-*.tar.gz # replace `~/.local/bin/` with something on your `$PATH` mv kak-lsp ~/.local/bin/ ---- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kak-lsp-20.0.0/rc/lsp.kak new/kak-lsp-21.0.2/rc/lsp.kak --- old/kak-lsp-20.0.0/rc/lsp.kak 1970-01-01 01:00:00.000000000 +0100 +++ new/kak-lsp-21.0.2/rc/lsp.kak 1970-01-01 01:00:00.000000000 +0100 @@ -687,9 +687,21 @@ } define-command -hidden lsp-send-buffer -params 1 %{ - try %{ set-option local finaleol present } - lsp-send %arg{1} %val{buf_line_count} - evaluate-commands -no-hooks %{ write -force %opt{lsp_alt_fifo} } + evaluate-commands -save-regs a %{ + try %{ + unset-option window finaleol # TODO remove this + set-register a %opt{finaleol} + set-option buffer finaleol present + } + try %{ + lsp-send %arg{1} %val{buf_line_count} + evaluate-commands -no-hooks %{ write -force %opt{lsp_alt_fifo} } + try %{ set-option buffer finaleol %reg{a} } + } catch %{ + try %{ set-option buffer finaleol %reg{a} } + fail %val{error} + } + } } define-command -hidden lsp-did-change -docstring "Notify language server about buffer change" %{ @@ -2284,7 +2296,7 @@ try %{ evaluate-commands -draft -save-regs / %{ set-register / ^\h*\K([^:\n]+):(\d+)\b(?::(\d+)\b)?(?::([^\n]+)) - execute-keys <semicolon>xs<ret> + execute-keys ,<semicolon>xs<ret> set-register a "%reg{1}" set-register b "%reg{2}" set-register c "%reg{3}" @@ -2304,7 +2316,7 @@ try %{ evaluate-commands -draft -save-regs / %{ set-register / ^\h*\K([^:\n]+):(\d+)\b(?::(\d+)\b)?(?::([^\n]+)) - execute-keys <semicolon>xs<ret> + execute-keys ,<semicolon>xs<ret> set-register b "%reg{2}" set-register c "%reg{3}" } @@ -2319,7 +2331,7 @@ evaluate-commands -save-regs abcd %{ evaluate-commands -draft -save-regs / %{ set-register / ^\h*\K([^:\n]+):(\d+)\b(?::(\d+)\b)?(?::\h*([^\n]+)) - execute-keys <semicolon>xs<ret> + execute-keys ,<semicolon>xs<ret> set-register a "%reg{1}" set-register b "%reg{2}" set-register c "%reg{3}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kak-lsp-20.0.0/rc/servers.kak new/kak-lsp-21.0.2/rc/servers.kak --- old/kak-lsp-20.0.0/rc/servers.kak 1970-01-01 01:00:00.000000000 +0100 +++ new/kak-lsp-21.0.2/rc/servers.kak 1970-01-01 01:00:00.000000000 +0100 @@ -163,6 +163,14 @@ } +hook -group lsp-filetype-hare global BufSetOption filetype=hare %{ + set-option buffer lsp_servers %{ + [hare-lsp] + root_globs = [".git", ".hg"] + args = ["-S"] + } +} + hook -group lsp-filetype-haskell global BufSetOption filetype=haskell %{ set-option buffer lsp_servers %{ [haskell-language-server] @@ -454,7 +462,7 @@ hook -group lsp-filetype-nix global BufSetOption filetype=nix %{ set-option buffer lsp_servers %{ - [nil] + [nixd] root_globs = ["flake.nix", "shell.nix", ".git", ".hg"] } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kak-lsp-20.0.0/src/controller.rs new/kak-lsp-21.0.2/src/controller.rs --- old/kak-lsp-20.0.0/src/controller.rs 1970-01-01 01:00:00.000000000 +0100 +++ new/kak-lsp-21.0.2/src/controller.rs 1970-01-01 01:00:00.000000000 +0100 @@ -746,7 +746,12 @@ flow } -fn read_to_end(to_editor: &ToEditorSender, file: &mut fs::File, buffer: &SharedBuffer) { +fn read_to_end( + to_editor: &ToEditorSender, + file: &mut fs::File, + buffer: &SharedBuffer, + label: &str, +) { { let mut buffer = buffer.lock(); let offset = buffer.len(); @@ -757,7 +762,8 @@ } debug!( to_editor, - "From editor (raw): {{{}}}", + "From editor (raw) via {}: {{{}}}", + label, &String::from_utf8_lossy(&buffer[offset..]) ); } @@ -842,10 +848,10 @@ } events.clear(); if readable1 { - read_to_end(&to_editor, &mut fifo, &command_buffer); + read_to_end(&to_editor, &mut fifo, &command_buffer, "command fifo"); } if readable2 { - read_to_end(&to_editor, &mut alt_fifo, &text_buffer); + read_to_end(&to_editor, &mut alt_fifo, &text_buffer, "buffer fifo"); } if FIFO_READER_DONE.load(Relaxed) { break; @@ -1375,6 +1381,18 @@ } #[allow(deprecated)] + if is_using_legacy_toml(&ctx.config) + && meta + .language_server + .values() + .any(|server| !server.root_globs.is_empty() || !server.root.is_empty()) + { + let msg = r#"Error: the legacy kak-lsp.toml configuration does not support the "root_globs"/"root" parameters, please use the new approach (via lsp_servers) or "roots""#; + ctx.show_error(mem::take(meta), msg); + return Some(ControlFlow::Continue(())); + } + + #[allow(deprecated)] let legacy_cfg = ctx.legacy_filetypes.get(&meta.filetype); let server_addresses: Vec<(ServerName, RootPath)>; if is_using_legacy_toml(&ctx.config) { @@ -1986,7 +2004,18 @@ continue; }; let semantic_tokens_options: SemanticTokensOptions = - serde_json::from_value(options).unwrap(); + // sourcekit-lsp shipped with Xcode 27.beta1 workaround + match serde_json::from_value(options) { + Ok(v) => v, + Err(e) => { + error!( + ctx.to_editor(), + "Failed to unmarshal semantic tokens options: {}", + e + ); + continue; + } + }; let semantic_tokens_server_capabilities = SemanticTokensServerCapabilities::SemanticTokensRegistrationOptions( SemanticTokensRegistrationOptions { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kak-lsp-20.0.0/src/text_sync.rs new/kak-lsp-21.0.2/src/text_sync.rs --- old/kak-lsp-20.0.0/src/text_sync.rs 1970-01-01 01:00:00.000000000 +0100 +++ new/kak-lsp-21.0.2/src/text_sync.rs 1970-01-01 01:00:00.000000000 +0100 @@ -99,21 +99,23 @@ pub fn text_document_did_save(meta: EditorMeta, ctx: &mut Context) { for &server_id in &meta.servers { let server = ctx.server(server_id); - let options = match &server.capabilities.as_ref().unwrap().text_document_sync { - Some(TextDocumentSyncCapability::Options(TextDocumentSyncOptions { - save: Some(opts), - .. - })) if !matches!(opts, TextDocumentSyncSaveOptions::Supported(false)) => opts, - _ => continue, // don't send didSave by default + let include_text = match &server.capabilities.as_ref().unwrap().text_document_sync { + Some(TextDocumentSyncCapability::Options(TextDocumentSyncOptions { save, .. })) => { + match save { + Some(TextDocumentSyncSaveOptions::SaveOptions(SaveOptions { + include_text: Some(include_text), + })) => *include_text, + _ => continue, + } + } + _ => continue, }; - let text = match options { - TextDocumentSyncSaveOptions::SaveOptions(SaveOptions { - include_text: Some(true), - }) => ctx - .documents + let text = if include_text { + ctx.documents .get(&meta.buffile) - .map(|doc| doc.text.to_string()), - _ => None, + .map(|doc| doc.text.to_string()) + } else { + None }; let uri = file_path_to_uri(&meta.buffile); ++++++ registry.tar.zst ++++++ /work/SRC/openSUSE:Factory/kak-lsp/registry.tar.zst /work/SRC/openSUSE:Factory/.kak-lsp.new.16738/registry.tar.zst differ: char 7, line 1
