1*2346a637SBram Moolenaar" Vim syntax file 2*2346a637SBram Moolenaar" Language: Graphviz program 3*2346a637SBram Moolenaar" Maintainer: Matthew Fernandez <[email protected]> 4*2346a637SBram Moolenaar" Last Change: Tue, 28 Jul 2020 17:20:44 -0700 5*2346a637SBram Moolenaar 6*2346a637SBram Moolenaarif exists("b:current_syntax") 7*2346a637SBram Moolenaar finish 8*2346a637SBram Moolenaarendif 9*2346a637SBram Moolenaar 10*2346a637SBram Moolenaarlet s:cpo_save = &cpo 11*2346a637SBram Moolenaarset cpo&vim 12*2346a637SBram Moolenaar 13*2346a637SBram Moolenaarsyn keyword gvArg ARGC ARGV 14*2346a637SBram Moolenaarsyn keyword gvBeg BEGIN BEG_G N E END END_G 15*2346a637SBram Moolenaarsyn keyword gvFunc 16*2346a637SBram Moolenaar \ graph fstsubg isDirect isStrict isSubg nEdges nNodes nxtsubg subg 17*2346a637SBram Moolenaar \ degreeOf fstnode indegreeOf isNode isSubnode node nxtnode nxtnode_sg 18*2346a637SBram Moolenaar \ outDegreeOf subnode 19*2346a637SBram Moolenaar \ edge edge_sg fstedge fstedge_sg fstin fstin_sg fstout fstout_sg isEdge 20*2346a637SBram Moolenaar \ isEdge_sg isSubedge nxtedge nxtedge_sg nxtin nxtin_sg nxtout nxtout_sg opp 21*2346a637SBram Moolenaar \ subedge 22*2346a637SBram Moolenaar \ freadG fwriteG readG write[] writeG 23*2346a637SBram Moolenaar \ aget aset clone cloneG compOf copy[] copyA delete[] fstAttr getDflt hasAttr 24*2346a637SBram Moolenaar \ induce isAttr isIn kindOf lock[] nxtAttr setDflt 25*2346a637SBram Moolenaar \ canon gsub html index ishtml length llOf match[] rindex split[] sprintf 26*2346a637SBram Moolenaar \ sscanf strcmp sub substr tokens tolower toupper urOf xOf yOf 27*2346a637SBram Moolenaar \ closeF openF print[] printf scanf readL 28*2346a637SBram Moolenaar \ atan2 cos exp log MAX MIN pow sin[] sqrt 29*2346a637SBram Moolenaar \ in[] unset 30*2346a637SBram Moolenaar \ colorx exit[] rand srand system 31*2346a637SBram Moolenaarsyn keyword gvCons 32*2346a637SBram Moolenaar \ NULL TV_bfs TV_dfs TV_en TV_flat TV_fwd TV_ne TV_prepostdfs TV_prepostfwd 33*2346a637SBram Moolenaar \ TV_prepostrev TV_postdfs TV_postfwd tv_postrev TV_rev 34*2346a637SBram Moolenaarsyn keyword gvType char double float int long unsigned void 35*2346a637SBram Moolenaar \ string 36*2346a637SBram Moolenaar \ edge_t graph_t node_t obj_t 37*2346a637SBram Moolenaarsyn match gvVar 38*2346a637SBram Moolenaar \ "\$\(\(F\|G\|NG\|O\|T\|tgtname\|tvedge\|tvnext\|tvroot\|tvtype\)\>\)\?\(\<\)\@!" 39*2346a637SBram Moolenaarsyn keyword gvWord break continue else for forr if return switch while 40*2346a637SBram Moolenaar 41*2346a637SBram Moolenaar" numbers adapted from c.vim's cNumbers and friends 42*2346a637SBram Moolenaarsyn match gvNums transparent "\<\d\|\.\d" contains=gvNumber,gvFloat,gvOctal 43*2346a637SBram Moolenaarsyn match gvNumber contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" 44*2346a637SBram Moolenaarsyn match gvNumber contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" 45*2346a637SBram Moolenaarsyn match gvOctal contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=gvOctalZero 46*2346a637SBram Moolenaarsyn match gvOctalZero contained "\<0" 47*2346a637SBram Moolenaarsyn match gvFloat contained "\d\+f" 48*2346a637SBram Moolenaarsyn match gvFloat contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" 49*2346a637SBram Moolenaarsyn match gvFloat contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" 50*2346a637SBram Moolenaarsyn match gvFloat contained "\d\+e[-+]\=\d\+[fl]\=\>" 51*2346a637SBram Moolenaar 52*2346a637SBram Moolenaarsyn region gvString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=gvFormat,gvSpecial extend 53*2346a637SBram Moolenaarsyn region gvString start="'" skip="\\\\\|\\'" end="'" contains=gvFormat,gvSpecial extend 54*2346a637SBram Moolenaar 55*2346a637SBram Moolenaar" adapted from c.vim's cFormat for c_no_c99 56*2346a637SBram Moolenaarsyn match gvFormat "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained 57*2346a637SBram Moolenaar 58*2346a637SBram Moolenaarsyn match gvSpecial "\\." contained 59*2346a637SBram Moolenaar 60*2346a637SBram Moolenaarsyn region gvCComment start="//" skip="\\$" end="$" keepend 61*2346a637SBram Moolenaarsyn region gvCPPComment start="#" skip="\\$" end="$" keepend 62*2346a637SBram Moolenaarsyn region gvCXXComment start="/\*" end="\*/" fold 63*2346a637SBram Moolenaar 64*2346a637SBram Moolenaarhi def link gvArg Identifier 65*2346a637SBram Moolenaarhi def link gvBeg Keyword 66*2346a637SBram Moolenaarhi def link gvFloat Number 67*2346a637SBram Moolenaarhi def link gvFunc Identifier 68*2346a637SBram Moolenaarhi def link gvCons Number 69*2346a637SBram Moolenaarhi def link gvNumber Number 70*2346a637SBram Moolenaarhi def link gvType Type 71*2346a637SBram Moolenaarhi def link gvVar Statement 72*2346a637SBram Moolenaarhi def link gvWord Keyword 73*2346a637SBram Moolenaar 74*2346a637SBram Moolenaarhi def link gvString String 75*2346a637SBram Moolenaarhi def link gvFormat Special 76*2346a637SBram Moolenaarhi def link gvSpecial Special 77*2346a637SBram Moolenaar 78*2346a637SBram Moolenaarhi def link gvCComment Comment 79*2346a637SBram Moolenaarhi def link gvCPPComment Comment 80*2346a637SBram Moolenaarhi def link gvCXXComment Comment 81*2346a637SBram Moolenaar 82*2346a637SBram Moolenaarlet b:current_syntax = "gvpr" 83*2346a637SBram Moolenaar 84*2346a637SBram Moolenaarlet &cpo = s:cpo_save 85*2346a637SBram Moolenaarunlet s:cpo_save 86