<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/src/nvim/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>[extregs] implement tab completion for ~ menu.</title>
<updated>2026-10-19T00:43:26+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>joshuarahm@gmail.com</email>
</author>
<published>2026-10-19T00:43:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=41be894eb2e8d02c052ad4e85962550c54ae4589'/>
<id>41be894eb2e8d02c052ad4e85962550c54ae4589</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[extregs] implemented aliases.</title>
<updated>2026-10-18T06:33:03+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>joshuarahm@gmail.com</email>
</author>
<published>2026-10-16T07:40:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=a33594631bcbef898ed97b5fd460ee28cde60f9d'/>
<id>a33594631bcbef898ed97b5fd460ee28cde60f9d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[extregs] switch to a hash map for an arbitrary number of extregs.</title>
<updated>2026-10-18T06:30:48+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>joshuarahm@gmail.com</email>
</author>
<published>2026-10-14T22:34:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=6f7f01c20e21321c6bd00a891d7c6f94686154a9'/>
<id>6f7f01c20e21321c6bd00a891d7c6f94686154a9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[feat] extregisters</title>
<updated>2026-10-18T06:28:27+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>joshuarahm@gmail.com</email>
</author>
<published>2026-10-14T04:11:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=22d8bf3861234480aa6afed90a1faaaac3d49520'/>
<id>22d8bf3861234480aa6afed90a1faaaac3d49520</id>
<content type='text'>
Implements "extended registers"

Extended registers provide access to a separate namespace of registers
backed by custom lua callback functions.

A new special register ("~) is introduced, which prompts the user for
the name of an extregistr to yank or paste from.

This enables file-backed or cloud-synced or other arbitrary register
behavior.

One can now use:

`"~file_extreg&lt;cr&gt;yy`

to yank into the "file_extreg" register.

AI-assisted: Qwen3-Coder
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Implements "extended registers"

Extended registers provide access to a separate namespace of registers
backed by custom lua callback functions.

A new special register ("~) is introduced, which prompts the user for
the name of an extregistr to yank or paste from.

This enables file-backed or cloud-synced or other arbitrary register
behavior.

One can now use:

`"~file_extreg&lt;cr&gt;yy`

to yank into the "file_extreg" register.

AI-assisted: Qwen3-Coder
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #42217 from bfredl/redirecting</title>
<updated>2026-10-06T12:33:55+00:00</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2026-10-06T12:33:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=cae3a197f74d1f406319ef00a0d2080d98322a00'/>
<id>cae3a197f74d1f406319ef00a0d2080d98322a00</id>
<content type='text'>
fix(lua): regression with `print()` in headless mode when redirecting</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
fix(lua): regression with `print()` in headless mode when redirecting</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lua): regression with `print()` in headless mode</title>
<updated>2026-10-06T09:05:43+00:00</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2026-10-03T11:20:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=adc0700dc4589e59de2c17a2f8cfc2ba2fb1181f'/>
<id>adc0700dc4589e59de2c17a2f8cfc2ba2fb1181f</id>
<content type='text'>
This is a bunch of hacks so we can override msg_puts_printf specifically
while still allowing redirecting and "normal" message flow to happen,
as this still has observable side-effects (even with no screen attached,
screenstring() is still valid..)

fixes #42218
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a bunch of hacks so we can override msg_puts_printf specifically
while still allowing redirecting and "normal" message flow to happen,
as this still has observable side-effects (even with no screen attached,
screenstring() is still valid..)

fixes #42218
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lua): vim._with({ buf, win }) assertion failure #42244</title>
<updated>2026-10-05T15:57:32+00:00</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2026-10-05T15:57:32+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=7a8b7c04778d334f60766a0c83933b74e4e237b3'/>
<id>7a8b7c04778d334f60766a0c83933b74e4e237b3</id>
<content type='text'>
Problem:
`vim._with({ buf = 0, win = 0 }, f)` fails an assert in ctx_switch().
vim._with() allows `buf` with `win` when `win` shows `buf`, but
nlua_with() passes both, and ctx_switch() takes only one target.

Solution:
Ignore `buf` if `win` is given; the window implies its buffer.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
`vim._with({ buf = 0, win = 0 }, f)` fails an assert in ctx_switch().
vim._with() allows `buf` with `win` when `win` shows `buf`, but
nlua_with() passes both, and ctx_switch() takes only one target.

Solution:
Ignore `buf` if `win` is given; the window implies its buffer.</pre>
</div>
</content>
</entry>
<entry>
<title>feat(lua): in script mode -l, use raw output for print()</title>
<updated>2026-10-02T09:43:56+00:00</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2026-09-24T12:31:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=58ce7218ec9aa85cc090cee4654e4573f6dd8570'/>
<id>58ce7218ec9aa85cc090cee4654e4573f6dd8570</id>
<content type='text'>
consider the following test_script.lua :

    print 'hello\n' -- TWO new lines
    print 'this is \027[31mRED FOR AN AMAZING REASON\027[0m'
    print 'foo'
    print '' -- newline despite empty!
    print 'bar'

    -- a bit later:
    os.execute 'sleep 2' -- CPU goes BRR, cursor in column zero
    print 'more bar'

before this PR, `nvim -l test_script.lua` had some weird behaviors
compared to `lua test_script.lua` or the now removed `nvim -ll
test_script.lua`.

- one extra '\n' at the end of a print is ignored, one would need
  TWO '\n' for a single extra '\n'

- an empty print'' is supposed to print an empty line

- print'\027[31mRED' is being escaped so it does not work

- the cursor gets stuck at the end of a message, instead of after
  emitting the new line, this looks like the CPU lag has something
  to do with the _last_ printed message which is likely not the case.

I consider these behaviors to be unintentional (a consequence of
stragglig through the message.c meta-machine, which is optimized
for message handling in _an interative text editor_) and getting
closer to plain lua behavior would be better.

An alternative would be to restore the builtin print(), but our
implemenation still has some benefits, like try
`print(setmetatable({}, {__tostring=error})` in plain lua..
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
consider the following test_script.lua :

    print 'hello\n' -- TWO new lines
    print 'this is \027[31mRED FOR AN AMAZING REASON\027[0m'
    print 'foo'
    print '' -- newline despite empty!
    print 'bar'

    -- a bit later:
    os.execute 'sleep 2' -- CPU goes BRR, cursor in column zero
    print 'more bar'

before this PR, `nvim -l test_script.lua` had some weird behaviors
compared to `lua test_script.lua` or the now removed `nvim -ll
test_script.lua`.

- one extra '\n' at the end of a print is ignored, one would need
  TWO '\n' for a single extra '\n'

- an empty print'' is supposed to print an empty line

- print'\027[31mRED' is being escaped so it does not work

- the cursor gets stuck at the end of a message, instead of after
  emitting the new line, this looks like the CPU lag has something
  to do with the _last_ printed message which is likely not the case.

I consider these behaviors to be unintentional (a consequence of
stragglig through the message.c meta-machine, which is optimized
for message handling in _an interative text editor_) and getting
closer to plain lua behavior would be better.

An alternative would be to restore the builtin print(), but our
implemenation still has some benefits, like try
`print(setmetatable({}, {__tostring=error})` in plain lua..
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(api): correct Lua command and completion types</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=b597af006fbb7c94c03ea9e7fa13cab7394b0501'/>
<id>b597af006fbb7c94c03ea9e7fa13cab7394b0501</id>
<content type='text'>
Problem: Command inputs and parsed modifiers have different optional
fields, and completion window IDs are annotated as floating-point
values.

Solution: Separate modifier input and return types, correct integer IDs,
and update the metadata generators and their output.

AI-assisted
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: Command inputs and parsed modifiers have different optional
fields, and completion window IDs are annotated as floating-point
values.

Solution: Separate modifier input and return types, correct integer IDs,
and update the metadata generators and their output.

AI-assisted
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lint): fix some warnings in clang-tidy 22</title>
<updated>2026-09-23T13:09:14+00:00</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2026-09-23T09:52:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=a4773f1980113e57eeb44f222f9e4cbb8dc73d37'/>
<id>a4773f1980113e57eeb44f222f9e4cbb8dc73d37</id>
<content type='text'>
CI is currently using clang-tidy 21 but prepare for the future
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
CI is currently using clang-tidy 21 but prepare for the future
</pre>
</div>
</content>
</entry>
</feed>
