diff runtime/syntax/pod.vim @ 4681:2eb30f341e8d

Updated runtime files and translations.
author Bram Moolenaar <bram@vim.org>
date Sat, 01 Jun 2013 14:50:56 +0200
parents 0bb74f626ba7
children 11cd8d58372e
line wrap: on
line diff
--- a/runtime/syntax/pod.vim
+++ b/runtime/syntax/pod.vim
@@ -1,9 +1,10 @@
 " Vim syntax file
-" Language:     Perl POD format
-" Maintainer:   Andy Lester <andy@petdance.com>
-" Previously:   Scott Bigham <dsb@killerbunnies.org>
-" URL:          http://github.com/petdance/vim-perl
-" Last Change:  2009-08-14
+" Language:      Perl POD format
+" Maintainer:    vim-perl <vim-perl@googlegroups.com>
+" Previously:    Scott Bigham <dsb@killerbunnies.org>
+" Homepage:      http://github.com/vim-perl/vim-perl
+" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
+" Last Change:   2013 May 30
 
 " To add embedded POD documentation highlighting to your syntax file, add
 " the commands:
@@ -26,7 +27,11 @@ elseif exists("b:current_syntax")
   finish
 endif
 
+let s:cpo_save = &cpo
+set cpo&vim
+
 " POD commands
+syn match podCommand    "^=encoding"  nextgroup=podCmdText contains=@NoSpell
 syn match podCommand    "^=head[1234]"  nextgroup=podCmdText contains=@NoSpell
 syn match podCommand    "^=item"        nextgroup=podCmdText contains=@NoSpell
 syn match podCommand    "^=over"        nextgroup=podOverIndent skipwhite contains=@NoSpell
@@ -85,6 +90,100 @@ if version >= 508 || !exists("did_pod_sy
   delcommand HiLink
 endif
 
+if exists("perl_pod_spellcheck_headings")
+  " Spell-check headings
+  syn clear podCmdText
+  syn match podCmdText    ".*$" contained contains=podFormat
+endif
+
+if exists("perl_pod_formatting")
+  " By default, escapes like C<> are not checked for spelling. Remove B<>
+  " and I<> from the list of escapes.
+  syn clear podFormat
+  syn region podFormat start="[CLF]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell
+  syn region podFormat start="[CLF]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell
+
+  " Don't spell-check inside E<>, but ensure that the E< itself isn't
+  " marked as a spelling mistake.
+  syn match podFormat   "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell
+
+  " Z<> is a mock formatting code. Ensure Z<> on its own isn't marked as a
+  " spelling mistake.
+  syn match podFormat   "Z<>" contains=podEscape,podEscape2,@NoSpell
+
+  " These are required so that whatever is *within* B<...>, I<...>, etc. is
+  " spell-checked, but not the B, I, ... itself.
+  syn match podBoldOpen    "B<" contains=@NoSpell
+  syn match podItalicOpen  "I<" contains=@NoSpell
+  syn match podNoSpaceOpen "S<" contains=@NoSpell
+  syn match podIndexOpen   "X<" contains=@NoSpell
+
+  " Same as above but for the << >> syntax.
+  syn match podBoldAlternativeDelimOpen    "B<< " contains=@NoSpell
+  syn match podItalicAlternativeDelimOpen  "I<< " contains=@NoSpell
+  syn match podNoSpaceAlternativeDelimOpen "S<< " contains=@NoSpell
+  syn match podIndexAlternativeDelimOpen   "X<< " contains=@NoSpell
+
+  " Add support for spell checking text inside B<>, I<>, S<> and X<>.
+  syn region podBold start="B<[^<]"me=e end=">" oneline contains=podBoldItalic,podBoldOpen
+  syn region podBoldAlternativeDelim start="B<<\s" end="\s>>" oneline contains=podBoldAlternativeDelimOpen
+
+  syn region podItalic start="I<[^<]"me=e end=">" oneline contains=podItalicBold,podItalicOpen
+  syn region podItalicAlternativeDelim start="I<<\s" end="\s>>" oneline contains=podItalicAlternativeDelimOpen
+
+  " Nested bold/italic and vice-versa
+  syn region podBoldItalic contained start="I<[^<]"me=e end=">" oneline
+  syn region podItalicBold contained start="B<[^<]"me=e end=">" oneline
+
+  syn region podNoSpace start="S<[^<]"ms=s-2 end=">"me=e oneline contains=podNoSpaceOpen
+  syn region podNoSpaceAlternativeDelim start="S<<\s"ms=s-2 end="\s>>"me=e oneline contains=podNoSpaceAlternativeDelimOpen
+
+  syn region podIndex start="X<[^<]"ms=s-2 end=">"me=e oneline contains=podIndexOpen
+  syn region podIndexAlternativeDelim start="X<<\s"ms=s-2 end="\s>>"me=e oneline contains=podIndexAlternativeDelimOpen
+
+  " Restore this (otherwise B<> is shown as bold inside verbatim)
+  syn match podVerbatimLine	"^\s.*$" contains=@NoSpell
+
+  " Ensure formatted text can be displayed in headings and items
+  syn clear podCmdText
+
+  if exists("perl_pod_spellcheck_headings")
+    syn match podCmdText ".*$" contained contains=podFormat,podBold,
+          \podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim,
+          \podBoldOpen,podItalicOpen,podBoldAlternativeDelimOpen,
+          \podItalicAlternativeDelimOpen,podNoSpaceOpen
+  else
+    syn match podCmdText ".*$" contained contains=podFormat,podBold,
+          \podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim,
+          \@NoSpell
+  endif
+
+  " Specify how to display these
+  hi def podBold term=bold cterm=bold gui=bold
+
+  hi link podBoldAlternativeDelim podBold
+  hi link podBoldAlternativeDelimOpen podBold
+  hi link podBoldOpen podBold
+
+  hi link podNoSpace                 Identifier
+  hi link podNoSpaceAlternativeDelim Identifier
+
+  hi link podIndex                   Identifier
+  hi link podIndexAlternativeDelim   Identifier
+
+  hi def podItalic term=italic cterm=italic gui=italic
+
+  hi link podItalicAlternativeDelim podItalic
+  hi link podItalicAlternativeDelimOpen podItalic
+  hi link podItalicOpen podItalic
+
+  hi def podBoldItalic term=italic,bold cterm=italic,bold gui=italic,bold
+  hi def podItalicBold term=italic,bold cterm=italic,bold gui=italic,bold
+endif
+
 let b:current_syntax = "pod"
 
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
 " vim: ts=8