neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 2debe2f30a4587e307f6e152aafd91b82af46f75
parent 8e922c657c2d28a2320920d165bf0a6a8cd937d9
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Mon, 15 Sep 2025 14:41:29 +0800

fix(lsp): avoid automatic request after leaving insert mode (#35767)

This also fixes the following warning in tests with ASAN or TSAN:

    -------- Running tests from test/functional/plugin/lsp/inline_completion_spec.lua
    RUN      T4604 vim.lsp.inline_completion enable() requests or abort when entered/left insert mode: 225.00 ms OK
    RUN      T4605 vim.lsp.inline_completion get() applies the current candidate: 212.00 ms OK
    nvim took 2013 milliseconds to exit after last test
    This indicates a likely problem with the test even if it passed!

    RUN      T4606 vim.lsp.inline_completion get() accepts on_accept callback: 212.00 ms OK
    RUN      T4607 vim.lsp.inline_completion select() selects the next candidate: 220.00 ms OK
    -------- 4 tests from test/functional/plugin/lsp/inline_completion_spec.lua (3437.00 ms total)

    -------- Running tests from test/functional/plugin/lsp/linked_editing_range_spec.lua
    nvim took 2011 milliseconds to exit after last test
    This indicates a likely problem with the test even if it passed!
Diffstat:
Mruntime/lua/vim/lsp/inline_completion.lua | 1+
Mtest/functional/plugin/lsp/inline_completion_spec.lua | 12++++++++++++
2 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/runtime/lua/vim/lsp/inline_completion.lua b/runtime/lua/vim/lsp/inline_completion.lua @@ -309,6 +309,7 @@ function Completor:abort() method = ms.textDocument_inlineCompletion, type = 'pending', }) + self:reset_timer() self:hide() self.current = nil end diff --git a/test/functional/plugin/lsp/inline_completion_spec.lua b/test/functional/plugin/lsp/inline_completion_spec.lua @@ -172,6 +172,18 @@ describe('vim.lsp.inline_completion', function() feed('<Esc>') screen:expect({ grid = grid_without_candidates }) end) + + it('no request when leaving insert mode immediately after typing', function() + screen:expect({ grid = grid_without_candidates }) + feed('ifoobar<Esc>') + screen:expect([[ + function fibonacci() | + fooba^r | + {1:~ }|*11 + | + ]]) + screen:expect_unchanged(false, 500) + end) end) describe('get()', function()