#
# Lua syntax highlighting
#
# History:
#
# - 2015: Support for long strings and long comments.
# - 2011: String-literal fixes.
# - 2005: Started by Mike Gorchak <lestat@i.com.ua>
context default color53
# keywords
keyword whole and color243
keyword whole break color243
keyword whole do color243
keyword whole else color243
keyword whole elseif color243
keyword whole end color243
keyword whole false color243
keyword whole for color243
keyword whole function color243
keyword whole if color243
keyword whole in color243
keyword whole local color243
keyword whole nil color243
keyword whole not color243
keyword whole or color243
keyword whole repeat color243
keyword whole return color243
keyword whole then color243
keyword whole true color243
keyword whole until color243
keyword whole while color243
# Comment and string delimiters
keyword -- color30
keyword ]\[=\]] color30
# The following colorizes the start delimiter of "long" strings.
# The start delimiter of "long" comments isn't affected by the following
# directive but gets its color from the "--" above (gods know why).
keyword [\[=\][ color30
# Operators
keyword ( color243
keyword ) color243
keyword { color243
keyword } color243
keyword [ color243
keyword ] color243
keyword . color243
keyword , color243
keyword ; color243
keyword : color243
keyword .. color243
keyword ... color243
keyword = color243
keyword == color243
keyword ~= color243
keyword <= color243
keyword => color243
keyword > color243
keyword < color243
keyword \+ color243
keyword - color243
keyword \* color243
keyword / color243
keyword ^ color243
# Library Functions
# basiclib
keyword whole error color19
keyword whole getmetatable color19
keyword whole setmetatable color19
keyword whole getfenv color19
keyword whole setfenv color19
keyword whole next color19
keyword whole ipairs color19
keyword whole pairs color19
keyword whole print color19
keyword whole tonumber color19
keyword whole tostring color19
keyword whole type color19
keyword whole assert color19
#keyword whole unpack color19 # modern code should use table.unpack()
keyword whole rawequal color19
keyword whole rawget color19
keyword whole rawset color19
keyword whole pcall color19
keyword whole xpcall color19
keyword whole collectgarbage color19
keyword whole gcinfo color19
keyword whole loadfile color19
keyword whole dofile color19
keyword whole loadstring color19
keyword whole require color19
keyword whole coroutine.create color19
keyword whole coroutine.wrap color19
keyword whole coroutine.resume color19
keyword whole coroutine.yield color19
keyword whole coroutine.status color19
# stringlib
keyword whole string.len color19
keyword whole string.sub color19
keyword whole string.lower color19
keyword whole string.upper color19
keyword whole string.char color19
keyword whole string.rep color19
keyword whole string.byte color19
keyword whole string.format color19
keyword whole string.dump color19
keyword whole string.find color19
keyword whole string.gfind color19
keyword whole string.gsub color19
# tablelib
keyword whole table.concat color19
keyword whole table.foreach color19
keyword whole table.foreachi color19
keyword whole table.getn color19
keyword whole table.setn color19
keyword whole table.sort color19
keyword whole table.insert color19
keyword whole table.remove color19
keyword whole table.unpack color19
# mathlib
keyword whole math.abs color19
keyword whole math.sin color19
keyword whole math.cos color19
keyword whole math.tan color19
keyword whole math.asin color19
keyword whole math.acos color19
keyword whole math.atan color19
keyword whole math.atan2 color19
keyword whole math.ceil color19
keyword whole math.floor color19
keyword whole math.mod color19
keyword whole math.frexp color19
keyword whole math.ldexp color19
keyword whole math.sqrt color19
keyword whole math.min color19
keyword whole math.max color19
keyword whole math.log color19
keyword whole math.log10 color19
keyword whole math.exp color19
keyword whole math.deg color19
keyword whole math.pow color19
keyword whole math.rad color19
keyword whole math.random color19
keyword whole math.randomseed color19
# iolib
keyword whole io.input color19
keyword whole io.output color19
keyword whole io.lines color19
keyword whole io.close color19
keyword whole io.flush color19
keyword whole io.open color19
keyword whole io.popen color19
keyword whole io.read color19
keyword whole io.tmpfile color19
keyword whole io.type color19
keyword whole io.write color19
# filelib
keyword whole file.flush color19
keyword whole file.read color19
keyword whole file.lines color19
keyword whole file.seek color19
keyword whole file.write color19
keyword whole file.close color19
keyword whole file.__gc color19
keyword whole file.__tostring color19
# syslib
keyword whole os.clock color19
keyword whole os.date color19
keyword whole os.difftime color19
keyword whole os.execute color19
keyword whole os.exit color19
keyword whole os.getenv color19
keyword whole os.remove color19
keyword whole os.rename color19
keyword whole os.setlocale color19
keyword whole os.time color19
keyword whole os.tmpname color19
# debuglib
keyword whole debug.getlocal color19
keyword whole debug.getinfo color19
keyword whole debug.gethook color19
keyword whole debug.getupvalue color19
keyword whole debug.sethook color19
keyword whole debug.setlocal color19
keyword whole debug.setupvalue color19
keyword whole debug.debug color19
keyword whole debug.traceback color19
# Global Variables
keyword whole _VERSION color90
keyword whole _G color90
#
# Long comments
#
context exclusive --[[ ]] color30
# hightlights ldoc tags: "@todo", "@param", "@function" etc.
keyword @\[abcdefghijklmnopqrstuvwxyz\] color196 base
spellcheck
context exclusive --[=[ ]=] color30
keyword @\[abcdefghijklmnopqrstuvwxyz\] color196 base
spellcheck
context exclusive --[==[ ]==] color30
keyword @\[abcdefghijklmnopqrstuvwxyz\] color196 base
spellcheck
context exclusive --[===[ ]===] color30
keyword @\[abcdefghijklmnopqrstuvwxyz\] color196 base
spellcheck
# 4 equals and up (the number of ='s doesn't have to match, but that's the best we can do):
context exclusive --[====\[=\][ ]====\[=\]] color30
keyword @\[abcdefghijklmnopqrstuvwxyz\] color196 base
spellcheck
#
# Long strings
#
context exclusive [[ ]] color90
spellcheck
context exclusive [=[ ]=] color90
spellcheck
context exclusive [==[ ]==] color90
spellcheck
context exclusive [===[ ]===] color90
spellcheck
# 4 equals and up (the number of ='s doesn't have to match, but that's the best we can do):
context exclusive [====\[=\][ ]====\[=\]] color90
spellcheck
# Simple comments
context exclusive -- \n color30
keyword @\[abcdefghijklmnopqrstuvwxyz\] color196 base
spellcheck
# Shebang line
context linestart #! \n color30
# Strings
context " " color28
keyword %a color88
keyword %c color88
keyword %d color88
keyword %l color88
keyword %p color88
keyword %q color88
keyword %s color88
keyword %u color88
keyword %w color88
keyword %x color88
keyword %z color88
keyword \\\\ color88
keyword \\" color88
keyword \\' color88
keyword \\\{abtnvfr\} color88
keyword \\\{0123\}\{01234567\}\{01234567\} color88
keyword \\\{01234567\}\{01234567\} color88
keyword \\\{01234567\} color88
spellcheck
context ' ' color28
keyword %a color88
keyword %c color88
keyword %d color88
keyword %l color88
keyword %p color88
keyword %q color88
keyword %s color88
keyword %u color88
keyword %w color88
keyword %x color88
keyword %z color88
keyword \\\\ color88
keyword \\" color88
keyword \\' color88
keyword \\\{abtnvfr\} color88
keyword \\\{0123\}\{01234567\}\{01234567\} color88
keyword \\\{01234567\}\{01234567\} color88
keyword \\\{01234567\} color88
spellcheck