1071d4279SBram Moolenaar" Language: Dot 2071d4279SBram Moolenaar" Filenames: *.dot 38b6144bdSBram Moolenaar" Maintainer: Markus Mottl <[email protected]> 48b6144bdSBram Moolenaar" URL: http://www.ocaml.info/vim/syntax/dot.vim 5*dad4473fSBram Moolenaar" Last Change: 2021 Mar 24 - better attr + escape string matching, new keywords (Farbod Salamat-Zadeh) 6*dad4473fSBram Moolenaar" 2011 May 17 - improved identifier matching + two new keywords 7071d4279SBram Moolenaar" 2001 May 04 - initial version 8071d4279SBram Moolenaar 9*dad4473fSBram Moolenaar" For version 5.x: Clear all syntax items 10*dad4473fSBram Moolenaar" For version 6.x: Quit when a syntax file was already loaded 11*dad4473fSBram Moolenaarif version < 600 12*dad4473fSBram Moolenaar syntax clear 13*dad4473fSBram Moolenaarelseif exists("b:current_syntax") 14071d4279SBram Moolenaar finish 15071d4279SBram Moolenaarendif 16071d4279SBram Moolenaar 17*dad4473fSBram Moolenaarlet s:keepcpo = &cpo 18*dad4473fSBram Moolenaarset cpo&vim 19*dad4473fSBram Moolenaar 20071d4279SBram Moolenaar" Errors 21071d4279SBram Moolenaarsyn match dotParErr ")" 22071d4279SBram Moolenaarsyn match dotBrackErr "]" 23071d4279SBram Moolenaarsyn match dotBraceErr "}" 24071d4279SBram Moolenaar 25071d4279SBram Moolenaar" Enclosing delimiters 26071d4279SBram Moolenaarsyn region dotEncl transparent matchgroup=dotParEncl start="(" matchgroup=dotParEncl end=")" contains=ALLBUT,dotParErr 27071d4279SBram Moolenaarsyn region dotEncl transparent matchgroup=dotBrackEncl start="\[" matchgroup=dotBrackEncl end="\]" contains=ALLBUT,dotBrackErr 28071d4279SBram Moolenaarsyn region dotEncl transparent matchgroup=dotBraceEncl start="{" matchgroup=dotBraceEncl end="}" contains=ALLBUT,dotBraceErr 29071d4279SBram Moolenaar 30071d4279SBram Moolenaar" Comments 31071d4279SBram Moolenaarsyn region dotComment start="//" end="$" contains=dotComment,dotTodo 32071d4279SBram Moolenaarsyn region dotComment start="/\*" end="\*/" contains=dotComment,dotTodo 33071d4279SBram Moolenaarsyn keyword dotTodo contained TODO FIXME XXX 34071d4279SBram Moolenaar 35071d4279SBram Moolenaar" Strings 36071d4279SBram Moolenaarsyn region dotString start=+"+ skip=+\\\\\|\\"+ end=+"+ 37071d4279SBram Moolenaar 38*dad4473fSBram Moolenaar" Escape strings 39*dad4473fSBram Moolenaarsyn match dotEscString /\v\\(N|G|E|T|H|L)/ containedin=dotString 40*dad4473fSBram Moolenaarsyn match dotEscString /\v\\(n|l|r)/ containedin=dotString 41*dad4473fSBram Moolenaar 42071d4279SBram Moolenaar" General keywords 43*dad4473fSBram Moolenaarsyn keyword dotKeyword graph digraph subgraph node edge strict 44071d4279SBram Moolenaar 45*dad4473fSBram Moolenaar" Node, edge and graph attributes 46*dad4473fSBram Moolenaarsyn keyword dotType _background area arrowhead arrowsize arrowtail bb bgcolor 47*dad4473fSBram Moolenaar \ center charset class clusterrank color colorscheme comment compound 48*dad4473fSBram Moolenaar \ concentrate constraint Damping decorate defaultdist dim dimen dir 49*dad4473fSBram Moolenaar \ diredgeconstraints distortion dpi edgehref edgetarget edgetooltip 50*dad4473fSBram Moolenaar \ edgeURL epsilon esep fillcolor fixedsize fontcolor fontname fontnames 51*dad4473fSBram Moolenaar \ fontpath fontsize forcelabels gradientangle group head_lp headclip 52*dad4473fSBram Moolenaar \ headhref headlabel headport headtarget headtooltip headURL height href 53*dad4473fSBram Moolenaar \ id image imagepath imagepos imagescale inputscale K label label_scheme 54*dad4473fSBram Moolenaar \ labelangle labeldistance labelfloat labelfontcolor labelfontname 55*dad4473fSBram Moolenaar \ labelfontsize labelhref labeljust labelloc labeltarget labeltooltip 56*dad4473fSBram Moolenaar \ labelURL landscape layer layerlistsep layers layerselect layersep 57*dad4473fSBram Moolenaar \ layout len levels levelsgap lhead lheight lp ltail lwidth margin 58*dad4473fSBram Moolenaar \ maxiter mclimit mindist minlen mode model mosek newrank nodesep 59*dad4473fSBram Moolenaar \ nojustify normalize notranslate nslimit nslimit1 ordering orientation 60*dad4473fSBram Moolenaar \ outputorder overlap overlap_scaling overlap_shrink pack packmode pad 61*dad4473fSBram Moolenaar \ page pagedir pencolor penwidth peripheries pin pos quadtree quantum 62*dad4473fSBram Moolenaar \ rank rankdir ranksep ratio rects regular remincross repulsiveforce 63*dad4473fSBram Moolenaar \ resolution root rotate rotation samehead sametail samplepoints scale 64*dad4473fSBram Moolenaar \ searchsize sep shape shapefile showboxes sides size skew smoothing 65*dad4473fSBram Moolenaar \ sortv splines start style stylesheet tail_lp tailclip tailhref 66*dad4473fSBram Moolenaar \ taillabel tailport tailtarget tailtooltip tailURL target tooltip 67*dad4473fSBram Moolenaar \ truecolor URL vertices viewport voro_margin weight width xdotversion 68*dad4473fSBram Moolenaar \ xlabel xlp z 69071d4279SBram Moolenaar 70071d4279SBram Moolenaar" Special chars 71071d4279SBram Moolenaarsyn match dotKeyChar "=" 72071d4279SBram Moolenaarsyn match dotKeyChar ";" 73071d4279SBram Moolenaarsyn match dotKeyChar "->" 74*dad4473fSBram Moolenaarsyn match dotKeyChar "--" 75071d4279SBram Moolenaar 76071d4279SBram Moolenaar" Identifier 7720f90cf9SBram Moolenaarsyn match dotIdentifier /\<\w\+\(:\w\+\)\?\>/ 78071d4279SBram Moolenaar 79071d4279SBram Moolenaar" Synchronization 80071d4279SBram Moolenaarsyn sync minlines=50 81071d4279SBram Moolenaarsyn sync maxlines=500 82071d4279SBram Moolenaar 83071d4279SBram Moolenaar" Define the default highlighting. 84*dad4473fSBram Moolenaar" For version 5.7 and earlier: only when not done already 85*dad4473fSBram Moolenaar" For version 5.8 and later: only when an item doesn't have highlighting yet 86*dad4473fSBram Moolenaarif version >= 508 || !exists("did_dot_syntax_inits") 87*dad4473fSBram Moolenaar if version < 508 88*dad4473fSBram Moolenaar let did_dot_syntax_inits = 1 89*dad4473fSBram Moolenaar command -nargs=+ HiLink hi link <args> 90*dad4473fSBram Moolenaar else 91*dad4473fSBram Moolenaar command -nargs=+ HiLink hi def link <args> 92*dad4473fSBram Moolenaar endif 93071d4279SBram Moolenaar 94*dad4473fSBram Moolenaar HiLink dotParErr Error 95*dad4473fSBram Moolenaar HiLink dotBraceErr Error 96*dad4473fSBram Moolenaar HiLink dotBrackErr Error 97071d4279SBram Moolenaar 98*dad4473fSBram Moolenaar HiLink dotComment Comment 99*dad4473fSBram Moolenaar HiLink dotTodo Todo 100071d4279SBram Moolenaar 101*dad4473fSBram Moolenaar HiLink dotParEncl Keyword 102*dad4473fSBram Moolenaar HiLink dotBrackEncl Keyword 103*dad4473fSBram Moolenaar HiLink dotBraceEncl Keyword 104071d4279SBram Moolenaar 105*dad4473fSBram Moolenaar HiLink dotKeyword Keyword 106*dad4473fSBram Moolenaar HiLink dotType Type 107*dad4473fSBram Moolenaar HiLink dotKeyChar Keyword 108071d4279SBram Moolenaar 109*dad4473fSBram Moolenaar HiLink dotString String 110*dad4473fSBram Moolenaar HiLink dotEscString Keyword 111*dad4473fSBram Moolenaar HiLink dotIdentifier Identifier 112071d4279SBram Moolenaar 113*dad4473fSBram Moolenaar delcommand HiLink 114*dad4473fSBram Moolenaarendif 115071d4279SBram Moolenaar 116071d4279SBram Moolenaarlet b:current_syntax = "dot" 117071d4279SBram Moolenaar 118*dad4473fSBram Moolenaarlet &cpo = s:keepcpo 119*dad4473fSBram Moolenaarunlet s:keepcpo 120*dad4473fSBram Moolenaar 121071d4279SBram Moolenaar" vim: ts=8 122