<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/runtime/lua/vim/range.lua, branch master</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(range): preserve single-character intersections #41881</title>
<updated>2026-09-12T14:28:54+00:00</updated>
<author>
<name>Volodymyr Chernetskyi</name>
<email>volodymyr_chernetskyi@goodyear.com</email>
</author>
<published>2026-09-12T14:28:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=4836954b120c2dff67fe8a11322af866c0ab8504'/>
<id>4836954b120c2dff67fe8a11322af866c0ab8504</id>
<content type='text'>
Problem:
Intersection rejects ranges whose inclusive end equals the other start,
discarding a shared character and even a one-character self-intersection.

Solution:
Use strict comparisons when checking inclusive ends for non-overlap.
Cover two ranges that share a single character.

AI-assisted</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
Intersection rejects ranges whose inclusive end equals the other start,
discarding a shared character and even a one-character self-intersection.

Solution:
Use strict comparisons when checking inclusive ends for non-overlap.
Cover two ranges that share a single character.

AI-assisted</pre>
</div>
</content>
</entry>
<entry>
<title>fix(range): use the preceding line for inclusive end marks #41880</title>
<updated>2026-09-12T14:27:08+00:00</updated>
<author>
<name>Volodymyr Chernetskyi</name>
<email>volodymyr_chernetskyi@goodyear.com</email>
</author>
<published>2026-09-12T14:27:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=4ec474ed795527e96f889fc93e77714e9ed9e392'/>
<id>4ec474ed795527e96f889fc93e77714e9ed9e392</id>
<content type='text'>
Problem:
Converting an exclusive end at column zero moves to the preceding row
but calculates the inclusive column from the original row's text.

Solution:
Read the preceding line after decrementing the row. Cover adjacent lines
with unequal lengths.

AI-assisted</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
Converting an exclusive end at column zero moves to the preceding row
but calculates the inclusive column from the original row's text.

Solution:
Read the preceding line after decrementing the row. Cover adjacent lines
with unequal lengths.

AI-assisted</pre>
</div>
</content>
</entry>
<entry>
<title>build: enable more EmmyLua checks</title>
<updated>2026-09-08T15:50:53+00:00</updated>
<author>
<name>Lewis Russell</name>
<email>lewis6991@gmail.com</email>
</author>
<published>2026-09-07T16:04:29+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=6a54396db46c97529ce89ffceb78a2842a7573c5'/>
<id>6a54396db46c97529ce89ffceb78a2842a7573c5</id>
<content type='text'>
- call-non-callable
- missing-fields
- redefined-label
- redefined-local
- undefined-field
- unreachable-code

Promote redefined-local and unreachable-code to warnings.

Fix DOS line-ending handling for multiline semantic tokens, and support
intersection types in the help parser.

AI-assisted
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- call-non-callable
- missing-fields
- redefined-label
- redefined-local
- undefined-field
- unreachable-code

Promote redefined-local and unreachable-code to warnings.

Fix DOS line-ending handling for multiline semantic tokens, and support
intersection types in the help parser.

AI-assisted
</pre>
</div>
</content>
</entry>
<entry>
<title>build: replace LuaLS with EmmyLua</title>
<updated>2026-09-07T14:33:22+00:00</updated>
<author>
<name>Lewis Russell</name>
<email>lewis6991@gmail.com</email>
</author>
<published>2026-09-07T10:43:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=65ef6fdaeef86f8341293942c076b320acf03fd1'/>
<id>65ef6fdaeef86f8341293942c076b320acf03fd1</id>
<content type='text'>
Problem: LuaLS struggles with the generics used in Nvim's runtime,
requiring broad diagnostic suppressions. Indexing is also slow.

Solution: Use EmmyLua for type checks in the build and CI. It offers
more sophisticated type checking, substantially better support for
generics, and much better flow analysis.

Correct the affected annotations. Use `@internal`, supported directly by
EmmyLua, instead of `@nodoc` for shared internal declarations, and
support it in the help parser.

AI-assisted
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: LuaLS struggles with the generics used in Nvim's runtime,
requiring broad diagnostic suppressions. Indexing is also slow.

Solution: Use EmmyLua for type checks in the build and CI. It offers
more sophisticated type checking, substantially better support for
generics, and much better flow analysis.

Correct the affected annotations. Use `@internal`, supported directly by
EmmyLua, instead of `@nodoc` for shared internal declarations, and
support it in the help parser.

AI-assisted
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(pos): mutable vim.Pos, vim.Range fields #41318</title>
<updated>2026-08-23T11:13:41+00:00</updated>
<author>
<name>Olivia Kinnear</name>
<email>git@superatomic.dev</email>
</author>
<published>2026-08-23T11:13:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=8ce1aac477a33ab1fe2a0b590ff278518dc0e473'/>
<id>8ce1aac477a33ab1fe2a0b590ff278518dc0e473</id>
<content type='text'>
Allow plugins to set the human-readable fields.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Allow plugins to set the human-readable fields.</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>refactor(pos,range): add missing validators and improve the docs</title>
<updated>2026-05-20T08:23:03+00:00</updated>
<author>
<name>Yi Ming</name>
<email>ofseed@foxmail.com</email>
</author>
<published>2026-05-20T08:03:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=cd3b544611aa2181b04c77ffd36f470a46c61879'/>
<id>cd3b544611aa2181b04c77ffd36f470a46c61879</id>
<content type='text'>
Problem:
Our documentation is incomplete or inconsistent in several ways:
- Some public APIs lack corresponding validators.
- Some public APIs lack usage examples.
- The meaning of some return values or parameters is not clearly explained.

Solution:
Add the missing validators, examples, and clarifications.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
Our documentation is incomplete or inconsistent in several ways:
- Some public APIs lack corresponding validators.
- Some public APIs lack usage examples.
- The meaning of some return values or parameters is not clearly explained.

Solution:
Add the missing validators, examples, and clarifications.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(pos,range): extract `vim.pos._util`</title>
<updated>2026-05-20T08:23:03+00:00</updated>
<author>
<name>Yi Ming</name>
<email>ofseed@foxmail.com</email>
</author>
<published>2026-05-20T08:02:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=b1c1f320890a4577a5edebfe267d2c5f6f8dd130'/>
<id>b1c1f320890a4577a5edebfe267d2c5f6f8dd130</id>
<content type='text'>
Problem:
- To share logic, creating a `vim.Range` currently creates two `vim.Pos` values
  as intermediates, which causes unnecessary table allocations.
- `pos.lua` and `range.lua` contain some overlapping logic.

Solution:
Add `vim.pos._util`, a module for handling
positions represented directly by `row` and `col`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
- To share logic, creating a `vim.Range` currently creates two `vim.Pos` values
  as intermediates, which causes unnecessary table allocations.
- `pos.lua` and `range.lua` contain some overlapping logic.

Solution:
Add `vim.pos._util`, a module for handling
positions represented directly by `row` and `col`.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(pos,range)!: remove `range.cursor()` and `range:to_cursor()`,</title>
<updated>2026-05-20T08:23:01+00:00</updated>
<author>
<name>Yi Ming</name>
<email>ofseed@foxmail.com</email>
</author>
<published>2026-05-19T08:32:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=8d1233a1440cb93f64ff1d6181138437251e3e63'/>
<id>8d1233a1440cb93f64ff1d6181138437251e3e63</id>
<content type='text'>
Problem:
- A window can only have one cursor, ranges selected by the cursor are typically
  obtained by marks like "&gt;" and "&lt;", instead of calling get_cursor() twice.
- `vim.Range` is described as end-exclusive,
  but the current `range.cursor()`/`range:to_cursor()` are end-inclusive.
- Conversion between `vim.Range` and mark-indexed range can be done by
  `range.mark()`/`range:to_mark()`

Solution:
Remove `range.cursor()` and `range:to_cursor()`,
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
- A window can only have one cursor, ranges selected by the cursor are typically
  obtained by marks like "&gt;" and "&lt;", instead of calling get_cursor() twice.
- `vim.Range` is described as end-exclusive,
  but the current `range.cursor()`/`range:to_cursor()` are end-inclusive.
- Conversion between `vim.Range` and mark-indexed range can be done by
  `range.mark()`/`range:to_mark()`

Solution:
Remove `range.cursor()` and `range:to_cursor()`,
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(range): handle inclusive/exclusive positions on multibyte characters</title>
<updated>2026-05-18T14:19:07+00:00</updated>
<author>
<name>Yi Ming</name>
<email>ofseed@foxmail.com</email>
</author>
<published>2026-05-17T08:39:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=856bc6d284f6c9f31f21d01e69b44457502a773f'/>
<id>856bc6d284f6c9f31f21d01e69b44457502a773f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
