xref: /vim-8.2.3635/runtime/syntax/dot.vim (revision dad4473f)
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