From da894230d29474140df72158520edfdd07c8502a Mon Sep 17 00:00:00 2001 From: MTDL9 <40929090+MTDL9@users.noreply.github.com> Date: Mon, 9 Jul 2018 18:58:12 +0200 Subject: [PATCH] Initial commit of syntax and ftdetect files --- ftdetect/log.vim | 4 ++ syntax/log.vim | 127 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 ftdetect/log.vim create mode 100644 syntax/log.vim diff --git a/ftdetect/log.vim b/ftdetect/log.vim new file mode 100644 index 0000000..68d5bee --- /dev/null +++ b/ftdetect/log.vim @@ -0,0 +1,4 @@ + +au BufNewFile,BufRead *.log set filetype=log +au BufNewFile,BufRead *_log set filetype=log + diff --git a/syntax/log.vim b/syntax/log.vim new file mode 100644 index 0000000..49ab836 --- /dev/null +++ b/syntax/log.vim @@ -0,0 +1,127 @@ +" Vim syntax file +" Language: Generic log file +" Maintainer: MTDL9 +" Latest Revision: 2018-07-09 + +if exists('b:current_syntax') + finish +endif + +let s:cpo_save = &cpoptions +set cpoptions&vim + + +" Operators +"--------------------------------------------------------------------------- +syn match logOperator display '[;,\?\:\.\<=\>\~\/\@\&\!$\%\&\+\-\|\^(){}\*]' +syn match logBrackets display '[\[\]]' +syn match logEmptyLines display '---\-*' + + +" Constants +"--------------------------------------------------------------------------- +syn match logNumber '\<-\?\d\+\>' +syn match logHexNumber '\<0[xX]\x\+\>' +syn match logHexNumber '\<\d\x\+\>' +syn match logBinaryNumber '\<0[bB][01]\+\>' +syn match logFloatNumber '\<\d.\d\+[eE]\?\>' + +syn keyword logBoolean TRUE FALSE True False true false +syn keyword logNull NULL Null null + +syn region logString start=/"/ end=/"/ end=/$/ skip=/\\./ +" Quoted strings, but no match on quotes like "don't", "plurals' elements" +syn region logString start=/'\(s \|t \| \w\)\@!/ end=/'/ end=/$/ end=/s / skip=/\\./ + + +" Dates and Times +"--------------------------------------------------------------------------- +" Matches 2018-03-12T or 12/03/2018 or 12/Mar/2018 +syn match logDate '\d\{2,4}[-\/]\(\d\{2}\|Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\)[-\/]\d\{2,4}T\?' +" Matches 8 digit numbers at start of line starting with 20 +syn match logDate '^20\d\{6}' +" Matches Fri Jan 09 +syn match logDate '\(Mon\|Tue\|Wed\|Thu\|Fri\|Sat\|Sun\) \(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\) \d\{2}' + +" Matches 12:09:38 or 00:03:38.129Z or 01:32:12.102938 +0700 +syn match logTime '\d\{2}:\d\{2}:\d\{2}\(.\d\{2,6}\)\?\(\s\?[-+]\d\{2,4}\|Z\)\?\>' + + +" Entities +"--------------------------------------------------------------------------- +syn match logUrl 'http[s]\?:\/\/[^\n|,; '"]\+' +syn match logUUID '\w\{8}-\w\{4}-\w\{4}-\w\{4}-\w\{12}' +syn match logMD5 '\<[a-z0-9]\{32}\>' +syn match logIPV4 '\<\d\{1,3}\(\.\d\{1,3}\)\{3}\>' +syn match logIPV6 '\<\x\{1,4}\(:\x\{1,4}\)\{7}\>' +syn match logMacAddress '\<\x\{2}\(:\x\{2}\)\{5}' +syn match logFilePath '\<\w:\\[^\n|,; ()'"]\+' +syn match logFilePath '\/\w[^\n|,; ()'"]\+' + + +" XML Tags +"--------------------------------------------------------------------------- +" TODO: Highlight attributes and symbols inside tags differently +" TODO: Consider matching multiline tags +syn match logXmlHeader ## +syn match logXmlTag #<\/\?\(\w\+:\)\?\w\+\(\s\+\w\+\(="[^"]*"\|="[^"]*"\)\?\)*\s*\/\?># +syn match logXmlComment '' +syn match logXmlCData '' + + +" Levels +"--------------------------------------------------------------------------- +syn keyword logLevelCritical CRITICAL CRIT FATAL +syn keyword logLevelError ERROR FAILURE SEVERE +syn keyword logLevelWarning WARNING WARN +syn keyword logLevelNotice NOTICE +syn keyword logLevelInfo INFO +syn keyword logLevelDebug DEBUG FINE +syn keyword logLevelTrace TRACE FINER FINEST + + +" Highlight links +"--------------------------------------------------------------------------- +hi def link logNumber Number +hi def link logHexNumber Number +hi def link logBinaryNumber Number +hi def link logFloatNumber Float +hi def link logBoolean Boolean +hi def link logNull Constant +hi def link logString String + +hi def link logDate Identifier +hi def link logTime Function + +hi def link logUrl Underlined +hi def link logUUID Label +hi def link logMD5 Label +hi def link logIPV4 Label +hi def link logIPV6 ErrorMsg +hi def link logMacAddress Label +hi def link logFilePath Conditional + +hi def link logXmlHeader Function +hi def link logXmlTag Special +hi def link logXmlComment Comment +hi def link logXmlCData String + +hi def link logOperator Operator +hi def link logBrackets Comment +hi def link logEmptyLines Comment + +hi def link logLevelCritical ErrorMsg +hi def link logLevelError ErrorMsg +hi def link logLevelWarning WarningMsg +hi def link logLevelNotice Character +hi def link logLevelInfo Function +hi def link logLevelDebug Debug +hi def link logLevelTrace Comment + + + +let b:current_syntax = 'log' + +let &cpoptions = s:cpo_save +unlet s:cpo_save +