view mcabber/contrib/mcabber_log.vim @ 1851:95b4373a57a4

Add Vim color syntax file
author Mikael Berthe <>
date Thu, 01 Apr 2010 21:08:07 +0200
line wrap: on
line source

" Vim syntax file
" Language:	MCabber log file
" Maintainer:	Mikael BERTHE <>
" URL:		Included in mcabber source package <>
" Last Change:	2010-04-01

" Place this file as ~/.vim/syntax/mcabber_log.vim
" and add the following line to ~/.vimrc
" au BufRead  */.mcabber/histo/* setfiletype mcabber_log
" Logfile format:
" TT YYYYmmddTHH:MM:SSZ nnn Text (this line and the nnn following lines)
" TT is the data type
" 'YYYYmmddTHH:MM:SSZ' is a timestamp
" XXX Please help me to improve this syntax script!

if exists("b:current_syntax")

syn cluster mcabberlogStatEntry contains=mcabberlogStatus,mcabberlogDate
syn cluster mcabberlogMsgEntry contains=mcabberlogMsgIn,mcabberlogMsgOut,mcabberlogDate

syn region mcabberlogStatusLine
    \ start="^S[OFDNAI_] \d\{8\}T\d\d:\d\d:\d\dZ \(\d\{3\}\) "
    \ end="\(\_^[MS][RSIOFDNAI_] \d\{8}T.\{8}Z \d\{3} \|\%$\)\@="
    \ contains=mcabberlogStatus,mcabberlogDate,mcabberlognlines
syn region mcabberlogMessageLineInfo
    \ start="^MI \d\{8\}T\d\d:\d\d:\d\dZ \(\d\{3\}\) "
    \ end="\(\_^[MS][RSIOFDNAI_] \d\{8}T.\{8}Z \d\{3} \|\%$\)\@="
    \ contains=mcabberlogMsgInfo,mcabberlogDate,mcabberlognlines
syn region mcabberlogMessageLineIn
    \ start="^MR \d\{8\}T\d\d:\d\d:\d\dZ \(\d\{3\}\) "
    \ end="\(\_^[MS][RSIOFDNAI_] \d\{8}T.\{8}Z \d\{3} \|\%$\)\@="
    \ contains=mcabberlogMsgIn,mcabberlogDate,mcabberlognlines

syn region mcabberlogMessageLineOut
    \ start="^MS \d\{8\}T\d\d:\d\d:\d\dZ \(\d\{3\}\) "
    \ end="\(\_^[MS][RSIOFDNAI_] \d\{8}T.\{8}Z \d\{3} \|\%$\)\@="
    \ contains=mcabberlogMsgOut,mcabberlogDate,mcabberlognlines

syn match mcabberlogDate /\d\{8\}T\d\d:\d\d:\d\dZ/ contained contains=mcabberlogDateChar nextgroup=mcabberlognlines
syn match mcabberlogDateChar /[TZ]/ contained

syn match mcabberlogStatus /^S[OFDNAI_]/ contained skipwhite nextgroup=@mcabberlogStatusLine
syn match mcabberlogMsgIn /^MR/ contained skipwhite nextgroup=@mcabberlogMessageLine
syn match mcabberlogMsgOut /^MS/ contained skipwhite nextgroup=@mcabberlogMessageLine
syn match mcabberlogMsgInfo /^MI/ contained skipwhite nextgroup=@mcabberlogMessageLine

syn match mcabberlognlines /\<\d\{3\}\>/ contained

command -nargs=+ HiLink hi def link <args>

HiLink mcabberlogStatus     PreProc

HiLink mcabberlogMessageLineIn      Keyword
HiLink mcabberlogMsgIn              Keyword

HiLink mcabberlogMessageLineOut     Function
HiLink mcabberlogMsgOut             Function

HiLink mcabberlogMsgInfo            String
HiLink mcabberlogMessageLineInfo    String

HiLink mcabberlogDate       SpecialChar
HiLink mcabberlogDateChar   Normal

HiLink mcabberlognlines     Normal

HiLink mcabberlogStatusLine Comment

delcommand HiLink

let b:current_syntax = "mcabber_log"