" ============================================================================== " File: highlight.vim " Maintainer: Joshua Potter " " ============================================================================== if exists('g:loaded_highlight_registry') finish endif let g:loaded_highlight_registry = 1 " GLOBAL VARIABLES: {{{1 " ============================================================================== " g:highlight_registry :: { String : { String : String } } {{{2 " ------------------------------------------------------------------------------ " The following dictionary corresponds to registers 0-9 and their respective " syntax attributes. Adjust this to set the properties for a given highlight " group. Allowed keys in the nested dictionary are listed in *synIDattr*, except " for the 'name' attribute. Unrecognized keys are simply ignored. Only 'cterm' " related attributes are supported (that is, gui specific attributes are not " supported). " " In addition, can also include a key of 'group' in the nested dictionary to " indicate which highlight group to default a property to. By default, this " group is 'Search'. Thus, key '0' could also be written as: " { 'fg' : 'Yellow', 'group' : 'Search', 'bold': '0' }. " " TODO(jrpotter): Consider adding support for GUI and term? if !exists('g:highlight_registry') function! s:InitializeHighlightRegistry() let g:highlight_registry = {} let l:colors = [ 'Yellow', 'LightBlue', 'Red', 'Magenta', 'Green', 'Cyan', \ 'DarkYellow', 'White', 'Gray', 'Black' ] let l:index = 0 while l:index < len(l:colors) let g:highlight_registry[string(l:index)] = \{ 'fg' : l:colors[l:index], 'bg' : 'none', 'bold' : '1' } let l:index = l:index + 1 endwhile endfunction call s:InitializeHighlightRegistry() endif " g:highlight_persist_unnamed_register :: Boolean {{{2 " ------------------------------------------------------------------------------ " Determines how to manage the unnamed register '"'. If set to false, we regard " the unnamed register to implicitly imply use of the last activated register. if !exists('g:highlight_persist_unnamed_register') let g:highlight_persist_unnamed_register = 0 endif " g:highlight_register_prefix :: String {{{2 " ------------------------------------------------------------------------------ " Prefix used for group names and for link between Search highlight group and " the highlight registries. That is, " hi link Search {g:highlight_register_prefix} " and " hi link {g:highlight_register_prefix} {active search register}. if !exists('g:highlight_register_prefix') let g:highlight_register_prefix = 'HighlightRegister' endif " g:highlight_register_prefix_link :: String " ------------------------------------------------------------------------------ " Name of the highlight group the highlight_register_prefix group should be " linked to when no longer active. By default, this is NONE. if !exists('g:highlight_register_prefix_link') let g:highlight_register_prefix_link = 'NONE' endif " MAPPINGS: {{{1 " ============================================================================== " Append Searches noremap HRegistry_AppendToSearch \ :call highlight#append_to_search(highlight#expand_reg(v:register), \ highlight#expand_flag('c')) \ call highlight#count_pattern(highlight#expand_flag('c')) noremap HRegistry_GAppendToSearch \ :call highlight#append_to_search(highlight#expand_reg(v:register), \ highlight#expand_flag('g')) \ call highlight#count_pattern(highlight#expand_flag('g')) noremap HRegistry_VisualAppendToSearch \ :call highlight#append_to_search(highlight#expand_reg(v:register), \ highlight#expand_flag('v')) \ call highlight#count_pattern(highlight#expand_flag('v')) " Remove Searches noremap HRegistry_RemoveFromSearch \ :call highlight#remove_from_search(highlight#expand_reg(v:register), \ highlight#expand_flag('c')) noremap HRegistry_VisualRemoveFromSearch \ :call highlight#remove_from_search(highlight#expand_reg(v:register), \ highlight#expand_flag('v')) " Other Modifications noremap HRegistry_ClearRegister \ :call highlight#clear_register(highlight#expand_reg(v:register)) \ call highlight#activate_register(highlight#expand_reg(v:register)) noremap HRegistry_ActivateRegister \ :call highlight#activate_register(highlight#expand_reg(v:register)) noremap HRegistry_CountLastSeen \ :call highlight#count_pattern(highlight#expand_flag('c')) " Normal Mappings nmap & HRegistry_AppendToSearch nmap g& HRegistry_GAppendToSearch nmap y& HRegistry_ActivateRegister nmap d& HRegistry_RemoveFromSearch nmap c& HRegistry_ClearRegister nmap * :silent norm! *& nmap g* :silent norm! *g& nmap # :silent norm! #& nmap g# :silent norm! #g& " Visual Mappings vmap & HRegistry_VisualAppendToSearch'< vmap d& HRegistry_VisualRemoveFromSearch'< vmap * &nHRegistry_CountLastSeen vmap # &NHRegistry_CountLastSeen " PROCEDURE: Commands {{1 " ============================================================================== command ResetHighlightRegistry :call highlight#reset() " PROCEDURE: Initialize {{{1 " ============================================================================== call highlight#reset()