<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/runtime/lua/vim/keymap.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(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>
<entry>
<title>perf(hightlight): compute only bounds for non-blockwise highlights</title>
<updated>2026-09-16T14:23:54+00:00</updated>
<author>
<name>Volodymyr Chernetskyi</name>
<email>19735328+chernetskyi@users.noreply.github.com</email>
</author>
<published>2026-09-15T12:53:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=ff039bb024ca0a8753c6591fa8cb98312090f739'/>
<id>ff039bb024ca0a8753c6591fa8cb98312090f739</id>
<content type='text'>
Problem:
vim.hl.range() computes a segment for every selected line, then discards
all but the outer endpoints for characterwise and linewise highlights.
This makes highlighting large yanks and puts unnecessarily expensive.

Solution:
Use getregionpos() with bounds=true for these highlights. Also use bounds
in the keymap example that only needs the first and last selected lines.

AI-assisted
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
vim.hl.range() computes a segment for every selected line, then discards
all but the outer endpoints for characterwise and linewise highlights.
This makes highlighting large yanks and puts unnecessarily expensive.

Solution:
Use getregionpos() with bounds=true for these highlights. Also use bounds
in the keymap example that only needs the first and last selected lines.

AI-assisted
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(keymap): report the documented parameter name #41633</title>
<updated>2026-09-02T20:27:20+00:00</updated>
<author>
<name>Volodymyr Chernetskyi</name>
<email>volodymyr_chernetskyi@goodyear.com</email>
</author>
<published>2026-09-02T20:27:20+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=45b645718c804b66394231f85f52413218fdafbd'/>
<id>45b645718c804b66394231f85f52413218fdafbd</id>
<content type='text'>
Problem:
Invalid `modes` parameter for `vim.keymap.del()` reports wrong parameter
name `"mode"`.

Solution:
Report correct parameter name `"mode"` instead.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
Invalid `modes` parameter for `vim.keymap.del()` reports wrong parameter
name `"mode"`.

Solution:
Report correct parameter name `"mode"` instead.</pre>
</div>
</content>
</entry>
<entry>
<title>fix(api): add `lhs` option for keymap deletion</title>
<updated>2026-07-25T17:36:56+00:00</updated>
<author>
<name>Barrett Ruth</name>
<email>br@barrettruth.com</email>
</author>
<published>2026-07-25T17:26:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=22d44ef8754448294833fcbc197defaca355f3b5'/>
<id>22d44ef8754448294833fcbc197defaca355f3b5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>docs: misc, options, pos/range</title>
<updated>2026-05-30T10:57:24+00:00</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2026-05-20T09:47:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=f5fae7aa5cf1e599b2bbc0ef0ae6deccc8c0b3d5'/>
<id>f5fae7aa5cf1e599b2bbc0ef0ae6deccc8c0b3d5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(lua): support table `lhs` in vim.keymap.set()/del() #39948</title>
<updated>2026-05-29T18:45:33+00:00</updated>
<author>
<name>Olivia Kinnear</name>
<email>git@superatomic.dev</email>
</author>
<published>2026-05-29T18:45:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=e728c100b5bd4b0c6671d8eb524e15d67cacb42a'/>
<id>e728c100b5bd4b0c6671d8eb524e15d67cacb42a</id>
<content type='text'>
Problem:
It is repetitive to map multiple keymaps to do the same thing. Here are some
cases where being able to do this would be useful:

    -- Visual movement for both j/k and down/up:
    vim.keymap.set({ 'n', 'x' }, { 'j', '&lt;Down&gt;' }, 'v:count == 0 ? "gj" : "j"', { expr = true })
    vim.keymap.set({ 'n', 'x' }, { 'k', '&lt;Up&gt;' }, 'v:count == 0 ? "gk" : "k"', { expr = true })
    -- Map multiple keys to `&lt;Nop&gt;` concisely:
    vim.keymap.set({ 'n', 'x' }, { '&lt;Leader&gt;', '&lt;Localleader&gt;', '&lt;CR&gt;' }, '&lt;Nop&gt;')
    -- Remove multiple keymaps at once:
    vim.keymap.del('n', { 'gri', 'grn', 'grr' })

Solution:
Support the `lhs` of `vim.keymap.set()` and `vim.keymap.del()` being a table, in
the same way that `modes` can be.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
It is repetitive to map multiple keymaps to do the same thing. Here are some
cases where being able to do this would be useful:

    -- Visual movement for both j/k and down/up:
    vim.keymap.set({ 'n', 'x' }, { 'j', '&lt;Down&gt;' }, 'v:count == 0 ? "gj" : "j"', { expr = true })
    vim.keymap.set({ 'n', 'x' }, { 'k', '&lt;Up&gt;' }, 'v:count == 0 ? "gk" : "k"', { expr = true })
    -- Map multiple keys to `&lt;Nop&gt;` concisely:
    vim.keymap.set({ 'n', 'x' }, { '&lt;Leader&gt;', '&lt;Localleader&gt;', '&lt;CR&gt;' }, '&lt;Nop&gt;')
    -- Remove multiple keymaps at once:
    vim.keymap.del('n', { 'gri', 'grn', 'grr' })

Solution:
Support the `lhs` of `vim.keymap.set()` and `vim.keymap.del()` being a table, in
the same way that `modes` can be.</pre>
</div>
</content>
</entry>
<entry>
<title>fix(lua): drop support for boolean `buf` in `vim.keymap` #38432</title>
<updated>2026-03-23T12:00:53+00:00</updated>
<author>
<name>skewb1k</name>
<email>skewb1kunix@gmail.com</email>
</author>
<published>2026-03-23T12:00:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=9a5641b4b57082d3de3574a2776b55dcd444143c'/>
<id>9a5641b4b57082d3de3574a2776b55dcd444143c</id>
<content type='text'>
Problem:
`vim.keymap.*.Opts.buf` allows `boolean` aliases for more widely
used `integer?` values, `true` -&gt; `0` and `false` -&gt; `nil`. This
conversion is unnecessary and can be handled at call sites.

Solution:
As a follow-up to deprecating the `buffer` option, drop support for
boolean values for the new `buf` option. The deprecated `buffer`
continues to support booleans for backward compatibility.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
`vim.keymap.*.Opts.buf` allows `boolean` aliases for more widely
used `integer?` values, `true` -&gt; `0` and `false` -&gt; `nil`. This
conversion is unnecessary and can be handled at call sites.

Solution:
As a follow-up to deprecating the `buffer` option, drop support for
boolean values for the new `buf` option. The deprecated `buffer`
continues to support booleans for backward compatibility.</pre>
</div>
</content>
</entry>
<entry>
<title>feat(lua): replace `buffer` with `buf` in vim.keymap.set/del #38360</title>
<updated>2026-03-21T16:00:06+00:00</updated>
<author>
<name>skewb1k</name>
<email>skewb1kunix@gmail.com</email>
</author>
<published>2026-03-21T16:00:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=4d3a67cd620152d11ab9b5f5bdd973f84cc2d44b'/>
<id>4d3a67cd620152d11ab9b5f5bdd973f84cc2d44b</id>
<content type='text'>
The `buffer` option remains functional but is now undocumented.
Providing both will raise an error. Since providing `buf` was disallowed
before, there is no code that will break due to using `buffer` alongside
`buf`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The `buffer` option remains functional but is now undocumented.
Providing both will raise an error. Since providing `buf` was disallowed
before, there is no code that will break due to using `buffer` alongside
`buf`.</pre>
</div>
</content>
</entry>
<entry>
<title>docs(lua): vim.keymap.set takes no `noremap` #37723</title>
<updated>2026-02-05T13:43:04+00:00</updated>
<author>
<name>Christian Clason</name>
<email>c.clason@uni-graz.at</email>
</author>
<published>2026-02-05T13:43:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=13a9cdc6b4d10d4e840c1b940d061a242adbef21'/>
<id>13a9cdc6b4d10d4e840c1b940d061a242adbef21</id>
<content type='text'>
Problem: Unlike `nvim_keymap_set`, `vim.keymap.set` uses the non-negated
`remap` instead of `:set`'s `noremap`, but the documentation for this
got lost sometime before Nvim 0.10.

Solution: Restore the lost documentation and make it more explicit.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: Unlike `nvim_keymap_set`, `vim.keymap.set` uses the non-negated
`remap` instead of `:set`'s `noremap`, but the documentation for this
got lost sometime before Nvim 0.10.

Solution: Restore the lost documentation and make it more explicit.</pre>
</div>
</content>
</entry>
<entry>
<title>docs(lua): iInconsistent vim.keymap param name #37026</title>
<updated>2025-12-21T00:26:44+00:00</updated>
<author>
<name>Bryan Turns</name>
<email>95263942+BryanTurns@users.noreply.github.com</email>
</author>
<published>2025-12-21T00:26:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=bef68ba266038b94a532ce76e315dd71089939f3'/>
<id>bef68ba266038b94a532ce76e315dd71089939f3</id>
<content type='text'>
Problem: vim.keymap.del has 'modes' as it's first argument while vim.keymap.set
has 'mode' as it's first argument despite both 'mode' and 'modes' taking in the
same type input of String or String[].

Solution: Updated vim.keymap.set docs to refer to it's first argument
as 'modes'.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: vim.keymap.del has 'modes' as it's first argument while vim.keymap.set
has 'mode' as it's first argument despite both 'mode' and 'modes' taking in the
same type input of String or String[].

Solution: Updated vim.keymap.set docs to refer to it's first argument
as 'modes'.</pre>
</div>
</content>
</entry>
</feed>
