<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/runtime/lua, branch userregs_2</title>
<subtitle>Neovim fork with Rahm's personal hacks.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/'/>
<entry>
<title>feat(userregfunc): programmable user-defined registers with multibyte support</title>
<updated>2025-04-16T17:41:19+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>joshuarahm@gmail.com</email>
</author>
<published>2025-04-09T23:46:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=2034a8419e1c5675592cdd0d0ffeaadfda58001a'/>
<id>2034a8419e1c5675592cdd0d0ffeaadfda58001a</id>
<content type='text'>
This patch introduces a new global option `userregfunc`, allowing users
to define custom behavior for registers not handled by Neovim
internally. This enables programmable registers using any Unicode
character — including multibyte characters.

- A new register slot `USER_REGISTER` is introduced. Any register not
  matching the standard set (`0-9a-zA-Z"+-*%#/:.=`, etc.) is routed
  through this system.

- When such a register is accessed, the function defined in
  `userregfunc` is called with three arguments:

    1. `{action}` (string): either `"yank"` or `"put"`
    2. `{register}` (string): UTF-8 character name of the register
    3. `{content}`:
       - If `action == "yank"`: a dictionary with these keys:
         - `lines` (list of strings): the yanked text
         - `type` (string): one of `"v"` (charwise), `"V"` (linewise), or `"b"` (blockwise)
         - `width` (number, optional): present if `type == "b"`
         - `additional_data` (dict, optional): user-extensible metadata
       - If `action == "put"`: this is always `v:null`

- The function may return either:
    - A **string** (used as a charwise register), or
    - A **dictionary** matching the structure above

- Internally, `read_userregister()` and `write_userregister()` convert
  between `yankreg_T` and typval dictionaries.

- Messages and internal logic fully support multibyte register names via
  UTF-8.

- A new `USER_REGISTER` slot is used for logical separation in the
  register table.

Included in this patch is an extensible Lua framework (`vim.userregs`)
for defining user register handlers in Lua. It provides per-register
handlers via `register_handler(registers, handler)`

The global function `_G.def_userreg_func` is registered as the default
implementation of `'userregfunc'`, enabling seamless integration with
the Lua framework.

- Register `λ` dynamically inserts the current date
- Register `&amp;` reads and writes from a "global register" file under
  `stdpath("run")`
- Register `?` returns the result of a shell command
- Registers that auto-adjust based on filetype, cursor context, or
  Treesitter nodes

This change expands the register model into a programmable abstraction —
fully scriptable and extensible — without breaking compatibility.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch introduces a new global option `userregfunc`, allowing users
to define custom behavior for registers not handled by Neovim
internally. This enables programmable registers using any Unicode
character — including multibyte characters.

- A new register slot `USER_REGISTER` is introduced. Any register not
  matching the standard set (`0-9a-zA-Z"+-*%#/:.=`, etc.) is routed
  through this system.

- When such a register is accessed, the function defined in
  `userregfunc` is called with three arguments:

    1. `{action}` (string): either `"yank"` or `"put"`
    2. `{register}` (string): UTF-8 character name of the register
    3. `{content}`:
       - If `action == "yank"`: a dictionary with these keys:
         - `lines` (list of strings): the yanked text
         - `type` (string): one of `"v"` (charwise), `"V"` (linewise), or `"b"` (blockwise)
         - `width` (number, optional): present if `type == "b"`
         - `additional_data` (dict, optional): user-extensible metadata
       - If `action == "put"`: this is always `v:null`

- The function may return either:
    - A **string** (used as a charwise register), or
    - A **dictionary** matching the structure above

- Internally, `read_userregister()` and `write_userregister()` convert
  between `yankreg_T` and typval dictionaries.

- Messages and internal logic fully support multibyte register names via
  UTF-8.

- A new `USER_REGISTER` slot is used for logical separation in the
  register table.

Included in this patch is an extensible Lua framework (`vim.userregs`)
for defining user register handlers in Lua. It provides per-register
handlers via `register_handler(registers, handler)`

The global function `_G.def_userreg_func` is registered as the default
implementation of `'userregfunc'`, enabling seamless integration with
the Lua framework.

- Register `λ` dynamically inserts the current date
- Register `&amp;` reads and writes from a "global register" file under
  `stdpath("run")`
- Register `?` returns the result of a shell command
- Registers that auto-adjust based on filetype, cursor context, or
  Treesitter nodes

This change expands the register model into a programmable abstraction —
fully scriptable and extensible — without breaking compatibility.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lsp): "bold" border for vim.lsp.buf.hover #33395</title>
<updated>2025-04-09T11:15:33+00:00</updated>
<author>
<name>Siddhant Agarwal</name>
<email>68201519+siddhantdev@users.noreply.github.com</email>
</author>
<published>2025-04-09T11:15:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=f068386c9f709c586f44169f4566b4e31ce973de'/>
<id>f068386c9f709c586f44169f4566b4e31ce973de</id>
<content type='text'>
Problem: vim.lsp.buf.hover allows a bold border size which hasn't been
defined

Solution: Define the bold border size for vim.lsp.buf.hover</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: vim.lsp.buf.hover allows a bold border size which hasn't been
defined

Solution: Define the bold border size for vim.lsp.buf.hover</pre>
</div>
</content>
</entry>
<entry>
<title>feat(health): summary in section heading #33388</title>
<updated>2025-04-09T11:13:20+00:00</updated>
<author>
<name>Yochem van Rosmalen</name>
<email>git@yochem.nl</email>
</author>
<published>2025-04-09T11:13:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=5a94edad70f9c47250fa53dd73cf30f191a3cd49'/>
<id>5a94edad70f9c47250fa53dd73cf30f191a3cd49</id>
<content type='text'>
Problem:
As checkhealth grows, it is increasingly hard to quickly glance through
the information.

Solution:
Show a summary of ok, warn, and error outputs per section.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
As checkhealth grows, it is increasingly hard to quickly glance through
the information.

Solution:
Show a summary of ok, warn, and error outputs per section.</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:9.1.1288: Using wrong window in ll_resize_stack() (#33397)</title>
<updated>2025-04-08T23:40:55+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2025-04-08T23:40:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=c73a827564083b4dadb3a70468466306fb416d08'/>
<id>c73a827564083b4dadb3a70468466306fb416d08</id>
<content type='text'>
Problem:  Using wrong window in ll_resize_stack()
          (after v9.1.1287)
Solution: Use "wp" instead of "curwin", even though they are always the
          same value.  Fix typos in documentation (zeertzjq).

closes: vim/vim#17080

https://github.com/vim/vim/commit/b71f1309a210bf8f61a24f4eda336de64c6f0a07</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  Using wrong window in ll_resize_stack()
          (after v9.1.1287)
Solution: Use "wp" instead of "curwin", even though they are always the
          same value.  Fix typos in documentation (zeertzjq).

closes: vim/vim#17080

https://github.com/vim/vim/commit/b71f1309a210bf8f61a24f4eda336de64c6f0a07</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:9.1.1283: quickfix stack is limited to 10 items</title>
<updated>2025-04-08T05:06:19+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2025-04-08T03:11:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=00eff4b196521adc35d11c605decacef5bc98fa3'/>
<id>00eff4b196521adc35d11c605decacef5bc98fa3</id>
<content type='text'>
Problem:  quickfix and location-list stack is limited to 10 items
Solution: add the 'chistory' and 'lhistory' options to configure a
          larger quickfix/location list stack
          (64-bitman)

closes: vim/vim#16920

https://github.com/vim/vim/commit/88d41ab270a8390a43da97a903b1a4d76b89d330

Co-authored-by: 64-bitman &lt;60551350+64-bitman@users.noreply.github.com&gt;
Co-authored-by: Hirohito Higashi &lt;h.east.727@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  quickfix and location-list stack is limited to 10 items
Solution: add the 'chistory' and 'lhistory' options to configure a
          larger quickfix/location list stack
          (64-bitman)

closes: vim/vim#16920

https://github.com/vim/vim/commit/88d41ab270a8390a43da97a903b1a4d76b89d330

Co-authored-by: 64-bitman &lt;60551350+64-bitman@users.noreply.github.com&gt;
Co-authored-by: Hirohito Higashi &lt;h.east.727@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:9.1.1286: filetype: help files not detected when 'iskeyword' includes ":" (#33377)</title>
<updated>2025-04-08T00:13:12+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2025-04-08T00:13:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=8af9f8ab5ecd59df52aed9019e8ecc9f8101ee7d'/>
<id>8af9f8ab5ecd59df52aed9019e8ecc9f8101ee7d</id>
<content type='text'>
Problem:  Help files not detected when 'iskeyword' includes ":".
Solution: Do not use \&lt; and \&gt; in the pattern (zeertzjq).

fixes: vim/vim#17069
closes: vim/vim#17071

https://github.com/vim/vim/commit/e370141bf41919642061ee2e78340dca84678712</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  Help files not detected when 'iskeyword' includes ":".
Solution: Do not use \&lt; and \&gt; in the pattern (zeertzjq).

fixes: vim/vim#17069
closes: vim/vim#17071

https://github.com/vim/vim/commit/e370141bf41919642061ee2e78340dca84678712</pre>
</div>
</content>
</entry>
<entry>
<title>fix(treesitter): not refreshing virtualtext contents #33361</title>
<updated>2025-04-07T10:56:40+00:00</updated>
<author>
<name>Dmitry Zolotukhin</name>
<email>zlogic@gmail.com</email>
</author>
<published>2025-04-07T10:56:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=cf59631f65390efcf9ad27cd63003f8711cb9e17'/>
<id>cf59631f65390efcf9ad27cd63003f8711cb9e17</id>
<content type='text'>
Problem: In some cases, when treesitter is enabled, deleting a
line below virtualtext will not refresh all updated lines.
https://github.com/neovim/neovim/issues/33358

Solution: Revert a part of https://github.com/neovim/neovim/pull/31324
to ensure that the full range (with virtual lines) is refreshed.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: In some cases, when treesitter is enabled, deleting a
line below virtualtext will not refresh all updated lines.
https://github.com/neovim/neovim/issues/33358

Solution: Revert a part of https://github.com/neovim/neovim/pull/31324
to ensure that the full range (with virtual lines) is refreshed.</pre>
</div>
</content>
</entry>
<entry>
<title>fix(health): expecting nonexistent "inotifywait" function #33312</title>
<updated>2025-04-07T09:13:05+00:00</updated>
<author>
<name>Felipe Lema</name>
<email>felipelema@mortemale.org</email>
</author>
<published>2025-04-07T09:13:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=bd37348939a781046dedc6f101a8db80bf1afc53'/>
<id>bd37348939a781046dedc6f101a8db80bf1afc53</id>
<content type='text'>
Problem:
55e4301036bb938474fc9768c41e28df867d9286 changed the program name but not the function name.

Solution:
Fix the healthcheck.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
55e4301036bb938474fc9768c41e28df867d9286 changed the program name but not the function name.

Solution:
Fix the healthcheck.</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(lsp): deprecate client_is_stopped #33342</title>
<updated>2025-04-06T02:13:13+00:00</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2025-04-06T02:13:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=fece4897940896f487559b955e4f8f76d48f299c'/>
<id>fece4897940896f487559b955e4f8f76d48f299c</id>
<content type='text'>
Problem:
`client_is_stopped(…)` is an alias for `not get_client_by_id(…)`.
And it's not used anywhere in our codebase.

Solution:
Deprecate it.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
`client_is_stopped(…)` is an alias for `not get_client_by_id(…)`.
And it's not used anywhere in our codebase.

Solution:
Deprecate it.</pre>
</div>
</content>
</entry>
<entry>
<title>fix(vim.hl): nvim_buf_del_extmark on invalid buffer #33331</title>
<updated>2025-04-05T22:56:40+00:00</updated>
<author>
<name>phanium</name>
<email>91544758+phanen@users.noreply.github.com</email>
</author>
<published>2025-04-05T22:56:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=28e819018520a2300eaeeec6794ffcd614b25dd2'/>
<id>28e819018520a2300eaeeec6794ffcd614b25dd2</id>
<content type='text'>
Problem:
nvim_buf_del_extmark error if buffer is destroyed before timer stops

Solution:
check nvim_buf_is_valid.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
nvim_buf_del_extmark error if buffer is destroyed before timer stops

Solution:
check nvim_buf_is_valid.</pre>
</div>
</content>
</entry>
</feed>
