Provide a command to re-run approximation manually

This commit is contained in:
Matt Wozniski 2009-07-12 17:15:48 -04:00
parent d2c9063179
commit 347cc66837
2 changed files with 38 additions and 1 deletions

View File

@ -80,6 +80,18 @@ NOTE: Although :CSApproxSnapshot can be used in both GVim and terminal Vim,
running in a terminal than running in the GUI, and there's no way for running in a terminal than running in the GUI, and there's no way for
terminal Vim to figure out what color would have been used in GVim. terminal Vim to figure out what color would have been used in GVim.
*:CSApprox*
A command is also provided to run the approximation manually. This might be
useful if some colors were set outside of a colorscheme file, for instance.
By default, it will not change any colors unless no highlight group is set to
a color above 15, which is CSApprox's normal behavior. This probably isn't
useful in most use cases, though. On the other hand, if a ! is provided,
CSApprox will skip that test and update the cterm value for every highlight
group from the corresponding gui color. Syntax:
>
:CSApprox[!]
<
============================================================================== ==============================================================================
2. Requirements *csapprox-requirements* 2. Requirements *csapprox-requirements*
@ -428,6 +440,14 @@ Transparently adapting schemes is slow.
NOTE: As of CSApprox 3.50, the overhead is down to about 0.10 seconds on my NOTE: As of CSApprox 3.50, the overhead is down to about 0.10 seconds on my
test machine. test machine.
It isn't possible to approximate only a particular set of groups.
Unfortunately, the :CSApprox command will always update all groups, even if
only a small set of groups has changed. A future improvement would be to
provide a function called, say, CSApprox(), that takes an optional list of
highlight groups (default: all) and only does approximation for those
groups.
============================================================================== ==============================================================================
6. Appendix - Terminals and Palettes *csapprox-terminal-list* 6. Appendix - Terminals and Palettes *csapprox-terminal-list*

View File

@ -590,8 +590,15 @@ endfunction
" main function. This allows us to default to a message whenever any error, " main function. This allows us to default to a message whenever any error,
" even a recoverable one, occurs, meaning the user quickly finds out when " even a recoverable one, occurs, meaning the user quickly finds out when
" something's wrong, but makes it very easy for the user to make us silent. " something's wrong, but makes it very easy for the user to make us silent.
function! s:CSApprox() function! s:CSApprox(...)
try try
if a:0 == 1 && a:1
if !exists('s:inhibit_hicolor_test')
let s:inhibit_hicolor_test = 0
endif
let s:inhibit_hicolor_test += 1
endif
let savelz = &lz let savelz = &lz
set lz set lz
@ -641,6 +648,13 @@ function! s:CSApprox()
endif endif
let &lz = savelz let &lz = savelz
if a:0 == 1 && a:1
let s:inhibit_hicolor_test -= 1
if s:inhibit_hicolor_test == 0
unlet s:inhibit_hicolor_test
endif
endif
endtry endtry
endfunction endfunction
@ -860,6 +874,9 @@ endfunction
command! -bang -nargs=1 -complete=file -bar CSApproxSnapshot command! -bang -nargs=1 -complete=file -bar CSApproxSnapshot
\ call s:CSApproxSnapshot(<f-args>, strlen("<bang>")) \ call s:CSApproxSnapshot(<f-args>, strlen("<bang>"))
" {>2} Manual updates
command -bang -bar CSApprox call s:CSApprox(strlen("<bang>"))
" {>1} Hooks " {>1} Hooks
" {>2} Autocmds " {>2} Autocmds