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