[qt/qt-creator/qt-creator]: Summary of bulk changes made
KDE Git Services - Bulk Change <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git repository change summary for qt/qt-creator/qt-creator Pushed by mirror-service into branch 'master'. Changed from baad440bfbb84dd8a1d816ce8e6a4f953cb38cfd to 972fbb68627dea4f3db63b7d076bb1543a63acd3 Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository. This change contains the following new commits: Git commit 230b676516c091659430c4f24492c77a03ea29e0 by hjk on 06/08/2026 at 09:07.. Qnx: Show application output when running, not only when debugging On QNX, qDebug()/console.log() output goes to the slog2 system log. The Debug and QML Profiler workers already capture it via slog2InfoRecipe, but the plain run worker was a bare ProcessRunnerFactory, so running an application (Ctrl+R) produced no output while debugging it (F5) did. Give the run worker the same recipe: run the process in parallel with slog2InfoRecipe, so slog2 output reaches the Application Output. Fixes: QTCREATORBUG-18906 Assisted-by: Claude Code Change-Id: I2e6366cfc6435edb6e25fc6be6def7d5f805701c Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/230b676516c091659430c4f24492c77a03ea29e0 Git commit decaf54a624e5c839f35a8f66677b73238d66857 by Cristian Adam on 06/08/2026 at 09:46.. CmdBridge: Port Go implementation to C11 With `zig cc` the code can be cross-compiled to all platforms like the Go version. In order to use this you have to set `BUILD_CMDBRIDGE_C=ON`, and to cross-compile all targets set `CMDBRIDGE_USE_ZIG=ON` in the CMake configuration of Qt Creator. The wire format follows what the client actually reads. Every packet carries exactly one CBOR value, because Client::readPacket() decodes one and ignores whatever follows it. Arrays are encodable, which the environment reply needs. A command split across several reads is held until it is complete rather than resynchronised away, so writefile is not limited to what fits in one read. Options are accepted in the spelling the client uses ("-watchdogTimeout 60"), which also means the watchdog is armed by default as it is in Go. Commands run on a worker pool that grows on demand, so a handful of long-running exec or find calls cannot starve the cancel that would end them. Nothing is bounded by a compile-time constant: the command queue, the cancellation registry, the process and watcher tables and the socket forwarding maps all grow as needed. Temporary names are generated from the platform CSPRNG and created exclusively, rather than through mkstemp() or GetTempFileNameW(). musl's mkstemp() leaves the last two of its six characters effectively constant within a process, and GetTempFileNameW() truncates the prefix to three characters and reuses a deleted name. The two implementations live in go/ and c/, with the CMakeLists.txt in server/ selecting between them. Within the C one, platform specific code lives in one file per platform, included by the module that owns it, so the handlers themselves are free of #ifdef. Values the client parses are reported the way it reads them. "Mode" is a Go io/fs.FileMode, not a POSIX st_mode: the client takes the file type from Go's high bits, so a raw st_mode made every directory look like a plain file, which listed folders as files and opened them instead of descending. A non-recursive find reports its subdirectories and only declines to walk them, as filepath.SkipDir does. Entry paths are joined with a single separator, since a leading "//" is read as a host-qualified path and leaves the entry with no path at all. cmdbridge_py_test.py exercises the protocol through a reader that mirrors Client::readPacket(), including cases that used to be capped or dropped. cmdbridge_fuzz.c includes cbor.c instead of carrying its own copy of the decoder, and its structural self-tests run as a test. Assisted-by: Opencode (Qwen 3.6 35b) Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Change-Id: I44b572316dcacd1071adb5c11f7b3088581fb217 Reviewed-by: hjk <[email protected]> Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/decaf54a624e5c839f35a8f66677b73238d66857 Git commit a7356157d4d851b4b31cc54ed9c6aa6b1cb28747 by hjk on 06/08/2026 at 10:06.. Qnx: Cross-compile CMake projects with the QNX toolchain An auto-detected QNX kit did not configure CMake for cross-compilation, so CMake fell back to the host cc/g++ and the QNX headers were not found. Let a toolchain contribute a CMake toolchain file via a new Toolchain::cmakeToolchainFile() hook. QnxToolchain returns the SDP's qnx-toolchain-<arch>.cmake, which sets CMAKE_SYSTEM_NAME=QNX, the qcc target and CMAKE_SYSROOT. The initial CMake configuration passes it as CMAKE_TOOLCHAIN_FILE for a non-desktop kit that has no Qt version (the Qt case is already covered by qt.toolchain.cmake), mirroring how the Android toolchain file is added; the kit keeps its compilers. The toolchain file invokes the compiler by name, so also put qcc's directory on PATH in QnxToolchain::addToEnvironment(). Assisted-by: Claude Code Change-Id: Icbd1f09166f567aa392af97ab42318ba0655fdb4 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/a7356157d4d851b4b31cc54ed9c6aa6b1cb28747 Git commit fa300a767c7850d88037c842119b4d9ccd0b9769 by hjk on 06/08/2026 at 10:06.. FakeVim: Make Vim's editorconfig plugin work Vim 9.1's own editorconfig plugin runs unchanged now: a stock plugin and a .editorconfig give the same 'tabstop', 'shiftwidth', 'expandtab' and 'textwidth' Vim gives. Each gap was found by running the plugin and looking at what it did, not by reading it. It needed the name of every Vim option, so that "exists('+ssl') && !&ssl" stops aborting the line it stands in; the "\_x" patterns; a split on a separator that matches nothing; ":messages", because only one message fits the mini buffer and the rest of what a script says was lost; ":lockvar"; a "\=" read literally where very magic gives "=" a meaning; and an error that reaches the ":try" wrapped around it, which is how a plugin asks whether what it did worked. Task-number: QTCREATORBUG-34817 Assisted-by: Claude Code Change-Id: Iffe89f54ef51d381b279bdadfba9db6fd55afd20 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/fa300a767c7850d88037c842119b4d9ccd0b9769 Git commit ae5039c854667a5d7d64cc303ab4a5172a807de6 by hjk on 06/08/2026 at 10:06.. FakeVim: Read more patterns, and write ":set" values as Vim does A character named by its number ("\%d98"), a sequence of optional characters ("a\%[bc]"), the look-around patterns ("\@=" and its kin) and the places a pattern may match ("\%23l", "\%V"). On the option side: a backslash in a ":set" value takes the next character literally, which is how every ftplugin writes 'commentstring'; "+=" joins with a comma for a list option and side by side for a flag- style one; 'cpoptions' was reachable under a name Vim does not know; and "sm" belongs to Vim's 'showmatch'. v:throwpoint and "<stack>" now name the statement each frame is at, which is what a plugin cuts its own function name out of. Task-number: QTCREATORBUG-34817 Assisted-by: Claude Code Change-Id: I9bd80f460edd61eccccae40cb914ea2de34988f7 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/ae5039c854667a5d7d64cc303ab4a5172a807de6 Git commit b5950801dfe2772c1ec2e42a448f13ef9a7f9776 by hjk on 06/08/2026 at 10:06.. FakeVim: Make Vim's matchit plugin work Vim 9.1's matchit plugin runs unchanged: "%" walks the words of a pair round and "g%" walks them the other way, matching Vim over the same lines. Along the way, three things that were wrong on their own account: a search that wrapped did not come back to the word under the cursor, a walk over the positions of a pattern did not stop at the end of the buffer and hung, and an expression looked at what an "&&" had already passed over. Added for the plugin: searchpair() and searchpairpos(), mode(), the shortened spellings of the block commands, CTRL-U on the command line, a "<Cmd>" that keys come before, several options in one ":set", 'softtabstop', and a look-behind that says how far back to look. Task-number: QTCREATORBUG-34817 Assisted-by: Claude Code Change-Id: If49b176c4c8621fe382822800a7275ffd09a1e6d Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/b5950801dfe2772c1ec2e42a448f13ef9a7f9776 Git commit 9ffdfcbdf2afb6c7fc524635040eaafd425a6142 by hjk on 06/08/2026 at 10:06.. FakeVim: Make Vim's justify plugin work Vim's own justify plugin runs unchanged and lays out a paragraph the way Vim lays it out. It wanted a function handed the whole range at once when it asks for one - without "range" Vim calls the function once per line, which is what a plugin counts on - ":retab", strdisplaywidth(), strwidth(), getline() over several lines, and the questions a plugin asks about registers and mappings. Task-number: QTCREATORBUG-34817 Assisted-by: Claude Code Change-Id: Iacc6d771608bf9d3f201d43971b982372647813c Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/9ffdfcbdf2afb6c7fc524635040eaafd425a6142 Git commit debbabfc4618d4f59dc0dc9aecd4f77b4fd003e2 by hjk on 06/08/2026 at 10:07.. FakeVim: Make ReplaceWithRegister work Ingo Karkat's plugin, the one behind the "gr" emulation, runs unchanged: the operator, the line and the visual mapping all replace what Vim replaces, with a named register and with a count. The engine gaps were elsewhere: a motion to a mark started a new selection in Visual mode instead of reaching over what lies between; a List or a Dictionary compared equal to any other, since both went through toNumber(); 'ignorecase' had no say in what "==" does; v:register did not exist, so the plugin was left with no register at all; a comment behind a ":set" looked like more options; and a linewise selection was replaced by charwise text. Also: a mapping can reach a function of its own script, an operator takes what a ":" command selects, the unnamed register answers to "@@", and a character named by number or key is read inside a string. Task-number: QTCREATORBUG-34817 Assisted-by: Claude Code Change-Id: Icee31d9b48faf3d124060fd9d7d9e2e551bcd60f Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/debbabfc4618d4f59dc0dc9aecd4f77b4fd003e2 Git commit 487c4f9ce4fb66e84d283bcaec3876d981033e67 by hjk on 06/08/2026 at 10:07.. FakeVim: Make vim-exchange work Tom McDonald's plugin, the one behind the "cx" emulation, runs unchanged: words, lines and visual regions swap where Vim swaps them, and the indent stays where it was. What it needed: "<SID>" and "<SNR>42_" read as names that can be called, because a plugin points 'operatorfunc' at its own function that way; "_" made the linewise motion it is, so that "g@_" hands an operator a line; line(), col() and virtcol() taking a "[lnum, col]" list; a linewise yank of the last line without the break in front of it, which also answers for ":w", ":!" and ":g" over such a range; and nextnonblank() with prevnonblank(). Pasting whole lines into a charwise selection breaks the line open, as Vim does it. Task-number: QTCREATORBUG-34817 Assisted-by: Claude Code Change-Id: I5d12d7b55a410c66bd82c688715d8a08349f825c Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/487c4f9ce4fb66e84d283bcaec3876d981033e67 Git commit d6a416a0389d62e410f8a41f47b6db76442f46fb by hjk on 06/08/2026 at 10:07.. FakeVim: Add ":put", getchar() and more of what a plugin asks for ":put" was not there at all: it puts what a register or an expression holds as whole lines, which is how a script writes lines without touching a register. A line address of 0 is not representable in a range here, so ":0put" puts after the first line; ":1put!" does what it means. getchar() and getcharstr() hand out the keys already typed ahead - what is left of a mapping being expanded, or of a register being run. Waiting for a key that has not been typed is another matter: the engine cannot suspend a running script, so the form without an argument answers like getchar(0). Also: eval(), ":let [a, b; rest] = list", ":set inv{option}", CTRL-R = in a command line, "\<Left>" read as the key it names, and a carriage return taken for the Return key - a register a script fills with ":s/a/b/\r" left the command standing on the command line before. Task-number: QTCREATORBUG-34817 Assisted-by: Claude Code Change-Id: I7d321e74a924d33660c148bb150a8be6e2b07ba2 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/d6a416a0389d62e410f8a41f47b6db76442f46fb Git commit fa4e527b9feecdb174a0e876b0474e72e7311906 by hjk on 06/08/2026 at 10:07.. FakeVim: Make vim-unimpaired work tpope's plugin, the one behind the "[q"/"]q" emulation, runs unchanged as far as it does not want a window, a buffer list or a quickfix list: a blank line above or below, exchanging a line with its neighbour, turning an option on, off or around, and the transform operators for XML, URL and string escaping, over a motion and over a line. The count typed in front of a mapping reaches v:count inside it now; a mapping to a ":" command is expanded after the pending count has been taken, so "2[<Space>" made one blank line. A script-local function is named "<SNR>42_Name" in the frame chain, which is where the plugin reads the prefix it builds 'operatorfunc' from. A name may hold "{expr}", tr() is there, and a string is read as a number the way str2nr() does, without which nr2char('0x26') gave nothing. maparg() takes the keys written in "<>" notation as well as typed out; a plugin asks that way before putting a mapping of its own in, and was told the user has none. Task-number: QTCREATORBUG-34817 Assisted-by: Claude Code Change-Id: I31abd4582b1d015a77d74de94f6c4f7c073d7600 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/fa4e527b9feecdb174a0e876b0474e72e7311906 Git commit d0b7e3bde1c0f22b1e55f6db6825fcb9efa262c4 by Marcus Tillmanns on 06/08/2026 at 10:15.. CmdBridge: Add FreeBSD, OpenBSD and NetBSD targets Both implementations now build for the three BSDs on amd64 and arm64, which brings each of them to 13 binaries. Only free space differs per system, so it moved into its own files. Go needs a cast on FreeBSD, where Statfs_t's fields are signed; OpenBSD keeps the C prefix on their names; and NetBSD has no statfs() at all, only the POSIX statvfs(), whose Bavail counts Frsize units rather than Bsize ones. The C implementation needs the same statvfs() on NetBSD and compiles unchanged everywhere else. The C targets need zig 0.16 or newer, since earlier versions ship no BSD libc. Rather than fail the build there, they are skipped: a missing binary is not fatal, because the client falls back to its slow file access when it cannot find or start one. The client could not have asked for those binaries. "uname -s" prints FreeBSD, OpenBSD or NetBSD, none of which osTypeFromString() knew, so such a device gave up before the bridge was ever looked up and quietly took that slow path. They get one OsType each rather than a shared one, because the binaries are named after GOOS and are not interchangeable, and because CMAKE_HOST_SYSTEM_NAME spells them out. The checks for whether an OS is unix-like now count them, so these devices keep the behaviour they had back when they were just another "other unix". The server also raises RLIMIT_NOFILE to the hard limit, as the Go runtime has done since Go 1.19. This is not BSD specific, but OpenBSD is where it showed: the kqueue watcher spends a descriptor per watched path, and the default login class allows 128 against a hard limit of 1024, which capped a device at 124 watches. test_freespace checks the value against what the OS reports instead of only that a reply arrived, since picking the wrong block size still yields a plausible-looking number. That needed 8-byte integers in the test's CBOR reader, without which the free space of any modern disk was invisible to it. HostOsInfo::hostOs() still reports OsTypeOtherUnix when Qt Creator itself runs on a BSD. Nothing there needs the distinction, and it is the one part of this that cannot be tested from another host. Abi::abiOsToOsType() likewise keeps mapping BsdOS to OsTypeOtherUnix: it only receives the OS, not the flavor, so it cannot tell the BSDs apart. The protocol test suite passes on FreeBSD 15.1, OpenBSD 7.9 and NetBSD 11.0, all amd64. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Change-Id: I107026de29f7c391445513f4f14ad978fcc11cee Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/d0b7e3bde1c0f22b1e55f6db6825fcb9efa262c4 Git commit cb9bb5702d049bae5ca21f3456cffde36468bbe3 by hjk on 06/08/2026 at 10:52.. Debugger: Add MCP tool to set a variable's display format Add a set_display_format tool to the debugger MCP interface, mirroring the Locals view context menu, and report the formatted display value (display_value) next to the raw value so a client can observe the effect of a display format. Back it with a small WatchHandler::setFormat accessor. Assisted-by: Claude Code Change-Id: If10652fafe25ad8ee2c1ac7121ec904e234433cb Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/cb9bb5702d049bae5ca21f3456cffde36468bbe3 Git commit 444f9d642f330acae41552a5bcd44ef68f0eee06 by hjk on 06/08/2026 at 10:52.. ProjectExplorer: Explain why a remote run has no executable A run configuration for a device that differs from the build device derives its executable from the deployment data. When nothing maps the built target to a remote path (e.g. a CMake project without install() rules), the remote executable comes out empty, and the run then fails with an unhelpful error instead of pointing at the missing deployment. Report an actionable issue in that case from the base RunConfiguration::checkForIssues(), with build-system-specific advice supplied by a new BuildSystem::deploymentHint() (CMake/qmake/qbs). Fixes: QTCREATORBUG-28981 Assisted-by: Claude Code Change-Id: I579556d192c761771921ee88421c95c124e7ebb7 Reviewed-by: Christian Kandeler <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/444f9d642f330acae41552a5bcd44ef68f0eee06 Git commit e302ed3ae17186137184c59c6492e88ae54b35d7 by Christian Kandeler on 06/08/2026 at 10:58.. CmdBridge: Fix qbs build Change-Id: Ic0503bbee6378cbd547bd3ef3b2db7273b7a9508 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/e302ed3ae17186137184c59c6492e88ae54b35d7 Git commit ea70bb137dff68d0c30219464a3b10ce5e1a63c2 by Christian Kandeler on 06/08/2026 at 12:04.. FakeVim: Fix warning Change-Id: Ice61c80107f7a18ba5d4c004f5aaf55905d4f4d1 Reviewed-by: hjk <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/ea70bb137dff68d0c30219464a3b10ce5e1a63c2 Git commit 972fbb68627dea4f3db63b7d076bb1543a63acd3 by Christian Kandeler on 06/08/2026 at 12:04.. Utils: Move Aggregation into the namespace Change-Id: Iec4849d7575e3e9ac3f79917cdda5e30605f4325 Reviewed-by: hjk <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/972fbb68627dea4f3db63b7d076bb1543a63acd3