From c98b23c0c3db6d1428f0eeadd937ebcd12c11ffb Mon Sep 17 00:00:00 2001 From: g012 Date: Sat, 16 Sep 2017 00:11:22 +0200 Subject: [PATCH] Added vim indentation file, added all opcodes into vim syntax file. --- README.md | 6 +- asm.lua | 79 +++--- l65.vim | 375 ----------------------------- vim/indent/l65.vim | 122 ++++++++++ vim/syntax/l65.vim | 589 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 762 insertions(+), 409 deletions(-) delete mode 100644 l65.vim create mode 100644 vim/indent/l65.vim create mode 100644 vim/syntax/l65.vim diff --git a/README.md b/README.md index a729c0d..f9892f2 100644 --- a/README.md +++ b/README.md @@ -1 +1,5 @@ -# l65 \ No newline at end of file +# l65 + +Enable vim files: + * copy vim/* into ~/vimfiles/ + * add "au BufRead,BufNewFile *.l65 set syntax=l65 filetype=l65" to ~/.vimrc (or ~/_vimrc on Windows) diff --git a/asm.lua b/asm.lua index 957f031..4115ebb 100644 --- a/asm.lua +++ b/asm.lua @@ -1,6 +1,3 @@ -local g = function(a) return a*3 end -local f = function(a) return a*3 end - dofile "vcs.lua" TIM_OVERSCAN = 50 -- TIM64T, 3200 cycles = ~ 42 scanlines @@ -32,7 +29,7 @@ end --@@message byte(4) "test" byte(0) -section("data") +section(function(o) return o+("data") end) do crosspage() byte(1, 2) byte(3, 4) endpage() end @@ -50,45 +47,61 @@ ptr_table("ptrs", message, data, 0) --section{ "toto", align = 256, offset = 16 } --section{ "toto", org = 0xf100 } --section "waitForIntim" -section("waitForIntim") --alt short syntax when no other option +section(function(o) return o+("waitForIntim") end) --alt short syntax when no other option -- n_{ a=INTIM } ? --lda(INTIM) -- or a=INTIM --bne "waitForIntim" - ldx_immediate(0xf0) - ldx_immediate(13) - ldy_immediate(0xAB - 16 + 27 & 3 | 6 ~ 0xf >> ~3 << 1 // 5) - --[[ - lda data - lda data,5 - lda data,function(final_address) return final_address & 3 end - lda data,\a(a&3) - lda (INTIM,5,x) - lda (INTIM,5),y - -- parse value list, si #list > 1 && list[#list-1] == 'x' ... - ]] + ldx_immediate (function(o) return o+(0xf0) end) + ldx_immediate (function(o) return o+(13) end) + ldy_immediate (function(o) return o+(0xAB - 16 + 27 & 3 | 6 ~ 0xf >> ~3 << 1 // 5) end) + + lda_absolute(function(o) return o+( data) end) + lda_absolute(function(o) return o+( data) end,5) + lda_absolute_x(function(o) return o+( data) end,5) + lda_absolute_y(function(o) return o+( data) end,5) + lda_absolute(function(o) return o+( data+3) end,12) + lda_absolute_x(function(o) return o+( data+3) end,12) + lda_absolute_y(function(o) return o+( data+3) end,12) + lda_indirect_x (function(o) return o+(INTIM) end,5) + lda_indirect_x (function(o) return o+(INTIM) end,function(a) return a+2 end) + lda_indirect_y (function(o) return o+(INTIM) end,5) + lda_indirect_y (function(o) return o+(INTIM) end,function(a) return a+2 end) + jmp_indirect (function(o) return o+(INTIM) end) + jmp_indirect (function(o) return o+(INTIM) end,12) + jmp_indirect (function(o) return o+(INTIM) end,function(a) return a-4 end) + + lda_absolute( function(c) return data * c end, v) + lda_absolute( function(c) return data*c end, v) + local f = function(c) return data*c end v=5 lda_absolute(f,v) v=12 lda_absolute(f,v) + local g = function() return function(c) return data * c end end + + lda_absolute(g(),v) + lda_absolute( f,v) + lda_absolute_x (function(o) return o+(_toto+15) end,16) + lda_immediate (15) do samepage() - lda_immediate(0xac) - lda_immediate(INTIM) - lda_absolute( 0xbeef) - lda_absolute( INTIM) - lda_absolute_nozp( INTIM) - lda_absolute_x( INTIM) - lda_absolute_x( INTIM) - lda_indirect_x(INTIM) - lda_indirect_y(INTIM) endpage() + lda_immediate (function(o) return o+(0xac) end) + lda_immediate (function(o) return o+(INTIM) end) + lda_absolute(function(o) return o+( 0xbeef) end) + lda_absolute(function(o) return o+( INTIM) end) + lda_absolute_nozp(function(o) return o+( INTIM) end) + lda_absolute_x(function(o) return o+( INTIM) end) + lda_absolute_y(function(o) return o+( INTIM) end) + lda_indirect_x (function(o) return o+(INTIM) end) + lda_indirect_y (function(o) return o+(INTIM) end) endpage() end asl_implied() - asl_absolute( INTIM) + asl_absolute(function(o) return o+( INTIM) end) asl_implied() -label_local("toto") - bne_relative( "test") - bne_relative( "waitForIntim") - bne_relative( f()) - bne_relative_local("toto") +label(function(o) return o+("_toto") end) + bne_relative(function(o) return o+( "test") end) + bne_relative(function(o) return o+( "waitForIntim") end) + bne_relative(function(o) return o+( f()) end) + bne_relative(function(o) return o+( "_toto") end) - jam_implied() asl_implied() lsr_implied() ldx_immediate(16) ldy_absolute( 0xf0f0) + jam_implied() asl_implied() lsr_implied() ldx_immediate (function(o) return o+(16) end) ldy_absolute(function(o) return o+( 0xf0f0) end) rts_implied() diff --git a/l65.vim b/l65.vim deleted file mode 100644 index 3095c6b..0000000 --- a/l65.vim +++ /dev/null @@ -1,375 +0,0 @@ -" Vim syntax file -" Language: Lua 4.0, Lua 5.0, Lua 5.1 and Lua 5.2 -" Maintainer: Marcus Aurelius Farias -" First Author: Carlos Augusto Teixeira Mendes -" Last Change: 2012 Aug 12 -" Options: lua_version = 4 or 5 -" lua_subversion = 0 (4.0, 5.0) or 1 (5.1) or 2 (5.2) -" default 5.2 - -" 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 - -let s:cpo_save = &cpo -set cpo&vim - -if !exists("lua_version") - " Default is lua 5.2 - let lua_version = 5 - let lua_subversion = 2 -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,@Spell -if lua_version == 5 && lua_subversion == 0 - syn region luaComment matchgroup=luaComment 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=luaComment start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell -endif - -" First line may start with #! -syn match luaComment "\%^#!.*" - -syn region l65PreProc start="^#\s*\(pragma\>\)" skip="\\$" end="$" keepend - -" 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,luaParenError,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaBlock,luaLoopBlock,luaIn,luaStatement -syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaBraceError,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaBlock,luaLoopBlock,luaIn,luaStatement - -syn match luaParenError ")" -syn match luaBraceError "}" -syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>" - -" function ... end -syn region luaFunctionBlock transparent matchgroup=luaFunction start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn - -" if ... then -syn region luaIfThen transparent matchgroup=luaCond start="\" end="\"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaIn nextgroup=luaThenEnd skipwhite skipempty - -" then ... end -syn region luaThenEnd contained transparent matchgroup=luaCond start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaThenEnd,luaIn - -" elseif ... then -syn region luaElseifThen contained transparent matchgroup=luaCond start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn - -" else -syn keyword luaElse contained else - -" do ... end -syn region luaBlock transparent matchgroup=luaStatement start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn - -" samepage ... end -syn region luaBlock transparent matchgroup=luaStatement start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn -" crosspage ... end -syn region luaBlock transparent matchgroup=luaStatement start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn - -" repeat ... until -syn region luaLoopBlock transparent matchgroup=luaRepeat start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn - -" while ... do -syn region luaLoopBlock transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaIn nextgroup=luaBlock skipwhite skipempty - -" for ... do and for ... in ... do -syn region luaLoopBlock transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd nextgroup=luaBlock skipwhite skipempty - -syn keyword luaIn contained 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 -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\'\"]\|\\[[:digit:]]\{,3}" -elseif lua_version == 5 - if lua_subversion == 0 - syn match luaSpecial contained #\\[\\abfnrtv'"[\]]\|\\[[:digit:]]\{,3}# - syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2,@Spell - else - if lua_subversion == 1 - syn match luaSpecial contained #\\[\\abfnrtv'"]\|\\[[:digit:]]\{,3}# - else " Lua 5.2 - syn match luaSpecial contained #\\[\\abfnrtvz'"]\|\\x[[:xdigit:]]\{2}\|\\[[:digit:]]\{,3}# - endif - syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell - endif -endif -syn region luaString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell -syn region luaString 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 - -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 - 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 /\/ - if lua_subversion == 1 - syn keyword luaFunc getfenv setfenv - syn keyword luaFunc loadstring module unpack - syn match luaFunc /\/ - 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 /\/ - 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 /\/ - 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 == 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 /\/ - 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 /\/ - if lua_subversion == 0 - syn match luaFunc /\/ - syn match luaFunc /\/ - else - if lua_subversion == 1 - syn match luaFunc /\/ - endif - 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 /\/ - 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 /\/ - syn match luaFunc /\/ - if lua_subversion == 1 - syn match luaFunc /\/ - syn match luaFunc /\/ - syn match luaFunc /\/ - syn match luaFunc /\/ - syn match luaFunc /\/ - elseif lua_subversion == 2 - syn match luaFunc /\/ - syn match luaFunc /\/ - syn match luaFunc /\/ - syn match luaFunc /\/ - syn match luaFunc /\/ - syn match luaFunc /\/ - syn match luaFunc /\/ - 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 - else - command -nargs=+ HiLink hi def link - endif - - HiLink l65PreProc PreProc - HiLink luaStatement Statement - HiLink luaRepeat Repeat - HiLink luaFor Repeat - HiLink luaString String - HiLink luaString2 String - HiLink luaNumber Number - HiLink luaOperator Operator - HiLink luaIn Operator - HiLink luaConstant Constant - HiLink luaCond Conditional - HiLink luaElse Conditional - HiLink luaFunction Function - HiLink luaComment Comment - HiLink luaTodo Todo - HiLink luaTable Structure - HiLink luaError Error - HiLink luaParenError Error - HiLink luaBraceError Error - HiLink luaSpecial SpecialChar - HiLink luaFunc Identifier - HiLink luaLabel Label - - delcommand HiLink -endif - -let b:current_syntax = "lua" - -let &cpo = s:cpo_save -unlet s:cpo_save -" vim: et ts=8 sw=2 diff --git a/vim/indent/l65.vim b/vim/indent/l65.vim new file mode 100644 index 0000000..45f6eec --- /dev/null +++ b/vim/indent/l65.vim @@ -0,0 +1,122 @@ +" Vim indent file +" Language: l65 +" URL: modified from https://github.com/tbastos/vim-lua + +" Initialization ------------------------------------------{{{1 + +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal autoindent +setlocal nosmartindent + +setlocal indentexpr=GetL65Indent() +setlocal indentkeys+=0=end,0=until,0=elseif,0=else + +" Only define the function once. +if exists("*GetL65Indent") + finish +endif + +" Variables -----------------------------------------------{{{1 + +let s:open_patt = '\C\%(\<\%(function\|if\|repeat\|do\)\>\|(\|{\)' +let s:middle_patt = '\C\<\%(else\|elseif\)\>' +let s:close_patt = '\C\%(\<\%(end\|until\)\>\|)\|}\)' + +let s:anon_func_start = '\S\+\s*[({].*\ 0 + let i += num_pairs + endif + + " special case: call(with, {anon = function() -- should indent only once + if num_pairs > 1 && contents_prev =~# s:anon_func_start + let i = 1 + endif + + " check if current line closes blocks + call cursor(prev_line, col([prev_line,'$'])) + let num_pairs = searchpair(s:open_patt, s:middle_patt, s:close_patt, + \ 'mr', s:skip_expr, v:lnum) + if num_pairs > 0 + let i -= num_pairs + endif + + " special case: end}) -- end of call with anon func should unindent once + if num_pairs > 1 && contents_cur =~# s:anon_func_end + let i = -1 + endif + + " if the previous line closed a paren, unindent (except with anon funcs) + call cursor(prev_line - 1, col([prev_line - 1, '$'])) + let num_pairs = searchpair('(', '', ')', 'mr', s:skip_expr, prev_line) + if num_pairs > 0 && contents_prev !~ s:anon_func_end + let i -= 1 + endif + + " if this line closed a paren, indent (except with anon funcs) + call cursor(prev_line, col([prev_line, '$'])) + let num_pairs = searchpair('(', '', ')', 'mr', s:skip_expr, v:lnum) + if num_pairs > 0 && contents_cur !~ s:anon_func_end + let i += 1 + endif + + " restore cursor + call setpos(".", original_cursor_pos) + + return indent(prev_line) + (&sw * i) + +endfunction diff --git a/vim/syntax/l65.vim b/vim/syntax/l65.vim new file mode 100644 index 0000000..be8d798 --- /dev/null +++ b/vim/syntax/l65.vim @@ -0,0 +1,589 @@ +" Vim syntax file +" Language: l65 + +" 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 + +let s:cpo_save = &cpo +set cpo&vim + +syn case match + +" syncing method +syntax sync fromstart + +" Comments +syn keyword luaTodo contained TODO FIXME XXX +syn match luaComment "--.*$" contains=luaTodo,@Spell +syn region luaComment matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell + +" 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,luaParenError,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaBlock,luaLoopBlock,luaIn,luaStatement +syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaBraceError,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaBlock,luaLoopBlock,luaIn,luaStatement + +syn match luaParenError ")" +syn match luaBraceError "}" +syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>" + +" function ... end +syn region luaFunctionBlock transparent matchgroup=luaFunction start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn + +" if ... then +syn region luaIfThen transparent matchgroup=luaCond start="\" end="\"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaIn nextgroup=luaThenEnd skipwhite skipempty + +" then ... end +syn region luaThenEnd contained transparent matchgroup=luaCond start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaThenEnd,luaIn + +" elseif ... then +syn region luaElseifThen contained transparent matchgroup=luaCond start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn + +" else +syn keyword luaElse contained else + +" do ... end +syn region luaBlock transparent matchgroup=luaStatement start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn + +" samepage ... end +syn region luaBlock transparent matchgroup=luaStatement start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn +" crosspage ... end +syn region luaBlock transparent matchgroup=luaStatement start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn + +" repeat ... until +syn region luaLoopBlock transparent matchgroup=luaRepeat start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn + +" while ... do +syn region luaLoopBlock transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaIn nextgroup=luaBlock skipwhite skipempty + +" for ... do and for ... in ... do +syn region luaLoopBlock transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd nextgroup=luaBlock skipwhite skipempty + +syn keyword luaIn contained in + +" other keywords +syn keyword luaStatement return local break goto +syn match luaLabel "::\I\i*::" +syn match l65Label "@@\k\+" +syn match l65Label "@\k\+" +syn match l65SChar "[#!\\]" +syn match l65SFunc "[\\]" +syn keyword luaOperator and or not +syn keyword luaConstant nil true false + +syn region l65PreProc start="^#\s*\(pragma\>\)" skip="\\$" end="$" keepend + +" Strings +syn match luaSpecial contained #\\[\\abfnrtvz'"]\|\\b[01]\{2}\|\\x[[:xdigit:]]\{2}\|\\[[:digit:]]\{,3}# +syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell +syn region luaString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell +syn region luaString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial,@Spell + +" integer number +syn match luaNumber "\<\d\+\>" +" hex numbers +syn match luaNumber "\<0[xX][[:xdigit:].]\+\%([pP][-+]\=\d\+\)\=\>" +" bin numbers +syn match luaNumber "\<0[bB][01]\+\>" +" 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\+\>" + +syn keyword luaFunc assert collectgarbage dofile error next +syn keyword luaFunc print rawget rawset tonumber tostring type _VERSION + +syn keyword luaFunc getmetatable setmetatable +syn keyword luaFunc ipairs pairs +syn keyword luaFunc pcall xpcall +syn keyword luaFunc _G loadfile rawequal require +syn keyword luaFunc load select +syn match luaFunc /\/ +syn match luaFunc /\/ +syn match luaFunc /\/ +syn match luaFunc /\/ +syn keyword luaFunc _ENV rawlen +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 /\/ +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 /\/ +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 /\/ +syn match luaFunc /\/ + +synt match luaSemiCol ";" + +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ + +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ + +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ +syn match l65Keyword /\/ + + +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ + +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ +syn match l65Opcode /\/ + +" 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_l65_syntax_inits") + if version < 508 + let did_l65_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink luaStatement Statement + HiLink luaRepeat Repeat + HiLink luaFor Repeat + HiLink luaString String + HiLink luaString2 String + HiLink luaNumber Number + HiLink luaOperator Operator + HiLink luaIn Operator + HiLink luaConstant Constant + HiLink luaCond Conditional + HiLink luaElse Conditional + HiLink luaFunction Function + HiLink luaComment Comment + HiLink luaTodo Todo + HiLink luaTable Structure + HiLink luaError Error + HiLink luaParenError Error + HiLink luaBraceError Error + HiLink luaSpecial SpecialChar + HiLink luaFunc Identifier + HiLink luaLabel Label + + HiLink luaSemiCol Delimiter + + HiLink l65PreProc PreProc + HiLink l65Label Special + HiLink l65Keyword Identifier + HiLink l65Opcode Type + HiLink l65SChar Operator + HiLink l65SFunc Function + + delcommand HiLink +endif + +let b:current_syntax = "l65" + +let &cpo = s:cpo_save +unlet s:cpo_save +" vim: et ts=8 sw=2