blob: 345e932e60bca4da3b253444515f3925d7215d51 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Dylan
3" Authors: Justus Pendleton <justus@acm.org>
4" Brent A. Fulgham <bfulgham@debian.org>
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
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020011" quit when a syntax file was already loaded
12if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000013 finish
14endif
15
16syn case ignore
17
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020018setlocal lisp
Bram Moolenaar071d4272004-06-13 20:20:40 +000019
20" Highlight special characters (those that have backslashes) differently
21syn match dylanSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
22
23" Keywords
24syn keyword dylanBlock afterwards begin block cleanup end
25syn keyword dylanClassMods abstract concrete primary inherited virtual
26syn keyword dylanException exception handler signal
27syn keyword dylanParamDefs method class function library macro interface
28syn keyword dylanSimpleDefs constant variable generic primary
29syn keyword dylanOther above below from by in instance local slot subclass then to
30syn keyword dylanConditional if when select case else elseif unless finally otherwise then
31syn keyword dylanRepeat begin for until while from to
32syn keyword dylanStatement define let
33syn keyword dylanImport use import export exclude rename create
34syn keyword dylanMiscMods open sealed domain singleton sideways inline functional
35
36" Matching rules for special forms
37syn match dylanOperator "\s[-!%&\*\+/=\?@\\^|~:]\+[-#!>%&:\*\+/=\?@\\^|~]*"
38syn match dylanOperator "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=:[-!#$%&\*\+./=\?@\\^|~:]*"
39" Numbers
40syn match dylanNumber "\<[0-9]\+\>\|\<0[xX][0-9a-fA-F]\+\>\|\<0[oO][0-7]\+\>"
41syn match dylanNumber "\<[0-9]\+\.[0-9]\+\([eE][-+]\=[0-9]\+\)\=\>"
42" Booleans
43syn match dylanBoolean "#t\|#f"
44" Comments
45syn match dylanComment "//.*"
46syn region dylanComment start="/\*" end="\*/"
47" Strings
48syn region dylanString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=dySpecial
49syn match dylanCharacter "'[^\\]'"
50" Constants, classes, and variables
51syn match dylanConstant "$\<[a-zA-Z0-9\-]\+\>"
52syn match dylanClass "<\<[a-zA-Z0-9\-]\+\>>"
53syn match dylanVariable "\*\<[a-zA-Z0-9\-]\+\>\*"
54" Preconditions
55syn region dylanPrecondit start="^\s*#\s*\(if\>\|else\>\|endif\>\)" skip="\\$" end="$"
56
57" These appear at the top of files (usually). I like to highlight the whole line
58" so that the definition stands out. They should probably really be keywords, but they
59" don't generally appear in the middle of a line of code.
60syn region dylanHeader start="^[Mm]odule:" end="^$"
61
62" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020063" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +000064
Bram Moolenaarf37506f2016-08-31 22:22:10 +020065hi def link dylanBlock PreProc
66hi def link dylanBoolean Boolean
67hi def link dylanCharacter Character
68hi def link dylanClass Structure
69hi def link dylanClassMods StorageClass
70hi def link dylanComment Comment
71hi def link dylanConditional Conditional
72hi def link dylanConstant Constant
73hi def link dylanException Exception
74hi def link dylanHeader Macro
75hi def link dylanImport Include
76hi def link dylanLabel Label
77hi def link dylanMiscMods StorageClass
78hi def link dylanNumber Number
79hi def link dylanOther Keyword
80hi def link dylanOperator Operator
81hi def link dylanParamDefs Keyword
82hi def link dylanPrecondit PreCondit
83hi def link dylanRepeat Repeat
84hi def link dylanSimpleDefs Keyword
85hi def link dylanStatement Macro
86hi def link dylanString String
87hi def link dylanVariable Identifier
Bram Moolenaar071d4272004-06-13 20:20:40 +000088
Bram Moolenaar071d4272004-06-13 20:20:40 +000089
90let b:current_syntax = "dylan"
91
92" vim:ts=8