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" quit when a syntax file was already loaded 12if exists("b:current_syntax") 13 finish 14endif 15 16syn case ignore 17 18setlocal lisp 19 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. 63" Only when an item doesn't have highlighting yet 64 65hi 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 88 89 90let b:current_syntax = "dylan" 91 92" vim:ts=8 93