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