[patch] <C-Y> in virtual replace when line above is shorter

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[patch] <C-Y> in virtual replace when line above is shorter

Lech Lorens
Vim erroneously re-indents the current line if in virtual replace mode
<C-Y> or <C-E> is pressed while the line above or below respectively is
not long enough.

To reproduce the problem execute:

$ vim -u NONE -U NONE -i NONE -c 'set nocp noet ts=8 inde=0 indk=<:>' \
                              -c 'call feedkeys("2G$gR\<C-Y>\<C-Y>")' \
                              file.txt

where file.txt is:
#v+
abcdefghijklmnopqrstuvwxyz
                 1 2 3 4 5
#v-

The result should be:
#v+
abcdefghijklmnopqrstuvwxyz
                 1 2 3 4 z
#v-

but it is:
#v+
abcdefghijklmnopqrstuvwxyz
1 2 3 4 z        1 2 3 4 5
#v-


The problem is caused by 0 passed to in_cinkeys() as the typed key.
Function in_cinkeys() is then unable to recognise the "not found" return
value from get_special_key_code().

The attached patch fixes the problem.

--
Cheers,
Lech

--
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php

virtual-replace.patch (663 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [patch] <C-Y> in virtual replace when line above is shorter

Bram Moolenaar

Lech Lorens wrote:

> Vim erroneously re-indents the current line if in virtual replace mode
> <C-Y> or <C-E> is pressed while the line above or below respectively is
> not long enough.
>
> To reproduce the problem execute:
>
> $ vim -u NONE -U NONE -i NONE -c 'set nocp noet ts=8 inde=0 indk=<:>' \
>                               -c 'call feedkeys("2G$gR\<C-Y>\<C-Y>")' \
>                               file.txt
>
> where file.txt is:
> #v+
> abcdefghijklmnopqrstuvwxyz
>                  1 2 3 4 5
> #v-
>
> The result should be:
> #v+
> abcdefghijklmnopqrstuvwxyz
>                  1 2 3 4 z
> #v-
>
> but it is:
> #v+
> abcdefghijklmnopqrstuvwxyz
> 1 2 3 4 z        1 2 3 4 5
> #v-
>
>
> The problem is caused by 0 passed to in_cinkeys() as the typed key.
> Function in_cinkeys() is then unable to recognise the "not found" return
> value from get_special_key_code().
>
> The attached patch fixes the problem.

Thanks!

--
You have the right to remain silent. Anything you say will be
misquoted, then used against you.

 /// Bram Moolenaar -- [hidden email] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

--
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php