updated for version 7.0093
diff --git a/runtime/indent/lua.vim b/runtime/indent/lua.vim
index ace7fd1..ffe03be 100644
--- a/runtime/indent/lua.vim
+++ b/runtime/indent/lua.vim
@@ -2,7 +2,7 @@
" Language: Lua script
" Maintainer: Marcus Aurelius Farias <marcus.cf 'at' bol.com.br>
" First Author: Max Ischenko <mfi 'at' ukr.net>
-" Last Change: 2005 Jun 09
+" Last Change: 2005 Jun 23
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -10,19 +10,19 @@
endif
let b:did_indent = 1
+setlocal indentexpr=GetLuaIndent()
+
+" To make Vim call GetLuaIndent() when it finds '\s*end' or '\s*until'
+" on the current line ('else' is default and includes 'elseif').
+setlocal indentkeys+=0=end,0=until
+
+setlocal autoindent
+
" Only define the function once.
if exists("*GetLuaIndent")
finish
endif
-setlocal indentexpr=GetLuaIndent()
-
-" To make Vim call GetLuaIndent() when it finds '\s*end' or '\s*until'
-" on the current line (else is default).
-setlocal indentkeys+=0=end,0=until
-
-setlocal autoindent
-
function! GetLuaIndent()
" Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1)
@@ -32,18 +32,19 @@
return 0
endif
- " Add a 'shiftwidth' after lines beginning with:
- " function, if, for, while, repeat, else, elseif, '{'
+ " Add a 'shiftwidth' after lines that start a block:
+ " 'function', 'if', 'for', 'while', 'repeat', 'else', 'elseif', '{'
let ind = indent(lnum)
let flag = 0
let prevline = getline(lnum)
- if prevline =~ '^\s*\%(if\>\|for\>\|while\>\|repeat\>\|else\>\|elseif\>\|do\>\)' || prevline =~ '{\s*$' || prevline =~ '\<function\>\s*\%(\k\|[.:]\)\{-}\s*('
+ if prevline =~ '^\s*\%(if\>\|for\>\|while\>\|repeat\>\|else\>\|elseif\>\|do\>\|then\>\)'
+ \ || prevline =~ '{\s*$' || prevline =~ '\<function\>\s*\%(\k\|[.:]\)\{-}\s*('
let ind = ind + &shiftwidth
let flag = 1
endif
" Subtract a 'shiftwidth' after lines ending with
- " 'end' when they begin with while, if, for, etc.
+ " 'end' when they begin with 'while', 'if', 'for', etc. too.
if flag == 1 && prevline =~ '\<end\>\|\<until\>'
let ind = ind - &shiftwidth
endif