<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/test/functional/editor/mode_insert_spec.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(autocmd): dot-repeat triggers InsertCharPre #41806</title>
<updated>2026-09-10T09:57:03+00:00</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2026-09-10T09:57:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=8c292c96dd8f901264b23697bfdb5e7e2441ef5d'/>
<id>8c292c96dd8f901264b23697bfdb5e7e2441ef5d</id>
<content type='text'>
Problem:
InsertCharPre is triggered for stuffed text (".", i_CTRL-R, i_CTRL-A).
But that text was already transformed when it was typed: the `v:char`
result is appended to the redo buffer literally (`redo_append_lit()`).
So "." transforms it again, e.g. an autopair handler turns "()" into
"())".

Solution:
Skip InsertCharPre for stuffed text.

Precedent: `vgetorpeek()` disables abbreviations for stuffed text for
the same reason (it is post-expansion).

Macros are unaffected.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
InsertCharPre is triggered for stuffed text (".", i_CTRL-R, i_CTRL-A).
But that text was already transformed when it was typed: the `v:char`
result is appended to the redo buffer literally (`redo_append_lit()`).
So "." transforms it again, e.g. an autopair handler turns "()" into
"())".

Solution:
Skip InsertCharPre for stuffed text.

Precedent: `vgetorpeek()` disables abbreviations for stuffed text for
the same reason (it is post-expansion).

Macros are unaffected.</pre>
</div>
</content>
</entry>
<entry>
<title>test(harness): migrate away from magic globals</title>
<updated>2026-07-21T11:22:39+00:00</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2026-07-20T15:16:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=6d8c8b18d551d0be0490640c00fabb816727ec10'/>
<id>6d8c8b18d551d0be0490640c00fabb816727ec10</id>
<content type='text'>
Problem:
The magic globals `it`, `describe`, etc., are more trouble than they are
worth.

- Hooking into `after_each` requires `getfenv()` hacks.
- They confuse luals/emmylua, because the top-level `.luarc.json` isn't
  merged with `test/.luarc.json` (apparently a luals limitation?)
- They totally defeat discoverability because the user just has to
  "know" about the various magic symbols.

So they harm DX, which means they serve no purpose at all.

Solution:
- Expose the test API from `testutil`, so tests can call `t.it()`,
  `t.describe()`, etc., in the conventional way.
- Drop `getfenv()` hacks.
- Drop the `setfenv()` injection in `load_chunk`.
- Drop `test/_meta.lua`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
The magic globals `it`, `describe`, etc., are more trouble than they are
worth.

- Hooking into `after_each` requires `getfenv()` hacks.
- They confuse luals/emmylua, because the top-level `.luarc.json` isn't
  merged with `test/.luarc.json` (apparently a luals limitation?)
- They totally defeat discoverability because the user just has to
  "know" about the various magic symbols.

So they harm DX, which means they serve no purpose at all.

Solution:
- Expose the test API from `testutil`, so tests can call `t.it()`,
  `t.describe()`, etc., in the conventional way.
- Drop `getfenv()` hacks.
- Drop the `setfenv()` injection in `load_chunk`.
- Drop `test/_meta.lua`.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(edit): handle cindent properly with completion (#36711)</title>
<updated>2025-11-27T03:30:02+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2025-11-27T03:30:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=9a864d0a3c91f8b7666ad4b2197c6f3b4b8007f2'/>
<id>9a864d0a3c91f8b7666ad4b2197c6f3b4b8007f2</id>
<content type='text'>
Don't handle cindent in insert_check(). Instead, do that just before
returning from insert_execute() if required.
This also makes the in_cinkeys() change from #12894 unnecessary.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Don't handle cindent in insert_check(). Instead, do that just before
returning from insert_execute() if required.
This also makes the in_cinkeys() change from #12894 unnecessary.</pre>
</div>
</content>
</entry>
<entry>
<title>docs: small fixes (#35791)</title>
<updated>2025-09-16T03:41:36+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2025-09-16T03:41:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=ff777f9a858a5f360e220596c63bc69e19a1d5c1'/>
<id>ff777f9a858a5f360e220596c63bc69e19a1d5c1</id>
<content type='text'>
Close #34938
Close #35030
Close #35233
Close #35259
Close #35290
Close #35433
Close #35541
Close #35766
Close #35792

Co-authored-by: huylg &lt;45591413+huylg@users.noreply.github.com&gt;
Co-authored-by: Jason Del Ponte &lt;961963+jasdel@users.noreply.github.com&gt;
Co-authored-by: sooriya &lt;74165167+thuvasooriya@users.noreply.github.com&gt;
Co-authored-by: Andrew Braxton &lt;andrewcbraxton@gmail.com&gt;
Co-authored-by: Enric Calabuig &lt;enric.calabuig@gmail.com&gt;
Co-authored-by: Augusto César Dias &lt;augusto.c.dias@gmail.com&gt;
Co-authored-by: David Sierra DiazGranados &lt;davidsierradz@gmail.com&gt;
Co-authored-by: Stepan Nikitin &lt;90522882+vectravox@users.noreply.github.com&gt;
Co-authored-by: Emilien Breton &lt;bricktech2000@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Close #34938
Close #35030
Close #35233
Close #35259
Close #35290
Close #35433
Close #35541
Close #35766
Close #35792

Co-authored-by: huylg &lt;45591413+huylg@users.noreply.github.com&gt;
Co-authored-by: Jason Del Ponte &lt;961963+jasdel@users.noreply.github.com&gt;
Co-authored-by: sooriya &lt;74165167+thuvasooriya@users.noreply.github.com&gt;
Co-authored-by: Andrew Braxton &lt;andrewcbraxton@gmail.com&gt;
Co-authored-by: Enric Calabuig &lt;enric.calabuig@gmail.com&gt;
Co-authored-by: Augusto César Dias &lt;augusto.c.dias@gmail.com&gt;
Co-authored-by: David Sierra DiazGranados &lt;davidsierradz@gmail.com&gt;
Co-authored-by: Stepan Nikitin &lt;90522882+vectravox@users.noreply.github.com&gt;
Co-authored-by: Emilien Breton &lt;bricktech2000@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>docs: lsp, misc</title>
<updated>2025-09-04T03:03:51+00:00</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2025-08-25T03:12:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=9c3099f0cf0d1e9aa4edba13c5b5f6d3575aa18d'/>
<id>9c3099f0cf0d1e9aa4edba13c5b5f6d3575aa18d</id>
<content type='text'>
- Problem: It's not clear for new plugin developers that `:help` uses
  a help-tags file for searching the docs, generated by `:helptags`.
  - Solution: Hint to the |:helptags| docs for regenerating the tags
    file for their freshly written documentation.

Co-authored-by: Yochem van Rosmalen &lt;git@yochem.nl&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Problem: It's not clear for new plugin developers that `:help` uses
  a help-tags file for searching the docs, generated by `:helptags`.
  - Solution: Hint to the |:helptags| docs for regenerating the tags
    file for their freshly written documentation.

Co-authored-by: Yochem van Rosmalen &lt;git@yochem.nl&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(editor)!: insert-mode ctrl-r should work like paste #35477</title>
<updated>2025-09-02T04:05:16+00:00</updated>
<author>
<name>Shadman</name>
<email>shadmansaleh3@gmail.com</email>
</author>
<published>2025-09-02T04:05:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=79bfeecdb483c683e79abca3e9a1bd98b3a30b0f'/>
<id>79bfeecdb483c683e79abca3e9a1bd98b3a30b0f</id>
<content type='text'>
Problem:
insert-mode ctrl-r input is treated like raw user input, which is almost
never useful. This means any newlines in the input are affected by
autoindent, etc., which is:
- slow
- usually breaks the formatting of the input

Solution:
- ctrl-r should be treated like a paste, not user-input.
- does not affect `&lt;c-r&gt;=`, so `&lt;c-r&gt;=@x` can still be used to get the
  old behavior.

Co-authored-by: Justin M. Keyes &lt;justinkz@gmail.com&gt;
Co-authored-by: zeertzjq &lt;zeertzjq@outlook.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
insert-mode ctrl-r input is treated like raw user input, which is almost
never useful. This means any newlines in the input are affected by
autoindent, etc., which is:
- slow
- usually breaks the formatting of the input

Solution:
- ctrl-r should be treated like a paste, not user-input.
- does not affect `&lt;c-r&gt;=`, so `&lt;c-r&gt;=@x` can still be used to get the
  old behavior.

Co-authored-by: Justin M. Keyes &lt;justinkz@gmail.com&gt;
Co-authored-by: zeertzjq &lt;zeertzjq@outlook.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>fix(tests): needing two calls to setup a screen is cringe</title>
<updated>2024-11-14T11:40:57+00:00</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2024-11-11T21:15:19+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=e61228a214ebda9845db9462dad0a8c362d3963f'/>
<id>e61228a214ebda9845db9462dad0a8c362d3963f</id>
<content type='text'>
Before calling "attach" a screen object is just a dummy container for
(row, col) values whose purpose is to be sent as part of the "attach"
function call anyway.

Just create the screen in an attached state directly. Keep the complete
(row, col, options) config together. It is still completely valid to
later detach and re-attach as needed, including to another session.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Before calling "attach" a screen object is just a dummy container for
(row, col) values whose purpose is to be sent as part of the "attach"
function call anyway.

Just create the screen in an attached state directly. Keep the complete
(row, col, options) config together. It is still completely valid to
later detach and re-attach as needed, including to another session.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(multibyte): handle backspace of wide clusters in replace mode</title>
<updated>2024-09-06T08:22:29+00:00</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2024-09-04T10:09:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=fa99afe35eb5d8cf01d875e12b53165bf1104a60'/>
<id>fa99afe35eb5d8cf01d875e12b53165bf1104a60</id>
<content type='text'>
Make utf_head_off more robust against invalid sequences
and embedded NUL chars
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make utf_head_off more robust against invalid sequences
and embedded NUL chars
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(tests): more global highlight definitions</title>
<updated>2024-05-26T08:24:27+00:00</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2024-05-26T07:34:29+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=b90d7c36cf8a93e02d834eb53f5d0c8f19a9d7fa'/>
<id>b90d7c36cf8a93e02d834eb53f5d0c8f19a9d7fa</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>test: improve test conventions</title>
<updated>2024-04-23T16:17:04+00:00</updated>
<author>
<name>dundargoc</name>
<email>gocdundar@gmail.com</email>
</author>
<published>2024-04-20T15:44:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=052498ed42780a76daea589d063cd8947a894673'/>
<id>052498ed42780a76daea589d063cd8947a894673</id>
<content type='text'>
Specifically, functions that are run in the context of the test runner
are put in module `test/testutil.lua` while the functions that are run
in the context of the test session are put in
`test/functional/testnvim.lua`.

Closes https://github.com/neovim/neovim/issues/27004.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Specifically, functions that are run in the context of the test runner
are put in module `test/testutil.lua` while the functions that are run
in the context of the test session are put in
`test/functional/testnvim.lua`.

Closes https://github.com/neovim/neovim/issues/27004.
</pre>
</div>
</content>
</entry>
</feed>
