aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ex_cmds.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/ex_cmds.c')
-rw-r--r--src/nvim/ex_cmds.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c
index 556e0c01e3..44caa67847 100644
--- a/src/nvim/ex_cmds.c
+++ b/src/nvim/ex_cmds.c
@@ -47,6 +47,7 @@
#include "nvim/garray.h"
#include "nvim/memory.h"
#include "nvim/move.h"
+#include "nvim/mouse.h"
#include "nvim/normal.h"
#include "nvim/ops.h"
#include "nvim/option.h"
@@ -3602,10 +3603,16 @@ void do_sub(exarg_T *eap)
eap->flags = EXFLAG_PRINT;
}
- do_join(eap->line2 - eap->line1 + 1, FALSE, TRUE, FALSE, true);
- sub_nlines = sub_nsubs = eap->line2 - eap->line1 + 1;
- do_sub_msg(false);
- ex_may_print(eap);
+ linenr_T joined_lines_count = eap->line2 < curbuf->b_ml.ml_line_count
+ ? eap->line2 - eap->line1 + 2
+ : eap->line2 - eap->line1 + 1;
+ if (joined_lines_count > 1) {
+ do_join(joined_lines_count, FALSE, TRUE, FALSE, true);
+ sub_nsubs = joined_lines_count - 1;
+ sub_nlines = 1;
+ do_sub_msg(false);
+ ex_may_print(eap);
+ }
return;
}