codekingpro/portable-devtools
114k
1" Vim syntax file2" Language: po (gettext)3" Maintainer: Dwayne Bailey <dwayne@translate.org.za>4" Last Change: 2024 Nov 285" Contributors: Dwayne Bailey (Most advanced syntax highlighting)6" Leonardo Fontenelle (Spell checking)7" Nam SungHyun <namsh@kldp.org> (Original maintainer)8" Eisuke Kawashima (add format-flags: #16132)9" Last Change:10" 2026 Mar 02 by Vim Project, various syntax improvements #1954811 12" quit when a syntax file was already loaded13if exists("b:current_syntax")14 finish15endif16let s:keepcpo= &cpo17set cpo&vim18 19syn sync minlines=1020 21" Identifiers22syn match poStatementMsgCTxt "^msgctxt\>"23syn match poStatementMsgidplural "^msgid_plural\>" contained24syn match poPluralCaseN "[0-9]" contained25syn match poStatementMsgstr "^msgstr\%(\[[0-9]\]\)" contains=poPluralCaseN26 27" Simple HTML and XML highlighting28syn match poHtml "<\_[^<>]\+>" contains=poHtmlTranslatables,poLineBreak29syn match poHtmlNot +"<[^<]\+>"+ms=s+1,me=e-130syn region poHtmlTranslatables start=+\<\%(abbr\|alt\|content\|summary\|standby\|title\)=\\"+ms=e-1 end=+\\"+ contained contains=@Spell31syn match poLineBreak +"\n"+ contained32 33" Translation blocks34syn region poMsgCTxt matchgroup=poStatementMsgCTxt start=+^msgctxt "+rs=e-1 matchgroup=poStringCTxt end=+^msgid "+me=s-1 contains=poStringCTxt35syn region poMsgID matchgroup=poStatementMsgid start=+^msgid "+rs=e-1 matchgroup=poStringID end=+^msgstr\%(\>\|\[[\]0\[]\]\) "+me=s-1 contains=poStringID,poStatementMsgidplural,poStatementMsgid36syn region poMsgSTR matchgroup=poStatementMsgstr start=+^msgstr\%(\>\|\[[\]0\[]\]\) "+rs=e-1 matchgroup=poStringSTR end=+\n\n+me=s-1 contains=poStringSTR,poStatementMsgstr37syn region poStringCTxt start=+"+ skip=+\\\\\|\\"+ end=+"+38syn region poStringID start=+"+ skip=+\\\\\|\\"+ end=+"+ contained39 \ contains=poSpecial,poFormat,poCommentKDE,poPluralKDE,poKDEdesktopFile,poHtml,poAcceleratorId,poHtmlNot,poVariable40syn region poStringSTR start=+"+ skip=+\\\\\|\\"+ end=+"+ contained41 \ contains=@Spell,poSpecial,poFormat,poHeaderItem,poCommentKDEError,poHeaderUndefined,poPluralKDEError,poMsguniqError,poKDEdesktopFile,poHtml,poAcceleratorStr,poHtmlNot,poVariable42 43" Header and Copyright44syn 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\): " contained45syn match poHeaderUndefined "\<\%(PACKAGE VERSION\>\|YEAR-MO-DA HO:MI+ZONE\>\|FULL NAME <EMAIL@ADDRESS>\|LANGUAGE <LL@li.org>\|CHARSET\>\|ENCODING\>\|INTEGER\>\|EXPRESSION\>\)" contained46syn match poCopyrightUnset "\<\%(SOME DESCRIPTIVE TITLE\|FIRST AUTHOR <EMAIL@ADDRESS>, YEAR\|Copyright (C) YEAR Free Software Foundation, Inc\|YEAR THE PACKAGE\'S COPYRIGHT HOLDER\|PACKAGE\)\>" contained47 48" Translation comment block including: translator comment, automatic comments, flags and locations49syn match poComment "^#.*$"50syn keyword poFlagFuzzy fuzzy contained51 52syn match poFlagFormat /\<\%(no-\)\?awk-format\>/ contained53syn match poFlagFormat /\<\%(no-\)\?boost-format\>/ contained54syn match poFlagFormat /\<\%(no-\)\?c++-format\>/ contained55syn match poFlagFormat /\<\%(no-\)\?c-format\>/ contained56syn match poFlagFormat /\<\%(no-\)\?csharp-format\>/ contained57syn match poFlagFormat /\<\%(no-\)\?d-format\>/ contained58syn match poFlagFormat /\<\%(no-\)\?elisp-format\>/ contained59syn match poFlagFormat /\<\%(no-\)\?gcc-internal-format\>/ contained60syn match poFlagFormat /\<\%(no-\)\?gfc-internal-format\>/ contained61syn match poFlagFormat /\<\%(no-\)\?go-format\>/ contained62syn match poFlagFormat /\<\%(no-\)\?java-format\>/ contained63syn match poFlagFormat /\<\%(no-\)\?java-printf-format\>/ contained64syn match poFlagFormat /\<\%(no-\)\?javascript-format\>/ contained65syn match poFlagFormat /\<\%(no-\)\?kde-format\>/ contained66syn match poFlagFormat /\<\%(no-\)\?librep-format\>/ contained67syn match poFlagFormat /\<\%(no-\)\?lisp-format\>/ contained68syn match poFlagFormat /\<\%(no-\)\?lua-format\>/ contained69syn match poFlagFormat /\<\%(no-\)\?modula2-format\>/ contained70syn match poFlagFormat /\<\%(no-\)\?objc-format\>/ contained71syn match poFlagFormat /\<\%(no-\)\?object-pascal-format\>/ contained72syn match poFlagFormat /\<\%(no-\)\?perl-brace-format\>/ contained73syn match poFlagFormat /\<\%(no-\)\?perl-format\>/ contained74syn match poFlagFormat /\<\%(no-\)\?php-format\>/ contained75syn match poFlagFormat /\<\%(no-\)\?python-brace-format\>/ contained76syn match poFlagFormat /\<\%(no-\)\?python-format\>/ contained77syn match poFlagFormat /\<\%(no-\)\?qt-format\>/ contained78syn match poFlagFormat /\<\%(no-\)\?qt-plural-format\>/ contained79syn match poFlagFormat /\<\%(no-\)\?ruby-format\>/ contained80syn match poFlagFormat /\<\%(no-\)\?rust-format\>/ contained81syn match poFlagFormat /\<\%(no-\)\?scheme-format\>/ contained82syn match poFlagFormat /\<\%(no-\)\?sh-format\>/ contained83syn match poFlagFormat /\<\%(no-\)\?sh-printf-format\>/ contained84syn match poFlagFormat /\<\%(no-\)\?smalltalk-format\>/ contained85syn match poFlagFormat /\<\%(no-\)\?tcl-format\>/ contained86syn match poFlagFormat /\<\%(no-\)\?ycp-format\>/ contained87syn match poFlagFormat /\<no-wrap\>/ contained88 89syn match poCommentTranslator "^# .*$" contains=poCopyrightUnset90syn match poCommentAutomatic "^#\..*$"91syn match poCommentSources "^#:.*$"92syn match poCommentFlags "^#[,=].*$" contains=poFlagFuzzy,poFlagFormat93syn match poCommentPrevious "^#|.*$"94 95" Translations (also includes header fields as they appear in a translation msgstr)96syn region poCommentKDE start=+"_: +ms=s+1 end="\\n" end="\"\n^msgstr"me=s-1 contained97syn region poCommentKDEError start=+"\%(\|\s\+\)_:+ms=s+1 end="\\n" end=+"\n\n+me=s-1 contained98syn match poPluralKDE +"_n: +ms=s+1 contained99syn region poPluralKDEError start=+"\%(\|\s\+\)_n:+ms=s+1 end="\"\n\n"me=s-1 contained100syn match poSpecial contained "\\\%(x\x\+\|\o\{1,3}\|.\|$\)"101syn match poFormat "%\%(\d\+\$\)\=[-+' #0*]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlL]\|ll\)\=\%([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained102syn match poFormat "%%" contained103 104" msguniq and msgcat conflicts105syn region poMsguniqError matchgroup=poMsguniqErrorMarkers start="#-#-#-#-#" end='#\%("\n"\|\)-\%("\n"\|\)#\%("\n"\|\)-\%("\n"\|\)#\%("\n"\|\)-\%("\n"\|\)#\%("\n"\|\)-\%("\n"\|\)#\%("\n"\|\)\\n' contained106 107" Obsolete messages108syn match poObsolete "^#\~.*$"109 110" KDE Name= handling111syn match poKDEdesktopFile "\"\%(Name\|Comment\|GenericName\|Description\|Keywords\|About\)="ms=s+1,me=e-1112 113" Accelerator keys - this messes up if the preceding or following char is a multibyte unicode char114syn match poAcceleratorId contained "[^&_~][&_~]\%(\a\|\d\)[^:]"ms=s+1,me=e-1115syn match poAcceleratorStr contained "[^&_~][&_~]\%(\a\|\d\)[^:]"ms=s+1,me=e-1 contains=@Spell116 117" Variables simple118syn match poVariable contained "%\d"119 120" Define the default highlighting.121" Only when an item doesn't have highlighting yet122 123hi def link poCommentSources PreProc124hi def link poComment Comment125hi def link poCommentAutomatic Comment126hi def link poCommentTranslator Comment127hi def link poCommentFlags Special128hi def link poCommentPrevious Comment129hi def link poCopyrightUnset Todo130hi def link poFlagFuzzy Todo131hi def link poFlagFormat Todo132hi def link poObsolete Comment133 134hi def link poStatementMsgid Statement135hi def link poStatementMsgstr Statement136hi def link poStatementMsgidplural Statement137hi def link poStatementMsgCTxt Statement138hi def link poPluralCaseN Constant139 140hi def link poStringCTxt Comment141hi def link poStringID String142hi def link poStringSTR String143hi def link poCommentKDE Comment144hi def link poCommentKDEError Error145hi def link poPluralKDE Comment146hi def link poPluralKDEError Error147hi def link poHeaderItem Identifier148hi def link poHeaderUndefined Todo149hi def link poKDEdesktopFile Identifier150 151hi def link poHtml Identifier152hi def link poHtmlNot String153hi def link poHtmlTranslatables String154hi def link poLineBreak String155 156hi def link poFormat poSpecial157hi def link poSpecial Special158hi def link poAcceleratorId Special159hi def link poAcceleratorStr Special160hi def link poVariable Special161 162hi def link poMsguniqError Special163hi def link poMsguniqErrorMarkers Comment164 165 166let b:current_syntax = "po"167 168let &cpo = s:keepcpo169unlet s:keepcpo170 171" vim:set ts=8 sts=2 sw=2 noet:172 