Add support for :winpos
[MacVim.git] / runtime / syntax / splint.vim
blobdc09d8b9d66ee6819fe5468a59412ea55b7c18a7
1 " Vim syntax file
2 " Language:     splint (C with lclint/splint Annotations)
3 " Maintainer:   Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4 " Splint Home:  http://www.splint.org/
5 " Last Change:  $Date: 2004/06/13 20:08:47 $
6 " $Revision: 1.1 $
8 " Note:         Splint annotated files are not detected by default.
9 "               If you want to use this file for highlighting C code,
10 "               please make sure splint.vim is sourced instead of c.vim,
11 "               for example by putting
12 "                       /* vim: set filetype=splint : */
13 "               at the end of your code or something like
14 "                       au! BufRead,BufNewFile *.c      setfiletype splint
15 "               in your vimrc file or filetype.vim
18 " For version 5.x: Clear all syntax items
19 " For version 6.x: Quit when a syntax file was already loaded
20 if version < 600
21   syntax clear
22 elseif exists("b:current_syntax")
23   finish
24 endif
26 " Read the C syntax to start with
27 if version < 600
28   so <sfile>:p:h/c.vim
29 else
30   runtime! syntax/c.vim
31 endif
34 " FIXME: uses and changes several clusters defined in c.vim
35 "       so watch for changes there
37 " TODO: make a little more grammar explicit
38 "       match flags with hyphen and underscore notation
39 "       match flag expanded forms
40 "       accept other comment char than @
42 syn case match
43 " splint annotations (taken from 'splint -help annotations')
44 syn match   splintStateAnnot    contained "\(pre\|post\):\(only\|shared\|owned\|dependent\|observer\|exposed\|isnull\|notnull\)"
45 syn keyword splintSpecialAnnot  contained special
46 syn keyword splintSpecTag       contained uses sets defines allocated releases
47 syn keyword splintModifies      contained modifies
48 syn keyword splintRequires      contained requires ensures
49 syn keyword splintGlobals       contained globals
50 syn keyword splintGlobitem      contained internalState fileSystem
51 syn keyword splintGlobannot     contained undef killed
52 syn keyword splintWarning       contained warn
54 syn keyword splintModitem       contained internalState fileSystem nothing
55 syn keyword splintReqitem       contained MaxSet MaxRead result
56 syn keyword splintIter          contained iter yield
57 syn keyword splintConst         contained constant
58 syn keyword splintAlt           contained alt
60 syn keyword splintType          contained abstract concrete mutable immutable refcounted numabstract
61 syn keyword splintGlobalType    contained unchecked checkmod checked checkedstrict
62 syn keyword splintMemMgm        contained dependent keep killref only owned shared temp
63 syn keyword splintAlias         contained unique returned
64 syn keyword splintExposure      contained observer exposed
65 syn keyword splintDefState      contained out in partial reldef
66 syn keyword splintGlobState     contained undef killed
67 syn keyword splintNullState     contained null notnull relnull
68 syn keyword splintNullPred      contained truenull falsenull nullwhentrue falsewhennull
69 syn keyword splintExit          contained exits mayexit trueexit falseexit neverexit
70 syn keyword splintExec          contained noreturn maynotreturn noreturnwhentrue noreturnwhenfalse alwaysreturns
71 syn keyword splintSef           contained sef
72 syn keyword splintDecl          contained unused external
73 syn keyword splintCase          contained fallthrough
74 syn keyword splintBreak         contained innerbreak loopbreak switchbreak innercontinue
75 syn keyword splintUnreach       contained notreached
76 syn keyword splintSpecFunc      contained printflike scanflike messagelike
78 " TODO: make these region or match
79 syn keyword splintErrSupp       contained i ignore end t
80 syn match   splintErrSupp       contained "[it]\d\+\>"
81 syn keyword splintTypeAcc       contained access noaccess
83 syn keyword splintMacro         contained notfunction
84 syn match   splintSpecType      contained "\(\|unsigned\|signed\)integraltype"
86 " Flags taken from 'splint -help flags full' divided in local and global flags
87 "                                Local Flags:
88 syn keyword splintFlag contained abstract abstractcompare accessall accessczech accessczechoslovak
89 syn keyword splintFlag contained accessfile accessmodule accessslovak aliasunique allblock
90 syn keyword splintFlag contained allempty allglobs allimponly allmacros alwaysexits
91 syn keyword splintFlag contained annotationerror ansi89limits assignexpose badflag bitwisesigned
92 syn keyword splintFlag contained boolcompare boolfalse boolint boolops booltrue
93 syn keyword splintFlag contained booltype bounds boundscompacterrormessages boundsread boundswrite
94 syn keyword splintFlag contained branchstate bufferoverflow bufferoverflowhigh bugslimit casebreak
95 syn keyword splintFlag contained caseinsensitivefilenames castexpose castfcnptr charindex charint
96 syn keyword splintFlag contained charintliteral charunsignedchar checkedglobalias checkmodglobalias checkpost
97 syn keyword splintFlag contained checkstrictglobalias checkstrictglobs codeimponly commentchar commenterror
98 syn keyword splintFlag contained compdef compdestroy compmempass constmacros constprefix
99 syn keyword splintFlag contained constprefixexclude constuse continuecomment controlnestdepth cppnames
100 syn keyword splintFlag contained csvoverwrite czech czechconsts czechfcns czechmacros
101 syn keyword splintFlag contained czechoslovak czechoslovakconsts czechoslovakfcns czechoslovakmacros czechoslovaktypes
102 syn keyword splintFlag contained czechoslovakvars czechtypes czechvars debugfcnconstraint declundef
103 syn keyword splintFlag contained deepbreak deparrays dependenttrans distinctexternalnames distinctinternalnames
104 syn keyword splintFlag contained duplicatecases duplicatequals elseifcomplete emptyret enumindex
105 syn keyword splintFlag contained enumint enummembers enummemuse enumprefix enumprefixexclude
106 syn keyword splintFlag contained evalorder evalorderuncon exitarg exportany exportconst
107 syn keyword splintFlag contained exportfcn exportheader exportheadervar exportiter exportlocal
108 syn keyword splintFlag contained exportmacro exporttype exportvar exposetrans externalnamecaseinsensitive
109 syn keyword splintFlag contained externalnamelen externalprefix externalprefixexclude fcnderef fcnmacros
110 syn keyword splintFlag contained fcnpost fcnuse fielduse fileextensions filestaticprefix
111 syn keyword splintFlag contained filestaticprefixexclude firstcase fixedformalarray floatdouble forblock
112 syn keyword splintFlag contained forcehints forempty forloopexec formalarray formatcode
113 syn keyword splintFlag contained formatconst formattype forwarddecl freshtrans fullinitblock
114 syn keyword splintFlag contained globalias globalprefix globalprefixexclude globimponly globnoglobs
115 syn keyword splintFlag contained globs globsimpmodsnothing globstate globuse gnuextensions
116 syn keyword splintFlag contained grammar hasyield hints htmlfileformat ifblock
117 syn keyword splintFlag contained ifempty ignorequals ignoresigns immediatetrans impabstract
118 syn keyword splintFlag contained impcheckedglobs impcheckedspecglobs impcheckedstatics impcheckedstrictglobs impcheckedstrictspecglobs
119 syn keyword splintFlag contained impcheckedstrictstatics impcheckmodglobs impcheckmodinternals impcheckmodspecglobs impcheckmodstatics
120 syn keyword splintFlag contained impconj implementationoptional implictconstraint impouts imptype
121 syn keyword splintFlag contained includenest incompletetype incondefs incondefslib indentspaces
122 syn keyword splintFlag contained infloops infloopsuncon initallelements initsize internalglobs
123 syn keyword splintFlag contained internalglobsnoglobs internalnamecaseinsensitive internalnamelen internalnamelookalike iso99limits
124 syn keyword splintFlag contained isoreserved isoreservedinternal iterbalance iterloopexec iterprefix
125 syn keyword splintFlag contained iterprefixexclude iteryield its4low its4moderate its4mostrisky
126 syn keyword splintFlag contained its4risky its4veryrisky keep keeptrans kepttrans
127 syn keyword splintFlag contained legacy libmacros likelyboundsread likelyboundswrite likelybool
128 syn keyword splintFlag contained likelybounds limit linelen lintcomments localprefix
129 syn keyword splintFlag contained localprefixexclude locindentspaces longint longintegral longsignedintegral
130 syn keyword splintFlag contained longunsignedintegral longunsignedunsignedintegral loopexec looploopbreak looploopcontinue
131 syn keyword splintFlag contained loopswitchbreak macroassign macroconstdecl macrodecl macroempty
132 syn keyword splintFlag contained macrofcndecl macromatchname macroparams macroparens macroredef
133 syn keyword splintFlag contained macroreturn macrostmt macrounrecog macrovarprefix macrovarprefixexclude
134 syn keyword splintFlag contained maintype matchanyintegral matchfields mayaliasunique memchecks
135 syn keyword splintFlag contained memimp memtrans misplacedsharequal misscase modfilesys
136 syn keyword splintFlag contained modglobs modglobsnomods modglobsunchecked modinternalstrict modnomods
137 syn keyword splintFlag contained modobserver modobserveruncon mods modsimpnoglobs modstrictglobsnomods
138 syn keyword splintFlag contained moduncon modunconnomods modunspec multithreaded mustdefine
139 syn keyword splintFlag contained mustfree mustfreefresh mustfreeonly mustmod mustnotalias
140 syn keyword splintFlag contained mutrep namechecks needspec nestcomment nestedextern
141 syn keyword splintFlag contained newdecl newreftrans nextlinemacros noaccess nocomments
142 syn keyword splintFlag contained noeffect noeffectuncon noparams nopp noret
143 syn keyword splintFlag contained null nullassign nullderef nullinit nullpass
144 syn keyword splintFlag contained nullptrarith nullret nullstate nullterminated
145 syn keyword splintFlag contained numabstract numabstractcast numabstractindex numabstractlit numabstractprint
146 syn keyword splintFlag contained numenummembers numliteral numstructfields observertrans obviousloopexec
147 syn keyword splintFlag contained oldstyle onlytrans onlyunqglobaltrans orconstraint overload
148 syn keyword splintFlag contained ownedtrans paramimptemp paramuse parenfileformat partial
149 syn keyword splintFlag contained passunknown portability predassign predbool predboolint
150 syn keyword splintFlag contained predboolothers predboolptr preproc protoparammatch protoparamname
151 syn keyword splintFlag contained protoparamprefix protoparamprefixexclude ptrarith ptrcompare ptrnegate
152 syn keyword splintFlag contained quiet readonlystrings readonlytrans realcompare redecl
153 syn keyword splintFlag contained redef redundantconstraints redundantsharequal refcounttrans relaxquals
154 syn keyword splintFlag contained relaxtypes repeatunrecog repexpose retalias retexpose
155 syn keyword splintFlag contained retimponly retval retvalbool retvalint retvalother
156 syn keyword splintFlag contained sefparams sefuncon shadow sharedtrans shiftimplementation
157 syn keyword splintFlag contained shiftnegative shortint showallconjs showcolumn showconstraintlocation
158 syn keyword splintFlag contained showconstraintparens showdeephistory showfunc showloadloc showscan
159 syn keyword splintFlag contained showsourceloc showsummary sizeofformalarray sizeoftype skipisoheaders
160 syn keyword splintFlag contained skipposixheaders slashslashcomment slovak slovakconsts slovakfcns
161 syn keyword splintFlag contained slovakmacros slovaktypes slovakvars specglobimponly specimponly
162 syn keyword splintFlag contained specmacros specretimponly specstructimponly specundecl specundef
163 syn keyword splintFlag contained stackref statemerge statetransfer staticinittrans statictrans
164 syn keyword splintFlag contained strictbranchstate strictdestroy strictops strictusereleased stringliterallen
165 syn keyword splintFlag contained stringliteralnoroom stringliteralnoroomfinalnull stringliteralsmaller stringliteraltoolong structimponly
166 syn keyword splintFlag contained superuser switchloopbreak switchswitchbreak syntax sysdirerrors
167 syn keyword splintFlag contained sysdirexpandmacros sysunrecog tagprefix tagprefixexclude temptrans
168 syn keyword splintFlag contained tmpcomments toctou topuse trytorecover type
169 syn keyword splintFlag contained typeprefix typeprefixexclude typeuse uncheckedglobalias uncheckedmacroprefix
170 syn keyword splintFlag contained uncheckedmacroprefixexclude uniondef unixstandard unqualifiedinittrans unqualifiedtrans
171 syn keyword splintFlag contained unreachable unrecog unrecogcomments unrecogdirective unrecogflagcomments
172 syn keyword splintFlag contained unsignedcompare unusedspecial usedef usereleased usevarargs
173 syn keyword splintFlag contained varuse voidabstract warnflags warnlintcomments warnmissingglobs
174 syn keyword splintFlag contained warnmissingglobsnoglobs warnposixheaders warnrc warnsysfiles warnunixlib
175 syn keyword splintFlag contained warnuse whileblock whileempty whileloopexec zerobool
176 syn keyword splintFlag contained zeroptr
177 "                                      Global Flags:
178 syn keyword splintGlobalFlag contained csv dump errorstream errorstreamstderr errorstreamstdout
179 syn keyword splintGlobalFlag contained expect f help i isolib
180 syn keyword splintGlobalFlag contained larchpath lclexpect lclimportdir lcs lh
181 syn keyword splintGlobalFlag contained load messagestream messagestreamstderr messagestreamstdout mts
182 syn keyword splintGlobalFlag contained neverinclude nof nolib posixlib posixstrictlib
183 syn keyword splintGlobalFlag contained showalluses singleinclude skipsysheaders stats streamoverwrite
184 syn keyword splintGlobalFlag contained strictlib supcounts sysdirs timedist tmpdir
185 syn keyword splintGlobalFlag contained unixlib unixstrictlib warningstream warningstreamstderr warningstreamstdout
186 syn keyword splintGlobalFlag contained whichlib
187 syn match   splintFlagExpr contained "[\+\-\=]" nextgroup=splintFlag,splintGlobalFlag
189 " detect missing /*@ and wrong */
190 syn match       splintAnnError  "@\*/"
191 syn cluster     cCommentGroup   add=splintAnnError
192 syn match       splintAnnError2 "[^@]\*/"hs=s+1 contained
193 syn region      splintAnnotation start="/\*@" end="@\*/" contains=@splintAnnotElem,cType keepend
194 syn match       splintShortAnn  "/\*@\*/"
195 syn cluster     splintAnnotElem contains=splintStateAnnot,splintSpecialAnnot,splintSpecTag,splintModifies,splintRequires,splintGlobals,splintGlobitem,splintGlobannot,splintWarning,splintModitem,splintIter,splintConst,splintAlt,splintType,splintGlobalType,splintMemMgm,splintAlias,splintExposure,splintDefState,splintGlobState,splintNullState,splintNullPred,splintExit,splintExec,splintSef,splintDecl,splintCase,splintBreak,splintUnreach,splintSpecFunc,splintErrSupp,splintTypeAcc,splintMacro,splintSpecType,splintAnnError2,splintFlagExpr
196 syn cluster     splintAllStuff  contains=@splintAnnotElem,splintFlag,splintGlobalFlag
197 syn cluster     cParenGroup     add=@splintAllStuff
198 syn cluster     cPreProcGroup   add=@splintAllStuff
199 syn cluster     cMultiGroup     add=@splintAllStuff
201 " Define the default highlighting.
202 " For version 5.7 and earlier: only when not done already
203 " For version 5.8 and later: only when an item doesn't have highlighting yet
204 if version >= 508 || !exists("did_splint_syntax_inits")
205   if version < 508
206     let did_splint_syntax_inits = 1
207     command -nargs=+ HiLink hi link <args>
208   else
209     command -nargs=+ HiLink hi def link <args>
210   endif
212   HiLink splintShortAnn         splintAnnotation
213   HiLink splintAnnotation       Comment
214   HiLink splintAnnError         splintError
215   HiLink splintAnnError2        splintError
216   HiLink splintFlag             SpecialComment
217   HiLink splintGlobalFlag       splintError
218   HiLink splintSpecialAnnot     splintAnnKey
219   HiLink splintStateAnnot       splintAnnKey
220   HiLink splintSpecTag          splintAnnKey
221   HiLink splintModifies         splintAnnKey
222   HiLink splintRequires         splintAnnKey
223   HiLink splintGlobals          splintAnnKey
224   HiLink splintGlobitem         Constant
225   HiLink splintGlobannot        splintAnnKey
226   HiLink splintWarning          splintAnnKey
227   HiLink splintModitem          Constant
228   HiLink splintIter             splintAnnKey
229   HiLink splintConst            splintAnnKey
230   HiLink splintAlt              splintAnnKey
231   HiLink splintType             splintAnnKey
232   HiLink splintGlobalType       splintAnnKey
233   HiLink splintMemMgm           splintAnnKey
234   HiLink splintAlias            splintAnnKey
235   HiLink splintExposure         splintAnnKey
236   HiLink splintDefState         splintAnnKey
237   HiLink splintGlobState        splintAnnKey
238   HiLink splintNullState        splintAnnKey
239   HiLink splintNullPred         splintAnnKey
240   HiLink splintExit             splintAnnKey
241   HiLink splintExec             splintAnnKey
242   HiLink splintSef              splintAnnKey
243   HiLink splintDecl             splintAnnKey
244   HiLink splintCase             splintAnnKey
245   HiLink splintBreak            splintAnnKey
246   HiLink splintUnreach          splintAnnKey
247   HiLink splintSpecFunc         splintAnnKey
248   HiLink splintErrSupp          splintAnnKey
249   HiLink splintTypeAcc          splintAnnKey
250   HiLink splintMacro            splintAnnKey
251   HiLink splintSpecType         splintAnnKey
252   HiLink splintAnnKey           Type
253   HiLink splintError            Error
255   delcommand HiLink
256 endif
258 let b:current_syntax = "splint"
260 " vim: ts=8