xref: /vim-8.2.3635/runtime/syntax/dylan.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	Dylan
3071d4279SBram Moolenaar" Authors:	Justus Pendleton <[email protected]>
4071d4279SBram Moolenaar"		Brent A. Fulgham <[email protected]>
5071d4279SBram Moolenaar" Last Change:	Fri Sep 29 13:45:55 PDT 2000
6071d4279SBram Moolenaar"
7071d4279SBram Moolenaar" This syntax file is based on the Haskell, Perl, Scheme, and C
8071d4279SBram Moolenaar" syntax files.
9071d4279SBram Moolenaar
10071d4279SBram Moolenaar" Part 1:  Syntax definition
1189bcfda6SBram Moolenaar" quit when a syntax file was already loaded
1289bcfda6SBram Moolenaarif exists("b:current_syntax")
13071d4279SBram Moolenaar  finish
14071d4279SBram Moolenaarendif
15071d4279SBram Moolenaar
16071d4279SBram Moolenaarsyn case ignore
17071d4279SBram Moolenaar
18071d4279SBram Moolenaarsetlocal lisp
19071d4279SBram Moolenaar
20071d4279SBram Moolenaar" Highlight special characters (those that have backslashes) differently
21071d4279SBram Moolenaarsyn match	dylanSpecial		display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
22071d4279SBram Moolenaar
23071d4279SBram Moolenaar" Keywords
24071d4279SBram Moolenaarsyn keyword	dylanBlock		afterwards begin block cleanup end
25071d4279SBram Moolenaarsyn keyword	dylanClassMods		abstract concrete primary inherited virtual
26071d4279SBram Moolenaarsyn keyword	dylanException		exception handler signal
27071d4279SBram Moolenaarsyn keyword	dylanParamDefs		method class function library macro interface
28071d4279SBram Moolenaarsyn keyword	dylanSimpleDefs		constant variable generic primary
29071d4279SBram Moolenaarsyn keyword	dylanOther		above below from by in instance local slot subclass then to
30071d4279SBram Moolenaarsyn keyword	dylanConditional	if when select case else elseif unless finally otherwise then
31071d4279SBram Moolenaarsyn keyword	dylanRepeat		begin for until while from to
32071d4279SBram Moolenaarsyn keyword	dylanStatement		define let
33071d4279SBram Moolenaarsyn keyword	dylanImport		use import export exclude rename create
34071d4279SBram Moolenaarsyn keyword	dylanMiscMods		open sealed domain singleton sideways inline functional
35071d4279SBram Moolenaar
36071d4279SBram Moolenaar" Matching rules for special forms
37071d4279SBram Moolenaarsyn match	dylanOperator		"\s[-!%&\*\+/=\?@\\^|~:]\+[-#!>%&:\*\+/=\?@\\^|~]*"
38071d4279SBram Moolenaarsyn match	dylanOperator		"\(\<[A-Z][a-zA-Z0-9_']*\.\)\=:[-!#$%&\*\+./=\?@\\^|~:]*"
39071d4279SBram Moolenaar" Numbers
40071d4279SBram Moolenaarsyn match	dylanNumber		"\<[0-9]\+\>\|\<0[xX][0-9a-fA-F]\+\>\|\<0[oO][0-7]\+\>"
41071d4279SBram Moolenaarsyn match	dylanNumber		"\<[0-9]\+\.[0-9]\+\([eE][-+]\=[0-9]\+\)\=\>"
42071d4279SBram Moolenaar" Booleans
43071d4279SBram Moolenaarsyn match	dylanBoolean		"#t\|#f"
44071d4279SBram Moolenaar" Comments
45071d4279SBram Moolenaarsyn match	dylanComment		"//.*"
46071d4279SBram Moolenaarsyn region	dylanComment		start="/\*" end="\*/"
47071d4279SBram Moolenaar" Strings
48071d4279SBram Moolenaarsyn region	dylanString		start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=dySpecial
49071d4279SBram Moolenaarsyn match	dylanCharacter		"'[^\\]'"
50071d4279SBram Moolenaar" Constants, classes, and variables
51071d4279SBram Moolenaarsyn match	dylanConstant		"$\<[a-zA-Z0-9\-]\+\>"
52071d4279SBram Moolenaarsyn match	dylanClass		"<\<[a-zA-Z0-9\-]\+\>>"
53071d4279SBram Moolenaarsyn match	dylanVariable		"\*\<[a-zA-Z0-9\-]\+\>\*"
54071d4279SBram Moolenaar" Preconditions
55071d4279SBram Moolenaarsyn region	dylanPrecondit		start="^\s*#\s*\(if\>\|else\>\|endif\>\)" skip="\\$" end="$"
56071d4279SBram Moolenaar
57071d4279SBram Moolenaar" These appear at the top of files (usually).  I like to highlight the whole line
58071d4279SBram Moolenaar" so that the definition stands out.  They should probably really be keywords, but they
59071d4279SBram Moolenaar" don't generally appear in the middle of a line of code.
60071d4279SBram Moolenaarsyn region	dylanHeader	start="^[Mm]odule:" end="^$"
61071d4279SBram Moolenaar
62071d4279SBram Moolenaar" Define the default highlighting.
6389bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
64071d4279SBram Moolenaar
65*f37506f6SBram Moolenaarhi def link dylanBlock		PreProc
66*f37506f6SBram Moolenaarhi def link dylanBoolean		Boolean
67*f37506f6SBram Moolenaarhi def link dylanCharacter		Character
68*f37506f6SBram Moolenaarhi def link dylanClass		Structure
69*f37506f6SBram Moolenaarhi def link dylanClassMods		StorageClass
70*f37506f6SBram Moolenaarhi def link dylanComment		Comment
71*f37506f6SBram Moolenaarhi def link dylanConditional	Conditional
72*f37506f6SBram Moolenaarhi def link dylanConstant		Constant
73*f37506f6SBram Moolenaarhi def link dylanException		Exception
74*f37506f6SBram Moolenaarhi def link dylanHeader		Macro
75*f37506f6SBram Moolenaarhi def link dylanImport		Include
76*f37506f6SBram Moolenaarhi def link dylanLabel		Label
77*f37506f6SBram Moolenaarhi def link dylanMiscMods		StorageClass
78*f37506f6SBram Moolenaarhi def link dylanNumber		Number
79*f37506f6SBram Moolenaarhi def link dylanOther		Keyword
80*f37506f6SBram Moolenaarhi def link dylanOperator		Operator
81*f37506f6SBram Moolenaarhi def link dylanParamDefs		Keyword
82*f37506f6SBram Moolenaarhi def link dylanPrecondit		PreCondit
83*f37506f6SBram Moolenaarhi def link dylanRepeat		Repeat
84*f37506f6SBram Moolenaarhi def link dylanSimpleDefs	Keyword
85*f37506f6SBram Moolenaarhi def link dylanStatement		Macro
86*f37506f6SBram Moolenaarhi def link dylanString		String
87*f37506f6SBram Moolenaarhi def link dylanVariable		Identifier
88071d4279SBram Moolenaar
89071d4279SBram Moolenaar
90071d4279SBram Moolenaarlet b:current_syntax = "dylan"
91071d4279SBram Moolenaar
92071d4279SBram Moolenaar" vim:ts=8
93