vim: add support for asm comments, idents, atoms, and new keywords and index bases

This commit is contained in:
2024-11-08 13:19:11 +00:00
parent 78761cd51f
commit a8340a01f9

View File

@@ -7,11 +7,11 @@ set cpoptions&vim
setlocal iskeyword+=@-@ setlocal iskeyword+=@-@
setlocal iskeyword+=. setlocal iskeyword+=.
syn keyword ivyasmUnspecifiedStatement @end @lambda @class @msgh @use @constpool @selector @ident syn keyword ivyasmUnspecifiedStatement @end @lambda @class @msgh @use @constpool @selector @ident @atom
syn keyword ivyasmInstruction ldr str ret ret.n syn keyword ivyasmInstruction ldr str ret ret.n cmp b.eq br div mul
syn match ivyasmRegister "x[0-9]" syn match ivyasmRegister "x[0-9]"
syn match ivyasmRegister "x[1-9][0-9]" syn match ivyasmRegister "x[1-9][0-9]"
syn keyword ivyasmIndexBase self bp sp syn keyword ivyasmIndexBase self bp sp pool
syn match ivyasmFieldIndex /#[0-9]\+:\>/ syn match ivyasmFieldIndex /#[0-9]\+:\>/
syn match ivyasmFieldIndex /#-[0-9]\+:\>/ syn match ivyasmFieldIndex /#-[0-9]\+:\>/
@@ -25,6 +25,11 @@ syn match ivyasmInteger /#-[0-9]\+\>/
syn match ivyasmInteger /#0x[:xdigit:]\+\>/ syn match ivyasmInteger /#0x[:xdigit:]\+\>/
syn match ivyasmInteger /#-0x[:xdigit:]\+\>/ syn match ivyasmInteger /#-0x[:xdigit:]\+\>/
syn keyword ivyasmTodo contained TODO FIXME XXX NOTE HACK TBD
syn region ivyasmBlockComment start="/\*" end="\*/" contains=ivyasmTodo,ivyasmBlockComment
syn match ivyasmLineComment ";.*$" contains=ivyasmTodo,ivyasmBlockComment
syn cluster ivyasmComment contains=ivyasmLineComment,ivyasmBlockComment
syn match ivyasmPropertyName /\($\s*\)\@<=[a-zA-Z_][A-Za-z0-9_]*/ syn match ivyasmPropertyName /\($\s*\)\@<=[a-zA-Z_][A-Za-z0-9_]*/
syn match ivyasmFieldName /\(#[0-9]\+:\s\)\@<=[a-zA-Z_][A-Za-z0-9_]*\>/ syn match ivyasmFieldName /\(#[0-9]\+:\s\)\@<=[a-zA-Z_][A-Za-z0-9_]*\>/
@@ -32,11 +37,14 @@ syn match ivyasmClassName /\(@msgh (\)\@<=\([A-Za-z_][A-Za-z0-9_]*\)\(.\([A-Za
syn match ivyasmClassName /\(@class (\)\@<=\([A-Za-z_][A-Za-z0-9_]*\)\(.\([A-Za-z_][A-Za-z0-9_]*\)\)*\()\)\@=\>/ syn match ivyasmClassName /\(@class (\)\@<=\([A-Za-z_][A-Za-z0-9_]*\)\(.\([A-Za-z_][A-Za-z0-9_]*\)\)*\()\)\@=\>/
syn match ivyasmLambdaName /\(@lambda (\)\@<=\([A-Za-z_][A-Za-z0-9_]*\)\()\)\@=\>/ syn match ivyasmLambdaName /\(@lambda (\)\@<=\([A-Za-z_][A-Za-z0-9_]*\)\()\)\@=\>/
syn match ivyasmIdent /\(@ident\(\s\)*\[\)\@<=\([A-Za-z_][A-Za-z0-9_]*\)\(\]\)\@=\>/
syn match ivyasmAtom /\(@atom\(\s\)*\[\)\@<=\([A-Za-z_][A-Za-z0-9_]*\)\(\]\)\@=\>/
syn match ivyasmFieldIndex /#-[0-9]\+:\>/ syn match ivyasmFieldIndex /#-[0-9]\+:\>/
syn match ivyasmFieldIndex /#0x[:xdigit:]\+:\>/ syn match ivyasmFieldIndex /#0x[:xdigit:]\+:\>/
syn match ivyasmFieldIndex /#-0x[:xdigit:]\+:\>/ syn match ivyasmFieldIndex /#-0x[:xdigit:]\+:\>/
syn match ivyasmSelectorLabel /\<[a-z_]\([A-Za-z0-9_]*\)\:/ syn match ivyasmSelectorLabel /\<[A-Za-z_]\([A-Za-z0-9_]*\)\:/
syn match ivyasmBrackets "[[\]]" display syn match ivyasmBrackets "[[\]]" display
syn match ivyasmParens "[()]" display syn match ivyasmParens "[()]" display
@@ -65,6 +73,13 @@ hi def link ivyasmSelectorLabel Label
hi def link ivyasmString String hi def link ivyasmString String
hi def link ivyasmComment Comment
hi def link ivyasmLineComment ivyasmComment
hi def link ivyasmBlockComment ivyasmComment
hi def link ivyasmLineContinuation ivyasmComment
hi def link ivyasmIdent @variable.builtin
hi def link ivyasmAtom Constant
let b:current_syntax = 'ivyasm' let b:current_syntax = 'ivyasm'