Matt Wozniski schrieb:
> On 1/12/09, Yue Wu wrote:
>> It's too complicated, if I want to save/restore highlight for others,
>> it would need a big change. No other simple and generic way?
> Well, using synIDattr() you should be able to get all the information
which needs a {synID}, provided by
:h hlID()
maybe (GUI only):
" Usage:
" :let sav_hlCursor = SaveColor("Cursor")
" : hi Cursor ...
" : ...
" :call RestoreColor(sav_hlCursor)
func! SaveColor(hlgroup)
let savhl = {"hlgroup": a:hlgroup}
let curid = hlID(a:hlgroup)
let curtrans = synIDtrans(curid)
if curid != curtrans
let savhl.link = curtrans
else
let savhl.fg = synIDattr(curid, "fg")
let savhl.bg = synIDattr(curid, "bg")
" ...
endif
return savhl
endfunc
func! RestoreColor(hldict)
let savhl = a:hldict
exe "hi clear" savhl.hlgroup
if has_key(savhl, "link")
exe "hi link" savhl.hlgroup synIDattr(savhl.link, "name")
else
" GUI only:
exe "hi" savhl.hlgroup "guifg=".savhl.fg "guibg=".savhl.bg
endif
endfunc
--
Andy
--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---