diff --git a/syntax/kickass.vim b/syntax/kickass.vim index b4393f5..9de0a0d 100644 --- a/syntax/kickass.vim +++ b/syntax/kickass.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: Assembler, KickAssembler " Maintainer: Roman 'gryf' Dobosz -" Last Change: 2012-06-03 -" Version: 0.1 +" Last Change: 2012-07-05 +" Version: 1.0 " " To install this file place it in ~/.vim/syntax (*nix/Mac) or in " $VIMRUNTIME/syntax on Windows and issue command: @@ -19,225 +19,325 @@ " Enjoy. syn clear -syn case ignore -syn region asmString start=+"+ end=+"+ -syn region asmSString start=+'+ end=+'+ contains=@Spell +" 6502 mnemonics +syn keyword kickAssMnemonic brk clc cld cli clv dex dey inx iny nop pha php pla +syn keyword kickAssMnemonic plp sec sed sei tax tay tsx txa txs tya +syn keyword kickAssJump rti rts nextgroup=kickAssLabels -syn keyword asm6502Mnemonics adc and asl bit brk clc cld cli clv cmp cpx cpy -syn keyword asm6502Mnemonics dec dex dey eor inc inx iny lda ldx ldy lsr nop -syn keyword asm6502Mnemonics ora pha php pla plp rol ror sbc sec sed sei sta -syn keyword asm6502Mnemonics stx sty tax tay tsx txa txs tya +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssJump "\" nextgroup=kickAssLabels +syn match kickAssJump "\" nextgroup=kickAssLabels +syn match kickAssJump "\" nextgroup=kickAssLabels +syn match kickAssMnemonic "\" +syn match kickAssJump "\" nextgroup=kickAssLabels +syn match kickAssJump "\" nextgroup=kickAssLabels +syn match kickAssJump "\" nextgroup=kickAssLabels +syn match kickAssJump "\" nextgroup=kickAssLabels +syn match kickAssJump "\" nextgroup=kickAssLabels +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssJump "\" nextgroup=kickAssLabels +syn match kickAssJump "\" nextgroup=kickAssLabels +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" -syn keyword asmDtvMnemonics bra sac sir +" DTV mnemonics +syn match kickAssJump "\" nextgroup=kickAssLabels +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" -syn match asm6502Index ",\s*[xy]" contains=asm6502Mnemonics,asmDtvMnemonics +" indexes +syn match kickAssIndex ",\s*[xy]" -syn keyword asm6502Jumps bcc bcs beq bmi bne bpl bvc bvs jmp jsr rti rts +" Strings/chars +syn region kickAssString start=+"+ skip=+\\"+ end=+"+ contains=@Spell oneline +syn region kickAssString start=+'+ skip=+\\'+ end=+'+ contains=@Spell oneline -syn keyword asm6510Illegal slo rla sre rra sax lax dcp isc anc asr arr sbx -syn keyword asm6510Illegal dop top jam +" Comments +syn keyword kickAssTodo TODO FIXME XXX TBD NOTE WARNING BUG contained +syn match kickAssLineComment "\/\/.*" contains=@Spell,kickAssTodo +syn region kickAssComment start="/\*" end="\*/" contains=@Spell,kickAssTodo oneline -syn match asmMacroCall ":[a-z_][a-z0-9_]*" - -syn region asmString start=+"+ skip=+\\"+ end=+"+ contains=@Spell -syn region asmSString start=+'+ skip=+\\'+ end=+'+ contains=@Spell - -"syn match asmLabel "[\^\s]\!\?\<[a-z0-9_]*\>[:+-]\?[\s$]" kurwa!!!!!!!! -syn match asmLabel "^\!\?\<[a-z0-9_]*\>:" -"syn match line "asmLabel2 - -syn keyword asmTodo TODO FIXME XXX TBD NOTE WARNING BUG -syn match asmLineComment "\/\/.*" contains=@Spell,asmTodo -syn region asmComment start="/\*" end="\*/" contains=@Spell,asmTodo - -syn match decNumber "\<\d\+\>" -syn match hexNumber "\$\x\+\>" -syn match binNumber "%[01]\+\>" -syn match asmImmediate "#\$\x\+\>" -syn match asmImmediate "#\d\+\>" -syn match asmImmediate "<\$\x\+\>" -syn match asmImmediate "<\d\+\>" -syn match asmImmediate ">\$\x\+\>" -syn match asmImmediate ">\d\+\>" -syn match asmImmediate "#<\$\x\+\>" -syn match asmImmediate "#<\d\+\>" -syn match asmImmediate "#>\$\x\+\>" -syn match asmImmediate "#>\d\+\>" +" Numbers +syn match kickAssDecNumber "\<\d\+\>" +syn match kickAssHexNumber "\$\x\+\>" +syn match kickAssBinNumber "%[01]\+\>" +syn match kickAssImmediate "#\$\x\+\>" +syn match kickAssImmediate "#\d\+\>" +syn match kickAssImmediate "<\$\x\+\>" +syn match kickAssImmediate "<\d\+\>" +syn match kickAssImmediate ">\$\x\+\>" +syn match kickAssImmediate ">\d\+\>" +syn match kickAssImmediate "#<\$\x\+\>" +syn match kickAssImmediate "#<\d\+\>" +syn match kickAssImmediate "#>\$\x\+\>" +syn match kickAssImmediate "#>\d\+\>" " memory and data directives -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" +syn match kickAssDirective /\.\/ +syn match kickAssDirective /\.\/ +syn match kickAssDirective /\.\/ +syn match kickAssDirective /\.\/ +syn match kickAssDirective /\.\/ +syn match kickAssDirective /\.\/ +syn match kickAssDirective /\.\/ +syn match kickAssDirective /\.\/ " import directive -syn match kickAssDirectives "\.\" +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" nextgroup=kickAssImportType skipwhite +syn keyword kickAssImportType source binary c64 text contained " console output -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" " elements of script language -syn match kickAssDirectives "\.\" +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" +syn keyword kickAssDirective else +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" nextgroup=kickAssDefName skipwhite +syn match kickAssDirective "\.\" nextgroup=kickAssDefName skipwhite +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" nextgroup=kickAssDefName skipwhite +syn match kickAssDirective "\.\" nextgroup=kickAssDefName skipwhite -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" +" special macros +syn match kickAssMacroCall ":\" +" string methods and functions +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained -syn match kickAssDirectives ":\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" nextgroup=asmDefName skipwhite -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" nextgroup=asmDefName skipwhite -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\.\" -syn match kickAssDirectives "\" -syn match kickAssDirectives "\" -syn match kickAssDirectives "\" -syn match kickAssDirectives "\" +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 -syn keyword kickAssColors BLACK WHITE RED CYAN PURPLE GREEN BLUE YELLOW ORANGE -syn keyword kickAssColors BROWN LIGHT_RED DARK_GRAY GRAY LIGHT_GREEN LIGHT_BLUE -syn keyword kickAssColors LIGHT_GRAY +" Math library +syn keyword kickAssConstant PI E -syn keyword kickAssConstants BD_C64FILE BF_BITMAP_SINGLECOLOR BF_KOALA BF_FLI +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 -syn match asmDefName "[a-zA-Z_][a-zA-Z0-9_]*" display contained +" List already defined: size +syn match kickAssFunction /\(/he=e-1 +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained +" READY. -syn match kickAssFunctions "\" display contained -syn match kickAssFunctions "\" display contained -syn match kickAssFunctions "\" display contained -syn match kickAssFunctions "\" display contained -syn match kickAssFunctions "\" display contained -syn match kickAssFunctions "\" display contained -syn match kickAssFunctions "\" display contained -syn match kickAssFunctions "\" display contained -syn match kickAssFunctions "\" display contained +" Hash - already defined names: get, remove +syn match kickAssFunction /\(/he=e-1 +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained -" generic/common methods (same name, different but similar behaviour - -" depending on context) -syn match kickAssFunctions "\.\" display contained -syn match kickAssFunctions "\.\" display contained -syn match kickAssFunctions "\.\" display contained +" Vector/Matrix - already defined: get, set +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\" display contained +syn match kickAssFunction "\" display contained +syn match kickAssFunction "\" display contained +syn match kickAssFunction "\<\X\>" display contained -" string methods -syn match kickAssFunctions "\.\" display contained +syn match kickAssFunction "\" display contained +syn match kickAssFunction "\" display contained +syn match kickAssFunction "\" display contained +syn match kickAssFunction "\" display contained +syn match kickAssFunction "\" display contained -syn match kickAssFunctions "\.\" display contained -syn match kickAssFunctions "\.\" display contained -syn match kickAssFunctions "\.\" display contained -syn match kickAssFunctions "\.\" display contained +" Structures - already defined names: get, set +syn match kickAssDirective "\.\" nextgroup=kickAssDefName skipwhite +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained -syn match kickAssFunctions "\" display contained -syn match kickAssFunctions "\" display contained -syn match kickAssFunctions "\" display contained -syn match kickAssFunctions "\" display contained +" pseudocommand +syn match kickAssDirective "\.\" nextgroup=kickAssDefName skipwhite +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn keyword kickAssConstant AT_ABSOLUTE AT_ABSOLUTEX AT_ABSOLUTEY AT_IMMEDIATE +syn keyword kickAssConstant AT_INDIRECT AT_IZEROPAGEX AT_IZEROPAGEY AT_NONE -" Math -syn keyword kickAssConstants PI E +" Opcode constants +syn match kickAssFunction "\("he=e-1 +syn keyword kickAssConstant RTS +syn match kickAssConstant "\<[A-Z]\{3}2\?_\(IMM\|I\?ZP[XY]\?\|ABS[XY]\?\|IND\|REL\)\>" -syn match kickAssFunName "\" contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained +" READY. +" Colour constants +syn keyword kickAssColor BLACK WHITE RED CYAN PURPLE GREEN BLUE YELLOW ORANGE +syn keyword kickAssColor BROWN LIGHT_RED DARK_GRAY GRAY LIGHT_GREEN LIGHT_BLUE +syn keyword kickAssColor LIGHT_GRAY DARK_GREY GREY LIGHT_GREY -" List -syn match kickAssFunctions "\" display contained -" get -syn match kickAssFunctions "\.\" display contained -syn match kickAssFunctions "\.\" display contained -syn match kickAssFunctions "\.\" display contained -syn match kickAssFunctions "\.\" display contained -syn match kickAssFunctions "\.\" display contained +syn keyword kickAssConstant C64FILE +syn keyword kickAssConstant BD_C64FILE BF_BITMAP_SINGLECOLOR BF_KOALA BF_FLI -" Dictionaries (hash tables) -syn keyword kickAssFunctions Hashtable contained +" Binary import +syn match kickAssFunction "\("he=e-1 +syn match kickAssMethod "\" display contained +syn match kickAssFunction "\("he=e-1 -" get -syn match kickAssFunctions "\.\" display contained -syn match kickAssFunctions "\.\" display contained -syn match kickAssFunctions "\.\" display contained +" PSID files +syn match kickAssFunction "\("he=e-1 +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssMethod "\" display contained -" Vector/matrix -syn match kickAssFunctions /\(/he=e-1 -" get -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\" display contained -syn match kickAssFunName "\<\X\>" display contained +" Graphics files +syn match kickAssFunction "\("he=e-1 +syn match kickAssAttr "\" +syn match kickAssAttr "\" +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained +syn match kickAssMethod "\" display contained -syn region kickAssFunctionsCall start="[a-z0-9_]\." end="(" contains=kickAssFunName +" User defined files +syn match kickAssFunction "\("he=e-1 +syn match kickAssMethod "\" display contained + +" Testing +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" + +syn region kickAssMethodCall start="[A-Za-z0-9_)]\." end="(" + \ contains=kickAssMethod oneline + +syn match kickAssDefName "[a-zA-Z_][a-zA-Z0-9_]*" display contained + +"Labels and macro names. All case insensitive +syn case ignore +syn match kickAssMacroCall ":[a-z_][a-z0-9_]*" +syn match kickAssLabels "^\!\?\<[a-z0-9_]*\>:" +syn match kickAssLabels "\s\!\<[a-z0-9_]*\>[-+]\?"hs=s+1 contained +syn match kickAssLabels "\s\<[a-z0-9_]*\>[-+]\?"hs=s+1 contained +syn case match if !exists("did_kickasm_syntax_inits") let did_kickasm_syntax_inits = 1 - hi def link kickAssDirectives Special - hi def link asm6510Illegal Debug - hi def link asm6502Mnemonics Type - hi def link asmDtvMnemonics Type - hi def link asm6502Index None - hi def link asm6502Jumps PreCondit - hi def link asmString String - hi def link asmSString String - hi def link asmComment Comment - hi def link asmLineComment Comment - hi def link asmMacroCall Function - hi def link asmLabel Label - hi def link asmTodo Todo + hi def link kickAssDirective Special + hi def link kickAssMnemonic Type - hi def link asmDefName Function - hi def link kickAssFunctions Function - hi def link kickAssFunName Function - hi def link kickAssColors Constant - hi def link kickAssConstants Constant + hi def link kickAssIndex None + hi def link kickAssJump PreCondit + hi def link kickAssString String + hi def link kickAssString String + hi def link kickAssComment Comment + hi def link kickAssLineComment Comment + hi def link kickAssMacroCall Function + hi def link kickAssTodo Todo - hi def link asmImmediate None - hi def link hexNumber None - hi def link binNumber None - hi def link decNumber None + hi def link kickAssImportType Operator + hi def link kickAssDefName Function + hi def link kickAssFunction Function + hi def link kickAssMethod Function + hi def link kickAssAttr Special + hi def link kickAssColor Constant + hi def link kickAssConstant Constant + + hi def link kickAssImmediate None + hi def link kickAssHexNumber None + hi def link kickAssBinNumber None + hi def link kickAssDecNumber None + + hi def link kickAssLabels Label endif let b:current_syntax = "kickasm"