summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/indent.c24
-rw-r--r--src/testdir/test_retab.vim10
-rw-r--r--src/version.c2
3 files changed, 20 insertions, 16 deletions
diff --git a/src/indent.c b/src/indent.c
index 73eb12c49..794fa2c34 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -1613,6 +1613,20 @@ copy_indent(int size, char_u *src)
}
/*
+ * Give a "resulting text too long" error and maybe set got_int.
+ */
+ static void
+emsg_text_too_long(void)
+{
+ emsg(_(e_resulting_text_too_long));
+#ifdef FEAT_EVAL
+ // when not inside a try/catch set got_int to break out of any loop
+ if (trylevel == 0)
+#endif
+ got_int = TRUE;
+}
+
+/*
* ":retab".
*/
void
@@ -1749,7 +1763,7 @@ ex_retab(exarg_T *eap)
new_len = old_len - col + start_col + len + 1;
if (new_len <= 0 || new_len >= MAXCOL)
{
- emsg(_(e_resulting_text_too_long));
+ emsg_text_too_long();
break;
}
new_line = alloc(new_len);
@@ -1780,13 +1794,7 @@ ex_retab(exarg_T *eap)
vcol += chartabsize(ptr + col, (colnr_T)vcol);
if (vcol >= MAXCOL)
{
- emsg(_(e_resulting_text_too_long));
- // when not inside a try/catch set got_int to break out of any
- // loop
-#ifdef FEAT_EVAL
- if (trylevel == 0)
-#endif
- got_int = TRUE;
+ emsg_text_too_long();
break;
}
if (has_mbyte)
diff --git a/src/testdir/test_retab.vim b/src/testdir/test_retab.vim
index 4253e7748..a4f95053c 100644
--- a/src/testdir/test_retab.vim
+++ b/src/testdir/test_retab.vim
@@ -92,7 +92,7 @@ func RetabLoop()
endfunc
func Test_retab_endless()
- " inside try/catch we catch the error message
+ " inside try/catch we can catch the error message
call setline(1, "\t0\t")
let caught = 'no'
try
@@ -106,13 +106,7 @@ func Test_retab_endless()
endfunc
func Test_nocatch_retab_endless()
- " FIXME: why does this hang on MS-Windows? Is got_int reset somewhere?
- if has('win32')
- let g:skipped_reason = "does not work on MS-Windows"
- return
- endif
-
- " not inside try/catch an interrupt is generated to get out of loops
+ " when not inside try/catch an interrupt is generated to get out of loops
call setline(1, "\t0\t")
call assert_fails('call RetabLoop()', ['E1240:', 'Interrupted'])
diff --git a/src/version.c b/src/version.c
index 81270a336..385c8ffbe 100644
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 5108,
+/**/
5107,
/**/
5106,