summaryrefslogtreecommitdiffstats
path: root/vim/syntax
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-02-17 15:44:20 -0600
committerJesse Luehrs <doy@tozt.net>2012-02-17 17:29:55 -0600
commit31cecdb8b33661f775766ece2c6e2dbe2fab215e (patch)
tree3694effbf2d07399229cc8129d21fce715ad8ccb /vim/syntax
parent5aca244430309339943d4bd53936aa18e31493e7 (diff)
downloadconf-31cecdb8b33661f775766ece2c6e2dbe2fab215e.tar.gz
conf-31cecdb8b33661f775766ece2c6e2dbe2fab215e.zip
add irssi log syntax highlighting (diz++)
Diffstat (limited to 'vim/syntax')
-rw-r--r--vim/syntax/irssilog.vim67
1 files changed, 67 insertions, 0 deletions
diff --git a/vim/syntax/irssilog.vim b/vim/syntax/irssilog.vim
new file mode 100644
index 0000000..230e52b
--- /dev/null
+++ b/vim/syntax/irssilog.vim
@@ -0,0 +1,67 @@
+" Irssi Log syntax file
+" Language: Irssi log
+" Maintainer: Will Gray <graywh@gmail.com>
+" GetLatestVimScripts: 2553 1 :AutoInstall: irssilog.vim
+"
+" Based on work by TODO
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let b:current_syntax = 'irssilog'
+
+setlocal iskeyword+=45,91-96,123-125
+
+syntax spell notoplevel
+
+syntax region irssiLogMsg start='^---' end='$'
+
+syntax match irssiTimestamp '^\d\{2}:\d\{2}\(:\d\{2}\)\?' nextgroup=@irssiItems skipwhite
+
+syntax region irssiNickRegion matchgroup=irssiDelimiter start='<' end='>' contained contains=@irssiNicks
+syntax match irssiNick '[ @~&+]\=\<\k*\>' contained
+
+syntax match irssiAction '\* \k* ' contained
+syntax region irssiMsg start='-!-' end='$' contained
+syntax region irssiNotice start='\*\{3}' end=':' contained
+
+syntax cluster irssiItems contains=irssiNickRegion,irssiAction,irssiMsg,irssiNotice
+syntax cluster irssiNicks contains=irssiNick
+
+if version >= 508 || !exists("did_irssilog_syntax_inits")
+ if version < 508
+ let did_irssilog_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink irssiLogMsg PreProc
+ HiLink irssiTimestamp TT
+ HiLink irssiAction Identifier
+ HiLink irssiMsg Identifier
+ HiLink irssiNotice PreProc
+
+ HiLink irssiDelimiter irssi
+
+ delcommand HiLink
+endif
+
+if filereadable($HOME . '/.irssi/saved_colors') && !exists("irssilog_no_saved_nick_colors")
+
+ let s:colormap = [0, 4, 2, 9, 1, 5, 3, 11, 10, 6, 14, 12, 13, 8, 7, 15]
+
+ for s:line in readfile($HOME . '/.irssi/saved_colors')
+ let s:words = split(s:line, ':')
+ let s:nick = escape(s:words[0], '\.*[^$')
+ let s:clean = substitute(s:words[0], '[^_a-zA-Z0-9]', '_', 'g')
+ let s:color = s:colormap[s:words[1] - 1]
+
+ exec 'syntax match irssiNick_' . s:clean . ' /[ @~&+]\=\<' . s:nick . '\>/ contained'
+ exec 'syntax cluster irssiNicks add=irssiNick_' . s:clean
+ exec 'highlight irssiNick_' . s:clean . ' ctermfg=' . s:color . ' guifg=' . s:color
+ endfor
+
+ unlet s:colormap s:line s:words s:nick s:clean s:color
+endif