2013-03-26 8 views
6

Desidero modificare i colori delle parentesi colorate con Better Rainbow Parentheses.E421: non si riconosce il nome del colore nella dichiarazione perfettamente valida

I colori sono specificati in questo modo:

let g:rbpt_colorpairs = [ 
    \ ['brown',  'RoyalBlue3'], 
    \ ['Darkblue', 'SeaGreen3'], 
    \ ['darkgray', 'DarkOrchid3'], 
    \ ['darkgreen', 'firebrick3'], 
    \ ['darkcyan', 'RoyalBlue3'], 
    \ ['darkred',  'SeaGreen3'], 
    \ ['darkmagenta', 'DarkOrchid3'], 
    … 
    \ ] 

La funzione di cambiare i colori del plugin è questo:

func! rainbow_parentheses#toggle() 
    if !exists('s:active') 
     cal rainbow_parentheses#load(0) 
    endif 
    let afunc = exists('s:active') && s:active ? 'clear' : 'activate' 
    cal call('rainbow_parentheses#'.afunc, []) 
endfunc 

Dal momento che sto usando solarizzata voglio i colori esadecimali specifici, quindi ho ottenuto questo:

let g:rbpt_colorpairs = [ 
    \ ['yellow', '#b58900'], 
    \ ['orange',  '#cb4b16'], 
    \ ['red', '#dc322f'], 
    \ ['magenta', '#d33682'], 
    \ ['violet', '#6c71c4'], 
    \ ['blue',  '#268bd2'], 
    \ ['cyan', '#2aa198'], 
    … 
    \ ] 

Eppure, su re Comincio e girando il plugin su, ottengo questo errore più volte:

E421: Color name or number not recognized: cterm=orange guifg=#cb4b16 

Ancora meglio, facendo il: exe fatto nella funzione funziona come un fascino, come manualmente:

:exe 'hi default level4c ctermfg=orange guifg=#cb4b16' 

Anche con la concatenazione funziona:

:let foo = '#cb4b16 
:exe 'hi default level4c ctermfg=orange guifg='.foo 

Cosa potrebbe essere sbagliato ?!

risposta

7

Il problema non è nel colore GUI RGB, è nella definizione cterm=orange.

Vedere :help cterm-colors per valori riconosciuti; orange non è uno di questi.

+0

Scusami mentre vado a colpire me stesso. Fatto divertente: una volta ho avuto il problema con i colori dei terminali e l'arancione in passato. A volte dovrei imparare a imparare dai miei errori. :) – Profpatsch

+0

Anche se rimane una domanda: perché non si è lamentato di non averlo usato come comando ?! – Profpatsch

+0

Quindi, come posso impostare un colore se conosco il suo nome? – user10607

0
function! Gfagivesorange() 
     colors morning 
     hi Spellbad term=standout cterm=bold ctermfg=Red ctermbg=White 
     hi Spellbad term=standout cterm=NONE ctermfg=Orange ctermbg=White 
     call Myhi() 
endfunc 

Questa funzione ti darà arancione (rosso che non è grassetto). È una cosa di NCURSES, ma le persone non stanno padroneggiando o conoscendo NCURSES (non molti degli informatici).