+" Use (limited) syntax based omni completion if no other omni completion is
+" available. Taken from :help ft-syntax-omni.
+ if has('autocmd') && exists('+omnifunc')
+ augroup vimrc
+ autocmd FileType *
+ \ if &omnifunc == '' |
+ \ setlocal omnifunc=syntaxcomplete#Complete |
+ \ endif
+ augroup END
+ endif
+
+" Function to enable all custom highlights. Necessary as highlights are
+" window-local and thus must be set for each new window.
+ function! s:CustomSyntaxHighlights()
+ " Not the first time called, nothing to do.
+ if exists('w:vimrc_syntax_run')
+ return
+ endif
+ let w:vimrc_syntax_run = 1
+
+" Highlight lines longer than 78 characters. Thanks to Tony Mechelynck
+" <antoine.mechelynck@gmail.com> from the Vim mailing list. It can easily be
+" disabled when necessary with :2match (in Vim >= 700).
+ if exists(':2match')
+ 2match Todo /\%>78v./
+ else
+ match Todo /\%>78v./
+ endif
+
+ if exists('*matchadd')
+" Highlight some important keywords in all documents.
+ let l:todos = ['TODO', 'XXX', 'FIXME',
+ \ 'CHANGED', 'REMOVED', 'DELETED']
+ " Compatibility fix for Vim 6.4 which can't handle for in function
+ " (without function it's ignored).
+ execute ' for l:x in l:todos'
+ \ '| call matchadd("Todo", l:x)'
+ \ '| endfor'
+
+" Highlight Unicode whitespace which is no normal whitespace (0x20).
+ let l:spaces = ['00a0', '1680', '180e', '2000', '2001', '2002',
+ \ '2003', '2004', '2005', '2006', '2007', '2008',
+ \ '2009', '200a', '200b', '200c', '200d', '202f',
+ \ '205f', '2060', '3000', 'feff']
+ " Compatibility fix for Vim 6.4.
+ execute ' for l:x in l:spaces'
+ \ '| call matchadd("Error", "\%u" . l:x)'
+ \ '| endfor'
+ endif
+ endfunction
+" Enable highlights for the current and all new windows. Thanks to bairui in
+" #vim on Freenode (2012-04-01 00:22 CEST) for the WinEnter suggestion.
+ call <SID>CustomSyntaxHighlights()
+ if has('autocmd')
+ augroup vimrc
+ autocmd WinEnter * call <SID>CustomSyntaxHighlights()
+ augroup END