7
|
1 " Vim syntax file
|
|
2 " Language: C
|
|
3 " Maintainer: Bram Moolenaar <Bram@vim.org>
|
857
|
4 " Last Change: 2006 May 01
|
7
|
5
|
344
|
6 " Quit when a (custom) syntax file was already loaded
|
|
7 if exists("b:current_syntax")
|
7
|
8 finish
|
|
9 endif
|
|
10
|
|
11 " A bunch of useful C keywords
|
|
12 syn keyword cStatement goto break return continue asm
|
|
13 syn keyword cLabel case default
|
|
14 syn keyword cConditional if else switch
|
|
15 syn keyword cRepeat while for do
|
|
16
|
|
17 syn keyword cTodo contained TODO FIXME XXX
|
|
18
|
|
19 " cCommentGroup allows adding matches for special things in comments
|
|
20 syn cluster cCommentGroup contains=cTodo
|
|
21
|
|
22 " String and Character constants
|
|
23 " Highlight special characters (those which have a backslash) differently
|
|
24 syn match cSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
|
|
25 if !exists("c_no_utf")
|
|
26 syn match cSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)"
|
|
27 endif
|
|
28 if exists("c_no_cformat")
|
|
29 syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell
|
|
30 " cCppString: same as cString, but ends at end of line
|
|
31 syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,@Spell
|
|
32 else
|
827
|
33 if !exists("c_no_c99") " ISO C99
|
|
34 syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
|
|
35 else
|
|
36 syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
|
|
37 endif
|
7
|
38 syn match cFormat display "%%" contained
|
|
39 syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell
|
|
40 " cCppString: same as cString, but ends at end of line
|
|
41 syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell
|
|
42 endif
|
|
43
|
|
44 syn match cCharacter "L\='[^\\]'"
|
|
45 syn match cCharacter "L'[^']*'" contains=cSpecial
|
|
46 if exists("c_gnu")
|
|
47 syn match cSpecialError "L\='\\[^'\"?\\abefnrtv]'"
|
|
48 syn match cSpecialCharacter "L\='\\['\"?\\abefnrtv]'"
|
|
49 else
|
|
50 syn match cSpecialError "L\='\\[^'\"?\\abfnrtv]'"
|
|
51 syn match cSpecialCharacter "L\='\\['\"?\\abfnrtv]'"
|
|
52 endif
|
|
53 syn match cSpecialCharacter display "L\='\\\o\{1,3}'"
|
|
54 syn match cSpecialCharacter display "'\\x\x\{1,2}'"
|
|
55 syn match cSpecialCharacter display "L'\\x\x\+'"
|
|
56
|
|
57 "when wanted, highlight trailing white space
|
|
58 if exists("c_space_errors")
|
|
59 if !exists("c_no_trail_space_error")
|
|
60 syn match cSpaceError display excludenl "\s\+$"
|
|
61 endif
|
|
62 if !exists("c_no_tab_space_error")
|
|
63 syn match cSpaceError display " \+\t"me=e-1
|
|
64 endif
|
|
65 endif
|
|
66
|
|
67 "catch errors caused by wrong parenthesis and brackets
|
|
68 " also accept <% for {, %> for }, <: for [ and :> for ] (C99)
|
|
69 " But avoid matching <::.
|
|
70 syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cCommentSkip,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
|
140
|
71 if exists("c_no_curly_error")
|
|
72 syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
|
|
73 " cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
|
74 syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
|
|
75 syn match cParenError display ")"
|
|
76 syn match cErrInParen display contained "^[{}]\|^<%\|^%>"
|
|
77 elseif exists("c_no_bracket_error")
|
7
|
78 syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
|
|
79 " cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
|
80 syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
|
|
81 syn match cParenError display ")"
|
|
82 syn match cErrInParen display contained "[{}]\|<%\|%>"
|
|
83 else
|
|
84 syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
|
|
85 " cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
|
86 syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
|
|
87 syn match cParenError display "[\])]"
|
|
88 syn match cErrInParen display contained "[\]{}]\|<%\|%>"
|
|
89 syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell
|
|
90 " cCppBracket: same as cParen but ends at end-of-line; used in cDefine
|
|
91 syn region cCppBracket transparent start='\[\|<::\@!' skip='\\$' excludenl end=']\|:>' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString,@Spell
|
|
92 syn match cErrInBracket display contained "[);{}]\|<%\|%>"
|
|
93 endif
|
|
94
|
|
95 "integer number, or floating point number without a dot and with "f".
|
|
96 syn case ignore
|
|
97 syn match cNumbers display transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalError,cOctal
|
|
98 " Same, but without octal error (for comments)
|
|
99 syn match cNumbersCom display contained transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctal
|
|
100 syn match cNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
|
|
101 "hex number
|
|
102 syn match cNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
|
|
103 " Flag the first zero of an octal number as something special
|
|
104 syn match cOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero
|
|
105 syn match cOctalZero display contained "\<0"
|
|
106 syn match cFloat display contained "\d\+f"
|
|
107 "floating point number, with dot, optional exponent
|
|
108 syn match cFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
|
|
109 "floating point number, starting with a dot, optional exponent
|
|
110 syn match cFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
|
|
111 "floating point number, without dot, with exponent
|
|
112 syn match cFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
|
|
113 if !exists("c_no_c99")
|
|
114 "hexadecimal floating point number, optional leading digits, with dot, with exponent
|
|
115 syn match cFloat display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>"
|
|
116 "hexadecimal floating point number, with leading digits, optional dot, with exponent
|
|
117 syn match cFloat display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>"
|
|
118 endif
|
|
119
|
|
120 " flag an octal number with wrong digits
|
|
121 syn match cOctalError display contained "0\o*[89]\d*"
|
|
122 syn case match
|
|
123
|
|
124 if exists("c_comment_strings")
|
|
125 " A comment can contain cString, cCharacter and cNumber.
|
|
126 " But a "*/" inside a cString in a cComment DOES end the comment! So we
|
|
127 " need to use a special type of cString: cCommentString, which also ends on
|
|
128 " "*/", and sees a "*" at the start of the line as comment again.
|
|
129 " Unfortunately this doesn't very well work for // type of comments :-(
|
|
130 syntax match cCommentSkip contained "^\s*\*\($\|\s\+\)"
|
|
131 syntax region cCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=cSpecial,cCommentSkip
|
|
132 syntax region cComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial
|
|
133 syntax region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError,@Spell
|
36
|
134 if exists("c_no_comment_fold")
|
|
135 syntax region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell
|
|
136 else
|
|
137 syntax region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell fold
|
|
138 endif
|
7
|
139 else
|
|
140 syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cSpaceError,@Spell
|
36
|
141 if exists("c_no_comment_fold")
|
|
142 syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell
|
|
143 else
|
|
144 syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell fold
|
|
145 endif
|
7
|
146 endif
|
|
147 " keep a // comment separately, it terminates a preproc. conditional
|
|
148 syntax match cCommentError display "\*/"
|
|
149 syntax match cCommentStartError display "/\*"me=e-1 contained
|
|
150
|
36
|
151 syntax region cBlock start="{" end="}" transparent fold
|
|
152
|
7
|
153 syn keyword cOperator sizeof
|
|
154 if exists("c_gnu")
|
|
155 syn keyword cStatement __asm__
|
|
156 syn keyword cOperator typeof __real__ __imag__
|
|
157 endif
|
|
158 syn keyword cType int long short char void
|
|
159 syn keyword cType signed unsigned float double
|
|
160 if !exists("c_no_ansi") || exists("c_ansi_typedefs")
|
|
161 syn keyword cType size_t ssize_t wchar_t ptrdiff_t sig_atomic_t fpos_t
|
|
162 syn keyword cType clock_t time_t va_list jmp_buf FILE DIR div_t ldiv_t
|
|
163 syn keyword cType mbstate_t wctrans_t wint_t wctype_t
|
|
164 endif
|
|
165 if !exists("c_no_c99") " ISO C99
|
|
166 syn keyword cType bool complex
|
|
167 syn keyword cType int8_t int16_t int32_t int64_t
|
|
168 syn keyword cType uint8_t uint16_t uint32_t uint64_t
|
|
169 syn keyword cType int_least8_t int_least16_t int_least32_t int_least64_t
|
|
170 syn keyword cType uint_least8_t uint_least16_t uint_least32_t uint_least64_t
|
|
171 syn keyword cType int_fast8_t int_fast16_t int_fast32_t int_fast64_t
|
|
172 syn keyword cType uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t
|
|
173 syn keyword cType intptr_t uintptr_t
|
|
174 syn keyword cType intmax_t uintmax_t
|
|
175 endif
|
|
176 if exists("c_gnu")
|
|
177 syn keyword cType __label__ __complex__ __volatile__
|
|
178 endif
|
|
179
|
|
180 syn keyword cStructure struct union enum typedef
|
|
181 syn keyword cStorageClass static register auto volatile extern const
|
|
182 if exists("c_gnu")
|
|
183 syn keyword cStorageClass inline __attribute__
|
|
184 endif
|
|
185 if !exists("c_no_c99")
|
|
186 syn keyword cStorageClass inline restrict
|
|
187 endif
|
|
188
|
|
189 if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
|
|
190 if exists("c_gnu")
|
819
|
191 syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__ __func__
|
7
|
192 endif
|
|
193 syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__
|
|
194 syn keyword cConstant __STDC_VERSION__
|
|
195 syn keyword cConstant CHAR_BIT MB_LEN_MAX MB_CUR_MAX
|
|
196 syn keyword cConstant UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX
|
|
197 syn keyword cConstant CHAR_MIN INT_MIN LONG_MIN SHRT_MIN
|
|
198 syn keyword cConstant CHAR_MAX INT_MAX LONG_MAX SHRT_MAX
|
|
199 syn keyword cConstant SCHAR_MIN SINT_MIN SLONG_MIN SSHRT_MIN
|
|
200 syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX
|
|
201 if !exists("c_no_c99")
|
819
|
202 syn keyword cConstant __func__
|
7
|
203 syn keyword cConstant LLONG_MAX ULLONG_MAX
|
|
204 syn keyword cConstant INT8_MIN INT16_MIN INT32_MIN INT64_MIN
|
|
205 syn keyword cConstant INT8_MAX INT16_MAX INT32_MAX INT64_MAX
|
|
206 syn keyword cConstant UINT8_MAX UINT16_MAX UINT32_MAX UINT64_MAX
|
|
207 syn keyword cConstant INT_LEAST8_MIN INT_LEAST16_MIN INT_LEAST32_MIN INT_LEAST64_MIN
|
|
208 syn keyword cConstant INT_LEAST8_MAX INT_LEAST16_MAX INT_LEAST32_MAX INT_LEAST64_MAX
|
|
209 syn keyword cConstant UINT_LEAST8_MAX UINT_LEAST16_MAX UINT_LEAST32_MAX UINT_LEAST64_MAX
|
|
210 syn keyword cConstant INT_FAST8_MIN INT_FAST16_MIN INT_FAST32_MIN INT_FAST64_MIN
|
|
211 syn keyword cConstant INT_FAST8_MAX INT_FAST16_MAX INT_FAST32_MAX INT_FAST64_MAX
|
|
212 syn keyword cConstant UINT_FAST8_MAX UINT_FAST16_MAX UINT_FAST32_MAX UINT_FAST64_MAX
|
|
213 syn keyword cConstant INTPTR_MIN INTPTR_MAX UINTPTR_MAX
|
|
214 syn keyword cConstant INTMAX_MIN INTMAX_MAX UINTMAX_MAX
|
|
215 syn keyword cConstant PTRDIFF_MIN PTRDIFF_MAX SIG_ATOMIC_MIN SIG_ATOMIC_MAX
|
|
216 syn keyword cConstant SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX
|
|
217 endif
|
|
218 syn keyword cConstant FLT_RADIX FLT_ROUNDS
|
|
219 syn keyword cConstant FLT_DIG FLT_MANT_DIG FLT_EPSILON
|
|
220 syn keyword cConstant DBL_DIG DBL_MANT_DIG DBL_EPSILON
|
|
221 syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON
|
|
222 syn keyword cConstant FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP
|
|
223 syn keyword cConstant FLT_MIN_10_EXP FLT_MAX_10_EXP
|
|
224 syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP
|
|
225 syn keyword cConstant DBL_MIN_10_EXP DBL_MAX_10_EXP
|
|
226 syn keyword cConstant LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP
|
|
227 syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP
|
|
228 syn keyword cConstant HUGE_VAL CLOCKS_PER_SEC NULL
|
|
229 syn keyword cConstant LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY
|
|
230 syn keyword cConstant LC_NUMERIC LC_TIME
|
|
231 syn keyword cConstant SIG_DFL SIG_ERR SIG_IGN
|
|
232 syn keyword cConstant SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM
|
|
233 " Add POSIX signals as well...
|
|
234 syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP
|
|
235 syn keyword cConstant SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV
|
|
236 syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU
|
|
237 syn keyword cConstant SIGUSR1 SIGUSR2
|
|
238 syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF
|
|
239 syn keyword cConstant FOPEN_MAX FILENAME_MAX L_tmpnam
|
|
240 syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET
|
|
241 syn keyword cConstant TMP_MAX stderr stdin stdout
|
|
242 syn keyword cConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX
|
|
243 " Add POSIX errors as well
|
|
244 syn keyword cConstant E2BIG EACCES EAGAIN EBADF EBADMSG EBUSY
|
|
245 syn keyword cConstant ECANCELED ECHILD EDEADLK EDOM EEXIST EFAULT
|
|
246 syn keyword cConstant EFBIG EILSEQ EINPROGRESS EINTR EINVAL EIO EISDIR
|
|
247 syn keyword cConstant EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENFILE ENODEV
|
|
248 syn keyword cConstant ENOENT ENOEXEC ENOLCK ENOMEM ENOSPC ENOSYS
|
|
249 syn keyword cConstant ENOTDIR ENOTEMPTY ENOTSUP ENOTTY ENXIO EPERM
|
|
250 syn keyword cConstant EPIPE ERANGE EROFS ESPIPE ESRCH ETIMEDOUT EXDEV
|
|
251 " math.h
|
|
252 syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4
|
|
253 syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2
|
|
254 endif
|
|
255 if !exists("c_no_c99") " ISO C99
|
|
256 syn keyword cConstant true false
|
|
257 endif
|
|
258
|
|
259 " Accept %: for # (C99)
|
|
260 syn region cPreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=cComment,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
|
|
261 syn match cPreCondit display "^\s*\(%:\|#\)\s*\(else\|endif\)\>"
|
|
262 if !exists("c_no_if0")
|
842
|
263 if !exists("c_no_if0_fold")
|
|
264 syn region cCppOut start="^\s*\(%:\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=cCppOut2 fold
|
|
265 else
|
|
266 syn region cCppOut start="^\s*\(%:\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=cCppOut2
|
|
267 endif
|
7
|
268 syn region cCppOut2 contained start="0" end="^\s*\(%:\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=cSpaceError,cCppSkip
|
|
269 syn region cCppSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip
|
|
270 endif
|
|
271 syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
|
|
272 syn match cIncluded display contained "<[^>]*>"
|
|
273 syn match cInclude display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded
|
|
274 "syn match cLineSkip "\\$"
|
|
275 syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti
|
|
276 syn region cDefine start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@cPreProcGroup,@Spell
|
|
277 syn region cPreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
|
|
278
|
|
279 " Highlight User Labels
|
|
280 syn cluster cMultiGroup contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
|
|
281 syn region cMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell
|
|
282 " Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
|
|
283 syn cluster cLabelGroup contains=cUserLabel
|
|
284 syn match cUserCont display "^\s*\I\i*\s*:$" contains=@cLabelGroup
|
|
285 syn match cUserCont display ";\s*\I\i*\s*:$" contains=@cLabelGroup
|
|
286 syn match cUserCont display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
|
|
287 syn match cUserCont display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
|
|
288
|
|
289 syn match cUserLabel display "\I\i*" contained
|
|
290
|
|
291 " Avoid recognizing most bitfields as labels
|
857
|
292 syn match cBitField display "^\s*\I\i*\s*:\s*[1-9]"me=e-1 contains=cType
|
|
293 syn match cBitField display ";\s*\I\i*\s*:\s*[1-9]"me=e-1 contains=cType
|
7
|
294
|
|
295 if exists("c_minlines")
|
|
296 let b:c_minlines = c_minlines
|
|
297 else
|
|
298 if !exists("c_no_if0")
|
|
299 let b:c_minlines = 50 " #if 0 constructs can be long
|
|
300 else
|
|
301 let b:c_minlines = 15 " mostly for () constructs
|
|
302 endif
|
|
303 endif
|
|
304 exec "syn sync ccomment cComment minlines=" . b:c_minlines
|
|
305
|
|
306 " Define the default highlighting.
|
344
|
307 " Only used when an item doesn't have highlighting yet
|
|
308 hi def link cFormat cSpecial
|
|
309 hi def link cCppString cString
|
|
310 hi def link cCommentL cComment
|
|
311 hi def link cCommentStart cComment
|
|
312 hi def link cLabel Label
|
|
313 hi def link cUserLabel Label
|
|
314 hi def link cConditional Conditional
|
|
315 hi def link cRepeat Repeat
|
|
316 hi def link cCharacter Character
|
|
317 hi def link cSpecialCharacter cSpecial
|
|
318 hi def link cNumber Number
|
|
319 hi def link cOctal Number
|
|
320 hi def link cOctalZero PreProc " link this to Error if you want
|
|
321 hi def link cFloat Float
|
|
322 hi def link cOctalError cError
|
|
323 hi def link cParenError cError
|
|
324 hi def link cErrInParen cError
|
|
325 hi def link cErrInBracket cError
|
|
326 hi def link cCommentError cError
|
|
327 hi def link cCommentStartError cError
|
|
328 hi def link cSpaceError cError
|
|
329 hi def link cSpecialError cError
|
|
330 hi def link cOperator Operator
|
|
331 hi def link cStructure Structure
|
|
332 hi def link cStorageClass StorageClass
|
|
333 hi def link cInclude Include
|
|
334 hi def link cPreProc PreProc
|
|
335 hi def link cDefine Macro
|
|
336 hi def link cIncluded cString
|
|
337 hi def link cError Error
|
|
338 hi def link cStatement Statement
|
|
339 hi def link cPreCondit PreCondit
|
|
340 hi def link cType Type
|
|
341 hi def link cConstant Constant
|
|
342 hi def link cCommentString cString
|
|
343 hi def link cComment2String cString
|
|
344 hi def link cCommentSkip cComment
|
|
345 hi def link cString String
|
|
346 hi def link cComment Comment
|
|
347 hi def link cSpecial SpecialChar
|
|
348 hi def link cTodo Todo
|
|
349 hi def link cCppSkip cCppOut
|
|
350 hi def link cCppOut2 cCppOut
|
|
351 hi def link cCppOut Comment
|
7
|
352
|
|
353 let b:current_syntax = "c"
|
|
354
|
|
355 " vim: ts=8
|