<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/test/old/testdir/test_diffmode.vim, 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>vim-patch:9.2.1026: heap-use-after-free via DiffUpdated autocommand (#42238)</title>
<updated>2026-10-05T02:48:50+00:00</updated>
<author>
<name>Jan Edmund Lazo</name>
<email>janedmundlazo@hotmail.com</email>
</author>
<published>2026-10-05T02:48:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=561857c4a88072407c79e9707e6f2e81bce097d2'/>
<id>561857c4a88072407c79e9707e6f2e81bce097d2</id>
<content type='text'>
Problem:  A DiffUpdated autococmd wiping the current buffer
          can cause a use-after-free (Evaopo).
Solution: Disallow changing the window layout while DiffUpdated
          autocommand runs.

closes: vim/vim#21177

https://github.com/vim/vim/commit/d81720e01a7ce79afa2c55aff5270d9f394ccbbe

Co-authored-by: Christian Brabandt &lt;cb@256bit.org&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  A DiffUpdated autococmd wiping the current buffer
          can cause a use-after-free (Evaopo).
Solution: Disallow changing the window layout while DiffUpdated
          autocommand runs.

closes: vim/vim#21177

https://github.com/vim/vim/commit/d81720e01a7ce79afa2c55aff5270d9f394ccbbe

Co-authored-by: Christian Brabandt &lt;cb@256bit.org&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:9.1.2131: tests: Test_diff_screen() fails on BSD</title>
<updated>2026-10-05T01:51:41+00:00</updated>
<author>
<name>Jan Edmund Lazo</name>
<email>janedmundlazo@hotmail.com</email>
</author>
<published>2026-10-05T01:51:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=c08b336cabbc427a3d3303d5e249e0a0e73156f6'/>
<id>c08b336cabbc427a3d3303d5e249e0a0e73156f6</id>
<content type='text'>
Problem:  tests: Test_diff_screen() fails on BSD
Solution: Use gdiff on BSD systems if available (zeertzjq).

related: vim/vim#19336

https://github.com/vim/vim/commit/991434d8dfe40770f3214e549df16ec3369316a9

Co-authored-by: zeertzjq &lt;zeertzjq@outlook.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  tests: Test_diff_screen() fails on BSD
Solution: Use gdiff on BSD systems if available (zeertzjq).

related: vim/vim#19336

https://github.com/vim/vim/commit/991434d8dfe40770f3214e549df16ec3369316a9

Co-authored-by: zeertzjq &lt;zeertzjq@outlook.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:9.1.0107: CI: Fix MacOS-14 tests</title>
<updated>2026-10-05T01:49:05+00:00</updated>
<author>
<name>Jan Edmund Lazo</name>
<email>janedmundlazo@hotmail.com</email>
</author>
<published>2026-10-05T01:47:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=925d4aefc87a62a71efa21f976c6eee255fa897f'/>
<id>925d4aefc87a62a71efa21f976c6eee255fa897f</id>
<content type='text'>
Problem:  CI: Fix MacOS-14 tests (after 9.1.0070)
Solution: Re-enable sound tests by granting Mic access,
          disable Test_diff_screen because of buggy MacOS diff
          (non GNU version), re-enable Test_term_gettitle()
          (Yee Cheng Chin)

macos-14 runner was turned on in vim/vim#13943, but it had to turn off a few
tests in order for CI to run. Re-enable them and fix the underlying
issues.

* `Test_diff_screen`: The test failure is due to a bug in Apple's diff
  utility. Apple introduced a new diff tool based on FreeBSD in macOS 13
  and it has buggy behaviors when using unified diff (`-U0`) and the
  diff is on the first line of the file. Simply disable this test for
  now if we detect Apple diff (instead of the old GNU diff). Can
  re-enable this in the future if Apple fixes the issue.
* `Test_play_event` / `Test_play_silent`: GitHub Actions currently has
  an issue with playing sound in CI in macos-14 runners. It for some
  reason triggers a microphone permission dialog popup which blocks the
  CI action (see https://github.com/actions/runner-images/issues/9330).
  To fix this, add a temporary step in macos-14 to manually allow
  microphone permissions in the runner.
* `Test_term_gettitle`: I could not reproduce the failure, so I just
  turned it on and it seems to run just fine. Maybe it's a timing issue
  and whatnot but either way that should be fixed when we can reproduce
  the issue.

closes: vim/vim#14032

https://github.com/vim/vim/commit/49f2ba6d41d3c6142deaa4a50b0b16e03969a904

Co-authored-by: Yee Cheng Chin &lt;ychin.git@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  CI: Fix MacOS-14 tests (after 9.1.0070)
Solution: Re-enable sound tests by granting Mic access,
          disable Test_diff_screen because of buggy MacOS diff
          (non GNU version), re-enable Test_term_gettitle()
          (Yee Cheng Chin)

macos-14 runner was turned on in vim/vim#13943, but it had to turn off a few
tests in order for CI to run. Re-enable them and fix the underlying
issues.

* `Test_diff_screen`: The test failure is due to a bug in Apple's diff
  utility. Apple introduced a new diff tool based on FreeBSD in macOS 13
  and it has buggy behaviors when using unified diff (`-U0`) and the
  diff is on the first line of the file. Simply disable this test for
  now if we detect Apple diff (instead of the old GNU diff). Can
  re-enable this in the future if Apple fixes the issue.
* `Test_play_event` / `Test_play_silent`: GitHub Actions currently has
  an issue with playing sound in CI in macos-14 runners. It for some
  reason triggers a microphone permission dialog popup which blocks the
  CI action (see https://github.com/actions/runner-images/issues/9330).
  To fix this, add a temporary step in macos-14 to manually allow
  microphone permissions in the runner.
* `Test_term_gettitle`: I could not reproduce the failure, so I just
  turned it on and it seems to run just fine. Maybe it's a timing issue
  and whatnot but either way that should be fixed when we can reproduce
  the issue.

closes: vim/vim#14032

https://github.com/vim/vim/commit/49f2ba6d41d3c6142deaa4a50b0b16e03969a904

Co-authored-by: Yee Cheng Chin &lt;ychin.git@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:9.1.0070: CI: testsuite not run on M1 Mac</title>
<updated>2026-10-05T01:44:55+00:00</updated>
<author>
<name>Jan Edmund Lazo</name>
<email>janedmundlazo@hotmail.com</email>
</author>
<published>2026-10-05T01:44:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=064cf5f9d2c5629c2b53a2f5eff6ebc61fd147cf'/>
<id>064cf5f9d2c5629c2b53a2f5eff6ebc61fd147cf</id>
<content type='text'>
Problem:  CI: testsuite not run on M1 Mac
Solution: Make it run on gh runners for M1, disable failing tests for
          now, until we figure the problem with the failings tests out
          (rhysd)

closes: vim/vim#13943

https://github.com/vim/vim/commit/e93d5cadec6323d6be90f1ec29066441ffbc9477

Co-authored-by: rhysd &lt;lin90162@yahoo.co.jp&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  CI: testsuite not run on M1 Mac
Solution: Make it run on gh runners for M1, disable failing tests for
          now, until we figure the problem with the failings tests out
          (rhysd)

closes: vim/vim#13943

https://github.com/vim/vim/commit/e93d5cadec6323d6be90f1ec29066441ffbc9477

Co-authored-by: rhysd &lt;lin90162@yahoo.co.jp&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:9.0.1440: "rvim" can execute a shell through :diffpatch</title>
<updated>2026-10-05T01:39:56+00:00</updated>
<author>
<name>Jan Edmund Lazo</name>
<email>janedmundlazo@hotmail.com</email>
</author>
<published>2026-10-04T23:25:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=2d7ca85c172cc09e014988b72f8671afaf915b34'/>
<id>2d7ca85c172cc09e014988b72f8671afaf915b34</id>
<content type='text'>
Problem:    "rvim" can execute a shell through :diffpatch.
Solution:   Disallow the shell "patch" command.

----

"No_" prefix implies the test must not run instead of being skipped.
N/A but ported to minimize patch conflicts.

----

https://github.com/vim/vim/commit/23a971da506249fc8388f06cd5c011b83406ac5c

Co-authored-by: Bram Moolenaar &lt;Bram@vim.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:    "rvim" can execute a shell through :diffpatch.
Solution:   Disallow the shell "patch" command.

----

"No_" prefix implies the test must not run instead of being skipped.
N/A but ported to minimize patch conflicts.

----

https://github.com/vim/vim/commit/23a971da506249fc8388f06cd5c011b83406ac5c

Co-authored-by: Bram Moolenaar &lt;Bram@vim.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:9.2.1151: reading before the linemap array with inline:word diff</title>
<updated>2026-09-30T08:01:09+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2026-09-30T07:47:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=d6364a6e96da7d2bc748c12c9411ed561af8abda'/>
<id>d6364a6e96da7d2bc748c12c9411ed561af8abda</id>
<content type='text'>
Problem:  diff_refine_inline_word_highlight() checks the index of the
          line after the block, but uses the index of the last line of
          the block. A block with zero lines makes the index negative
          and causes heap-buffer underflow (Yuyao Jiang).
Solution: Check that the indexes are not negative.

related: vim/vim#21373

https://github.com/vim/vim/commit/f84ab19890c467fe2d1c001494e996178ece6e11

Co-authored-by: Christian Brabandt &lt;cb@256bit.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  diff_refine_inline_word_highlight() checks the index of the
          line after the block, but uses the index of the last line of
          the block. A block with zero lines makes the index negative
          and causes heap-buffer underflow (Yuyao Jiang).
Solution: Check that the indexes are not negative.

related: vim/vim#21373

https://github.com/vim/vim/commit/f84ab19890c467fe2d1c001494e996178ece6e11

Co-authored-by: Christian Brabandt &lt;cb@256bit.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:9.2.1099: diff mode redraws slowly with many changes (#41906)</title>
<updated>2026-09-14T01:38:12+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2026-09-14T01:38:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=e7e29d9b6d11919c35991e843ab1de8cc4e10328'/>
<id>e7e29d9b6d11919c35991e843ab1de8cc4e10328</id>
<content type='text'>
Problem:  Redrawing or folding a diff with many changes is slow because for
          every screen line the list of diff blocks is scanned from the
          start.
Solution: Remember the last examined diff block and resume the scan from
          there while the line number does not move backwards
          (Julien Voisin).

This change is similar to v9.2.1042 (5feaa6c6c201d4d05b833a7230d07da44bf2504b)
and v9.2.1036 (f1b454912996d6417acd0d738de0eb7b60902c56) quadratic
behaviour replaced with a linear one by keeping track of previous
ordered insertions.

diff_check_with_linestatus() and diff_infold() are called for every line
during redraw and fold updates, with a line number that usually
increases monotonically, yet each restarted its scan at tp_first_diff. A
cursor into the block list is now kept and cleared whenever a block is
freed, allocated or has its line numbers shifted, so the next call
continues where the previous one stopped.

Scanning the diff blocks during a scroll of a 20000-line diff drops from
4.12G to 1.27G instructions with ~3300 changes, and scales with the
number of changes.

Tests were added as the change is non-trivial.

closes: vim/vim#21256

https://github.com/vim/vim/commit/2ec2a612c7ac9315a17d70f6a2a5ea89ddaea854

Co-authored-by: Julien Voisin &lt;julien.voisin@dustri.org&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  Redrawing or folding a diff with many changes is slow because for
          every screen line the list of diff blocks is scanned from the
          start.
Solution: Remember the last examined diff block and resume the scan from
          there while the line number does not move backwards
          (Julien Voisin).

This change is similar to v9.2.1042 (5feaa6c6c201d4d05b833a7230d07da44bf2504b)
and v9.2.1036 (f1b454912996d6417acd0d738de0eb7b60902c56) quadratic
behaviour replaced with a linear one by keeping track of previous
ordered insertions.

diff_check_with_linestatus() and diff_infold() are called for every line
during redraw and fold updates, with a line number that usually
increases monotonically, yet each restarted its scan at tp_first_diff. A
cursor into the block list is now kept and cleared whenever a block is
freed, allocated or has its line numbers shifted, so the next call
continues where the previous one stopped.

Scanning the diff blocks during a scroll of a 20000-line diff drops from
4.12G to 1.27G instructions with ~3300 changes, and scales with the
number of changes.

Tests were added as the change is non-trivial.

closes: vim/vim#21256

https://github.com/vim/vim/commit/2ec2a612c7ac9315a17d70f6a2a5ea89ddaea854

Co-authored-by: Julien Voisin &lt;julien.voisin@dustri.org&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:9.2.0938: cursorbind: cursor in the other window is not updated after undo (#41282)</title>
<updated>2026-08-12T00:16:08+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2026-08-12T00:16:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=e9dc4da86e16cee3898133ae82abafc712e1a70b'/>
<id>e9dc4da86e16cee3898133ae82abafc712e1a70b</id>
<content type='text'>
Problem:  In diff mode with 'cursorbind' the cursor in the other window is
          not updated after an undo that changes which lines correspond.
Solution: Also check whether the text changed before skipping the update
          (Hirohito Higashi).

fixes:   vim/vim#20982
related: vim/vim#13219
related: vim/vim#13210
closes:  vim/vim#21004

https://github.com/vim/vim/commit/2045a20d4bf604c47828bfc22d2da25f0294bc01

Co-authored-by: Hirohito Higashi &lt;h.east.727@gmail.com&gt;
Co-authored-by: Claude Opus 5 (1M context) &lt;noreply@anthropic.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  In diff mode with 'cursorbind' the cursor in the other window is
          not updated after an undo that changes which lines correspond.
Solution: Also check whether the text changed before skipping the update
          (Hirohito Higashi).

fixes:   vim/vim#20982
related: vim/vim#13219
related: vim/vim#13210
closes:  vim/vim#21004

https://github.com/vim/vim/commit/2045a20d4bf604c47828bfc22d2da25f0294bc01

Co-authored-by: Hirohito Higashi &lt;h.east.727@gmail.com&gt;
Co-authored-by: Claude Opus 5 (1M context) &lt;noreply@anthropic.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:9.2.0914: diff: undo after :diffget into an empty buffer leaves a line behind (#41181)</title>
<updated>2026-08-05T23:17:17+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2026-08-05T23:17:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=a19dcb3108440806361cab4f81fb42f66971ca8e'/>
<id>a19dcb3108440806361cab4f81fb42f66971ca8e</id>
<content type='text'>
Problem:  After :diffget into an empty buffer, undo does not restore the
          empty buffer, the last line stays behind (Narendran
          Gopalakrishnan)
Solution: Include the empty line of the empty buffer in the undo
          information, it is deleted once the first line was obtained
          (Hirohito Higashi).

fixes:  vim/vim#20950
closes: vim/vim#20951

https://github.com/vim/vim/commit/c44f35ca1a4d8c0c78f327800fe2677c91c6cecb

Co-authored-by: Hirohito Higashi &lt;h.east.727@gmail.com&gt;
Co-authored-by: Claude Opus 5 (1M context) &lt;noreply@anthropic.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  After :diffget into an empty buffer, undo does not restore the
          empty buffer, the last line stays behind (Narendran
          Gopalakrishnan)
Solution: Include the empty line of the empty buffer in the undo
          information, it is deleted once the first line was obtained
          (Hirohito Higashi).

fixes:  vim/vim#20950
closes: vim/vim#20951

https://github.com/vim/vim/commit/c44f35ca1a4d8c0c78f327800fe2677c91c6cecb

Co-authored-by: Hirohito Higashi &lt;h.east.727@gmail.com&gt;
Co-authored-by: Claude Opus 5 (1M context) &lt;noreply@anthropic.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:9.1.2118: 'cursorline' missing after :diffput to empty buf (#37628)</title>
<updated>2026-01-30T12:09:33+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2026-01-30T12:09:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=47ce93ad6d71625df7298b69b4c6ed74977889ab'/>
<id>47ce93ad6d71625df7298b69b4c6ed74977889ab</id>
<content type='text'>
Problem:  'cursorline' and part of 'statusline' are missing after
          :diffput to an empty buffer.
Solution: Make sure the cursor doesn't go beyond the last line after
          :diffput (zeertzjq)

related: neovim/neovim#37621
closes:  vim/vim#19281

https://github.com/vim/vim/commit/ce1e562fdafa998e577d65a8b0a1b8bc1cbfcf4c</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  'cursorline' and part of 'statusline' are missing after
          :diffput to an empty buffer.
Solution: Make sure the cursor doesn't go beyond the last line after
          :diffput (zeertzjq)

related: neovim/neovim#37621
closes:  vim/vim#19281

https://github.com/vim/vim/commit/ce1e562fdafa998e577d65a8b0a1b8bc1cbfcf4c</pre>
</div>
</content>
</entry>
</feed>
