<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/test/functional/normal, branch v0.2.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>fold: foldMoveRange(): fix :move bug #6534</title>
<updated>2017-04-17T02:45:55+00:00</updated>
<author>
<name>Matthew Malcomson</name>
<email>hardenedapple@gmail.com</email>
</author>
<published>2017-04-16T19:15:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=263849b2dd4dc98bbe0870f5654c77809caeb965'/>
<id>263849b2dd4dc98bbe0870f5654c77809caeb965</id>
<content type='text'>
Closes #6540

In #6221 there was a mistake in calculating which folds need to be
re-ordered. When there are no folds after those that have been adjusted,
then `move_end` remains 0. This results in reverse_fold_order()
swapping folds that have been adjusted with uninitialised folds in the
remainder of the grow array.

Add a check in foldMoveRange() to account for this case.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Closes #6540

In #6221 there was a mistake in calculating which folds need to be
re-ordered. When there are no folds after those that have been adjusted,
then `move_end` remains 0. This results in reverse_fold_order()
swapping folds that have been adjusted with uninitialised folds in the
remainder of the grow array.

Add a check in foldMoveRange() to account for this case.
</pre>
</div>
</content>
</entry>
<entry>
<title>ci: install Turkish locale and make locale tests more reliable</title>
<updated>2017-04-11T08:24:19+00:00</updated>
<author>
<name>Björn Linse</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2017-04-10T17:48:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=69775f603f0b21cb28adec99daaaa9356581ddd0'/>
<id>69775f603f0b21cb28adec99daaaa9356581ddd0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>test: helpers.execute() =&gt; helpers.feed_command()</title>
<updated>2017-04-11T00:37:39+00:00</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2017-04-10T19:54:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=119f0ca85463b7d9fb7dffe47d0fcee2c9604c53'/>
<id>119f0ca85463b7d9fb7dffe47d0fcee2c9604c53</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>test: add tests for gu/gU behavior in Turkish locale</title>
<updated>2017-04-10T10:02:25+00:00</updated>
<author>
<name>Björn Linse</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2017-04-08T15:02:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=a3a06d02489a7a43cdd7909c92c79ef7971c8663'/>
<id>a3a06d02489a7a43cdd7909c92c79ef7971c8663</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>functests: Replace execute with either command or feed_command</title>
<updated>2017-04-09T00:24:08+00:00</updated>
<author>
<name>ZyX</name>
<email>kp-pav@yandex.ru</email>
</author>
<published>2017-04-08T21:12:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=65fb622000af8e3dbb65480e1581758ecf4ba3e2'/>
<id>65fb622000af8e3dbb65480e1581758ecf4ba3e2</id>
<content type='text'>
Hope this will make people using feed_command less likely: this hides bugs.
Already found at least two:

1. msgpackparse() will show internal error: hash_add() in case of duplicate
   keys, though it will still work correctly. Currently silenced.
2. ttimeoutlen was spelled incorrectly, resulting in option not being set when
   expected. Test was still functioning somehow though. Currently fixed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Hope this will make people using feed_command less likely: this hides bugs.
Already found at least two:

1. msgpackparse() will show internal error: hash_add() in case of duplicate
   keys, though it will still work correctly. Currently silenced.
2. ttimeoutlen was spelled incorrectly, resulting in option not being set when
   expected. Test was still functioning somehow though. Currently fixed.
</pre>
</div>
</content>
</entry>
<entry>
<title>fold.c: more edge-cases when updating (#6207)</title>
<updated>2017-03-30T23:21:26+00:00</updated>
<author>
<name>Matthew Malcomson</name>
<email>hardenedapple@gmail.com</email>
</author>
<published>2017-03-30T23:21:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=3a9dd13f9e6471215a738cf22bf180e60a2e0bcd'/>
<id>3a9dd13f9e6471215a738cf22bf180e60a2e0bcd</id>
<content type='text'>
When foldUpdateIEMSRecurse() re-uses an existing fold, it misses the
case where the existing fold spans from before startlnum to after
firstlnum, the new fold does not span this range, and there is no
"forced start" of a fold. We add a case for this in.

Ensure that if there was no forced break in folds, we merge folds that
now touch each other.

Include testing for a tricky foldmethod=expr case that has never been a
bug. This case works at the moment because of some effects that are not
obvious when reading the code.
A test for this could be useful to ensure a regression doesn't happen.

vim-patch:8.0.0408</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When foldUpdateIEMSRecurse() re-uses an existing fold, it misses the
case where the existing fold spans from before startlnum to after
firstlnum, the new fold does not span this range, and there is no
"forced start" of a fold. We add a case for this in.

Ensure that if there was no forced break in folds, we merge folds that
now touch each other.

Include testing for a tricky foldmethod=expr case that has never been a
bug. This case works at the moment because of some effects that are not
obvious when reading the code.
A test for this could be useful to ensure a regression doesn't happen.

vim-patch:8.0.0408</pre>
</div>
</content>
</entry>
<entry>
<title>Robustly handle folds during a :move command</title>
<updated>2017-03-23T14:37:47+00:00</updated>
<author>
<name>Matthew Malcomson</name>
<email>hardenedapple@gmail.com</email>
</author>
<published>2017-02-27T09:46:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=b2b88423aa0087e5d4aaa122e63dffb97f85222f'/>
<id>b2b88423aa0087e5d4aaa122e63dffb97f85222f</id>
<content type='text'>
In order to re-order marks according to the :move command, do_move()
uses mark_adjust() in a non-standard manner. The non-standard action is
that it moves some marks *past* other marks. This doesn't matter for
marks, but mark_adjust() calls foldMarkAdjust() which simply changes
fold starts and lengths and doesn't have enough information to know that
other folds have to be checked and reordered.

The array of folds for each window are assumed to be in order of
increasing line number, and if this gets broken some folds can get
"lost".

There has been a previous patch to avoid this problem by deleting and
recalculating all folds in the window, but this comes at the cost of
closing all folds when executing :move, and doesn't cover the case of
manual folds.
This patch adds a new function foldMoveRange() specifically for the
:move command that handles reordering folds as well as simply moving
them. Additionally, we allow calling mark_adjust_nofold() that does the
same as mark_adjust() but doesn't affect any fold array.

Calling mark_adjust_nofold() should be done in the same manner as
calling mark_adjust(), but according changes to the fold arrays must be
done seperately by the calling function.

vim-patch:8.0.0457
vim-patch:8.0.0459
vim-patch:8.0.0461
vim-patch:8.0.0465
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In order to re-order marks according to the :move command, do_move()
uses mark_adjust() in a non-standard manner. The non-standard action is
that it moves some marks *past* other marks. This doesn't matter for
marks, but mark_adjust() calls foldMarkAdjust() which simply changes
fold starts and lengths and doesn't have enough information to know that
other folds have to be checked and reordered.

The array of folds for each window are assumed to be in order of
increasing line number, and if this gets broken some folds can get
"lost".

There has been a previous patch to avoid this problem by deleting and
recalculating all folds in the window, but this comes at the cost of
closing all folds when executing :move, and doesn't cover the case of
manual folds.
This patch adds a new function foldMoveRange() specifically for the
:move command that handles reordering folds as well as simply moving
them. Additionally, we allow calling mark_adjust_nofold() that does the
same as mark_adjust() but doesn't affect any fold array.

Calling mark_adjust_nofold() should be done in the same manner as
calling mark_adjust(), but according changes to the fold arrays must be
done seperately by the calling function.

vim-patch:8.0.0457
vim-patch:8.0.0459
vim-patch:8.0.0461
vim-patch:8.0.0465
</pre>
</div>
</content>
</entry>
<entry>
<title>test/put_spec: 2x speedup (#6294)</title>
<updated>2017-03-18T00:59:51+00:00</updated>
<author>
<name>Matthew Malcomson</name>
<email>hardenedapple@gmail.com</email>
</author>
<published>2017-03-18T00:59:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=9abef7ded95995e3546b8d273ab4ad996ce3ed50'/>
<id>9abef7ded95995e3546b8d273ab4ad996ce3ed50</id>
<content type='text'>
Instead of helpers.clear() between each test, use execute('enew!')
and ensure the state that matters is reset between each test.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of helpers.clear() between each test, use execute('enew!')
and ensure the state that matters is reset between each test.</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:8.0.0388</title>
<updated>2017-03-01T23:18:00+00:00</updated>
<author>
<name>Matthew Malcomson</name>
<email>hardenedapple@gmail.com</email>
</author>
<published>2017-02-28T15:19:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=b1731fe1b5d7a9b89acb6c2292b1e3e8f9f33544'/>
<id>b1731fe1b5d7a9b89acb6c2292b1e3e8f9f33544</id>
<content type='text'>
Fix a problem when filtering manually folded lines

When foldMarkAdjustRecurse() is called to adjust folds that start inside
the range of lines that are being moved and end outside that range, it
calculates `amount_after` for its recursive call incorrectly.
The calculation assumes that folds inside the changed range are being
deleted, but this is not always the case.

This means nested folds that start after the changed range of lines are
shifted an incorrect amount.

We fix this by calculating the `amount_after` differently if the folds
inside the changed range are not being deleted.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix a problem when filtering manually folded lines

When foldMarkAdjustRecurse() is called to adjust folds that start inside
the range of lines that are being moved and end outside that range, it
calculates `amount_after` for its recursive call incorrectly.
The calculation assumes that folds inside the changed range are being
deleted, but this is not always the case.

This means nested folds that start after the changed range of lines are
shifted an incorrect amount.

We fix this by calculating the `amount_after` differently if the folds
inside the changed range are not being deleted.
</pre>
</div>
</content>
</entry>
<entry>
<title>undo: :earlier, g-: Set b_u_seq_cur correctly. (#6016)</title>
<updated>2017-01-31T04:46:55+00:00</updated>
<author>
<name>Matthew Malcomson</name>
<email>hardenedapple@gmail.com</email>
</author>
<published>2017-01-26T10:41:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=d25649fa012013b9ee5b048c8272db4dd50191d6'/>
<id>d25649fa012013b9ee5b048c8272db4dd50191d6</id>
<content type='text'>
Previously alternate branches were not accounted for properly, with this
change g- after an undo to a branch point works.

The current sequence number b_u_seq_cur is used in undo_time(), in
u_doit() this was calculated by subtracting one from the curhead
sequence number.

The curhead header entry represents the change that was just undone, so
the sequence number we want is that of the change we have moved to. This
is the sequence number of the undo head that is the uh_next element of
this curhead. That sequence number is not always one less than the
curhead sequence number -- there may have been an alternate branch at
this point.

Instead of subtracting one, we now directly find the sequence number of
curhead-&gt;uh_next.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously alternate branches were not accounted for properly, with this
change g- after an undo to a branch point works.

The current sequence number b_u_seq_cur is used in undo_time(), in
u_doit() this was calculated by subtracting one from the curhead
sequence number.

The curhead header entry represents the change that was just undone, so
the sequence number we want is that of the change we have moved to. This
is the sequence number of the undo head that is the uh_next element of
this curhead. That sequence number is not always one less than the
curhead sequence number -- there may have been an alternate branch at
this point.

Instead of subtracting one, we now directly find the sequence number of
curhead-&gt;uh_next.
</pre>
</div>
</content>
</entry>
</feed>
