| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- " Vim color file
- " Maintainer: Pierre-Antoine Lacaze <pa.lacaze@gmail.com>
- " Last Change:
- " License: GPLv2
- " To install, copy to ~/.vim/colors directory. Then :colorscheme spectro
- " spectro is a colorscheme that lets you define the global saturation and
- " the global lightness to be used for all the colors. The hue is then
- " defined on a per color basis
- " hue, saturation and lightness shall be set between 0 and 255
- " I shamelessly used inkscape colors algorithm for HSL -> RGB conversion
- " The main interest is the ability to adapt to different screens
- " by only changing the saturation and lightness in your vimrc :
- " let g:spectro_saturation = 120
- " let g:spectro_lightness = 160
- set background=dark
- hi clear
- if exists("syntax_on")
- syntax reset
- endif
- let g:colors_name="spectro"
- " default saturation value
- if ! exists("g:spectro_saturation")
- let g:spectro_saturation = 130
- else
- if g:spectro_saturation > 255
- let g:spectro_saturation = 255
- elseif g:spectro_saturation < 0
- let g:spectro_saturation = 0
- endif
- endif
- " default lightness value
- if ! exists("g:spectro_lightness")
- let g:spectro_lightness = 130
- else
- if g:spectro_lightness > 255
- let g:spectro_lightness = 255
- elseif g:spectro_lightness < 0
- let g:spectro_lightness = 0
- endif
- endif
- " function returning the hexadecimal value of an integer between 0 and 16
- fun! Dec2hex(s)
- let str = "0123456789ABCDEF"
- return str[a:s]
- endfunc
- " function converting a (R,G,B) triplet into a "#rrggbb" string
- fun! FormatRGB(rgb)
- let r1 = a:rgb[0] / 16
- let g1 = a:rgb[1] / 16
- let b1 = a:rgb[2] / 16
- let r2 = a:rgb[0] % 16
- let g2 = a:rgb[1] % 16
- let b2 = a:rgb[2] % 16
- return "#".Dec2hex(r1).Dec2hex(r2).Dec2hex(g1).Dec2hex(g2).Dec2hex(b1).Dec2hex(b2)
- endfun
- " function converting hue to RGB
- fun! Hue2rgb(v1,v2,H)
- let v1 = a:v1
- let v2 = a:v2
- let H = a:H
- if H < 0
- let H += 6 * 255
- elseif H > 6 * 255
- let H -= 6 * 255
- end
- if H < 255
- return (v1 * 255 + (v2 - v1) * H) / (255 * 255)
- elseif H < 3 * 255
- return v2 / 255
- elseif H < 4 * 255
- return (v1 * 255 + (v2 - v1) * (4 * 255 - H)) / (255 * 255)
- else
- return v1 / 255
- endif
- endfun
- " function converting a (H,S,L) triplet into a (R,G,B) triplet
- fun! Hsl2rgb(h)
- let H = a:h
- let S = g:spectro_saturation
- let L = g:spectro_lightness
- if S == 0
- let RGB = [L,L,L]
- else
- let RGB = [0,0,0]
- if L < 128
- let v2 = L * (255 + S)
- else
- let v2 = 255* (L + S) - L * S
- endif
- let v1 = 2 * 255 * L - v2
- let RGB[0] = Hue2rgb(v1,v2,H * 6 + 2 * 255)
- let RGB[1] = Hue2rgb(v1,v2,H * 6)
- let RGB[2] = Hue2rgb(v1,v2,H * 6 - 2 * 255)
- endif
- return FormatRGB(RGB)
- endfun
- " we choose the hue for each color to be used
- " You may want to use inkscape to calibrate this
- let white = "#ffffff"
- let black = "#000000"
- let gray = "#dcdccc"
- let dblue = "#006060"
- let c_comm = Hsl2rgb(71)
- let c_spec = Hsl2rgb(27)
- let c_numb = Hsl2rgb(128)
- let c_iden = Hsl2rgb(42)
- let c_stat = Hsl2rgb(212)
- let c_prep = Hsl2rgb(8)
- let c_erro = Hsl2rgb(0)
- let c_curs = Hsl2rgb(58)
- let c_visu = Hsl2rgb(223)
- let c_tabl = Hsl2rgb(140)
- " let's define colors
- exe "hi Comment guifg=".c_comm
- exe "hi Special guifg=".c_spec." gui=none"
- exe "hi Constant guifg=".c_spec." gui=bold"
- exe "hi Number guifg=".c_numb
- exe "hi Identifier guifg=".c_iden
- exe "hi Statement guifg=".c_stat." gui=bold"
- exe "hi PreProc guifg=".c_prep." gui=bold"
- exe "hi Type guifg=".c_iden." gui=none"
- exe "hi Todo guifg=".black ." guibg=".c_iden." gui=none"
- exe "hi ErrorMsg guifg=".white ." guibg=".c_erro." gui=bold"
- exe "hi MoreMsg guifg=".white ." guibg=".c_spec." gui=bold"
- exe "hi Cursor guifg=".black ." guibg=".c_curs." gui=bold"
- exe "hi WildMenu guifg=".black ." guibg=".c_curs." gui=bold"
- exe "hi LineNr guifg=".c_curs
- exe "hi Normal guifg=".gray ." guibg=".black
- exe "hi Visual guifg=".black ." guibg=".c_spec
- exe "hi Underlined guifg=".gray ." gui=underline"
- exe "hi VertSplit guifg=".dblue ." guibg=".gray
- exe "hi TabLine guifg=".gray ." guibg=".dblue ." gui=none"
- exe "hi TablineFill guifg=".black ." guibg=".black
- exe "hi TablineSel guifg=".white ." guibg=".c_tabl." gui=none"
- exe "hi User2 guifg=".white ." guibg=".c_tabl." gui=none"
- exe "hi StatusLine guifg=".white ." guibg=".c_tabl." gui=none"
- exe "hi StatusLineNC guifg=".gray ." guibg=".dblue ." gui=none"
- exe "hi Pmenu guifg=".gray ." guibg=".dblue ." gui=none"
- exe "hi PmenuSel guifg=".black ." guibg=".c_tabl." gui=bold"
- exe "hi PmenuSbar guifg=".black ." guibg=".gray ." gui=none"
- exe "hi PmenuThumb guifg=".black ." guibg=".gray ." gui=none"
- exe "hi Directory guifg=".c_comm
- exe "hi DiffAdded guifg=".c_comm." gui=none"
- exe "hi DiffChanged guifg=".c_iden." gui=none"
- exe "hi DiffRemoved guifg=".c_erro." gui=none"
- exe "hi DiffLine guifg=".c_numb." gui=bold"
- exe "hi Folded guifg=".c_numb
- hi link SpecialChar Special
- hi link Tag Special
- hi link Delimiter Special
- hi link String Special
- hi link Character Special
- hi link SpecialKey Special
- hi link cFormat Special
- hi link cSpecialCharacter Special
- hi link Debug Constant
- hi link SpecialComment Constant
- hi link Boolean Number
- hi link Float Number
- hi link NonText Number
- hi link Function Identifier
- hi link Title Identifier
- hi link Conditional Statement
- hi link Repeat Statement
- hi link Label Statement
- hi link Operator Statement
- hi link keyword Statement
- hi link Exception Statement
- hi link Include PreProc
- hi link Define PreProc
- hi link Macro PreProc
- hi link PreCondit PreProc
- hi link ModeMsg PreProc
- hi link StorageClass Type
- hi link Structure Type
- hi link Typedef Type
- hi link Search Todo
- hi link IncSearch Todo
- hi link Error ErrorMsg
- hi link WarningMsg MoreMsg
- hi link Question LineNr
- hi link StatusLineNC TabLine
- hi link User2 TabLineSel
- hi link DiffAdd DiffAdded
- hi link DiffChange DiffChanged
- hi link DiffDelete DiffRemoved
- hi link DiffText DiffLine
- hi link FoldColumn Folded
|