Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 1 | " Vim syntax file |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 2 | " Language: Lua 4.0, Lua 5.0, Lua 5.1, Lua 5.2 and Lua 5.3 |
Bram Moolenaar | 71b6d33 | 2022-09-10 13:13:14 +0100 | [diff] [blame] | 3 | " Maintainer: Marcus Aurelius Farias <masserahguard-lua 'at' yahoo com> |
| 4 | " First Author: Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br> |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 5 | " Last Change: 2022 Sep 07 |
Bram Moolenaar | 71b6d33 | 2022-09-10 13:13:14 +0100 | [diff] [blame] | 6 | " Options: lua_version = 4 or 5 |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 7 | " lua_subversion = 0 (for 4.0 or 5.0) |
| 8 | " or 1, 2, 3 (for 5.1, 5.2 or 5.3) |
| 9 | " the default is 5.3 |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 10 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 11 | " quit when a syntax file was already loaded |
| 12 | if exists("b:current_syntax") |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 13 | finish |
| 14 | endif |
| 15 | |
Bram Moolenaar | 5dc6252 | 2012-02-13 00:05:22 +0100 | [diff] [blame] | 16 | let s:cpo_save = &cpo |
| 17 | set cpo&vim |
| 18 | |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 19 | if !exists("lua_version") |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 20 | " Default is lua 5.3 |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 21 | let lua_version = 5 |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 22 | let lua_subversion = 3 |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 23 | elseif !exists("lua_subversion") |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 24 | " lua_version exists, but lua_subversion doesn't. In this case set it to 0 |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 25 | let lua_subversion = 0 |
| 26 | endif |
| 27 | |
| 28 | syn case match |
| 29 | |
| 30 | " syncing method |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 31 | syn sync minlines=1000 |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 32 | |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 33 | if lua_version >= 5 |
| 34 | syn keyword luaMetaMethod __add __sub __mul __div __pow __unm __concat |
| 35 | syn keyword luaMetaMethod __eq __lt __le |
| 36 | syn keyword luaMetaMethod __index __newindex __call |
| 37 | syn keyword luaMetaMethod __metatable __mode __gc __tostring |
| 38 | endif |
| 39 | |
| 40 | if lua_version > 5 || (lua_version == 5 && lua_subversion >= 1) |
| 41 | syn keyword luaMetaMethod __mod __len |
| 42 | endif |
| 43 | |
| 44 | if lua_version > 5 || (lua_version == 5 && lua_subversion >= 2) |
| 45 | syn keyword luaMetaMethod __pairs |
| 46 | endif |
| 47 | |
| 48 | if lua_version > 5 || (lua_version == 5 && lua_subversion >= 3) |
| 49 | syn keyword luaMetaMethod __idiv __name |
| 50 | syn keyword luaMetaMethod __band __bor __bxor __bnot __shl __shr |
| 51 | endif |
| 52 | |
| 53 | if lua_version > 5 || (lua_version == 5 && lua_subversion >= 4) |
| 54 | syn keyword luaMetaMethod __close |
| 55 | endif |
| 56 | |
| 57 | " catch errors caused by wrong parenthesis and wrong curly brackets or |
| 58 | " keywords placed outside their respective blocks |
| 59 | |
| 60 | syn region luaParen transparent start='(' end=')' contains=TOP,luaParenError |
| 61 | syn match luaParenError ")" |
| 62 | syn match luaError "}" |
| 63 | syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>" |
| 64 | |
| 65 | " Function declaration |
| 66 | syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=TOP |
| 67 | |
| 68 | " else |
| 69 | syn keyword luaCondElse matchgroup=luaCond contained containedin=luaCondEnd else |
| 70 | |
| 71 | " then ... end |
| 72 | syn region luaCondEnd contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=TOP |
| 73 | |
| 74 | " elseif ... then |
| 75 | syn region luaCondElseif contained containedin=luaCondEnd transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=TOP |
| 76 | |
| 77 | " if ... then |
| 78 | syn region luaCondStart transparent matchgroup=luaCond start="\<if\>" end="\<then\>"me=e-4 contains=TOP nextgroup=luaCondEnd skipwhite skipempty |
| 79 | |
| 80 | " do ... end |
| 81 | syn region luaBlock transparent matchgroup=luaStatement start="\<do\>" end="\<end\>" contains=TOP |
| 82 | " repeat ... until |
| 83 | syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>" contains=TOP |
| 84 | |
| 85 | " while ... do |
| 86 | syn region luaWhile transparent matchgroup=luaRepeat start="\<while\>" end="\<do\>"me=e-2 contains=TOP nextgroup=luaBlock skipwhite skipempty |
| 87 | |
| 88 | " for ... do and for ... in ... do |
| 89 | syn region luaFor transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2 contains=TOP nextgroup=luaBlock skipwhite skipempty |
| 90 | |
| 91 | syn keyword luaFor contained containedin=luaFor in |
| 92 | |
| 93 | " other keywords |
| 94 | syn keyword luaStatement return local break |
| 95 | if lua_version > 5 || (lua_version == 5 && lua_subversion >= 2) |
| 96 | syn keyword luaStatement goto |
| 97 | syn match luaLabel "::\I\i*::" |
| 98 | endif |
| 99 | |
| 100 | " operators |
| 101 | syn keyword luaOperator and or not |
| 102 | |
| 103 | if (lua_version == 5 && lua_subversion >= 3) || lua_version > 5 |
| 104 | syn match luaSymbolOperator "[#<>=~^&|*/%+-]\|\.\{2,3}" |
| 105 | elseif lua_version == 5 && (lua_subversion == 1 || lua_subversion == 2) |
| 106 | syn match luaSymbolOperator "[#<>=~^*/%+-]\|\.\{2,3}" |
| 107 | else |
| 108 | syn match luaSymbolOperator "[<>=~^*/+-]\|\.\{2,3}" |
| 109 | endif |
| 110 | |
| 111 | " comments |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 112 | syn keyword luaTodo contained TODO FIXME XXX |
| 113 | syn match luaComment "--.*$" contains=luaTodo,@Spell |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 114 | if lua_version == 5 && lua_subversion == 0 |
Bram Moolenaar | 71b6d33 | 2022-09-10 13:13:14 +0100 | [diff] [blame] | 115 | syn region luaComment matchgroup=luaCommentDelimiter start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment,@Spell |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 116 | syn region luaInnerComment contained transparent start="\[\[" end="\]\]" |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 117 | elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1) |
| 118 | " Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc. |
Bram Moolenaar | 71b6d33 | 2022-09-10 13:13:14 +0100 | [diff] [blame] | 119 | syn region luaComment matchgroup=luaCommentDelimiter start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 120 | endif |
| 121 | |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 122 | " first line may start with #! |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 123 | syn match luaComment "\%^#!.*" |
| 124 | |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 125 | syn keyword luaConstant nil |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 126 | if lua_version > 4 |
| 127 | syn keyword luaConstant true false |
| 128 | endif |
| 129 | |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 130 | " strings |
| 131 | syn match luaSpecial contained #\\[\\abfnrtv'"[\]]\|\\[[:digit:]]\{,3}# |
| 132 | if lua_version == 5 |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 133 | if lua_subversion == 0 |
Bram Moolenaar | 71b6d33 | 2022-09-10 13:13:14 +0100 | [diff] [blame] | 134 | syn region luaString2 matchgroup=luaStringDelimiter start=+\[\[+ end=+\]\]+ contains=luaString2,@Spell |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 135 | else |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 136 | if lua_subversion >= 2 |
| 137 | syn match luaSpecial contained #\\z\|\\x[[:xdigit:]]\{2}# |
| 138 | endif |
| 139 | if lua_subversion >= 3 |
| 140 | syn match luaSpecial contained #\\u{[[:xdigit:]]\+}# |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 141 | endif |
Bram Moolenaar | 71b6d33 | 2022-09-10 13:13:14 +0100 | [diff] [blame] | 142 | syn region luaString2 matchgroup=luaStringDelimiter start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 143 | endif |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 144 | endif |
Bram Moolenaar | 71b6d33 | 2022-09-10 13:13:14 +0100 | [diff] [blame] | 145 | syn region luaString matchgroup=luaStringDelimiter start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell |
| 146 | syn region luaString matchgroup=luaStringDelimiter start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial,@Spell |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 147 | |
| 148 | " integer number |
Bram Moolenaar | 9964e46 | 2007-05-05 17:54:07 +0000 | [diff] [blame] | 149 | syn match luaNumber "\<\d\+\>" |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 150 | " floating point number, with dot, optional exponent |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 151 | syn match luaNumber "\<\d\+\.\d*\%([eE][-+]\=\d\+\)\=" |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 152 | " floating point number, starting with a dot, optional exponent |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 153 | syn match luaNumber "\.\d\+\%([eE][-+]\=\d\+\)\=\>" |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 154 | " floating point number, without dot, with exponent |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 155 | syn match luaNumber "\<\d\+[eE][-+]\=\d\+\>" |
Bram Moolenaar | 9964e46 | 2007-05-05 17:54:07 +0000 | [diff] [blame] | 156 | |
| 157 | " hex numbers |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 158 | if lua_version >= 5 |
| 159 | if lua_subversion == 1 |
| 160 | syn match luaNumber "\<0[xX]\x\+\>" |
| 161 | elseif lua_subversion >= 2 |
| 162 | syn match luaNumber "\<0[xX][[:xdigit:].]\+\%([pP][-+]\=\d\+\)\=\>" |
| 163 | endif |
Bram Moolenaar | 9964e46 | 2007-05-05 17:54:07 +0000 | [diff] [blame] | 164 | endif |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 165 | |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 166 | " tables |
| 167 | syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=TOP,luaStatement |
| 168 | |
| 169 | " methods |
| 170 | syntax match luaFunc ":\@<=\k\+" |
| 171 | |
| 172 | " built-in functions |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 173 | syn keyword luaFunc assert collectgarbage dofile error next |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 174 | syn keyword luaFunc print rawget rawset self tonumber tostring type _VERSION |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 175 | |
| 176 | if lua_version == 4 |
| 177 | syn keyword luaFunc _ALERT _ERRORMESSAGE gcinfo |
| 178 | syn keyword luaFunc call copytagmethods dostring |
| 179 | syn keyword luaFunc foreach foreachi getglobal getn |
| 180 | syn keyword luaFunc gettagmethod globals newtag |
| 181 | syn keyword luaFunc setglobal settag settagmethod sort |
| 182 | syn keyword luaFunc tag tinsert tremove |
| 183 | syn keyword luaFunc _INPUT _OUTPUT _STDIN _STDOUT _STDERR |
| 184 | syn keyword luaFunc openfile closefile flush seek |
| 185 | syn keyword luaFunc setlocale execute remove rename tmpname |
| 186 | syn keyword luaFunc getenv date clock exit |
| 187 | syn keyword luaFunc readfrom writeto appendto read write |
| 188 | syn keyword luaFunc PI abs sin cos tan asin |
| 189 | syn keyword luaFunc acos atan atan2 ceil floor |
| 190 | syn keyword luaFunc mod frexp ldexp sqrt min max log |
| 191 | syn keyword luaFunc log10 exp deg rad random |
| 192 | syn keyword luaFunc randomseed strlen strsub strlower strupper |
| 193 | syn keyword luaFunc strchar strrep ascii strbyte |
| 194 | syn keyword luaFunc format strfind gsub |
| 195 | syn keyword luaFunc getinfo getlocal setlocal setcallhook setlinehook |
| 196 | elseif lua_version == 5 |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 197 | syn keyword luaFunc getmetatable setmetatable |
| 198 | syn keyword luaFunc ipairs pairs |
| 199 | syn keyword luaFunc pcall xpcall |
| 200 | syn keyword luaFunc _G loadfile rawequal require |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 201 | if lua_subversion == 0 |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 202 | syn keyword luaFunc getfenv setfenv |
| 203 | syn keyword luaFunc loadstring unpack |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 204 | syn keyword luaFunc gcinfo loadlib LUA_PATH _LOADED _REQUIREDNAME |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 205 | else |
| 206 | syn keyword luaFunc load select |
| 207 | syn match luaFunc /\<package\.cpath\>/ |
| 208 | syn match luaFunc /\<package\.loaded\>/ |
| 209 | syn match luaFunc /\<package\.loadlib\>/ |
| 210 | syn match luaFunc /\<package\.path\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 211 | syn match luaFunc /\<package\.preload\>/ |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 212 | if lua_subversion == 1 |
| 213 | syn keyword luaFunc getfenv setfenv |
| 214 | syn keyword luaFunc loadstring module unpack |
| 215 | syn match luaFunc /\<package\.loaders\>/ |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 216 | syn match luaFunc /\<package\.seeall\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 217 | elseif lua_subversion >= 2 |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 218 | syn keyword luaFunc _ENV rawlen |
| 219 | syn match luaFunc /\<package\.config\>/ |
| 220 | syn match luaFunc /\<package\.preload\>/ |
| 221 | syn match luaFunc /\<package\.searchers\>/ |
| 222 | syn match luaFunc /\<package\.searchpath\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 223 | endif |
| 224 | |
| 225 | if lua_subversion >= 3 |
| 226 | syn match luaFunc /\<coroutine\.isyieldable\>/ |
| 227 | endif |
| 228 | if lua_subversion >= 4 |
| 229 | syn keyword luaFunc warn |
| 230 | syn match luaFunc /\<coroutine\.close\>/ |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 231 | endif |
| 232 | syn match luaFunc /\<coroutine\.running\>/ |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 233 | endif |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 234 | syn match luaFunc /\<coroutine\.create\>/ |
| 235 | syn match luaFunc /\<coroutine\.resume\>/ |
| 236 | syn match luaFunc /\<coroutine\.status\>/ |
| 237 | syn match luaFunc /\<coroutine\.wrap\>/ |
| 238 | syn match luaFunc /\<coroutine\.yield\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 239 | |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 240 | syn match luaFunc /\<string\.byte\>/ |
| 241 | syn match luaFunc /\<string\.char\>/ |
| 242 | syn match luaFunc /\<string\.dump\>/ |
| 243 | syn match luaFunc /\<string\.find\>/ |
| 244 | syn match luaFunc /\<string\.format\>/ |
| 245 | syn match luaFunc /\<string\.gsub\>/ |
| 246 | syn match luaFunc /\<string\.len\>/ |
| 247 | syn match luaFunc /\<string\.lower\>/ |
| 248 | syn match luaFunc /\<string\.rep\>/ |
| 249 | syn match luaFunc /\<string\.sub\>/ |
| 250 | syn match luaFunc /\<string\.upper\>/ |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 251 | if lua_subversion == 0 |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 252 | syn match luaFunc /\<string\.gfind\>/ |
| 253 | else |
| 254 | syn match luaFunc /\<string\.gmatch\>/ |
| 255 | syn match luaFunc /\<string\.match\>/ |
| 256 | syn match luaFunc /\<string\.reverse\>/ |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 257 | endif |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 258 | if lua_subversion >= 3 |
| 259 | syn match luaFunc /\<string\.pack\>/ |
| 260 | syn match luaFunc /\<string\.packsize\>/ |
| 261 | syn match luaFunc /\<string\.unpack\>/ |
| 262 | syn match luaFunc /\<utf8\.char\>/ |
| 263 | syn match luaFunc /\<utf8\.charpattern\>/ |
| 264 | syn match luaFunc /\<utf8\.codes\>/ |
| 265 | syn match luaFunc /\<utf8\.codepoint\>/ |
| 266 | syn match luaFunc /\<utf8\.len\>/ |
| 267 | syn match luaFunc /\<utf8\.offset\>/ |
| 268 | endif |
| 269 | |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 270 | if lua_subversion == 0 |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 271 | syn match luaFunc /\<table\.getn\>/ |
| 272 | syn match luaFunc /\<table\.setn\>/ |
| 273 | syn match luaFunc /\<table\.foreach\>/ |
| 274 | syn match luaFunc /\<table\.foreachi\>/ |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 275 | elseif lua_subversion == 1 |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 276 | syn match luaFunc /\<table\.maxn\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 277 | elseif lua_subversion >= 2 |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 278 | syn match luaFunc /\<table\.pack\>/ |
| 279 | syn match luaFunc /\<table\.unpack\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 280 | if lua_subversion >= 3 |
| 281 | syn match luaFunc /\<table\.move\>/ |
| 282 | endif |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 283 | endif |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 284 | syn match luaFunc /\<table\.concat\>/ |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 285 | syn match luaFunc /\<table\.insert\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 286 | syn match luaFunc /\<table\.sort\>/ |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 287 | syn match luaFunc /\<table\.remove\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 288 | |
| 289 | if lua_subversion == 2 |
| 290 | syn match luaFunc /\<bit32\.arshift\>/ |
| 291 | syn match luaFunc /\<bit32\.band\>/ |
| 292 | syn match luaFunc /\<bit32\.bnot\>/ |
| 293 | syn match luaFunc /\<bit32\.bor\>/ |
| 294 | syn match luaFunc /\<bit32\.btest\>/ |
| 295 | syn match luaFunc /\<bit32\.bxor\>/ |
| 296 | syn match luaFunc /\<bit32\.extract\>/ |
| 297 | syn match luaFunc /\<bit32\.lrotate\>/ |
| 298 | syn match luaFunc /\<bit32\.lshift\>/ |
| 299 | syn match luaFunc /\<bit32\.replace\>/ |
| 300 | syn match luaFunc /\<bit32\.rrotate\>/ |
| 301 | syn match luaFunc /\<bit32\.rshift\>/ |
| 302 | endif |
| 303 | |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 304 | syn match luaFunc /\<math\.abs\>/ |
| 305 | syn match luaFunc /\<math\.acos\>/ |
| 306 | syn match luaFunc /\<math\.asin\>/ |
| 307 | syn match luaFunc /\<math\.atan\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 308 | if lua_subversion < 3 |
| 309 | syn match luaFunc /\<math\.atan2\>/ |
| 310 | endif |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 311 | syn match luaFunc /\<math\.ceil\>/ |
| 312 | syn match luaFunc /\<math\.sin\>/ |
| 313 | syn match luaFunc /\<math\.cos\>/ |
| 314 | syn match luaFunc /\<math\.tan\>/ |
| 315 | syn match luaFunc /\<math\.deg\>/ |
| 316 | syn match luaFunc /\<math\.exp\>/ |
| 317 | syn match luaFunc /\<math\.floor\>/ |
| 318 | syn match luaFunc /\<math\.log\>/ |
| 319 | syn match luaFunc /\<math\.max\>/ |
| 320 | syn match luaFunc /\<math\.min\>/ |
| 321 | if lua_subversion == 0 |
| 322 | syn match luaFunc /\<math\.mod\>/ |
| 323 | syn match luaFunc /\<math\.log10\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 324 | elseif lua_subversion == 1 |
| 325 | syn match luaFunc /\<math\.log10\>/ |
| 326 | endif |
| 327 | if lua_subversion >= 1 |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 328 | syn match luaFunc /\<math\.huge\>/ |
| 329 | syn match luaFunc /\<math\.fmod\>/ |
| 330 | syn match luaFunc /\<math\.modf\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 331 | if lua_subversion == 1 || lua_subversion == 2 |
| 332 | syn match luaFunc /\<math\.cosh\>/ |
| 333 | syn match luaFunc /\<math\.sinh\>/ |
| 334 | syn match luaFunc /\<math\.tanh\>/ |
| 335 | endif |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 336 | endif |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 337 | syn match luaFunc /\<math\.rad\>/ |
| 338 | syn match luaFunc /\<math\.sqrt\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 339 | if lua_subversion < 3 |
| 340 | syn match luaFunc /\<math\.pow\>/ |
| 341 | syn match luaFunc /\<math\.frexp\>/ |
| 342 | syn match luaFunc /\<math\.ldexp\>/ |
| 343 | else |
| 344 | syn match luaFunc /\<math\.maxinteger\>/ |
| 345 | syn match luaFunc /\<math\.mininteger\>/ |
| 346 | syn match luaFunc /\<math\.tointeger\>/ |
| 347 | syn match luaFunc /\<math\.type\>/ |
| 348 | syn match luaFunc /\<math\.ult\>/ |
| 349 | endif |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 350 | syn match luaFunc /\<math\.random\>/ |
| 351 | syn match luaFunc /\<math\.randomseed\>/ |
| 352 | syn match luaFunc /\<math\.pi\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 353 | |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 354 | syn match luaFunc /\<io\.close\>/ |
| 355 | syn match luaFunc /\<io\.flush\>/ |
| 356 | syn match luaFunc /\<io\.input\>/ |
| 357 | syn match luaFunc /\<io\.lines\>/ |
| 358 | syn match luaFunc /\<io\.open\>/ |
| 359 | syn match luaFunc /\<io\.output\>/ |
| 360 | syn match luaFunc /\<io\.popen\>/ |
| 361 | syn match luaFunc /\<io\.read\>/ |
| 362 | syn match luaFunc /\<io\.stderr\>/ |
| 363 | syn match luaFunc /\<io\.stdin\>/ |
| 364 | syn match luaFunc /\<io\.stdout\>/ |
| 365 | syn match luaFunc /\<io\.tmpfile\>/ |
| 366 | syn match luaFunc /\<io\.type\>/ |
| 367 | syn match luaFunc /\<io\.write\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 368 | |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 369 | syn match luaFunc /\<os\.clock\>/ |
| 370 | syn match luaFunc /\<os\.date\>/ |
| 371 | syn match luaFunc /\<os\.difftime\>/ |
| 372 | syn match luaFunc /\<os\.execute\>/ |
| 373 | syn match luaFunc /\<os\.exit\>/ |
| 374 | syn match luaFunc /\<os\.getenv\>/ |
| 375 | syn match luaFunc /\<os\.remove\>/ |
| 376 | syn match luaFunc /\<os\.rename\>/ |
| 377 | syn match luaFunc /\<os\.setlocale\>/ |
| 378 | syn match luaFunc /\<os\.time\>/ |
| 379 | syn match luaFunc /\<os\.tmpname\>/ |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 380 | |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 381 | syn match luaFunc /\<debug\.debug\>/ |
| 382 | syn match luaFunc /\<debug\.gethook\>/ |
| 383 | syn match luaFunc /\<debug\.getinfo\>/ |
| 384 | syn match luaFunc /\<debug\.getlocal\>/ |
| 385 | syn match luaFunc /\<debug\.getupvalue\>/ |
| 386 | syn match luaFunc /\<debug\.setlocal\>/ |
| 387 | syn match luaFunc /\<debug\.setupvalue\>/ |
| 388 | syn match luaFunc /\<debug\.sethook\>/ |
| 389 | syn match luaFunc /\<debug\.traceback\>/ |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 390 | if lua_subversion == 1 |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 391 | syn match luaFunc /\<debug\.getfenv\>/ |
| 392 | syn match luaFunc /\<debug\.setfenv\>/ |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 393 | endif |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 394 | if lua_subversion >= 1 |
| 395 | syn match luaFunc /\<debug\.getmetatable\>/ |
| 396 | syn match luaFunc /\<debug\.setmetatable\>/ |
| 397 | syn match luaFunc /\<debug\.getregistry\>/ |
| 398 | if lua_subversion >= 2 |
| 399 | syn match luaFunc /\<debug\.getuservalue\>/ |
| 400 | syn match luaFunc /\<debug\.setuservalue\>/ |
| 401 | syn match luaFunc /\<debug\.upvalueid\>/ |
| 402 | syn match luaFunc /\<debug\.upvaluejoin\>/ |
| 403 | endif |
| 404 | if lua_subversion >= 4 |
| 405 | syn match luaFunc /\<debug.setcstacklimit\>/ |
| 406 | endif |
Bram Moolenaar | cbaff5e | 2022-04-08 17:45:08 +0100 | [diff] [blame] | 407 | endif |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 408 | endif |
| 409 | |
| 410 | " Define the default highlighting. |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 411 | " Only when an item doesn't have highlighting yet |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 412 | |
Bram Moolenaar | 71b6d33 | 2022-09-10 13:13:14 +0100 | [diff] [blame] | 413 | hi def link luaStatement Statement |
| 414 | hi def link luaRepeat Repeat |
| 415 | hi def link luaFor Repeat |
| 416 | hi def link luaString String |
| 417 | hi def link luaString2 String |
| 418 | hi def link luaStringDelimiter luaString |
| 419 | hi def link luaNumber Number |
| 420 | hi def link luaOperator Operator |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 421 | hi def link luaSymbolOperator luaOperator |
Bram Moolenaar | 71b6d33 | 2022-09-10 13:13:14 +0100 | [diff] [blame] | 422 | hi def link luaConstant Constant |
| 423 | hi def link luaCond Conditional |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 424 | hi def link luaCondElse Conditional |
Bram Moolenaar | 71b6d33 | 2022-09-10 13:13:14 +0100 | [diff] [blame] | 425 | hi def link luaFunction Function |
Bram Moolenaar | 9712ff1 | 2022-09-18 13:04:22 +0100 | [diff] [blame] | 426 | hi def link luaMetaMethod Function |
Bram Moolenaar | 71b6d33 | 2022-09-10 13:13:14 +0100 | [diff] [blame] | 427 | hi def link luaComment Comment |
| 428 | hi def link luaCommentDelimiter luaComment |
| 429 | hi def link luaTodo Todo |
| 430 | hi def link luaTable Structure |
| 431 | hi def link luaError Error |
| 432 | hi def link luaParenError Error |
Bram Moolenaar | 71b6d33 | 2022-09-10 13:13:14 +0100 | [diff] [blame] | 433 | hi def link luaSpecial SpecialChar |
| 434 | hi def link luaFunc Identifier |
| 435 | hi def link luaLabel Label |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 436 | |
Bram Moolenaar | fc1421e | 2006-04-20 22:17:20 +0000 | [diff] [blame] | 437 | |
| 438 | let b:current_syntax = "lua" |
| 439 | |
Bram Moolenaar | 5dc6252 | 2012-02-13 00:05:22 +0100 | [diff] [blame] | 440 | let &cpo = s:cpo_save |
| 441 | unlet s:cpo_save |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 442 | " vim: et ts=8 sw=2 |