*/
curwin->w_cursor.lnum = line1;
del_lines(linecount, TRUE);
- curbuf->b_op_start.lnum -= linecount; // adjust '[
- curbuf->b_op_end.lnum -= linecount; // adjust ']
+ if (read_linecount == 0)
+ {
+ // no filter output: clamp '[ and '] to a valid line
+ curbuf->b_op_start.lnum = curbuf->b_op_end.lnum =
+ MIN(line1, curbuf->b_ml.ml_line_count);
+ curbuf->b_op_start.col = curbuf->b_op_end.col = 0;
+ }
+ else
+ {
+ curbuf->b_op_start.lnum -= linecount; // adjust '[
+ curbuf->b_op_end.lnum -= linecount; // adjust ']
+ }
write_lnum_adjust(-linecount); // adjust last line
// for next write
#ifdef FEAT_FOLDING
bwipe!
endfunc
+func Test_mark_formatprg_on_empty()
+ new
+ if has('win32')
+ setl formatprg=more
+ else
+ setl formatprg=cat
+ endif
+ call assert_equal([0, 0], [line("'["), col("'[")])
+ call assert_equal([0, 0], [line("']"), col("']")])
+ let v:errmsg = ''
+ try
+ norm! gqG
+ catch
+ call assert_report('gqG on empty buffer should not fail: ' .. v:exception)
+ endtry
+ call assert_true(empty(v:errmsg))
+ " col() is 1-based, so 1 == first column (:marks shows it as 0)
+ call assert_equal([1, 1], [line("'["), col("'[")])
+ call assert_equal([1, 1], [line("']"), col("']")])
+ bwipe!
+endfunc
" vim: shiftwidth=2 sts=2 expandtab
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 639,
/**/
638,
/**/