aboutsummaryrefslogtreecommitdiff
path: root/runtime/autoload
Commit message (Collapse)AuthorAge
* vim-patch:9.2.1201: [security]: code injection via cargo quickfix plugin #42406zeertzjq4 days
| | | | | | | | | | | | | | Problem: [security]: code injection via cargo quickfix plugin (Daniel Dalvelac) Solution: Use chdir() instead of string executing a cd command Github Security Advisory: https://github.com/vim/vim/security/advisories/GHSA-x2w5-pj55-7hpc fyi @gpanders https://github.com/vim/vim/commit/b93c000ddfc27c6a1192bcba77204709536cf094 Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:26d8c85: runtime(gnat): Use shellescape to prevent code injection ↵zeertzjq6 days
| | | | | | | | | | | via filename While at it, also fix E716 when calling gnat.Get_Command('Find') by renaming the key from 'Find_Program' to the expected 'Find_Command'. https://github.com/vim/vim/commit/26d8c851889df19e93dde2a3572e1e356b3a84e3 Co-authored-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
* vim-patch:9.2.1177: [security]: possible code injection via rubycompletezeertzjq8 days
| | | | | | | | | | | | | Problem: [security]: possible code injection via rubycomplete (tnshima) Solution: Do not use eval() for arbitrary buffer text Github Security Advisory: https://github.com/vim/vim/security/advisories/GHSA-4xgr-vqh2-xfx8 https://github.com/vim/vim/commit/05d704d2856dbb75e95bd33cf222c2e6264fff8b Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:d1fa936: runtime(javascript): missing :endif in ↵zeertzjq2026-09-29
| | | | | | | | | | | | | | | | | | javascriptcomplete#CompleteJS() Problem: The "if a:findstart" block in javascriptcomplete#CompleteJS() has no matching :endif. Solution: Add the missing :endif before :endfunction. This has no user-visible effect. Both branches of the block return before reaching :endfunction, so calling the function never gives E171 and completion works as before. closes: vim/vim#21388 https://github.com/vim/vim/commit/d1fa9362243c74a8c41a5a743836619e6157881a Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
* fix(msgpack): strptime() fails east of UTC+12 #41743Volodymyr Chernetskyi2026-09-07
| | | | | | | | | | | | | | | | | | | | | | | | | | Problem: msgpack#strptime() finds a timestamp by bisecting strftime() output, and brackets the search with the extreme UTC offsets. The lower bound subtracts 12 hours, but -12:00 is the westernmost offset, which produces the *largest* timestamp for a given local time. The easternmost offset is +14:00, so in any zone east of UTC+12 the search can start above the target and the function throws: internal-start-string:Internal error: start > string With TZ=GMT-14, four of the five timestamps in msgpack_spec.lua fail, as do three tests in shada_spec.lua, which reaches the same function through shada#strings_to_sd(). Solution: Subtract 14 hours instead. The upper bound is already generous enough at +14, and widening a bisection bracket downwards cannot change the result in zones that worked before. The test disables the python3 provider, because msgpack#strptime() only uses the Vimscript implementation changed here when no provider answers, and otherwise hands the work to datetime.strptime(). AI-assisted
* vim-patch:9.2.1011: [security]: arbitrary Ex command execution during C ↵zeertzjq2026-08-26
| | | | | | | | | | | | | | omni-completion (#41501) Problem: arbitrary Ex command execution during C omni-completion via tag file names (Yazan Balawneh) Solution: Escape the | for all returned tag files Github Security Advisory: https://github.com/vim/vim/security/advisories/GHSA-r77m-8m55-rpr6 https://github.com/vim/vim/commit/331d5d67028505c5b6043603a57d1e8497b922b5 Co-authored-by: Christian Brabandt <cb@256bit.org>
* docs: misc, :bcd, slug()Justin M. Keyes2026-08-06
|
* refactor(zip)!: builtin zip.lua plugin #40846Barrett Ruth2026-07-29
| | | | | | | | | | Problem: The bundled `zip` plugin is implemented in Vimscript, making it harder to maintain and build on with Nvim's Lua runtime infrastructure. Solution: Add an opt-out `zip.lua` browser backed by `nvim.dir`, and disable the legacy Vimscript implementation by moving it to `pack/dist/opt/zip/`. Load it with `:packadd zip`.
* vim-patch:f88e719: runtime(python): Fix indenting for brackets within python ↵zeertzjq2026-07-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | byte strings Problem: s:SearchBracket()'s skip-expression matches syntax group names ending in "Comment", "Todo", or "String" to decide whether a candidate bracket is inside a string/comment and should be skipped for indentation purposes. Byte and raw-byte string literals (b"...", rb"...") are highlighted via the pythonBytes/pythonRawBytes syntax groups, which don't end in "String", so brackets inside them (e.g. b"[") were never skipped and were counted as real, unmatched brackets, producing incorrect indentation. Solution: Add "Bytes" to the indent script's existing suffix match, so pythonBytes/pythonRawBytes are recognized directly, the same way pythonString/pythonFString/pythonRawString already are. This supersedes an earlier version of this fix that renamed pythonBytes/pythonRawBytes to pythonBytesString/pythonRawBytesString in runtime/syntax/python.vim. fixes: vim/vim#20812 closes: vim/vim#20827 https://github.com/vim/vim/commit/f88e7191da1a03b2e79a2ba5fbc26f4948bcca81 Co-authored-by: qwavies <qwavsbusiness@gmail.com>
* vim-patch:4e3df44: runtime(indent-tests): Annotate timed "search*()"es for ↵zeertzjq2026-07-27
| | | | | | | | | | tracing related: vim/vim#17116 https://github.com/vim/vim/commit/4e3df44aa2a4f99c3c35e11371f7f1b2b6207558 Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
* vim-patch:9.2.0845: [security]: arbitrary Ex command execution during C ↵zeertzjq2026-07-25
| | | | | | | | | | | | | | | | | | | | | | | omni-completion Problem: [security]: arbitrary Ex command execution during C omni-completion (Threonine) Solution: Match tags typeref literally to block Ex command injection (Yasuhiro Matsumoto). Escaping only "/" and "\" left the typeref able to break out of the :vimgrep pattern without a "/": an unclosed "[" makes vimgrep's pattern skipping fail, and the parser then treats a following "|" as a command separator, so the tag value runs as Ex commands during C omni-completion. Match the field literally with \V so no regex metacharacter can affect pattern parsing. Github Security Advisory: https://github.com/vim/vim/security/advisories/GHSA-cx73-phcg-3j5g https://github.com/vim/vim/commit/2f628d8104958fa7421664f792ca6d4f7a39a10f Co-authored-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
* vim-patch:dd89754: runtime(typst): Improve ftplugin, and syntax filezeertzjq2026-07-02
| | | | | | | | | | | | | | | | | | - Move whitespace formatting settings from the indent to the filetype plugin behind a "typst_recommended_style" config option. - Set browsefilter - Improve syntax file Thanks to Maxim Kim for taking on maintainership of the typst runtime files. related: vim/vim#20036 closes: vim/vim#20077 https://github.com/vim/vim/commit/dd8975428bae4139d400df1ebac96aec65633089 Co-authored-by: Doug Kearns <dougkearns@gmail.com> Co-authored-by: Maxim Kim <habamax@gmail.com>
* vim-patch:3fa4da4: runtime: add missing fnameescape()/shellescape() in a few ↵zeertzjq2026-06-30
| | | | | | | | | runtime files (#40486) ping @jamessan for the debugchangelog change. https://github.com/vim/vim/commit/3fa4da4acb194660b7f44bba027af9f2120c27fe Co-authored-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
* vim-patch:9.2.0735: [security]: arbitrary Ex command execution during C ↵zeertzjq2026-06-27
| | | | | | | | | | | | | | | | | omni-completion (#40441) Problem: [security]: With C omni-completion, a crafted tags file can execute arbitrary Ex commands when completing a struct/union member (cipher-creator) Solution: Escape the type field before inserting it into the :vimgrep pattern so it cannot close the pattern and start a new command (Hirohito Higashi). Github Security Advisory: https://github.com/vim/vim/security/advisories/GHSA-mf92-v4xw-j45x https://github.com/vim/vim/commit/6b611b0d15603c52ebdad17172b0232b4f65704e Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
* vim-patch:9.2.0699: [security]: possible code execution with python complete ↵zeertzjq2026-06-22
| | | | | | | | | | | | | | | | (#40363) Problem: [security]: possible code execution with python complete (morningbread) Solution: Use repr() to quote the doc strings correctly Github Security Advisory: https://github.com/vim/vim/security/advisories/GHSA-ppj8-wqjf-6fp3 Supported by AI https://github.com/vim/vim/commit/cce141c42740f122dd8486ae04e21c2a81016ba8 Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:9.2.0678: [security]: potential powershell code execution in ↵zeertzjq2026-06-21
| | | | | | | | | | | | | | | zip.vim (#40343) Problem: [security]: potential powershell code execution in zip.vim (DDugs) Solution: Cleanup zip.vim, introduce PSEscape() to escape() potential powershell code, use consistent s:Escape() in the various PowerShell functions Github Security Advisory: https://github.com/vim/vim/security/advisories/GHSA-x5fg-h5w9-9frf https://github.com/vim/vim/commit/b2cc9be119d51212bf0d3f2a994c7e517c73f4a9 Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:b0ce576: runtime(tar): fix lz4 extraction on non-Linux systemszeertzjq2026-06-19
| | | | | | | | | | | | | | | | | | | | Patch 9.2.0306 fixed malformed lz4 extraction commands by using "tar -I lz4" on Linux and leaving non-Linux tar implementations to auto-detect lz4 input. That still fails on systems where tar does not support either -I lz4 or automatic lz4 decompression, such as Solaris /usr/bin/tar. Keep the existing Linux path using GNU tar's "-I lz4" support. For non-Linux systems, use lz4 explicitly to decompress the archive to stdout and feed the resulting tar stream to the configured tar extraction command. This is the same style tar.vim already used for lz4 archives before patch 9.2.0306. Follow-up for vim/vim#19925 closes: vim/vim#20555 https://github.com/vim/vim/commit/b0ce576fbc7af4a33226a8d076a01aadd024a23e Co-authored-by: Vladimír Marek <vlmarek13@gmail.com>
* vim-patch:9.2.0479: [security]: runtime(tar): command injection in tar pluginzeertzjq2026-06-19
| | | | | | | | | | | | | Problem: [security]: runtime(tar): command injection in tar plugin (Christopher Lusk) Solution: Use the correct shellescape(args, 1) form for a :! command Github Advisory: https://github.com/vim/vim/security/advisories/GHSA-2fpv-9ff7-xg5w https://github.com/vim/vim/commit/3fb5e58fbc63d86a3e65f1a141b0d67af2aa38a1 Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:1fee3cd: runtime(beancount): Include Beancount runtime fileszeertzjq2026-06-14
| | | | | | | | | | | Include with adjustments from the upstream repo: https://github.com/nathangrigg/vim-beancount closes: vim/vim#20373 https://github.com/vim/vim/commit/1fee3cd4b9a38b18656933d38a4977548d27808b Co-authored-by: Bruno BELANYI <bruno@belanyi.fr>
* vim-patch:9.2.0597: [security]: possible code execution with python complete ↵zeertzjq2026-06-05
| | | | | | | | | | | | | | | (#40117) Problem: [security]: another possible code execution with python complete (David Carliez) Solution: Strip default expressions and annotations from generated source for pythoncomplete and python3complete. Github Security Advisory: https://github.com/vim/vim/security/advisories/GHSA-65p9-mwwx-7468 https://github.com/vim/vim/commit/c8c63673bc4253212820626aeeb75999d9a539d2 Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:9.2.0568: pythoncomplete: g:pythoncomplete_allow_import had no ↵zeertzjq2026-05-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | effect (#40067) Problem: The security patch 9.2.0561 added a vim.eval() call inside Completer.evalsource() to honor g:pythoncomplete_allow_import. But the 'vim' module is only imported inside the outer vimcomplete() / vimpy3complete() function, not at the script's top level, so referring to it from a Completer method raises NameError. The surrounding bare 'except' silently swallows the error and leaves allow_imports at 0, meaning the opt-in never takes effect -- 'import os' (and any other buffer-level import) is always skipped, no candidates are produced for 'os.<...>' and Test_popup_and_preview_autocommand() fails on the Windows CI matrix (Linux skips the test because Python 2 is absent). Solution: Re-import 'vim' at the top of evalsource() in both pythoncomplete.vim and python3complete.vim so the eval reads the global, and set g:pythoncomplete_allow_import = 1 in the test (it is the opt-in intended for callers that trust the buffer contents) (thinca). closes: vim/vim#20386 https://github.com/vim/vim/commit/868ad62cb8bf8038322eab2badd31bd98b02b9df Co-authored-by: thinca <thinca@gmail.com>
* vim-patch:6de842c: runtime(autoload): consistently align with TABs in README.txtzeertzjq2026-05-31
| | | | | | closes: vim/vim#20378 https://github.com/vim/vim/commit/6de842c273afbb2b1a17ab42ff7fd50069dd243d
* vim-patch:9.2.0561: [security]: possible code execution with python3completezeertzjq2026-05-30
| | | | | | | | | | | | Problem: [security]: possible code execution with python3complete Solution: Disable execution of import/from statements Github Security Advisory: https://github.com/vim/vim/security/advisories/GHSA-52mc-rq6p-rc7c https://github.com/vim/vim/commit/4b850457e12e1a678dd209f2868154f7553cbf8d Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:9.2.0523: tests: no test for using shellescape() in combination ↵zeertzjq2026-05-24
| | | | | | | | | | | | | | | | | | | | | | with :! (#39972) Problem: tests: no test for using shellescape() in combination with :! Solution: Add a test that checks runtime files for using wrong combination of shellescape() with ! ex command This has lead to a few security relevant issues, so add a test that checks all runtime files for any ! followed by a shellescape() that does not use the {special} arg. related: Commit: 3fb5e58fbc63d86a3e65f1a141b0d67af2 (patch 9.2.0479: [security]: runtime(tar): command injection in tar plugin) closes: vim/vim#20286 Supported by AI https://github.com/vim/vim/commit/fccc2adc98c3d6664f1f2d8ddab17b096e647986 Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:1294861: runtime(getscript,vimball,rust): Use correct ↵zeertzjq2026-05-21
| | | | | | | | | | | | | | shellescape() form for ! ex cmd Problem: shellescape() called without {special} flag for :! ex command Solution: Pass 1 as second argument to shellescape() in :! contexts related: Commit: 3fb5e58fbc63d86a3e65f1a141b0d67af2 (patch 9.2.0479: [security]: runtime(tar): command injection in tar plugin) https://github.com/vim/vim/commit/129486193c16bb5c0208eff5501f9e665b7c4803 Co-authored-by: Christian Brabandt <cb@256bit.org>
* refactor(tutor): use inline comments instead of json file #39714Nathan Zeng2026-05-13
| | | | | | | | | | Problem: Expected text for interactive marks is in a separate json file from the tutor file. When the tutor file is updated, line numbers (potentially many) have to be updated in the json file. This is a burden for maintenance and automatic testing. Solution: Put the expected text inline in the tutor file, marked with `[[]]`. Parse and remove the comments before opening the tutor file so extmarks can be applied.
* vim-patch:ab02d65: runtime(gzip): Remove compatibility fall-backs, harden ↵zeertzjq2026-04-18
| | | | | | | random filename generation (#39165) https://github.com/vim/vim/commit/ab02d65b1f045607e51a28317894c39ae9512d1d Co-authored-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
* vim-patch:e6a84bb: runtime(tar): missing g:tar_secure in tar#Extract() (#39123)zeertzjq2026-04-16
| | | | | https://github.com/vim/vim/commit/e6a84bb6b0e45ddb106f689054b0d96aba161f67 Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:9.2.0355: runtime(tar): missing path traversal checks in ↵zeertzjq2026-04-16
| | | | | | | | | | | | | | | | | | tar#Extract() (#39095) Problem: runtime(tar): missing path traversal checks in tar#Extract() Solution: Add check for leading slash, however gnu tar should already detect this (q1uf3ng) tar#Extract() did not check for ../ sequences or absolute paths, unlike zip#Extract() which was patched in recent commits. Add the same checks: ../ (relative traversal), leading slash (Unix), drive letter and UNC/leading slash (Windows). closes: vim/vim#19981 https://github.com/vim/vim/commit/490b737f3e172c3c66744c7531ee85f19618419d Co-authored-by: q1uf3ng <q1uf3ng@protone.me>
* vim-patch:351a16c: runtime(zip): also block single leading slash and ↵zeertzjq2026-04-16
| | | | | | | | | | | | | | | | absolute paths in Extract (#39094) zip#Write(): the Windows path check did not match a single leading slash (/path), which resolves to the current drive root on Windows. Simplify the regex to match any leading slash or backslash. zip#Extract(): add absolute path checks for both Unix and Windows, matching the existing checks in zip#Write(). closes: vim/vim#19976 https://github.com/vim/vim/commit/351a16c88f56aeeca5e06095624dd701b264b2a9 Co-authored-by: q1uf3ng <q1uf3ng@protone.me>
* vim-patch:6836599: runtime(zip): Detect path traversal issues on Windows ↵zeertzjq2026-04-14
| | | | | | | (#39051) https://github.com/vim/vim/commit/6836599733950e1f52864a9742ff3e5bca5820fd Co-authored-by: Christian Brabandt <cb@256bit.org>
* feat(provider): support bun as node.js provider #38517Owen2026-04-12
| | | | | | | | | Problem: Neovim's Node.js provider does not support the Bun package manager. PR #26829 attempted to add this but used a hardcoded path and was abandoned. Solution: - Use `bun pm bin -g` to dynamically locate the global binary directory. - Update `health.lua` to recognize bun installations.
* vim-patch:9.2.0326: runtime(tar): but with dotted pathzeertzjq2026-04-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: runtime(tar): but with dotted path Solution: Do not strip everything after the first dot (Aaron Burrow) tar#Extract was getting the extensionless basename by stripping away everything starting with the leftmost dot. So if a directory had a dot or the file had an 'extra' dot then the code did the wrong thing. For example, if it was given: /tmp/foo.bar/baz.tar.gz Then it would treat /tmp/foo as the extensionless basename, but it actually should have grabbed: /tmp/foo.bar/baz This patch fixes the issue by instead looking at the rightmost dot(s). This bug was discovered by ChatGPT 5.4. I wrote the patch and tested vim. closes: vim/vim#19930 https://github.com/vim/vim/commit/4a1bcc67b4b6fc2dfe564ab4faca490f8afac857 Co-authored-by: Aaron Burrow <burrows@fastmail.com>
* vim-patch:9.2.0325: runtime(tar): bug in zstd handlingzeertzjq2026-04-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: patch 9.2.0325: runtime(tar): bug in zstd handling Solution: use correct --zstd argument, separated from other arguments, rework testing framework (Aaron Burrow). The tar.vim plugin allows vim to read and manipulate zstd archives, but it had a bug that caused extraction attempts to fail. Specifically, if the archive has a .tar.zst or .tzst extension, then the code was generating invalid extraction commands that looked like this: tar --zstdpxf foo.tar.zst foo When they should be like this: tar --zstd -pxf foo.tar.zst foo This patch changes the flag manipulation logic so that --zstd isn't glued to pxf. The labor for this change was divided between ChatGPT 5.4 and me. ChatGPT 5.4 identified the issue (from a code scan?), and I wrote the patch and tested vim. related: vim/vim#19930 https://github.com/vim/vim/commit/00285c035aa7d92971bc50b7b124e1408dda53ad Note: tests need the next patch to pass in Nvim. Co-authored-by: Aaron Burrow <burrows@fastmail.com>
* vim-patch:9.2.0306: runtime(tar): some issues with lz4 support (#38826)zeertzjq2026-04-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: runtime(tar): some issues with lz4 support Solution: Fix bugs (see below) (Aaron Burrow) The tar plugin allows users to extract files from tar archives that are compressed with lz4. But, tar#Extract() builds malformed extraction commands for lz4-compressed tar archives. This commit fixes three issues in that code. The first affects archives with a .tlz4 extension and the other two affect archives with .tar.lz4 extension (but one of these is symmetric to the issue that .tlz4 archives had). (1) When trying to extract .tlz4 archives the command created by tar#Extract looked like this: tar -I lz4pxf foo.tlz4 foo This isn't right. It should be something like this: tar -I lz4 -pxf foo.tlz4 foo This was happening because tar.plugin is just substituting on the first - in "tar -pxf". This works fine if we just add a simple flag for extraction (eg, z for .tgz), but for lz4 we need to add "-I lz4". I don't believe that there is an obvious good way to fix this without reworking the way the command is generated. Probably we should collect the command and flags separately and the flags should be stored in a set. Then put everything together into a string just before issuing it as an extraction command. Unfortunately, this might break things for users because they have access to tar_extractcmd. This patch just makes the substitution a little bit more clever so that it does the right thing when substituting on a string like "tar -pxf". (2) .tar.lz4 extractions had the same issue, which my patch fixes in the same way. (3) .tar.lz4 extractions had another issue. There was a space missing in the command generated by tar#Extract. This meant that commands looked like this (notice the lack of space between the archive and output file names): tar -I lz4pxf foo.tar.lz4foo This patch just puts a space where it should be. Finally, I should note that ChatGPT 5.4 initially identified this issue in the code and generated the test cases. I reviewed the test cases, wrote the patch, and actually ran vim against the tests (both with and without the patch). closes: vim/vim#19925 https://github.com/vim/vim/commit/78954f86c2027c766d9e2b5f7904b5fb4041d250 Co-authored-by: Aaron Burrow <burrows@fastmail.com>
* vim-patch:9.2.0299: runtime(zip): may write using absolute paths (#38810)zeertzjq2026-04-06
| | | | | | | | | | Problem: runtime(zip): may write using absolute paths (syndicate) Solution: Detect this case and abort on Unix, warn in the documentation about possible issues https://github.com/vim/vim/commit/46f530e517bd1b59acc2eb0d2aa76d02e54ca9fe Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:9.2.0280: [security]: path traversal issue in zip.vim (#38693)zeertzjq2026-04-01
| | | | | | | | | | | | Problem: [security]: path traversal issue in zip.vim (Michał Majchrowicz) Solution: Detect more such attacks and warn the user. Github Advisory: https://github.com/vim/vim/security/advisories/GHSA-jc86-w7vm-8p24 https://github.com/vim/vim/commit/7088926316d8d4a7572a242d0765e99adfc8b083 Co-authored-by: Christian Brabandt <cb@256bit.org>
* fix(tutor): open a temporary copy instead of original file #38522Matthew Chen2026-03-31
| | | | | | | | | | | | | | | | | | | | | | | Problem: `:Tutor` should open a copy of the tutor file instead of the original. This is because edits modify the original file buffer, and crashes or other misuse could potentially corrupt the original file even if it's WO. Solution: Copy the tutor file to a temp path before opening. Store the original path in `b:tutor_file` so metadata json loading still works. - `tutor#TutorCmd` will now copy the tutor file to a temp path via `tempname()` before opening with `drop`. Store the original path in `b:tutor_file` only after the buffer is created. - `tutor#LoadMetadata` now uses `b:tutor_file` to resolve the JSON path instead of `expand('%')`, which now points to the temp copy buffer - `ftplugin/tutor.vim` does not make the `tutor#LoadMetadata` call anymore. It was guarded by `filereadable(expand('%').'.json')` which fails for the new temp copy path logic . Instead, `tutor#LoadMetadata` is already called directly inside `tutor#TutorCmd` since we are already assumed to enable interactive. Co-authored-by: Phạm Bình An <111893501+brianhuster@users.noreply.github.com>
* vim-patch:068c060: runtime(rustfmt): not correctly escaping directory names ↵zeertzjq2026-03-30
| | | | | | | | | | (#38597) Problem: runtime(rustfmt): not correctly escaping directory names Solution: Use fnamescape() (Michał Majchrowicz) https://github.com/vim/vim/commit/068c0604c95e76f0f98984f908747deba94ed155 Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:2c1269f: runtime(zip): Make ZipUpdatePS() check that shell is ↵zeertzjq2026-03-09
| | | | | | | | | powershell (#38204) fixes: vim/vim#19576 https://github.com/vim/vim/commit/2c1269f0d34f6526f0aaff89b85e0a83e9233fe1 Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:89712b9: runtime(ccomplete): handle structs from tags file (#37956)zeertzjq2026-02-19
| | | | | | | fixes: vim/vim#7292 https://github.com/vim/vim/commit/89712b9f0e8cbf6074cc5dc0465bdd62245ad9c1 Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:abac1c1: runtime(zip): use system() instead of :!zeertzjq2026-02-16
| | | | | | | | | | | | | - ':!' is not stable, so use system() to get more consistent behaviour. - Only warns when using 'pwsh'. - Remove trailing spaces. closes: vim/vim#19370 https://github.com/vim/vim/commit/abac1c1aa67d96313a9cfd086e2267f1c684e740 Co-authored-by: Mao-Yining <mao.yining@outlook.com> Co-Authored-by: @lxhillwind