diff options
| author | Teddy Wing | 2019-05-17 22:48:07 +0200 | 
|---|---|---|
| committer | Teddy Wing | 2019-05-17 22:48:07 +0200 | 
| commit | d389fdd35788385415dc972dd5c4ef7dcb3448c0 (patch) | |
| tree | 4ff652b13a1c08714573fd542ba599ba59e3edc3 /bundle/diff-corrections/autoload | |
| parent | d95ed0309d8c24dd62c65ed25ee5c260df28989a (diff) | |
| download | dotvim-d389fdd35788385415dc972dd5c4ef7dcb3448c0.tar.bz2 | |
diff-corrections: Restore old 'cursorline' and Comment highlight
When diff mode is deactivated, the old values for 'cursorline' and the
Comment highlight colour should be restored.
Thanks to Tony Mechelynck
(http://vim.1045645.n5.nabble.com/template/NamlServlet.jtp?macro=user_nodes&user=28373)
for the tip on how to save and restore highlight colours:
> The following is untested. It requires Vim version 7.
>
> function SaveCursorColor()
>         redir => highlight
>         silent hi Cursor
>         redir END
>         if highlight =~ 'links to '
>                 let s:hl-link = matchstr(highlight, 'links to \zs\S*')
>         elseif highlight =~ '\<cleared\>'
>                 let s:hl-link = 'NONE'
>         else
>                 let s:hl-link = ''
>                 for substr in ['term', 'cterm', 'ctermfg', 'ctermbg',
>                         \ 'gui', 'guifg', 'guibg', 'guisp']
>                         if highlight =~ substr . '='
>                                 let s:hl-{substr} = matchstr(highlight,
>                                         \ substr . '=\S*')
>                         else
>                                 let s:hl-{substr} = ''
>                         endif
>                 endfor
>         endif
> endfunction
> function RestoreCursorColor()
>         if !exists('s:hl-link')
>                 echoerr 'Cursor not saved, cannot restore'
>                 return
>         endif
>         hi clear Cursor
>         if s:hl-link == ''
>                 exe 'hi Cursor' s:hl-term s:hl-cterm s:hl-ctermfg
>                         \ s:hl-ctermbg s:hl-gui s:hl-guifg s:hl-guibg
>                         \ s:hl-guisp
>         elseif hl-link != 'NONE'
>                 exe 'hi link Cursor' s:hl-link
>         endif
> endfunction
>
>
> Best regards,
> Tony.
http://vim.1045645.n5.nabble.com/How-to-save-restore-the-hightlight-for-cursor-td1182624.html
Diffstat (limited to 'bundle/diff-corrections/autoload')
| -rw-r--r-- | bundle/diff-corrections/autoload/diff_corrections.vim | 26 | 
1 files changed, 26 insertions, 0 deletions
| diff --git a/bundle/diff-corrections/autoload/diff_corrections.vim b/bundle/diff-corrections/autoload/diff_corrections.vim index c9e77ff..620c1b0 100644 --- a/bundle/diff-corrections/autoload/diff_corrections.vim +++ b/bundle/diff-corrections/autoload/diff_corrections.vim @@ -1,3 +1,5 @@ +let s:old_cursorline = &cursorline +  function! diff_corrections#Run()  	if &diff  		if exists('g:colors_name') && g:colors_name ==# 'twilight256' @@ -5,5 +7,29 @@ function! diff_corrections#Run()  		endif  		set nocursorline +	else +		if exists('g:colors_name') && g:colors_name ==# 'twilight256' +			execute 'highlight ' . s:old_highlight_comment +		endif + +		let &cursorline = s:old_cursorline  	endif  endfunction + + +function! s:SaveCommentColor() +	redir => old_highlight +	silent highlight Comment +	redir END + +	let parts = split(old_highlight, ' ') +	call filter(parts, {_idx, val -> val !=? "" && val !=? "xxx"}) + +	let restore = join(parts, ' ') + +	" Remove ^@ character from the beginning that messes up the `execute` call +	return restore[1:] +endfunction + + +let s:old_highlight_comment = s:SaveCommentColor() | 
