" Language: Lua 4.0, Lua 5.0, Lua 5.1, Lua 5.2 and Lua 5.3 " Maintainer: Marcus Aurelius Farias " First Author: Carlos Augusto Teixeira Mendes " Last Change: 2022 Sep 07 " Options: lua_version = 4 or 5 " lua_subversion = 0 (for 4.0 or 5.0) " or 1, 2, 3 (for 5.1, 5.2 or 5.3) " the default is 5.3 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim if !exists("lua_version") " Default is lua 5.3 let lua_version = 5 let lua_subversion = 3 elseif !exists("lua_subversion") " lua_version exists, but lua_subversion doesn't. In this case set it to 0 let lua_subversion = 0 endif syn case match " syncing method syn sync minlines=1000 if lua_version >= 5 syn keyword luaMetaMethod __add __sub __mul __div __pow __unm __concat syn keyword luaMetaMethod __eq __lt __le syn keyword luaMetaMethod __index __newindex __call syn keyword luaMetaMethod __metatable __mode __gc __tostring endif if lua_version > 5 || (lua_version == 5 && lua_subversion >= 1) syn keyword luaMetaMethod __mod __len endif if lua_version > 5 || (lua_version == 5 && lua_subversion >= 2) syn keyword luaMetaMethod __pairs endif if lua_version > 5 || (lua_version == 5 && lua_subversion >= 3) syn keyword luaMetaMethod __idiv __name syn keyword luaMetaMethod __band __bor __bxor __bnot __shl __shr endif if lua_version > 5 || (lua_version == 5 && lua_subversion >= 4) syn keyword luaMetaMethod __close endif " catch errors caused by wrong parenthesis and wrong curly brackets or " keywords placed outside their respective blocks syn region luaParen transparent start='(' end=')' contains=TOP,luaParenError syn match luaParenError ")" syn match luaError "}" syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>" " Function declaration syn region luaFunctionBlock transparent matchgroup=luaFunction start="\" end="\" contains=TOP " else syn keyword luaCondElse matchgroup=luaCond contained containedin=luaCondEnd else " then ... end syn region luaCondEnd contained transparent matchgroup=luaCond start="\" end="\" contains=TOP " elseif ... then syn region luaCondElseif contained containedin=luaCondEnd transparent matchgroup=luaCond start="\" end="\" contains=TOP " if ... then syn region luaCondStart transparent matchgroup=luaCond start="\" end="\"me=e-4 contains=TOP nextgroup=luaCondEnd skipwhite skipempty " do ... end syn region luaBlock transparent matchgroup=luaStatement start="\" end="\" contains=TOP " repeat ... until syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\" end="\" contains=TOP " while ... do syn region luaWhile transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=TOP nextgroup=luaBlock skipwhite skipempty " for ... do and for ... in ... do syn region luaFor transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=TOP nextgroup=luaBlock skipwhite skipempty syn keyword luaFor contained containedin=luaFor in " other keywords syn keyword luaStatement return local break if lua_version > 5 || (lua_version == 5 && lua_subversion >= 2) syn keyword luaStatement goto syn match luaLabel "::\I\i*::" endif " operators syn keyword luaOperator and or not if (lua_version == 5 && lua_subversion >= 3) || lua_version > 5 syn match luaSymbolOperator "[#<>=~^&|*/%+-]\|\.\{2,3}" elseif lua_version == 5 && (lua_subversion == 1 || lua_subversion == 2) syn match luaSymbolOperator "[#<>=~^*/%+-]\|\.\{2,3}" else syn match luaSymbolOperator "[<>=~^*/+-]\|\.\{2,3}" endif " comments syn keyword luaTodo contained TODO FIXME XXX syn match luaComment "--.*$" contains=luaTodo,@Spell if lua_version == 5 && lua_subversion == 0 syn region luaComment matchgroup=luaCommentDelimiter start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment,@Spell 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=luaCommentDelimiter start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell endif " first line may start with #! syn match luaComment "\%^#!.*" syn keyword luaConstant nil if lua_version > 4 syn keyword luaConstant true false endif " strings syn match luaSpecial contained #\\[\\abfnrtv'"[\]]\|\\[[:digit:]]\{,3}# if lua_version == 5 if lua_subversion == 0 syn region luaString2 matchgroup=luaStringDelimiter start=+\[\[+ end=+\]\]+ contains=luaString2,@Spell else if lua_subversion >= 2 syn match luaSpecial contained #\\z\|\\x[[:xdigit:]]\{2}# endif if lua_subversion >= 3 syn match luaSpecial contained #\\u{[[:xdigit:]]\+}# endif syn region luaString2 matchgroup=luaStringDelimiter start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell endif endif syn region luaString matchgroup=luaStringDelimiter start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell syn region luaString matchgroup=luaStringDelimiter start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial,@Spell " integer number syn match luaNumber "\<\d\+\>" " floating point number, with dot, optional exponent syn match luaNumber "\<\d\+\.\d*\%([eE][-+]\=\d\+\)\=" " floating point number, starting with a dot, optional exponent syn match luaNumber "\.\d\+\%([eE][-+]\=\d\+\)\=\>" " floating point number, without dot, with exponent syn match luaNumber "\<\d\+[eE][-+]\=\d\+\>" " hex numbers if lua_version >= 5 if lua_subversion == 1 syn match luaNumber "\<0[xX]\x\+\>" elseif lua_subversion >= 2 syn match luaNumber "\<0[xX][[:xdigit:].]\+\%([pP][-+]\=\d\+\)\=\>" endif endif " tables syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=TOP,luaStatement " methods syntax match luaFunc ":\@<=\k\+" " built-in functions syn keyword luaFunc assert collectgarbage dofile error next syn keyword luaFunc print rawget rawset self 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 syn keyword luaFunc getmetatable setmetatable syn keyword luaFunc ipairs pairs syn keyword luaFunc pcall xpcall syn keyword luaFunc _G loadfile rawequal require if lua_subversion == 0 syn keyword luaFunc getfenv setfenv syn keyword luaFunc loadstring unpack syn keyword luaFunc gcinfo loadlib LUA_PATH _LOADED _REQUIREDNAME else syn keyword luaFunc load select syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ if lua_subversion == 1 syn keyword luaFunc getfenv setfenv syn keyword luaFunc loadstring module unpack syn match luaFunc /\/ syn match luaFunc /\/ elseif lua_subversion >= 2 syn keyword luaFunc _ENV rawlen syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ endif if lua_subversion >= 3 syn match luaFunc /\/ endif if lua_subversion >= 4 syn keyword luaFunc warn syn match luaFunc /\/ endif syn match luaFunc /\/ endif syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ if lua_subversion == 0 syn match luaFunc /\/ else syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ endif if lua_subversion >= 3 syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ endif if lua_subversion == 0 syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ elseif lua_subversion == 1 syn match luaFunc /\/ elseif lua_subversion >= 2 syn match luaFunc /\/ syn match luaFunc /\/ if lua_subversion >= 3 syn match luaFunc /\/ endif endif syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ if lua_subversion == 2 syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ endif syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ if lua_subversion < 3 syn match luaFunc /\/ endif syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ if lua_subversion == 0 syn match luaFunc /\/ syn match luaFunc /\/ elseif lua_subversion == 1 syn match luaFunc /\/ endif if lua_subversion >= 1 syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ if lua_subversion == 1 || lua_subversion == 2 syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ endif endif syn match luaFunc /\/ syn match luaFunc /\/ if lua_subversion < 3 syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ else syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ endif syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ if lua_subversion == 1 syn match luaFunc /\/ syn match luaFunc /\/ endif if lua_subversion >= 1 syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ if lua_subversion >= 2 syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ endif if lua_subversion >= 4 syn match luaFunc /\/ endif endif endif " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link luaStatement Statement hi def link luaRepeat Repeat hi def link luaFor Repeat hi def link luaString String hi def link luaString2 String hi def link luaStringDelimiter luaString hi def link luaNumber Number hi def link luaOperator Operator hi def link luaSymbolOperator luaOperator hi def link luaConstant Constant hi def link luaCond Conditional hi def link luaCondElse Conditional hi def link luaFunction Function hi def link luaMetaMethod Function hi def link luaComment Comment hi def link luaCommentDelimiter luaComment hi def link luaTodo Todo hi def link luaTable Structure hi def link luaError Error hi def link luaParenError Error hi def link luaSpecial SpecialChar hi def link luaFunc Identifier hi def link luaLabel Label syn keyword luaFunc accept_target syn keyword luaFunc add_3dmesh syn keyword luaFunc alloc_surface syn keyword luaFunc appl_arguments syn keyword luaFunc arcantarget_hint syn keyword luaFunc attrtag_model syn keyword luaFunc audio_buffer_size syn keyword luaFunc audio_gain syn keyword luaFunc audio_listener syn keyword luaFunc audio_outputs syn keyword luaFunc audio_position syn keyword luaFunc audio_reconfigure syn keyword luaFunc benchmark_data syn keyword luaFunc benchmark_enable syn keyword luaFunc benchmark_timestamp syn keyword luaFunc benchmark_tracedata syn keyword luaFunc blend_image syn keyword luaFunc bond_target syn keyword luaFunc build_3dbox syn keyword luaFunc build_3dplane syn keyword luaFunc build_cylinder syn keyword luaFunc build_pointcloud syn keyword luaFunc build_shader syn keyword luaFunc build_sphere syn keyword luaFunc camtag_model syn keyword luaFunc capture_audio syn keyword luaFunc center_image syn keyword luaFunc close_rawresource syn keyword luaFunc color_surface syn keyword luaFunc controller_leds syn keyword luaFunc copy_image_transform syn keyword luaFunc copy_surface_properties syn keyword luaFunc crop_image syn keyword luaFunc current_context_usage syn keyword luaFunc cursor_position syn keyword luaFunc cursor_setstorage syn keyword luaFunc decode_modifiers syn keyword luaFunc define_arcantarget syn keyword luaFunc define_calctarget syn keyword luaFunc define_feedtarget syn keyword luaFunc define_linktarget syn keyword luaFunc define_nulltarget syn keyword luaFunc define_recordtarget syn keyword luaFunc define_rendertarget syn keyword luaFunc delete_audio syn keyword luaFunc delete_image syn keyword luaFunc delete_shader syn keyword luaFunc expire_image syn keyword luaFunc fill_surface syn keyword luaFunc finalize_3dmodel syn keyword luaFunc focus_target syn keyword luaFunc force_image_blend syn keyword luaFunc forward3d_model syn keyword luaFunc frameserver_debugstall syn keyword luaFunc freeze_image syn keyword luaFunc get_key syn keyword luaFunc get_keys syn keyword luaFunc glob_resource syn keyword luaFunc hide_image syn keyword luaFunc image_access_storage syn keyword luaFunc image_active_frame syn keyword luaFunc image_children syn keyword luaFunc image_clip_off syn keyword luaFunc image_clip_on syn keyword luaFunc image_color syn keyword luaFunc image_framecyclemode syn keyword luaFunc image_framesetsize syn keyword luaFunc image_get_txcos syn keyword luaFunc image_hit syn keyword luaFunc image_inherit_order syn keyword luaFunc image_loaded syn keyword luaFunc image_mask_clear syn keyword luaFunc image_mask_clearall syn keyword luaFunc image_mask_set syn keyword luaFunc image_mask_toggle syn keyword luaFunc image_matchstorage syn keyword luaFunc image_metadata syn keyword luaFunc image_mipmap syn keyword luaFunc image_origo_offset syn keyword luaFunc image_parent syn keyword luaFunc image_pushasynch syn keyword luaFunc image_resize_storage syn keyword luaFunc image_scale_txcos syn keyword luaFunc image_screen_coordinates syn keyword luaFunc image_set_txcos syn keyword luaFunc image_set_txcos_default syn keyword luaFunc image_shader syn keyword luaFunc image_sharestorage syn keyword luaFunc image_state syn keyword luaFunc image_storage_properties syn keyword luaFunc image_storage_slice syn keyword luaFunc image_surface_initial syn keyword luaFunc image_surface_initial_properties syn keyword luaFunc image_surface_properties syn keyword luaFunc image_surface_resolve syn keyword luaFunc image_surface_resolve_properties syn keyword luaFunc image_tesselation syn keyword luaFunc image_texfilter syn keyword luaFunc image_tracetag syn keyword luaFunc image_transform_cycle syn keyword luaFunc input_capabilities syn keyword luaFunc input_remap_translation syn keyword luaFunc input_samplebase syn keyword luaFunc input_target syn keyword luaFunc inputanalog_filter syn keyword luaFunc inputanalog_query syn keyword luaFunc inputanalog_toggle syn keyword luaFunc instant_image_transform syn keyword luaFunc kbd_repeat syn keyword luaFunc launch_avfeed syn keyword luaFunc launch_decode syn keyword luaFunc launch_target syn keyword luaFunc led_intensity syn keyword luaFunc link_image syn keyword luaFunc list_audio_inputs syn keyword luaFunc list_namespaces syn keyword luaFunc list_target_tags syn keyword luaFunc list_targets syn keyword luaFunc load_asample syn keyword luaFunc load_image syn keyword luaFunc load_image_asynch syn keyword luaFunc map_video_display syn keyword luaFunc match_keys syn keyword luaFunc max_current_image_order syn keyword luaFunc mesh_shader syn keyword luaFunc message_target syn keyword luaFunc move3d_model syn keyword luaFunc move_cursor syn keyword luaFunc move_image syn keyword luaFunc net_authenticate syn keyword luaFunc net_discover syn keyword luaFunc net_listen syn keyword luaFunc net_open syn keyword luaFunc new_3dmodel syn keyword luaFunc nudge_cursor syn keyword luaFunc nudge_image syn keyword luaFunc null_surface syn keyword luaFunc open_nonblock syn keyword luaFunc open_rawresource syn keyword luaFunc order_image syn keyword luaFunc orient3d_model syn keyword luaFunc pacify_target syn keyword luaFunc persist_image syn keyword luaFunc pick_items syn keyword luaFunc play_audio syn keyword luaFunc pop_video_context syn keyword luaFunc push_video_context syn keyword luaFunc random_surface syn keyword luaFunc raw_surface syn keyword luaFunc read_rawresource syn keyword luaFunc recordtarget_gain syn keyword luaFunc relink_image syn keyword luaFunc render_text syn keyword luaFunc rendertarget_attach syn keyword luaFunc rendertarget_bind syn keyword luaFunc rendertarget_detach syn keyword luaFunc rendertarget_forceupdate syn keyword luaFunc rendertarget_id syn keyword luaFunc rendertarget_metrics syn keyword luaFunc rendertarget_noclear syn keyword luaFunc rendertarget_range syn keyword luaFunc rendertarget_reconfigure syn keyword luaFunc rendertarget_vids syn keyword luaFunc resample_image syn keyword luaFunc reset_image_transform syn keyword luaFunc reset_target syn keyword luaFunc resize_cursor syn keyword luaFunc resize_image syn keyword luaFunc resize_video_canvas syn keyword luaFunc resource syn keyword luaFunc restore_target syn keyword luaFunc resume_target syn keyword luaFunc rotate3d_model syn keyword luaFunc rotate_image syn keyword luaFunc save_screenshot syn keyword luaFunc scale3d_model syn keyword luaFunc scale_3dvertices syn keyword luaFunc scale_image syn keyword luaFunc set_context_attachment syn keyword luaFunc set_image_as_frame syn keyword luaFunc set_led syn keyword luaFunc set_led_rgb syn keyword luaFunc shader_ugroup syn keyword luaFunc shader_uniform syn keyword luaFunc show_image syn keyword luaFunc shutdown syn keyword luaFunc snapshot_target syn keyword luaFunc step3d_model syn keyword luaFunc stepframe_target syn keyword luaFunc store_key syn keyword luaFunc storepop_video_context syn keyword luaFunc storepush_video_context syn keyword luaFunc strafe3d_model syn keyword luaFunc subsystem_reset syn keyword luaFunc suspend_target syn keyword luaFunc switch_default_blendmode syn keyword luaFunc switch_default_imageproc syn keyword luaFunc switch_default_scalemode syn keyword luaFunc switch_default_texfilter syn keyword luaFunc switch_default_texmode syn keyword luaFunc swizzle_model syn keyword luaFunc system_collapse syn keyword luaFunc system_context_size syn keyword luaFunc system_defaultfont syn keyword luaFunc system_identstr syn keyword luaFunc system_load syn keyword luaFunc system_snapshot syn keyword luaFunc tag_image_transform syn keyword luaFunc target_alloc syn keyword luaFunc target_anchorhint syn keyword luaFunc target_configurations syn keyword luaFunc target_coreopt syn keyword luaFunc target_devicehint syn keyword luaFunc target_displayhint syn keyword luaFunc target_flags syn keyword luaFunc target_fonthint syn keyword luaFunc target_framemode syn keyword luaFunc target_geohint syn keyword luaFunc target_graphmode syn keyword luaFunc target_input syn keyword luaFunc target_parent syn keyword luaFunc target_portconfig syn keyword luaFunc target_seek syn keyword luaFunc target_synchronous syn keyword luaFunc target_updatehandler syn keyword luaFunc target_verbose syn keyword luaFunc text_dimensions syn keyword luaFunc text_surface syn keyword luaFunc toggle_mouse_grab syn keyword luaFunc transfer_image_transform syn keyword luaFunc utf8kind syn keyword luaFunc valid_vid syn keyword luaFunc video_3dorder syn keyword luaFunc video_display_state syn keyword luaFunc video_displaydescr syn keyword luaFunc video_displaygamma syn keyword luaFunc video_displaymodes syn keyword luaFunc video_synchronization syn keyword luaFunc vr_map_limb syn keyword luaFunc vr_metadata syn keyword luaFunc vr_setup syn keyword luaFunc warning syn keyword luaFunc write_rawresource syn keyword luaFunc zap_resource let b:current_syntax = "arcan_lua" let &cpo = s:cpo_save unlet s:cpo_save " vim: et ts=8 sw=2