342 lines
11 KiB
Plaintext
342 lines
11 KiB
Plaintext
*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.1.8 Disabling lualine.................................|lualine-disable|
|
|
|
|
==============================================================================
|
|
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.
|
|
|
|
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 = {}
|
|
}
|
|
|
|
------------------------------------------------------------------------------
|
|
STARTING LUALINE *lualine-starting_lualine* *lualine.setup()*
|
|
>
|
|
require('lualine').setup()
|
|
|
|
------------------------------------------------------------------------------
|
|
SETTING A THEME *lualine-theme*
|
|
>
|
|
options = {theme = 'gruvbox'}
|
|
|
|
Available themes are listed here:
|
|
https://github.com/hoob3rt/lualine.nvim/blob/master/THEMES.md
|
|
|
|
Customizing themes~
|
|
>
|
|
local custom_gruvbox = require'lualine.themes.gruvbox'
|
|
|
|
-- Change 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 },
|
|
...
|
|
}
|
|
<
|
|
Theme structure is available here:
|
|
https://github.com/hoob3rt/lualine.nvim/blob/master/CONTRIBUTING.md#adding-a-theme
|
|
|
|
------------------------------------------------------------------------------
|
|
SEPARATORS *lualine-separators*
|
|
|
|
Lualine defines two kinds of seperators:
|
|
* |section_separators| - separators between sections
|
|
* |components_separators| - separators between components in sections
|
|
>
|
|
options = {
|
|
section_separators = {'', ''},
|
|
component_separators = {'', ''}
|
|
}
|
|
|
|
Disabling separators~
|
|
>
|
|
options = {section_separators = '', component_separators = ''}
|
|
|
|
------------------------------------------------------------------------------
|
|
CHANGING COMPONENTS IN LUALINE SECTIONS *lualine-components*
|
|
|
|
`sections = {lualine_a = {'mode'}}`
|
|
|
|
Available components~
|
|
general~
|
|
* |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*
|
|
|
|
Lua functions as lualine component~
|
|
>
|
|
local function hello()
|
|
return [[hello world]]
|
|
end
|
|
sections = {lualine_a = {hello}}
|
|
<
|
|
Vim functions as lualine component~
|
|
>
|
|
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.
|
|
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'}}
|
|
<
|
|
Lua expressions as lualine component~
|
|
|
|
You can use any valid lua expression as a component including
|
|
* oneliners
|
|
* global variables
|
|
* require statements
|
|
>
|
|
sections = {lualine_c = {"os.data('%a')", 'data', require'lsp-status'.status}}
|
|
|
|
`data` is a global variable in this example.
|
|
|
|
------------------------------------------------------------------------------
|
|
COMPONENT OPTIONS *lualine-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:
|
|
>
|
|
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:~
|
|
|
|
Global options~
|
|
---------------
|
|
>
|
|
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 = {
|
|
{
|
|
'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
|
|
}
|
|
}
|
|
}
|
|
|
|
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', 'hint'},
|
|
-- 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
|
|
color_hint = nil, -- Changes diagnostic's hint foreground color
|
|
symbols = {error = 'E', warn = 'W', info = 'I', hint = 'H'}
|
|
}
|
|
}
|
|
}
|
|
|
|
* 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 = {},
|
|
}
|
|
<
|
|
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| and disabling |lualine.sections| and |lualine.inactive_sections|.
|
|
>
|
|
tabline = {
|
|
......
|
|
}
|
|
sections = {}
|
|
inactive_sections = {}
|
|
|
|
------------------------------------------------------------------------------
|
|
EXTENSIONS *lualine-extensions*
|
|
|
|
Lualine extensions change statusline appearance for a window/buffer with
|
|
specified filetypes.
|
|
|
|
By default no extension are loaded to improve performance.
|
|
You can load extensions with:
|
|
>
|
|
extensions = {'quickfix'}
|
|
<
|
|
Available extensions~
|
|
* |chadtree|
|
|
* |fugitive|
|
|
* |fzf|
|
|
* |nerdtree|
|
|
* |nvim-tree|
|
|
* |quickfix|
|
|
*
|
|
|
|
Custom extensions~
|
|
|
|
You can define your own extensions.
|
|
If you think an extension might be useful for others then please submit a pr.
|
|
>
|
|
local my_extension = {sections = {lualine_a = 'mode'}, filetypes = {'lua'}}
|
|
require'lualine'.setup {extensions = {my_extension}}
|
|
|
|
------------------------------------------------------------------------------
|
|
DISABLING LUALINE *lualine-disable*
|
|
|
|
You can disable lualine for specific filetypes
|
|
|
|
`options = {disabled_filetypes = {'lua'}}`
|
|
------------------------------------------------------------------------------
|
|
vim:tw=80:sw=4:ts=8:noet:ft=help:norl:et:
|