lualine.nvim/CONTRIBUTING.md

2.6 KiB

Contributing to lualine.nvim

Adding a theme

  • refer to example below to see how themes are defined
  • take 4 screenshots showing a different vim modes (normal, insert, visual, replace)
  • add your theme with screenshots attached to THEMES.md while maintaining alphabetical order
  • If the colorscheme you're trying to add already support lightline. You can use lightline2lualine theme converter to easily port the theme to lualine.

Note to colorscheme authors : If you want to support lualine. You can put your lualine theme at lua/lualine/themes/{your_colorscheme}.lua in you repo.

theme example

To create a custom theme you need to define a colorscheme for each of vim's modes. Each mode has a fg and bg field for every lualine section. You can add special effects with gui.

Though the example shows a,b,c being set you can specify theme for x, y, z too. But if unspecified then they default to c, b, a sections theme respectively . Also all modes theme defaults to normal modes theme.

Adding theme is really easy in lua. Here is and example of a gruvbox theme.

local colors = {
  black        = '#282828',
  white        = '#ebdbb2',
  red          = '#fb4934',
  green        = '#b8bb26',
  blue         = '#83a598',
  yellow       = '#fe8019',
  gray         = '#a89984',
  darkgray     = '#3c3836',
  lightgray    = '#504945',
  inactivegray = '#7c6f64',
}
return {
  normal = {
    a = {bg = colors.gray, fg = colors.black, gui = 'bold'},
    b = {bg = colors.lightgray, fg = colors.white},
    c = {bg = colors.darkgray, fg = colors.gray}
  },
  insert = {
    a = {bg = colors.blue, fg = colors.black, gui = 'bold'},
    b = {bg = colors.lightgray, fg = colors.white},
    c = {bg = colors.lightgray, fg = colors.white}
  },
  visual = {
    a = {bg = colors.yellow, fg = colors.black, gui = 'bold'},
    b = {bg = colors.lightgray, fg = colors.white},
    c = {bg = colors.inactivegray, fg = colors.black}
  },
  replace = {
    a = {bg = colors.red, fg = colors.black, gui = 'bold'},
    b = {bg = colors.lightgray, fg = colors.white},
    c = {bg = colors.black, fg = colors.white}
  },
  command = {
    a = {bg = colors.green, fg = colors.black, gui = 'bold'},
    b = {bg = colors.lightgray, fg = colors.white},
    c = {bg = colors.inactivegray, fg = colors.black}
  },
  inactive = {
    a = {bg = colors.darkgray, fg = colors.gray, gui = 'bold'},
    b = {bg = colors.darkgray, fg = colors.gray},
    c = {bg = colors.darkgray, fg = colors.gray}
  }
}
require('lualine').setup {options = {theme = gruvbox}}