neovim

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

mbsync.vim (13178B)


      1 " Vim syntax file
      2 " Language:	mbsyncrc
      3 " Maintainer:	Pierrick Guillaume  <pguillaume@fymyte.com>
      4 " Last Change:	2025 Apr 13
      5 " 2025 Jun 04 by Vim project: match TLSType configuration variable
      6 " 2026 Jan 15 by Vim project: support TLSVersions keyword
      7 "
      8 " Syntax support for mbsync config file
      9 
     10 " This file is based on the mbsync manual (isync v1.4.4)
     11 " https://isync.sourceforge.io/mbsync.html
     12 
     13 if exists('b:current_syntax')
     14  finish
     15 endif
     16 
     17 let b:current_syntax = 'mbsync'
     18 
     19 let s:cpo_save = &cpo
     20 set cpo&vim
     21 
     22 syn match mbsError    '.*'
     23 
     24 syn match mbsCommentL '^#.*$'
     25 
     26 " Properties {{{
     27 
     28 syn match   mbsNumber   '[0-9]\+' display contained
     29 syn match   mbsPath     '\%([A-Za-z0-9/._+#$%~=\\{}\[\]:@!-]\|\\.\)\+' display contained
     30 syn match   mbsPath     '"\%([A-Za-z0-9/._+#$%~=\\{}\[\]:@! -]\|\\.\)\+"' display contained
     31 syn match   mbsName     '\%([A-Za-z0-9/._+#$%~=\\{}\[\]:@!-]\|\\.\)\+' display contained
     32 syn match   mbsName     '"\%([A-Za-z0-9/._+#$%~=\\{}\[\]:@! -]\|\\.\)\+"' display contained
     33 syn match   mbsCommand  '+\?.*$' display contained contains=mbsCommandPrompt
     34 syn match   mbsCommandPrompt '+' display contained
     35 syn region  mbsString   start=+"+ skip=+\\"+ end=+"+ display contained
     36 syn match   mbsSizeUnit '[kKmMbB]' display contained
     37 syn match   mbsSize     '[0-9]\+' display contained contains=mbsNumber nextgroup=mbsSizeUnit
     38 syn keyword mbsBool     yes no contained
     39 
     40 " }}}
     41 
     42 
     43 " Stores {{{
     44 " Global Store Config Items
     45 syn match mbsGlobConfPath     '^Path\s\+\ze.*$'      contains=mbsGlobConfItemK contained nextgroup=mbsPath transparent
     46 syn match mbsGlobConfMaxSize  '^MaxSize\s\+\ze.*$'   contains=mbsGlobConfItemK contained nextgroup=mbsSize transparent
     47 syn match mbsGlobConfMapInbox '^MapInbox\s\+\ze.*$'  contains=mbsGlobConfItemK contained nextgroup=mbsPath transparent
     48 syn match mbsGlobConfFlatten  '^Flatten\s\+\ze.*$'   contains=mbsGlobConfItemK contained nextgroup=mbsPath transparent
     49 syn match mbsGlobConfTrash    '^Trash\s\+\ze.*$'     contains=mbsGlobConfItemK contained nextgroup=mbsPath transparent
     50 syn match mbsGlobConfTrashNO  '^TrashNewOnly\s\+\ze.*$'   contains=mbsGlobConfItemK contained nextgroup=mbsBool transparent
     51 syn match mbsGlobConfTrashRN  '^TrashRemoteNew\s\+\ze.*$' contains=mbsGlobConfItemK contained nextgroup=mbsBool transparent
     52 syn keyword mbsGlobConfItemK  Path MaxSize MapInbox Flatten Trash TrashNewOnly TrashRemoteNew contained
     53 
     54 syn cluster mbsGlobConfItem contains=mbsGlobConfPath,mbsGlobConfMaxSize,mbsGlobConfMapInbox,mbsGlobConfFlatten,mbsCommentL,mbsGlobConfTrash.*
     55 
     56 
     57 "   MaildirStore
     58 syn match mbsMdSConfStMaildirStore  '^MaildirStore\s\+\ze.*$'   contains=mbsMdSConfItemK contained nextgroup=mbsName transparent
     59 syn match mbsMdSConfStAltMap        '^AltMap\s\+\ze.*$'         contains=mbsMdSConfItemK contained nextgroup=mbsBool transparent
     60 syn match mbsMdsConfStInbox         '^Inbox\s\+\ze.*$'          contains=mbsMdSConfItemK contained nextgroup=mbsPath transparent
     61 syn match mbsMdsConfStInfoDelimiter '^InfoDelimiter\s\+\ze.*$'  contains=mbsMdSConfItemK contained nextgroup=mbsPath transparent
     62 syn keyword mbsMdSConfSubFoldersOpt  Verbatim Legacy contained
     63 syn match mbsMdSConfSubFoldersOpt   'Maildir++' display contained
     64 syn match mbsMdsConfStSubFolders    '^SubFolders\s\+\ze.*$'     contains=mbsMdSConfItemK contained nextgroup=mbsMdSConfSubFoldersOpt transparent
     65 
     66 syn cluster mbsMdSConfItem contains=mbsMdSConfSt.*
     67 
     68 syn keyword mbsMdSConfItemK   MaildirStore AltMap Inbox InfoDelimiter SubFolders contained
     69 
     70 syn region mbsMaildirStore start="^MaildirStore" end="^$" end='\%$' contains=@mbsGlobConfItem,mbsCommentL,@mbsMdSConfItem,mbsError transparent
     71 
     72 
     73 "   IMAP4Accounts
     74 syn match mbsIAConfStIMAPAccount  '^IMAPAccount\s\+\ze.*$'    contains=mbsIAConfItemK contained nextgroup=mbsName transparent
     75 syn match mbsIAConfStHost         '^Host\s\+\ze.*$'           contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
     76 syn match mbsIAConfStPort         '^Port\s\+\ze.*$'           contains=mbsIAConfItemK contained nextgroup=mbsNumber transparent
     77 syn match mbsIAConfStTimeout      '^Timeout\s\+\ze.*$'        contains=mbsIAConfItemK contained nextgroup=mbsNumber transparent
     78 syn match mbsIAConfStUser         '^User\s\+\ze.*$'           contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
     79 syn match mbsIAConfStUserCmd      '^UserCmd\s\+\ze.*$'        contains=mbsIAConfItemK contained nextgroup=mbsCommand transparent
     80 syn match mbsIAConfStPass         '^Pass\s\+\ze.*$'           contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
     81 syn match mbsIAConfStPassCmd      '^PassCmd\s\+\ze.*$'        contains=mbsIAConfItemK contained nextgroup=mbsCommand transparent
     82 syn match mbsIAConfStUseKeychain  '^UseKeychain\s\+\ze.*$'    contains=mbsIAConfItemK contained nextgroup=mbsBool transparent
     83 syn match mbsIAConfStTunnel       '^Tunnel\s\+\ze.*$'         contains=mbsIAConfItemK contained nextgroup=mbsCommand transparent
     84 syn match mbsIAConfStAuthMechs    '^AuthMechs\s\+\ze.*$'      contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
     85 syn keyword mbsIAConfTLSTypeOpt None STARTTLS IMAPS contained
     86 syn match mbsIAConfStSSLType      '^SSLType\s\+\ze.*$'        contains=mbsIAConfItemK contained nextgroup=mbsIAConfTLSTypeOpt transparent
     87 syn match mbsIAConfStTLSType      '^TLSType\s\+\ze.*$'        contains=mbsIAConfItemK contained nextgroup=mbsIAConfTLSTypeOpt transparent
     88 syn match mbsIAConfSSLVersionsOpt '\%(SSLv3\|TLSv1\%(.[123]\)\?\)\%(\s\+\%(SSLv3\|TLSv1\%(.[123]\)\?\)\)*' contained
     89 syn match mbsIAConfTLSVersionsOpt '[+-]\d\.\d\(\s\+[+-]\d\.\d\)*' contained
     90 syn match mbsIAConfStSSLVersions  '^SSLVersions\s\+\ze.*$'    contains=mbsIAConfItemK contained nextgroup=mbsIAConfSSLVersionsOpt transparent
     91 syn match mbsIAConfStTLSVersions  '^TLSVersions\s\ze.*$'    contains=mbsIAConfItemK contained nextgroup=mbsIAConfTLSVersionsOpt transparent
     92 syn match mbsIAConfStSystemCertificates  '^SystemCertificates\s\+\ze.*$'    contains=mbsIAConfItemK contained nextgroup=mbsBool transparent
     93 syn match mbsIAConfStCertificateFile  '^CertificateFile\s\+\ze.*$'    contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
     94 syn match mbsIAConfStClientCertificate  '^ClientCertificate\s\+\ze.*$'    contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
     95 syn match mbsIAConfStClientKey    '^ClientKey\s\+\ze.*$'       contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
     96 syn match mbsIAConfStCipherString '^CipherString\s\+\ze.*$'    contains=mbsIAConfItemK contained nextgroup=mbsString transparent
     97 syn match mbsIAConfStPipelineDepth '^PipelineDepth\s\+\ze.*$'  contains=mbsIAConfItemK contained nextgroup=mbsNumber transparent
     98 syn match mbsIAConfStDisableExtensions '^DisableExtensions\?\s\+\ze.*$'  contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
     99 
    100 syn cluster mbsIAConfItem contains=mbsIAConfSt.*
    101 syn keyword mbsIAConfItemK
    102  \ IMAPAccount Host Port Timeout User UserCmd Pass PassCmd UseKeychain Tunnel TLSVersions
    103  \ AuthMechs SSLType TLSType SSLVersions SystemCertificates CertificateFile ClientCertificate
    104  \ ClientKey CipherString PipelineDepth DisableExtension[s] contained
    105 
    106 syn region mbsIMAP4AccontsStore start="^IMAPAccount" end="^$" end="\%$" contains=@mbsGlobConfItem,mbsCommentL,@mbsIAConfItem,mbsError transparent
    107 
    108 
    109 "   IMAPStores
    110 syn match mbsISConfStIMAPStore    '^IMAPStore\s\+\ze.*$'      contains=mbsISConfItemK contained nextgroup=mbsName transparent
    111 syn match mbsISConfStAccount      '^Account\s\+\ze.*$'        contains=mbsISConfItemK contained nextgroup=mbsName transparent
    112 syn match mbsISConfStUseNamespace '^UseNamespace\s\+\ze.*$'   contains=mbsISConfItemK contained nextgroup=mbsBool transparent
    113 syn match mbsISConfStPathDelimiter '^PathDelimiter\s\+\ze.*$'   contains=mbsISConfItemK contained nextgroup=mbsPath transparent
    114 syn match mbsISConfStSubscribedOnly '^SubscribedOnly\s\+\ze.*$'   contains=mbsISConfItemK contained nextgroup=mbsBool transparent
    115 
    116 syn cluster mbsISConfItem contains=mbsISConfSt.*
    117 syn keyword mbsISConfItemK  IMAPStore Account UseNamespace PathDelimiter SubscribedOnly contained
    118 
    119 syn region mbsIMAPStore start="^IMAPStore" end="^$" end="\%$" contains=@mbsGlobConfItem,mbsCommentL,@mbsISConfItem,mbsError transparent
    120 
    121 " }}}
    122 
    123 " Channels {{{
    124 
    125 syn match mbsCConfStChannel       '^Channel\s\+\ze.*$'        contains=mbsCConfItemK contained nextgroup=mbsName transparent
    126 syn region mbsCConfProxOpt matchgroup=mbsCConfProxOptOp start=':' matchgroup=mbsCConfProxOptOp end=':' contained contains=mbsName nextgroup=mbsPath keepend
    127 syn match mbsCConfStFar           '^Far\s\+\ze.*$'            contains=mbsCConfItemK contained nextgroup=mbsCConfProxOpt transparent
    128 syn match mbsCConfStNear          '^Near\s\+\ze.*$'           contains=mbsCConfItemK contained nextgroup=mbsCConfProxOpt transparent
    129 syn match mbsCConfPatternOptOp '[*%!]' display contained
    130 syn match mbsCConfPatternOpt  '.*$' display contained contains=mbsCConfPatternOptOp
    131 syn match mbsCConfStPattern       '^Patterns\?\s\+\ze.*$'     contains=mbsCConfItemK contained nextgroup=mbsCConfPatternOpt transparent
    132 syn match mbsCConfStMaxSize       '^MaxSize\s\+\ze.*$'        contains=mbsCConfItemK contained nextgroup=mbsSize transparent
    133 syn match mbsCConfStMaxMessages   '^MaxMessages\s\+\ze.*$'    contains=mbsCConfItemK contained nextgroup=mbsNumber transparent
    134 syn match mbsCConfStExpireUnread  '^ExpireUnread\s\+\ze.*$'   contains=mbsCConfItemK contained nextgroup=mbsBool transparent
    135 syn match mbsCConfSyncOpt 'None\|All\|\%(\s\+\%(Pull\|Push\|New\|ReNew\|Delete\|Flags\)\)\+' display contained
    136 syn match mbsCConfStSync          '^Sync\s\+\ze.*$'           contains=mbsCConfItemK contained nextgroup=mbsCConfSyncOpt transparent
    137 syn keyword mbsCConfManipOpt  None Far Near Both contained
    138 syn match mbsCConfStCreate        '^Create\s\+\ze.*$'         contains=mbsCConfItemK contained nextgroup=mbsCConfManipOpt transparent
    139 syn match mbsCConfStRemove        '^Remove\s\+\ze.*$'         contains=mbsCConfItemK contained nextgroup=mbsCConfManipOpt transparent
    140 syn match mbsCConfStExpunge       '^Expunge\s\+\ze.*$'        contains=mbsCConfItemK contained nextgroup=mbsCConfManipOpt transparent
    141 syn match mbsCConfStCopyArrivalDate '^CopyArrivalDate\s\+\ze.*$' contains=mbsCConfItemK contained nextgroup=mbsBool transparent
    142 syn match mbsCConfSyncStateOpt  '\*\|.*$' display contained contains=mbsCConfSyncStateOptOp,mbsPath transparent
    143 syn match mbsCConfSyncStateOptOp  '\*' display contained
    144 syn match mbsCConfStSyncState     '^SyncState\s\+\ze.*$'      contains=mbsCConfItemK contained nextgroup=mbsCConfSyncStateOpt transparent
    145 
    146 syn cluster mbsCConfItem contains=mbsCConfSt.*
    147 
    148 syn keyword mbsCConfItemK
    149  \ Channel Far Near Pattern[s] MaxSize MaxMessages ExpireUnread Sync Create
    150  \ Remove Expunge CopyArrivalDate SyncState contained
    151 
    152 syn region mbsChannel start="^Channel" end="^$" end="\%$" contains=@mbsCConfItem,mbsCommentL,mbsError transparent
    153 
    154 " }}}
    155 
    156 " Groups {{{
    157 
    158 syn match mbsGConfGroupOpt  '\%([A-Za-z0-9/._+#$%~=\\{}\[\]:@!-]\|\\.\)\+' display contained contains=mbsName nextgroup=mbsGConfChannelOpt
    159 syn match mbsGConfStGroup         '^Group\s\+\ze.*$'          contains=mbsGConfItemK contained nextgroup=mbsGConfGroupOpt transparent
    160 syn match mbsGConfChannelOpt '.*$' display contained
    161 syn match mbsGConfStChannel       '^Channels\?\s\+\ze.*$'     contains=mbsGConfItemK contained nextgroup=mbsGConfChannelOpt transparent
    162 
    163 syn cluster mbsGConfItem contains=mbsGConfSt.*
    164 
    165 syn keyword mbsGConfItemK  Group Channel[s] contained
    166 
    167 syn region mbsGroup start="^Group" end="^$" end="\%$" contains=@mbsGConfItem,mbsError transparent
    168 
    169 " }}}
    170 
    171 " Global Options {{{
    172 
    173 syn match mbsFSync                '^FSync\s\+\ze.*$'          contains=mbsGlobOptItemK nextgroup=mbsBool transparent
    174 syn match mbsFieldDelimiter       '^FieldDelimiter\s\+\ze.*$' contains=mbsGlobOptItemK nextgroup=mbsPath transparent
    175 syn match mbsBufferLimit          '^BufferLimit\s\+\ze.*$'    contains=mbsGlobOptItemK nextgroup=mbsSize transparent
    176 
    177 syn keyword mbsGlobOptItemK FSync FieldDelimiter BufferLimit contained
    178 " }}}
    179 
    180 " Highlights {{{
    181 
    182 hi def link mbsError      Error
    183 
    184 hi def link mbsCommentL   Comment
    185 
    186 hi def link mbsNumber     Number
    187 hi def link mbsSizeUnit   Type
    188 hi def link mbsPath       String
    189 hi def link mbsString     String
    190 hi def link mbsCommand    String
    191 hi def link mbsCommandPrompt Operator
    192 hi def link mbsName       Constant
    193 hi def link mbsBool       Boolean
    194 
    195 hi def link mbsGlobConfItemK  Statement
    196 
    197 hi def link mbsMdSConfItemK   Statement
    198 hi def link mbsMdSConfSubFoldersOpt Keyword
    199 
    200 hi def link mbsIAConfItemK    Statement
    201 hi def link mbsIAConfTLSTypeOpt Keyword
    202 hi def link mbsIAConfSSLVersionsOpt Keyword
    203 hi def link mbsIAConfTLSVersionsOpt Keyword
    204 
    205 hi def link mbsISConfItemK    Statement
    206 
    207 hi def link mbsCConfItemK     Statement
    208 hi def link mbsCConfProxOptOp Operator
    209 hi def link mbsCConfPatternOpt String
    210 hi def link mbsCConfPatternOptOp Operator
    211 hi def link mbsCConfSyncOpt   Keyword
    212 hi def link mbsCConfManipOpt  Keyword
    213 hi def link mbsCConfSyncStateOptOp Operator
    214 
    215 hi def link mbsGConfItemK     Statement
    216 hi def link mbsGConfChannelOpt  String
    217 
    218 hi def link mbsGlobOptItemK   Statement
    219 " }}}
    220 
    221 let &cpo = s:cpo_save
    222 unlet s:cpo_save