aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ops.c
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2018-08-23 13:13:05 -0400
committerJustin M. Keyes <justinkz@gmail.com>2018-08-23 19:13:05 +0200
commite89df8a54de351f829da8cc807f8611182f60651 (patch)
tree6c72de74e97552df11ed87ff9e20012cab2f75d8 /src/nvim/ops.c
parenta5d00527a1f8159f6efae3b75c502ec85d9f2158 (diff)
downloadrneovim-e89df8a54de351f829da8cc807f8611182f60651.tar.gz
rneovim-e89df8a54de351f829da8cc807f8611182f60651.tar.bz2
rneovim-e89df8a54de351f829da8cc807f8611182f60651.zip
vim-patch:8.0.1682: auto indenting breaks inserting a block (#8892)
Problem: Auto indenting breaks inserting a block. Solution: Do not check for cursor movement if indent was changed. (Christian Brabandt, closes vim/vim#2778) https://github.com/vim/vim/commit/8c87a2b1fec85e4aac33f71586ac1514536fc66b
Diffstat (limited to 'src/nvim/ops.c')
-rw-r--r--src/nvim/ops.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/nvim/ops.c b/src/nvim/ops.c
index 9e837c1e12..9ffd934d44 100644
--- a/src/nvim/ops.c
+++ b/src/nvim/ops.c
@@ -2104,6 +2104,7 @@ void op_insert(oparg_T *oap, long count1)
if (oap->motion_type == kMTBlockWise) {
struct block_def bd2;
+ bool did_indent = false;
// if indent kicked in, the firstline might have changed
// but only do that, if the indent actually increased
@@ -2111,11 +2112,15 @@ void op_insert(oparg_T *oap, long count1)
if (curbuf->b_op_start.col > ind_pre && ind_post > ind_pre) {
bd.textcol += ind_post - ind_pre;
bd.start_vcol += ind_post - ind_pre;
+ did_indent = true;
}
- /* The user may have moved the cursor before inserting something, try
- * to adjust the block for that. */
- if (oap->start.lnum == curbuf->b_op_start_orig.lnum && !bd.is_MAX) {
+ // The user may have moved the cursor before inserting something, try
+ // to adjust the block for that. But only do it, if the difference
+ // does not come from indent kicking in.
+ if (oap->start.lnum == curbuf->b_op_start_orig.lnum
+ && !bd.is_MAX
+ && !did_indent) {
if (oap->op_type == OP_INSERT
&& oap->start.col + oap->start.coladd
!= curbuf->b_op_start_orig.col + curbuf->b_op_start_orig.coladd) {