JaeYong Yoo wrote:
Hi,

is there any vim plugin that highlights according to the syntax of click script?

wishes,

jaeyong
_______________________________________________
click mailing list
[email protected]
https://amsterdam.lcs.mit.edu/mailman/listinfo/click

Hi jaeyong,

In general, the C syntax is pretty close. Based on that I added the elements (current as of 1.6.0), support for the '->' and '::' operators and the elementclass keyword.

Attached is the syntax file. To use this you would edit your .vimrc to include the following lines:

   au BufNewFile,BufRead *.click set filetype=click
   au! Syntax click source ~/.vim/syntax/click.vim

And place the attached file in ~/.vim/syntax/click.vim

I understand that this is pretty crude, but it works well for me.

Jesse

" Vim syntax file
" Language:     C
" Maintainer:   Bram Moolenaar <[email protected]>
" Last Change:  2006 May 01

" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
  finish
endif

syn keyword     cStatement      elementclass 
syn keyword     cTodo           contained TODO FIXME XXX

syn match       cOper           "->"
syn match       cOper           "::"

" cCommentGroup allows adding matches for special things in comments
syn cluster     cCommentGroup   contains=cTodo

" String and Character constants
" Highlight special characters (those which have a backslash) differently
syn match       cSpecial        display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
if !exists("c_no_utf")
  syn match     cSpecial        display contained "\\\(u\x\{4}\|U\x\{8}\)"
endif
if exists("c_no_cformat")
  syn region    cString         start=+L\="+ skip=+\\\\\|\\"+ end=+"+ 
contains=cSpecial,@Spell
  " cCppString: same as cString, but ends at end of line
  syn region    cCppString      start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl 
end=+"+ end='$' contains=cSpecial,@Spell
else
  if !exists("c_no_c99") " ISO C99
    syn match   cFormat         display "%\(\d\+\$\)\=[-+' 
#0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)"
 contained
  else
    syn match   cFormat         display "%\(\d\+\$\)\=[-+' 
#0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)"
 contained
  endif
  syn match     cFormat         display "%%" contained
  syn region    cString         start=+L\="+ skip=+\\\\\|\\"+ end=+"+ 
contains=cSpecial,cFormat,@Spell
  " cCppString: same as cString, but ends at end of line
  syn region    cCppString      start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl 
end=+"+ end='$' contains=cSpecial,cFormat,@Spell
endif

syn match       cCharacter      "L\='[^\\]'"
syn match       cCharacter      "L'[^']*'" contains=cSpecial
if exists("c_gnu")
  syn match     cSpecialError   "L\='\\[^'\"?\\abefnrtv]'"
  syn match     cSpecialCharacter "L\='\\['\"?\\abefnrtv]'"
else
  syn match     cSpecialError   "L\='\\[^'\"?\\abfnrtv]'"
  syn match     cSpecialCharacter "L\='\\['\"?\\abfnrtv]'"
endif
syn match       cSpecialCharacter display "L\='\\\o\{1,3}'"
syn match       cSpecialCharacter display "'\\x\x\{1,2}'"
syn match       cSpecialCharacter display "L'\\x\x\+'"

"when wanted, highlight trailing white space
if exists("c_space_errors")
  if !exists("c_no_trail_space_error")
    syn match   cSpaceError     display excludenl "\s\+$"
  endif
  if !exists("c_no_tab_space_error")
    syn match   cSpaceError     display " \+\t"me=e-1
  endif
endif

syntax region   cBlock          start="{" end="}" transparent fold

"catch errors caused by wrong parenthesis and brackets
" also accept <% for {, %> for }, <: for [ and :> for ] (C99)
" But avoid matching <::.
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
if exists("c_no_curly_error")
  syn region    cParen          transparent start='(' end=')' 
contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
  " cCppParen: same as cParen but ends at end-of-line; used in cDefine
  syn region    cCppParen       transparent start='(' skip='\\$' excludenl 
end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
  syn match     cParenError     display ")"
  syn match     cErrInParen     display contained "^[{}]\|^<%\|^%>"
elseif exists("c_no_bracket_error")
  syn region    cParen          transparent start='(' end=')' 
contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
  " cCppParen: same as cParen but ends at end-of-line; used in cDefine
  syn region    cCppParen       transparent start='(' skip='\\$' excludenl 
end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
  syn match     cParenError     display ")"
  syn match     cErrInParen     display contained "[{}]\|<%\|%>"
else
  syn region    cParen          transparent start='(' end=')' 
contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
  " cCppParen: same as cParen but ends at end-of-line; used in cDefine
  syn region    cCppParen       transparent start='(' skip='\\$' excludenl 
end=')' end='$' contained 
contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
  syn match     cParenError     display "[\])]"
  syn match     cErrInParen     display contained "[\]{}]\|<%\|%>"
  syn region    cBracket        transparent start='\[\|<::\...@!' end=']\|:>' 
contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell
  " cCppBracket: same as cParen but ends at end-of-line; used in cDefine
  syn region    cCppBracket     transparent start='\[\|<::\...@!' skip='\\$' 
excludenl end=']\|:>' end='$' contained 
contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString,@Spell
  syn match     cErrInBracket   display contained "[);{}]\|<%\|%>"
endif

"integer number, or floating point number without a dot and with "f".
syn case ignore
syn match       cNumbers        display transparent "\<\d\|\.\d" 
contains=cNumber,cFloat,cOctalError,cOctal
" Same, but without octal error (for comments)
syn match       cNumbersCom     display contained transparent "\<\d\|\.\d" 
contains=cNumber,cFloat,cOctal
syn match       cNumber         display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
"hex number
syn match       cNumber         display contained 
"0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
" Flag the first zero of an octal number as something special
syn match       cOctal          display contained 
"0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero
syn match       cOctalZero      display contained "\<0"
syn match       cFloat          display contained "\d\+f"
"floating point number, with dot, optional exponent
syn match       cFloat          display contained 
"\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
"floating point number, starting with a dot, optional exponent
syn match       cFloat          display contained 
"\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
"floating point number, without dot, with exponent
syn match       cFloat          display contained "\d\+e[-+]\=\d\+[fl]\=\>"
if !exists("c_no_c99")
  "hexadecimal floating point number, optional leading digits, with dot, with 
exponent
  syn match     cFloat          display contained 
"0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>"
  "hexadecimal floating point number, with leading digits, optional dot, with 
exponent
  syn match     cFloat          display contained 
"0x\x\+\.\=p[-+]\=\d\+[fl]\=\>"
endif

" flag an octal number with wrong digits
syn match       cOctalError     display contained "0\o*[89]\d*"
syn case match

if exists("c_comment_strings")
  " A comment can contain cString, cCharacter and cNumber.
  " But a "*/" inside a cString in a cComment DOES end the comment!  So we
  " need to use a special type of cString: cCommentString, which also ends on
  " "*/", and sees a "*" at the start of the line as comment again.
  " Unfortunately this doesn't very well work for // type of comments :-(
  syntax match  cCommentSkip    contained "^\s*\*\($\|\s\+\)"
  syntax region cCommentString  contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ 
end=+"+ end=+\*/+me=s-1 contains=cSpecial,cCommentSkip
  syntax region cComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ 
end=+"+ end="$" contains=cSpecial
  syntax region  cCommentL      start="//" skip="\\$" end="$" keepend 
contai...@ccommentgroup,cComment2String,cCharacter,cNumbersCom,cSpaceError,@Spell
  if exists("c_no_comment_fold")
    syntax region cComment      matchgroup=cCommentStart start="/\*" end="\*/" 
contai...@ccommentgroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell
  else
    syntax region cComment      matchgroup=cCommentStart start="/\*" end="\*/" 
contai...@ccommentgroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell
 fold
  endif
else
  syn region    cCommentL       start="//" skip="\\$" end="$" keepend 
contai...@ccommentgroup,cSpaceError,@Spell
  if exists("c_no_comment_fold")
    syn region  cComment        matchgroup=cCommentStart start="/\*" end="\*/" 
contai...@ccommentgroup,cCommentStartError,cSpaceError,@Spell
  else
    syn region  cComment        matchgroup=cCommentStart start="/\*" end="\*/" 
contai...@ccommentgroup,cCommentStartError,cSpaceError,@Spell fold
  endif
endif
" keep a // comment separately, it terminates a preproc. conditional
syntax match    cCommentError   display "\*/"
syntax match    cCommentStartError display "/\*"me=e-1 contained

syn keyword     cStorageClass   Discard DiscardNoFree Idle InfiniteSource 
RandomSource 
syn keyword     cStorageClass   RatedSource TimedSink TimedSource 
CheckAverageLength CheckLength 
syn keyword     cStorageClass   Classifier GetSSRC HashSwitch RandomSample 
RandomSwitch 
syn keyword     cStorageClass   RoundRobinSwitch RTPClassifier SplitFirst 
StaticSwitch StrideSwitch 
syn keyword     cStorageClass   Suppressor Switch Null Null1 PullNull 
syn keyword     cStorageClass   PullTee PushNull Tee AverageCounter Counter 
syn keyword     cStorageClass   CycleCountAccum PerfCountAccum PerfCountInfo 
RoundTripCycleCount SetCycleCount 
syn keyword     cStorageClass   SetPerfCount SetTimestamp SetTimestampDelta 
StoreTimestamp TimeFilter 
syn keyword     cStorageClass   TimeRange TimeSortedSched TimestampAccum Align 
RandomBitErrors 
syn keyword     cStorageClass   StoreData Strip StripToNetworkHeader Truncate 
Unstrip 
syn keyword     cStorageClass   FrontDropQueue MixedQueue NotifierQueue Queue 
SimpleQueue 
syn keyword     cStorageClass   AdaptiveRED RED DRRSched PrioSched PullSwitch 
syn keyword     cStorageClass   RoundRobinSched SimplePrioSched 
SimpleRoundRobinSched StaticPullSwitch StrideSched 
syn keyword     cStorageClass   BandwidthMeter BandwidthRatedSplitter 
BandwidthRatedUnqueue BandwidthShaper Block 
syn keyword     cStorageClass   Burster CompareBlock DelayShaper DelayUnqueue 
LinkUnqueue 
syn keyword     cStorageClass   Meter RatedSplitter RatedUnqueue Shaper Unqueue 
syn keyword     cStorageClass   Unqueue2 AddressInfo AlignmentInfo PortInfo 
ScheduleInfo 
syn keyword     cStorageClass   ScheduleLinux WirelessInfo FromDevice 
FromUserDevice PollDevice 
syn keyword     cStorageClass   ToDevice ToUserDevice FromHost FromRawSocket 
FromSocket 
syn keyword     cStorageClass   IPFlowRawSockets KernelFilter KernelTap 
KernelTun PPTPServer 
syn keyword     cStorageClass   RawSocket Socket ToHost ToHostSniffers 
ToRawSocket 
syn keyword     cStorageClass   ToSocket EnsureEther EtherEncap EtherMirror 
EtherSwitch 
syn keyword     cStorageClass   HostEtherFilter ListenEtherSwitch ARPFaker 
ARPPrint ARPQuerier 
syn keyword     cStorageClass   ARPResponder CheckARPHeader AnonymizeIPAddr 
CheckIPHeader CheckIPHeader2 
syn keyword     cStorageClass   DecIPTTL EraseIPPayload FixIPSrc GetIPAddress 
IPClassifier 
syn keyword     cStorageClass   IPEncap IPFilter IPFragmenter IPGWOptions 
IPInputCombo 
syn keyword     cStorageClass   IPMirror IPNameInfo IPOutputCombo IPPrint 
IPReassembler 
syn keyword     cStorageClass   IPsecEncap MarkIPCE MarkIPHeader SetIPAddress 
SetIPChecksum 
syn keyword     cStorageClass   SetIPDSCP SetRandIPAddress StoreIPAddress 
StripIPHeader UnstripIPHeader 
syn keyword     cStorageClass   DirectIPLookup IPRouteTable IPsecRouteTable 
LinearIPLookup LinuxIPLookup 
syn keyword     cStorageClass   RadixIPLookup RangeIPLookup RIPSend 
SortedIPLookup StaticIPLookup 
syn keyword     cStorageClass   CheckICMPHeader ICMPError ICMPPingEncap 
ICMPPingResponder ICMPPingSource 
syn keyword     cStorageClass   FTPPortMapper FTPPortMapper6 ICMPPingRewriter 
ICMPRewriter IPAddrPairRewriter 
syn keyword     cStorageClass   IPAddrRewriter IPRewriter IPRewriterPatterns 
RoundRobinIPMapper SourceIPHashMapper 
syn keyword     cStorageClass   TCPRewriter CheckTCPHeader FastTCPFlows 
RFC2507Comp RFC2507Decomp 
syn keyword     cStorageClass   SetTCPChecksum TCPIPSend CheckUDPHeader 
DynamicUDPIPEncap FastUDPFlows 
syn keyword     cStorageClass   FastUDPSource FastUDPSourceIP6 SetUDPChecksum 
UDPIPEncap FromCapDump 
syn keyword     cStorageClass   FromDAGDump FromDump FromIPSummaryDump 
FromNetFlowSummaryDump FromNLANRDump 
syn keyword     cStorageClass   FromTcpdump SimPacketAnalyzer ToDump 
ToIPFlowDumps ToIPSummaryDump 
syn keyword     cStorageClass   ToSimTrace AggregateIP AggregateIPAddrPair 
AggregateIPFlows CalculateTCPLossEvents 
syn keyword     cStorageClass   InferIPAddrColors IPAddrColorPaint 
IPRateMonitor MultiQ TCPCollector 
syn keyword     cStorageClass   TCPMystery TestIPAddrColors AggregateCounter 
AggregateFilter AggregateFirst 
syn keyword     cStorageClass   AggregateLast AggregateLength 
AggregatePacketCounter AggregatePaint AddressTranslator 
syn keyword     cStorageClass   CheckIP6Header DecIP6HLIM GetIP6Address 
ICMP6Error IP6Fragmenter 
syn keyword     cStorageClass   IP6Mirror IP6NDAdvertiser IP6NDSolicitor 
IP6Print LookupIP6Route 
syn keyword     cStorageClass   MarkIP6Header ProtocolTranslator46 
ProtocolTranslator64 SetIP6Address SetIP6DSCP 
syn keyword     cStorageClass   IPsecAES IPsecAuthHMACSHA1 IPsecAuthSHA1 
IPsecDES IPsecESPEncap 
syn keyword     cStorageClass   IPsecESPUnencap CheckCRC32 SetCRC32 CheckPaint 
Paint 
syn keyword     cStorageClass   PaintSwitch PaintTee DropBroadcasts SetAnnoByte 
SetPacketType 
syn keyword     cStorageClass   Error Print PrintTXFeedback PrintWifi ChangeUID 
syn keyword     cStorageClass   ChatterSocket ControlSocket DriverManager 
KernelHandlerProxy Message 
syn keyword     cStorageClass   PokeHandlers ProgressBar QuitWatcher RandomSeed 
Script 
syn keyword     cStorageClass   BalancedThreadSched CPUQueue CPUSwitch 
LookupIPRouteMP MSQueue 
syn keyword     cStorageClass   SpinlockAcquire SpinlockInfo SpinlockRelease 
StaticThreadSched ThreadMonitor 
syn keyword     cStorageClass   BigHashMapTest CheckPacket ComparePackets 
ConfParseTest PacketTest 
syn keyword     cStorageClass   QueueThreadTest1 QueueThreadTest2 QueueYankTest 
SchedOrderTest SortTest 
syn keyword     cStorageClass   UpstreamNotifier VectorTest ACKResponder 
ACKResponder2 ACKRetrySender 
syn keyword     cStorageClass   ACKRetrySender2 AiroInfo BottleneckMetric 
CheckGridHeader DSDVRouteTable 
syn keyword     cStorageClass   DSRArpTable DSRRouteTable E2ELossMetric 
EstimateRouterRegion ETX2Metric 
syn keyword     cStorageClass   ETXMetric FilterByGridHops FilterByRange 
FixDstLoc FixSrcLoc 
syn keyword     cStorageClass   FloodingLocQuerier GridEncap GridGatewayInfo 
GridHeaderInfo GridLocationInfo 
syn keyword     cStorageClass   GridLocationInfo2 GridLogger GridProbeHandler 
GridProbeReplyReceiver GridProbeSender 
syn keyword     cStorageClass   GridRouteTable GridTxError HopcountMetric 
IncrementSeqNo LinkStat 
syn keyword     cStorageClass   LinkTester LinkTestReceiver LinkTracker 
LIRMetric LocationTable 
syn keyword     cStorageClass   LocFromFile LocQueryResponder 
LookupGeographicGridRoute LookupLocalGridRoute MovementSimulator 
syn keyword     cStorageClass   PacketLogger PacketLogger2 PEP PingPong 
PrintGrid 
syn keyword     cStorageClass   RadioSim SendGridHello SendGridLRHello 
SetGridChecksum SimpleLocQuerier 
syn keyword     cStorageClass   ThresholdMetric UpdateGridRoutes YarvisMetric 
ARPTable AssociationRequester 
syn keyword     cStorageClass   AssociationResponder AthdescDecap AthdescEncap 
AutoRateFallback AvailableRates 
syn keyword     cStorageClass   BeaconScanner BeaconSource BeaconTracker 
EtherCount ExtraDecap 
syn keyword     cStorageClass   ExtraEncap FilterFailures FilterPhyErr FilterTX 
LinkTable 
syn keyword     cStorageClass   MadwifiRate OpenAuthRequeser OpenAuthResponder 
PacketStore Prism2Decap 
syn keyword     cStorageClass   Prism2Encap ProbeResponder ProbeTXRate PushAnno 
RadiotapDecap 
syn keyword     cStorageClass   RadiotapEncap ReadAnno RXStats SetRTS 
SetTXPower 
syn keyword     cStorageClass   SetTXRate WepDecap WepEncap WifiDecap 
WifiDefrag 
syn keyword     cStorageClass   WifiDupeFilter WifiEncap WifiFragment WifiSeq 
WirelessInfo 
syn keyword     cStorageClass   AssociationResponder AvailableRates 
BeaconSource OpenAuthResponder ProbeResponder 
syn keyword     cStorageClass   WirelessInfo AssociationRequester 
AvailableRates BeaconScanner BeaconTracker 
syn keyword     cStorageClass   OpenAuthRequeser WirelessInfo CheckDHCPMsg 
DHCPClassifier DHCPClient 
syn keyword     cStorageClass   DHCPICMPEncap DHCPLeaseHash DHCPLeasePool 
DHCPServerACKorNAK DHCPServerOffer 
syn keyword     cStorageClass   DHCPServerRelease CheckGREHeader GREEncap 
StripGREHeader IPCP 
syn keyword     cStorageClass   LCP PPPControlProtocol PPPEncap ICMP6Checksum 
NetflowExport 
syn keyword     cStorageClass   NetflowPrint NetflowTemplateCache SNMPOidInfo 
SNMPTrapSource SNMPVariableInfo 
syn keyword     cStorageClass   UMLSwitch RadixIPsecLookup MapTRW 

syn keyword     cConstant input output
syn keyword     cConstant true false TRUE FALSE



" Accept %: for # (C99)
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
syn match       cPreCondit      display "^\s*\(%:\|#\)\s*\(else\|endif\)\>"
if !exists("c_no_if0")
  if !exists("c_no_if0_fold")
    syn region  cCppOut         start="^\s*\(%:\|#\)\s*if\s\+0\+\>" 
end="....@=\|$" contains=cCppOut2 fold
  else
    syn region  cCppOut         start="^\s*\(%:\|#\)\s*if\s\+0\+\>" 
end="....@=\|$" contains=cCppOut2
  endif
  syn region    cCppOut2        contained start="0" 
end="^\s*\(%:\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=cSpaceError,cCppSkip
  syn region    cCppSkip        contained 
start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" 
end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip
endif
syn region      cIncluded       display contained start=+"+ skip=+\\\\\|\\"+ 
end=+"+
syn match       cIncluded       display contained "<[^>]*>"
syn match       cInclude        display "^\s*\(%:\|#\)\s*include\>\s*["<]" 
contains=cIncluded
"syn match cLineSkip    "\\$"
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
syn region      cDefine         start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" 
skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@cPreProcGroup,@Spell
syn region      cPreProc        
start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" 
skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell

" Highlight User Labels
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
syn region      cMulti          transparent start='?' skip='::' end=':' 
contains=ALLBUT,@cMultiGroup,@Spell
" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
syn cluster     cLabelGroup     contains=cUserLabel
syn match       cUserCont       display "^\s*\I\i*\s*:$" contai...@clabelgroup
syn match       cUserCont       display ";\s*\I\i*\s*:$" contai...@clabelgroup
syn match       cUserCont       display "^\s*\I\i*\s*:[^:]"me=e-1 
contai...@clabelgroup
syn match       cUserCont       display ";\s*\I\i*\s*:[^:]"me=e-1 
contai...@clabelgroup

syn match       cUserLabel      display "\I\i*" contained

" Avoid recognizing most bitfields as labels
syn match       cBitField       display "^\s*\I\i*\s*:\s*[1-9]"me=e-1 
contains=cType
syn match       cBitField       display ";\s*\I\i*\s*:\s*[1-9]"me=e-1 
contains=cType

if exists("c_minlines")
  let b:c_minlines = c_minlines
else
  if !exists("c_no_if0")
    let b:c_minlines = 50       " #if 0 constructs can be long
  else
    let b:c_minlines = 15       " mostly for () constructs
  endif
endif
exec "syn sync ccomment cComment minlines=" . b:c_minlines

" Define the default highlighting.
" Only used when an item doesn't have highlighting yet
hi def link cOper               Keyword
hi def link cFormat             cSpecial
hi def link cCppString          cString
hi def link cCommentL           cComment
hi def link cCommentStart       cComment
hi def link cLabel              Label
hi def link cUserLabel          Label
hi def link cConditional        Conditional
hi def link cRepeat             Repeat
hi def link cCharacter          Character
hi def link cSpecialCharacter   cSpecial
hi def link cNumber             Number
hi def link cOctal              Number
hi def link cOctalZero          PreProc  " link this to Error if you want
hi def link cFloat              Float
hi def link cOctalError         cError
hi def link cParenError         cError
hi def link cErrInParen         cError
hi def link cErrInBracket       cError
hi def link cCommentError       cError
hi def link cCommentStartError  cError
hi def link cSpaceError         cError
hi def link cSpecialError       cError
hi def link cOperator           Operator
hi def link cStructure          Structure
hi def link cStorageClass       StorageClass
hi def link cInclude            Include
hi def link cPreProc            PreProc
hi def link cDefine             Macro
hi def link cIncluded           cString
hi def link cError              Error
hi def link cStatement          Statement
hi def link cPreCondit          PreCondit
hi def link cType               Type
hi def link cConstant           Constant
hi def link cCommentString      cString
hi def link cComment2String     cString
hi def link cCommentSkip        cComment
hi def link cString             String
hi def link cComment            Comment
hi def link cSpecial            SpecialChar
hi def link cTodo               Todo
hi def link cCppSkip            cCppOut
hi def link cCppOut2            cCppOut
hi def link cCppOut             Comment

let b:current_syntax = "click"

" vim: ts=8
_______________________________________________
click mailing list
[email protected]
https://amsterdam.lcs.mit.edu/mailman/listinfo/click

Reply via email to