<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/test/functional/vimscript, 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>test(version): adapt to vim-patch updates</title>
<updated>2026-10-13T11:50:08+00:00</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2026-10-13T11:50:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=12eb3fdfa10ae3714754ea0f591b1ed934140158'/>
<id>12eb3fdfa10ae3714754ea0f591b1ed934140158</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(env)!: 'isident' does not affect $NAME parsing</title>
<updated>2026-10-05T16:57:28+00:00</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2026-10-05T10:41:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=96bbe82ed824c3cb3ccf67b407d61b62da1d9eda'/>
<id>96bbe82ed824c3cb3ccf67b407d61b62da1d9eda</id>
<content type='text'>
Problem:
'isident' decides how env var names are parsed, which is more
"confusing" than "useful":
- Changing 'isident' (for 'define' or "\i") can break `$NAME` expansion.
- Its default byte ranges let multibyte names work on Windows (`$aあ`)
  but not Unix (`$é`).

Solution:
Ignore 'isident' when parsing env var names.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
'isident' decides how env var names are parsed, which is more
"confusing" than "useful":
- Changing 'isident' (for 'define' or "\i") can break `$NAME` expansion.
- Its default byte ranges let multibyte names work on Windows (`$aあ`)
  but not Unix (`$é`).

Solution:
Ignore 'isident' when parsing env var names.
</pre>
</div>
</content>
</entry>
<entry>
<title>test: simplify functional test expectations</title>
<updated>2026-10-05T16:33:44+00:00</updated>
<author>
<name>Lewis Russell</name>
<email>lewis6991@gmail.com</email>
</author>
<published>2026-10-05T14:37:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=483815ab45cf8fc08804e0cfa95b126493a5dd1f'/>
<id>483815ab45cf8fc08804e0cfa95b126493a5dd1f</id>
<content type='text'>
Problem: Repeated default fields and field-by-field assertions obscure
the values that each functional test is meant to check.

Solution: Add eq_partial() to check selected record fields while
preserving list length and order. Use local helpers to fill fixed
expected defaults where tests need full equality. Keep explicit absence
checks and test-specific values at the call sites.

AI-assisted
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: Repeated default fields and field-by-field assertions obscure
the values that each functional test is meant to check.

Solution: Add eq_partial() to check selected record fields while
preserving list length and order. Use local helpers to fill fixed
expected defaults where tests need full equality. Keep explicit absence
checks and test-specific values at the call sites.

AI-assisted
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(env): multibyte $VAR name may end mid-char</title>
<updated>2026-10-04T15:46:58+00:00</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2026-10-01T10:40:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=025b12a4dc7dc656c9e33404531d09c5297ecc21'/>
<id>025b12a4dc7dc656c9e33404531d09c5297ecc21</id>
<content type='text'>
Problem:
'isident' is checked per byte (inherited from Vim), so a name can end
in the middle of a multibyte char: with "192-255", `$é` (C3 A9) looks
up "\xC3".
- Unix: expands an env var named "\xC3", plus a stray "\xA9".
- Windows: uv_os_getenv() rejects the name (invalid UTF-8), and
  os_getenv() logs an error.

`$VAR` in expressions (get_env_len()) and cmdline completion have the
same scan.

Solution:
`vim_isIDp()`: a multibyte char is an identifier char only if it is valid
UTF-8 and 'isident' has all its bytes. Use it in expand_env_esc(),
get_env_len() and cmdline completion. Names whose bytes are all in
'isident' still work, e.g. `$aあ` with the Windows default.

Assert UV_EINVAL in os_getenv() and os_getenv_buf() (like
os_env_exists() and os_setenv() already do): Nvim no longer passes
invalid UTF-8.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
'isident' is checked per byte (inherited from Vim), so a name can end
in the middle of a multibyte char: with "192-255", `$é` (C3 A9) looks
up "\xC3".
- Unix: expands an env var named "\xC3", plus a stray "\xA9".
- Windows: uv_os_getenv() rejects the name (invalid UTF-8), and
  os_getenv() logs an error.

`$VAR` in expressions (get_env_len()) and cmdline completion have the
same scan.

Solution:
`vim_isIDp()`: a multibyte char is an identifier char only if it is valid
UTF-8 and 'isident' has all its bytes. Use it in expand_env_esc(),
get_env_len() and cmdline completion. Names whose bytes are all in
'isident' still work, e.g. `$aあ` with the Windows default.

Assert UV_EINVAL in os_getenv() and os_getenv_buf() (like
os_env_exists() and os_setenv() already do): Nvim no longer passes
invalid UTF-8.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(api): vimscript call to API still requires `opts` param #42146</title>
<updated>2026-09-30T21:24:05+00:00</updated>
<author>
<name>Marc Jakobi</name>
<email>marc@jakobi.dev</email>
</author>
<published>2026-09-30T21:24:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=4f55f288f4ac0a05dcdab0fb525d89169488591b'/>
<id>4f55f288f4ac0a05dcdab0fb525d89169488591b</id>
<content type='text'>
Problem:
API contract was relaxed by 25439dad7e2ba21ff2f78759c68be888a217342c40581
to treat `opts` params as optional. However, when called from Vimscript,
omitting the `opts` arg `E119: Not enough arguments for function` error.

Solution:
Add a min/max argument range in the Vimscript generator if the function
has an `opts_idx` field.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
API contract was relaxed by 25439dad7e2ba21ff2f78759c68be888a217342c40581
to treat `opts` params as optional. However, when called from Vimscript,
omitting the `opts` arg `E119: Not enough arguments for function` error.

Solution:
Add a min/max argument range in the Vimscript generator if the function
has an `opts_idx` field.</pre>
</div>
</content>
</entry>
<entry>
<title>docs: update version.c</title>
<updated>2026-09-24T01:19:37+00:00</updated>
<author>
<name>Jan Edmund Lazo</name>
<email>janedmundlazo@hotmail.com</email>
</author>
<published>2026-09-23T06:09:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=3b4b8553d24e41b207ec159cb689b96231f4f6b3'/>
<id>3b4b8553d24e41b207ec159cb689b96231f4f6b3</id>
<content type='text'>
Fix has_spec.lua for v9.1.0000
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix has_spec.lua for v9.1.0000
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(charset)!: delete 'isprint' and cleanup 'iskeyword' and friends</title>
<updated>2026-09-22T10:31:48+00:00</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2026-09-17T09:58:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=6be4cd6560d17573f9ef9910bae4360cf96d760f'/>
<id>6be4cd6560d17573f9ef9910bae4360cf96d760f</id>
<content type='text'>
In the `enc=utf-8` only world, the 'isprint' option is quite obsolete.
The function is only consulted for decoded U+0080 to U+00FF chars
whose printability is defined by the unicode charset, just like
higher codepoints. Meanwhile, invalid `\x80` to `\xFF` bytes are always
unprintable.

Disentangle 'iskeyword', 'isfname' and 'isident' from each other by
giving them all separate bitsets. Now these can be updated individually.
These updaters can back out of errors gracefully, no need for extra
panic logic in option[str].c to restore partially updated chartabs.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In the `enc=utf-8` only world, the 'isprint' option is quite obsolete.
The function is only consulted for decoded U+0080 to U+00FF chars
whose printability is defined by the unicode charset, just like
higher codepoints. Meanwhile, invalid `\x80` to `\xFF` bytes are always
unprintable.

Disentangle 'iskeyword', 'isfname' and 'isident' from each other by
giving them all separate bitsets. Now these can be updated individually.
These updaters can back out of errors gracefully, no need for extra
panic logic in option[str].c to restore partially updated chartabs.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(option): simplify error buffer handling</title>
<updated>2026-09-21T16:29:25+00:00</updated>
<author>
<name>Lewis Russell</name>
<email>lewis6991@gmail.com</email>
</author>
<published>2026-09-21T10:55:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=dc049cf0f98332e181d568d91620390ff2f7506b'/>
<id>dc049cf0f98332e181d568d91620390ff2f7506b</id>
<content type='text'>
Problem: Option validators and setters repeatedly pass error buffers and
their sizes separately. Some setters return messages in static storage.

Solution:

- Add CharBuf for borrowed writable storage, with its length including
  space for a terminating NUL.
- Move option error buffers to the callers that report errors. Preserve
  existing buffer sizes, truncation, and calls that do not need a
  message.
- Consolidate option error formatting and the duplicated code that lists
  valid option values.
- Return error messages directly from do_one_set_option().
- Remove unused arguments from get_option_newval() and
  set_option_value_for().
- Handle legacy TTY assignments in the existing callers and remove the
  redundant compatibility wrapper.
- Reuse CharBuf for Tree-sitter query errors.
- Pass CharBuf through the statusline and statuscolumn builders,
  retaining the buffer sizes provided by their callers, including title
  formatting.

AI-assisted
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: Option validators and setters repeatedly pass error buffers and
their sizes separately. Some setters return messages in static storage.

Solution:

- Add CharBuf for borrowed writable storage, with its length including
  space for a terminating NUL.
- Move option error buffers to the callers that report errors. Preserve
  existing buffer sizes, truncation, and calls that do not need a
  message.
- Consolidate option error formatting and the duplicated code that lists
  valid option values.
- Return error messages directly from do_one_set_option().
- Remove unused arguments from get_option_newval() and
  set_option_value_for().
- Handle legacy TTY assignments in the existing callers and remove the
  redundant compatibility wrapper.
- Reuse CharBuf for Tree-sitter query errors.
- Pass CharBuf through the statusline and statuscolumn builders,
  retaining the buffer sizes provided by their callers, including title
  formatting.

AI-assisted
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(cmdwin): allow a user to switch to other buffers #41199</title>
<updated>2026-08-28T17:34:31+00:00</updated>
<author>
<name>Rob Pilling</name>
<email>robpilling@gmail.com</email>
</author>
<published>2026-08-28T17:34:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=61958f233584b0c75f6dbc650d6b1d3c01096404'/>
<id>61958f233584b0c75f6dbc650d6b1d3c01096404</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(messages): `inputlist()` offers the mouse when it cannot be used (#41280)</title>
<updated>2026-08-13T23:38:39+00:00</updated>
<author>
<name>Barrett Ruth</name>
<email>62671086+barrettruth@users.noreply.github.com</email>
</author>
<published>2026-08-13T23:38:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=fc3f71fb7d5fdc7746576dcf4c896b94d54c4711'/>
<id>fc3f71fb7d5fdc7746576dcf4c896b94d54c4711</id>
<content type='text'>
Problem:
`inputlist()` advertises "click with the mouse" purely because it
implements click selection, so under the default `'mouse'` of "nvi" it
offers a click that command-line mode never receives.

Solution:
Only offer the mouse when `'mouse'` covers command-line mode, the same
condition `:help inputlist()` already documents.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
`inputlist()` advertises "click with the mouse" purely because it
implements click selection, so under the default `'mouse'` of "nvi" it
offers a click that command-line mode never receives.

Solution:
Only offer the mouse when `'mouse'` covers command-line mode, the same
condition `:help inputlist()` already documents.</pre>
</div>
</content>
</entry>
</feed>
