diff --git a/.luacheckrc b/.luacheckrc index 7487b77..7ce53af 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -2,3 +2,14 @@ globals = { "vim", "assert" } + +-- Don't report unused self arguments of methods. +self = false + +-- Rerun tests only if their modification time changed. +cache = true + +ignore = { + "631", -- max_line_length + "212/_.*", -- unused argument, for vars with "_" prefix +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dde8588..645054f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,77 +1,45 @@ # Contributing to lualine.nvim -### Adding a theme +Thanks for considering to contribute. -* 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. +### Getting started +You're not sure where to help. You can try these +- You can look at the currently open [issues](https://github.com/nvim-lualine/lualine.nvim/issues) to see if some bug needs fixing or for + cool feature idea. You should also look at currently open prs to see + if some abandoned pr interests you
+ *We could really use some help with tests & docs they are currently lacking :)* +- You can add exciting new component, extension or theme. + (Note: Currently we aren't accepting regular colorscheme based themes. + We think they make more sense with colorschemes as they tend not to get + updated once added hete. But if you have some unique themes idea like [auto](https://github.com/nvim-lualine/lualine.nvim/blob/master/THEMES.md#auto) or [pywal](https://github.com/nvim-lualine/lualine.nvim/blob/master/THEMES.md#pywal)) feel free to open an issue or pr. +- Feel free to open issues or unfinished pr for help. + I'd actually recommend you to open an issue first for bigging prs to discuss + the feature with maintainer beforehand. That way you'll can know if the + feature is likely to be accepted or not before you get started also you'll + get recommendation and help with implementation specially if you show + willingness to implement it yourself. +- Do add tests and docs for your changes. -**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. +Good luck. -
-theme example +### Devloper tools +*Let's introduce you to the tools we use.* -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}} -``` - -
+- Your pr need to pass tests & linter. We lint our codebase with [luacheck](https://github.com/mpeterv/luacheck) + and run tests with [plenary-test](https://github.com/nvim-lua/plenary.nvim) + these will be ran on CI. If you want you can run tests & linter locally with + `make test` & `make lint` respectively. Or `make check` to run both linter & tests. + For running tests you'll have to make sure both lualine.nvim and plenery.nvim are in same directory. +- lua codebase gets formatted with [stylua](https://github.com/JohnnyMorganz/StyLua) in CI. + So you can ignore formatting if you want. But if you want to submit formatted + pr you can run formatter locally with `make format`. +- VimDocs are auto generated with [panvimdoc](https://github.com/kdheepak/panvimdoc) from README.md. + So don't make changes to doc/lualine.txt . Instead add your docs to README or Wiki. + The docgen in ran by CI. If you want to run it locally you can do so + with `make docgen`. Note: you'll need to have [pandoc](https://github.com/jgm/pandoc) installed. +- `make precommit_check` can come quite handy it'll run all the above mentioned tools +- You can check our test coverage with `make testcov`. + You'll need to have [luacov](https://github.com/keplerproject/luacov) + & [luacov-console](https://github.com/spacewander/luacov-console) installed for that. + If you want the luacovs detailed report files run the command with NOCLEAN env set. + like `NOCLEAN=1 make testcov`