78 lines
2.9 KiB
Markdown
78 lines
2.9 KiB
Markdown
# 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](./THEMES.md) while maintaining alphabetical order
|
|
* If the colorscheme you're trying to add already support lightline. You can use
|
|
[lightline2lualine theme converter](https://gist.github.com/shadmansaleh/000871c9a608a012721c6acc6d7a19b9) 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.
|
|
|
|
<details>
|
|
<summary><b>theme example</b></summary>
|
|
|
|
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.
|
|
To specify colors you can use #rrggbb/color_name(like: red)/cterm_color(0-255).
|
|
Instead of defining colors as table containing values you can define it as a
|
|
string. This string is considered a highlight group name and lualines highlight
|
|
is linked to that group.
|
|
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.
|
|
```lua
|
|
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}}
|
|
```
|
|
|
|
</details>
|