66" C.D. MacEachern <craig.daniel.maceachern@gmail.com>
77" Tyler Miller <tmillr@proton.me>
88" Phạm Bình An <phambinhanctb2004@gmail.com>
9- " Last Change: 2025 Feb 25
9+ " Last Change: 2025 Feb 27
1010
1111if exists (" b:did_ftplugin" )
1212 finish
@@ -32,11 +32,11 @@ setlocal formatoptions-=t formatoptions+=croql
3232
3333let &l: define = ' \<function\|\<local\%(\s\+function\)\='
3434
35- let &l: include = ' \v<( (do|load)file|require)[^ '' "]*[ '' "]\zs[^ '' "]+ '
36- setlocal includeexpr = LuaInclude (v: fname )
35+ let &l: include = ' \<\%(\% (do\ |load\ )file\ |require\)\s*( '
36+ setlocal includeexpr = s: LuaInclude (v: fname )
3737setlocal suffixesadd = .lua
3838
39- let b: undo_ftplugin = " setlocal cms< com< def< fo< inc< inex< sua<"
39+ let b: undo_ftplugin = " setl cms< com< def< fo< inc< inex< sua<"
4040
4141if exists (" loaded_matchit" ) && ! exists (" b:match_words" )
4242 let b: match_ignorecase = 0
@@ -61,20 +61,31 @@ endif
6161
6262if has (" folding" ) && get (g: , " lua_folding" , 0 )
6363 setlocal foldmethod = expr
64- setlocal foldexpr = LuaFold (v: lnum )
64+ setlocal foldexpr = s: LuaFold (v: lnum )
6565 let b: lua_lasttick = -1
66- let b: undo_ftplugin ..= " | setl foldexpr< foldmethod< | unlet! b:lua_lasttick b:lua_foldlists"
66+ let b: undo_ftplugin ..= " | setl foldexpr< foldmethod< | unlet! b:lua_lasttick b:lua_foldlists"
6767endif
6868
69-
7069" The rest of the file needs to be :sourced only once per Vim session
71- if exists (' s:loaded_lua' ) || &cp
70+ if exists (" s:loaded_lua" ) || &cp
7271 let &cpo = s: cpo_save
7372 unlet s: cpo_save
7473 finish
7574endif
7675let s: loaded_lua = 1
7776
77+ function s: LuaInclude (fname) abort
78+ let lua_ver = str2float (printf (" %d.%02d" , g: lua_version , g: lua_subversion ))
79+ let fname = tr (a: fname , ' .' , ' /' )
80+ let paths = lua_ver >= 5.03 ? [fname .. " .lua" , fname .. " /init.lua" ] : [fname .. " .lua" ]
81+ for path in paths
82+ if filereadable (path )
83+ return path
84+ endif
85+ endfor
86+ return fname
87+ endfunction
88+
7889let s: patterns = [
7990 \ [' do' , ' end' ],
8091 \ [' if\s+.+\s+then' , ' end' ],
@@ -86,47 +97,35 @@ let s:patterns = [
8697 \ [' local\s+function\s+.+' , ' end' ],
8798 \ ]
8899
89- function LuaInclude (fname) abort
90- let lua_ver = str2float (printf (" %d.%02d" , g: lua_version , g: lua_subversion ))
91- let fname = tr (a: fname , ' .' , ' /' )
92- let paths = lua_ver >= 5.03 ? [ fname.' .lua' , fname.' /init.lua' ] : [ fname.' .lua' ]
93- for path in paths
94- if filereadable (path )
95- return path
96- endif
97- endfor
98- return fname
99- endfunction
100-
101- function LuaFold (lnum) abort
100+ function s: LuaFold (lnum) abort
102101 if b: lua_lasttick == b: changedtick
103- return b: lua_foldlists [a: lnum- 1 ]
102+ return b: lua_foldlists [a: lnum - 1 ]
104103 endif
105104 let b: lua_lasttick = b: changedtick
106105
107106 let b: lua_foldlists = []
108107 let foldlist = []
109- let buf = getline (1 , ' $ ' )
108+ let buf = getline (1 , " $ " )
110109 for line in buf
111110 for t in s: patterns
112- let tagopen = ' \v^\s*' .. t [0 ]..' \s*$'
113- let tagclose = ' \v^\s*' .. t [1 ]..' \s*$'
111+ let tagopen = ' \v^\s*' .. t [0 ] ..' \s*$'
112+ let tagclose = ' \v^\s*' .. t [1 ] ..' \s*$'
114113 if line = ~# tagopen
115- call add (foldlist, t )
116- break
114+ call add (foldlist, t )
115+ break
117116 elseif line = ~# tagclose
118- if len (foldlist) > 0 && line = ~# foldlist[-1 ][1 ]
119- call remove (foldlist, -1 )
120- else
121- let foldlist = []
122- endif
123- break
117+ if len (foldlist) > 0 && line = ~# foldlist[-1 ][1 ]
118+ call remove (foldlist, -1 )
119+ else
120+ let foldlist = []
121+ endif
122+ break
124123 endif
125124 endfor
126125 call add (b: lua_foldlists , len (foldlist))
127126 endfor
128127
129- return lua_foldlists[a: lnum- 1 ]
128+ return lua_foldlists[a: lnum - 1 ]
130129endfunction
131130
132131let &cpo = s: cpo_save
0 commit comments