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