[qt/qt-creator/qt-creator]: Summary of bulk changes made
KDE Git Services - Bulk Change <[email protected]> Tue, 4 Aug 2026 18:15:28 +0000 (UTC)
| 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 92007fa1180cd5a47994915dca33ec0b253e2721 to 68cf0275d5b522e836522a1f6640dcb55fa7b913 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 8c7684af2d51adef48585c062a71557df25e5112 by Christian Kandeler on 04/08/2026 at 13:12.. Aggregation: Dissolve the library It consisted of one header and one source file. Move to Utils instead. Keep the namespace for now. Change-Id: Ifd0f980787307dc25a24c5b4e534f042315979c2 Reviewed-by: hjk <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/8c7684af2d51adef48585c062a71557df25e5112 Git commit beab4bc1ea18adec63aeae0dc67f7ff95614a083 by hjk on 04/08/2026 at 14:32.. FakeVim: Fire the remaining buffer and window autocommands BufWinEnter, WinEnter, VimEnter, TextChanged and CursorMoved were accepted by ":autocmd" but never reported, so rules for them registered and then sat idle. TextChanged and CursorMoved arrive while the document or the cursor is still being changed, where running a rule that edits the buffer would reenter the change it is reacting to. They are collected and reported from a zero timer instead, which also means a run of changes is reported once. Insert mode is left out, as Vim reports it through TextChangedI and CursorMovedI. VimEnter has no counterpart here, since there is no point at which Qt Creator is done starting the way Vim is; it is reported once, for the first buffer FakeVim is given. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I0053536421b86db1f1178c161fda4c0aa8f42346 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/beab4bc1ea18adec63aeae0dc67f7ff95614a083 Git commit 0ceebe322889aa5142ead33be71d6e009257770c by hjk on 04/08/2026 at 14:32.. FakeVim: Add readfile() and writefile() Reading and writing a file as a list of lines, which plugins use to keep state of their own between sessions. Both handle the flags that decide what happens at the end of the last line: in text mode reading drops a trailing newline instead of reporting another empty line and writing adds one, while in binary mode neither happens, so an empty last item is what puts a newline there. readfile() also takes a maximum line count, negative to count from the end, and hands back an empty list for a file that cannot be read. The expected values in the test were taken from Vim 9.1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: Ic2d10cd33c85ed0d40e4b7358ef9ccf9cb17c2cd Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/0ceebe322889aa5142ead33be71d6e009257770c Git commit ab05e871e4eaf59e8ad2663d0ede8efa5dacda2d by hjk on 04/08/2026 at 14:32.. FakeVim: Add TextChangedI, CursorMovedI and WinLeave Changes made in insert mode went unreported, as the events Vim has for them were neither accepted by ":autocmd" nor fired. Which of the two pairs to report is decided when the change happens rather than when the timer runs, since insert mode may have been left by then. WinLeave completes the pair with WinEnter. Vim leaves the buffer before the window and enters them the other way round, so switching editors now reports BufLeave, WinLeave, WinEnter, BufEnter. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I63b5ce0e0249a83a036fda7f6d6f6ac4c628c628 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/ab05e871e4eaf59e8ad2663d0ede8efa5dacda2d Git commit 4c890c9f5d8f8a62a1a5a634c11a775bfa7246ad by hjk on 04/08/2026 at 14:32.. FakeVim: Add cursor() and search() search() honors the flags that decide where to look and what to do with the match ("b", "w", "W", "c", "e", "n"), a line to stop at, and a {skip} expression or funcref. {skip} is evaluated with the cursor on each candidate, so it can judge the match from where it is, which is how a caller passes over matches in a comment or a string. cursor() moves to a line and column, taking either two numbers or a list. Also 'selection', which scripts read before placing a selection. The expected values in the test were taken from Vim 9.1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I0afbeca4ab4f75706207e6ca6d68d1fda8a6d88e Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/4c890c9f5d8f8a62a1a5a634c11a775bfa7246ad Git commit 7b27f634af5a25e236555025727d9254f4068ddd by hjk on 04/08/2026 at 14:33.. FakeVim: Report what is under the cursor to synstack() Scripts ask what a position holds before acting on it, most often to leave comments and strings alone. Qt Creator keeps no name for what its highlighter produced, only colors, so there is nothing to translate a full syntax stack from. What can be asked is the language of the document itself, through the completer it installs, and that answers exactly the question scripts ask: whether a position is in a comment or in a string. synstack() reports those two and nothing else, synIDattr() names them and synID() gives the innermost one. g:syntax_on is set, since scripts check it before asking. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I2d4b193cddd5166da483eeea33a91bdd3e95f076 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/7b27f634af5a25e236555025727d9254f4068ddd Git commit c7489a4f04fcda9c6e0857f5dc40d702c2aedf6e by hjk on 04/08/2026 at 14:33.. FakeVim: Add <Cmd> and <ScriptCmd> mappings "<Cmd>{command}<CR>" on the right-hand side of a mapping runs an ex command without leaving the mode the mapping was used in, which is how a plugin acts on a buffer from a key it bound. Keys behind the <CR> are keys again and follow the command. Used where a motion is expected, the cursor the command left behind is the range the pending operator takes. The command does not go through ":", which would end insert or visual mode and pull the cursor back to where normal mode wants it. It is read with the syntax of the script that defined the mapping, so a Vim9 script may write a bare call, which is what "<ScriptCmd>" is for. Two things such commands rely on came along: "??", which yields its right side only for a falsy left one, and a plain function name as a funcref, which is how Vim9 hands one to search(). Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: Iae879be45b7de5618f24a81bea5ee3c1a360f398 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/c7489a4f04fcda9c6e0857f5dc40d702c2aedf6e Git commit 947d31055eda030e026ab636f181b714849ddef6 by hjk on 04/08/2026 at 14:33.. FakeVim: Keep a mode ":normal" finished ":normal" appended <ESC> to whatever it was given, which ends a pending insert mode as Vim does but also throws away a visual selection the keys placed. Vim aborts only a command the keys did not finish, so append it just for insert mode; ":normal! v" now leaves the selection behind for whatever runs next to act on. With a range the selection is dropped between lines, since each line starts over in normal mode. Amends c69787089e0094ada79bf8320cce7f097a7456d1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: Ifab53535d771cd4bd169cbbc1415c92ef28decb3 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/947d31055eda030e026ab636f181b714849ddef6 Git commit 831b5c4b4d99a12a248cd3be159b36b6b5905b5e by hjk on 04/08/2026 at 14:33.. FakeVim: Let a <Cmd> mapping stand in for a text object A command used where a motion is expected ran with the operator still pending, so the keys it replayed were read in that light: "v" was the modifier that forces a motion charwise instead of the command that starts a selection. Vim runs such a command as if nothing were pending and takes the selection it leaves as the range, which is how a script defines a text object. The operator is now put aside while the command runs and picked up again afterwards. A selection the command placed becomes the range, linewise or blockwise as the selection was; without one the command counts as a plain motion to wherever it left the cursor. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I52b3d0c380ba353b9d5c1d1f33e835923b5141ea Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/831b5c4b4d99a12a248cd3be159b36b6b5905b5e Git commit 3ddbda5e09d88e727f9ca2de6662da64b90d9079 by hjk on 04/08/2026 at 14:33.. FakeVim: Translate the pattern magic levels Patterns were read as if "magic" were always in effect, so "\v" reached QRegularExpression as its own escape for a vertical tab and the rest of a very magic pattern was taken the wrong way round. Plugins write their patterns that way, "\v%(\S+)|%(^\s*$)" being a common shape. "\v" now makes punctuation carry meaning without a backslash and a backslash make it literal, with "%(" grouping without capturing and "<" and ">" standing for word boundaries; "\M" and "\V" take more and more of it literally, and "\m" is the default that was already there. The expected values in the test were taken from Vim 9.1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I432bee6dccb253377af7e0ff887d7488d90ba9a9 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/3ddbda5e09d88e727f9ca2de6662da64b90d9079 Git commit fa7916ea2026ebb4f24f5b32c1f0eb4d5602cc42 by hjk on 04/08/2026 at 14:33.. FakeVim: Test the two-step search a text object walks with Finding where a run of lines sharing a property begins and ends is done by searching past everything that has it and then back to the last thing that had it, which leans on the backward and end-of-match flags together with a {skip} that judges each candidate from the cursor. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I6be7a24119df94ec2d49b28335e0f9274b70b101 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/fa7916ea2026ebb4f24f5b32c1f0eb4d5602cc42 Git commit 29b89893d38a6a8068fe399f01a29f2cdde0559b by hjk on 04/08/2026 at 14:33.. FakeVim: Anchor a search() pattern to the line, not the buffer search() matches the whole buffer in one go, where "^" and "$" stood for its ends, so "^$" never found an empty line and "\s*$" never found the end of one. A Vim pattern means the ends of a line, which is what the normal mode search gets for free from matching block by block. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I7b332866a2e7dbc1c0017fef65f31a833a803716 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/29b89893d38a6a8068fe399f01a29f2cdde0559b Git commit fdbc3cf3503d1a2554c13a329d1ca2d889760009 by hjk on 04/08/2026 at 14:33.. FakeVim: Pin down where the comment text objects go wrong Vim's comment plugin computes the right boundaries for "ic" and "ac" here, but placing the selection one step at a time - put the cursor on one end, start selecting, move to the other end - comes out a line early at both ends, so the operator takes the wrong range. Recorded as an expected failure with the shape the plugin uses, since finding this needed a live editor and a plugin whose own functions had to be instrumented to see the boundaries were fine. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: If394e0e3146b218539d43a302b7fb5a74acaa3a1 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/fdbc3cf3503d1a2554c13a329d1ca2d889760009 Git commit 83ac0e020608f2ca9e3cf9641ce1f36430e3646b by hjk on 04/08/2026 at 14:33.. FakeVim: Translate the remaining pattern character classes "\k" and its companions reached QRegularExpression untranslated, where a bare "\k" is a malformed backreference, so a pattern using one was rejected outright. Plugins reach for "\k" to mean a keyword character. For these the uppercase form is the same class without the digits rather than its negation, unlike the "\a" and "\h" pairs already handled. The expected values in the test were taken from Vim 9.1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I49e92b2213be2de440e88214bf7c4a13ce1973ae Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/83ac0e020608f2ca9e3cf9641ce1f36430e3646b Git commit 2c3ce8062a5ca916c1c2ea7229522a06b10ce3e9 by hjk (on behalf of Joerg Bornemann) on 04/08/2026 at 14:56.. HarmonyOS: Add run support Add a run configuration and run worker for the HarmonyOS device type. The worker launches the deployed application on the connected device with hdc: it stops any running instance ("aa force-stop") and starts the ability ("aa start -a QAbility -b <bundle> -m entry"), targeting the run device by serial. The bundle name is read from the generated harmonyos-build/AppScope/app.json5. Change-Id: I34fa085b1321d2ef3444c11c7df7d014e88f5279 Reviewed-by: hjk <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/2c3ce8062a5ca916c1c2ea7229522a06b10ce3e9 Git commit dd4c13c6d5a15dc21886312ac6d1a024cc7d494b by Cristian Adam on 04/08/2026 at 15:00.. CMakePM: Resolve symlinks when matching cmake executable in kit The cmake executable comparison used raw string equality, which fails when one path is a symlink of the other (e.g. Homebrew bin shim vs Cellar path). Use FilePath::isSameFile() which resolves symlinks. The commit also adds logging for all return paths. Fixes: QTCREATORBUG-34813 Change-Id: I86309fe2bc52efaed08ceafad90713f86c49ba98 Reviewed-by: hjk <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/dd4c13c6d5a15dc21886312ac6d1a024cc7d494b Git commit 9fddefe63bdbab9e8978148a9c72f48e1cccb25f by hjk on 04/08/2026 at 15:10.. FakeVim: Take the anchor along when cursor() moves Moving the text cursor keeps the anchor, which is what extends a selection while one is being made, but cursor() has no selection to extend: it is a plain move, and the anchor was left marking wherever the cursor had been. A script placing a selection one step at a time - go to one end, start selecting, go to the other - therefore got a range reaching back to before it began. With this the comment text objects of Vim's comment plugin work: "dic", "dac" and the visual "vic" all take the comment block, matching what Vim does for the same keys. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I8cdb0e243c0f5c5eedc1bc37b44c9695aba2fbd8 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/9fddefe63bdbab9e8978148a9c72f48e1cccb25f Git commit c20f4db5c7671e72d7e78cd4263b9c90213f2d19 by hjk on 04/08/2026 at 15:44.. FakeVim: Give ":normal" the rest of the line A "|" was taken as the start of another command, so the keys behind one never reached ":normal" and ran as commands of their own instead. Vim counts it as one of the keys to replay, which is why ":normal" is the one command that cannot be followed by another. The expected values in the test were taken from Vim 9.1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I7801ab7d54c0237394d171299ccb033fcb5c63cf Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/c20f4db5c7671e72d7e78cd4263b9c90213f2d19 Git commit ec0885765493939453471619ad64ff8354885731 by hjk on 04/08/2026 at 15:44.. FakeVim: Answer exists() for functions exists() knew about variables, options and the environment but not about "*name", the form that asks whether a function can be called, so a script guarding a call that way took the branch for a missing one. Answered now for a builtin, for a function a script defined, and for a variable holding a Funcref, with a leading "g:" allowed and "?name" treated the same. A function Vim has but this does not is reported as missing, which is what "*name" asks: whether it is there to be called. The expected values in the test were taken from Vim 9.1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I5c6362da275693cd8e9c1c634e5e3575228fc12e Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/ec0885765493939453471619ad64ff8354885731 Git commit bf3622cd23e1c8ad46739c4882fce1d28d028ba1 by hjk on 04/08/2026 at 15:44.. FakeVim: Add strftime() Formats a moment, the current one or a given number of seconds since the epoch. The C library does the work, so the conversions are the ones Vim documents rather than a Qt spelling of them. The parts handed to it are filled from a QDateTime instead of calling localtime(), which keeps this off platform-specific calls but leaves the time zone unset, so "%Z" and "%z" have nothing to report. Checked against Vim 9.1 on a machine an hour ahead of UTC, where both agree on every conversion tried. The test asks about the shape rather than a fixed moment, since what a conversion yields depends on the zone. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: Iae52b9fca63cdcf2ffb4c81a6f13ad2d1ffa25fd Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/bf3622cd23e1c8ad46739c4882fce1d28d028ba1 Git commit ab1d3f09ebd7ff71ac3565c0b1a999f083601a3c by hjk on 04/08/2026 at 15:44.. FakeVim: Add :augroup Autocommands had no notion of the group they belong to and ":augroup" was not a command at all, so a plugin opening one got an error and its following ":autocmd!" then wiped every autocommand there was, including those of the vimrc and of other plugins. Grouping them this way is what lets a plugin clear its own, and nearly every one does it. A group named on the ":autocmd" itself applies to that one command, and ":augroup! {name}" removes a group. The expected values in the test were taken from Vim 9.1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: Iad9c05d4baf8c0329d726e1116c73790b4cf7ebb Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/ab1d3f09ebd7ff71ac3565c0b1a999f083601a3c Git commit beefda747ee88cc02d263d64c0d2f50ccdd563e1 by hjk on 04/08/2026 at 15:44.. FakeVim: Add bufnr(), getbufvar() and setbufvar() Scripts reach for these to keep a note on the buffer they are working on and to read a setting as it stands there. Only the buffer a handler is attached to can be named, since there is no list of the others to look through; another one reads as the default and is not written. A number is handed out per buffer as one is asked for, which is enough to tell buffers apart. The variable name is taken as it stands, so "b:mine" is a different name from "mine", and a "&name" reads the option instead. Nothing there and nothing offered instead reads as empty rather than as zero. The expected values in the test were taken from Vim 9.1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I5959b6536c3299da4a4af1e38843dce656f855fc Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/beefda747ee88cc02d263d64c0d2f50ccdd563e1 Git commit afbc8ccb8cc2fd71ffd02965f23f6655a3e25522 by hjk on 04/08/2026 at 15:45.. FakeVim: Add the path functions fnamemodify() with the modifiers a script uses to take a path apart, one after another as Vim applies them, along with filereadable(), isdirectory(), getcwd(), fnameescape() and shellescape(). The expected values in the test were taken from Vim 9.1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: Ic6562f18bf3c03f0774080d6ee3b257ecfeff1a7 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/afbc8ccb8cc2fd71ffd02965f23f6655a3e25522 Git commit 8ba63da4e13f86b7c3f82e8517fa5fd1681c77b9 by hjk on 04/08/2026 at 15:45.. FakeVim: Add matchlist() and "\=" replacements matchlist() hands back the whole match and the nine groups it may have, padded out, and nothing at all when the pattern does not match. A replacement starting with "\=" is an expression worked out afresh for each match instead of a template, with submatch() reaching the pieces that matched. Scripts build a replacement that way when it cannot be written as one pattern, which is how a glob is turned into a pattern. The expected values in the test were taken from Vim 9.1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I60de535eed0cb55c4a29bb3d6c3d175dedcefa56 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/8ba63da4e13f86b7c3f82e8517fa5fd1681c77b9 Git commit f7873ccb8f52ca4aa6261ed21ae8aa3375266343 by hjk on 04/08/2026 at 15:45.. FakeVim: Add deepcopy(), the view pair and three more deepcopy() shares nothing with what it copied, however deeply nested, where copy() shares what is inside. winsaveview() and winrestview() note where the view is and put it back, which is what a script does around something that moves the cursor. executable() looks along the path, and system() reaches a shell the same way ":!" does, so nothing new has to be run from this file. iconv() converts, or hands the string back as it was when the encoding is not one Qt knows, as Vim does when it cannot. The expected values in the test were taken from Vim 9.1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: Ie37d1bfdf8a96572b12f6fdce34876868b6feebb Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/f7873ccb8f52ca4aa6261ed21ae8aa3375266343 Git commit 052da4882afb5dea343339f1efde1f9706b1f120 by hjk on 04/08/2026 at 15:45.. FakeVim: Add 'buftype' Scripts read it before touching a buffer, to leave alone the ones that are not an ordinary file. It was not an option here at all, so such a check failed rather than answering, and every buffer here is an ordinary file, which is what an empty value says. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I928fd1eeb3d3937e09dd6889c099c3d933299e62 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/052da4882afb5dea343339f1efde1f9706b1f120 Git commit 9e8057ef777b3c967f18b8b878b05a60177762e4 by hjk on 04/08/2026 at 15:45.. FakeVim: Register an autocommand for each event it names ":autocmd" took the whole event list as one event, so the commas that nearly every plugin writes between them left the list matching nothing; worse, it then failed the test for being an event at all and was taken for a group name and dropped, whereupon the pattern and the command were read one token early and something meaningless was registered. The names accepted were only the ones fired from here, so a list that also named another event went the same way. All the events Vim has are recognized now; registering for one that never comes up here is no error, it simply never runs. expand() applies the modifiers a path may carry, so "<afile>:p:h" is the directory of the file an event was for, and "<abuf>" names its buffer. Together these let Vim's editorconfig plugin reach its own entry point. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I66c6a9198f1454dccd8b1b5c43492f2e1208cde9 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/9e8057ef777b3c967f18b8b878b05a60177762e4 Git commit fe15479549eed047f493887d47c89b9ec5081c93 by hjk on 04/08/2026 at 15:45.. FakeVim: Stop "&&" and "||" once the answer is settled Both sides were always worked out, so the guard nearly every script writes - "exists('g:x') && g:x" - complained about the very thing it was asking about, and a call on the far side ran when Vim would not have made it. Once one side settles the answer the other is read past instead of worked out: a name that is not there reads as zero rather than raising, and a call is parsed but not made. The expected values in the test were taken from Vim 9.1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I7c7902a273ec25406b8152d40b185cb67942dfd6 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/fe15479549eed047f493887d47c89b9ec5081c93 Git commit 2139c86014f8047f6640e31ae142d95957c500a6 by hjk on 04/08/2026 at 15:45.. FakeVim: Add 'cpoptions' and ":set {option}&" Legacy scripts open by saving 'cpoptions', setting it to Vim's own value and putting it back at the end, so that the file is read the way its author meant. Neither the option nor the "&" that asks for a default existed, which left an error at both ends of nearly every such script and the saved value undefined in between. None of the flags change anything here, where the behavior is Vim's own rather than Vi's, so the value reported is the one Vim reports and a script testing a flag gets the right answer. The expected values in the test were taken from Vim 9.1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I55b9c214ce18d159db3a0210479971dbc1478b81 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/2139c86014f8047f6640e31ae142d95957c500a6 Git commit 68cf0275d5b522e836522a1f6640dcb55fa7b913 by hjk on 04/08/2026 at 15:45.. FakeVim: Load a "#" function from its script when first needed A plugin keeps the bulk of itself out of the way until something is wanted from it, naming those functions "lib#thing" and putting them in "autoload/lib.vim" along the runtimepath. Neither the runtimepath nor the loading existed, and "#" was not even part of a name, so such a call reported the part before the "#" as an undefined variable. "#" now belongs to a name, 'runtimepath' says where to look, and a name carrying one is looked up by reading the script it lives in: "a#b" from "autoload/a.vim" and "a#b#c" from "autoload/a/b.vim". A script that is nowhere to be found is looked for once, so a name that does not exist still says so. ":set {option}+=" came along, since that is how a runtimepath is added to; "-=" and "^=" work as well. The expected values in the test were taken from Vim 9.1. Assisted-by: Claude Code Task-number: QTCREATORBUG-34817 Change-Id: I73651d18a5ea259d0e233083b8d6a350cbdc4982 Reviewed-by: Cristian Adam <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/68cf0275d5b522e836522a1f6640dcb55fa7b913