Initial commit of syntax and ftdetect files

This commit is contained in:
MTDL9
2018-07-09 18:58:12 +02:00
parent 49481fe71e
commit da894230d2
2 changed files with 131 additions and 0 deletions

127
syntax/log.vim Normal file
View File

@@ -0,0 +1,127 @@
" Vim syntax file
" Language: Generic log file
" Maintainer: MTDL9 <https://github.com/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 #<?\w\+\(\s\+\w\+\(="[^"]*"\|='[^']*'\)\?\)*?>#
syn match logXmlTag #<\/\?\(\w\+:\)\?\w\+\(\s\+\w\+\(="[^"]*"\|="[^"]*"\)\?\)*\s*\/\?>#
syn match logXmlComment '<!--.*-->'
syn match logXmlCData '<!\[CDATA\[.*\]\]>'
" 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