xref: /vim-8.2.3635/runtime/syntax/dylan.vim (revision cb03397a)
1" Vim syntax file
2" Language:	Dylan
3" Authors:	Justus Pendleton <[email protected]>
4"		Brent A. Fulgham <[email protected]>
5" Last Change:	Fri Sep 29 13:45:55 PDT 2000
6"
7" This syntax file is based on the Haskell, Perl, Scheme, and C
8" syntax files.
9
10" Part 1:  Syntax definition
11" For version 5.x: Clear all syntax items
12" For version 6.x: Quit when a syntax file was already loaded
13if version < 600
14  syntax clear
15elseif exists("b:current_syntax")
16  finish
17endif
18
19syn case ignore
20
21if version < 600
22  set lisp
23else
24  setlocal lisp
25endif
26
27" Highlight special characters (those that have backslashes) differently
28syn match	dylanSpecial		display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
29
30" Keywords
31syn keyword	dylanBlock		afterwards begin block cleanup end
32syn keyword	dylanClassMods		abstract concrete primary inherited virtual
33syn keyword	dylanException		exception handler signal
34syn keyword	dylanParamDefs		method class function library macro interface
35syn keyword	dylanSimpleDefs		constant variable generic primary
36syn keyword	dylanOther		above below from by in instance local slot subclass then to
37syn keyword	dylanConditional	if when select case else elseif unless finally otherwise then
38syn keyword	dylanRepeat		begin for until while from to
39syn keyword	dylanStatement		define let
40syn keyword	dylanImport		use import export exclude rename create
41syn keyword	dylanMiscMods		open sealed domain singleton sideways inline functional
42
43" Matching rules for special forms
44syn match	dylanOperator		"\s[-!%&\*\+/=\?@\\^|~:]\+[-#!>%&:\*\+/=\?@\\^|~]*"
45syn match	dylanOperator		"\(\<[A-Z][a-zA-Z0-9_']*\.\)\=:[-!#$%&\*\+./=\?@\\^|~:]*"
46" Numbers
47syn match	dylanNumber		"\<[0-9]\+\>\|\<0[xX][0-9a-fA-F]\+\>\|\<0[oO][0-7]\+\>"
48syn match	dylanNumber		"\<[0-9]\+\.[0-9]\+\([eE][-+]\=[0-9]\+\)\=\>"
49" Booleans
50syn match	dylanBoolean		"#t\|#f"
51" Comments
52syn match	dylanComment		"//.*"
53syn region	dylanComment		start="/\*" end="\*/"
54" Strings
55syn region	dylanString		start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=dySpecial
56syn match	dylanCharacter		"'[^\\]'"
57" Constants, classes, and variables
58syn match	dylanConstant		"$\<[a-zA-Z0-9\-]\+\>"
59syn match	dylanClass		"<\<[a-zA-Z0-9\-]\+\>>"
60syn match	dylanVariable		"\*\<[a-zA-Z0-9\-]\+\>\*"
61" Preconditions
62syn region	dylanPrecondit		start="^\s*#\s*\(if\>\|else\>\|endif\>\)" skip="\\$" end="$"
63
64" These appear at the top of files (usually).  I like to highlight the whole line
65" so that the definition stands out.  They should probably really be keywords, but they
66" don't generally appear in the middle of a line of code.
67syn region	dylanHeader	start="^[Mm]odule:" end="^$"
68
69" Define the default highlighting.
70" For version 5.7 and earlier: only when not done already
71" For version 5.8 and later: only when an item doesn't have highlighting yet
72if version >= 508 || !exists("did_dylan_syntax_inits")
73  if version < 508
74    let did_dylan_syntax_inits = 1
75    command -nargs=+ HiLink hi link <args>
76  else
77    command -nargs=+ HiLink hi def link <args>
78  endif
79
80  HiLink dylanBlock		PreProc
81  HiLink dylanBoolean		Boolean
82  HiLink dylanCharacter		Character
83  HiLink dylanClass		Structure
84  HiLink dylanClassMods		StorageClass
85  HiLink dylanComment		Comment
86  HiLink dylanConditional	Conditional
87  HiLink dylanConstant		Constant
88  HiLink dylanException		Exception
89  HiLink dylanHeader		Macro
90  HiLink dylanImport		Include
91  HiLink dylanLabel		Label
92  HiLink dylanMiscMods		StorageClass
93  HiLink dylanNumber		Number
94  HiLink dylanOther		Keyword
95  HiLink dylanOperator		Operator
96  HiLink dylanParamDefs		Keyword
97  HiLink dylanPrecondit		PreCondit
98  HiLink dylanRepeat		Repeat
99  HiLink dylanSimpleDefs	Keyword
100  HiLink dylanStatement		Macro
101  HiLink dylanString		String
102  HiLink dylanVariable		Identifier
103
104  delcommand HiLink
105endif
106
107let b:current_syntax = "dylan"
108
109" vim:ts=8
110