" Vim syntax file " Language: mu " Maintainer: Kartik Agaram " URL: http://github.com/akkartik/mu " License: public domain " " Copy this file into your ftplugin directory, and add the following to your " vimrc or to .vim/ftdetect/mu.vim: " autocmd BufReadPost,BufNewFile *.mu set filetype=mu " " Some highlight groups you might want to select colors for in your vimrc: highlight link CommentedCode Comment highlight link SalientComment Comment highlight link muFunction Identifier highlight link muTest Identifier let s:save_cpo = &cpo set cpo&vim " todo: why does this periodically lose syntax, like on file reload? " $ vim x.mu " :e "? if exists("b:syntax") "? finish "? endif "? let b:syntax = "mu" setlocal iskeyword=@,48-57,?,!,_,$,- setlocal formatoptions-=t " Mu programs have long lines setlocal formatoptions+=c " but comments should still wrap syntax match muSalientComment /##.*$/ | highlight link muSalientComment SalientComment syntax match muComment /#\( \.\|? \)\@!.*/ | highlight link muComment Comment syntax match muS1Comment /# \..*/ | highlight link muS1Comment Comment syntax match muS2Comment /# \. \..*/ | highlight link muS2Comment Comment set comments+=n:# syntax match muCommentedCode "#? .*" | highlight link muCommentedCode CommentedCode let b:cmt_head = "#? " syntax match muDelimiter "[{}]" | highlight link muDelimiter Delimiter " Mu literals syntax match muLiteral %\<-\?[0-9][0-9A-Fa-f]*\>% syntax match muLiteral %\<-\?0x[0-9A-Fa-f]\+\>% syntax match muLiteral %"[^"]*"% highlight link muLiteral Constant syntax match muError %\<[0-9][0-9A-Fa-f]*[^0-9A-Fa-f]\>% highlight link muError Error " sources of action at a distance syntax match muAssign "<-" highlight link muAssign SpecialChar syntax keyword muAssign error error-stream highlight link muAssign Special " common keywords syntax match muControl "\\|\" syntax match muControl "\\|\\|\\|\ " syntax keyword muKeyword fn sig type var highlight link muKeyword PreProc syntax match muFunction "\(fn\s\+\)\@<=\(\S\+\)" highlight link muFunction Identifier syntax match muTest "\(fn\s\+\)\@<=\(test-\S\+\)" highlight link muTest Identifier syntax match muData "^type\>" syntax match muData "\" highlight link muData Constant " Some hacky colors for a light background. " TODO: They should really be theme-dependent. Use tools/regs.mu when tweaking them. " eax is so common that it's not worth highlighting syntax match muRegEcx "\" highlight muRegEcx ctermfg=88 syntax match muRegEdx "\" highlight muRegEdx ctermfg=130 syntax match muRegEbx "\" highlight muRegEbx ctermfg=57 syntax match muRegEsi "\" highlight muRegEsi ctermfg=25 syntax match muRegEdi "\" highlight muRegEdi ctermfg=34 let &cpo = s:save_cpo