diff --git a/README.md b/README.md
index 5e19258..abef5be 100644
--- a/README.md
+++ b/README.md
@@ -7,24 +7,22 @@ A blazing fast and easy to configure neovim statusline written in pure lua.
`lualine.nvim` requires neovim 0.5
## Contributing
-Please read [CONTRIBUTING.md](./CONTRIBUTING.md) before contributing.
-
-You can check [this](https://github.com/hoob3rt/lualine.nvim/projects/3) out if you want to see what is currently being worked on.
-
Feel free to create an issue/pr if you want to see anything else implemented.
+Please read [CONTRIBUTING.md](./CONTRIBUTING.md) before opening a pr.
+
## Screenshots
Here is a preview of how lualine can look like.
![normal_cropped](https://user-images.githubusercontent.com/41551030/108650373-bb025580-74bf-11eb-8682-2c09321dd18e.png)
![powerline_cropped](https://user-images.githubusercontent.com/41551030/108650377-bd64af80-74bf-11eb-9c55-fbfc51b39fe8.png)
-![diff_croped](https://user-images.githubusercontent.com/41551030/108650378-be95dc80-74bf-11eb-9718-82b242ecdd54.png)
+![diff_cropped](https://user-images.githubusercontent.com/41551030/108650378-be95dc80-74bf-11eb-9718-82b242ecdd54.png)
![diagnostics_cropped](https://user-images.githubusercontent.com/41551030/108650381-bfc70980-74bf-11eb-9245-85c48f0f154a.png)
![replace](https://user-images.githubusercontent.com/41551030/103467925-32372b00-4d54-11eb-88d6-6d39c46854d8.png)
Screenshots of all available themes are listed in [THEMES.md](./THEMES.md)
-For those who want to break the norms. You can create custom looks in lualine .
+For those who want to break the norms. You can create custom looks in lualine.
**Example** :
@@ -72,13 +70,48 @@ Lualine has sections as shown below.
```
Each sections holds it's components e.g. current vim's mode.
-Colorscheme of sections is mirrored, meaning section `A` will have the same colorscheme as section `Z` etc.
+---
### Starting lualine
-All configurations happens in the setup function
```lua
-require('lualine').setup{}
+require('lualine').setup()
```
+
+Default config
+
+```lua
+require'lualine'.setup {
+ options = {
+ icons_enabled = true,
+ theme = 'gruvbox',
+ component_separators = {'', ''},
+ section_separators = {'', ''},
+ disabled_filetypes = {}
+ },
+ sections = {
+ lualine_a = {'mode'},
+ lualine_b = {'branch'},
+ lualine_c = {'filename'},
+ lualine_x = {'encoding', 'fileformat', 'filetype'},
+ lualine_y = {'progress'},
+ lualine_z = {'location'}
+ },
+ inactive_sections = {
+ lualine_a = {},
+ lualine_b = {},
+ lualine_c = {'filename'},
+ lualine_x = {'location'},
+ lualine_y = {},
+ lualine_z = {}
+ },
+ tabline = {},
+ extensions = {}
+}
+```
+
+
+
+---
### Setting a theme
```lua
options = {theme = 'gruvbox'}
@@ -89,30 +122,26 @@ All available themes are listed in [THEMES.md](./THEMES.md)
Please create a pr if you managed to port a popular theme before me, [here is how to do it](./CONTRIBUTING.md).
-Tweaking themes
+Customizing themes
-You like a theme but would like to tweek some colors.
-You can do that in your config easily.
-
-Example:
```lua
local custom_gruvbox = require'lualine.themes.gruvbox'
-
-- Chnage the background of lualine_c section for normal mode
custom_gruvbox.normal.c.bg = '#112233' -- rgb colors are supported
-
require'lualine'.setup{
options = { theme = custom_gruvbox },
...
}
```
-You can checkout structure of a lualine theme [here](https://github.com/hoob3rt/lualine.nvim/blob/master/CONTRIBUTING.md#adding-a-theme)
+Theme structure is available [here](https://github.com/hoob3rt/lualine.nvim/blob/master/CONTRIBUTING.md#adding-a-theme)
-### Changing separators
-Lualine defines two kinds of seperators. One is for sections and other is for components. Default section seperators are '', '' and component separators are '', ''.
-They require powerline patched fonts. But you can easily change yours to something else like below
+---
+### Separators
+Lualine defines two kinds of seperators:
+ * `section_separators` - separators between sections
+ * `components_separators` - separators between components in sections
```lua
options = {
@@ -121,59 +150,41 @@ options = {
}
```
-or disable it
+Disabling separators
```lua
options = {section_separators = '', component_separators = ''}
```
+
+
+---
### Changing components in lualine sections
-
-Lualine defaults
-
```lua
-sections = {
- lualine_a = {'mode'},
- lualine_b = {'branch'},
- lualine_c = {'filename'},
- lualine_x = {'encoding', 'fileformat', 'filetype'},
- lualine_y = {'progress'},
- lualine_z = {'location'}
-},
-inactive_sections = {
- lualine_a = {},
- lualine_b = {},
- lualine_c = {'filename'},
- lualine_x = {'location'},
- lualine_y = {},
- lualine_z = {}
-}
+sections = {lualine_a = {'mode'}}
```
-
-
Available components
-* branch (git branch)
-* diagnostics (diagnostics count from your prefered source)
-* encoding (file encoding)
-* fileformat (file format)
-* filename
-* filetype
-* hostname
-* location (location in file in line:column format)
-* mode (vim mode)
-* progress (%progress in file)
-* diff (git diff status)
+* `branch` (git branch)
+* `diagnostics` (diagnostics count from your prefered source)
+* `encoding` (file encoding)
+* `fileformat` (file format)
+* `filename`
+* `filetype`
+* `hostname`
+* `location` (location in file in line:column format)
+* `mode` (vim mode)
+* `progress` (%progress in file)
+* `diff` (git diff status)
-
-Using custom functions as lualine component
+#### Custom components
-You can define a custom function as a lualine component
+##### Lua functions as lualine component
```lua
local function hello()
@@ -182,164 +193,84 @@ end
sections = {lualine_a = {hello}}
```
-
-
-
-
-Using vim functions as lualine component
-
-You can use vim functions as a lualine component
+##### Vim functions as lualine component
```lua
sections = {lualine_a = {'FugitiveHead'}}
```
-
+##### Vim variables as lualine component
+Variables from `g:`, `v:`, `t:`, `w:`, `b:`, `o`, `go:`, `vo:`, `to:`, `wo:`, `bo:` scopes can be used.
-
-Using variables as lualine component
-
-You can use variables from vim a lualine component
-Variables from g:, v:, t:, w:, b:, o, go:, vo:, to:, wo:, bo: scopes
-can be used. Scopes ending with o are options usualy accessed with `&` in vimscript
+See `:h lua-vim-variables` and `:h lua-vim-options` if you are not sure what to use.
```lua
sections = {lualine_a = {'g:coc_status', 'bo:filetype'}}
```
-
+##### Lua expressions as lualine component
+You can use any valid lua expression as a component including
+ * oneliners
+ * global variables
+ * require statements
+```lua
+sections = {lualine_c = {"os.data('%a')", 'data', require'lsp-status'.status}}
+```
+`data` is a global variable in this example.
+---
+### Component options
+Component options can change the way a component behave.
+There are two kinds of options:
+ * global options affecting all components
+ * local options affecting specific
+
+Global options can be used as local options (can be applied to specific components)
+but you cannot use local options as global.
+Global option used locally overwrites the global, for example:
+```lua
+ require'lualine'.setup {
+ options = {lower = true},
+ sections = {lualine_a = {{'mode', lower = false}}, lualine_b = {'branch'}}
+ }
+```
+
+`mode` will be displayed with `lower = false` and `branch` will be displayed with `lower = true`
+
+#### Available options
-Using lua expressions as lualine component
-
-You can use any valid lua expression as a component . This allows global
-variables to be used as a component too. Even require statements can be used to access values returned by specific scripts.
-One liner functions can be inlined by utilizeing this .
-
-For exmaple this will show day of the week.
-And 2nd one will display current value of global variable data.
+Global options
```lua
-sections = {lualine_c = {"os.data('%a')", 'data'}}
+options = {
+ icons_enabled = 1, -- displays icons in alongside component
+ padding = 1, -- adds padding to the left and right of components
+ left_padding = 1, -- adds padding to the left of components
+ right_padding =1, -- adds padding to the right of components
+ upper = false, -- displays components in uppercase
+ lower = false, -- displays components in lowercase
+ format = nil -- format function, formats component's output
+}
```
-Options for components
+Local options
-### Available options:
-
-Options can change the way a component behave.
-There are two kinds of options some that work on every kind of component.
-Even the ones you create like custom function component . And some that only
-work on specific component.
-Detailed list of available options are given below.
-
-#### Global options
-These options are available for all components.
-
-Option | Default | Behaviour | Supported components
-:------: | :------: | :------: | :--------:
-icons_enabled | true | Displays icons on components You should have nerd-fonts supported fonts to see icons properly. | branch, fileformat, filetype, location, diagnostics
-icon | Differs for each component | Displays an icon in front of the component | All
-padding | 1 | Adds padding to the left and right of components | All
-left_padding | 1 | Adds padding to the left of components | All
-right_padding | 1 | Adds padding to the right of components | All
-separator | (component_separators) | which separator to use at end of component | all
-upper | false | Changes components to be uppercase | All
-lower | false | Changes components to be lowercase | All
-format | nil | Takes a function . The funtion gets the result of component as argument and it's return value is displayed. So this function can parse and format the output as user wants. | All
-condition | nil | Takes a function. The component is loaded if the function returns true otherwise not. It can be used to load some comoonents on specific cases. | All
-color | nil | Sets custom color for the component in this format
`color = {fg = '#rrggbb', bg= '#rrggbb', gui='style'}`
The fields of color table are optional and default to theme
Color option can also be a string containing highlight group name `color = "WarningMsg"`. One neat trick set the color to highlight group name then change that highlight with :hi command to change color of that component at runtime. | All
-disabled_filetypes | {} | Disables lualine for specific filetypes | It works on entire statusline instead of on a single component
-
-#### Using global options
-Global options can be set in two ways. One is as part of options table in setup.
-
-```lua
-require'lualine'.setup{
- options = {
- icons_enabled = true,
- padding = 2,
- }
-}
-```
-When set this way these values work as default for all component.
-These defaults can be overwritten by setting option as part of component
-configuration like following.
-
-```lua
-lualine_a = {
- -- Displays only first char of mode name
- {'mode', format=function(mode_name) return mode_name:sub(1,1) end},
- -- Disables icon for branch component
- {'branch', icons_enabled=false},
-},
-lualine_c = {
- -- Displays filename only when window is wider then 80
- {'filename', condition=function() return vim.fn.winwidth(0) > 80 end},
-}
-```
-
-#### Component specific options
-In addition, some components have unique options.
-
-* `diagnostics` component options
-
-Option | Default | Behaviour | Format
-:------: | :------: | :----: | :---:
-sources | `nil` | displays diagnostic count from defined source | array containing one or many string from set `{'nvim_lsp', 'coc', 'ale', 'vim_lsp'}`
-sections | `{'error', 'warn', 'info'}` | displays diagnostics of defined severity | array containing one or many string from set `{'error', 'warn', 'info'}`
-color_error | `DiffDelete` foreground color | changes diagnostic's error section foreground color | color in `#rrggbb` format
-color_warn | `DiffText` foreground color | changes diagnostic's warn section foreground color | color in `#rrggbb` format
-color_info | `Normal` foreground color | changes diagnostic's info section foreground color | color in `#rrggbb` format
-symbols | `{error = ' ', warn = ' ', info = ' '}` or `{error = 'E:', warn = 'W:', info = 'I:'}` | changes diagnostic's info section foreground color | table containing one or more symbols for levels |
-
-* `filename` component options
-
-Option | Default | Behaviour
-:------: | :------: | :----:
-file_status | true | Displays file status (readonly status, modified status)
-path | 0 | filename `path` option: 0 = just filename, 1 = relative path, 2 = absolute path
-symbols | `{modified = '[+]', readonly = '[-]'}` | changes status symbols | table containing one or more symbols |
-
-* `filetype` component options
-
-Option | Default | Behaviour
-:------: | :------: | :----:
-colored | true | Displays filetype icon in color if set to `true`
-
-* `diff` component options
-
-Option | Default | Behaviour | Format
-:------: | :------: | :----: | :---:
-colored | true | displays diff status in color if set to `true` |
-color_added | `DiffAdd` foreground color | changes diff's added section foreground color | color in `#rrggbb` format
-color_modified | `DiffChange` foreground color | changes diff's changed section foreground color | color in `#rrggbb` format
-color_removed | `DiffDelete` foreground color | changes diff's removed section foreground color | color in `#rrggbb` format
-symbols | `{added = '+', modified = '~', removed = '-'}` | changes diff's symbols | table containing one or more symbols |
-
-
-Component specific options can only be set with component configs.
-
-##### Component options example
```lua
sections = {
- lualine_b = {
- {'branch', icon = '', upper = true, color = {fg = '#00aa22'}}, {
- 'filename',
- full_name = true,
- shorten = true,
- format = function(name)
- -- Capitalize first charecter of filename to capital.
- local path, fname = name:match('(.*/)(.*)')
- if not path then
- path = '';
- fname = name
- end
- return path .. fname:sub(1, 1):upper() .. fname:sub(2, #fname)
- end
+ lualine_a = {
+ {
+ 'mode',
+ icon = nil, -- displays icon in front of the component
+ separator = nil, -- overwrites component_separators for component
+ condition = nil, -- condition function, component is loaded when function returns true
+ -- custom color for component in format
+ -- color = {fg = '#rrggbb', bg= '#rrggbb', gui='style'}
+ -- or highlight group
+ -- color = "WarningMsg"
+ color = nil
}
}
}
@@ -348,10 +279,81 @@ sections = {
-Using tabline as statusline (statusline on top)
-You can use lualine to display components in tabline.
-The sections, configurations and highlights are same as statusline.
+Component specific local options
+#### `diagnostics` component options
+
+```lua
+sections = {
+ lualine_a = {
+ {
+ 'diagnostics',
+ -- table of diagnostic sources, available sources:
+ -- nvim_lsp, coc, ale, vim_lsp
+ sources = nil,
+ -- displays diagnostics from defined severity
+ sections = {'error', 'warn', 'info'},
+ -- all colors are in format #rrggbb
+ color_error = nil, -- changes diagnostic's error foreground color
+ color_warn = nil, -- changes diagnostic's warn foreground color
+ color_info = nil, -- Changes diagnostic's info foreground color
+ symbols = {error = 'E', warn = 'W', info = 'I'}
+ }
+ }
+}
+```
+
+#### `filename` component options
+
+```lua
+sections = {
+ lualine_a = {
+ {
+ 'filename',
+ file_status = true, -- displays file status (readonly status, modified status)
+ path = 0 -- 0 = just filename, 1 = relative path, 2 = absolute path
+ }
+ }
+}
+```
+
+#### `filetype` component options
+
+```lua
+sections = {
+ lualine_a = {
+ {
+ 'filetype',
+ colored = true -- displays filetype icon in color if set to `true`
+ }
+ }
+}
+```
+
+#### `diff` component options
+
+```lua
+sections = {
+ lualine_a = {
+ {
+ 'diff',
+ colored = true, -- displays diff status in color if set to true
+ -- all colors are in format #rrggbb
+ color_added = nil, -- changes diff's added foreground color
+ color_modified = nil, -- changes diff's modified foreground color
+ color_removed = nil, -- changes diff's removed foreground color
+ symbols = {added = '+', modified = '~', removed = '-'} -- changes diff symbols
+ }
+ }
+}
+```
+
+
+
+---
+### Tabline
+You can use lualine to display components in tabline.
+The configuration for tabline sections is exactly the same as for statusline.
```lua
tabline = {
lualine_a = {},
@@ -364,9 +366,9 @@ tabline = {
```
This will show branch and filename component in top of neovim inside tabline .
+You can also completely move your statuline to tabline by configuring
+`lualine.tabline` and disabling `lualine.sections` and `lualine.inactive_sections`.
-You can also completely move your statuline to tabline by configuring lualine.tabline
-instead of lualine.sections & lualine.inactive_sections and setting them to empty
```lua
tabline = {
......
@@ -374,14 +376,16 @@ tabline = {
sections = {},
inactive_sections = {},
```
-
-### Loading plugin extensions
-Lualine extensions change statusline appearance for a window/buffer with a plugin loaded e.g. [junegunn/fzf.vim](https://github.com/junegunn/fzf.vim)
+---
+### Extensions
+Lualine extensions change statusline appearance for a window/buffer with
+specified filetypes.
-By default no plugin extension are loaded to improve performance. If you are using a plugin which is supported you can load it this way:
+By default no extension are loaded to improve performance.
+You can load extensions with:
```lua
-extensions = { 'fzf' }
+extensions = {'quickfix'}
```
@@ -396,6 +400,14 @@ extensions = { 'fzf' }
+---
+### Disabling lualine
+You can disable lualine for specific filetypes
+```lua
+options = {disabled_filetypes = {'lua'}}
+```
+
+---
### Lua config example
diff --git a/doc/lualine.txt b/doc/lualine.txt
index 8bc4be2..bcd1521 100644
--- a/doc/lualine.txt
+++ b/doc/lualine.txt
@@ -1,122 +1,87 @@
-*lualine.txt* A blazing fast and easy to configure statusline
- *lualine_nvim* *lualine*
-
-Author: hoob3rt (https://github.com/hoob3rt)
-License: MIT License
-Repository: https://github.com/hoob3rt/lualine.nvim
-
-===============================================================================
-LUALINE.NVIM *lualine_lualine.nvim*
-
-
+*lualine.txt* blazing fast and easy to configure statusline
+ *lualine.nvim* *lualine*
__ __ __ ______ __ __ __ __ ______
/\ \ /\ \/\ \ /\ __ \ /\ \ /\ \ /\ "-.\ \ /\ ___\
\ \ \____ \ \ \_\ \ \ \ __ \ \ \ \____ \ \ \ \ \ \-. \ \ \ __\
\ \_____\ \ \_____\ \ \_\ \_\ \ \_____\ \ \_\ \ \_\\"\_\ \ \_____\
\/_____/ \/_____/ \/_/\/_/ \/_____/ \/_/ \/_/ \/_/ \/_____/
+Author: hoob3rt (https://github.com/hoob3rt)
+License: MIT License
+Repository: https://github.com/hoob3rt/lualine.nvim
+==============================================================================
+CONTENTS *lualine-contents*
+1. lualine.nvim..........................................|lualine-lualine.nvim|
+ 1.1. Usage and customization..............|lualine-usage_and_customization|
+ 1.1.1 Starting lualine.........................|lualine-starting_lualine|
+ 1.1.2 Setting a theme.....................................|lualine-theme|
+ 1.1.3 Separators.....................................|lualine-separators|
+ 1.1.4 Changing components............................|lualine-components|
+ 1.1.5 Custom components.......................|lualine-custom_components|
+ 1.1.6 Component options.......................|lualine-component_options|
+ 1.1.7 Tabline...........................................|lualine-tabline|
+ 1.1.8 Extensions.....................................|lualine-extensions|
+ 1.2 Config examples..............................|lualine-config_examples|
+ 1.2.1 Lua config example...................|lualine-lua_config_example|
+ 1.2.2 Vimscript config example.......|lualine-vimscript_config_example|
-A blazing fast and easy to configure neovim statusline written in pure lua.
-
-`lualine.nvim` requires neovim 0.5
-
-================================================================================
-CONTENTS *lualine_contents*
-
-1. lualine.nvim...........................................|lualine_lualine.nvim|
- 1.1. Performance comparison.................|lualine_performance_comparison|
- 1.2. Installation.....................................|lualine_installation|
- 1.2.1. vim-plug.......................................|lualine_vim-plug|
- 1.2.2.packer.nvim..................................|lualine_packer.nvim|
- 1.3. Usage and customization...............|lualine_usage_and_customization|
- 1.3.1. Starting lualine.......................|lualine_starting_lualine|
- 1.3.2. Setting theme.............................|lualine_setting_theme|
- 1.3.3. Changing separator...................|lualine_changing_separator|
- 1.3.4. Changing components.................|lualine_changing_components|
- 1.3.5. Building Custom components............|lualine_custom_components|
- 1.3.6. Custom options...........................|lualine_custom_options|
- 1.3.7. Using tabline as statusline...............|lualine_using_tabline|
- 1.3.8. Loading plugin extensions.....|lualine_loading_plugin_extensions|
- 1.3.9 Config examples.........................|lualine_config_examples|
- 1.3.9.1. Packer.nvim......|lualine_config_example_using_packer.nvim|
- 1.3.9.2 VIML example.......|lualine_full_config_example_inside_viml|
- 1.4. Contributing.....................................|lualine_contributing|
- 1.5. Screenshots.......................................|lualine_screenshots|
-
-================================================================================
-PERFORMANCE COMPARISON *lualine_performance_comparison*
-
-Unlike other statusline plugins lualine loads only defined components, nothing else.
-
-Startup time performance measured with an amazing plugin
-tweekmonster/startuptime.vim (https://github.com/tweekmonster/startuptime.vim)
-
-All times are measured with only `startuptime.vim` and given statusline plugin
-installed
-
-| clean vimrc | lualine | lightline | airline |
-| :------------: | :----------: | :----------: | :----------: |
-| 8.943 ms | 9.034 ms | 11.463 ms | 13.425 ms |
-
---------------------------------------------------------------------------------
-INSTALLATION *lualine_installation*
-
-VIM-PLUG *lualine_vim-plug*
->
- Plug 'hoob3rt/lualine.nvim'
- " If you want to have icons in your statusline choose one of these
- Plug 'kyazdani42/nvim-web-devicons'
- Plug 'ryanoasis/vim-devicons'
-<
-
-PACKER.NVIM *lualine_packer.nvim*
->
- use {
- 'hoob3rt/lualine.nvim',
- requires = {'kyazdani42/nvim-web-devicons', opt = true}
- }
-<
-
---------------------------------------------------------------------------------
-USAGE AND CUSTOMIZATION *lualine_usage_and_customization*
+==============================================================================
+USAGE AND CUSTOMIZATION *lualine-usage_and_customization*
Lualine has sections as shown below.
>
+-------------------------------------------------+
| A | B | C X | Y | Z |
+-------------------------------------------------+
-<
Each sections holds it's components e.g. current vim's mode.
-Colorscheme of sections is mirrored, meaning section `A` will have the same
-colorscheme as section `Z` etc.
-Configuration is currently limited to lua, please use lua block or a separate
-lua file to configure lualine.
-
-STARTING LUALINE *lualine_starting_lualine*
+------------------------------------------------------------------------------
+STARTING LUALINE *lualine-starting_lualine* *lualine.setup()*
>
- require('lualine').setup{}
-<
+ require('lualine').setup()
-SETTING THEME *lualine_setting_theme*
+Default config~
+>
+ require'lualine'.setup {
+ options = {
+ icons_enabled = true,
+ theme = 'gruvbox',
+ component_separators = {'', ''},
+ section_separators = {'', ''},
+ disabled_filetypes = {}
+ },
+ sections = {
+ lualine_a = {'mode'},
+ lualine_b = {'branch'},
+ lualine_c = {'filename'},
+ lualine_x = {'encoding', 'fileformat', 'filetype'},
+ lualine_y = {'progress'},
+ lualine_z = {'location'}
+ },
+ inactive_sections = {
+ lualine_a = {},
+ lualine_b = {},
+ lualine_c = {'filename'},
+ lualine_x = {'location'},
+ lualine_y = {},
+ lualine_z = {}
+ },
+ tabline = {},
+ extensions = {}
+ }
+
+------------------------------------------------------------------------------
+SETTING A THEME *lualine-theme*
>
options = {theme = 'gruvbox'}
-<
-All available themes are listed in THEMES.md (./THEMES.md)
+Available themes are listed here:
+https://github.com/hoob3rt/lualine.nvim/blob/master/THEMES.md
-Please create a pr if you managed to port a popular theme before me, here is
-how to do it (./CONTRIBUTING.md).
-
-Tweeking themes~
-
-You like a theme but would like to tweek some colors.
-You can do that in your config easily.
-
-Example:
+Customizing themes~
>
local custom_gruvbox = require'lualine.themes.gruvbox'
@@ -128,395 +93,249 @@ Example:
...
}
<
-You can checkout structure of a lualine theme [here](https://github.com/hoob3rt/lualine.nvim/blob/master/CONTRIBUTING.md#adding-a-theme)
+Theme structure is available here:
+https://github.com/hoob3rt/lualine.nvim/blob/master/CONTRIBUTING.md#adding-a-theme
-CHANGING SEPARATOR IN SECTION *lualine_changing_separator*
+------------------------------------------------------------------------------
+SEPARATORS *lualine-separators*
-Lualine defines two kinds of seperators. One is for sections and other is
-for components. Default section seperators are '', '' and component
-separators are '', ''.They require powerline patched fonts. But you can
-easily change yours to something else like below.
+Lualine defines two kinds of seperators:
+ * |section_separators| - separators between sections
+ * |components_separators| - separators between components in sections
>
options = {
section_separators = {'', ''},
component_separators = {'', ''}
}
-or disable it
+Disabling separators~
>
options = {section_separators = '', component_separators = ''}
-<
-
-CHANGING COMPONENTS IN LUALINE SECTIONS *lualine_changing_components*
-
-
-Lualine defaults~
->
- sections = {
- lualine_a = { 'mode' },
- lualine_b = { 'branch' },
- lualine_c = { 'filename' },
- lualine_x = { 'encoding', 'fileformat', 'filetype' },
- lualine_y = { 'progress' },
- lualine_z = { 'location' },
- }
- inactive_sections = {
- lualine_a = { },
- lualine_b = { },
- lualine_c = { 'filename' },
- lualine_x = { 'location' },
- lualine_y = { },
- lualine_z = { }
- }
-<
-
+------------------------------------------------------------------------------
+CHANGING COMPONENTS IN LUALINE SECTIONS *lualine-components*
+ `sections = {lualine_a = {'mode'}}`
Available components~
-
general~
- * branch (git branch)
- * diagnostics (diagnostics count from your prefered source)
- * encoding (file encoding)
- * fileformat (file format)
- * filename
- * filetype
- * hostname
- * location (location in file in line:column format)
- * mode (vim mode)
- * progress (%progress in file)
- * diff (git diff status)
+ * |branch| (git branch)
+ * |diagnostics| (diagnostics count from your preferred source)
+ * |encoding| (file encoding)
+ * |fileformat| (file format)
+ * |filename|
+ * |filetype|
+ * |hostname|
+ * |location| (location in file in line:column format)
+ * |mode| (vim mode)
+ * |progress| (%progress in file)
+ * |diff| (git diff status)
+------------------------------------------------------------------------------
+CUSTOM COMPONENTS *lualine-custom_components*
---------------------------------------------------------------------------------
-BUILDING YOUR COMPONENTS *lualine_custom_components*
-
-
-Using custom functions as lualine component~
-
-You can define a custom function as a lualine component
+Lua functions as lualine component~
>
local function hello()
return [[hello world]]
end
sections = {lualine_a = {hello}}
<
-Using vim functions as lualine component~
-
-You can use vim functions as a lualine component
-
+Vim functions as lualine component~
>
sections = {lualine_a = {'FugitiveHead'}}
<
+Vim variables as lualine component~
-Using variables as lualine component~
-
-You can use variables from vim. Variables from g:, v:, t:,
-w:, b:, o, go:, vo:, to:, wo:, bo: scopes can be used.
-Scopes ending with o are options usualy accessed with `&` in
-vimscript
-
+Variables from `g:`, `v:`, `t:`, `w:`, `b:`, `o`, `go:`, `vo:`, `to:`, `wo:`, `bo:` scopes can be used.
+See `:h lua-vim-variables` and `:h lua-vim-options` if you are not sure what to use.
>
sections = {lualine_a = {'g:coc_status', 'bo:filetype'}}
<
-Using lua expressions as lualine component~
+Lua expressions as lualine component~
-You can use any valid lua expression as a component . This
-allows global variables to be used as a component too. Even
-require statements can be used to access values returned by
-specific scripts. One liner functions can be inlined by
-utilizeing this .
-
-For exmaple this will show day of the week. And 2nd one
-will display current value of global variabke data.
+You can use any valid lua expression as a component including
+ * oneliners
+ * global variables
+ * require statements
>
- sections = {lualine_c = {"os.data('%a')", 'data'}}
-<
+ sections = {lualine_c = {"os.data('%a')", 'data', require'lsp-status'.status}}
---------------------------------------------------------------------------------
-CUSTOM OPTIONS FOR COMPONENTS *lualine_custom_options*
+`data` is a global variable in this example.
+------------------------------------------------------------------------------
+COMPONENT OPTIONS *lualine-component_options*
-Options for components~
-======================
+Component options can change the way a component behave.
+There are two kinds of options:
+ * global options affecting all components
+ * local options affecting specific
+
+Global options can be used as local options (can be applied to specific components)
+but you cannot use local options as global.
+Global option used locally overwrites the global, for example:
+>
+ require'lualine'.setup {
+ options = {lower = true},
+ sections = {lualine_a = {{'mode', lower = false}}, lualine_b = {'branch'}}
+ }
+
+`mode` will be displayed with `lower = false` and `branch` will be displayed with `lower = true`
Available options:~
-Options can change the way a component behave.
-There are two kinds of options some that work on every kind of component.
-Even the ones you create like custom function component . And some that only
-work on specific component.
-Detailed list of available options are given below.
-
Global options~
-
-These options are available for all components.
-
-option (default_value)
------- ---------------
-
- • icons_enabled (true)
- Displays icons on components
- You should have nerd-fonts supported fonts to see icons properly.
- Supported components: branch, fileformat, filetype, location, diagnostics
-
- • icon (depends on component)
- displays an icon infront of a component
- Supported components: all
-
- • padding (1)
- spaces on left and right
- Supported components: all
-
- • left_padding (1)
- spaces on left
- Supported components: all
-
- • right_padding (1)
- spaces on right
- Supported components: all
-
- • separator (component_separators)
- which separator to use at end of component
- Supported components: all
-
- • upper (false)
- Displayed in upper case
- Supported components: all
-
- • lower (false)
- Displayed in lower case
- Supported components: all
-
- • format (nil)
- Takes a function . The funtion gets the result of component
- as argument and it's return value is displayed. So this function
- can parse and format the output as user wants.
- Supported components: all
-
- • disabled_filetypes ({})
- Disables lualine for specific filetypes. It works on entire
- statusline instead of on a single component.
-
- Example:
- `lualine.options.icons_enabled = true`
-
-
-Component specific options
---------------
-As mentioned above, all global options can be applied to specific components.
-However there are some options which are component-only (you cannot set them as globals)
-
-option (default_value)
------- ---------------
-
- • icon (differs for each component)
- displays an icon infront of a component
-
- • condition (nil)
- Takes a function. The component is loaded if the function
- returns true otherwise not. It can be used to load some
- comoonents on specific cases.
-
- • color (Theme colors)
- color option can be used to set custom color to a component
- Color format:
- `lua color = {fg = '#rrggbb', bg= '#rrggbb', gui='style'}`
- the members of color table are optional and default to theme
- Color option can also be a string containing highlight group name >
- color = "WarningMsg"`
-< One neat trick set the color to highlight group name then change
- that highlight with :hi command to change color of that component
- at runtime.
-
-Using global options~
-
-Global options can be set in two ways. One is as part of options table in setup.
-
>
- require'lualine'.setup{
- options = {
- icons_enabled = true,
- padding = 2,
- }
- }
-<
-When set this way these values work as default for all component.
-These defaults can be overwritten by setting option as part of component
-configuration like following.
+ options = {
+ icons_enabled = 1, -- displays icons in alongside component
+ padding = 1, -- adds padding to the left and right of components
+ left_padding = 1, -- adds padding to the left of components
+ right_padding =1, -- adds padding to the right of components
+ upper = false, -- displays components in uppercase
+ lower = false, -- displays components in lowercase
+ format = nil -- format function, formats component's output
+ }
+Local options~
+---------------
>
+ sections = {
lualine_a = {
- -- Displays only first char of mode name
- {'mode', format=function(mode_name) return mode_name:sub(1,1) end},
- -- Disables icon for branch component
- {'branch', icons_enabled=false},
- },
- lualine_c = {
- -- Displays filename only when window is wider then 80
- {'filename', condition=function() return vim.fn.winwidth(0) > 80 end},
- }
-<
-
-
-Component specific options~
-
-In addition, some components have unique options.
-
- • diagnostics~
- • sources (nil)
- displays diagnostic count from defined source.
- array containing one or many string from set
- {'nvim_lsp', 'coc', 'ale', 'vim_lsp'}
-
- • sections ({'error', 'warn', 'info'})
- displays diagnostics of defined severity.
- array containing one or many string from set
- {'error', 'warn', 'info'}
-
- • color_error (DiffDelete foreground color)
- changes diagnostic's error section foreground color.
- color in #rrggbb format
-
- • color_warn (DiffText foreground color)
- changes diagnostic's warn section foreground color
- color in #rrggbb format
-
- • color_info (Normal foreground color)
- changes diagnostic's info section foreground color
- color in #rrggbb format
-
- • symbols
- (icons_enabled: true -> {error = ' ', warn = ' ', info = ' '})
- (icons_enabled: false -> {error = 'E:', warn = 'W:', info = 'I:'})
- changes diagnostic's symbol characters. You can set one or more symbols
- for each level.
- >
- {
- 'diagnostics',
- symbols = {
- -- set the error symbol and use defaults for warn and info.
- error = '!!',
- },
- }
-<
-
- • filename~
- • file_status (true)
- Displays file status (readonly status, modified status)
-
- • path (0)
- filename `path` option: 0 = just filename, 1 = relative path, 2 = absolute path
-
- • symbols (`{modified = '[+]', readonly = '[-]'}`)
- changes status symbols
-
- • filetype~
- • colored (true)
- Displays filetype icon in color if set to `true`
-
- • fileformat~
- • icons_enabled (true)
- Whether to displays icon before component. Colors
- are automaticaly extracted from colorscheme . If you
- want to change any of those you can use options given below.
-
- • diff~
- • colored (true)
- displays diff status in color if set to `true`
-
- • color_added (DiffAdd foreground color)
- Changes diff's added section foreground color
- Color in `#rrggbb` format
-
- • color_modified (DiffChange foreground color)
- Changes diff's changed section foreground color
- Color in `#rrggbb` format
-
- • color_removed (DiffDelete foreground color)
- Changes diff's removed section foreground color
- Color in `#rrggbb` format
-
- • symbols (`{added = '+', modified = '~', removed = '-'}`)
- changes diff's symbols
- Color in `#rrggbb` format
-<
-Component specific options can only be set with component configs.
-
-Example:~
->
- sections = {
- lualine_b = {
- {'branch', icon = '', upper = true, color = {fg = '#00aa22'}}, {
- 'filename',
- full_name = true,
- shorten = true,
- format = function(name)
- -- Capitalize first charecter of filename to capital.
- local path, fname = name:match('(.*/)(.*)')
- if not path then
- path = '';
- fname = name
- end
- return path .. fname:sub(1, 1):upper() .. fname:sub(2, #fname)
- end
- }
+ {
+ 'mode',
+ icon = nil, -- displays icon in front of the component
+ separator = nil, -- overwrites component_separators for component
+ condition = nil, -- condition function, component is loaded when function returns true
+ -- custom color for component in format
+ -- color = {fg = '#rrggbb', bg= '#rrggbb', gui='style'}
+ -- or highlight group
+ -- color = "WarningMsg"
+ color = nil
}
}
--------------------------------------------------------------------------------
-USING TABLINE AS STATUSLINE *lualine_using_tabline*
+ }
-You can use lualine to display components in tabline .
-The sections, configurations and highlights are same as statusline.
+Component specific local options~
+---------------
+* diagnostics~
+ >
+ sections = {
+ lualine_a = {
+ {
+ 'diagnostics',
+ -- table of diagnostic sources, available sources:
+ -- nvim_lsp, coc, ale, vim_lsp
+ sources = nil,
+ -- displays diagnostics from defined severity
+ sections = {'error', 'warn', 'info'},
+ -- all colors are in format #rrggbb
+ color_error = nil, -- changes diagnostic's error foreground color
+ color_warn = nil, -- changes diagnostic's warn foreground color
+ color_info = nil, -- Changes diagnostic's info foreground color
+ symbols = {error = 'E', warn = 'W', info = 'I'}
+ }
+ }
+ }
+
+* filename~
+>
+ sections = {
+ lualine_a = {
+ {
+ 'filename',
+ file_status = true, -- displays file status (readonly status, modified status)
+ path = 0 -- 0 = just filename, 1 = relative path, 2 = absolute path
+ }
+ }
+ }
+
+* filetype~
+>
+ sections = {
+ lualine_a = {
+ {
+ 'filetype',
+ colored = true -- displays filetype icon in color if set to `true`
+ }
+ }
+ }
+
+* diff~
+>
+ sections = {
+ lualine_a = {
+ {
+ 'diff',
+ colored = true, -- displays diff status in color if set to true
+ -- all colors are in format #rrggbb
+ color_added = nil, -- changes diff's added foreground color
+ color_modified = nil, -- changes diff's modified foreground color
+ color_removed = nil, -- changes diff's removed foreground color
+ symbols = {added = '+', modified = '~', removed = '-'} -- changes diff symbols
+ }
+ }
+ }
+
+------------------------------------------------------------------------------
+TABLINE *lualine-tabline*
+
+You can use lualine to display components in tabline.
+The configuration for tabline sections is exactly the same as for statusline.
>
tabline = {
- lualine_a = { },
- lualine_b = { 'branch' },
- lualine_c = { 'filename' },
- lualine_x = { },
- lualine_y = { },
- lualine_z = { },
+ lualine_a = {},
+ lualine_b = {'branch'},
+ lualine_c = {'filename'},
+ lualine_x = {},
+ lualine_y = {},
+ lualine_z = {},
}
<
-This will show branch and filename component in top of neovim inside tabline .
+This will show branch and filename component on top of neovim inside tabline.
-You can also completely move your statuline to tabline by configuring lualine.tabline
-instead of lualine.sections & lualine.inactive_sections and setting them to empty
+You can also completely move your statuline to tabline by configuring
+|lualine.tabline| and disabling |lualine.sections| and |lualine.inactive_sections|.
>
tabline = {
......
}
sections = {}
inactive_sections = {}
-<
-
---------------------------------------------------------------------------------
-LOADING PLUGIN EXTENSIONS *lualine_loading_plugin_extensions*
+------------------------------------------------------------------------------
+EXTENSIONS *lualine-extensions*
Lualine extensions change statusline appearance for a window/buffer with
-a plugin loaded e.g. junegunn/fzf.vim (https://github.com/junegunn/fzf.vim)
+specified filetypes.
-By default no plugin extension are loaded to improve performance. If you are
-using a plugin which is supported you can load it this way:
+By default no extension are loaded to improve performance.
+You can load extensions with:
>
- extensions = { 'fzf' }
+ extensions = {'quickfix'}
<
-
Available extensions
- * chadtree
- * fugitive
- * fzf
- * nerdtree
- * nvim-tree
- * quickfix
+ * |chadtree|
+ * |fugitive|
+ * |fzf|
+ * |nerdtree|
+ * |nvim-tree|
+ * |quickfix|
---------------------------------------------------------------------------------
-CONGIG EXAMPLES *lualine_config_examples*
+==============================================================================
+DISABLING LUALINE *lualine-disable*
-Lua config example
+You can disable lualine for specific filetypes
+
+`options = {disabled_filetypes = {'lua'}}`
+
+==============================================================================
+
+CONGIG EXAMPLES *lualine-config_examples*
+
+------------------------------------------------------------------------------
+LUA CONFIG EXAMPLE *lualine-lua_config_example*
>
use {
'hoob3rt/lualine.nvim',
@@ -551,8 +370,8 @@ Lua config example
end
}
<
---------------------------------------------------------------------------------
-Vimscript config example
+------------------------------------------------------------------------------
+VIMSCRIPT CONFIG EXAMPLE *lualine-vimscript_config_example*
>
let g:lualine = {
\'options' : {
@@ -582,5 +401,5 @@ Vimscript config example
\}
lua require("lualine").setup()
<
--------------------------------------------------------------------------------
+-----------------------------------------------------------------------------
vim:tw=80:sw=4:ts=8:noet:ft=help:norl:et: