1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: Spice circuit simulator input netlist 3071d4279SBram Moolenaar" Maintainer: Noam Halevy <Noam.Halevy.motorola.com> 4c873442bSBram Moolenaar" Last Change: 2012 Jun 01 5c873442bSBram Moolenaar" (Dominique Pelle added @Spell) 6071d4279SBram Moolenaar" 7071d4279SBram Moolenaar" This is based on sh.vim by Lennart Schultz 8071d4279SBram Moolenaar" but greatly simplified 9071d4279SBram Moolenaar 1089bcfda6SBram Moolenaar" quit when a syntax file was already loaded 1189bcfda6SBram Moolenaarif exists("b:current_syntax") 12071d4279SBram Moolenaar finish 13071d4279SBram Moolenaarendif 14071d4279SBram Moolenaar 15071d4279SBram Moolenaar" spice syntax is case INsensitive 16071d4279SBram Moolenaarsyn case ignore 17071d4279SBram Moolenaar 18071d4279SBram Moolenaarsyn keyword spiceTodo contained TODO 19071d4279SBram Moolenaar 20c873442bSBram Moolenaarsyn match spiceComment "^ \=\*.*$" contains=@Spell 21c873442bSBram Moolenaarsyn match spiceComment "\$.*$" contains=@Spell 22071d4279SBram Moolenaar 23071d4279SBram Moolenaar" Numbers, all with engineering suffixes and optional units 24071d4279SBram Moolenaar"========================================================== 25071d4279SBram Moolenaar"floating point number, with dot, optional exponent 26071d4279SBram Moolenaarsyn match spiceNumber "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" 27071d4279SBram Moolenaar"floating point number, starting with a dot, optional exponent 28071d4279SBram Moolenaarsyn match spiceNumber "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" 29071d4279SBram Moolenaar"integer number with optional exponent 30071d4279SBram Moolenaarsyn match spiceNumber "\<[0-9]\+\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" 31071d4279SBram Moolenaar 32071d4279SBram Moolenaar" Misc 33071d4279SBram Moolenaar"===== 34071d4279SBram Moolenaarsyn match spiceWrapLineOperator "\\$" 35071d4279SBram Moolenaarsyn match spiceWrapLineOperator "^+" 36071d4279SBram Moolenaar 37071d4279SBram Moolenaarsyn match spiceStatement "^ \=\.\I\+" 38071d4279SBram Moolenaar 39071d4279SBram Moolenaar" Matching pairs of parentheses 40071d4279SBram Moolenaar"========================================== 41071d4279SBram Moolenaarsyn region spiceParen transparent matchgroup=spiceOperator start="(" end=")" contains=ALLBUT,spiceParenError 42071d4279SBram Moolenaarsyn region spiceSinglequote matchgroup=spiceOperator start=+'+ end=+'+ 43071d4279SBram Moolenaar 44071d4279SBram Moolenaar" Errors 45071d4279SBram Moolenaar"======= 46071d4279SBram Moolenaarsyn match spiceParenError ")" 47071d4279SBram Moolenaar 48071d4279SBram Moolenaar" Syncs 49071d4279SBram Moolenaar" ===== 50071d4279SBram Moolenaarsyn sync minlines=50 51071d4279SBram Moolenaar 52071d4279SBram Moolenaar" Define the default highlighting. 5389bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 54071d4279SBram Moolenaar 55*f37506f6SBram Moolenaarhi def link spiceTodo Todo 56*f37506f6SBram Moolenaarhi def link spiceWrapLineOperator spiceOperator 57*f37506f6SBram Moolenaarhi def link spiceSinglequote spiceExpr 58*f37506f6SBram Moolenaarhi def link spiceExpr Function 59*f37506f6SBram Moolenaarhi def link spiceParenError Error 60*f37506f6SBram Moolenaarhi def link spiceStatement Statement 61*f37506f6SBram Moolenaarhi def link spiceNumber Number 62*f37506f6SBram Moolenaarhi def link spiceComment Comment 63*f37506f6SBram Moolenaarhi def link spiceOperator Operator 64071d4279SBram Moolenaar 65071d4279SBram Moolenaar 66071d4279SBram Moolenaarlet b:current_syntax = "spice" 67071d4279SBram Moolenaar 68071d4279SBram Moolenaar" insert the following to $VIM/syntax/scripts.vim 69071d4279SBram Moolenaar" to autodetect HSpice netlists and text listing output: 70071d4279SBram Moolenaar" 71071d4279SBram Moolenaar" " Spice netlists and text listings 72071d4279SBram Moolenaar" elseif getline(1) =~ 'spice\>' || getline("$") =~ '^\.end' 73071d4279SBram Moolenaar" so <sfile>:p:h/spice.vim 74071d4279SBram Moolenaar 75071d4279SBram Moolenaar" vim: ts=8 76