From 7c20b1892d9cad715e045d192cdea64e979749d5 Mon Sep 17 00:00:00 2001 From: Roman Dobosz Date: Tue, 12 Aug 2014 20:55:47 +0200 Subject: [PATCH] Initial upload --- README.rst | 35 +++++ syntax/kickass.vim | 343 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 378 insertions(+) create mode 100644 README.rst create mode 100644 syntax/kickass.vim diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..9ec4126 --- /dev/null +++ b/README.rst @@ -0,0 +1,35 @@ +KickAssembler syntax for Vim +============================ + +This is Vim syntax for the great `Kick Assembler`_ C64 cross/macro assembler. + +This repository is hosted on BitBucket_, and mirrored on GitHub_. + +Installation +------------ + +To install, place ``syntax/kickass.vim`` file in ``~/.vim/syntax`` (\*nix/Mac) +or in ``$VIMRUNTIME/syntax`` on Windows or just use some Vim package manager, +like NeoBundle_, Pathogen_ or Vundle_, and than issue command: + +.. code:: vim + + :set filetype=kickass + +You can also add to your vimrc file autocommand: + +.. code:: vim + + autocmd BufRead *.asm set filetype=kickass + +From now on, all files with extension 'asm' will have brand new kickass +syntax. + +Enjoy. + +.. _Kick Assembler: http://www.theweb.dk/KickAssembler/Main.php +.. _Pathogen: https://github.com/tpope/vim-pathogen +.. _Vundle: https://github.com/gmarik/Vundle.vim +.. _NeoBundle: https://github.com/Shougo/neobundle.vim +.. _BitBucket: https://bitbucket.org/gryf/kickass-syntax-vim +.. _GitHub: https://bitbucket.org/gryf/kickass-syntax-vim diff --git a/syntax/kickass.vim b/syntax/kickass.vim new file mode 100644 index 0000000..9de0a0d --- /dev/null +++ b/syntax/kickass.vim @@ -0,0 +1,343 @@ +" Vim syntax file +" Language: Assembler, KickAssembler +" Maintainer: Roman 'gryf' Dobosz +" 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: +" +" :set filetype=kickass +" +" You can also add to your vimrc file autocommand: +" +" autocmd BufRead *.asm set filetype=kickass +" +" From now on, all files with extension 'asm' will have brand new kickass +" syntax. +" +" Enjoy. + +syn clear + +" 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 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 "\" + +" DTV mnemonics +syn match kickAssJump "\" nextgroup=kickAssLabels +syn match kickAssMnemonic "\" +syn match kickAssMnemonic "\" + +" indexes +syn match kickAssIndex ",\s*[xy]" + +" Strings/chars +syn region kickAssString start=+"+ skip=+\\"+ end=+"+ contains=@Spell oneline +syn region kickAssString start=+'+ skip=+\\'+ end=+'+ contains=@Spell oneline + +" 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 + +" 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 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 kickAssDirective "\.\" +syn match kickAssDirective "\.\" nextgroup=kickAssImportType skipwhite +syn keyword kickAssImportType source binary c64 text contained + +" console output +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" +syn match kickAssDirective "\.\" + +" elements of script language +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 + +" 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 kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 +syn match kickAssFunction "\("he=e-1 + +" Math library +syn keyword kickAssConstant PI E + +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 + +" 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. + +" 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 + +" 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 + +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 + +" 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 + +" 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 + +" 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\)\>" + +" 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 + +syn keyword kickAssConstant C64FILE +syn keyword kickAssConstant BD_C64FILE BF_BITMAP_SINGLECOLOR BF_KOALA BF_FLI + +" Binary import +syn match kickAssFunction "\("he=e-1 +syn match kickAssMethod "\" display contained +syn match kickAssFunction "\("he=e-1 + +" 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 + +" 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 + +" 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 kickAssDirective Special + hi def link kickAssMnemonic Type + + 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 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"