<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/runtime/lua/vim/lsp/protocol.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): preserve tag types to stabilize emmylua checks #42117</title>
<updated>2026-09-27T11:36:29+00:00</updated>
<author>
<name>Volodymyr Chernetskyi</name>
<email>volodymyr_chernetskyi@goodyear.com</email>
</author>
<published>2026-09-27T11:36:29+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=1e2110456eb72d28240346c6c71f44da6e9894f2'/>
<id>1e2110456eb72d28240346c6c71f44da6e9894f2</id>
<content type='text'>
Problem:
EmmyLua widens singleton completion and symbol tags to integer during
generic inference. Nested field checking can skip the resulting type
mismatch depending on member iteration order, making lint flaky.

Solution:
Annotate both tag tables with their protocol types so get_value_set()
preserves the singleton tag types without changing runtime behavior or
disabling diagnostics.

Validated with 1,000 consecutive full-runtime checks using EmmyLua 0.25.1
on macOS arm64.

AI-assisted</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
EmmyLua widens singleton completion and symbol tags to integer during
generic inference. Nested field checking can skip the resulting type
mismatch depending on member iteration order, making lint flaky.

Solution:
Annotate both tag tables with their protocol types so get_value_set()
preserves the singleton tag types without changing runtime behavior or
disabling diagnostics.

Validated with 1,000 consecutive full-runtime checks using EmmyLua 0.25.1
on macOS arm64.

AI-assisted</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lua): add missing param annotations (#41911)</title>
<updated>2026-09-15T13:14:21+00:00</updated>
<author>
<name>Lewis Russell</name>
<email>lewis6991@gmail.com</email>
</author>
<published>2026-09-15T13:14:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=c171a697cbee36c4f36535e14f1407909733ca4b'/>
<id>c171a697cbee36c4f36535e14f1407909733ca4b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(lsp): support `workspace/foldingRange/refresh` #41780</title>
<updated>2026-09-09T12:45:10+00:00</updated>
<author>
<name>Volodymyr Chernetskyi</name>
<email>volodymyr_chernetskyi@goodyear.com</email>
</author>
<published>2026-09-09T12:45:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=8e0045f43ade397bbcf62c0d33aaf45e72e63610'/>
<id>8e0045f43ade397bbcf62c0d33aaf45e72e63610</id>
<content type='text'>
Problem:
Servers cannot request refreshing stale LSP folding ranges after a
project-wide change.

Solution:
Advertise `workspace.foldingRange.refreshSupport` and re-request folding
ranges for active buffers when handling `workspace/foldingRange/refresh`.

AI-assisted</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
Servers cannot request refreshing stale LSP folding ranges after a
project-wide change.

Solution:
Advertise `workspace.foldingRange.refreshSupport` and re-request folding
ranges for active buffers when handling `workspace/foldingRange/refresh`.

AI-assisted</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lsp): completion dynamicRegistration breaks capability readers #41771</title>
<updated>2026-09-08T09:48:38+00:00</updated>
<author>
<name>glepnir</name>
<email>glephunter@gmail.com</email>
</author>
<published>2026-09-08T09:48:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=b3bd442c5c3cb5f4392c7a15bff12cd412c23872'/>
<id>b3bd442c5c3cb5f4392c7a15bff12cd412c23872</id>
<content type='text'>
Problem:
A server that supports dynamic registration must not also declare
completionProvider at initialize, so server_capabilities.completionProvider
is nil for anything reading it directly.

Solution:
Do not advertise it by default. A client that follows a registration can
declare it itself.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
A server that supports dynamic registration must not also declare
completionProvider at initialize, so server_capabilities.completionProvider
is nil for anything reading it directly.

Solution:
Do not advertise it by default. A client that follows a registration can
declare it itself.</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lsp): announce typeHierarchy and executeCommand capabilities #41762</title>
<updated>2026-09-07T19:11:00+00:00</updated>
<author>
<name>Volodymyr Chernetskyi</name>
<email>volodymyr_chernetskyi@goodyear.com</email>
</author>
<published>2026-09-07T19:11:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=8d5ebdf986226e182b26f9590e65f2ad678b1ca3'/>
<id>8d5ebdf986226e182b26f9590e65f2ad678b1ca3</id>
<content type='text'>
Problem:
Type hierarchy (#28388, #28467) and `workspace/executeCommand` (#11607) are
implemented, but `textDocument.typeHierarchy` and `workspace.executeCommand`
are missing from `make_client_capabilities()`.

Solution:
Declare both capabilities.

AI-assisted</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
Type hierarchy (#28388, #28467) and `workspace/executeCommand` (#11607) are
implemented, but `textDocument.typeHierarchy` and `workspace.executeCommand`
are missing from `make_client_capabilities()`.

Solution:
Declare both capabilities.

AI-assisted</pre>
</div>
</content>
</entry>
<entry>
<title>feat(lsp): support dynamic registration of completionProvider #41748</title>
<updated>2026-09-07T13:53:35+00:00</updated>
<author>
<name>glepnir</name>
<email>glephunter@gmail.com</email>
</author>
<published>2026-09-07T13:53:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=937f835a3e4338f7dbdb9117b74e477e1e5748f5'/>
<id>937f835a3e4338f7dbdb9117b74e477e1e5748f5</id>
<content type='text'>
Problem:
dynamicRegistration is declared false, and completionProvider is read
from server_capabilities only.

Solution:
Declare it, and prefer registerOptions per field.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
dynamicRegistration is declared false, and completionProvider is read
from server_capabilities only.

Solution:
Declare it, and prefer registerOptions per field.</pre>
</div>
</content>
</entry>
<entry>
<title>feat(completion): support completionList.applyKind #40769</title>
<updated>2026-07-18T01:07:01+00:00</updated>
<author>
<name>glepnir</name>
<email>glephunter@gmail.com</email>
</author>
<published>2026-07-18T01:07:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=9fae7234f661b0c701d4a18c13b429b517be5d25'/>
<id>9fae7234f661b0c701d4a18c13b429b517be5d25</id>
<content type='text'>
Problem: values from completionList.itemDefaults always replace the
item's own commitCharacters and data. Since 3.18 a server can ask for
them to be merged instead.

Solution: Handle CompletionList.applyKind and advertise applyKindSupport.
Drop itemDefaults once folded into the items: get_items() runs twice on
the same result and a Merge isn't idempotent.

https://microsoft.github.io/language-server-protocol/specifications/lsp/3.18/specification/#completionItemApplyKinds</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: values from completionList.itemDefaults always replace the
item's own commitCharacters and data. Since 3.18 a server can ask for
them to be merged instead.

Solution: Handle CompletionList.applyKind and advertise applyKindSupport.
Drop itemDefaults once folded into the items: get_items() runs twice on
the same result and a Merge isn't idempotent.

https://microsoft.github.io/language-server-protocol/specifications/lsp/3.18/specification/#completionItemApplyKinds</pre>
</div>
</content>
</entry>
<entry>
<title>feat(completion): commitCharacters #38417</title>
<updated>2026-07-15T23:08:37+00:00</updated>
<author>
<name>glepnir</name>
<email>glephunter@gmail.com</email>
</author>
<published>2026-07-15T23:08:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=5ce9e74f133b86f06ba42d07337660cc7c5785d5'/>
<id>5ce9e74f133b86f06ba42d07337660cc7c5785d5</id>
<content type='text'>
Problem: LSP completion commitCharacters are not handled. Typing a
commit character (e.g. `.`, `(`, `;`) while a completion item is
selected does not accept the item first.

Solution: Store commit characters as a flat string in complete-items.
Check it before completion stops, accept the match and let
the character be inserted normally.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: LSP completion commitCharacters are not handled. Typing a
commit character (e.g. `.`, `(`, `;`) while a completion item is
selected does not accept the item first.

Solution: Store commit characters as a flat string in complete-items.
Check it before completion stops, accept the match and let
the character be inserted normally.</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lsp): improve inlayHint.resolveSupport in client capabilities #40741</title>
<updated>2026-07-15T10:49:45+00:00</updated>
<author>
<name>Robert Muir</name>
<email>rmuir@apache.org</email>
</author>
<published>2026-07-15T10:49:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=4bc30d6e1024788c6acf54cf3e4a98618123482e'/>
<id>4bc30d6e1024788c6acf54cf3e4a98618123482e</id>
<content type='text'>
Problem
The current list of properties for inlay hint resolve support includes a
non-existent "location". This field should be "label.location" according
to the specification. Tooltips and commands for inlay hint "parts"
aren't advertised as being resolvable.

Solution
Remove "location" and add "label.location", "label.tooltip", and
"label.command".

Closes #40740</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem
The current list of properties for inlay hint resolve support includes a
non-existent "location". This field should be "label.location" according
to the specification. Tooltips and commands for inlay hint "parts"
aren't advertised as being resolvable.

Solution
Remove "location" and add "label.location", "label.tooltip", and
"label.command".

Closes #40740</pre>
</div>
</content>
</entry>
<entry>
<title>docs(lsp): bump protocol/meta to 3.18 #37273</title>
<updated>2026-06-10T21:02:12+00:00</updated>
<author>
<name>Tristan Knight</name>
<email>admin@snappeh.com</email>
</author>
<published>2026-06-10T21:02:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=2899e350ff06833af0d53baba31800a32dcea696'/>
<id>2899e350ff06833af0d53baba31800a32dcea696</id>
<content type='text'>
fixes glob spec regression related to "zero or more" vs "one or more" for `*`
ref: https://github.com/microsoft/language-server-protocol/issues/2217</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
fixes glob spec regression related to "zero or more" vs "one or more" for `*`
ref: https://github.com/microsoft/language-server-protocol/issues/2217</pre>
</div>
</content>
</entry>
</feed>
