Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion lua/base16.lua
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,12 @@ local function highlight(group, guifg, guibg, ctermfg, ctermbg, attr, guisp)
end

-- Modified from https://github.com/chriskempson/base16-vim
local function apply_base16_theme(theme, use_256_colorspace)
local function apply_base16_theme(theme, use_256_colorspace, extra_features)
local extra_features = extra_features or {lightline=false}
if extra_features.lightline then
require 'lightline'.base16_to_lightline(theme)
end

-- Terminal color definitions
local cterm00 = "00"
local cterm03 = "08"
Expand Down
49 changes: 49 additions & 0 deletions lua/lightline.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
-- Based on https://github.com/mike-hearn/base16-vim-lightline/blob/master/templates/default.mustache
local function part(color1, color2)
return {"#"..color1[1], "#"..color2[1], color1[2], color2[2]}
end

local function base16_to_lightline(theme)
local base00 = { theme.base00, '0' } -- black
local base01 = { theme.base01, '18' }
local base02 = { theme.base02, '19' }
local base03 = { theme.base03, '8' }
local base04 = { theme.base04, '20' }
local base05 = { theme.base05, '7' }
local base06 = { theme.base06, '21' }
local base07 = { theme.base07, '15' } -- white

local base08 = { theme.base08, '1' } -- red
local base09 = { theme.base09, '16' } -- orange
local base0A = { theme.base0A, '3' } -- yellow
local base0B = { theme.base0B, '2' } -- green
local base0C = { theme.base0C, '6' } -- teal
local base0D = { theme.base0D, '4' } -- blue
local base0E = { theme.base0E, '5' } -- pink
local base0F = { theme.base0F, '17' } -- brown

local p = {normal={}, inactive={}, insert={}, replace={}, visual={}, tabline={}}

p.normal.left = { part( base00, base0D ), part( base05, base02 ) }
p.insert.left = { part( base01, base0B ), part( base05, base02 ) }
p.visual.left = { part( base00, base09 ), part( base05, base02 ) }
p.replace.left = { part( base00, base08 ), part( base05, base02 ) }
p.inactive.left = { part( base02, base00 ) }

p.normal.middle = { part( base07, base01 ) }
p.inactive.middle = { part( base01, base00 ) }

p.normal.right = { part( base01, base03 ), part( base06, base02 ) }
p.inactive.right = { part( base01, base00 ) }

p.normal.error = { part( base07, base08 ) }
p.normal.warning = { part( base07, base09 ) }

p.tabline.left = { part( base05, base02 ) }
p.tabline.middle = { part( base05, base01 ) }
p.tabline.right = { part( base05, base02 ) }
p.tabline.tabsel = { part( base02, base0A ) }

vim.g['lightline#colorscheme#base16_nvim#palette'] = p
end
return { base16_to_lightline=base16_to_lightline }