home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / runtime / dos / syntax / po.vim < prev    next >
Encoding:
Text File  |  2012-05-31  |  6.4 KB  |  141 lines

  1. " Vim syntax file
  2. " Language:    po (gettext)
  3. " Maintainer:    Dwayne Bailey <dwayne@translate.org.za>
  4. " Last Change:    2012 Apr 30
  5. " Contributors: Dwayne Bailey (Most advanced syntax highlighting)
  6. "               Leonardo Fontenelle (Spell checking)
  7. "               Nam SungHyun <namsh@kldp.org> (Original maintainer)
  8.  
  9. " For version 5.x: Clear all syntax items
  10. " For version 6.x: Quit when a syntax file was already loaded
  11. if version < 600
  12.   syntax clear
  13. elseif exists("b:current_syntax")
  14.   finish
  15. endif
  16. let s:keepcpo= &cpo
  17. set cpo&vim
  18.  
  19. syn sync minlines=10
  20.  
  21. " Identifiers
  22. syn match  poStatementMsgCTxt "^msgctxt"
  23. syn match  poStatementMsgidplural "^msgid_plural" contained
  24. syn match  poPluralCaseN "[0-9]" contained
  25. syn match  poStatementMsgstr "^msgstr\(\[[0-9]\]\)" contains=poPluralCaseN
  26.  
  27. " Simple HTML and XML highlighting
  28. syn match  poHtml "<\_[^<>]\+>" contains=poHtmlTranslatables,poLineBreak
  29. syn match  poHtmlNot +"<[^<]\+>"+ms=s+1,me=e-1
  30. syn region poHtmlTranslatables start=+\(abbr\|alt\|content\|summary\|standby\|title\)=\\"+ms=e-1 end=+\\"+ contained contains=@Spell
  31. syn match poLineBreak +"\n"+ contained
  32.  
  33. " Translation blocks
  34. syn region     poMsgCTxt    matchgroup=poStatementMsgCTxt start=+^msgctxt "+rs=e-1 matchgroup=poStringCTxt end=+^msgid "+me=s-1 contains=poStringCTxt
  35. syn region     poMsgID    matchgroup=poStatementMsgid start=+^msgid "+rs=e-1 matchgroup=poStringID end=+^msgstr\(\|\[[\]0\[]\]\) "+me=s-1 contains=poStringID,poStatementMsgidplural,poStatementMsgid
  36. syn region     poMsgSTR    matchgroup=poStatementMsgstr start=+^msgstr\(\|\[[\]0\[]\]\) "+rs=e-1 matchgroup=poStringSTR end=+\n\n+me=s-1 contains=poStringSTR,poStatementMsgstr
  37. syn region poStringCTxt    start=+"+ skip=+\\\\\|\\"+ end=+"+
  38. syn region poStringID    start=+"+ skip=+\\\\\|\\"+ end=+"+ contained 
  39.                             \ contains=poSpecial,poFormat,poCommentKDE,poPluralKDE,poKDEdesktopFile,poHtml,poAcceleratorId,poHtmlNot,poVariable
  40. syn region poStringSTR    start=+"+ skip=+\\\\\|\\"+ end=+"+ contained 
  41.                             \ contains=@Spell,poSpecial,poFormat,poHeaderItem,poCommentKDEError,poHeaderUndefined,poPluralKDEError,poMsguniqError,poKDEdesktopFile,poHtml,poAcceleratorStr,poHtmlNot,poVariable
  42.  
  43. " Header and Copyright
  44. syn match     poHeaderItem "\(Project-Id-Version\|Report-Msgid-Bugs-To\|POT-Creation-Date\|PO-Revision-Date\|Last-Translator\|Language-Team\|Language\|MIME-Version\|Content-Type\|Content-Transfer-Encoding\|Plural-Forms\|X-Generator\): " contained
  45. syn match     poHeaderUndefined "\(PACKAGE VERSION\|YEAR-MO-DA HO:MI+ZONE\|FULL NAME <EMAIL@ADDRESS>\|LANGUAGE <LL@li.org>\|CHARSET\|ENCODING\|INTEGER\|EXPRESSION\)" contained
  46. syn match     poCopyrightUnset "SOME DESCRIPTIVE TITLE\|FIRST AUTHOR <EMAIL@ADDRESS>, YEAR\|Copyright (C) YEAR Free Software Foundation, Inc\|YEAR THE PACKAGE\'S COPYRIGHT HOLDER\|PACKAGE" contained
  47.  
  48. " Translation comment block including: translator comment, automatic coments, flags and locations
  49. syn match     poComment "^#.*$"
  50. syn keyword   poFlagFuzzy fuzzy contained
  51. syn match     poCommentTranslator "^# .*$" contains=poCopyrightUnset
  52. syn match     poCommentAutomatic "^#\..*$" 
  53. syn match     poCommentSources    "^#:.*$"
  54. syn match     poCommentFlags "^#,.*$" contains=poFlagFuzzy
  55.  
  56. " Translations (also includes header fields as they appear in a translation msgstr)
  57. syn region poCommentKDE      start=+"_: +ms=s+1 end="\\n" end="\"\n^msgstr"me=s-1 contained
  58. syn region poCommentKDEError  start=+"\(\|\s\+\)_:+ms=s+1 end="\\n" end=+"\n\n+me=s-1 contained
  59. syn match  poPluralKDE   +"_n: +ms=s+1 contained
  60. syn region poPluralKDEError   start=+"\(\|\s\+\)_n:+ms=s+1 end="\"\n\n"me=s-1 contained
  61. syn match  poSpecial    contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
  62. syn match  poFormat    "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
  63. syn match  poFormat    "%%" contained
  64.  
  65. " msguniq and msgcat conflicts
  66. syn region poMsguniqError matchgroup=poMsguniqErrorMarkers  start="#-#-#-#-#"  end='#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)\\n' contained
  67.  
  68. " Obsolete messages
  69. syn match poObsolete "^#\~.*$" 
  70.  
  71. " KDE Name= handling
  72. syn match poKDEdesktopFile "\"\(Name\|Comment\|GenericName\|Description\|Keywords\|About\)="ms=s+1,me=e-1
  73.  
  74. " Accelerator keys - this messes up if the preceding or following char is a multibyte unicode char
  75. syn match poAcceleratorId  contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 
  76. syn match poAcceleratorStr  contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 contains=@Spell
  77.  
  78. " Variables simple
  79. syn match poVariable contained "%\d"
  80.  
  81. " Define the default highlighting.
  82. " For version 5.7 and earlier: only when not done already
  83. " For version 5.8 and later: only when an item doesn't have highlighting yet
  84. if version >= 508 || !exists("did_po_syn_inits")
  85.   if version < 508
  86.     let did_po_syn_inits = 1
  87.     command -nargs=+ HiLink hi link <args>
  88.   else
  89.     command -nargs=+ HiLink hi def link <args>
  90.   endif
  91.  
  92.   HiLink poCommentSources    PreProc
  93.   HiLink poComment         Comment
  94.   HiLink poCommentAutomatic  Comment
  95.   HiLink poCommentTranslator Comment
  96.   HiLink poCommentFlags      Special
  97.   HiLink poCopyrightUnset    Todo
  98.   HiLink poFlagFuzzy         Todo
  99.   HiLink poObsolete         Comment
  100.  
  101.   HiLink poStatementMsgid   Statement
  102.   HiLink poStatementMsgstr  Statement
  103.   HiLink poStatementMsgidplural  Statement
  104.   HiLink poStatementMsgCTxt Statement
  105.   HiLink poPluralCaseN      Constant
  106.  
  107.   HiLink poStringCTxt        Comment
  108.   HiLink poStringID        String
  109.   HiLink poStringSTR        String
  110.   HiLink poCommentKDE       Comment
  111.   HiLink poCommentKDEError  Error
  112.   HiLink poPluralKDE        Comment
  113.   HiLink poPluralKDEError   Error
  114.   HiLink poHeaderItem       Identifier
  115.   HiLink poHeaderUndefined  Todo
  116.   HiLink poKDEdesktopFile   Identifier
  117.  
  118.   HiLink poHtml              Identifier
  119.   HiLink poHtmlNot           String
  120.   HiLink poHtmlTranslatables String
  121.   HiLink poLineBreak         String
  122.  
  123.   HiLink poFormat        poSpecial
  124.   HiLink poSpecial        Special
  125.   HiLink poAcceleratorId    Special
  126.   HiLink poAcceleratorStr   Special
  127.   HiLink poVariable         Special
  128.  
  129.   HiLink poMsguniqError        Special
  130.   HiLink poMsguniqErrorMarkers Comment
  131.  
  132.   delcommand HiLink
  133. endif
  134.  
  135. let b:current_syntax = "po"
  136.  
  137. let &cpo = s:keepcpo
  138. unlet s:keepcpo
  139.  
  140. " vim:set ts=8 sts=2 sw=2 noet:
  141.