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