Commit Graph

37653 Commits

Author SHA1 Message Date
zeertzjq
a45d3dccf1 Merge pull request #41246 from zeertzjq/vim-e0b8113
vim-patch: doc updates
2026-08-09 08:17:43 +08:00
zeertzjq
10aa1c975f vim-patch:a33e5da: runtime(doc): Improve :help expr-number
closes: vim/vim#20956

a33e5da9f5

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2026-08-09 08:00:12 +08:00
zeertzjq
05acaa8330 vim-patch:e0b8113: runtime(doc): DocBook syntax variable scopes are not clearly documented
Problem:  DocBook syntax variable scopes of docbk_type and docbk_ver
          are not clearly documented: docbk_type uses the wrong scope
          (it should be buffer-local) and docbk_ver also has an
          undocumented buffer-local version.
Solution: Correct the docbk_type examples and describe the docbk_ver
          precedence.

closes: vim/vim#20977

e0b81136c7

Co-authored-by: Bogdan Barbu <l4b.bogdan.barbu@gmail.com>
2026-08-09 08:00:11 +08:00
Christian Clason
0faf4aca73 build(deps): bump wasmtime to v36.0.13 2026-08-08 13:50:43 +02:00
Christian Clason
c447b99e40 build(deps): bump tree-sitter to 308aee0c9 2026-08-08 13:50:43 +02:00
Justin M. Keyes
e16d577f16 Merge #41224 from justinmk/fixbuild 2026-08-08 03:59:15 -04:00
Jan Edmund Lazo
a08607b8d6 vim-patch:8.2.1478: Vim9: cannot use "true" for some popup options (#41236)
Problem:    Vim9: cannot use "true" for some popup options.
Solution:   Add dict_get_bool(). (closes vim/vim#6725)

558813314d

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-08-08 13:19:59 +08:00
zeertzjq
27e36dea19 Merge pull request #41235 from janlazo/vim-8.2.1572
vim-patch:8.2.{1572,1573,1574,1575,1576,1577}
2026-08-08 12:50:25 +08:00
Jan Edmund Lazo
989726f3a6 vim-patch:8.2.1577: Vim9: hasmapto()/mapcheck()/maparg() do nottake "true" arg
Problem:    Vim9: hasmapto(), mapcheck() and maparg() do not take "true" as
            argument.
Solution:   Use tv_get_bool(). (closes vim/vim#6822, closes vim/vim#6824)

04d594b9c1

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-08-08 00:28:12 -04:00
Jan Edmund Lazo
ecbae9911e vim-patch:8.2.1576: Vim9: index() does not take "true" as argument
Problem:    Vim9: index() does not take "true" as argument.
Solution:   Use tv_get_bool_chk(). (closes vim/vim#6823)

6c553f9c04

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-08-08 00:25:18 -04:00
Jan Edmund Lazo
b055504d41 vim-patch:8.2.1575: Vim9: globpath() doesnot take "true" as argument
Problem:    Vim9: globpath() doesnot take "true" as argument.
Solution:   Use tv_get_bool_chk(). (closes vim/vim#6821)

f966ce5ea2

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-08-08 00:23:16 -04:00
Jan Edmund Lazo
f3491ac971 vim-patch:8.2.1574: Vim9: glob() doesnot take "true" as argument
Problem:    Vim9: glob() doesnot take "true" as argument.
Solution:   Use tv_get_bool_chk(). (closes vim/vim#6821)

5892ea1511

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-08-08 00:22:02 -04:00
Jan Edmund Lazo
c2f0c2b4d1 vim-patch:8.2.1573: Vim9: getreg() does not take "true" as argument
Problem:    Vim9: getreg() does not take "true" as argument.
Solution:   Use tv_get_bool_chk().  (closes vim/vim#6820)

67ff97ded7

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-08-08 00:19:53 -04:00
Jan Edmund Lazo
e4a96c16c9 vim-patch:8.2.1572: Vim9: expand() does not take "true" as argument
Problem:    Vim9: expand() does not take "true" as argument.
Solution:   Use tv_get_bool_chk().  (closes vim/vim#6819)

551d25e765

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-08-08 00:16:29 -04:00
zeertzjq
390e90bba4 vim-patch:9.2.0925: crash when getcompletiontype() gets a NULL string (#41231)
Problem:  Crash when getcompletiontype()/getcompletion() gets a NULL string
          (dvaave2025).
Solution: Do not write the NUL terminator in set_cmd_context() when the
          cursor column is at or past the end of the string, since the
          string may be a read-only literal.

fixes:  vim/vim#20963
closes: vim/vim#20964

Supported by AI.

e2dcefa0d8

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-08-08 09:44:54 +08:00
zeertzjq
5d5b8e3e7d vim-patch:9.2.0923: tabpage: closing a tab page loses the alternate tab page (#41229)
Problem:  Closing the current tab page resets the alternate tab page, even
          when that is another tab page which still exists, so that
          CTRL-Tab stops working (igorlfs).
Solution: Restore the last used tab page after entering another one to
          close the current one (Hirohito Higashi).

related: vim/vim#20965
closes:  vim/vim#20973

a05bd64c1d

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 09:30:03 +08:00
zeertzjq
318d6a7f59 vim-patch:2c0318d: runtime(doc): fix typo in netrw help file (#41228)
closes: vim/vim#20968

2c0318d285

Co-authored-by: Rochish Manda <28740792+Rochish-Manda@users.noreply.github.com>
2026-08-08 09:26:00 +08:00
Justin M. Keyes
9e283f273b test(terminal): unreliable "spawns in CWD effective at time of invocation"
FAILED  …/terminal/ex_terminal_spec.lua @ 270: :terminal (fake shell) spawns in CWD effective at time of invocation
    Expected values to differ.
    Value:
    "~/work/neovim/neovim/build/Xtest_xdg_terminal"
    stack traceback:
   …/terminal/ex_terminal_spec.lua:276: in function <…/terminal/ex_terminal_spec.lua:270>
2026-08-08 02:23:55 +02:00
Justin M. Keyes
eecc4b73ff fix(coverity): UNINIT, FORWARD_NULL
CID 652778:         Uninitialized variables  (UNINIT)
    /src/nvim/context.c: 353             in ctx_dirs_save()
    347         if (curbuf->b_sfname != NULL && curbuf->b_fname == curbuf->b_sfname) {
    348           cs->cs_save_sfname = xstrdup(curbuf->b_sfname);
    349         }
    350         do_autochdir();
    351         char autocwd[MAXPATHL];
    352         if (os_dirname(autocwd, MAXPATHL) == OK) {
    >>>     CID 652778:         Uninitialized variables  (UNINIT)
    >>>     Using uninitialized value "*cwd" when calling "strcmp".
    353           cs->cs_apply_acd = strcmp(cwd, autocwd) == 0;
    354         }
    355       }
    356     }
    357
    358     /// Restores the dir state saved by ctx_dirs_save(), undoing any chdir made while switched. The

    CID 652777:         Null pointer dereferences  (FORWARD_NULL)
    /src/nvim/context.c: 556             in ctx_switch()
    550         cs->cs_target_win = wp->handle;
    551         cs->cs_target_old_pos = wp->w_cursor;
    552       }
    553       // The CWD-state snapshot is only for a real window target; hidden-buffer target is handled by the
    554       // ctx_win machinery (ctx_win_prep).
    555       if (buf == NULL || wp != NULL) {
    >>>     CID 652777:         Null pointer dereferences  (FORWARD_NULL)
    >>>     Passing null pointer "wp" to "ctx_dirs_save", which dereferences it.
    556         ctx_dirs_save(cs, wp, tp == NULL ? curtab : tp, buf);
    557       }
    558
    559       // Save the current state.
    560       cs->cs_curwin = curwin->handle;
    561       cs->cs_prevwin = prevwin == NULL ? 0 : prevwin->handle;
2026-08-08 02:23:55 +02:00
tao
f0a0182285 refactor(path): pathcmp() #41035
Problem:
Redudant code

Solution:
Add `path_fold_char()` to normalize path sep.
Refactor `pathcmp()` and `path_fnamencmp()` into `path_cmp`.

| feature                  | pathcmp        | path_fnamencmp | path_cmp(now) |
| ------------------------ | -------------- | -------------- | ------------- |
| case folding             | `mb_toupper()` | `utf_fold()`   | `utf_fold()`  |
| consults fileignorecase  |              |              | `ic` param    |
| `maxlen`                 |              |              |             |
| `/` == `\`               |              |              |             |
| MSWIN drive letter       |              |              |             |
| sep affects sorting      |              |              |             |
| ignores a trailing slash |              |              |             |

Refactor `path_fnamecmp` and `path_full_compare` into `path_equal`,
with flags controlling "no filesystem" comparison (i.e. `path_cmp`), env
variables expansion, absolute path resolution and filesystem access.
2026-08-07 19:54:29 -04:00
Justin M. Keyes
b53c00b425 fix(progress): ins-compl progress-msg during pum #41226
Problem:
The insert-mode completion progress-message is in "running" state while
the user is selecting an item. That is noisy and unwanted UX; it was
only intended for the "Scanning..." task.

Solution:
End the progress-msg just after `ins_compl_show_statusmsg`.
2026-08-07 22:49:44 +00:00
Justin M. Keyes
33a688f9fe fix(messages): dangling progress-messages #41222
Problem:
Some builtin features emit progress-messages which never "complete".
- On failure, `:write` does not complete the progress-msg it started.
- ins-completion never ends its "Scanning..." message.

Solution:
- `buf_write()` emits "failed" status on failure.
- `ins_compl_stop()` ends the completion one.
2026-08-07 16:10:02 -04:00
Jan Edmund Lazo
8773f85473 vim-patch:8.2.1533: Vim9: error when passing getreginfo() result to setreg() #41216
Problem:    Vim9: error when passing getreginfo() result to setreg().
Solution:   Use dict_get_bool() for "isunnamed". (closes vim/vim#6784)

6a950581da

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-08-07 16:08:54 -04:00
Justin M. Keyes
d0e8ebbaf3 Merge #41223 from janlazo/vim-8.2.1550
vim-patch:8.2.{1550,1571}
2026-08-07 16:07:20 -04:00
Jan Edmund Lazo
e0cb9004ee vim-patch:8.2.1571: Vim9: count() third argument cannot be "true"
Problem:    Vim9: count() third argument cannot be "true".
Solution:   use tv_get_bool_chk(). (closes vim/vim#6818)

119f557230

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-08-07 15:34:48 -04:00
Jan Edmund Lazo
906639e34b build(vim-patch): vim9 check_typval_type() is n/a
v8.2.1551
2026-08-07 14:59:37 -04:00
Jan Edmund Lazo
feba594ed3 vim-patch:8.2.1550: Vim9: bufname('%') gives an error
Problem:    Vim9: bufname('%') gives an error.
Solution:   Only give an error for wrong argument type. (closes vim/vim#6807)

02aaad9109

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-08-07 14:52:34 -04:00
Justin M. Keyes
0a2676e54a fix(messages): :read starts a "bufwrite" progress #41219
Problem:
filemess() treats an empty suffix as "a buffer write is starting", but
readfile() calls it that way too. So ":read" (and ":edit", …) opens a
`nvim.bufwrite "<file>"` progress that is never completed.

Users of e.g. ghostty will see a stuck "progress" spinner.

Solution:
Only `buf_write()` starts the progress, via `filemess_progress()`.
2026-08-07 13:21:17 -04:00
Erdiansyah
59597316a6 fix(cwd): :bcd lost by nvim_win_set_buf, nvim_open_win #41218
Problem:
:bcd (buffer-local directory) is not preserved after
`nvim_open_win` or `nvim_win_set_buf`

Analysis:
set_curbuf() ends with update_cwd(), which falls back to
os_chdir(globaldir) when the target buffer has no b_localdir.

Solution:
Pass kCtxKeepCwd to ctx_switch().
2026-08-07 12:09:22 -04:00
Mike J McGuirk
fe3aa64945 feat(lsp): pass target buffer to reuse_client predicate #41163
Problem: The reuse_client predicate does not pass the target buffer,
preventing decisions from being truly made per buffer.

Solution: Pass the target buffer.
2026-08-07 11:27:19 -04:00
Jan Edmund Lazo
cd02662ba3 vim-patch:8.2.1525: messages from tests were not always displayed #41203
Problem:    Messages from tests were not always displayed.
Solution:   Always show messages, the timing is always useful. (Ken Takata,
            closes vim/vim#6792)

6e3aeec846

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-08-07 11:18:50 -04:00
Justin M. Keyes
7e53d3ba4d fix(cwd): keep buffer-local dir when re-editing #41215
Problem:
Re-editing a buffer (`:edit!`, re-reading a dir.lua buffer, etc.) drops
its `:bcd` directory, so the CWD falls back to the global one. Whereas
other buffer-local state (`b:` vars, local options) survives a reload.

Solution:
Don't clear buf dir in `buf_freeall()`; `do_ecmd()` calls that when
reloading/re-editing. `free_buffer_stuff()` still clears them when
a buffer is freed or reused for another file.
2026-08-07 14:10:21 +00:00
dependabot[bot]
d0f96adf8a ci: bump github/codeql-action
Bumps the github-actions group with 1 update in the / directory: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 4.37.3 to 4.37.4
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v4.37.3...v4.37.4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.37.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-07 14:43:13 +02:00
Evgeni Chasnovski
87a8bbabcf fix(highlight): explicitly define TabLineSel bg/fg #41196
Problem: `TabLineSel` by default is defined with only bold attribute.
  This makes selected tabpage stand out relatively well, but when used
  in custom tabline it will be combined with `TabLineFill` (which is
  reserved for the "non tabpage" part of the tabline).
  Plus the behavior is not consistent with the default 'tabline' which
  combines it with `Normal`.

Solution: Explicitly define background and foreground colors to come
  from `Normal` to ensure the current default 'tabline' behavior even in
  custom tabline.
  The more semantically driven solution here is to link `TabLineSel` to
  `StatusLine`. This makes it more aligned with how `TabLine` is linked
  to `StatusLineNC`. But the current "bold text with `Normal` colors" is
  argued to look better as a default.

  Also make sure that 'notermguicolors' highlighting in default and
  custom tablines is the same: the current tabpage does not have
  underline and is not bold.
2026-08-07 08:33:14 -04:00
Justin M. Keyes
72907fe0f7 Merge #41200 from janlazo/na-patch-821300
build(vim-patch): misc n/a hunks since patch v8.2.1300
2026-08-07 07:45:11 -04:00
Justin M. Keyes
2e0a5a596a fix(terminal): spawn in effective CWD #41211
Problem:
`:terminal` does not respect the invocation-time CWD.
This wasn't noticeable with `:lcd` because the window-local CWD gets
applied to the new terminal buffer. But it is noticeable with `:bcd`.

Solution:
Specify `cwd` in the job spec.
2026-08-07 07:44:19 -04:00
Barrett Ruth
bc9d27b0bc fix(window): 'winbar' in single-row win overlaps global 'statusline' #41188 2026-08-07 07:06:23 -04:00
Barrett Ruth
0105f15201 fix(window): statusline can silently fail to make room #41201 2026-08-07 06:39:13 -04:00
Freddie Haddad
a8da01f8e6 fix(decor): highlight without 'hl_eol' bleeds into wrap gaps #41160
Problem:
'linebreak' filler and 'breakindent'/'showbreak' padding are screen
cells with no buffer character behind them, yet a decoration draws over
them whether or not it asked to cover such cells. A highlight bounded to
its text then paints a tail out to the edge of the row, most visible on
inline code spans from plugins. That same highlight already leaves the
cells past the end of a line alone, so it treats identical cells two
different ways.

Solution:
Only a decoration with 'hl_eol' draws the gaps, which is what the flag
already means at the end of a line. A full-width background such as a
fenced code block sets it and still covers them. Classic :syntax has no
such flag and is unchanged.
2026-08-07 05:09:48 -04:00
Justin M. Keyes
a4a544032a feat(cwd)!: :lcd! (bang), rearrange :bcd/:lcd/… scope precedence #41194
Problem:
- buf-local CWD scope is lower priority than :lcd, which is weird.
  ```
  win > buf > tab > global
  ```
- No way to clear current CWD at a given scope.

Solution:
- Rerrange scope precedence to:
  ```
  buf > win > tab > global
  ```
- Introduce "bang" variants (`:bcd!`/`:lcd!`/`:tcd!`) which clears the
  local CWD for the given scope.
2026-08-07 04:41:37 -04:00
github-actions[bot]
0e8903f44b docs: update version.c #41190
vim-patch:8.2.1091: no check if opening a pty works
vim-patch:8.2.1120: Python code not tested properly
vim-patch:9.2.0911: makefiles do not build hardcopy_postscript.c
vim-patch:9.2.0915: tests: two terminal tests in test_popupwin fail on FreeBSD

vim-patch:8.2.0290: running individual test differs from all tests
vim-patch:8.2.1132: Vim9: return type of repeat() is not specific enough
vim-patch:8.2.1133: Vim9: return type of add() is not specific enough
vim-patch:8.2.1136: Vim9: return type of argv() is always any
vim-patch:8.2.1138: Vim9: return type of copy() and deepcopy() is any
vim-patch:8.2.1140: Vim9: return type of extend() is any
vim-patch:8.2.1141: Vim9: return type of filter() is any
vim-patch:8.2.1142: Vim9: return type of insert() is any
vim-patch:8.2.1143: Vim9: return type of remove() is any
vim-patch:8.2.1144: Vim9: return type of reverse() is any
vim-patch:8.2.1158: build error
vim-patch:8.2.1176: Vim9: not enough type checking in Vim9 script
vim-patch:8.2.1191: Vim9: crash when function calls itself
vim-patch:8.2.1205: Vim9: && and || work different when not compiled
vim-patch:8.2.1290: Vim9: cannot replace a global function
vim-patch:8.2.1355: Vim9: no error using :let for options and registers
vim-patch:8.2.1373: Vim9: no error for assigning to non-existing script var
vim-patch:8.2.1376: Vim9: expression mapping causes error for using :import
vim-patch:8.2.1380: Vim9: return type of getreg() is always a string
vim-patch:8.2.1387: Vim9: cannot assign to single letter variable with type
vim-patch:8.2.1403: Vim9: Vim highlighting may fail in cmdline window
vim-patch:8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
vim-patch:8.2.1447: Vim9: return type of keys() is list
vim-patch:8.2.1459: Vim9: declaring script var in script does not infer the type
vim-patch:8.2.1477: Vim9: error when using bufnr('%')
vim-patch:8.2.1502: Vim9: can use += with a :let command at script level
vim-patch:8.2.1509: vertical separator is cleared when dragging a popup window
vim-patch:8.2.1514: multibyte vertical separator is cleared when dragging popup
vim-patch:8.2.4962: files show up in git status

vim-patch:9.2.0918: screen: fill char with a zero low byte is stored as a NUL cell
vim-patch:9.2.0919: screen: the wrong array is copied into ScreenCols on a resize
2026-08-07 04:37:00 -04:00
zeertzjq
5117b04745 Merge pull request #41207 from zeertzjq/vim-bfc7604
vim-patch: runtime file updates
2026-08-07 12:54:57 +08:00
zeertzjq
9c738cb718 vim-patch:9.2.0920: filetype: json-ld files are not recognized
Problem:  filetype: json-ld files are not recognized
Solution: Detect *.jsonld files as jsonld filetype, include
          filetype, indent and syntax plugins (Bogdan Barbu).

Reference:
https://www.w3.org/TR/json-ld11/

closes: vim/vim#20954

a1e2198a2c

Co-authored-by: Bogdan Barbu <l4b.bogdan.barbu@gmail.com>
2026-08-07 12:36:41 +08:00
zeertzjq
925ddb190f vim-patch:90e8cb0: runtime(sh): Fix shFunctionTwo and shFunctionFour definitions for Bash
Claim e.g. "function f () { :; }" as shFunctionTwo while
observing that parentheses after the function name are
optional when the "function" word is used and do not delimit
its body if the latter follows them in "{}" (which should
not be taken for granted with limited backtracking).

closes: vim/vim#20878

90e8cb0094

Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
2026-08-07 12:35:04 +08:00
zeertzjq
ba823836cf vim-patch:bfc7604: runtime(sh): Do not conflate comments and function declarations in Bash
Bash identifiers declared in scripts cannot have a leading
"#" in their names.  And neither "namespace" nor "function"
can be followed by a newline before an identifier.

related: vim/vim#20878

bfc7604678

Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
Co-authored-by: Christoffer Aasted <dezzadk@gmail.com>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2026-08-07 12:34:54 +08:00
zeertzjq
439c967010 fix(drawline): 'statuscolumn' breaks unprintable char wrapping (#41198)
Problem:
Evaluating 'statuscolumn' overwrites transchar_charbuf[], which breaks
the drawing of an unprintable char if p_extra points there.

Solution:
Make a copy in wlv.extra so that it won't be overwritten.
2026-08-07 04:01:38 +00:00
Jan Edmund Lazo
107b806bbe build(vim-patch): os makefile for tests are n/a
Following remain relevant:

- src/testdir/Makefile (default setup in Unix-like OS)
- src/testdir/Make_all.mak (define old/new style Vim tests)

Rest are n/a because Nvim runs Vim's tests on GHA Windows runner.
2026-08-06 23:15:57 -04:00
Jan Edmund Lazo
2b7c53be42 build(vim-patch): runnvim should make redir_test_to_null n/a
Prior patches for it are marked n/a.
Target v8.2.2630 .
2026-08-06 19:33:45 -04:00
Jan Edmund Lazo
12d9f33c15 build(vim-patch): vim9 error 1103 is n/a
v8.2.1341
2026-08-06 13:17:05 -04:00
Jan Edmund Lazo
693de029bc build(vim-patch): vim9 skip_type() is n/a
v8.2.1300
2026-08-06 12:53:47 -04:00