Hi Bram,
I noticed a strange behaviour today when using the d command.
I was deleting several lines with a motion that selected the last non
blank on a line. Surprisingly, this deleted the whole line. After
searching the help, I found it explained by this paragraph in the help:
An exception for the d{motion} command: If the motion is not
linewise, the start and end of the motion are not in the same line,
and there are only blanks before the start and after the end of the
motion, the delete becomes linewise. This means that the delete
also removes the line of blanks that you might expect to remain.
So I tried the suggestion, made at :h o_v
When used after an operator, before the motion command: Force
the operator to work characterwise, also when the motion is
linewise. If the motion was linewise, it will become
|exclusive|.
If the motion already was characterwise, toggle
inclusive/exclusive. This can be used to make an exclusive
motion inclusive and an inclusive motion exclusive.
But surprisingly did not work. So I propose the following fix:
diff --git a/src/ops.c b/src/ops.c
--- a/src/ops.c
+++ b/src/ops.c
@@ -1648,6 +1648,7 @@
&& !oap->block_mode
#endif
&& oap->line_count > 1
+ && !oap->motion_force
&& oap->op_type == OP_DELETE)
{
ptr = ml_get(oap->end.lnum) + oap->end.col;
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