Added other sources for component configuration (#53)
This commit is contained in:
parent
6687c9be63
commit
8a4baa804b
24
README.md
24
README.md
|
@ -157,6 +157,30 @@ lualine.sections.lualine_a = { hello }
|
|||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Using vim functions as lualine component</b></summary>
|
||||
|
||||
You can use vim functions as a lualine component
|
||||
|
||||
```
|
||||
lualine.sections.lualine_b = { 'FugitiveHead' }
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Using variables as lualine component</b></summary>
|
||||
|
||||
You can use variables from vim and lua globals as 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
|
||||
|
||||
```
|
||||
lualine.sections.lualine_b = { 'g:coc_status', 'bo:filetype' }
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
### 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)
|
||||
|
||||
|
|
|
@ -34,10 +34,11 @@ CONTENTS *lualline-contents*
|
|||
1.3.2. Setting a theme.........................|lualine-setting_a_theme|
|
||||
1.3.3. Changing separator...................|lualine-changing_separator|
|
||||
1.3.4. Changing components.................|lualine-changing_components|
|
||||
1.3.5. Loading plugin extensions.....|lualine-loading_plugin_extensions|
|
||||
1.3.6 Config examples.........................|lualine-config_examples|
|
||||
1.3.6.1. Packer.nvim......|lualine-config_example_using_packer.nvim|
|
||||
1.3.6.2 VIML example.......|lualine-full_config_example_inside_viml|
|
||||
1.3.5. Building Custom components............|lualine-custom_components|
|
||||
1.3.6. Loading plugin extensions.....|lualine-loading_plugin_extensions|
|
||||
1.3.7 Config examples.........................|lualine-config_examples|
|
||||
1.3.7.1. Packer.nvim......|lualine-config_example_using_packer.nvim|
|
||||
1.3.7.2 VIML example.......|lualine-full_config_example_inside_viml|
|
||||
1.4. Contributing.....................................|lualine-contributing|
|
||||
1.5. Screenshots.......................................|lualine-screenshots|
|
||||
|
||||
|
@ -162,6 +163,8 @@ Available components~
|
|||
* signify
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
BUILDING YOUR COMPONENTS *lualine-custom_components*
|
||||
|
||||
|
||||
Using custom functions as lualine component~
|
||||
|
@ -173,6 +176,25 @@ You can define a custom function as a lualine component
|
|||
end
|
||||
lualine.sections.lualine_a = { hello }
|
||||
<
|
||||
Using vim functions as lualine component~
|
||||
|
||||
You can use vim functions as a lualine component
|
||||
|
||||
>
|
||||
lualine.sections.lualine_b = { 'FugitiveHead' }
|
||||
<
|
||||
|
||||
Using variables as lualine component~
|
||||
|
||||
You can use variables from vim and lua globals as 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
|
||||
|
||||
>
|
||||
lualine.sections.lualine_b = { 'g:coc_status', 'bo:filetype' }
|
||||
lualine.sections.lualine_x = { 'vim.bo.fileencoding' }
|
||||
<
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
LOADING PLUGIN EXTENSIONS *lualine-loading_plugin_extensions*
|
||||
|
|
2
doc/tags
2
doc/tags
|
@ -4,10 +4,12 @@ lualine-changing_separator lualine.txt /*lualine-changing_separator*
|
|||
lualine-config_example_using_packer.nvim lualine.txt /*lualine-config_example_using_packer.nvim*
|
||||
lualine-config_examples lualine.txt /*lualine-config_examples*
|
||||
lualine-contributing lualine.txt /*lualine-contributing*
|
||||
lualine-custom_components lualine.txt /*lualine-custom_components*
|
||||
lualine-full_config_example_inside_viml lualine.txt /*lualine-full_config_example_inside_viml*
|
||||
lualine-installation lualine.txt /*lualine-installation*
|
||||
lualine-loading_plugin_extensions lualine.txt /*lualine-loading_plugin_extensions*
|
||||
lualine-lualine.nvim lualine.txt /*lualine-lualine.nvim*
|
||||
lualine-nvim lualine.txt /*lualine-nvim*
|
||||
lualine-packer.nvim lualine.txt /*lualine-packer.nvim*
|
||||
lualine-performance_comparism lualine.txt /*lualine-performance_comparism*
|
||||
lualine-screenshots lualine.txt /*lualine-screenshots*
|
||||
|
|
|
@ -29,12 +29,52 @@ M.inactive_sections = {
|
|||
M.extensions = {
|
||||
}
|
||||
|
||||
local function load_special_components(component)
|
||||
return function()
|
||||
-- precedence lualine_component > vim_var > lua_var > vim_function
|
||||
if component:find('[gvtwb]?o?:') == 1 then
|
||||
-- vim veriable component
|
||||
-- accepts g:, v:, t:, w:, b:, o, go:, vo:, to:, wo:, bo:
|
||||
-- filters g portion from g:var
|
||||
local scope = component:match('[gvtwb]?o?')
|
||||
-- filters var portion from g:var
|
||||
-- For some reason overwriting component var from outer scope causes the
|
||||
-- component not to work . So creating a new local name component to use:/
|
||||
local component = component:sub(#scope + 2, #component)
|
||||
-- Displays nothing when veriable aren't present
|
||||
local return_val = vim[scope][component]
|
||||
if return_val == nil then return '' end
|
||||
local ok
|
||||
ok, return_val = pcall(tostring, return_val)
|
||||
if ok then return return_val end
|
||||
return ''
|
||||
elseif loadstring(string.format('return %s ~= nil', component)) and
|
||||
loadstring(string.format([[return %s ~= nil]], component))() then
|
||||
-- lua veriable component
|
||||
return loadstring(string.format([[
|
||||
local ok, return_val = pcall(tostring, %s)
|
||||
if ok then return return_val end
|
||||
return '']], component))()
|
||||
else
|
||||
-- vim function component
|
||||
local ok, return_val = pcall(vim.fn[component])
|
||||
if not ok then return '' end -- function call failed
|
||||
ok, return_val = pcall(tostring, return_val)
|
||||
if ok then return return_val else return '' end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function load_components()
|
||||
local function load_sections(sections)
|
||||
for _, section in pairs(sections) do
|
||||
for index, component in pairs(section) do
|
||||
if type(component) == 'string' then
|
||||
section[index] = require('lualine.components.' .. component)
|
||||
local ok,loaded_component = pcall(require, 'lualine.components.' .. component)
|
||||
if not ok then
|
||||
loaded_component = load_special_components(component)
|
||||
end
|
||||
section[index] = loaded_component
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue