1*40962ec9SBram Moolenaar" Vim syntax file 2*40962ec9SBram Moolenaar" Language: Autodoc 3*40962ec9SBram Moolenaar" Maintainer: Stephen R. van den Berg <[email protected]> 4*40962ec9SBram Moolenaar" Last Change: 2018 Jan 23 5*40962ec9SBram Moolenaar" Version: 2.9 6*40962ec9SBram Moolenaar" Remark: Included by pike.vim, cmod.vim and optionally c.vim 7*40962ec9SBram Moolenaar" Remark: In order to make c.vim use it, set: c_autodoc 8*40962ec9SBram Moolenaar 9*40962ec9SBram Moolenaar" Quit when a (custom) syntax file was already loaded 10*40962ec9SBram Moolenaarif exists("b:current_syntax") 11*40962ec9SBram Moolenaar finish 12*40962ec9SBram Moolenaarendif 13*40962ec9SBram Moolenaar 14*40962ec9SBram Moolenaarlet s:cpo_save = &cpo 15*40962ec9SBram Moolenaarset cpo&vim 16*40962ec9SBram Moolenaar 17*40962ec9SBram Moolenaarsyn case match 18*40962ec9SBram Moolenaar 19*40962ec9SBram Moolenaar" A bunch of useful autodoc keywords 20*40962ec9SBram Moolenaarsyn keyword autodocStatement contained appears belongs global 21*40962ec9SBram Moolenaarsyn keyword autodocStatement contained decl directive inherit 22*40962ec9SBram Moolenaarsyn keyword autodocStatement contained deprecated obsolete bugs 23*40962ec9SBram Moolenaarsyn keyword autodocStatement contained copyright example fixme note param returns 24*40962ec9SBram Moolenaarsyn keyword autodocStatement contained seealso thanks throws constant 25*40962ec9SBram Moolenaarsyn keyword autodocStatement contained member index elem 26*40962ec9SBram Moolenaarsyn keyword autodocStatement contained value type item 27*40962ec9SBram Moolenaar 28*40962ec9SBram Moolenaarsyn keyword autodocRegion contained enum mapping code multiset array 29*40962ec9SBram Moolenaarsyn keyword autodocRegion contained int string section mixed ol ul dl 30*40962ec9SBram Moolenaarsyn keyword autodocRegion contained class module namespace 31*40962ec9SBram Moolenaarsyn keyword autodocRegion contained endenum endmapping endcode endmultiset 32*40962ec9SBram Moolenaarsyn keyword autodocRegion contained endarray endint endstring endsection 33*40962ec9SBram Moolenaarsyn keyword autodocRegion contained endmixed endol endul enddl 34*40962ec9SBram Moolenaarsyn keyword autodocRegion contained endclass endmodule endnamespace 35*40962ec9SBram Moolenaar 36*40962ec9SBram Moolenaarsyn keyword autodocIgnore contained ignore endignore 37*40962ec9SBram Moolenaar 38*40962ec9SBram Moolenaarsyn keyword autodocStatAcc contained b i u tt url pre sub sup 39*40962ec9SBram Moolenaarsyn keyword autodocStatAcc contained ref rfc xml dl expr image 40*40962ec9SBram Moolenaar 41*40962ec9SBram Moolenaarsyn keyword autodocTodo contained TODO FIXME XXX 42*40962ec9SBram Moolenaar 43*40962ec9SBram Moolenaarsyn match autodocLineStart display "\(//\|/\?\*\)\@2<=!" 44*40962ec9SBram Moolenaarsyn match autodocWords "[^!@{}[\]]\+" display contains=@Spell 45*40962ec9SBram Moolenaar 46*40962ec9SBram Moolenaarsyn match autodocLink "@\[[^[\]]\+]"hs=s+2,he=e-1 display contains=autodocLead 47*40962ec9SBram Moolenaarsyn match autodocAtStmt "@[a-z]\+\%(\s\|$\)\@="hs=s+1 display contains=autodocStatement,autodocIgnore,autodocLead,autodocRegion 48*40962ec9SBram Moolenaar 49*40962ec9SBram Moolenaar" Due to limitations of the matching algorithm, we cannot highlight 50*40962ec9SBram Moolenaar" nested autodocNStmtAcc structures correctly 51*40962ec9SBram Moolenaarsyn region autodocNStmtAcc start="@[a-z]\+{" end="@}" contains=autodocStatAcc,autodocLead keepend 52*40962ec9SBram Moolenaar 53*40962ec9SBram Moolenaarsyn match autodocUrl contained display ".\+" 54*40962ec9SBram Moolenaarsyn region autodocAtUrlAcc start="{"ms=s+1 end="@}"he=e-1,me=e-2 contained display contains=autodocUrl,autodocLead keepend 55*40962ec9SBram Moolenaarsyn region autodocNUrlAcc start="@url{" end="@}" contains=autodocStatAcc,autodocAtUrlAcc,autodocLead transparent 56*40962ec9SBram Moolenaar 57*40962ec9SBram Moolenaarsyn match autodocSpecial "@@" display 58*40962ec9SBram Moolenaarsyn match autodocLead "@" display contained 59*40962ec9SBram Moolenaar 60*40962ec9SBram Moolenaar"when wanted, highlight trailing white space 61*40962ec9SBram Moolenaarif exists("c_space_errors") 62*40962ec9SBram Moolenaar if !exists("c_no_trail_space_error") 63*40962ec9SBram Moolenaar syn match autodocSpaceError display excludenl "\s\+$" 64*40962ec9SBram Moolenaar endif 65*40962ec9SBram Moolenaar if !exists("c_no_tab_space_error") 66*40962ec9SBram Moolenaar syn match autodocSpaceError display " \+\t"me=e-1 67*40962ec9SBram Moolenaar endif 68*40962ec9SBram Moolenaarendif 69*40962ec9SBram Moolenaar 70*40962ec9SBram Moolenaarif exists("c_minlines") 71*40962ec9SBram Moolenaar let b:c_minlines = c_minlines 72*40962ec9SBram Moolenaarelse 73*40962ec9SBram Moolenaar if !exists("c_no_if0") 74*40962ec9SBram Moolenaar let b:c_minlines = 50 " #if 0 constructs can be long 75*40962ec9SBram Moolenaar else 76*40962ec9SBram Moolenaar let b:c_minlines = 15 " mostly for () constructs 77*40962ec9SBram Moolenaar endif 78*40962ec9SBram Moolenaarendif 79*40962ec9SBram Moolenaarexec "syn sync ccomment autodocComment minlines=" . b:c_minlines 80*40962ec9SBram Moolenaar 81*40962ec9SBram Moolenaar" Define the default highlighting. 82*40962ec9SBram Moolenaar" Only used when an item doesn't have highlighting yet 83*40962ec9SBram Moolenaarhi def link autodocStatement Statement 84*40962ec9SBram Moolenaarhi def link autodocStatAcc Statement 85*40962ec9SBram Moolenaarhi def link autodocRegion Structure 86*40962ec9SBram Moolenaarhi def link autodocAtStmt Error 87*40962ec9SBram Moolenaarhi def link autodocNStmtAcc Identifier 88*40962ec9SBram Moolenaarhi def link autodocLink Type 89*40962ec9SBram Moolenaarhi def link autodocTodo Todo 90*40962ec9SBram Moolenaarhi def link autodocSpaceError Error 91*40962ec9SBram Moolenaarhi def link autodocLineStart SpecialComment 92*40962ec9SBram Moolenaarhi def link autodocSpecial SpecialChar 93*40962ec9SBram Moolenaarhi def link autodocUrl Underlined 94*40962ec9SBram Moolenaarhi def link autodocLead Statement 95*40962ec9SBram Moolenaarhi def link autodocIgnore Delimiter 96*40962ec9SBram Moolenaar 97*40962ec9SBram Moolenaarlet b:current_syntax = "autodoc" 98*40962ec9SBram Moolenaar 99*40962ec9SBram Moolenaarlet &cpo = s:cpo_save 100*40962ec9SBram Moolenaarunlet s:cpo_save 101*40962ec9SBram Moolenaar" vim: ts=8 102