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