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