diff --git a/src/testdir/test_goto.vim b/src/testdir/test_goto.vim
index 16daaf8..d0daeeb 100644
--- a/src/testdir/test_goto.vim
+++ b/src/testdir/test_goto.vim
@@ -16,13 +16,13 @@
 
 func Test_gD()
   let lines = [
-    \ 'int x;',
-    \ '',
-    \ 'int func(void)',
-    \ '{',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ 'int x;',
+	\ '',
+	\ 'int func(void)',
+	\ '{',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gD', lines, 1, 5)
 endfunc
 
@@ -40,236 +40,236 @@
 
 func Test_gD_comment()
   let lines = [
-    \ '/* int x; */',
-    \ 'int x;',
-    \ '',
-    \ 'int func(void)',
-    \ '{',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ '/* int x; */',
+	\ 'int x;',
+	\ '',
+	\ 'int func(void)',
+	\ '{',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gD', lines, 2, 5)
 endfunc
 
 func Test_gD_inline_comment()
   let lines = [
-    \ 'int y /* , x */;',
-    \ 'int x;',
-    \ '',
-    \ 'int func(void)',
-    \ '{',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ 'int y /* , x */;',
+	\ 'int x;',
+	\ '',
+	\ 'int func(void)',
+	\ '{',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gD', lines, 2, 5)
 endfunc
 
 func Test_gD_string()
   let lines = [
-    \ 'char *s[] = "x";',
-    \ 'int x = 1;',
-    \ '',
-    \ 'int func(void)',
-    \ '{',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ 'char *s[] = "x";',
+	\ 'int x = 1;',
+	\ '',
+	\ 'int func(void)',
+	\ '{',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gD', lines, 2, 5)
 endfunc
 
 func Test_gD_string_same_line()
   let lines = [
-    \ 'char *s[] = "x", int x = 1;',
-    \ '',
-    \ 'int func(void)',
-    \ '{',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ 'char *s[] = "x", int x = 1;',
+	\ '',
+	\ 'int func(void)',
+	\ '{',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gD', lines, 1, 22)
 endfunc
 
 func Test_gD_char()
   let lines = [
-    \ "char c = 'x';",
-    \ 'int x = 1;',
-    \ '',
-    \ 'int func(void)',
-    \ '{',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ "char c = 'x';",
+	\ 'int x = 1;',
+	\ '',
+	\ 'int func(void)',
+	\ '{',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gD', lines, 2, 5)
 endfunc
 
 func Test_gd()
   let lines = [
-    \ 'int x;',
-    \ '',
-    \ 'int func(int x)',
-    \ '{',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ 'int x;',
+	\ '',
+	\ 'int func(int x)',
+	\ '{',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gd', lines, 3, 14)
 endfunc
 
 func Test_gd_not_local()
   let lines = [
-    \ 'int func1(void)',
-    \ '{',
-    \ '  return x;',
-    \ '}',
-    \ '',
-    \ 'int func2(int x)',
-    \ '{',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ 'int func1(void)',
+	\ '{',
+	\ '  return x;',
+	\ '}',
+	\ '',
+	\ 'int func2(int x)',
+	\ '{',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gd', lines, 3, 10)
 endfunc
 
 func Test_gd_kr_style()
   let lines = [
-    \ 'int func(x)',
-    \ '  int x;',
-    \ '{',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ 'int func(x)',
+	\ '  int x;',
+	\ '{',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gd', lines, 2, 7)
 endfunc
 
 func Test_gd_missing_braces()
   let lines = [
-    \ 'def func1(a)',
-    \ '  a + 1',
-    \ 'end',
-    \ '',
-    \ 'a = 1',
-    \ '',
-    \ 'def func2()',
-    \ '  return a',
-    \ 'end',
-    \ ]
+	\ 'def func1(a)',
+	\ '  a + 1',
+	\ 'end',
+	\ '',
+	\ 'a = 1',
+	\ '',
+	\ 'def func2()',
+	\ '  return a',
+	\ 'end',
+	\ ]
   call XTest_goto_decl('gd', lines, 1, 11)
 endfunc
 
 func Test_gd_comment()
   let lines = [
-    \ 'int func(void)',
-    \ '{',
-    \ '  /* int x; */',
-    \ '  int x;',
-    \ '  return x;',
-    \ '}',
-    \]
+	\ 'int func(void)',
+	\ '{',
+	\ '  /* int x; */',
+	\ '  int x;',
+	\ '  return x;',
+	\ '}',
+	\]
   call XTest_goto_decl('gd', lines, 4, 7)
 endfunc
 
 func Test_gd_comment_in_string()
   let lines = [
-    \ 'int func(void)',
-    \ '{',
-    \ '  char *s ="//"; int x;',
-    \ '  int x;',
-    \ '  return x;',
-    \ '}',
-    \]
+	\ 'int func(void)',
+	\ '{',
+	\ '  char *s ="//"; int x;',
+	\ '  int x;',
+	\ '  return x;',
+	\ '}',
+	\]
   call XTest_goto_decl('gd', lines, 3, 22)
 endfunc
 
 func Test_gd_string_in_comment()
   set comments=
   let lines = [
-    \ 'int func(void)',
-    \ '{',
-    \ '  /* " */ int x;',
-    \ '  int x;',
-    \ '  return x;',
-    \ '}',
-    \]
+	\ 'int func(void)',
+	\ '{',
+	\ '  /* " */ int x;',
+	\ '  int x;',
+	\ '  return x;',
+	\ '}',
+	\]
   call XTest_goto_decl('gd', lines, 3, 15)
   set comments&
 endfunc
 
 func Test_gd_inline_comment()
   let lines = [
-    \ 'int func(/* x is an int */ int x)',
-    \ '{',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ 'int func(/* x is an int */ int x)',
+	\ '{',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gd', lines, 1, 32)
 endfunc
 
 func Test_gd_inline_comment_only()
   let lines = [
-    \ 'int func(void) /* one lonely x */',
-    \ '{',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ 'int func(void) /* one lonely x */',
+	\ '{',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gd', lines, 3, 10)
 endfunc
 
 func Test_gd_inline_comment_body()
   let lines = [
-    \ 'int func(void)',
-    \ '{',
-    \ '  int y /* , x */;',
-    \ '',
-    \ '  for (/* int x = 0 */; y < 2; y++);',
-    \ '',
-    \ '  int x = 0;',
-    \ '',
-    \ '  return x;',
-    \ '}',
-  \ ]
+	\ 'int func(void)',
+	\ '{',
+	\ '  int y /* , x */;',
+	\ '',
+	\ '  for (/* int x = 0 */; y < 2; y++);',
+	\ '',
+	\ '  int x = 0;',
+	\ '',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gd', lines, 7, 7)
 endfunc
 
 func Test_gd_trailing_multiline_comment()
   let lines = [
-    \ 'int func(int x) /* x is an int */',
-    \ '{',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ 'int func(int x) /* x is an int */',
+	\ '{',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gd', lines, 1, 14)
 endfunc
 
 func Test_gd_trailing_comment()
   let lines = [
-    \ 'int func(int x) // x is an int',
-    \ '{',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ 'int func(int x) // x is an int',
+	\ '{',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gd', lines, 1, 14)
 endfunc
 
 func Test_gd_string()
   let lines = [
-    \ 'int func(void)',
-    \ '{',
-    \ '  char *s = "x";',
-    \ '  int x = 1;',
-    \ '',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ 'int func(void)',
+	\ '{',
+	\ '  char *s = "x";',
+	\ '  int x = 1;',
+	\ '',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gd', lines, 4, 7)
 endfunc
 
 func Test_gd_string_only()
   let lines = [
-    \ 'int func(void)',
-    \ '{',
-    \ '  char *s = "x";',
-    \ '',
-    \ '  return x;',
-    \ '}',
-    \ ]
+	\ 'int func(void)',
+	\ '{',
+	\ '  char *s = "x";',
+	\ '',
+	\ '  return x;',
+	\ '}',
+	\ ]
   call XTest_goto_decl('gd', lines, 5, 10)
 endfunc
diff --git a/src/version.c b/src/version.c
index 78f5264..9a16985 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    25,
+/**/
     24,
 /**/
     23,
