Hi Bram,
I found another problem that was introduced with 7.3.251.

vim -u NONE -U NONE -N -i NONE -c "call setline('.', 
['','foobar',''])|$"

Now the cursor is on the last line. Execute this command:
dv?bar

First, notice, that the buffer now looks like this:

-----
foo
-----

e.g. the first line was wrongly deleted. Now if you undo the previous 
command (press u), you see this:

----
foo
foobar

----

So the undo did not work correctly.

I did a hg bisect to find the patch, that introduced this regression and 
according to my testings, it was introduced with patch 7.3.251:

,----
| Änderung:        2957:fe6ad3fd8532
| Marke:           v7-3-251
| Nutzer:          Bram Moolenaar <[email protected]>
| Datum:           Fri Jul 15 17:51:34 2011 +0200
| Dateien:         src/normal.c src/ops.c src/version.c
| Beschreibung:
| updated for version 7.3.251
| Problem:    "gH<Del>" deletes the current line, except when it's the last
|             line.
| Solution:   Set the "include" flag to indicate the last line is to be
|             deleted.
`----

I am not sure if there are actually two problems (wrong undo and 
wrongly joined lines) or if this is just the same problem. However, the 
following patch fixes the wrongly joining lines for me and the wrong 
undo does not occur anymore:

diff --git a/src/ops.c b/src/ops.c
--- a/src/ops.c
+++ b/src/ops.c
@@ -1961,7 +1961,8 @@
                /* Special case: gH<Del> deletes the last line. */
                del_lines(1L, FALSE);
                curwin->w_cursor = curpos;      /* restore curwin->w_cursor */
-               if (curwin->w_cursor.lnum > 1)
+               if (curwin->w_cursor.lnum > 1 &&
+                       curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
                    --curwin->w_cursor.lnum;
            }
            else



regards,
Christian

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Raspunde prin e-mail lui