mc/misc/syntax/lua.syntax
Mooffie 68849625cf Ticket #3471: improve Lua syntax highlighting.
* Support for "long" strings/comments.
* Fixed Syntax.in to recognize both "#!/path/to/lua"  and "#!/usr/bin/env lua".
* Fixed langauge name (it's "Lua", not "LUA").

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2015-06-18 21:17:40 +03:00

296 lines
8.3 KiB
YAML

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