mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			300 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			300 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:	Lua 4.0, Lua 5.0 and Lua 5.1
 | |
| " Maintainer:	Marcus Aurelius Farias <marcus.cf 'at' bol com br>
 | |
| " First Author:	Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
 | |
| " Last Change:	2006 Apr 21
 | |
| " Options:	lua_version = 4 or 5
 | |
| "		lua_subversion = 0 (4.0, 5.0) or 1 (5.1)
 | |
| "		default 5.1
 | |
| 
 | |
| " For version 5.x: Clear all syntax items
 | |
| " For version 6.x: Quit when a syntax file was already loaded
 | |
| if version < 600
 | |
|   syntax clear
 | |
| elseif exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| if !exists("lua_version")
 | |
|   " Default is lua 5.1
 | |
|   let lua_version = 5
 | |
|   let lua_subversion = 1
 | |
| elseif !exists("lua_subversion")
 | |
|   " lua_version exists, but lua_subversion doesn't. So, set it to 0
 | |
|   let lua_subversion = 0
 | |
| endif
 | |
| 
 | |
| syn case match
 | |
| 
 | |
| " syncing method
 | |
| syn sync minlines=100
 | |
| 
 | |
| " Comments
 | |
| syn keyword luaTodo             contained TODO FIXME XXX
 | |
| syn match   luaComment          "--.*$" contains=luaTodo
 | |
| if lua_version == 5 && lua_subversion == 0
 | |
|   syn region  luaComment        matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment
 | |
|   syn region  luaInnerComment   contained transparent start="\[\[" end="\]\]"
 | |
| elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
 | |
|   " Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc.
 | |
|   syn region  luaComment        matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]"
 | |
| endif
 | |
| 
 | |
| " First line may start with #!
 | |
| syn match luaComment "\%^#!.*"
 | |
| 
 | |
| " catch errors caused by wrong parenthesis and wrong curly brackets or
 | |
| " keywords placed outside their respective blocks
 | |
| 
 | |
| syn region luaParen transparent start='(' end=')' contains=ALLBUT,luaError,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement
 | |
| syn match  luaError ")"
 | |
| syn match  luaError "}"
 | |
| syn match  luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>"
 | |
| 
 | |
| " Function declaration
 | |
| syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
 | |
| 
 | |
| " if then else elseif end
 | |
| syn keyword luaCond contained else
 | |
| 
 | |
| " then ... end
 | |
| syn region luaCondEnd contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaRepeat
 | |
| 
 | |
| " elseif ... then
 | |
| syn region luaCondElseif contained transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
 | |
| 
 | |
| " if ... then
 | |
| syn region luaCondStart transparent matchgroup=luaCond start="\<if\>" end="\<then\>"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaCondEnd skipwhite skipempty
 | |
| 
 | |
| " do ... end
 | |
| syn region luaBlock transparent matchgroup=luaStatement start="\<do\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
 | |
| 
 | |
| " repeat ... until
 | |
| syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
 | |
| 
 | |
| " while ... do
 | |
| syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<while\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaBlock skipwhite skipempty
 | |
| 
 | |
| " for ... do and for ... in ... do
 | |
| syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd nextgroup=luaBlock skipwhite skipempty
 | |
| 
 | |
| " Following 'else' example. This is another item to those
 | |
| " contains=ALLBUT,... because only the 'for' luaRepeatBlock contains it.
 | |
| syn keyword luaRepeat contained in
 | |
| 
 | |
| " other keywords
 | |
| syn keyword luaStatement return local break
 | |
| syn keyword luaOperator  and or not
 | |
| syn keyword luaConstant  nil
 | |
| if lua_version > 4
 | |
|   syn keyword luaConstant true false
 | |
| endif
 | |
| 
 | |
| " Strings
 | |
| if lua_version < 5
 | |
|   syn match  luaSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}"
 | |
| elseif lua_version == 5 && lua_subversion == 0
 | |
|   syn match  luaSpecial contained "\\[\\abfnrtv\'\"[\]]\|\\\d\{,3}"
 | |
|   syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2
 | |
| elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
 | |
|   syn match  luaSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}"
 | |
|   syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]"
 | |
| endif
 | |
| syn region luaString  start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial
 | |
| syn region luaString  start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial
 | |
| 
 | |
| " integer number
 | |
| syn match luaNumber "\<[0-9]\+\>"
 | |
| " floating point number, with dot, optional exponent
 | |
| syn match luaFloat  "\<[0-9]\+\.[0-9]*\%(e[-+]\=[0-9]\+\)\=\>"
 | |
| " floating point number, starting with a dot, optional exponent
 | |
| syn match luaFloat  "\.[0-9]\+\%(e[-+]\=[0-9]\+\)\=\>"
 | |
| " floating point number, without dot, with exponent
 | |
| syn match luaFloat  "\<[0-9]\+e[-+]\=[0-9]\+\>"
 | |
| 
 | |
| " tables
 | |
| syn region  luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement
 | |
| 
 | |
| syn keyword luaFunc assert collectgarbage dofile error next
 | |
| syn keyword luaFunc print rawget rawset tonumber tostring type _VERSION
 | |
| 
 | |
| if lua_version == 4
 | |
|   syn keyword luaFunc _ALERT _ERRORMESSAGE gcinfo
 | |
|   syn keyword luaFunc call copytagmethods dostring
 | |
|   syn keyword luaFunc foreach foreachi getglobal getn
 | |
|   syn keyword luaFunc gettagmethod globals newtag
 | |
|   syn keyword luaFunc setglobal settag settagmethod sort
 | |
|   syn keyword luaFunc tag tinsert tremove
 | |
|   syn keyword luaFunc _INPUT _OUTPUT _STDIN _STDOUT _STDERR
 | |
|   syn keyword luaFunc openfile closefile flush seek
 | |
|   syn keyword luaFunc setlocale execute remove rename tmpname
 | |
|   syn keyword luaFunc getenv date clock exit
 | |
|   syn keyword luaFunc readfrom writeto appendto read write
 | |
|   syn keyword luaFunc PI abs sin cos tan asin
 | |
|   syn keyword luaFunc acos atan atan2 ceil floor
 | |
|   syn keyword luaFunc mod frexp ldexp sqrt min max log
 | |
|   syn keyword luaFunc log10 exp deg rad random
 | |
|   syn keyword luaFunc randomseed strlen strsub strlower strupper
 | |
|   syn keyword luaFunc strchar strrep ascii strbyte
 | |
|   syn keyword luaFunc format strfind gsub
 | |
|   syn keyword luaFunc getinfo getlocal setlocal setcallhook setlinehook
 | |
| elseif lua_version == 5
 | |
|   " Not sure if all these functions need to be highlighted...
 | |
|   syn keyword luaFunc _G getfenv getmetatable ipairs loadfile
 | |
|   syn keyword luaFunc loadstring pairs pcall rawequal
 | |
|   syn keyword luaFunc require setfenv setmetatable unpack xpcall
 | |
|   if lua_subversion == 0
 | |
|     syn keyword luaFunc gcinfo loadlib LUA_PATH _LOADED _REQUIREDNAME
 | |
|   elseif lua_subversion == 1
 | |
|     syn keyword luaFunc load module select
 | |
|     syn match luaFunc /package\.cpath/
 | |
|     syn match luaFunc /package\.loaded/
 | |
|     syn match luaFunc /package\.loadlib/
 | |
|     syn match luaFunc /package\.path/
 | |
|     syn match luaFunc /package\.preload/
 | |
|     syn match luaFunc /package\.seeall/
 | |
|     syn match luaFunc /coroutine\.running/
 | |
|   endif
 | |
|   syn match   luaFunc /coroutine\.create/
 | |
|   syn match   luaFunc /coroutine\.resume/
 | |
|   syn match   luaFunc /coroutine\.status/
 | |
|   syn match   luaFunc /coroutine\.wrap/
 | |
|   syn match   luaFunc /coroutine\.yield/
 | |
|   syn match   luaFunc /string\.byte/
 | |
|   syn match   luaFunc /string\.char/
 | |
|   syn match   luaFunc /string\.dump/
 | |
|   syn match   luaFunc /string\.find/
 | |
|   syn match   luaFunc /string\.len/
 | |
|   syn match   luaFunc /string\.lower/
 | |
|   syn match   luaFunc /string\.rep/
 | |
|   syn match   luaFunc /string\.sub/
 | |
|   syn match   luaFunc /string\.upper/
 | |
|   syn match   luaFunc /string\.format/
 | |
|   syn match   luaFunc /string\.gsub/
 | |
|   if lua_subversion == 0
 | |
|     syn match luaFunc /string\.gfind/
 | |
|     syn match luaFunc /table\.getn/
 | |
|     syn match luaFunc /table\.setn/
 | |
|     syn match luaFunc /table\.foreach/
 | |
|     syn match luaFunc /table\.foreachi/
 | |
|   elseif lua_subversion == 1
 | |
|     syn match luaFunc /string\.gmatch/
 | |
|     syn match luaFunc /string\.match/
 | |
|     syn match luaFunc /string\.reverse/
 | |
|     syn match luaFunc /table\.maxn/
 | |
|   endif
 | |
|   syn match   luaFunc /table\.concat/
 | |
|   syn match   luaFunc /table\.sort/
 | |
|   syn match   luaFunc /table\.insert/
 | |
|   syn match   luaFunc /table\.remove/
 | |
|   syn match   luaFunc /math\.abs/
 | |
|   syn match   luaFunc /math\.acos/
 | |
|   syn match   luaFunc /math\.asin/
 | |
|   syn match   luaFunc /math\.atan/
 | |
|   syn match   luaFunc /math\.atan2/
 | |
|   syn match   luaFunc /math\.ceil/
 | |
|   syn match   luaFunc /math\.sin/
 | |
|   syn match   luaFunc /math\.cos/
 | |
|   syn match   luaFunc /math\.tan/
 | |
|   syn match   luaFunc /math\.deg/
 | |
|   syn match   luaFunc /math\.exp/
 | |
|   syn match   luaFunc /math\.floor/
 | |
|   syn match   luaFunc /math\.log/
 | |
|   syn match   luaFunc /math\.log10/
 | |
|   syn match   luaFunc /math\.max/
 | |
|   syn match   luaFunc /math\.min/
 | |
|   if lua_subversion == 0
 | |
|     syn match luaFunc /math\.mod/
 | |
|   elseif lua_subversion == 1
 | |
|     syn match luaFunc /math\.fmod/
 | |
|     syn match luaFunc /math\.modf/
 | |
|     syn match luaFunc /math\.cosh/
 | |
|     syn match luaFunc /math\.sinh/
 | |
|     syn match luaFunc /math\.tanh/
 | |
|   endif
 | |
|   syn match   luaFunc /math\.pow/
 | |
|   syn match   luaFunc /math\.rad/
 | |
|   syn match   luaFunc /math\.sqrt/
 | |
|   syn match   luaFunc /math\.frexp/
 | |
|   syn match   luaFunc /math\.ldexp/
 | |
|   syn match   luaFunc /math\.random/
 | |
|   syn match   luaFunc /math\.randomseed/
 | |
|   syn match   luaFunc /math\.pi/
 | |
|   syn match   luaFunc /io\.stdin/
 | |
|   syn match   luaFunc /io\.stdout/
 | |
|   syn match   luaFunc /io\.stderr/
 | |
|   syn match   luaFunc /io\.close/
 | |
|   syn match   luaFunc /io\.flush/
 | |
|   syn match   luaFunc /io\.input/
 | |
|   syn match   luaFunc /io\.lines/
 | |
|   syn match   luaFunc /io\.open/
 | |
|   syn match   luaFunc /io\.output/
 | |
|   syn match   luaFunc /io\.popen/
 | |
|   syn match   luaFunc /io\.read/
 | |
|   syn match   luaFunc /io\.tmpfile/
 | |
|   syn match   luaFunc /io\.type/
 | |
|   syn match   luaFunc /io\.write/
 | |
|   syn match   luaFunc /os\.clock/
 | |
|   syn match   luaFunc /os\.date/
 | |
|   syn match   luaFunc /os\.difftime/
 | |
|   syn match   luaFunc /os\.execute/
 | |
|   syn match   luaFunc /os\.exit/
 | |
|   syn match   luaFunc /os\.getenv/
 | |
|   syn match   luaFunc /os\.remove/
 | |
|   syn match   luaFunc /os\.rename/
 | |
|   syn match   luaFunc /os\.setlocale/
 | |
|   syn match   luaFunc /os\.time/
 | |
|   syn match   luaFunc /os\.tmpname/
 | |
|   syn match   luaFunc /debug\.debug/
 | |
|   syn match   luaFunc /debug\.gethook/
 | |
|   syn match   luaFunc /debug\.getinfo/
 | |
|   syn match   luaFunc /debug\.getlocal/
 | |
|   syn match   luaFunc /debug\.getupvalue/
 | |
|   syn match   luaFunc /debug\.setlocal/
 | |
|   syn match   luaFunc /debug\.setupvalue/
 | |
|   syn match   luaFunc /debug\.sethook/
 | |
|   syn match   luaFunc /debug\.traceback/
 | |
|   if lua_subversion == 1
 | |
|     syn match luaFunc /debug\.getfenv/
 | |
|     syn match luaFunc /debug\.getmetatable/
 | |
|     syn match luaFunc /debug\.getregistry/
 | |
|     syn match luaFunc /debug\.setfenv/
 | |
|     syn match luaFunc /debug\.setmetatable/
 | |
|   endif
 | |
| endif
 | |
| 
 | |
| " Define the default highlighting.
 | |
| " For version 5.7 and earlier: only when not done already
 | |
| " For version 5.8 and later: only when an item doesn't have highlighting yet
 | |
| if version >= 508 || !exists("did_lua_syntax_inits")
 | |
|   if version < 508
 | |
|     let did_lua_syntax_inits = 1
 | |
|     command -nargs=+ HiLink hi link <args>
 | |
|   else
 | |
|     command -nargs=+ HiLink hi def link <args>
 | |
|   endif
 | |
| 
 | |
|   HiLink luaStatement		Statement
 | |
|   HiLink luaRepeat		Repeat
 | |
|   HiLink luaString		String
 | |
|   HiLink luaString2		String
 | |
|   HiLink luaNumber		Number
 | |
|   HiLink luaFloat		Float
 | |
|   HiLink luaOperator		Operator
 | |
|   HiLink luaConstant		Constant
 | |
|   HiLink luaCond		Conditional
 | |
|   HiLink luaFunction		Function
 | |
|   HiLink luaComment		Comment
 | |
|   HiLink luaTodo		Todo
 | |
|   HiLink luaTable		Structure
 | |
|   HiLink luaError		Error
 | |
|   HiLink luaSpecial		SpecialChar
 | |
|   HiLink luaFunc		Identifier
 | |
| 
 | |
|   delcommand HiLink
 | |
| endif
 | |
| 
 | |
| let b:current_syntax = "lua"
 | |
| 
 | |
| " vim: et ts=8
 |