<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/test/unit, branch v0.5.1</title>
<subtitle>Neovim fork with Rahm's personal hacks.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/'/>
<entry>
<title>Revert "tests: unit: fix preprocess: pass -m32 for 32bit ABI (#11073)"</title>
<updated>2021-08-16T04:02:22+00:00</updated>
<author>
<name>James McCoy</name>
<email>jamessan@jamessan.com</email>
</author>
<published>2021-08-16T04:02:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=c417d573a317087886f0efab8eecf1713d71792e'/>
<id>c417d573a317087886f0efab8eecf1713d71792e</id>
<content type='text'>
This reverts commit ed11721b6bb36042ab065b5045c8eb01115b8902.

It broke multiple 32-bit builds and isn't actually required for building
in a true x86 32-bit environment.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit ed11721b6bb36042ab065b5045c8eb01115b8902.

It broke multiple 32-bit builds and isn't actually required for building
in a true x86 32-bit environment.
</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:8.1.0897: can modify a:000 when using a reference (#14902)</title>
<updated>2021-06-26T14:19:09+00:00</updated>
<author>
<name>Jan Edmund Lazo</name>
<email>jan.lazo@mail.utoronto.ca</email>
</author>
<published>2021-06-26T14:19:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=20dc3f1989dca8aa9b64970f3799e4f48ac080c8'/>
<id>20dc3f1989dca8aa9b64970f3799e4f48ac080c8</id>
<content type='text'>
Problem:    Can modify a:000 when using a reference.
Solution:   Make check for locked variable stricter. (Ozaki Kiichi,
            closes vim/vim#3930)
https://github.com/vim/vim/commit/05c00c038bc16e862e17f9e5c8d5a72af6cf7788</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:    Can modify a:000 when using a reference.
Solution:   Make check for locked variable stricter. (Ozaki Kiichi,
            closes vim/vim#3930)
https://github.com/vim/vim/commit/05c00c038bc16e862e17f9e5c8d5a72af6cf7788</pre>
</div>
</content>
</entry>
<entry>
<title>extmark: fix deletable nodes in MarkTree sometimes getting skipped</title>
<updated>2021-06-22T08:32:46+00:00</updated>
<author>
<name>snezhniylis</name>
<email>noreply@snezhniylis.dev</email>
</author>
<published>2021-06-04T10:38:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=43479f0ad6343ee04e0dd2a0251000cae1948bfd'/>
<id>43479f0ad6343ee04e0dd2a0251000cae1948bfd</id>
<content type='text'>
As per #14236, performing extmark cleanup in a certain namespace does
not guarantee removing all the extmarks inside given namespace.
The issue resides within the tree node removal method and results in
a couple of rare edge cases.

To demonstrate what causes this bug, I'll give an example covering one
of the edge cases.

=== AN EXAMPLE ===

   (A)         (B)         (C)         (D)         (E)
---------   ---------   ---------   ---------   ---------
  &lt;0, 1&gt;      &lt;0, 1&gt;      &lt;0, 1&gt;      &lt;0, 1&gt;      &lt;0, 1&gt;
  &lt;0, 2&gt;      &lt;0, 2&gt;      &lt;0, 2&gt;      &lt;0, 2&gt;      &lt;0, 2&gt;
  &lt;0, 3&gt;      &lt;0, 3&gt;      &lt;0, 3&gt;      &lt;0, 3&gt;      &lt;0, 3&gt;
  &lt;0, 4&gt;      &lt;0, 4&gt;      &lt;0, 4&gt;      &lt;0, 4&gt;      &lt;0, 4&gt;
  &lt;0, 5&gt;      &lt;0, 5&gt;      &lt;0, 5&gt;      &lt;0, 5&gt;      &lt;0, 5&gt;
  &lt;0, 6&gt;      &lt;0, 6&gt;      &lt;0, 6&gt;      &lt;0, 6&gt;      &lt;0, 6&gt;
  &lt;0, 7&gt;      &lt;0, 7&gt;      &lt;0, 7&gt;      &lt;0, 7&gt;      &lt;0, 7&gt;
  &lt;0, 8&gt;      &lt;0, 8&gt;      &lt;0, 8&gt;      &lt;0, 8&gt;      &lt;0, 8&gt;
  &lt;0, 9&gt;      &lt;0, 9&gt; *           *    &lt;0, 9&gt;  *   &lt;0, 9&gt;
[0, 10] *   [0, 10]     &lt;0, 9&gt;        [0, 11]     [0, 11]
  [0, 11]     [0, 11]     [0, 11]     [0, 12]     [0, 12]  *
  [0, 12]     [0, 12]     [0, 12]     [0, 13]     [0, 13]
  [0, 13]     [0, 13]     [0, 13]     [0, 14]     [0, 14]
  [0, 14]     [0, 14]     [0, 14]     [0, 15]     [0, 15]
  [0, 15]     [0, 15]     [0, 15]     [0, 16]     [0, 16]
  [0, 16]     [0, 16]     [0, 16]     [0, 17]     [0, 17]
  [0, 17]     [0, 17]     [0, 17]     [0, 18]     [0, 18]
  [0, 18]     [0, 18]     [0, 18]     [0, 19]     [0, 19]
  [0, 19]     [0, 19]     [0, 19]   [0, 20]     [0, 20]
[0, 20]     [0, 20]     [0, 20]

DIAGRAM EXPLANATION

* Every column is a state of the marktree at a certain stage.

* To make it simple, I don't draw the whole tree. What you see are
   2 leftmost parent nodes ([0, 10], [0, 20]) and their children placed
   in order `MarkTreeIter` would iterate through. From top to bottom.

* Numbers on this diagram represent extmark coordinates. Relative
   positioning and actual mark IDs used by the marktree are avoided
   for simplicity.

* 2 types of brackets around coordinates represent 2 different
   extmark namespaces (`ns_id`s).

* '*' shows iterator position.

ACTUAL EXPLANATION

Let's assume, we have two sets of extmarks from 2 different plugins:
  * Plugin1: &lt;0, 1-9&gt;
  * Plugin2: [0, 10-20]

1. Plugin2 calls
    `vim.api.nvim_buf_clear_namespace(buf_handle, ns_id, 0, -1)`
    to clear all its extmarks which results in `extmark_clear` call.

2. The iteration process goes on ignoring extmarks with irrelevant
    `ns_id` from Plugin1, until it reaches [0, 10], entering state (A).

3. At the end of cleaning up process, `marktree_del_itr` gets called.
    This function is supposed to remove given node and, if necessary,
    restructure the tree. Also, move the iterator to the next node.
    The bug occurs in this function.

4. The iterator goes backwards to the node's last child, to put it
    in the place of its deleted parent later. (B)

5. The parent node is deleted and replaced with its child node. (C)

6. Since now this node has 8 children, which is less than
    `MT_BRANCH_FACTOR - 1`, it get's merged with the next node. (D)

7. Finally, since at (B) the iterator went backward, it goes forward
    twice, skipping [0, 11] node, causing this extmark to persist,
    causing the bug. (E)

ANALYSIS AND SOLUTION

The algorithm works perfectly when the parent node gets replaced by
its child, but no merging occurs. I.e. the exact same diagram,
but without the (D) stage. If not for (D), it would iterate to &lt;0, 9&gt;
and then to [0, 11]. So, iterating twice makes sense. The actual problem
is in (C) stage, because the iterator index isn't adjusted and still
pointing to no longer existent node. So my solution is to adjust
iterator index after removing the child node.

More info: https://github.com/neovim/neovim/pull/14719
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As per #14236, performing extmark cleanup in a certain namespace does
not guarantee removing all the extmarks inside given namespace.
The issue resides within the tree node removal method and results in
a couple of rare edge cases.

To demonstrate what causes this bug, I'll give an example covering one
of the edge cases.

=== AN EXAMPLE ===

   (A)         (B)         (C)         (D)         (E)
---------   ---------   ---------   ---------   ---------
  &lt;0, 1&gt;      &lt;0, 1&gt;      &lt;0, 1&gt;      &lt;0, 1&gt;      &lt;0, 1&gt;
  &lt;0, 2&gt;      &lt;0, 2&gt;      &lt;0, 2&gt;      &lt;0, 2&gt;      &lt;0, 2&gt;
  &lt;0, 3&gt;      &lt;0, 3&gt;      &lt;0, 3&gt;      &lt;0, 3&gt;      &lt;0, 3&gt;
  &lt;0, 4&gt;      &lt;0, 4&gt;      &lt;0, 4&gt;      &lt;0, 4&gt;      &lt;0, 4&gt;
  &lt;0, 5&gt;      &lt;0, 5&gt;      &lt;0, 5&gt;      &lt;0, 5&gt;      &lt;0, 5&gt;
  &lt;0, 6&gt;      &lt;0, 6&gt;      &lt;0, 6&gt;      &lt;0, 6&gt;      &lt;0, 6&gt;
  &lt;0, 7&gt;      &lt;0, 7&gt;      &lt;0, 7&gt;      &lt;0, 7&gt;      &lt;0, 7&gt;
  &lt;0, 8&gt;      &lt;0, 8&gt;      &lt;0, 8&gt;      &lt;0, 8&gt;      &lt;0, 8&gt;
  &lt;0, 9&gt;      &lt;0, 9&gt; *           *    &lt;0, 9&gt;  *   &lt;0, 9&gt;
[0, 10] *   [0, 10]     &lt;0, 9&gt;        [0, 11]     [0, 11]
  [0, 11]     [0, 11]     [0, 11]     [0, 12]     [0, 12]  *
  [0, 12]     [0, 12]     [0, 12]     [0, 13]     [0, 13]
  [0, 13]     [0, 13]     [0, 13]     [0, 14]     [0, 14]
  [0, 14]     [0, 14]     [0, 14]     [0, 15]     [0, 15]
  [0, 15]     [0, 15]     [0, 15]     [0, 16]     [0, 16]
  [0, 16]     [0, 16]     [0, 16]     [0, 17]     [0, 17]
  [0, 17]     [0, 17]     [0, 17]     [0, 18]     [0, 18]
  [0, 18]     [0, 18]     [0, 18]     [0, 19]     [0, 19]
  [0, 19]     [0, 19]     [0, 19]   [0, 20]     [0, 20]
[0, 20]     [0, 20]     [0, 20]

DIAGRAM EXPLANATION

* Every column is a state of the marktree at a certain stage.

* To make it simple, I don't draw the whole tree. What you see are
   2 leftmost parent nodes ([0, 10], [0, 20]) and their children placed
   in order `MarkTreeIter` would iterate through. From top to bottom.

* Numbers on this diagram represent extmark coordinates. Relative
   positioning and actual mark IDs used by the marktree are avoided
   for simplicity.

* 2 types of brackets around coordinates represent 2 different
   extmark namespaces (`ns_id`s).

* '*' shows iterator position.

ACTUAL EXPLANATION

Let's assume, we have two sets of extmarks from 2 different plugins:
  * Plugin1: &lt;0, 1-9&gt;
  * Plugin2: [0, 10-20]

1. Plugin2 calls
    `vim.api.nvim_buf_clear_namespace(buf_handle, ns_id, 0, -1)`
    to clear all its extmarks which results in `extmark_clear` call.

2. The iteration process goes on ignoring extmarks with irrelevant
    `ns_id` from Plugin1, until it reaches [0, 10], entering state (A).

3. At the end of cleaning up process, `marktree_del_itr` gets called.
    This function is supposed to remove given node and, if necessary,
    restructure the tree. Also, move the iterator to the next node.
    The bug occurs in this function.

4. The iterator goes backwards to the node's last child, to put it
    in the place of its deleted parent later. (B)

5. The parent node is deleted and replaced with its child node. (C)

6. Since now this node has 8 children, which is less than
    `MT_BRANCH_FACTOR - 1`, it get's merged with the next node. (D)

7. Finally, since at (B) the iterator went backward, it goes forward
    twice, skipping [0, 11] node, causing this extmark to persist,
    causing the bug. (E)

ANALYSIS AND SOLUTION

The algorithm works perfectly when the parent node gets replaced by
its child, but no merging occurs. I.e. the exact same diagram,
but without the (D) stage. If not for (D), it would iterate to &lt;0, 9&gt;
and then to [0, 11]. So, iterating twice makes sense. The actual problem
is in (C) stage, because the iterator index isn't adjusted and still
pointing to no longer existent node. So my solution is to adjust
iterator index after removing the child node.

More info: https://github.com/neovim/neovim/pull/14719
</pre>
</div>
</content>
</entry>
<entry>
<title>path: add helper for checking a file extension</title>
<updated>2020-12-01T09:50:38+00:00</updated>
<author>
<name>dm1try</name>
<email>me@dmitry.it</email>
</author>
<published>2020-05-03T20:46:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=13b88573005d84cc0ebcd7e7bf4dd488673919d3'/>
<id>13b88573005d84cc0ebcd7e7bf4dd488673919d3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>test,unit: Change test according to change of bg color response processing</title>
<updated>2020-11-20T14:26:17+00:00</updated>
<author>
<name>erw7</name>
<email>erw7.github@gmail.com</email>
</author>
<published>2020-03-12T03:16:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=6c1e1fe772f99ab655402e92f14b782867b35eec'/>
<id>6c1e1fe772f99ab655402e92f14b782867b35eec</id>
<content type='text'>
Adjust the test for handle_background_color() according to
bd0275182b1c1b14c43dc4fc7e9f9da05071e56c.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adjust the test for handle_background_color() according to
bd0275182b1c1b14c43dc4fc7e9f9da05071e56c.
</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:8.2.1909: number of status line items is limited to 80</title>
<updated>2020-10-31T23:54:06+00:00</updated>
<author>
<name>Rom Grk</name>
<email>romgrk.cc@gmail.com</email>
</author>
<published>2020-10-26T22:48:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=10bf69a43e8f58b0d49bc6253e4e2758060670a8'/>
<id>10bf69a43e8f58b0d49bc6253e4e2758060670a8</id>
<content type='text'>
Problem:    Number of status line items is limited to 80.
Solution:   Dynamically allocate the arrays. (Rom Grk, closes vim/vim#7181)
https://github.com/vim/vim/commit/8133cc6bf454eb90bb0868f7cf806fce5c0c9fe6

The members of stl_item_T have not been prefixed with stl_ contrary to
the vim patch because the amount of stl_ prefixes on single lines of
code in that region was hurtful to readability.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:    Number of status line items is limited to 80.
Solution:   Dynamically allocate the arrays. (Rom Grk, closes vim/vim#7181)
https://github.com/vim/vim/commit/8133cc6bf454eb90bb0868f7cf806fce5c0c9fe6

The members of stl_item_T have not been prefixed with stl_ contrary to
the vim patch because the amount of stl_ prefixes on single lines of
code in that region was hurtful to readability.
</pre>
</div>
</content>
</entry>
<entry>
<title>win: avoid duplicate separators in $PATH #12869</title>
<updated>2020-09-09T03:47:22+00:00</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2020-09-09T03:47:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=59712f6dbecfd9a7ccd021115170d1c9313b0969'/>
<id>59712f6dbecfd9a7ccd021115170d1c9313b0969</id>
<content type='text'>
Seems like redundant env var separators (";" on Windows) in $PATH can
cause weird behavior. From #7377:

&gt; After some time, system(['win32yank', '-o']) and system('win32yank -o')
&gt; start returning different results: specifically first returns an
&gt; empty string.
&gt;
&gt; 1. $PATH weirdly contains double semicolon followed by path to the
&gt;    “installation directory” (unpacked directory from archive).
&gt; 2. If I run `let $PATH=substitute($PATH, ';;', ';', 'g')` the problem is fixed.

close #7377
ref 224f99b85d311ebd31451db13b66e4a3c7e51938</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Seems like redundant env var separators (";" on Windows) in $PATH can
cause weird behavior. From #7377:

&gt; After some time, system(['win32yank', '-o']) and system('win32yank -o')
&gt; start returning different results: specifically first returns an
&gt; empty string.
&gt;
&gt; 1. $PATH weirdly contains double semicolon followed by path to the
&gt;    “installation directory” (unpacked directory from archive).
&gt; 2. If I run `let $PATH=substitute($PATH, ';;', ';', 'g')` the problem is fixed.

close #7377
ref 224f99b85d311ebd31451db13b66e4a3c7e51938</pre>
</div>
</content>
</entry>
<entry>
<title>lua: Use #var instead of deprecated table.getn(var)</title>
<updated>2020-07-31T05:33:42+00:00</updated>
<author>
<name>James McCoy</name>
<email>jamessan@jamessan.com</email>
</author>
<published>2020-07-31T05:33:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=55a885c17930e0f5833e01b35e559886166c9075'/>
<id>55a885c17930e0f5833e01b35e559886166c9075</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:8.2.0539: comparing two NULL list fails</title>
<updated>2020-07-19T15:40:34+00:00</updated>
<author>
<name>Jan Edmund Lazo</name>
<email>jan.lazo@mail.utoronto.ca</email>
</author>
<published>2020-07-12T23:04:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=e16f2cbd123b5a7bd75b5810ec7641a93c99c009'/>
<id>e16f2cbd123b5a7bd75b5810ec7641a93c99c009</id>
<content type='text'>
Problem:    Comparing two NULL list fails.
Solution:   Change the order of comparing two lists.
https://github.com/vim/vim/commit/7b293c730b07d1586688e622b8d9cbbb4a52379b

N/A patches for version.c:

vim-patch:8.2.1187: terminal2 test sometimes hangs in the GUI on Travis

Problem:    Terminal2 test sometimes hangs in the GUI on Travis.
Solution:   Disable Test_zz2_terminal_guioptions_bang() for now.
https://github.com/vim/vim/commit/c85156bb897085d7f5a8e4e180287f87bf19b948

vim-patch:8.2.1188: memory leak with invalid json input

Problem:    Memory leak with invalid json input.
Solution:   Free all keys at the end. (Dominique Pellé, closes vim/vim#6443,
            closes vim/vim#6442)
https://github.com/vim/vim/commit/6d3a7213f58da834b0fc869d05f87e86010c66cf

vim-patch:8.2.1196: build failure with normal features

Problem:    Build failure with normal features.
Solution:   Add #ifdef.
https://github.com/vim/vim/commit/83e7450053399942e1c9efa802c568b51d948541

vim-patch:8.2.1198: terminal2 test sometimes hangs in the GUI on Travis

Problem:    Terminal2 test sometimes hangs in the GUI on Travis.
Solution:   Move test function to terminal3 to see if the problem moves too.
https://github.com/vim/vim/commit/a4b442614c5ca4ebf32acf5cf0b7b718496f1c94
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:    Comparing two NULL list fails.
Solution:   Change the order of comparing two lists.
https://github.com/vim/vim/commit/7b293c730b07d1586688e622b8d9cbbb4a52379b

N/A patches for version.c:

vim-patch:8.2.1187: terminal2 test sometimes hangs in the GUI on Travis

Problem:    Terminal2 test sometimes hangs in the GUI on Travis.
Solution:   Disable Test_zz2_terminal_guioptions_bang() for now.
https://github.com/vim/vim/commit/c85156bb897085d7f5a8e4e180287f87bf19b948

vim-patch:8.2.1188: memory leak with invalid json input

Problem:    Memory leak with invalid json input.
Solution:   Free all keys at the end. (Dominique Pellé, closes vim/vim#6443,
            closes vim/vim#6442)
https://github.com/vim/vim/commit/6d3a7213f58da834b0fc869d05f87e86010c66cf

vim-patch:8.2.1196: build failure with normal features

Problem:    Build failure with normal features.
Solution:   Add #ifdef.
https://github.com/vim/vim/commit/83e7450053399942e1c9efa802c568b51d948541

vim-patch:8.2.1198: terminal2 test sometimes hangs in the GUI on Travis

Problem:    Terminal2 test sometimes hangs in the GUI on Travis.
Solution:   Move test function to terminal3 to see if the problem moves too.
https://github.com/vim/vim/commit/a4b442614c5ca4ebf32acf5cf0b7b718496f1c94
</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:8.0.1554: custom plugins loaded with --clean</title>
<updated>2020-06-18T22:01:41+00:00</updated>
<author>
<name>Jan Edmund Lazo</name>
<email>jan.lazo@mail.utoronto.ca</email>
</author>
<published>2020-06-07T17:13:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=a5bde56b371e199e36840ceb4a27e0440cbad60d'/>
<id>a5bde56b371e199e36840ceb4a27e0440cbad60d</id>
<content type='text'>
Problem:    Custom plugins loaded with --clean.
Solution:   Do not include the home directory in 'runtimepath'.
https://github.com/vim/vim/commit/072687032683b1994d25a114893d9a6f8bc36612
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:    Custom plugins loaded with --clean.
Solution:   Do not include the home directory in 'runtimepath'.
https://github.com/vim/vim/commit/072687032683b1994d25a114893d9a6f8bc36612
</pre>
</div>
</content>
</entry>
</feed>
