blob: 4c2c9d9dc04b2515b370559956e65ce0adeb8e19 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: kimwitu++
Bram Moolenaarb6b046b2011-12-30 13:11:27 +01003" Maintainer: Michael Piefel <entwurf@piefel.de>
Bram Moolenaar071d4272004-06-13 20:20:40 +00004" Last Change: 2 May 2001
5
6" For version 5.x: Clear all syntax items
7" For version 6.x: Quit when a syntax file was already loaded
8if version < 600
9 syntax clear
10elseif exists("b:current_syntax")
11 finish
12endif
13
14" Read the C++ syntax to start with
15if version < 600
16 source <sfile>:p:h/cpp.vim
17else
18 runtime! syntax/cpp.vim
19 unlet b:current_syntax
20endif
21
22" kimwitu++ extentions
23
24" Don't stop at eol, messes around with CPP mode, but gives line spanning
25" strings in unparse rules
26syn region cCppString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat
27syn keyword cType integer real casestring nocasestring voidptr list
28syn keyword cType uview rview uview_enum rview_enum
29
30" avoid unparsing rule sth:view being scanned as label
31syn clear cUserCont
32syn match cUserCont "^\s*\I\i*\s*:$" contains=cUserLabel contained
33syn match cUserCont ";\s*\I\i*\s*:$" contains=cUserLabel contained
34syn match cUserCont "^\s*\I\i*\s*:[^:]"me=e-1 contains=cUserLabel contained
35syn match cUserCont ";\s*\I\i*\s*:[^:]"me=e-1 contains=cUserLabel contained
36
37" highlight phylum decls
38syn match kwtPhylum "^\I\i*:$"
39syn match kwtPhylum "^\I\i*\s*{\s*\(!\|\I\)\i*\s*}\s*:$"
40
41syn keyword kwtStatement with foreach afterforeach provided
42syn match kwtDecl "%\(uviewvar\|rviewvar\)"
43syn match kwtDecl "^%\(uview\|rview\|ctor\|dtor\|base\|storageclass\|list\|attr\|member\|option\)"
44syn match kwtOption "no-csgio\|no-unparse\|no-rewrite\|no-printdot\|no-hashtables\|smart-pointer\|weak-pointer"
45syn match kwtSep "^%}$"
46syn match kwtSep "^%{\(\s\+\I\i*\)*$"
47syn match kwtCast "\<phylum_cast\s*<"me=e-1
48syn match kwtCast "\<phylum_cast\s*$"
49
50
51" match views, remove paren error in brackets
52syn clear cErrInBracket
53syn match cErrInBracket contained ")"
54syn match kwtViews "\(\[\|<\)\@<=[ [:alnum:]_]\{-}:"
55
56" match rule bodies
57syn region kwtUnpBody transparent keepend extend fold start="->\s*\[" start="^\s*\[" skip="\$\@<!{\_.\{-}\$\@<!}" end="\s]\s\=;\=$" end="^]\s\=;\=$" end="}]\s\=;\=$"
58syn region kwtRewBody transparent keepend extend fold start="->\s*<" start="^\s*<" end="\s>\s\=;\=$" end="^>\s\=;\=$"
59
60" Define the default highlighting.
61" For version 5.7 and earlier: only when not done already
62" For version 5.8 and later: only when an item doesn't have highlighting yet
63if version >= 508 || !exists("did_kwt_syn_inits")
64 if version < 508
65 let did_kwt_syn_inits = 1
66 command -nargs=+ HiLink hi link <args>
67 else
68 command -nargs=+ HiLink hi def link <args>
69 endif
70
71 HiLink kwtStatement cppStatement
72 HiLink kwtDecl cppStatement
73 HiLink kwtCast cppStatement
74 HiLink kwtSep Delimiter
75 HiLink kwtViews Label
76 HiLink kwtPhylum Type
77 HiLink kwtOption PreProc
78 "HiLink cText Comment
79
80 delcommand HiLink
81endif
82
83syn sync lines=300
84
85let b:current_syntax = "kwt"
86
87" vim: ts=8