neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

po.vim (8254B)


      1 " Vim syntax file
      2 " Language:	po (gettext)
      3 " Maintainer:	Dwayne Bailey <dwayne@translate.org.za>
      4 " Last Change:	2024 Nov 28
      5 " 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 
     10 " quit when a syntax file was already loaded
     11 if exists("b:current_syntax")
     12  finish
     13 endif
     14 let s:keepcpo= &cpo
     15 set cpo&vim
     16 
     17 syn sync minlines=10
     18 
     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
     24 
     25 " Simple HTML and XML highlighting
     26 syn match  poHtml "<\_[^<>]\+>" contains=poHtmlTranslatables,poLineBreak
     27 syn match  poHtmlNot +"<[^<]\+>"+ms=s+1,me=e-1
     28 syn region poHtmlTranslatables start=+\(abbr\|alt\|content\|summary\|standby\|title\)=\\"+ms=e-1 end=+\\"+ contained contains=@Spell
     29 syn match poLineBreak +"\n"+ contained
     30 
     31 " Translation blocks
     32 syn region     poMsgCTxt	matchgroup=poStatementMsgCTxt start=+^msgctxt "+rs=e-1 matchgroup=poStringCTxt end=+^msgid "+me=s-1 contains=poStringCTxt
     33 syn region     poMsgID	matchgroup=poStatementMsgid start=+^msgid "+rs=e-1 matchgroup=poStringID end=+^msgstr\(\|\[[\]0\[]\]\) "+me=s-1 contains=poStringID,poStatementMsgidplural,poStatementMsgid
     34 syn region     poMsgSTR	matchgroup=poStatementMsgstr start=+^msgstr\(\|\[[\]0\[]\]\) "+rs=e-1 matchgroup=poStringSTR end=+\n\n+me=s-1 contains=poStringSTR,poStatementMsgstr
     35 syn region poStringCTxt	start=+"+ skip=+\\\\\|\\"+ end=+"+
     36 syn region poStringID	start=+"+ skip=+\\\\\|\\"+ end=+"+ contained
     37                            \ contains=poSpecial,poFormat,poCommentKDE,poPluralKDE,poKDEdesktopFile,poHtml,poAcceleratorId,poHtmlNot,poVariable
     38 syn 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
     42 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
     43 syn match     poHeaderUndefined "\(PACKAGE VERSION\|YEAR-MO-DA HO:MI+ZONE\|FULL NAME <EMAIL@ADDRESS>\|LANGUAGE <LL@li.org>\|CHARSET\|ENCODING\|INTEGER\|EXPRESSION\)" contained
     44 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 
     46 " Translation comment block including: translator comment, automatic comments, flags and locations
     47 syn match     poComment "^#.*$"
     48 syn keyword   poFlagFuzzy fuzzy contained
     49 
     50 syn match     poFlagFormat /\<\%(no-\)\?awk-format\>/ contained
     51 syn match     poFlagFormat /\<\%(no-\)\?boost-format\>/ contained
     52 syn match     poFlagFormat /\<\%(no-\)\?c++-format\>/ contained
     53 syn match     poFlagFormat /\<\%(no-\)\?c-format\>/ contained
     54 syn match     poFlagFormat /\<\%(no-\)\?csharp-format\>/ contained
     55 syn match     poFlagFormat /\<\%(no-\)\?elisp-format\>/ contained
     56 syn match     poFlagFormat /\<\%(no-\)\?gcc-internal-format\>/ contained
     57 syn match     poFlagFormat /\<\%(no-\)\?gfc-internal-format\>/ contained
     58 syn match     poFlagFormat /\<\%(no-\)\?java-format\>/ contained
     59 syn match     poFlagFormat /\<\%(no-\)\?java-printf-format\>/ contained
     60 syn match     poFlagFormat /\<\%(no-\)\?javascript-format\>/ contained
     61 syn match     poFlagFormat /\<\%(no-\)\?kde-format\>/ contained
     62 syn match     poFlagFormat /\<\%(no-\)\?librep-format\>/ contained
     63 syn match     poFlagFormat /\<\%(no-\)\?lisp-format\>/ contained
     64 syn match     poFlagFormat /\<\%(no-\)\?lua-format\>/ contained
     65 syn match     poFlagFormat /\<\%(no-\)\?objc-format\>/ contained
     66 syn match     poFlagFormat /\<\%(no-\)\?object-pascal-format\>/ contained
     67 syn match     poFlagFormat /\<\%(no-\)\?perl-brace-format\>/ contained
     68 syn match     poFlagFormat /\<\%(no-\)\?perl-format\>/ contained
     69 syn match     poFlagFormat /\<\%(no-\)\?php-format\>/ contained
     70 syn match     poFlagFormat /\<\%(no-\)\?python-brace-format\>/ contained
     71 syn match     poFlagFormat /\<\%(no-\)\?python-format\>/ contained
     72 syn match     poFlagFormat /\<\%(no-\)\?qt-format\>/ contained
     73 syn match     poFlagFormat /\<\%(no-\)\?qt-plural-format\>/ contained
     74 syn match     poFlagFormat /\<\%(no-\)\?ruby-format\>/ contained
     75 syn match     poFlagFormat /\<\%(no-\)\?scheme-format\>/ contained
     76 syn match     poFlagFormat /\<\%(no-\)\?sh-format\>/ contained
     77 syn match     poFlagFormat /\<\%(no-\)\?smalltalk-format\>/ contained
     78 syn match     poFlagFormat /\<\%(no-\)\?tcl-format\>/ contained
     79 syn match     poFlagFormat /\<\%(no-\)\?ycp-format\>/ contained
     80 
     81 syn match     poCommentTranslator "^# .*$" contains=poCopyrightUnset
     82 syn match     poCommentAutomatic "^#\..*$"
     83 syn match     poCommentSources	"^#:.*$"
     84 syn match     poCommentFlags "^#,.*$" contains=poFlagFuzzy,poFlagFormat
     85 syn match     poCommentPrevious "^#|.*$"
     86 
     87 " Translations (also includes header fields as they appear in a translation msgstr)
     88 syn region poCommentKDE	  start=+"_: +ms=s+1 end="\\n" end="\"\n^msgstr"me=s-1 contained
     89 syn region poCommentKDEError  start=+"\(\|\s\+\)_:+ms=s+1 end="\\n" end=+"\n\n+me=s-1 contained
     90 syn match  poPluralKDE   +"_n: +ms=s+1 contained
     91 syn region poPluralKDEError   start=+"\(\|\s\+\)_n:+ms=s+1 end="\"\n\n"me=s-1 contained
     92 syn match  poSpecial	contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
     93 syn match  poFormat	"%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
     94 syn match  poFormat	"%%" contained
     95 
     96 " msguniq and msgcat conflicts
     97 syn region poMsguniqError matchgroup=poMsguniqErrorMarkers  start="#-#-#-#-#"  end='#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)\\n' contained
     98 
     99 " Obsolete messages
    100 syn match poObsolete "^#\~.*$"
    101 
    102 " KDE Name= handling
    103 syn match poKDEdesktopFile "\"\(Name\|Comment\|GenericName\|Description\|Keywords\|About\)="ms=s+1,me=e-1
    104 
    105 " Accelerator keys - this messes up if the preceding or following char is a multibyte unicode char
    106 syn match poAcceleratorId  contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1
    107 syn match poAcceleratorStr  contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 contains=@Spell
    108 
    109 " Variables simple
    110 syn match poVariable contained "%\d"
    111 
    112 " Define the default highlighting.
    113 " Only when an item doesn't have highlighting yet
    114 
    115 hi def link poCommentSources    PreProc
    116 hi def link poComment	     Comment
    117 hi def link poCommentAutomatic  Comment
    118 hi def link poCommentTranslator Comment
    119 hi def link poCommentFlags      Special
    120 hi def link poCommentPrevious   Comment
    121 hi def link poCopyrightUnset    Todo
    122 hi def link poFlagFuzzy         Todo
    123 hi def link poFlagFormat        Todo
    124 hi def link poObsolete         Comment
    125 
    126 hi def link poStatementMsgid   Statement
    127 hi def link poStatementMsgstr  Statement
    128 hi def link poStatementMsgidplural  Statement
    129 hi def link poStatementMsgCTxt Statement
    130 hi def link poPluralCaseN      Constant
    131 
    132 hi def link poStringCTxt	    Comment
    133 hi def link poStringID	    String
    134 hi def link poStringSTR	    String
    135 hi def link poCommentKDE       Comment
    136 hi def link poCommentKDEError  Error
    137 hi def link poPluralKDE        Comment
    138 hi def link poPluralKDEError   Error
    139 hi def link poHeaderItem       Identifier
    140 hi def link poHeaderUndefined  Todo
    141 hi def link poKDEdesktopFile   Identifier
    142 
    143 hi def link poHtml              Identifier
    144 hi def link poHtmlNot           String
    145 hi def link poHtmlTranslatables String
    146 hi def link poLineBreak         String
    147 
    148 hi def link poFormat	    poSpecial
    149 hi def link poSpecial	    Special
    150 hi def link poAcceleratorId    Special
    151 hi def link poAcceleratorStr   Special
    152 hi def link poVariable         Special
    153 
    154 hi def link poMsguniqError        Special
    155 hi def link poMsguniqErrorMarkers Comment
    156 
    157 
    158 let b:current_syntax = "po"
    159 
    160 let &cpo = s:keepcpo
    161 unlet s:keepcpo
    162 
    163 " vim:set ts=8 sts=2 sw=2 noet: