summaryrefslogtreecommitdiff
path: root/mnv/runtime/syntax/mbsync.mnv
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-04 12:41:27 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-04 12:41:27 +0300
commit4f2d36194b4f299aa7509d815c07121039ea833b (patch)
treef3ded014bad3a4c76ff6a22b8726ebaab68c3d13 /mnv/runtime/syntax/mbsync.mnv
parent5b578e70c314723a3cde5c9bfc2be0bf1dadc93b (diff)
downloadProject-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.tar.gz
Project-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.zip
NOISSUE change uvim folder name to mnv
Signed-off-by: Mehmet Samet Duman <yongdohyun@projecttick.org>
Diffstat (limited to 'mnv/runtime/syntax/mbsync.mnv')
-rw-r--r--mnv/runtime/syntax/mbsync.mnv222
1 files changed, 222 insertions, 0 deletions
diff --git a/mnv/runtime/syntax/mbsync.mnv b/mnv/runtime/syntax/mbsync.mnv
new file mode 100644
index 0000000000..fd6722124b
--- /dev/null
+++ b/mnv/runtime/syntax/mbsync.mnv
@@ -0,0 +1,222 @@
+" MNV syntax file
+" Language: mbsyncrc
+" Maintainer: Pierrick Guillaume <pguillaume@fymyte.com>
+" Last Change: 2025 Apr 13
+" 2025 Jun 04 by MNV project: match TLSType configuration variable
+" 2026 Jan 15 by MNV project: support TLSVersions keyword
+"
+" Syntax support for mbsync config file
+
+" This file is based on the mbsync manual (isync v1.4.4)
+" https://isync.sourceforge.io/mbsync.html
+
+if exists('b:current_syntax')
+ finish
+endif
+
+let b:current_syntax = 'mbsync'
+
+let s:cpo_save = &cpo
+set cpo&mnv
+
+syn match mbsError '.*'
+
+syn match mbsCommentL '^#.*$'
+
+" Properties {{{
+
+syn match mbsNumber '[0-9]\+' display contained
+syn match mbsPath '\%([A-Za-z0-9/._+#$%~=\\{}\[\]:@!-]\|\\.\)\+' display contained
+syn match mbsPath '"\%([A-Za-z0-9/._+#$%~=\\{}\[\]:@! -]\|\\.\)\+"' display contained
+syn match mbsName '\%([A-Za-z0-9/._+#$%~=\\{}\[\]:@!-]\|\\.\)\+' display contained
+syn match mbsName '"\%([A-Za-z0-9/._+#$%~=\\{}\[\]:@! -]\|\\.\)\+"' display contained
+syn match mbsCommand '+\?.*$' display contained contains=mbsCommandPrompt
+syn match mbsCommandPrompt '+' display contained
+syn region mbsString start=+"+ skip=+\\"+ end=+"+ display contained
+syn match mbsSizeUnit '[kKmMbB]' display contained
+syn match mbsSize '[0-9]\+' display contained contains=mbsNumber nextgroup=mbsSizeUnit
+syn keyword mbsBool yes no contained
+
+" }}}
+
+
+" Stores {{{
+" Global Store Config Items
+syn match mbsGlobConfPath '^Path\s\+\ze.*$' contains=mbsGlobConfItemK contained nextgroup=mbsPath transparent
+syn match mbsGlobConfMaxSize '^MaxSize\s\+\ze.*$' contains=mbsGlobConfItemK contained nextgroup=mbsSize transparent
+syn match mbsGlobConfMapInbox '^MapInbox\s\+\ze.*$' contains=mbsGlobConfItemK contained nextgroup=mbsPath transparent
+syn match mbsGlobConfFlatten '^Flatten\s\+\ze.*$' contains=mbsGlobConfItemK contained nextgroup=mbsPath transparent
+syn match mbsGlobConfTrash '^Trash\s\+\ze.*$' contains=mbsGlobConfItemK contained nextgroup=mbsPath transparent
+syn match mbsGlobConfTrashNO '^TrashNewOnly\s\+\ze.*$' contains=mbsGlobConfItemK contained nextgroup=mbsBool transparent
+syn match mbsGlobConfTrashRN '^TrashRemoteNew\s\+\ze.*$' contains=mbsGlobConfItemK contained nextgroup=mbsBool transparent
+syn keyword mbsGlobConfItemK Path MaxSize MapInbox Flatten Trash TrashNewOnly TrashRemoteNew contained
+
+syn cluster mbsGlobConfItem contains=mbsGlobConfPath,mbsGlobConfMaxSize,mbsGlobConfMapInbox,mbsGlobConfFlatten,mbsCommentL,mbsGlobConfTrash.*
+
+
+" MaildirStore
+syn match mbsMdSConfStMaildirStore '^MaildirStore\s\+\ze.*$' contains=mbsMdSConfItemK contained nextgroup=mbsName transparent
+syn match mbsMdSConfStAltMap '^AltMap\s\+\ze.*$' contains=mbsMdSConfItemK contained nextgroup=mbsBool transparent
+syn match mbsMdsConfStInbox '^Inbox\s\+\ze.*$' contains=mbsMdSConfItemK contained nextgroup=mbsPath transparent
+syn match mbsMdsConfStInfoDelimiter '^InfoDelimiter\s\+\ze.*$' contains=mbsMdSConfItemK contained nextgroup=mbsPath transparent
+syn keyword mbsMdSConfSubFoldersOpt Verbatim Legacy contained
+syn match mbsMdSConfSubFoldersOpt 'Maildir++' display contained
+syn match mbsMdsConfStSubFolders '^SubFolders\s\+\ze.*$' contains=mbsMdSConfItemK contained nextgroup=mbsMdSConfSubFoldersOpt transparent
+
+syn cluster mbsMdSConfItem contains=mbsMdSConfSt.*
+
+syn keyword mbsMdSConfItemK MaildirStore AltMap Inbox InfoDelimiter SubFolders contained
+
+syn region mbsMaildirStore start="^MaildirStore" end="^$" end='\%$' contains=@mbsGlobConfItem,mbsCommentL,@mbsMdSConfItem,mbsError transparent
+
+
+" IMAP4Accounts
+syn match mbsIAConfStIMAPAccount '^IMAPAccount\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsName transparent
+syn match mbsIAConfStHost '^Host\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
+syn match mbsIAConfStPort '^Port\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsNumber transparent
+syn match mbsIAConfStTimeout '^Timeout\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsNumber transparent
+syn match mbsIAConfStUser '^User\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
+syn match mbsIAConfStUserCmd '^UserCmd\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsCommand transparent
+syn match mbsIAConfStPass '^Pass\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
+syn match mbsIAConfStPassCmd '^PassCmd\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsCommand transparent
+syn match mbsIAConfStUseKeychain '^UseKeychain\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsBool transparent
+syn match mbsIAConfStTunnel '^Tunnel\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsCommand transparent
+syn match mbsIAConfStAuthMechs '^AuthMechs\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
+syn keyword mbsIAConfTLSTypeOpt None STARTTLS IMAPS contained
+syn match mbsIAConfStSSLType '^SSLType\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsIAConfTLSTypeOpt transparent
+syn match mbsIAConfStTLSType '^TLSType\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsIAConfTLSTypeOpt transparent
+syn match mbsIAConfSSLVersionsOpt '\%(SSLv3\|TLSv1\%(.[123]\)\?\)\%(\s\+\%(SSLv3\|TLSv1\%(.[123]\)\?\)\)*' contained
+syn match mbsIAConfTLSVersionsOpt '[+-]\d\.\d\(\s\+[+-]\d\.\d\)*' contained
+syn match mbsIAConfStSSLVersions '^SSLVersions\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsIAConfSSLVersionsOpt transparent
+syn match mbsIAConfStTLSVersions '^TLSVersions\s\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsIAConfTLSVersionsOpt transparent
+syn match mbsIAConfStSystemCertificates '^SystemCertificates\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsBool transparent
+syn match mbsIAConfStCertificateFile '^CertificateFile\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
+syn match mbsIAConfStClientCertificate '^ClientCertificate\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
+syn match mbsIAConfStClientKey '^ClientKey\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
+syn match mbsIAConfStCipherString '^CipherString\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsString transparent
+syn match mbsIAConfStPipelineDepth '^PipelineDepth\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsNumber transparent
+syn match mbsIAConfStDisableExtensions '^DisableExtensions\?\s\+\ze.*$' contains=mbsIAConfItemK contained nextgroup=mbsPath transparent
+
+syn cluster mbsIAConfItem contains=mbsIAConfSt.*
+syn keyword mbsIAConfItemK
+ \ IMAPAccount Host Port Timeout User UserCmd Pass PassCmd UseKeychain Tunnel TLSVersions
+ \ AuthMechs SSLType TLSType SSLVersions SystemCertificates CertificateFile ClientCertificate
+ \ ClientKey CipherString PipelineDepth DisableExtension[s] contained
+
+syn region mbsIMAP4AccontsStore start="^IMAPAccount" end="^$" end="\%$" contains=@mbsGlobConfItem,mbsCommentL,@mbsIAConfItem,mbsError transparent
+
+
+" IMAPStores
+syn match mbsISConfStIMAPStore '^IMAPStore\s\+\ze.*$' contains=mbsISConfItemK contained nextgroup=mbsName transparent
+syn match mbsISConfStAccount '^Account\s\+\ze.*$' contains=mbsISConfItemK contained nextgroup=mbsName transparent
+syn match mbsISConfStUseNamespace '^UseNamespace\s\+\ze.*$' contains=mbsISConfItemK contained nextgroup=mbsBool transparent
+syn match mbsISConfStPathDelimiter '^PathDelimiter\s\+\ze.*$' contains=mbsISConfItemK contained nextgroup=mbsPath transparent
+syn match mbsISConfStSubscribedOnly '^SubscribedOnly\s\+\ze.*$' contains=mbsISConfItemK contained nextgroup=mbsBool transparent
+
+syn cluster mbsISConfItem contains=mbsISConfSt.*
+syn keyword mbsISConfItemK IMAPStore Account UseNamespace PathDelimiter SubscribedOnly contained
+
+syn region mbsIMAPStore start="^IMAPStore" end="^$" end="\%$" contains=@mbsGlobConfItem,mbsCommentL,@mbsISConfItem,mbsError transparent
+
+" }}}
+
+" Channels {{{
+
+syn match mbsCConfStChannel '^Channel\s\+\ze.*$' contains=mbsCConfItemK contained nextgroup=mbsName transparent
+syn region mbsCConfProxOpt matchgroup=mbsCConfProxOptOp start=':' matchgroup=mbsCConfProxOptOp end=':' contained contains=mbsName nextgroup=mbsPath keepend
+syn match mbsCConfStFar '^Far\s\+\ze.*$' contains=mbsCConfItemK contained nextgroup=mbsCConfProxOpt transparent
+syn match mbsCConfStNear '^Near\s\+\ze.*$' contains=mbsCConfItemK contained nextgroup=mbsCConfProxOpt transparent
+syn match mbsCConfPatternOptOp '[*%!]' display contained
+syn match mbsCConfPatternOpt '.*$' display contained contains=mbsCConfPatternOptOp
+syn match mbsCConfStPattern '^Patterns\?\s\+\ze.*$' contains=mbsCConfItemK contained nextgroup=mbsCConfPatternOpt transparent
+syn match mbsCConfStMaxSize '^MaxSize\s\+\ze.*$' contains=mbsCConfItemK contained nextgroup=mbsSize transparent
+syn match mbsCConfStMaxMessages '^MaxMessages\s\+\ze.*$' contains=mbsCConfItemK contained nextgroup=mbsNumber transparent
+syn match mbsCConfStExpireUnread '^ExpireUnread\s\+\ze.*$' contains=mbsCConfItemK contained nextgroup=mbsBool transparent
+syn match mbsCConfSyncOpt 'None\|All\|\%(\s\+\%(Pull\|Push\|New\|ReNew\|Delete\|Flags\)\)\+' display contained
+syn match mbsCConfStSync '^Sync\s\+\ze.*$' contains=mbsCConfItemK contained nextgroup=mbsCConfSyncOpt transparent
+syn keyword mbsCConfManipOpt None Far Near Both contained
+syn match mbsCConfStCreate '^Create\s\+\ze.*$' contains=mbsCConfItemK contained nextgroup=mbsCConfManipOpt transparent
+syn match mbsCConfStRemove '^Remove\s\+\ze.*$' contains=mbsCConfItemK contained nextgroup=mbsCConfManipOpt transparent
+syn match mbsCConfStExpunge '^Expunge\s\+\ze.*$' contains=mbsCConfItemK contained nextgroup=mbsCConfManipOpt transparent
+syn match mbsCConfStCopyArrivalDate '^CopyArrivalDate\s\+\ze.*$' contains=mbsCConfItemK contained nextgroup=mbsBool transparent
+syn match mbsCConfSyncStateOpt '\*\|.*$' display contained contains=mbsCConfSyncStateOptOp,mbsPath transparent
+syn match mbsCConfSyncStateOptOp '\*' display contained
+syn match mbsCConfStSyncState '^SyncState\s\+\ze.*$' contains=mbsCConfItemK contained nextgroup=mbsCConfSyncStateOpt transparent
+
+syn cluster mbsCConfItem contains=mbsCConfSt.*
+
+syn keyword mbsCConfItemK
+ \ Channel Far Near Pattern[s] MaxSize MaxMessages ExpireUnread Sync Create
+ \ Remove Expunge CopyArrivalDate SyncState contained
+
+syn region mbsChannel start="^Channel" end="^$" end="\%$" contains=@mbsCConfItem,mbsCommentL,mbsError transparent
+
+" }}}
+
+" Groups {{{
+
+syn match mbsGConfGroupOpt '\%([A-Za-z0-9/._+#$%~=\\{}\[\]:@!-]\|\\.\)\+' display contained contains=mbsName nextgroup=mbsGConfChannelOpt
+syn match mbsGConfStGroup '^Group\s\+\ze.*$' contains=mbsGConfItemK contained nextgroup=mbsGConfGroupOpt transparent
+syn match mbsGConfChannelOpt '.*$' display contained
+syn match mbsGConfStChannel '^Channels\?\s\+\ze.*$' contains=mbsGConfItemK contained nextgroup=mbsGConfChannelOpt transparent
+
+syn cluster mbsGConfItem contains=mbsGConfSt.*
+
+syn keyword mbsGConfItemK Group Channel[s] contained
+
+syn region mbsGroup start="^Group" end="^$" end="\%$" contains=@mbsGConfItem,mbsError transparent
+
+" }}}
+
+" Global Options {{{
+
+syn match mbsFSync '^FSync\s\+\ze.*$' contains=mbsGlobOptItemK nextgroup=mbsBool transparent
+syn match mbsFieldDelimiter '^FieldDelimiter\s\+\ze.*$' contains=mbsGlobOptItemK nextgroup=mbsPath transparent
+syn match mbsBufferLimit '^BufferLimit\s\+\ze.*$' contains=mbsGlobOptItemK nextgroup=mbsSize transparent
+
+syn keyword mbsGlobOptItemK FSync FieldDelimiter BufferLimit contained
+" }}}
+
+" Highlights {{{
+
+hi def link mbsError Error
+
+hi def link mbsCommentL Comment
+
+hi def link mbsNumber Number
+hi def link mbsSizeUnit Type
+hi def link mbsPath String
+hi def link mbsString String
+hi def link mbsCommand String
+hi def link mbsCommandPrompt Operator
+hi def link mbsName Constant
+hi def link mbsBool Boolean
+
+hi def link mbsGlobConfItemK Statement
+
+hi def link mbsMdSConfItemK Statement
+hi def link mbsMdSConfSubFoldersOpt Keyword
+
+hi def link mbsIAConfItemK Statement
+hi def link mbsIAConfTLSTypeOpt Keyword
+hi def link mbsIAConfSSLVersionsOpt Keyword
+hi def link mbsIAConfTLSVersionsOpt Keyword
+
+hi def link mbsISConfItemK Statement
+
+hi def link mbsCConfItemK Statement
+hi def link mbsCConfProxOptOp Operator
+hi def link mbsCConfPatternOpt String
+hi def link mbsCConfPatternOptOp Operator
+hi def link mbsCConfSyncOpt Keyword
+hi def link mbsCConfManipOpt Keyword
+hi def link mbsCConfSyncStateOptOp Operator
+
+hi def link mbsGConfItemK Statement
+hi def link mbsGConfChannelOpt String
+
+hi def link mbsGlobOptItemK Statement
+" }}}
+
+let &cpo = s:cpo_save
+unlet s:cpo_save