On Mi, 30 Apr 2014, Bram Moolenaar wrote: > Christian Brabandt wrote: > > > >> Hi Andrew! > > >> > > >> On Di, 29 Apr 2014, Andrew wrote: > > >> > > >> > Hi, Christian, > > >> > > > >> > > Can you please come up with a mapping that shows the wrong behaviour? > > >> > > > >> > I made this example: https://gist.github.com/AndrewRadev/11408444 > > >> > > > >> > It's supposed to paste some text and comment it in the process. It's > > >> > kind of silly, but a realistic enough example. If you `"_dd` anything > > >> > and then immediately perform a `gp`, nothing happens, since the > > >> > `v:register` variable is set to `_`. If you've managed ot fix the > > >> > issue, it should paste normally, from the default register. > > >> > > >> Thanks. I think this one fixes it: > > >> > > >> diff --git a/src/normal.c b/src/normal.c > > >> --- a/src/normal.c > > >> +++ b/src/normal.c > > >> @@ -1263,6 +1263,10 @@ getcount: > > >> normal_end: > > >> > > >> msg_nowait = FALSE; > > >> +#ifdef FEAT_EVAL > > >> + /* reset v:register */ > > >> + set_reg_var(0); > > >> +#endif > > >> > > >> /* Reset finish_op, in case it was set */ > > >> #ifdef CURSOR_SHAPE > > >> > > >> (I hope, it doesn't have any side effect). > > > > > > Well, if one first does "add and then "_dd, it's a bit unexpected that > > > v:register is then '"' and not '_' or 'a'. > > > > I am not sure I follow. Why would one expect v:register to hold the > > register name from the previous > > normal mode command? > > Because that's where the deleted text is. I know that the docs say that > the v:register variable holds the register name for the *current* normal > mode command, but it appears users writing a mapping also use it after > the normal mode command is done, to find the text that was yanked or > deleted. It would then be logical to use the black hole register if any > other delete must happen, without messing with registers. But then > v:register must also not be changed by the operation that uses the black > hole register.
But then, v:register shouldn't be cleared after e.g. cursor movement. Current behaviour is unreliably therefore. > I don't have a good example of where this is needed though. And perhaps > it's not too difficult to get the value of v:register before using the > black hole register, in which case the change to v:register is irrelevant. I don't know, if this would be useful. Best, 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 --- 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/d/optout.
