7
|
1 " Vim syntax file
|
|
2 " Language: Perl POD format
|
26
|
3 " Maintainer: Scott Bigham <dsb@killerbunnies.org>
|
1125
|
4 " Last Change: 2007 Jan 21
|
7
|
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
|
|
21 if version < 600
|
|
22 syntax clear
|
|
23 elseif exists("b:current_syntax")
|
|
24 finish
|
|
25 endif
|
|
26
|
|
27 " POD commands
|
398
|
28 syn match podCommand "^=head[1234]" nextgroup=podCmdText contains=@NoSpell
|
|
29 syn match podCommand "^=item" nextgroup=podCmdText contains=@NoSpell
|
|
30 syn match podCommand "^=over" nextgroup=podOverIndent skipwhite contains=@NoSpell
|
|
31 syn match podCommand "^=back" contains=@NoSpell
|
|
32 syn match podCommand "^=cut" contains=@NoSpell
|
|
33 syn match podCommand "^=pod" contains=@NoSpell
|
|
34 syn match podCommand "^=for" nextgroup=podForKeywd skipwhite contains=@NoSpell
|
|
35 syn match podCommand "^=begin" nextgroup=podForKeywd skipwhite contains=@NoSpell
|
|
36 syn match podCommand "^=end" nextgroup=podForKeywd skipwhite contains=@NoSpell
|
7
|
37
|
|
38 " Text of a =head1, =head2 or =item command
|
398
|
39 syn match podCmdText ".*$" contained contains=podFormat,@NoSpell
|
7
|
40
|
|
41 " Indent amount of =over command
|
398
|
42 syn match podOverIndent "\d\+" contained contains=@NoSpell
|
7
|
43
|
|
44 " Formatter identifier keyword for =for, =begin and =end commands
|
398
|
45 syn match podForKeywd "\S\+" contained contains=@NoSpell
|
7
|
46
|
|
47 " An indented line, to be displayed verbatim
|
398
|
48 syn match podVerbatimLine "^\s.*$" contains=@NoSpell
|
7
|
49
|
|
50 " Inline textual items handled specially by POD
|
398
|
51 syn match podSpecial "\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)" contains=@NoSpell
|
|
52 syn match podSpecial "[$@%]\I\i*\(::\I\i*\)*\>" contains=@NoSpell
|
7
|
53
|
|
54 " Special formatting sequences
|
398
|
55 syn region podFormat start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell
|
1125
|
56 syn region podFormat start="[IBSCLFX]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell
|
26
|
57 syn match podFormat "Z<>"
|
398
|
58 syn match podFormat "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell
|
|
59 syn match podEscape "\I\i*>"me=e-1 contained contains=@NoSpell
|
|
60 syn match podEscape2 "\d\+>"me=e-1 contained contains=@NoSpell
|
7
|
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
|
|
65 if 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
|
26
|
80 HiLink podEscape String
|
|
81 HiLink podEscape2 Number
|
7
|
82
|
|
83 delcommand HiLink
|
|
84 endif
|
|
85
|
|
86 let b:current_syntax = "pod"
|
|
87
|
|
88 " vim: ts=8
|