<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/runtime/lua/vim/lsp/completion.lua, branch extregs</title>
<subtitle>Neovim fork with Rahm's personal hacks.</subtitle>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/'/>
<entry>
<title>fix(lsp): ignore completion items without LSP metadata #42401</title>
<updated>2026-10-16T15:14:52+00:00</updated>
<author>
<name>Volodymyr Chernetskyi</name>
<email>volodymyr_chernetskyi@goodyear.com</email>
</author>
<published>2026-10-16T15:14:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=69fcfed4a47160cbf28e828d2c15aa6abb2834ca'/>
<id>69fcfed4a47160cbf28e828d2c15aa6abb2834ca</id>
<content type='text'>
Problem:
Accepting an item from another completion source raises an error when its
user_data.nvim table does not contain LSP metadata.

Solution:
Retrieve and guard the nested LSP metadata before accessing its fields.

Cover acceptance of a foreign completion item without LSP metadata.

AI-assisted</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
Accepting an item from another completion source raises an error when its
user_data.nvim table does not contain LSP metadata.

Solution:
Retrieve and guard the nested LSP metadata before accessing its fields.

Cover acceptance of a foreign completion item without LSP metadata.

AI-assisted</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lsp): keep label fallback for empty snippet insertText #42402</title>
<updated>2026-10-16T15:13:36+00:00</updated>
<author>
<name>Volodymyr Chernetskyi</name>
<email>volodymyr_chernetskyi@goodyear.com</email>
</author>
<published>2026-10-16T15:13:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=8d5395ed790b90849d7cac836f63ca7d2fb292b3'/>
<id>8d5395ed790b90849d7cac836f63ca7d2fb292b3</id>
<content type='text'>
Problem:
An empty snippet insertText falls back to the label during selection, but
acceptance clears that label and expands an empty string.

Solution:
Require nonempty insertText before expanding a snippet without textEdit.

Extend the omnifunc acceptance fixture with an empty snippet insertion.

AI-assisted</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
An empty snippet insertText falls back to the label during selection, but
acceptance clears that label and expands an empty string.

Solution:
Require nonempty insertText before expanding a snippet without textEdit.

Extend the omnifunc acceptance fixture with an empty snippet insertion.

AI-assisted</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lsp): preserve explicit completion edit ranges #42399</title>
<updated>2026-10-16T14:54:56+00:00</updated>
<author>
<name>Volodymyr Chernetskyi</name>
<email>volodymyr_chernetskyi@goodyear.com</email>
</author>
<published>2026-10-16T14:54:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=36f9bccedc278b8c2bf6e2b3a92f10373f511927'/>
<id>36f9bccedc278b8c2bf6e2b3a92f10373f511927</id>
<content type='text'>
Problem:
A completion list default edit range can replace the explicit range of an
InsertReplaceEdit, filtering out valid items or changing their replacement.

Solution:
Only synthesize a default text edit when the completion item has none.

Extend the existing itemDefaults test for explicit edits with both range variants.

AI-assisted</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
A completion list default edit range can replace the explicit range of an
InsertReplaceEdit, filtering out valid items or changing their replacement.

Solution:
Only synthesize a default text edit when the completion item has none.

Extend the existing itemDefaults test for explicit edits with both range variants.

AI-assisted</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lsp): prefer textEdit for snippet completion text #42400</title>
<updated>2026-10-16T14:35:03+00:00</updated>
<author>
<name>Volodymyr Chernetskyi</name>
<email>volodymyr_chernetskyi@goodyear.com</email>
</author>
<published>2026-10-16T14:35:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=28a17adbb9943c920c4e6600bb47f48328e58617'/>
<id>28a17adbb9943c920c4e6600bb47f48328e58617</id>
<content type='text'>
Problem:
Snippet completion words and previews prefer insertText even when textEdit
is present, although the actual expansion uses textEdit.newText.

Solution:
Use the text edit before the fallback insertion text in both selectors.

Extend the existing precedence test to check the snippet word and preview.

AI-assisted</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
Snippet completion words and previews prefer insertText even when textEdit
is present, although the actual expansion uses textEdit.newText.

Solution:
Use the text edit before the fallback insertion text in both selectors.

Extend the existing precedence test to check the snippet word and preview.

AI-assisted</pre>
</div>
</content>
</entry>
<entry>
<title>feat(lsp): support client_id in vim.lsp.completion.get() #42189</title>
<updated>2026-10-03T19:29:48+00:00</updated>
<author>
<name>glepnir</name>
<email>glephunter@gmail.com</email>
</author>
<published>2026-10-03T19:29:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=e244a2adcabac6d59b352a8f069b4d7200368bb3'/>
<id>e244a2adcabac6d59b352a8f069b4d7200368bb3</id>
<content type='text'>
Problem:
vim.lsp.completion.get() always asks every client that has completion
enabled in the buffer, so a mapping cannot ask just some of them.

Solution:
Add a "client_id" option that limits the request to the given client,
or clients if it is a list.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
vim.lsp.completion.get() always asks every client that has completion
enabled in the buffer, so a mapping cannot ask just some of them.

Solution:
Add a "client_id" option that limits the request to the given client,
or clients if it is a list.</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #42134 from lewis6991/emmylua</title>
<updated>2026-09-30T08:29:34+00:00</updated>
<author>
<name>Lewis Russell</name>
<email>lewis6991@gmail.com</email>
</author>
<published>2026-09-30T08:29:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=eb601cda5f2b20536b56f3d55ffa0d0ab90b8c26'/>
<id>eb601cda5f2b20536b56f3d55ffa0d0ab90b8c26</id>
<content type='text'>
fix(lua): enable param-type-mismatch diagnostic</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
fix(lua): enable param-type-mismatch diagnostic</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lsp): preserve completion state on buffer reload #42135</title>
<updated>2026-09-29T23:18:34+00:00</updated>
<author>
<name>Barrett Ruth</name>
<email>62671086+barrettruth@users.noreply.github.com</email>
</author>
<published>2026-09-29T23:18:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=4e18828f119d7539bfdf9686b8b2758b2e615523'/>
<id>4e18828f119d7539bfdf9686b8b2758b2e615523</id>
<content type='text'>
Problem:
After an LSP client restart, the completion reload callback can use an old
client ID:

    autoread: :checktime failed for buffer 17: Vim:Lua callback:
    ...ed-95df8c0/share/nvim/runtime/lua/vim/lsp/completion.lua:1315: invalid client ID

Solution:
Use the completion augroup for `BufUnload` cleanup.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
After an LSP client restart, the completion reload callback can use an old
client ID:

    autoread: :checktime failed for buffer 17: Vim:Lua callback:
    ...ed-95df8c0/share/nvim/runtime/lua/vim/lsp/completion.lua:1315: invalid client ID

Solution:
Use the completion augroup for `BufUnload` cleanup.</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lua): enable param-type-mismatch diagnostic</title>
<updated>2026-09-28T13:43:14+00:00</updated>
<author>
<name>Lewis Russell</name>
<email>lewis6991@gmail.com</email>
</author>
<published>2026-09-28T13:19:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=c6535538f8717a8f6134020a5bee65341cf8280f'/>
<id>c6535538f8717a8f6134020a5bee65341cf8280f</id>
<content type='text'>
Problem: Argument type mismatches are excluded from EmmyLua checks.

Solution: Correct runtime annotations and calls, document local checker
workarounds, and enable the diagnostic.

AI-assisted
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: Argument type mismatches are excluded from EmmyLua checks.

Solution: Correct runtime annotations and calls, document local checker
workarounds, and enable the diagnostic.

AI-assisted
</pre>
</div>
</content>
</entry>
<entry>
<title>perf(lsp): read options once per completion response #42106</title>
<updated>2026-09-27T11:19:04+00:00</updated>
<author>
<name>glepnir</name>
<email>glephunter@gmail.com</email>
</author>
<published>2026-09-27T11:19:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=71f3a2ad6364c29a3a46fc99897a351c06969d60'/>
<id>71f3a2ad6364c29a3a46fc99897a351c06969d60</id>
<content type='text'>
Problem:
Converting completion items reads 'completeopt' through vim.opt,
'ignorecase' and 'smartcase' for every item.

Solution:
Read them once per response.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
Converting completion items reads 'completeopt' through vim.opt,
'ignorecase' and 'smartcase' for every item.

Solution:
Read them once per response.</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lua): enable assignment type checking in runtime code</title>
<updated>2026-09-25T16:07:21+00:00</updated>
<author>
<name>Lewis Russell</name>
<email>lewis6991@gmail.com</email>
</author>
<published>2026-09-25T16:07:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=ffa782066c2e02a068171963aded4bb300c25663'/>
<id>ffa782066c2e02a068171963aded4bb300c25663</id>
<content type='text'>
Enable EmmyLua's assign-type-mismatch diagnostic after correcting the
runtime annotations and assignments it flags.

Correct option, tuple, and return types, and use separate locals when a
value changes representation. Add guards and narrow casts where needed
so the runtime passes the stricter check. Regenerate the affected docs.

AI-assisted
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Enable EmmyLua's assign-type-mismatch diagnostic after correcting the
runtime annotations and assignments it flags.

Correct option, tuple, and return types, and use separate locals when a
value changes representation. Add guards and narrow casts where needed
so the runtime passes the stricter check. Regenerate the affected docs.

AI-assisted
</pre>
</div>
</content>
</entry>
</feed>
