Init
commit
fea17297e6
|
@ -0,0 +1,138 @@
|
||||||
|
" ======================================================================
|
||||||
|
" File: highlight.vim
|
||||||
|
" Maintainer: Joshua Potter <jrpotter2112@gmail.com>
|
||||||
|
"
|
||||||
|
" ======================================================================
|
||||||
|
|
||||||
|
if exists('g:loaded_highlight')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let g:loaded_highlight = 1
|
||||||
|
|
||||||
|
|
||||||
|
" SCRIPT VARIABLES:
|
||||||
|
" ======================================================================
|
||||||
|
|
||||||
|
" s:highlight_register_color :: { String : Match } {{{2
|
||||||
|
" ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
let s:highlight_register_color = { 0 : 'Yellow',
|
||||||
|
\ 1 : 'DarkYellow',
|
||||||
|
\ 2 : 'Red',
|
||||||
|
\ 3 : 'DarkRed',
|
||||||
|
\ 4 : 'Green',
|
||||||
|
\ 5 : 'DarkGreen',
|
||||||
|
\ 6 : 'Blue',
|
||||||
|
\ 7 : 'DarkBlue',
|
||||||
|
\ 8 : 'Magenta',
|
||||||
|
\ 9 : 'DarkMagenta',
|
||||||
|
\ }
|
||||||
|
|
||||||
|
|
||||||
|
" s:matches :: { String : Match } {{{2
|
||||||
|
" ----------------------------------------------------------------------
|
||||||
|
" List of matches corresponding to the registry for potential deletion
|
||||||
|
|
||||||
|
let s:matches = {}
|
||||||
|
|
||||||
|
|
||||||
|
" s:registry :: { String : [String] } {{{2
|
||||||
|
" ----------------------------------------------------------------------
|
||||||
|
" Register to key corresponding to match. Keeps track of matches for
|
||||||
|
" deletion afterward
|
||||||
|
|
||||||
|
let s:registry = {}
|
||||||
|
|
||||||
|
|
||||||
|
" FUNCTION: MatchName(reg, word) {{{1
|
||||||
|
" ======================================================================
|
||||||
|
|
||||||
|
function! s:MatchName(reg, word)
|
||||||
|
return a:reg . "_" . word
|
||||||
|
endfunction!
|
||||||
|
|
||||||
|
|
||||||
|
" FUNCTION: GroupName(reg) {{{1
|
||||||
|
" ======================================================================
|
||||||
|
|
||||||
|
function! s:GroupName(reg)
|
||||||
|
return "PlugHighlightRegister_" . a:reg
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" FUNCTION: ClearHighlightRegister(reg) {{{1
|
||||||
|
" ======================================================================
|
||||||
|
" Used to clear out the 'registers' that are used to hold which values are
|
||||||
|
" highlighted under a certain match group.
|
||||||
|
|
||||||
|
function! s:ClearHighlightRegister(reg)
|
||||||
|
exe "hi clear " . s:GroupName(a:reg)
|
||||||
|
unlet s:highlight_register_color[a:reg]
|
||||||
|
if has_key(s:registry, a:reg)
|
||||||
|
for m in s:registry[a:reg]
|
||||||
|
matchdelete(s:matches[s:registry[a:reg]])
|
||||||
|
unlet s:matches[s:registry[a:reg]]
|
||||||
|
endfor
|
||||||
|
unlet s:registry[a:reg]
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" FUNCTION: InitHighlightRegister(reg) {{{1
|
||||||
|
" ======================================================================
|
||||||
|
" Setups the group and highlighting. Matches are added afterward
|
||||||
|
|
||||||
|
function! s:InitHighlightRegister(reg, color)
|
||||||
|
call c:ClearHighlightRegister(a:reg)
|
||||||
|
let s:highlight_register_color[a:reg] = a:color
|
||||||
|
exe "hi " . s:GroupName(a:reg) . " cterm=bold, underline ctermbg=" . a:color
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" FUNCTION: AppendToSearch(reg, word) {{{1
|
||||||
|
" ======================================================================
|
||||||
|
|
||||||
|
function! s:AppendToSearch(reg, word)
|
||||||
|
let m = matchadd(s:GroupName(a:reg), "\<" . a:word . "\>")
|
||||||
|
let s:matches[s:MatchName(a:reg, a:word)] = l:m
|
||||||
|
if !has_key(s:registry, a:reg)
|
||||||
|
let s:registry[a:reg] = []
|
||||||
|
endif
|
||||||
|
append(s:registry[a:reg], s:MatchName(a:reg, a:word))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" FUNCTION: RemoveFromSearch(reg, word) {{{1
|
||||||
|
" ======================================================================
|
||||||
|
|
||||||
|
function! s:RemoveFromSearch(reg, word)
|
||||||
|
matchdelete(s:matches[s:MatchName(a:reg, a:word)])
|
||||||
|
unlet s:matches[s:MatchName(a:reg, a:word)]
|
||||||
|
let i = 0
|
||||||
|
while i < len(s:registry[a:reg])
|
||||||
|
if s:registry[a:reg] == s:MatchName(a:reg, a:word)
|
||||||
|
unlet s:registry[a:reg][i]
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
i = i + 1
|
||||||
|
endwhile
|
||||||
|
if len(s:registry[a:reg]) == 0
|
||||||
|
unlet s:registry[a:reg]
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" FUNCTION: Initialize {{{1
|
||||||
|
" ======================================================================
|
||||||
|
|
||||||
|
call s:InitHighlightRegister('0', 'Yellow')
|
||||||
|
call s:InitHighlightRegister('1', 'DarkYellow')
|
||||||
|
call s:InitHighlightRegister('2', 'Red')
|
||||||
|
call s:InitHighlightRegister('3', 'DarkRed')
|
||||||
|
call s:InitHighlightRegister('4', 'Green')
|
||||||
|
call s:InitHighlightRegister('5', 'DarkGreen')
|
||||||
|
call s:InitHighlightRegister('6', 'Blue')
|
||||||
|
call s:InitHighlightRegister('7', 'DarkBlue')
|
||||||
|
call s:InitHighlightRegister('8', 'Magenta')
|
||||||
|
call s:InitHighlightRegister('9', 'DarkMagenta')
|
||||||
|
|
Loading…
Reference in New Issue