<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/runtime/lua/vim/lsp/_meta/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>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>
<entry>
<title>feat(lsp): support range + full semantic token requests #37611</title>
<updated>2026-02-03T18:16:12+00:00</updated>
<author>
<name>jdrouhard</name>
<email>john@drouhard.dev</email>
</author>
<published>2026-02-03T18:16:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=9278f792c374e32de4906dc23adfc9144812c285'/>
<id>9278f792c374e32de4906dc23adfc9144812c285</id>
<content type='text'>
From the LSP Spec:
&gt; There are two uses cases where it can be beneficial to only compute
&gt; semantic tokens for a visible range:
&gt;
&gt; - for faster rendering of the tokens in the user interface when a user
&gt;   opens a file. In this use case, servers should also implement the
&gt;   textDocument/semanticTokens/full request as well to allow for flicker
&gt;   free scrolling and semantic coloring of a minimap.
&gt; - if computing semantic tokens for a full document is too expensive,
&gt;   servers can only provide a range call. In this case, the client might
&gt;   not render a minimap correctly or might even decide to not show any
&gt;   semantic tokens at all.

This commit unifies the usage of range and full/delta requests as
recommended by the LSP spec and aligns neovim with the way other LSP
clients use these request types for semantic tokens.

When a server supports range requests, neovim will simultaneously send a
range request and a full/delta request when first opening a file, and
will continue to issue range requests until a full response is
processed. At that point, range requests cease and full (or delta)
requests are used going forward. The range request should allow servers
to return a result faster for quicker highlighting of the file while it
works on the potentially more expensive full result. If a server decides
the full result is too expensive, it can just error out that request,
and neovim will continue to use range requests.

This commit also fixes and cleans up some other things:

- gen_lsp: registrationMethod or registrationOptions imply dynamic
  registration support
- move autocmd creation/deletion to on_attach/on_detach
- debounce requests due to server refresh notifications
- fix off by one issue in tokens_to_ranges() iteration</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
From the LSP Spec:
&gt; There are two uses cases where it can be beneficial to only compute
&gt; semantic tokens for a visible range:
&gt;
&gt; - for faster rendering of the tokens in the user interface when a user
&gt;   opens a file. In this use case, servers should also implement the
&gt;   textDocument/semanticTokens/full request as well to allow for flicker
&gt;   free scrolling and semantic coloring of a minimap.
&gt; - if computing semantic tokens for a full document is too expensive,
&gt;   servers can only provide a range call. In this case, the client might
&gt;   not render a minimap correctly or might even decide to not show any
&gt;   semantic tokens at all.

This commit unifies the usage of range and full/delta requests as
recommended by the LSP spec and aligns neovim with the way other LSP
clients use these request types for semantic tokens.

When a server supports range requests, neovim will simultaneously send a
range request and a full/delta request when first opening a file, and
will continue to issue range requests until a full response is
processed. At that point, range requests cease and full (or delta)
requests are used going forward. The range request should allow servers
to return a result faster for quicker highlighting of the file while it
works on the potentially more expensive full result. If a server decides
the full result is too expensive, it can just error out that request,
and neovim will continue to use range requests.

This commit also fixes and cleans up some other things:

- gen_lsp: registrationMethod or registrationOptions imply dynamic
  registration support
- move autocmd creation/deletion to on_attach/on_detach
- debounce requests due to server refresh notifications
- fix off by one issue in tokens_to_ranges() iteration</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lsp): use LSP method type in more places (#36069)</title>
<updated>2025-10-07T15:17:40+00:00</updated>
<author>
<name>Maria Solano</name>
<email>majosolano99@gmail.com</email>
</author>
<published>2025-10-07T15:17:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=006101360d6fbcadfe7c8d030f1d66cfcaf34951'/>
<id>006101360d6fbcadfe7c8d030f1d66cfcaf34951</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lsp): decode 'null' in server responses as vim.NIL  #34849</title>
<updated>2025-08-03T14:42:44+00:00</updated>
<author>
<name>skewb1k</name>
<email>skewb1kunix@gmail.com</email>
</author>
<published>2025-08-03T14:42:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=40aef0d02e1a3f528e79ece3fe42b24f8d556251'/>
<id>40aef0d02e1a3f528e79ece3fe42b24f8d556251</id>
<content type='text'>
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.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(lsp): gen_lsp</title>
<updated>2025-04-17T14:44:46+00:00</updated>
<author>
<name>Lewis Russell</name>
<email>lewis6991@gmail.com</email>
</author>
<published>2025-04-17T10:41:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=2fcdeb0128933ac28baeb645eb691c559560920e'/>
<id>2fcdeb0128933ac28baeb645eb691c559560920e</id>
<content type='text'>
- Simplify usage:
  - Instead of `nvim -l src/gen/gen_lsp.lua gen` now just
    run `./src/gen/gen_lsp.lua`

- Removed `--methods` and `--capabilities` options.

- Improved rendering code in various areas.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Simplify usage:
  - Instead of `nvim -l src/gen/gen_lsp.lua gen` now just
    run `./src/gen/gen_lsp.lua`

- Removed `--methods` and `--capabilities` options.

- Improved rendering code in various areas.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(lsp): use stricter types for methods</title>
<updated>2025-04-17T10:40:45+00:00</updated>
<author>
<name>Lewis Russell</name>
<email>lewis6991@gmail.com</email>
</author>
<published>2025-04-17T09:21:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=d7e0d46ffa8f9f1eaf27f8b7ee32ef9a21cb9b84'/>
<id>d7e0d46ffa8f9f1eaf27f8b7ee32ef9a21cb9b84</id>
<content type='text'>
This change modifies gen_lsp.lua so alias types are generated for
various types of lsp methods to distinguish between notifications
and requests:
 - vim.lsp.protocol.Method.ServerToClient.Request
 - vim.lsp.protocol.Method.ServerToClient.Notification
 - vim.lsp.protocol.Method.ClientToServer.Request
 - vim.lsp.protocol.Method.ClientToServer.Notification

 These types are then used instead of `string` where appropriate.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change modifies gen_lsp.lua so alias types are generated for
various types of lsp methods to distinguish between notifications
and requests:
 - vim.lsp.protocol.Method.ServerToClient.Request
 - vim.lsp.protocol.Method.ServerToClient.Notification
 - vim.lsp.protocol.Method.ClientToServer.Request
 - vim.lsp.protocol.Method.ClientToServer.Notification

 These types are then used instead of `string` where appropriate.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(lsp): update LSP types</title>
<updated>2025-02-18T01:52:55+00:00</updated>
<author>
<name>Maria José Solano</name>
<email>majosolano99@gmail.com</email>
</author>
<published>2025-02-18T01:52:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=ae2fd91b411df58b68eb06534e825e7cb8e1fdd7'/>
<id>ae2fd91b411df58b68eb06534e825e7cb8e1fdd7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>docs(lsp): annotate with `vim.lsp.protocol.Methods` enum #29521</title>
<updated>2024-08-20T12:52:14+00:00</updated>
<author>
<name>Ricardo Casía</name>
<email>ricardocasia.dev@gmail.com</email>
</author>
<published>2024-08-20T12:52:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=766d5036275e871932893f8dfc8c5bc1eb7a3726'/>
<id>766d5036275e871932893f8dfc8c5bc1eb7a3726</id>
<content type='text'>
Added the enum type annotation `vim.lsp.protocol.Methods` to provide some intellisense support.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Added the enum type annotation `vim.lsp.protocol.Methods` to provide some intellisense support.</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(lsp): use tuple syntax in generated protocol types (#29110)</title>
<updated>2024-05-31T14:48:05+00:00</updated>
<author>
<name>Ilia Choly</name>
<email>ilia.choly@gmail.com</email>
</author>
<published>2024-05-31T14:48:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=d62d181ce065556be51d5eda0425aa42f427cc27'/>
<id>d62d181ce065556be51d5eda0425aa42f427cc27</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): update LSP protocol 3.18 typings to date (#28730)</title>
<updated>2024-05-14T13:33:03+00:00</updated>
<author>
<name>Jongwook Choi</name>
<email>wookayin@gmail.com</email>
</author>
<published>2024-05-14T13:33:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=abd2352bd8b896417af75ac85caad9a7f849841b'/>
<id>abd2352bd8b896417af75ac85caad9a7f849841b</id>
<content type='text'>
Make the LSP protocol typings up-to-date with LSP protocol (upcoming)
version 3.18, before and in preparation for the Nvim 0.10.0 release.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make the LSP protocol typings up-to-date with LSP protocol (upcoming)
version 3.18, before and in preparation for the Nvim 0.10.0 release.</pre>
</div>
</content>
</entry>
</feed>
