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 64command -nargs=+ HiLink hi def link <args> 65 66HiLink dylanBlock PreProc 67HiLink dylanBoolean Boolean 68HiLink dylanCharacter Character 69HiLink dylanClass Structure 70HiLink dylanClassMods StorageClass 71HiLink dylanComment Comment 72HiLink dylanConditional Conditional 73HiLink dylanConstant Constant 74HiLink dylanException Exception 75HiLink dylanHeader Macro 76HiLink dylanImport Include 77HiLink dylanLabel Label 78HiLink dylanMiscMods StorageClass 79HiLink dylanNumber Number 80HiLink dylanOther Keyword 81HiLink dylanOperator Operator 82HiLink dylanParamDefs Keyword 83HiLink dylanPrecondit PreCondit 84HiLink dylanRepeat Repeat 85HiLink dylanSimpleDefs Keyword 86HiLink dylanStatement Macro 87HiLink dylanString String 88HiLink dylanVariable Identifier 89 90delcommand HiLink 91 92let b:current_syntax = "dylan" 93 94" vim:ts=8 95