On Wednesday, January 29, 2014 9:27:32 PM UTC+1, Christian Brabandt wrote:
> On Mi, 29 Jan 2014, Christian Wellenbrock wrote:
> 
> 
> 
> > On Wednesday, January 29, 2014 3:51:25 PM UTC+1, glts wrote:
> 
> > > On Wed, Jan 29, 2014 at 1:09 PM, Christian Wellenbrock
> 
> > > 
> 
> > >  wrote:
> 
> > > 
> 
> 
> 
> > > > Here is a small example to illustrate the issue: echo 123456789 |
> 
> > > > vim - +":omap a0 :<C-U>execute 'norm 0v'.v:count1.'lh'<CR>" This
> 
> > > > invocation puts the string "123456789" into a new buffer and
> 
> > > > creates an operator-pending mapping `a0` that selects the first
> 
> > > > characters of the current line for the pending operator.
> 
> > > > 
> 
> > > > Executing `3da0` deletes the first three characters of the line,
> 
> > > > leaving us with the following buffer contents:
> 
> > > >     456789
> 
> > > > 
> 
> > > > Repeating that last command with `.` should now delete the first
> 
> > > > three characters again, leading to this:
> 
> > > >     expected: 789
> 
> > > > 
> 
> > > > Instead the count seems to be reset to 1, leading to this:
> 
> > > >     obtained: 56789
> 
> > > 
> 
> > > > For comparison: Repeating `3x` with `.` deletes another three
> 
> > > > characters, instead of just one. This seems inconsistent.
> 
> > > 
> 
> > > 
> 
> > > 
> 
> > > Sounds familiar, I think this was reported here before. Here's a
> 
> > > link:
> 
> > > https://groups.google.com/d/msg/vim_dev/ghN72ZqmMQU/fveKSIdzxhQJ
> 
> > > Though to be honest I don't remember the details.
> 
> 
> 
> I think, this happens, because by the time, the redo is executed, the
> 
> v:count variable is reset to its initial value. Here is a simple patch,
> 
> that initializes the v:count variables when the ':' command is used, but
> 
> it might have unwanted consequences:
> 
> 
> 
> diff --git a/src/normal.c b/src/normal.c
> 
> --- a/src/normal.c
> 
> +++ b/src/normal.c
> 
> @@ -5458,6 +5458,9 @@
> 
>  
> 
>         old_p_im = p_im;
> 
>  
> 
> +#ifdef FEAT_EVAL
> 
> +       set_vcount(cap->count0, cap->count1, TRUE);
> 
> +#endif
> 
>         /* get a command line and execute it */
> 
>         cmd_result = do_cmdline(NULL, getexline, NULL,
> 
>                             cap->oap->op_type != OP_NOP ? DOCMD_KEEPLINE : 0);
> 
> 
> 
> 
> 
> 
> 
> Best,
> 
> Christian
> 
> -- 
> 
> Women can keep a secret just as well as men, but it takes more of them
> 
> to do it.

Works beautifully! Thank you!

Can anyone imagine a downside on setting the `vcount` at that point? Or is 
there hope we can get this patch integrated soon? 

-- 
-- 
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

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Raspunde prin e-mail lui