On 12/01/09 13:44, Yue Wu wrote:
> As title, I want to change the setting of highlight for cursor, then
> restore it back.
>

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.
-- 
"Consequences, Schmonsequences, as long as I'm rich."
                -- "Ali Baba Bunny" [1957, Chuck Jones]

--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Reply via email to