Feat: add configuration in viml and status function (#114)
This commit is contained in:
parent
e4723362c4
commit
8624f7c14e
84
README.md
84
README.md
|
@ -58,6 +58,9 @@ use {
|
||||||
```
|
```
|
||||||
|
|
||||||
## Usage and customization
|
## Usage and customization
|
||||||
|
Lualine can be configured with both lua and vimscript.
|
||||||
|
Click [here](#lua-config-example) if you want to see a config example in lua and [here](#vimscript-config-example) if you want to see a config example in vimscript.
|
||||||
|
|
||||||
Lualine has sections as shown below.
|
Lualine has sections as shown below.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -69,8 +72,6 @@ Lualine has sections as shown below.
|
||||||
Each sections holds it's components e.g. current vim's mode.
|
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.
|
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
|
### Starting lualine
|
||||||
```lua
|
```lua
|
||||||
local lualine = require('lualine')
|
local lualine = require('lualine')
|
||||||
|
@ -284,7 +285,7 @@ lualine.extensions = { 'fzf' }
|
||||||
|
|
||||||
All available extensions are listed in [EXTENSIONS.md](./EXTENSIONS.md)
|
All available extensions are listed in [EXTENSIONS.md](./EXTENSIONS.md)
|
||||||
|
|
||||||
### Full config example using [packer.nvim](https://github.com/wbthomason/packer.nvim)
|
### Lua config example
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><b>packer config</b></summary>
|
<summary><b>packer config</b></summary>
|
||||||
|
@ -294,69 +295,68 @@ All available extensions are listed in [EXTENSIONS.md](./EXTENSIONS.md)
|
||||||
'hoob3rt/lualine.nvim',
|
'hoob3rt/lualine.nvim',
|
||||||
requires = {'kyazdani42/nvim-web-devicons', opt = true},
|
requires = {'kyazdani42/nvim-web-devicons', opt = true},
|
||||||
config = function()
|
config = function()
|
||||||
local lualine = require('lualine')
|
require('lualine').status{
|
||||||
lualine.options = {
|
options = {
|
||||||
theme = 'gruvbox',
|
theme = 'gruvbox',
|
||||||
section_separators = {'', ''},
|
section_separators = {'', ''},
|
||||||
component_separators = {'', ''},
|
component_separators = {'', ''},
|
||||||
icons_enabled = true,
|
icons_enabled = true,
|
||||||
}
|
},
|
||||||
lualine.sections = {
|
sections = {
|
||||||
lualine_a = { 'mode' },
|
lualine_a = { {'mode', upper = true} },
|
||||||
lualine_b = { 'branch' },
|
lualine_b = { {'branch', icon = ''} },
|
||||||
lualine_c = { 'filename' },
|
lualine_c = { {'filename', file_status = true} },
|
||||||
lualine_x = { 'encoding', 'fileformat', 'filetype' },
|
lualine_x = { 'encoding', 'fileformat', 'filetype' },
|
||||||
lualine_y = { 'progress' },
|
lualine_y = { 'progress' },
|
||||||
lualine_z = { 'location' },
|
lualine_z = { 'location' },
|
||||||
}
|
},
|
||||||
lualine.inactive_sections = {
|
inactive_sections = {
|
||||||
lualine_a = { },
|
lualine_a = { },
|
||||||
lualine_b = { },
|
lualine_b = { },
|
||||||
lualine_c = { 'filename' },
|
lualine_c = { 'filename' },
|
||||||
lualine_x = { 'location' },
|
lualine_x = { 'location' },
|
||||||
lualine_y = { },
|
lualine_y = { },
|
||||||
lualine_z = { }
|
lualine_z = { }
|
||||||
|
},
|
||||||
|
extensions = { 'fzf' }
|
||||||
}
|
}
|
||||||
lualine.extensions = { 'fzf' }
|
|
||||||
lualine.status()
|
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
### Full config example inside `.vimrc`/`init.vim`
|
### Vimscript config example
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><b>vimrc config</b></summary>
|
<summary><b>vimrc config</b></summary>
|
||||||
|
|
||||||
```vim
|
```vim
|
||||||
lua << EOF
|
let g:lualine = {
|
||||||
local lualine = require('lualine')
|
\'options' : {
|
||||||
lualine.options = {
|
\ 'theme' : 'gruvbox',
|
||||||
theme = 'gruvbox',
|
\ 'section_separators' : ['', ''],
|
||||||
section_separators = {'', ''},
|
\ 'component_separators' : ['', ''],
|
||||||
component_separators = {'', ''},
|
\ 'icons_enabled' : v:true,
|
||||||
icons_enabled = true,
|
\},
|
||||||
}
|
\'sections' : {
|
||||||
lualine.sections = {
|
\ 'lualine_a' : [ ['mode', {'upper': v:true,},], ],
|
||||||
lualine_a = { 'mode' },
|
\ 'lualine_b' : [ ['branch', {'icon': '',}, ], ],
|
||||||
lualine_b = { 'branch' },
|
\ 'lualine_c' : [ ['filename', {'file_status': v:true,},], ],
|
||||||
lualine_c = { 'filename' },
|
\ 'lualine_x' : [ 'encoding', 'fileformat', 'filetype' ],
|
||||||
lualine_x = { 'encoding', 'fileformat', 'filetype' },
|
\ 'lualine_y' : [ 'progress' ],
|
||||||
lualine_y = { 'progress' },
|
\ 'lualine_z' : [ 'location' ],
|
||||||
lualine_z = { 'location' },
|
\},
|
||||||
}
|
\'inactive_sections' : {
|
||||||
lualine.inactive_sections = {
|
\ 'lualine_a' : [ ],
|
||||||
lualine_a = { },
|
\ 'lualine_b' : [ ],
|
||||||
lualine_b = { },
|
\ 'lualine_c' : [ 'filename' ],
|
||||||
lualine_c = { 'filename' },
|
\ 'lualine_x' : [ 'location' ],
|
||||||
lualine_x = { 'location' },
|
\ 'lualine_y' : [ ],
|
||||||
lualine_y = { },
|
\ 'lualine_z' : [ ],
|
||||||
lualine_z = { }
|
\},
|
||||||
}
|
\'extensions' : [ 'fzf' ],
|
||||||
lualine.extensions = { 'fzf' }
|
\}
|
||||||
lualine.status()
|
lua require("lualine").status()
|
||||||
EOF
|
|
||||||
```
|
```
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -404,31 +404,31 @@ packer config
|
||||||
'hoob3rt/lualine.nvim',
|
'hoob3rt/lualine.nvim',
|
||||||
requires = {'kyazdani42/nvim-web-devicons', opt = true},
|
requires = {'kyazdani42/nvim-web-devicons', opt = true},
|
||||||
config = function()
|
config = function()
|
||||||
local lualine = require('lualine')
|
require('lualine').status{
|
||||||
lualine.options = {
|
options = {
|
||||||
theme = 'gruvbox',
|
theme = 'gruvbox',
|
||||||
section_separators = {'', ''},
|
section_separators = {'', ''},
|
||||||
component_separators = {'', ''},
|
component_separators = {'', ''},
|
||||||
icons_enabled = true,
|
icons_enabled = true,
|
||||||
}
|
},
|
||||||
lualine.sections = {
|
sections = {
|
||||||
lualine_a = { 'mode' },
|
lualine_a = { {'mode', upper = true} },
|
||||||
lualine_b = { 'branch' },
|
lualine_b = { {'branch', icon = ''} },
|
||||||
lualine_c = { 'filename' },
|
lualine_c = { {'filename', file_status = true} },
|
||||||
lualine_x = { 'encoding', 'fileformat', 'filetype' },
|
lualine_x = { 'encoding', 'fileformat', 'filetype' },
|
||||||
lualine_y = { 'progress' },
|
lualine_y = { 'progress' },
|
||||||
lualine_z = { 'location' },
|
lualine_z = { 'location' },
|
||||||
}
|
},
|
||||||
lualine.inactive_sections = {
|
inactive_sections = {
|
||||||
lualine_a = { },
|
lualine_a = { },
|
||||||
lualine_b = { },
|
lualine_b = { },
|
||||||
lualine_c = { 'filename' },
|
lualine_c = { 'filename' },
|
||||||
lualine_x = { 'location' },
|
lualine_x = { 'location' },
|
||||||
lualine_y = { },
|
lualine_y = { },
|
||||||
lualine_z = { }
|
lualine_z = { }
|
||||||
|
},
|
||||||
|
extensions = { 'fzf' }
|
||||||
}
|
}
|
||||||
lualine.extensions = { 'fzf' }
|
|
||||||
lualine.status()
|
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
<
|
<
|
||||||
|
@ -440,33 +440,32 @@ FULL CONFIG EXAMPLE INSIDE VIML *lualine_full_config_example_inside_viml*
|
||||||
|
|
||||||
vimrc config
|
vimrc config
|
||||||
>
|
>
|
||||||
lua << EOF
|
let g:lualine = {
|
||||||
local lualine = require('lualine')
|
\'options' : {
|
||||||
lualine.options = {
|
\ 'theme' : 'gruvbox',
|
||||||
theme = 'gruvbox',
|
\ 'section_separators' : ['', ''],
|
||||||
section_separators = {'', ''},
|
\ 'component_separators' : ['', ''],
|
||||||
component_separators = {'', ''},
|
\ 'icons_enabled' : v:true,
|
||||||
icons_enabled = true,
|
\},
|
||||||
}
|
\'sections' : {
|
||||||
lualine.sections = {
|
\ 'lualine_a' : [ ['mode', {'upper': v:true,},], ],
|
||||||
lualine_a = { 'mode' },
|
\ 'lualine_b' : [ ['branch', {'icon': '',}, ], ],
|
||||||
lualine_b = { 'branch' },
|
\ 'lualine_c' : [ ['filename', {'file_status': v:true,},], ],
|
||||||
lualine_c = { 'filename' },
|
\ 'lualine_x' : [ 'encoding', 'fileformat', 'filetype' ],
|
||||||
lualine_x = { 'encoding', 'fileformat', 'filetype' },
|
\ 'lualine_y' : [ 'progress' ],
|
||||||
lualine_y = { 'progress' },
|
\ 'lualine_z' : [ 'location' ],
|
||||||
lualine_z = { 'location' },
|
\},
|
||||||
}
|
\'inactive_sections' : {
|
||||||
lualine.inactive_sections = {
|
\ 'lualine_a' : [ ],
|
||||||
lualine_a = { },
|
\ 'lualine_b' : [ ],
|
||||||
lualine_b = { },
|
\ 'lualine_c' : [ 'filename' ],
|
||||||
lualine_c = { 'filename' },
|
\ 'lualine_x' : [ 'location' ],
|
||||||
lualine_x = { 'location' },
|
\ 'lualine_y' : [ ],
|
||||||
lualine_y = { },
|
\ 'lualine_z' : [ ],
|
||||||
lualine_z = { }
|
\},
|
||||||
}
|
\'extensions' : [ 'fzf' ],
|
||||||
lualine.extensions = { 'fzf' }
|
\}
|
||||||
lualine.status()
|
lua require("lualine").status()
|
||||||
EOF
|
|
||||||
<
|
<
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
|
@ -35,8 +35,33 @@ M.inactive_sections = {
|
||||||
lualine_z = { }
|
lualine_z = { }
|
||||||
}
|
}
|
||||||
|
|
||||||
M.extensions = {
|
M.extensions = { }
|
||||||
}
|
|
||||||
|
local function apply_configuration(config_table)
|
||||||
|
if not config_table then return end
|
||||||
|
local function parse_sections(section_group_name)
|
||||||
|
if not config_table[section_group_name] then return end
|
||||||
|
for section_name, section in pairs(config_table[section_group_name]) do
|
||||||
|
M[section_group_name][section_name] = config_table[section_group_name][section_name]
|
||||||
|
if type(section) == 'table' then
|
||||||
|
for _, component in pairs(section) do
|
||||||
|
if type(component) == 'table' and type(component[2]) == 'table' then
|
||||||
|
local options = component[2]
|
||||||
|
component[2] = nil
|
||||||
|
for key, val in pairs(options) do
|
||||||
|
component[key] = val
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
parse_sections('options')
|
||||||
|
parse_sections('sections')
|
||||||
|
parse_sections('inactive_sections')
|
||||||
|
if config_table.extensions then M.extensions = config_table.extensions end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
local function check_single_separator()
|
local function check_single_separator()
|
||||||
local compoennt_separator = M.options.component_separators
|
local compoennt_separator = M.options.component_separators
|
||||||
|
@ -271,7 +296,9 @@ local function exec_autocommands()
|
||||||
]], false)
|
]], false)
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.status()
|
function M.status(config)
|
||||||
|
apply_configuration(vim.g.lualine)
|
||||||
|
apply_configuration(config)
|
||||||
check_single_separator()
|
check_single_separator()
|
||||||
lualine_set_theme()
|
lualine_set_theme()
|
||||||
exec_autocommands()
|
exec_autocommands()
|
||||||
|
|
Loading…
Reference in New Issue