Merged from the latest developing branch.
[MacVim/jjgod.git] / runtime / syntax / pod.vim
blob9809d00b5aa62c975acc27f5a3698a5804ecbae1
1 " Vim syntax file
2 " Language:     Perl POD format
3 " Maintainer:   Scott Bigham <dsb@killerbunnies.org>
4 " Last Change:  2007 Jan 21
6 " To add embedded POD documentation highlighting to your syntax file, add
7 " the commands:
9 "   syn include @Pod <sfile>:p:h/pod.vim
10 "   syn region myPOD start="^=pod" start="^=head" end="^=cut" keepend contained contains=@Pod
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.
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
27 " POD commands
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
38 " Text of a =head1, =head2 or =item command
39 syn match podCmdText    ".*$" contained contains=podFormat,@NoSpell
41 " Indent amount of =over command
42 syn match podOverIndent "\d\+" contained contains=@NoSpell
44 " Formatter identifier keyword for =for, =begin and =end commands
45 syn match podForKeywd   "\S\+" contained contains=@NoSpell
47 " An indented line, to be displayed verbatim
48 syn match podVerbatimLine       "^\s.*$" contains=@NoSpell
50 " Inline textual items handled specially by POD
51 syn match podSpecial    "\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)" contains=@NoSpell
52 syn match podSpecial    "[$@%]\I\i*\(::\I\i*\)*\>" contains=@NoSpell
54 " Special formatting sequences
55 syn region podFormat    start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell
56 syn region podFormat    start="[IBSCLFX]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell
57 syn match  podFormat    "Z<>"
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
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
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
83   delcommand HiLink
84 endif
86 let b:current_syntax = "pod"
88 " vim: ts=8