diff --git a/mie.vim/autoload/mie.vim b/mie.vim/autoload/mie.vim new file mode 100644 index 0000000..e69de29 diff --git a/mie.vim/ftdetect/mie.vim b/mie.vim/ftdetect/mie.vim new file mode 100755 index 0000000..6c1fe08 --- /dev/null +++ b/mie.vim/ftdetect/mie.vim @@ -0,0 +1 @@ +autocmd BufNewFile,BufRead *.mie setfiletype mie diff --git a/mie.vim/ftplugin/mie.vim b/mie.vim/ftplugin/mie.vim new file mode 100755 index 0000000..25eeecd --- /dev/null +++ b/mie.vim/ftplugin/mie.vim @@ -0,0 +1,4 @@ +setlocal tabstop=8 +setlocal softtabstop=8 +setlocal shiftwidth=8 +setlocal noexpandtab diff --git a/mie.vim/syntax/mie.vim b/mie.vim/syntax/mie.vim new file mode 100755 index 0000000..5b8c789 --- /dev/null +++ b/mie.vim/syntax/mie.vim @@ -0,0 +1,82 @@ +if exists('b:current_syntax') + finish +endif + +let s:save_cpo = &cpoptions +set cpoptions&vim + +syn keyword mieUnspecifiedStatement record data define +syn keyword mieInstruction + \ alloca load store call br cmp + \ c.z c.nz c.eq c.ne c.lt c.le c.gt c.ge + \ br br.t br.f + \ add sub div mul push pop msg +syn match mieRegister "%[0-9]\>" +syn match mieRegister "%[1-9][0-9]\+\>" +syn match mieRegister "%\w\+\>" +syn match mieIdentifier /@\(\w\+\)\(\.\(\w\+\)\)*\>/ +syn match mieIdentifier /@\.\(\w\+\)\(\.\(\w\+\)\)*\>/ +syn match mieLabel /\(\w\+\)\(\.\(\w\+\)\)*\:/ +syn keyword mieType id ptr str label void +syn match mieType "i[0-9]\>" +syn match mieType "i[1-9][0-9]\+\>" +syn keyword mieBlockType lambda instance static + +syn match mieFieldIndex /#[0-9]\+:\>/ +syn match mieFieldIndex /#-[0-9]\+:\>/ +syn match mieFieldIndex /#0x[:xdigit:]\+:\>/ +syn match mieFieldIndex /#-0x[:xdigit:]\+:\>/ + +syn region mieString start=+"+ end=+"\%(u8\)\=+ end=+$+ extend + +syn match mieInteger /#[0-9]\+\>/ +syn match mieInteger /#-[0-9]\+\>/ +syn match mieInteger /#0x[:xdigit:]\+\>/ +syn match mieInteger /#-0x[:xdigit:]\+\>/ + +syn keyword mieTodo contained TODO FIXME XXX NOTE HACK TBD +syn region mieBlockComment start="/\*" end="\*/" contains=mieTodo,mieBlockComment +syn match mieLineComment ";.*$" contains=mieTodo,mieBlockComment +syn cluster mieComment contains=mieLineComment,mieBlockComment + +syn match mieBrackets "[[\]]" display +syn match mieParens "[()]" display +syn match ivyPropertySymbol "\$" display + +" The default highlighting. +hi def link mieUnspecifiedStatement Statement +hi def link ivyPropertySymbol Statement + +hi def link mieInteger Number + +hi def link mieParens Delimiter +hi def link mieBraces Structure + +hi def link miePropertyName @property +hi def link mieFieldName @variable.parameter +hi def link mieClassName Type +hi def link mieLambdaName @variable.parameter + +hi def link mieInstruction Function +hi def link mieIdentifier Identifier +hi def link mieLabel Tag +hi def link mieIndexBase @variable.builtin +hi def link mieRegister Constant + +hi def link mieString String +hi def link mieType Type +hi def link mieBlockType @attribute + +hi def link mieComment Comment +hi def link mieLineComment mieComment +hi def link mieBlockComment mieComment +hi def link mieLineContinuation mieComment + +hi def link mieIdent @variable.builtin +hi def link mieAtom Constant + +let b:current_syntax = 'mie" + +let &cpoptions = s:save_cpo +unlet s:save_cpo +