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