Commit Graph

33453 Commits

Author SHA1 Message Date
zeertzjq
5aaee7d2af vim-patch:9.1.1596: tests: Test_search_wildmenu_iminsert() depends on help file (#35210)
Problem:  tests: Test_search_wildmenu_iminsert() depends on help file
          (after 9.1.1594).
Solution: Set buffer text using setline() instead of loading help file.
          Add a test for another bug fixed by 9.1.1594 (zeertzjq).

related: vim/vim#17870
closes: vim/vim#17922

615ad4ced1
2025-08-07 13:38:45 +00:00
zeertzjq
e12bfb4c70 vim-patch:54fb7ba: runtime(doc): remove mentioning of netrwSettings.vim (#35209)
closes: vim/vim#17925

54fb7ba256

Co-authored-by: Lane East <laneast@laneast.com>
2025-08-07 13:30:38 +00:00
zeertzjq
5f9f706462 fix(ui): check for cmdline mode properly (#35202) 2025-08-07 04:22:01 +00:00
github-actions[bot]
c47a69c1a6 docs: update version.c #35024
vim-patch:8.1.0710: when using timers may wait for job exit quite long
vim-patch:8.1.0969: message written during startup is truncated
vim-patch:8.1.1043: Lua interface does not support Blob
vim-patch:8.1.1389: changes are not flushed when end and start overlap
vim-patch:8.1.1395: saving for undo may access invalid memory
vim-patch:8.1.1534: modeless selection in popup window selects too much
vim-patch:8.1.1571: textprop highlight starts too early if just after a tab
vim-patch:8.1.1573: textprop test fails if screenhots do not work
vim-patch:8.1.1663: compiler warning for using size_t
vim-patch:8.1.1866: modeless selection in GUI does not work properly
vim-patch:8.1.1871: modeless selection in GUI still not correct
vim-patch:8.1.2085: MS-Windows: draw error moving cursor over double-cell char
vim-patch:8.1.2107: various memory leaks reported by asan
vim-patch:8.1.2146: build failure
vim-patch:8.1.2296: text properties are not combined with syntax by default
vim-patch:8.1.2299: ConPTY in MS-Windows 1909 is still wrong
vim-patch:8.1.2337: double-click time sometimes miscomputed

vim-patch:8.2.0300: Vim9: expression test fails without channel support
vim-patch:8.2.0414: channel connect_waittime() test is flaky
vim-patch:8.2.0501: Vim9: script test fails when channel feature is missing
vim-patch:8.2.0508: Vim9: func and partial types not done yet
vim-patch:8.2.0527: Vim9: function types insufficiently tested
vim-patch:8.2.0565: Vim9: tests contain superfluous line continuation
vim-patch:8.2.0640: Vim9: expanding  does not work
vim-patch:8.2.0700: Vim9: converting error message to exception not tested
vim-patch:8.2.0701: Vim9 test fails without job feature
vim-patch:8.2.1481: Vim9: line number reported with error may be wrong
vim-patch:8.2.1609: Vim9: test fails when build without +channel
vim-patch:8.2.1724: Vim9: assignment tests spread out
vim-patch:8.2.1759: Vim9: Some tests are still using :let
vim-patch:8.2.1865: Vim9: add() does not check type of argument
vim-patch:8.2.1867: Vim9: argument to add() not checked for blob
vim-patch:8.2.1965: Vim9: tests fail without the channel feature
vim-patch:8.2.2301: Vim9: cannot unlet a dict or list item
vim-patch:8.2.2304: Vim9: no test for unletting an imported variable
vim-patch:8.2.3006: crash when echoing a value very early
vim-patch:8.2.3007: Vim9: test for void value fails
vim-patch:8.2.3008: startup test may hang
vim-patch:8.2.3009: startup test may hang
vim-patch:8.2.3181: Vim9: builtin function test fails without channel feature
vim-patch:8.2.3242: Vim9: valgrind reports leaks in builtin function test
vim-patch:8.2.3382: crash when getting the type of a NULL partial
vim-patch:8.2.3845: Vim9: test fails when the channel feature is missing
vim-patch:8.2.4407: Vim9: some code not covered by tests
vim-patch:8.2.4410: Vim9: some code not covered by tests

vim-patch:9.0.0563: timer_info() test fails
vim-patch:9.0.2080: vim9_script test too large

vim-patch:9.1.1541: Vim9: error when last enum value ends with a comma
2025-08-06 20:26:50 -07:00
skewb1k
d26db4bfbf feat(lsp): improve signature help display #35190
- Add delimiter between function signature and documentation, matching hover formatting
- Show title only if there are multiple clients or multiple signatures
- Avoid duplicating the title inside the window if it's already shown in the border
2025-08-06 19:56:02 -07:00
skewb1k
d73f2d9657 build(emmyrc.json): use StyLua formatter in .emmyrc.json #35196 2025-08-06 19:52:46 -07:00
dependabot[bot]
c04e40d9f4 ci: bump actions/download-artifact from 4 to 5 (#35188)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-06 19:30:34 -07:00
zeertzjq
e40199c6c6 vim-patch:9.1.1594: completion: search completion throws errors (#35198)
Problem:  completion: search completion throws errors, wrong placement
          of pum menu with 'imi'=1 (berggeist)
Solution: Fix those errors (Girish Palya)

fixes: vim/vim#17858
closes: vim/vim#17870

66467cf5d8

Co-authored-by: Girish Palya <girishji@gmail.com>
2025-08-06 23:56:58 +00:00
zeertzjq
c46641fea1 Merge pull request #35197 from zeertzjq/vim-bb0860a
vim-patch: doc updates
2025-08-07 07:15:25 +08:00
zeertzjq
654cde369d vim-patch:f7deb81: runtime(doc): fix typo at :h cmdline-autocompletion
The '?' needs to be escaped, because the autocommand is using
file-patterns (glob like) and not a regex). See :h file-pattern

closes: vim/vim#17890

f7deb815b0

Co-authored-by: Girish Palya <girishji@gmail.com>
2025-08-07 06:33:51 +08:00
zeertzjq
cc25cd2cb7 vim-patch:bb0860a: runtime(doc): tweak option name notation further
related: vim/vim#17857
closes: vim/vim#17917

bb0860abc9

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
2025-08-07 06:33:21 +08:00
bfredl
bc0b3f271c Merge pull request #35129 from bfredl/nopreproc
refactor(build): don't use the preprocessor when generating headers
2025-08-06 21:58:20 +02:00
glepnir
5b1b46ea5a fix(lsp): show title when global winborder is set (#35181)
Problem: make_floating_popup_options only shows when opts.border is explicitly set, ignoring global winborder setting

Solution: check both opts.border and vim.o.winborder when determining whether to show title
2025-08-06 08:25:55 -05:00
bfredl
79c8159f41 refactor(build): don't use the preprocessor when generating headers
Using the preprocessor before generating prototypes provides some
"niceties" but the places that rely on these are pretty few.
Vastly simplifying the BUILD SYSTEM is a better trade-off.

Unbalancing { } blocks due to the preprocessor is cringe anyway (think
of the tree-sitter trees!), write these in a different way.

Add some workarounds for plattform specific features.

INCLUDE_GENERATED_DECLARATIONS flag is now technically redundant,
but will be cleaned up in a follow-up PR as it is a big mess.
2025-08-06 15:10:25 +02:00
zeertzjq
b4c092a092 Merge pull request #35187 from zeertzjq/vim-85cd509
vim-patch: doc updates
2025-08-06 20:51:14 +08:00
Gregory Anders
851a622806 docs(lsp): include snippet to display progress using native indicator (#35176) 2025-08-06 07:31:02 -05:00
zeertzjq
5b3606b2c4 vim-patch:067adc1: runtime(doc): add back bars for the '' mark
this was erroneously changed in commit
85cd509885a05c3a6bb029fb378b1295f107f8f6

related: vim/vim#17857

067adc1ff2
2025-08-06 20:25:29 +08:00
zeertzjq
60dca47ae4 vim-patch:85cd509: runtime(doc): Use correct option-name tags
closes: vim/vim#17857

85cd509885

Omit 'completepopup' and v:colornames.

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
2025-08-06 20:25:29 +08:00
zeertzjq
a3921d2be6 vim-patch:3769100: runtime(doc): fix mismatch between 'backspace' and |i_backspacing| (#35185)
closes: vim/vim#17867

3769100a8e

Co-authored-by: Emilien Breton <bricktech2000@gmail.com>
2025-08-06 11:41:43 +00:00
zeertzjq
72d3ffd716 vim-patch:a7a2a2b: runtime(doc): Tweak documentation style (#35184)
closes: vim/vim#17862

a7a2a2b5ae

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
2025-08-06 10:52:53 +00:00
zeertzjq
0fa81578af Merge pull request #35174 from janlazo/vim-8.2.0512
vim-patch:8.2.{307,512,1123,1555,1912,3602},9.0.1689
2025-08-06 14:19:53 +08:00
Jan Edmund Lazo
b869cf8ddc vim-patch:9.0.1689: python 3.12 produces warnings and fails test
Problem: python 3.12 produces warnings and fails test
Solution: Make use of raw strings in python3 tests

closes: vim/vim#12765

288bf26c53

Co-authored-by: Zdenek Dohnal <zdohnal@redhat.com>
2025-08-06 01:09:05 -04:00
Jan Edmund Lazo
cba2f65ee4 vim-patch:8.2.3602: Python3 test fails with Python 3.10 on MS-Windows
Problem:    Python3 test fails with Python 3.10 on MS-Windows.
Solution:   Adjust the expected error. (Ken Takata, closes vim/vim#9118)

1be7e21583

Co-authored-by: K.Takata <kentkt@csc.jp>
2025-08-06 01:07:11 -04:00
skewb1k
820fb89172 fix(lsp): make thematic break parsing conform to GFM spec (#35162)
- Support for '_' and '*' as delimiters
- Allow spaces between delimiters
- Use more efficient implementation
2025-08-05 16:34:14 -04:00
Jan Edmund Lazo
7ae8860674 vim-patch:8.2.1912: with Python 3.9 some tests fail
Problem:    With Python 3.9 some tests fail.
Solution:   Take into account the different error message. (James McCoy,
            closes vim/vim#7210)

68a48ee55e

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2025-08-05 13:33:59 -04:00
Jan Edmund Lazo
b95413f601 vim-patch:8.2.1555: not all tests are executed on Github Actions
Problem:    Not all tests are executed on Github Actions.
Solution:   Copy "src" to "src2" earlier. Recognize "src2" in a couple more
            places.  Add two tests to the list of flaky tests. (Ken Takata,
            closes vim/vim#6798)

7d6979608e

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2025-08-05 13:33:52 -04:00
Jan Edmund Lazo
474c477134 vim-patch:8.2.1123: Python 3 test is old style
Problem:    Python 3 test is old style.
Solution:   Turn into new style test. (Yegappan Lakshmanan, closes vim/vim#6385)

effb0cd75d

Neovim has Lua context that conflict with asserted error message.
Disable incompatible tests due to unsupported features from
python3 provider (ie. LegacyVim bindings, vim.bindeval).

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2025-08-05 13:33:44 -04:00
Jan Edmund Lazo
d632ffa243 vim-patch:8.2.0307: Python 3 vim.eval not well tested
Problem:    Python 3 vim.eval not well tested.
Solution:   Add a test. (Dominique Pelle, closes vim/vim#5680)

026270c01d

Amend float values to pass on Ubuntu.
Comment out failing cases (ie. v:none, blob).

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2025-08-05 13:33:10 -04:00
Jan Edmund Lazo
2a267d1cbf vim-patch:partial:8.2.1328: no space allowed before comma in list
Problem:    No space allowed before comma in list.
Solution:   Legacy Vim script allows it. (closes vim/vim#6577)

4d4d1cd5c8

Partial port to guard against v8.2.1326 regression.

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2025-08-05 13:33:03 -04:00
Jan Edmund Lazo
758e6db06c vim-patch:8.2.0512: Vim9: no optional arguments in func type
Problem:    Vim9: no optional arguments in func type.
Solution:   Check for question mark after type.  Find function reference
            without function().

5deeb3f1f9

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2025-08-05 13:32:03 -04:00
Maria José Solano
a9a4c271b1 revert(lsp): compare to vim.NIL in lsp/buf.lua (#35156)
revert(lsp): "compare to `vim.NIL` in `lsp/buf.lua` #35154"

This reverts commit a5c598871b.
2025-08-03 18:20:17 -07:00
Maria José Solano
a5c598871b fix(lsp): compare to vim.NIL in lsp/buf.lua #35154 2025-08-03 15:39:49 -07:00
Maria José Solano
54bfd0de4f docs(lsp): mention default enablement of document colors (#35153) 2025-08-03 15:03:14 -07:00
Maria José Solano
c789d79966 fix(lsp): check if buffer is valid when resolving code lenses (#35092) 2025-08-03 14:11:18 -07:00
TheBlob42
ecded994c1 fix(snippet): early return for final tabstop #35115
The cursor movement autocommand can not detect when the final tabstop $0
is directly adjacent to another tabstop, which prevents ending the
snippet session. The fix is an early return when jumping.
2025-08-03 19:52:09 +00:00
Yi Ming
7ed8cbd095 feat(lua): vim.list.bisect() #35108 2025-08-03 07:45:49 -07:00
skewb1k
40aef0d02e fix(lsp): decode 'null' in server responses as vim.NIL #34849
Problem:
Previously, 'null' value in LSP responses were decoded as 'nil'.
This caused ambiguity for fields typed as '? | null' and led to
loss of explicit 'null' values, particularly in 'data' parameters.

Solution:
Decode all JSON 'null' values as 'vim.NIL' and adjust handling
where needed. This better aligns with the LSP specification,
where 'null' and absent fields are distinct, and 'null' should
not be used to represent missing values.

This also enables proper validation of response messages to
ensure that exactly one of 'result' or 'error' is present, as
required by the JSON-RPC specification.
2025-08-03 07:42:44 -07:00
bfredl
2ef48fc65c Merge pull request #35130 from bfredl/cringe
fix(options): make 'cdhome' take effect on any platform
2025-08-03 10:19:11 +02:00
bfredl
9910445125 fix(options): make 'cdhome' take effect on any platform
Platform specific options are cringe and should either be fixed or
deleted.

In this case, the platform difference can trivially be implemented
using a conditional default value. If the user overrides the value,
then it is because the user wants that value, regardless of the
corporation who manufactured the OS that the user is running.

Possible alternative: delete the option by making it always on.
2025-08-03 09:42:35 +02:00
Sathya Pramodh
78f4994627 feat: ":restart [cmd]" can run commands #35045
Problem:
Not easy for a user to tell ":restart" to "run this command(s) after restarting".

Solution:
All ":restart" args following the optional +cmd arg are treated as a big cmdline that is passed as a "-c" CLI arg when restarting nvim.
2025-08-02 22:50:45 -07:00
Justin M. Keyes
39e402caa5 docs: reorder sections #35140
Problem:
Generated docs sections are ordered randomly. This matters when showing
an outline or table of contents (e.g. `gO`).

Solution:
Specify which sections have an intentional ordering; sort the rest by
name.
2025-08-03 05:03:09 +00:00
zeertzjq
e23794b090 vim-patch:3add0d5: runtime(ccomplete): use complete_check() in ccomplete plugin (#35142)
Add complete_check() to ccomplete completion script to avoid UI hangs
and keep Vim responsive as ccomplete can be slow on huge files.

closes: vim/vim#17826

3add0d5e75

vim-patch:44309b9: runtime(ccomplete): return partial results on complete_check()

closes: vim/vim#17838

44309b9d08

Co-authored-by: Maxim Kim <habamax@gmail.com>
2025-08-03 11:49:13 +08:00
zeertzjq
f7af0cff35 vim-patch:9.1.1590: cannot perform autocompletion (#35141)
Problem:  cannot perform autocompletion
Solution: Add the 'autocomplete' option value
          (Girish Palya)

This change introduces the 'autocomplete' ('ac') boolean option to
enable automatic popup menu completion during insert mode. When enabled,
Vim shows a completion menu as you type, similar to pressing |i\_CTRL-N|
manually. The items are collected from sources defined in the
'complete' option.

To ensure responsiveness, this feature uses a time-sliced strategy:

- Sources earlier in the 'complete' list are given more time.
- If a source exceeds its allocated timeout, it is interrupted.
- The next source is then started with a reduced timeout (exponentially
  decayed).
- A small minimum ensures every source still gets a brief chance to
  contribute.

The feature is fully compatible with other |i_CTRL-X| completion modes,
which can temporarily suspend automatic completion when triggered.

See :help 'autocomplete' and :help ins-autocompletion for more details.

To try it out, use :set ac

You should see a popup menu appear automatically with suggestions. This
works seamlessly across:

- Large files (multi-gigabyte size)
- Massive codebases (:argadd thousands of .c or .h files)
- Large dictionaries via the `k` option
- Slow or blocking LSP servers or user-defined 'completefunc'

Despite potential slowness in sources, the menu remains fast,
responsive, and useful.

Compatibility: This mode is fully compatible with existing completion
methods. You can still invoke any CTRL-X based completion (e.g.,
CTRL-X CTRL-F for filenames) at any time (CTRL-X temporarily
suspends 'autocomplete'). To specifically use i_CTRL-N, dismiss the
current popup by pressing CTRL-E first.

---

How it works

To keep completion snappy under all conditions, autocompletion uses a
decaying time-sliced algorithm:

- Starts with an initial timeout (80ms).
- If a source does not complete within the timeout, it's interrupted and
  the timeout is halved for the next source.
- This continues recursively until a minimum timeout (5ms) is reached.
- All sources are given a chance, but slower ones are de-prioritized
  quickly.

Most of the time, matches are computed well within the initial window.

---

Implementation details

- Completion logic is mostly triggered in `edit.c` and handled in
  insexpand.c.

- Uses existing inc_compl_check_keys() mechanism, so no new polling
  hooks are needed.

- The completion system already checks for user input periodically; it
  now also checks for timer expiry.

---

Design notes

- The menu doesn't continuously update after it's shown to prevent
  visual distraction (due to resizing) and ensure the internal list
  stays synchronized with the displayed menu.

- The 'complete' option determines priority—sources listed earlier get
  more time.

- The exponential time-decay mechanism prevents indefinite collection,
  contributing to low CPU usage and a minimal memory footprint.

- Timeout values are intentionally not configurable—this system is
  optimized to "just work" out of the box. If autocompletion feels slow,
  it typically indicates a deeper performance bottleneck (e.g., a slow
  custom function not using `complete_check()`) rather than a
  configuration issue.

---

Performance

Based on testing, the total roundtrip time for completion is generally
under 200ms. For common usage, it often responds in under 50ms on an
average laptop, which falls within the "feels instantaneous" category
(sub-100ms) for perceived user experience.

| Upper Bound (ms) | Perceived UX
|----------------- |-------------
| <100 ms          | Excellent; instantaneous
| <200 ms          | Good; snappy
| >300 ms          | Noticeable lag
| >500 ms          | Sluggish/Broken

---

Why this belongs in core:

- Minimal and focused implementation, tightly integrated with existing
  Insert-mode completion logic.
- Zero reliance on autocommands and external scripting.
- Makes full use of Vim’s highly composable 'complete' infrastructure
  while avoiding the complexity of plugin-based solutions.
- Gives users C native autocompletion with excellent responsiveness and
  no configuration overhead.
- Adds a key UX functionality in a simple, performant, and Vim-like way.

closes: vim/vim#17812

af9a7a04f1

Co-authored-by: Girish Palya <girishji@gmail.com>
2025-08-03 11:48:42 +08:00
Maria José Solano
26cc42e426 fix(lsp): handle nil response in references request #35139 2025-08-02 19:58:58 -07:00
glepnir
22df649210 fix(api): nvim_create_user_command addr option should allow ranges #35077
Problem: Using `addr` without `range` in nvim_create_user_command gives
"No range allowed" error, inconsistent with `:command -addr` behavior.

Solution: Set EX_RANGE flag when `addr` option is specified to match
`:command` behavior.
2025-08-02 19:52:54 -07:00
Justin M. Keyes
93f5bd0caf Merge #35052 test(pack): vim.pack 2025-08-02 19:35:42 -04:00
Phạm Bình An
3f416ef524 build: bump lua-bitop to 1.0.3 #35063
Source: https://bitop.luajit.org/download.html
2025-08-02 15:58:11 -07:00
Evgeni Chasnovski
6e27200901 test(pack): add vim.pack tests 2025-08-02 15:00:42 +03:00
Evgeni Chasnovski
52a596b0aa ci: enable integration tests on Release builds 2025-08-02 15:00:42 +03:00
Evgeni Chasnovski
2e62f3576f fix(pack): open confirmation buffer in tabpage after the current one 2025-08-02 15:00:42 +03:00