diff --git a/runtime/indent/testdir/runtest.vim b/runtime/indent/testdir/runtest.vim
index 882a140..dde8c5c 100644
--- a/runtime/indent/testdir/runtest.vim
+++ b/runtime/indent/testdir/runtest.vim
@@ -2,7 +2,7 @@
 "
 " Current directory must be runtime/indent.
 
-" Only do this with the +eval feature
+" Only do this with the +eval feature.
 if 1
 
 set nocp
@@ -18,7 +18,7 @@
 func HandleSwapExists()
   " Ignore finding a swap file for the test input and output, the user might be
   " editing them and that's OK.
-  if expand('<afile>') =~ '.*\.\(in\|out\|fail\|ok\)'
+  if expand('<afile>') =~ '.*\.\%(in\|out\|fail\|ok\)'
     let v:swapchoice = 'e'
   endif
 endfunc
@@ -30,19 +30,19 @@
   " Execute the test if the .out file does not exist of when the .in file is
   " newer.
   let in_time = getftime(fname)
-  let out_time = getftime(root . '.out')
+  let out_time = getftime(root .. '.out')
   if out_time < 0 || in_time > out_time
-    call delete(root . '.fail')
-    call delete(root . '.out')
+    call delete(root .. '.fail')
+    call delete(root .. '.out')
 
     set sw& ts& filetype=
-    exe 'split ' . fname
+    exe 'split ' .. fname
 
     let did_some = 0
     let failed = 0
     let end = 1
     while 1
-      " Indent all the lines between "START_INDENT" and "END_INDENT"
+      " Indent all the lines between "START_INDENT" and "END_INDENT".
       exe end
       let start = search('\<START_INDENT\>')
       let end = search('\<END_INDENT\>')
@@ -63,7 +63,7 @@
 	  exe lnum + 1
 	  let lnum_exe = search('\<INDENT_EXE\>')
 	  exe lnum + 1
-	  let indent_at = search('\<INDENT_\(AT\|NEXT\|PREV\)\>')
+	  let indent_at = search('\<INDENT_\%(AT\|NEXT\|PREV\)\>')
 	  if lnum_exe > 0 && lnum_exe < end && (indent_at <= 0 || lnum_exe < indent_at)
 	    exe substitute(getline(lnum_exe), '.*INDENT_EXE', '', '')
 	    let lnum = lnum_exe
@@ -87,15 +87,15 @@
 	exe start + 1
 	if pattern == ''
 	  try
-	    exe 'normal =' . (end - 1) . 'G'
+	    exe 'normal =' .. (end - 1) .. 'G'
 	  catch
-	    call append(indent_at, 'ERROR: ' . v:exception)
+	    call append(indent_at, 'ERROR: ' .. v:exception)
 	    let failed = 1
 	  endtry
 	else
 	  let lnum = search(pattern)
 	  if lnum <= 0
-	    call append(indent_at, 'ERROR: pattern not found: ' . pattern)
+	    call append(indent_at, 'ERROR: pattern not found: ' .. pattern)
 	    let failed = 1
 	    break
 	  endif
@@ -109,7 +109,7 @@
 	  try
 	    normal ==
 	  catch
-	    call append(indent_at, 'ERROR: ' . v:exception)
+	    call append(indent_at, 'ERROR: ' .. v:exception)
 	    let failed = 1
 	  endtry
 	endif
@@ -118,21 +118,21 @@
 
     if !failed
       " Check the resulting text equals the .ok file.
-      if getline(1, '$') != readfile(root . '.ok')
+      if getline(1, '$') != readfile(root .. '.ok')
 	let failed = 1
       endif
     endif
 
     if failed
       let failed_count += 1
-      exe 'write ' . root . '.fail'
-      echoerr 'Test ' . fname . ' FAILED!'
+      exe 'write ' .. root .. '.fail'
+      echoerr 'Test ' .. fname .. ' FAILED!'
     else
-      exe 'write ' . root . '.out'
-      echo "Test " . fname . " OK\n"
+      exe 'write ' .. root .. '.out'
+      echo "Test " .. fname .. " OK\n"
     endif
 
-    quit!  " close the indented file
+    quit!  " Close the indented file.
   endif
 endfor
 
@@ -140,7 +140,7 @@
 endif
 
 if failed_count > 0
-  " have make report an error
+  " Have make report an error.
   cquit
 endif
 qall!
