Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Language: Icon |
| 3 | " Maintainer: Wendell Turner <wendell@adsi-m4.com> |
| 4 | " URL: ftp://ftp.halcyon.com/pub/users/wturner/icon.vim |
| 5 | " Last Change: 2003 May 11 |
| 6 | |
| 7 | " For version 5.x: Clear all syntax items |
| 8 | " For version 6.x: Quit when a syntax file was already loaded |
| 9 | if version < 600 |
| 10 | syntax clear |
| 11 | elseif exists("b:current_syntax") |
| 12 | finish |
| 13 | endif |
| 14 | |
| 15 | syn keyword iconFunction abs acos any args asin atan bal |
| 16 | syn keyword iconFunction callout center char chdir close collect copy |
| 17 | syn keyword iconFunction cos cset delay delete detab display dtor |
| 18 | syn keyword iconFunction entab errorclear exit exp find flush function |
| 19 | syn keyword iconFunction get getch getche getenv iand icom image |
| 20 | syn keyword iconFunction insert integer ior ishift ixor kbhit key |
| 21 | syn keyword iconFunction left list loadfunc log many map match |
| 22 | syn keyword iconFunction member move name numeric open ord pop |
| 23 | syn keyword iconFunction pos proc pull push put read reads |
| 24 | syn keyword iconFunction real remove rename repl reverse right rtod |
| 25 | syn keyword iconFunction runerr save seek seq set sin sort |
| 26 | syn keyword iconFunction sortf sqrt stop string system tab table |
| 27 | syn keyword iconFunction tan trim type upto variable where write writes |
| 28 | |
| 29 | " Keywords |
| 30 | syn match iconKeyword "&allocated" |
| 31 | syn match iconKeyword "&ascii" |
| 32 | syn match iconKeyword "&clock" |
| 33 | syn match iconKeyword "&collections" |
| 34 | syn match iconKeyword "&cset" |
| 35 | syn match iconKeyword "¤t" |
| 36 | syn match iconKeyword "&date" |
| 37 | syn match iconKeyword "&dateline" |
| 38 | syn match iconKeyword "&digits" |
| 39 | syn match iconKeyword "&dump" |
| 40 | syn match iconKeyword "&e" |
| 41 | syn match iconKeyword "&error" |
| 42 | syn match iconKeyword "&errornumber" |
| 43 | syn match iconKeyword "&errortext" |
| 44 | syn match iconKeyword "&errorvalue" |
| 45 | syn match iconKeyword "&errout" |
| 46 | syn match iconKeyword "&fail" |
| 47 | syn match iconKeyword "&features" |
| 48 | syn match iconKeyword "&file" |
| 49 | syn match iconKeyword "&host" |
| 50 | syn match iconKeyword "&input" |
| 51 | syn match iconKeyword "&lcase" |
| 52 | syn match iconKeyword "&letters" |
| 53 | syn match iconKeyword "&level" |
| 54 | syn match iconKeyword "&line" |
| 55 | syn match iconKeyword "&main" |
| 56 | syn match iconKeyword "&null" |
| 57 | syn match iconKeyword "&output" |
| 58 | syn match iconKeyword "&phi" |
| 59 | syn match iconKeyword "&pi" |
| 60 | syn match iconKeyword "&pos" |
| 61 | syn match iconKeyword "&progname" |
| 62 | syn match iconKeyword "&random" |
| 63 | syn match iconKeyword "®ions" |
| 64 | syn match iconKeyword "&source" |
| 65 | syn match iconKeyword "&storage" |
| 66 | syn match iconKeyword "&subject" |
| 67 | syn match iconKeyword "&time" |
| 68 | syn match iconKeyword "&trace" |
| 69 | syn match iconKeyword "&ucase" |
| 70 | syn match iconKeyword "&version" |
| 71 | |
| 72 | " Reserved words |
| 73 | syn keyword iconReserved break by case create default do |
| 74 | syn keyword iconReserved else end every fail if |
| 75 | syn keyword iconReserved initial link next not of |
| 76 | syn keyword iconReserved procedure repeat return suspend |
| 77 | syn keyword iconReserved then to until while |
| 78 | |
| 79 | " Storage class reserved words |
| 80 | syn keyword iconStorageClass global static local record |
| 81 | |
| 82 | syn keyword iconTodo contained TODO FIXME XXX BUG |
| 83 | |
| 84 | " String and Character constants |
| 85 | " Highlight special characters (those which have a backslash) differently |
| 86 | syn match iconSpecial contained "\\x\x\{2}\|\\\o\{3\}\|\\[bdeflnrtv\"\'\\]\|\\^c[a-zA-Z0-9]\|\\$" |
| 87 | syn region iconString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=iconSpecial |
| 88 | syn region iconCset start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=iconSpecial |
| 89 | syn match iconCharacter "'[^\\]'" |
| 90 | |
| 91 | " not sure about these |
| 92 | "syn match iconSpecialCharacter "'\\[bdeflnrtv]'" |
| 93 | "syn match iconSpecialCharacter "'\\\o\{3\}'" |
| 94 | "syn match iconSpecialCharacter "'\\x\x\{2}'" |
| 95 | "syn match iconSpecialCharacter "'\\^c\[a-zA-Z0-9]'" |
| 96 | |
| 97 | "when wanted, highlight trailing white space |
| 98 | if exists("icon_space_errors") |
| 99 | syn match iconSpaceError "\s*$" |
| 100 | syn match iconSpaceError " \+\t"me=e-1 |
| 101 | endif |
| 102 | |
| 103 | "catch errors caused by wrong parenthesis |
| 104 | syn cluster iconParenGroup contains=iconParenError,iconIncluded,iconSpecial,iconTodo,iconUserCont,iconUserLabel,iconBitField |
| 105 | |
| 106 | syn region iconParen transparent start='(' end=')' contains=ALLBUT,@iconParenGroup |
| 107 | syn match iconParenError ")" |
| 108 | syn match iconInParen contained "[{}]" |
| 109 | |
| 110 | |
| 111 | syn case ignore |
| 112 | |
| 113 | "integer number, or floating point number without a dot |
| 114 | syn match iconNumber "\<\d\+\>" |
| 115 | |
| 116 | "floating point number, with dot, optional exponent |
| 117 | syn match iconFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=\>" |
| 118 | |
| 119 | "floating point number, starting with a dot, optional exponent |
| 120 | syn match iconFloat "\.\d\+\(e[-+]\=\d\+\)\=\>" |
| 121 | |
| 122 | "floating point number, without dot, with exponent |
| 123 | syn match iconFloat "\<\d\+e[-+]\=\d\+\>" |
| 124 | |
| 125 | "radix number |
| 126 | syn match iconRadix "\<\d\{1,2}[rR][a-zA-Z0-9]\+\>" |
| 127 | |
| 128 | |
| 129 | " syn match iconIdentifier "\<[a-z_][a-z0-9_]*\>" |
| 130 | |
| 131 | syn case match |
| 132 | |
| 133 | " Comment |
| 134 | syn match iconComment "#.*" contains=iconTodo,iconSpaceError |
| 135 | |
| 136 | syn region iconPreCondit start="^\s*$\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=iconComment,iconString,iconCharacter,iconNumber,iconCommentError,iconSpaceError |
| 137 | |
| 138 | syn region iconIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ |
| 139 | syn match iconIncluded contained "<[^>]*>" |
| 140 | syn match iconInclude "^\s*$\s*include\>\s*["<]" contains=iconIncluded |
| 141 | "syn match iconLineSkip "\\$" |
| 142 | |
| 143 | syn cluster iconPreProcGroup contains=iconPreCondit,iconIncluded,iconInclude,iconDefine,iconInParen,iconUserLabel |
| 144 | |
| 145 | syn region iconDefine start="^\s*$\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,@iconPreProcGroup |
| 146 | |
| 147 | "wt:syn region iconPreProc "start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" "end="$" contains=ALLBUT,@iconPreProcGroup |
| 148 | |
| 149 | " Highlight User Labels |
| 150 | |
| 151 | " syn cluster iconMultiGroup contains=iconIncluded,iconSpecial,iconTodo,iconUserCont,iconUserLabel,iconBitField |
| 152 | |
| 153 | if !exists("icon_minlines") |
| 154 | let icon_minlines = 15 |
| 155 | endif |
| 156 | exec "syn sync ccomment iconComment minlines=" . icon_minlines |
| 157 | |
| 158 | " Define the default highlighting. |
| 159 | |
| 160 | " For version 5.7 and earlier: only when not done already |
| 161 | " For version 5.8 and later: only when an item doesn't have highlighting |
| 162 | if version >= 508 || !exists("did_icon_syn_inits") |
| 163 | if version < 508 |
| 164 | let did_icon_syn_inits = 1 |
| 165 | command -nargs=+ HiLink hi link <args> |
| 166 | else |
| 167 | command -nargs=+ HiLink hi def link <args> |
| 168 | endif |
| 169 | |
| 170 | " The default methods for highlighting. Can be overridden later |
| 171 | |
| 172 | " HiLink iconSpecialCharacter iconSpecial |
| 173 | |
| 174 | HiLink iconOctalError iconError |
| 175 | HiLink iconParenError iconError |
| 176 | HiLink iconInParen iconError |
| 177 | HiLink iconCommentError iconError |
| 178 | HiLink iconSpaceError iconError |
| 179 | HiLink iconCommentError iconError |
| 180 | HiLink iconIncluded iconString |
| 181 | HiLink iconCommentString iconString |
| 182 | HiLink iconComment2String iconString |
| 183 | HiLink iconCommentSkip iconComment |
| 184 | |
| 185 | HiLink iconUserLabel Label |
| 186 | HiLink iconCharacter Character |
| 187 | HiLink iconNumber Number |
| 188 | HiLink iconRadix Number |
| 189 | HiLink iconFloat Float |
| 190 | HiLink iconInclude Include |
| 191 | HiLink iconPreProc PreProc |
| 192 | HiLink iconDefine Macro |
| 193 | HiLink iconError Error |
| 194 | HiLink iconStatement Statement |
| 195 | HiLink iconPreCondit PreCondit |
| 196 | HiLink iconString String |
| 197 | HiLink iconCset String |
| 198 | HiLink iconComment Comment |
| 199 | HiLink iconSpecial SpecialChar |
| 200 | HiLink iconTodo Todo |
| 201 | HiLink iconStorageClass StorageClass |
| 202 | HiLink iconFunction Statement |
| 203 | HiLink iconReserved Label |
| 204 | HiLink iconKeyword Operator |
| 205 | |
| 206 | "HiLink iconIdentifier Identifier |
| 207 | |
| 208 | delcommand HiLink |
| 209 | endif |
| 210 | |
| 211 | let b:current_syntax = "icon" |
| 212 | |