1" Vim syntax file 2" Language: Perl POD format 3" Maintainer: Andy Lester <[email protected]> 4" URL: http://github.com/petdance/vim-perl 5" Last Change: 2009-08-14 6 7" To add embedded POD documentation highlighting to your syntax file, add 8" the commands: 9" 10" syn include @Pod <sfile>:p:h/pod.vim 11" syn region myPOD start="^=pod" start="^=head" end="^=cut" keepend contained contains=@Pod 12" 13" and add myPod to the contains= list of some existing region, probably a 14" comment. The "keepend" flag is needed because "=cut" is matched as a 15" pattern in its own right. 16 17 18" Remove any old syntax stuff hanging around (this is suppressed 19" automatically by ":syn include" if necessary). 20" For version 5.x: Clear all syntax items 21" For version 6.x: Quit when a syntax file was already loaded 22if version < 600 23 syntax clear 24elseif exists("b:current_syntax") 25 finish 26endif 27 28" POD commands 29syn match podCommand "^=head[1234]" nextgroup=podCmdText contains=@NoSpell 30syn match podCommand "^=item" nextgroup=podCmdText contains=@NoSpell 31syn match podCommand "^=over" nextgroup=podOverIndent skipwhite contains=@NoSpell 32syn match podCommand "^=back" contains=@NoSpell 33syn match podCommand "^=cut" contains=@NoSpell 34syn match podCommand "^=pod" contains=@NoSpell 35syn match podCommand "^=for" nextgroup=podForKeywd skipwhite contains=@NoSpell 36syn match podCommand "^=begin" nextgroup=podForKeywd skipwhite contains=@NoSpell 37syn match podCommand "^=end" nextgroup=podForKeywd skipwhite contains=@NoSpell 38 39" Text of a =head1, =head2 or =item command 40syn match podCmdText ".*$" contained contains=podFormat,@NoSpell 41 42" Indent amount of =over command 43syn match podOverIndent "\d\+" contained contains=@NoSpell 44 45" Formatter identifier keyword for =for, =begin and =end commands 46syn match podForKeywd "\S\+" contained contains=@NoSpell 47 48" An indented line, to be displayed verbatim 49syn match podVerbatimLine "^\s.*$" contains=@NoSpell 50 51" Inline textual items handled specially by POD 52syn match podSpecial "\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)" contains=@NoSpell 53syn match podSpecial "[$@%]\I\i*\(::\I\i*\)*\>" contains=@NoSpell 54 55" Special formatting sequences 56syn region podFormat start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell 57syn region podFormat start="[IBSCLFX]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell 58syn match podFormat "Z<>" 59syn match podFormat "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell 60syn match podEscape "\I\i*>"me=e-1 contained contains=@NoSpell 61syn match podEscape2 "\d\+>"me=e-1 contained contains=@NoSpell 62 63" Define the default highlighting. 64" For version 5.7 and earlier: only when not done already 65" For version 5.8 and later: only when an item doesn't have highlighting yet 66if version >= 508 || !exists("did_pod_syntax_inits") 67 if version < 508 68 let did_pod_syntax_inits = 1 69 command -nargs=+ HiLink hi link <args> 70 else 71 command -nargs=+ HiLink hi def link <args> 72 endif 73 74 HiLink podCommand Statement 75 HiLink podCmdText String 76 HiLink podOverIndent Number 77 HiLink podForKeywd Identifier 78 HiLink podFormat Identifier 79 HiLink podVerbatimLine PreProc 80 HiLink podSpecial Identifier 81 HiLink podEscape String 82 HiLink podEscape2 Number 83 84 delcommand HiLink 85endif 86 87let b:current_syntax = "pod" 88 89" vim: ts=8 90