diff --git a/runtime/ftplugin/lua.vim b/runtime/ftplugin/lua.vim
index 87f54dd..33471cc 100644
--- a/runtime/ftplugin/lua.vim
+++ b/runtime/ftplugin/lua.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file.
-" Language:             Lua
-" Maintainer:           Doug Kearns <dougkearns@gmail.com>
-" Previous Maintainer:  Max Ischenko <mfi@ukr.net>
-" Contributor:          Dorai Sitaram <ds26@gte.com>
-"                       C.D. MacEachern <craig.daniel.maceachern@gmail.com>
-"                       Tyler Miller <tmillr@proton.me>
-"                       Phạm Bình An <phambinhanctb2004@gmail.com>
-"                       @konfekt
-" Last Change:          2025 Apr 04
+
+" Language:		Lua
+" Maintainer:		Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer:	Max Ischenko <mfi@ukr.net>
+" Contributor:		Dorai Sitaram <ds26@gte.com>
+"			C.D. MacEachern <craig.daniel.maceachern@gmail.com>
+"			Tyler Miller <tmillr@proton.me>
+"			Phạm Bình An <phambinhanctb2004@gmail.com>
+"			@konfekt
+" Last Change:		2025 Apr 04
 
 if exists("b:did_ftplugin")
   finish
@@ -42,11 +43,11 @@
 if exists("loaded_matchit") && !exists("b:match_words")
   let b:match_ignorecase = 0
   let b:match_words =
-        \ '\<\%(do\|function\|if\)\>:' ..
-        \ '\<\%(return\|else\|elseif\)\>:' ..
-        \ '\<end\>,' ..
-        \ '\<repeat\>:\<until\>,' ..
-        \ '\%(--\)\=\[\(=*\)\[:]\1]'
+	\ '\<\%(do\|function\|if\)\>:' ..
+	\ '\<\%(return\|else\|elseif\)\>:' ..
+	\ '\<end\>,' ..
+	\ '\<repeat\>:\<until\>,' ..
+	\ '\%(--\)\=\[\(=*\)\[:]\1]'
   let b:undo_ftplugin ..= " | unlet! b:match_words b:match_ignorecase"
 endif
 
@@ -88,15 +89,15 @@
 endfunction
 
 let s:patterns = [
-    \ ['do', 'end'],
-    \ ['if\s+.+\s+then', 'end'],
-    \ ['repeat', 'until\s+.+'],
-    \ ['for\s+.+\s+do', 'end'],
-    \ ['while\s+.+\s+do', 'end'],
-    \ ['function.+', 'end'],
-    \ ['return\s+function.+', 'end'],
-    \ ['local\s+function\s+.+', 'end'],
-    \ ]
+      \ ['do', 'end'],
+      \ ['if\s+.+\s+then', 'end'],
+      \ ['repeat', 'until\s+.+'],
+      \ ['for\s+.+\s+do', 'end'],
+      \ ['while\s+.+\s+do', 'end'],
+      \ ['function.+', 'end'],
+      \ ['return\s+function.+', 'end'],
+      \ ['local\s+function\s+.+', 'end'],
+      \ ]
 
 function s:LuaFold() abort
   if b:lua_lasttick == b:changedtick
@@ -114,17 +115,17 @@
       let tagopen  = '\v^\s*' .. t[0] ..'\s*$'
       let tagend = '\v^\s*' .. t[1] ..'\s*$'
       if line =~# tagopen
-        call add(foldlist, t)
-        let open = 1
-        break
+	call add(foldlist, t)
+	let open = 1
+	break
       elseif line =~# tagend
-        if len(foldlist) > 0 && line =~# foldlist[-1][1]
-          call remove(foldlist, -1)
-          let end = 1
-        else
-          let foldlist = []
-        endif
-        break
+	if len(foldlist) > 0 && line =~# foldlist[-1][1]
+	  call remove(foldlist, -1)
+	  let end = 1
+	else
+	  let foldlist = []
+	endif
+	break
       endif
     endfor
     let prefix = ""
@@ -160,17 +161,17 @@
       var tagopen  = '\v^\s*' .. t[0] .. '\s*$'
       var tagend = '\v^\s*' .. t[1] .. '\s*$'
       if line =~# tagopen
-        add(foldlist, t)
-        open = 1
-        break
+	add(foldlist, t)
+	open = 1
+	break
       elseif line =~# tagend
-        if len(foldlist) > 0 && line =~# foldlist[-1][1]
-          end = 1
-          remove(foldlist, -1)
-        else
-          foldlist = []
-        endif
-        break
+	if len(foldlist) > 0 && line =~# foldlist[-1][1]
+	  end = 1
+	  remove(foldlist, -1)
+	else
+	  foldlist = []
+	endif
+	break
       endif
     endfor
     var prefix = ""
@@ -183,4 +184,5 @@
 
 let &cpo = s:cpo_save
 unlet s:cpo_save
+
 " vim: nowrap sw=2 sts=2 ts=8 noet:
