blob: 041c7c4cfca0e37e0a40ad474ba82b9152cb3fc3 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaarede981a2010-08-11 23:37:32 +02002" Language: Perl POD format
3" Maintainer: Andy Lester <andy@petdance.com>
Bram Moolenaarf3549812010-08-13 12:09:22 +02004" Previously: Scott Bigham <dsb@killerbunnies.org>
Bram Moolenaarede981a2010-08-11 23:37:32 +02005" URL: http://github.com/petdance/vim-perl
6" Last Change: 2009-08-14
Bram Moolenaar071d4272004-06-13 20:20:40 +00007
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
Bram Moolenaarede981a2010-08-11 23:37:32 +020030syn 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000039
40" Text of a =head1, =head2 or =item command
Bram Moolenaar97409f12005-07-08 22:17:29 +000041syn match podCmdText ".*$" contained contains=podFormat,@NoSpell
Bram Moolenaar071d4272004-06-13 20:20:40 +000042
43" Indent amount of =over command
Bram Moolenaar97409f12005-07-08 22:17:29 +000044syn match podOverIndent "\d\+" contained contains=@NoSpell
Bram Moolenaar071d4272004-06-13 20:20:40 +000045
46" Formatter identifier keyword for =for, =begin and =end commands
Bram Moolenaar97409f12005-07-08 22:17:29 +000047syn match podForKeywd "\S\+" contained contains=@NoSpell
Bram Moolenaar071d4272004-06-13 20:20:40 +000048
49" An indented line, to be displayed verbatim
Bram Moolenaar97409f12005-07-08 22:17:29 +000050syn match podVerbatimLine "^\s.*$" contains=@NoSpell
Bram Moolenaar071d4272004-06-13 20:20:40 +000051
52" Inline textual items handled specially by POD
Bram Moolenaar97409f12005-07-08 22:17:29 +000053syn match podSpecial "\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)" contains=@NoSpell
54syn match podSpecial "[$@%]\I\i*\(::\I\i*\)*\>" contains=@NoSpell
Bram Moolenaar071d4272004-06-13 20:20:40 +000055
56" Special formatting sequences
Bram Moolenaar97409f12005-07-08 22:17:29 +000057syn region podFormat start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000058syn region podFormat start="[IBSCLFX]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell
Bram Moolenaar3fdfa4a2004-10-07 21:02:47 +000059syn match podFormat "Z<>"
Bram Moolenaar97409f12005-07-08 22:17:29 +000060syn 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000063
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
Bram Moolenaar3fdfa4a2004-10-07 21:02:47 +000082 HiLink podEscape String
83 HiLink podEscape2 Number
Bram Moolenaar071d4272004-06-13 20:20:40 +000084
85 delcommand HiLink
86endif
87
88let b:current_syntax = "pod"
89
90" vim: ts=8